Döngüler , belli bir koşul altında döngü içerisindeki kodun tekrarlanmasıdır.
While , Do-While ve For döngüsü olmak üzere 3 döngü vardır.
Döngüler iç içe kullanılabilir.
Döngüden çıkmak için koşulun sağlanmaması gerekir veya break gibi özel fonksiyonlarla döngüden çıkılabilir.
While Döngüsü
Kullanım Şekli:
while(koşuk){
//işlemler
}
Örnek Verelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x=3;
while(x>0){
printf("Dongudeyim\n");
x--;
}
getch();
return 0;
}
x=3 iken x>0 şartı yani 3>0 şartı sağlanır bu yüzden döngüye girilir ve ekrana printfdeki satır yazılır.
sonra x--; ile x'i 1 azaltıyoruz.
x=2 iken x>0 şartı yani 2>0 şartı sağlanır bu yüzden döngüye tekrar girilir ve ekrana yazılır.
sonra x--; ile tekrar azaltılır.
x=1 iken x>0 şartı yani 1>0 şartı sağlanır bu yüzden döngüye girilir ve ekrana yazılır.
sonra x--; ile tekrar azaltılır.
x=0 iken x>0 şartı yani 0>0 şartı sağlanmaz bu yüzden döngüye daha girmeyiz. Program while döngüsünden çıkar ve sonraki satırlarla devam eder.
Program 3 kere döngüye girmiştir.Yani ekran çıktısı aşağıdaki gibi olacaktır;
Dongudeyim
Dongudeyim
Dongudeyim
Başka bir örnek inceleyelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x=0;
while(x<=100){
printf("%d\n",x++);
}
getch();
return 0;
}
Bu program 0 dan 100 e kadar olan sayıları alt alta ekrana yazar.
x=0 iken 0<=100 şartı sağlanıyor. x++ da önce x işleme sokulur sonra x 1 artırılır.Bunu daha önceki derslerimizde söylemiştik.Yani ekrana 0 yazacak sonra x=1 olacak.
x=1 iken 1<=100 şartı sağlanıyor ekrana 1 yazar x=2 olur.
. . . .
. . . .
x=100 iken 100<=100 şartı sağlanıyor ekrana 100 yazar x=101 olur.
x=101 iken 101<=100 şartı sağlanmıyor döngüden çıkılır.
Bu programda x++ yerine ++x yazsaydık. Program 1 den başlayıp 101 e kadar yazacaktı , çünkü önce arttırıp öyle yazdırmış olacaktık. Alternatif olarak x=x+1; veya x+=1; de kullanılabilir.
Do-While Döngüsü
Kullanım şekli:
do{
//işlemler
}while(koşul);
While ile mantığı aynı , tek farkı bu döngüye ilk seferinde kesinlikle giriliyor sonra şarta bakılıyor.
Yukarıdaki örneği birde do-while ile yapalım.
#include <stdio.h>
#include <conio.h>
int main(){
int x=0;
do{
printf("%d\n",x++);
}while(x<=100);
getch();
return 0;
}
Program while döngüsüyle aynı sonucu verecektir .
Birde x=200 olarak yazalım.
#include <stdio.h>
#include <conio.h>
int main(){
int x=200;
do{
printf("%d\n",x++);
}while(x<=100);
getch();
return 0;
}
Burada x=200 do ya geliyor giriyor döngüye işlemleri yapıyor, yani ekrana 200 yazıyor sonra x 1 artırıyor.
x=201 iken x<=100 şartı sağlanmadığından döngüden çıkılıyor.
Yani while ile do-while döngüsünün tek farkı do-while döngüsüne kesinlikle bir kere giriliyor olmasıdır.
Başka bir örneği inceleyelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x=0;
do{
printf("%d\n",x++);
}while(x!=10);
getch();
return 0;
}
Burada do - while döngüsü olduğundan önce döngüye giriyoruz.Ekrana 0 yazdırıp x'i 1 arttırıyoruz.
x=1 iken x!=10 yani x , 10 dan farklı mı? Evet o zaman şart sağlanıyor.Döngüye tekrar giriliyor.
x=2 iken x!=10 yani x , 10 dan farklı mı? Evet döngüye tekrar giriliyor.
. . .
. . .
x=9 iken x!=10 yani x, 10 dan farklı ekrana 9 yazacak ve x 1 arttırılacak.
x=10 iken x!=10 mu ? hayır x, 10'a eşittir. Bu yüzden şart sağlanmaz ve döngüden çıkılır.
Ekrana [0,9] a kadar yazar.
For Döngüsü
Kullanım şekli:
for(başlangıç değeri ; koşul ; artım){
//işlemler
}
Bu döngüde bir başlangıç değerimiz vardır ve koşul sağlanana kadar artım ile işlem yapılır.
Dikkat edilmesi gereken şey artımın döngünün sonunda işleme girmesidir.
Örnek verelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x;
for(x=0;x<=100;x++){
printf("%d\n",x);
}
getch();
return 0;
}
x=0 iken x<=100 mü ? Evet ,ekrana 0 yaz , x'i 1 arttır(x++)
x=1 iken x<=100 mü ? Evet ,ekrana 1 yaz , x'i 1 arttır(x++)
x=2 iken x<=100 mü ? Evet ,ekrana 2 yaz , x'i 1 arttır(x++)
. . . .
. . . .
x=100 iken x<=100 mü ? Evet ,ekrana 100 yaz , x'i 1 arttır(x++)
x=101 iken x<=100 mü ? Hayır , döngüden çıkılır.
Yani program 0 dan 100 e kadar bütün sayıları ekrana yazıdır.Artırım burada for döngüsünün sonunda yapılıyor dikkat edilmesi gereken budur.
NOT:
Bazı derleyiciler de değişken tipi for içindede tanımlanabilir.
for(int x=0;x<=100;x++) gibi , eğer derleyiciniz desteklemiyorsa yukarıdaki örnekteki gibi tanımlanabilir.
Sonsuz Döngüler
Bu döngüler koşulun bir anlam içermemesi sonucunda oluşur.
Örnekleri inceleyelim:
#include <stdio.h>
#include <conio.h>
int main(){
while(4){
printf("Dongudeyim\n");
}
getch();
return 0;
}
Burada 4 ün bir anlamı yoktur bu yüzden program döngüden çıkamaz ve ekrana sürekli Dongudeyim yazar.
#include <stdio.h>
#include <conio.h>
int main(){
do{
printf("Dongudeyim\n");
}while(2);
getch();
return 0;
}
Burada da ayni olay geçerlidir.
#include <stdio.h>
#include <conio.h>
int main(){
for(;;){
printf("Dongudeyim\n");
}
getch();
return 0;
}
Burada da ayni olay geçerlidir.
Peki bu döngülerden çıkmak istersek nasıl çıkacağız.İşte burada break komutu devreye giriyor.
break komutunu switch-case konusunda anlatmıştım.
Bir örnek verelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x=15;
while(1){
if(x<10){
break;
}
printf("Dongudeyim\n");
x--;
}
getch();
return 0;
}
While döngüsünün bir sonsuz döngü olduğunu görebiliyoruz.
x= 15 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 14 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 13 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 12 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 11 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 10 için x<10 mu hayır if satırı çalışmaz ekrana Dongudeyim yazar x 1 azalır(x--)
x= 9 için x<10 mu evet if satırı çalışır ve break komutu olduğundan döngüden çıkılır.
Sizde diğer döngüler ile break komutunu kullanarak döngüden çıkmaya çalışın.
Continue
Continue döngü içerisinde kullanıldığı yerden sonraki satırları atlar.
Bir örnek verelim:
#include <stdio.h>
#include <conio.h>
int main(){
int x=11;
while(x>0){
x--;
if(x==5) continue;
printf("%d\n",x);
}
getch();
return 0;
}
x=11 iken x>0 sağlanır döngüye girer x 1 azaltılır(x--) if sağlanmaz ekrana 10 yazar;
x=10 iken x>0 sağlanır döngüye girer x 1 azaltılır(x--) if sağlanmaz ekrana 9 yazar;
x=9 iken x>0 sağlanır döngüye girer x 1 azaltılır(x--) if sağlanmaz ekrana 8 yazar;
. . . . . .
. . . . . .
x=6 iken x>0 sağlanır döngüye girer x 1 azaltılır(x--) if sağlanır alttaki satırlar atlanır.
. . . . . .
. . . . . .
x=1 iken x>0 sağlanır döngüye girer x 1 azaltılır(x--) if sağlanmaz ekrana 0 yazar;
x=0 iken x>0 sağlanmaz döngüden çıkılır.
Bu durumda program ekrana 10 ,9,8,7,6 ,4,3,2,1,0 yazacaktır. Yani 5 i atlayacaktır.
Kısacası continue den sonraki tüm satırlar atlanır.
Döngülerle ilgili benin söyleyeceklerim bunlar bir daha ki ders görüşürüz.
Hiç yorum yok:
Yorum Gönder