while ve do while Döngüleri
While anahtar sözcüğünü izleyen parantez içerisindeki ifadeye kontrol ifadesi (control statement) denir. while parantezini izleyen ilk deyime döngü gövdesi denir. Döngü gövdesi basit bir deyim olabileceği gibi, bloklanmış birden fazla deyimden de (bileşik deyim) oluşabilir. while deyiminin icrası şu şekilde olur: Kontrol ifadesinin sayısal değeri hesaplanır. Kontrol ifadesinin sayısal değeri 0 dışı bir değerse, mantıksal olarak doğru kabul edilir ve döngü gövdesindeki deyim ya da deyimler çalıştırılır. Kontrol ifadesinin sayısal değeri 0 ise mantıksal olarak yanlış kabul edilir programın akışı döngünün dışındaki ilk deyimle devam eder. Yani while döngüsü, kontrol ifadesinin sayısal değeri 0 dışı bir değer olduğu sürece, döngü gövdesini oluşturan deyim(ler)in icrası ile devam eder. Bu durumda while döngüsü aşağıdaki gibi de oluşturulabilir : while (ifade) { ifade1; ifade2; ifade3; ...... } Bu durumda kontrol ifadesinin sayısal değeri 0 dışı bir değer olduğu (doğru) sürece blok parantezleri arasında kalan tüm deyimler icra edilecektir. Örnek: #include <stdio.h> int main() { int i = 0; while (i < 10) { printf ("%d\n", i) ++i; } return 0; } Başka bir örnek: #include <stdio.h> #include <ctype.h> int main() { char ch; while (ch = getch(), toupper(ch) != 'Q') putchar(ch); return 0; } Başka bir örnek daha: int main() { char ch; while (ch = getch(), isupper (ch)) putchar(ch); return 0; } while parantezinin içindeki ifade yani koşul ifadesi, ifade tanımına uygun herhangi bir ifade olabilir. while (1) { .... } Yukarıdaki while deyiminde kontrol ifadesi olarak bir sabit olan 1 sayısı kullanılmıştır. 1 değeri 0 dışı bir değer olduğundan ve kontrol ifadesi bir değişkene bağlı olarak değişemeyeceğinden, böyle bir döngüden çıkmak mümkün olmayacaktır. Bu tür döngülere sonsuz döngüler (infinite loops) denir. Sonsuz döngüler bir yanlışlık sonucu oluşturulabildiği gibi, bilinçli olarak da oluşturulabilir. Sonsuz döngülerden bazı yöntemlerle çıkılabilir. break Anahtar Sözcüğü break anahtar sözcüğü ile bir döngü sonlandırılabilir. Kullanımı break; şeklindedir. Programın akışı break anahtar sözcüğünü gördüğünde, döngü kırılarak döngünün akışı döngü gövdesi dışındaki ilk deyim ile devam eder. Yani koşulsuz olarak döngüden çıkılır. int main (void) { char ch; while (1) { ch = getch(); if (ch == 'q') break; putchar(ch); } printf("döngüden çıkıldı!..\n"); return 0; } İçiçe Döngüler Bir döngünün gövdesini başka bir kontrol deyimi oluşturabilir. Döngü gövdesini oluşturan kontrol deyimi bir if deyimi olabileceği gibi başka bir döngü deyimi de olabilir. (while, do while, for deyimleri) int main() { int i = 0; int k = 0; while (i < 10) { while (k < 10) { printf("%d %d", i, k); ++k; } } ++i; return 0; } İçiçe döngülerde içerideki döngüde break deyimi kullanıldığında yalnızca içerideki döngüden çıkılır, her iki döngüden birden çıkmak için goto deyimi kullanılmalıdır. Kontrolün Sonda Yapıldığı while Döngüleri Genel biçim; 1. do ifade 1; while (ifade 2); 2. do { ifade 1; ifade 2; } while (ifade); do while döngüsünde kontrol ifadesi sondadır. while parantezinden sonra sonlandırıcı ";" bulunmalıdır. Yani buradakı sonlandırıcı yanlışlık sonucu koyulmamıştır, deyime ilişkin sentaksın bir parçasıdır. Döngü gövdesindeki deyim(ler) en az bir kere icra edilecektir. Örnek : int main() { int i = 0; do { ++i; printf("%d\n", i); } while (i < 10); return 0; } Başka bir örnek: int main() { char ch; do { printf ("(e)vet / (h)ayıt?\n"); ch = getch(); } while (ch != 'e' && ch != 'h'); printf("ok...\n"); return 0; } 1'den 100'e kadar sayıları her satırda beş tane olacak biçimde ekrana yazan bir C programının yazılması: #include <stdio.h> int main() { int i = 0; do { printf("%d ", ++i); if (i % 5 == 0) printf("\n"); } while (i < 100); return 0; }
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...