#include<stdio.h> int main( void ) { int x; for( x = 0 ; x < 20; x++ ) { printf("%2d: Merhaba Dunyan",(x+1)); } return 0; }
Programın Çıktısı :
while Döngüsü Genel Yazım Biçimi :
while (koşul ifadesi)
{
......
döngüdeki deyimler
......
}
while döngüsünde ilk olarak döngü koşulu test edilir ve koşul pozitif ise döngüye girilir. Eğer koşul negatif ise döngüye hiç girmeden bir sonraki satırdan çalışmasına devam eder. while döngüsünde ifadenin sonucu döngünün başlangıcında kontrol edildiğinden, ifadenin yanlış sonuç verdiği durumlarda döngü bir defa bile çalışmaz. while döngüsünde, for döngüsünden farklı olarak, ilk değer atama ve artırma/azaltma ifadeleri bulunmamaktadır. while döngüsünde ilk değer atama işlemi döngü öncesinde, artırma/azaltma işlemi ise döngü kod bloğu içinde yapılır.
Örnek while Kullanımı :
#include <stdio.h> main() { int s=0; while(s <= 10) printf("%dn",s++); return 0; }
Programın Çıktısı :
Sonsuz Döngü (Infinite Loop) : Koşul ifadesinin negatif olduğu durumlarda döngü hiç bir zaman sonlanmaz ve çevrime devam eder. Bu duruma sonsuz döngü (infinite loop) denir.
for(;;)
printf("Sonsuz döngü içindeyim...n");
------------------------------------------------
...while
{
printf("Sonsuz döngü içindeyim...n");
}...
do-while Döngüsü : while döngüsüne benzemektedir. do döngüsünde koşul kontrolü döngü sonunda yapıldığından koşul sağlanmasa bile döngü en az bir defa çalışır. Bu yönü ile do döngüsü for ve while döngülerinden farklıdır. Bir anlamda do-while döngüsü post test loop yani test yapan döngü olarakta bilinmektedir.
do-while Döngüsü Genel Yazım Biçimi :
do
{
.....
döngüde yapılacaklar
.....
}
while (koşul ifadesi);
Diğer döngülerin aksine do-while döngüsünden sonra mutlaka (;) eklenmelidir.
Örnek do-while Kullanımı :
#include <stdio.h> #include <math.h> int main(int argc, const char * argv[]) { int x=0; do { printf("Karakokunu almak istediginiz sayiyi giriniz:n"); printf("(Programi sonlandirmak icin 0 giriniz):"); scanf("%d",&x); //math.h kütüphanesindeki sqrt fonksiyonunu kullanarak sayının karakökünü bulalım// //bulunan karakökü karekok isimli değişkende tutalım// double karekok=sqrt((double)x); printf("-------------------------------------------n"); printf("Girilen deger:%dn",x); printf("Karakoku:%.2fn",karekok); //program sonlandırılmadığı durumda döngü devam eder// //program 0 ile sonlandırıldığında döngüden çıkılır.// } while (x !=0); printf("Program sonlandiriliyor..."); return 0; }
Programın Çıktısı :
Goto Yapısı : C programlama dilinde bulunan bir başka yapı, goto deyimidir. Belirlenecek etiketler sayesinde, programın bir noktasından bir başka noktasına atlamanızı sağlar. goto, bir döngü değildir ancak döngü olarak kullanılabilir. goto, çalışabilmek için etiketlere ihtiyaç duyar. Etiketler, vereceğiniz herhangi bir isme sahip olabilir. Goto kullanmak için, "goto" isminin yanına, atlamak istediğiniz yerin sembolik ismini yazmanız yeterlidir. "goto" ile bir döngünün icine atlamanıza izin yoktur, fakat bir döngünün dışına atlayabilirsiniz. Ayrıca bir fonksiyondan ötekine de "goto" ile geçemezsiniz. goto için tanımlanan etiketin sonuna (:) eklemek zorunludur.
Örnek goto Kullanımı :
#include<stdio.h> int main( void ) { int x = 0; start: printf( "Merhaba Dunyan" ); x++; if( x<10 ) goto start; return 0; }
#include<stdio.h> int main() { int s; for (s=5;s<15; s=s+1) { if (s==8) break; printf("Break dongusunun icinde, s in Degeri simdi %dn",s); } for (s=5;s<15;s=s+1) { if (s==8) continue; printf("Continue dongusunun icinde, s in Degeri simdi %dn",s); } }
Programın Çıktısı :
İç İçe Döngüler : Kodlamada bazı problemler tek bir döngü ile çözülemezler. Bir veya birden fazla döngüyü iç içe kullanma ihtiyacı doğabilir.
Örnek İç İçe Döngü Kullanımı :
Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam sayılara Armstrong sayı denir.
Örneğin: 371 bir Armstrong sayıdır çünkü 3^3 + 7^3 + 1^3 = 371.
İç İçe geçmiş üç for döngüsü ile bütün Armstrong sayıları bulup ekrana yazan bir C programı :
#include <stdio.h> int main() { int x,y,z, kup, sayi, s=1; for(x=1; x<=9; x++) for(y=0; y<=9; y++) for(z=0; z<=9; z++) { sayi = 100*x + 10*y + z; kup = x*x*x + y*y*y + z*z*z; if( sayi==kup ) printf("%d. %dn",s++,sayi); } return 0; }Programın Çıktısı :
#include <stdio.h> #include <conio.h> main() { int sayi,fakt,s; s=0;fakt=1; printf("Bir Sayi Giriniz:"); scanf("%d",&sayi); for (s=1;s<=sayi;s++) { fakt*=s; } printf ("Sonuc=%d dir...",fakt); getch(); }
#include <stdio.h> #include <conio.h> main() { int sayi,fakt,s; s=0;fakt=1; printf("Bir Sayi Giriniz:"); scanf("%d",&sayi); s=1; while (s<=sayi) { fakt*=s; s++; } printf ("Sonuc=%d dir...",fakt); getch(); }
#include <stdio.h> #include <conio.h> main() { int sayi,fakt,s; s=0;fakt=1; s=1; printf("Bir Sayi Giriniz:"); scanf("%d",&sayi); do { fakt*=s; s++; } while (s<=sayi); printf ("Sonuc=%d dir...",fakt); getch(); }
#include <stdio.h> #include <conio.h> main() { int sayi,fakt,s; s=0;fakt=1; s=1; printf("Bir Sayi Giriniz:"); scanf("%d",&sayi); bayraktar: { fakt*=s; s++; } if (s<=sayi)goto bayraktar; printf ("Sonuc=%d dir...",fakt); getch(); }