Döngüleri algoritmalardaki tekrarlanan işlem ve adımların manuel olarak yapılmaması için kullanıyoruz.Döngüler iyi kullanılırsa işlem satırlarının artmasınada engel olunur.
Örneğin Ekrana 100 kez Mertinal.Net yazdıracaksanız.Bu işlemi şu şekilde yapmak hem zor , hem de gereksiz olur.
[code language=”c”] printf("Mertinal.net\n");printf("Mertinal.net\n");
printf("Mertinal.net\n");
printf("Mertinal.net\n");
…
[/code] Bu işlemi döngülerle çok basit bir şekilde yapabiliriz.
Sayaç(Counter) Kavramı ve Döngünün Kontrolü
Sayaç bizim döngü içerisinde yapılacak işlemi tekrarını tutan değişkendir.
Döngüde mutlaka ilk değeri olan bir sayaç değişkeni olmalıdır.
Bu sayaç değişkeninin sınır değerine gelip gelmediğinin kontrolü yapılmalıdır.
Döngü içerisinde sayacın değerinin değişmesi için arttırma veya azaltma işlemleri uygulanmalıdır.
Algoritma mantığı şöyledir ;
[code language=”c”] 1.Başla2.sayac=<başlangıç değeri>
3.Komutlar
4.sayac++ veya sayac–
5.Sayacın sınır değeri ile olan durumu karşılaştırılır
6.Diğer Komutlar
7.Dur
[/code]
While Döngüsü
While kısaca ;
[code language=”c”] while(kosul | durum){komut;
komut2;
}
[/code] Yukarıdaki döngüde komut bölümünde sayaç kullanarak koşul | durum ikilisini yanlışa yani sıfıra çeviririz ve böylece istediğimiz sayıda işlemi yaptıktan sonra döngüden çıkmış oluruz.
Yukarıdaki döngüde while(0) yani koşul ve durum baştan itibaren yanlış olursa döngüye hiç girmeyecektir.Aksi durum olarak while(kosul | durum) hiç bir zaman sıfır olmazsa , bu seferde döngüden hiç çıkmayarak sonsuz dögüye girecektir.
Ekrana 100 kez Mertinal.Net yazan program örneği ;
[code language=”c”] #include <stdio.h>#include <stdlib.h>
int main()
{
int sayac=1;
while(sayac<=100)
{
printf("Mertinal.net\n");
sayac=sayac +1 ;
}
return 0;
}
Hiç Çalışmayan Döngü Örneği ;
[code language=”c”] x=10;while(x<5)
{
komut;
x=x-1;
}
// x ‘ in 5 ten küçük olmadığından döngüye girmeyecektir.
[/code]
Sonsuz döngü Örneği
[code language=”c”] x=10;while(x<=10)
{
komut ;
x=x-1;
}
//Bu döngüde x her zaman 10 dan küçük veya eşit olacağından sonsuz döngüdür.
[/code]
Gözcü Kontrollü Döngü
Döngünün kullanıcı tarafından dışarıdan girdi yapılarak sonlandırılmasına olanak tanıyan döngülere gözcü kontrollü döngü veya Sentinel Controlled Loops denir.
Örnek Döngü;
Kullanıcı -1 girene dek girilen sayının karesini alan program;
#include <stdlib.h>
int main()
{
int kontrol=0;
while(kontrol!=-1)
{
printf("Karesini almak istedigin sayiyi gir :");
scanf("%d",&kontrol);
if(kontrol==-1)
{
printf("Dongu Sonlandirildi");
break;
}
else
{
kontrol=kontrol*kontrol;
printf("Karesi %d\n",kontrol);
}
}
return 0;
}
For Döngüsü
Tekrar eden işlemler için kullanılan başka bir döngü çeşitidir.
Genel Kullanım ;
komut1;
…
komutN;
}
[/code] Ekrana 10 kez Mertinal.net yazan program
[code language=”c”] int main()
{
int sayac;
for(sayac=0; sayac<10; sayac++)
{
printf("Mertinal.net\n");
}
return 0;
}
[/code]
do-while Döngüsü
do-while döngüsünün , while döngüsünden farkı while döngüsünde döngüye giriş koşulu döngüye girmeden sorgulanır.Burada ise döngü en az bir kez çalıştırılır ve ondan sonra sorgulama işlemi yapılır.
Genel Kullanımı ;
komut1;
…
komut N;
}while(koşul | durum);
[/code]
İç İçe Döngüler (Nested Loops)
Bir döngü içerisinde başka bir döngü bulunmasıdır.İçteki döngü dıştaki döngününün her adımında çalıştırılacaktır.
Genel Kullanım ;
for(i=0;i<10;i++)
for(j=0;j<9;j++)
n=n+1;
[/code]
Piramit oluşturan iç içe döngü
[code language=”c”] for(i=1; i<=5; i++){
for(j=1; j<i; j++)
printf("*");
printf("/n");
}
[/code]
Continue Kullanımı
contiune(devam etmek) kullanıldığı yerde döngüdeki diğer komutları çalıştırmadan döngü başı yapılmasını sağlamaktadır.
Örnek ;
int main()
{
int i;
for(i=1; i<=10; i++)
{
if(i==4)
continue;
printf("%d\n",i);
}
}
[/code]