7.3 for Döngüsü
7.3 for Döngüsü
Bu deyim, diğer döngü deyimleri gibi bir kümeyi bir çok kez tekrarlamak için kullanılır. Koşul sınaması while da olduğu gibi döngüye girmeden yapılır. Bu döngü deyimin içinde diğerlerinden farklı olarak başlangıç değeri ve döngü sayacına sahip olmasıdır. Bu deyimin kullanımı Program 7.3 de gösterilmiştir Genel yazım biçimi:
1 2 3 4 5 6 |
for( başlangıç ; koşul ; artım ) { ... döngüdeki deyimler; ... } |
Program 7.3: for döngüsü
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* 07prg03.c: for döngüsü ile faktoriyel hesabı. */ #include <stdio.h> int main() { long i, n, faktor; printf("Faktoriyeli hesaplanacak sayi girin : "); scanf("%ld",&n); faktor=1; for(i=1; i<=n; i++){ faktor *= i; /* n! = 1 x 2 x 3 x ... x n */ } printf("%ld! = %ld\n", n, faktor); return 0; } |
ÇIKTI
1 2 |
Faktoriyeli hesaplanacak sayi girin : 4 4! = 24 |
ÇIKTI
1 2 |
Faktoriyeli hesaplanacak sayi girin : 15 15! = 2004310016 |
Program da faktoriyel hesabı 16. satırda gerçekleştirilmiştir. Faktöriyel, bilindiği gibi n! = 1x2x3x … xn tanımlanır. Gerçekte 15! = 1307674368000 olmasına rağmen, program 15! = 2004310016 olarak hesaplamıştır. Sizce bunun sebebi nedir? Cevap için bkz: Bölüm 2.
Program 7.3’de döngüye girilmeden, faktor = 1 atması yapılmıştır.
1 2 3 |
faktor = 1; for(i=1; i<=n; i++) faktor *= i; |
Bu döngü öncesi ilk değer ataması, döngünün başlangıç kısmında şu şekilde de yapılabilir:
1 2 |
for(faktor=1, i=1; i<=n; i++) faktor *= i; |
printf fonksiyonu ile desimal (taban-10) sayılarıların nasıl yazdırılacağı bundan önceki kısımlarda gösterilmişti. Program 7.4’te 0-15 arası desimal sayıların Oktal (taban-8) ve Heksadesimal (taban-16) karşılıkları ile printf kullanılarak yazdırılması gösterilmiştir.
Program 7.4: Sayı sistemi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/* 07prg04.c: Sayı sistemi %d : desimal 10 tabanındaki sayı %o : oktal 8 tabanındaki sayı %x : hexadesimal 16 tabanındaki sayı (küçük harf) %X : hexadesimal 16 tabanındaki sayı (büyük harf) */ #include <stdio.h> int main() { int i; for (i=0; i<16; i++) printf("%2d %2o %x %X\n", i,i,i,i); return 0; } |
ÇIKTI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 10 8 8 9 11 9 9 10 12 a A 11 13 b B 12 14 c C 13 15 d D 14 16 e E 15 17 f F |