C – Döngüler

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şla
2.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;
}

[/code]

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;

[code language=”c”]
#include <stdio.h>
#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;
}

[/code]

For Döngüsü

Tekrar eden işlemler için kullanılan başka bir döngü çeşitidir.
Genel Kullanım ;

[code language=”c”]
for(Döngü Değişkeni=ilkdeğer; DöngüKoşulu; Artım/Azaltı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ı ;

[code language=”c”]
do{
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 ;

[code language=”c”]
n=5;
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 ;

[code language=”c”]
//4 rakamını atlayan program
int main()
{
int i;
for(i=1; i<=10; i++)
{
if(i==4)
continue;
printf("%d\n",i);
}

}
[/code]

Yazar: mert

Ben Mert. Bildiğim şeyleri aktarmak için bir site açmayı düşündüm ve kendimi bu blogu açarken buldum.Teknoloji , kişisel ve yaşama dair elimden geldiğince yazmaya çalışacağım takipte kalın

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir