Kategoriler
C

C Programlama Dili – Döngüler

Döngüler bir işi belirlediğimiz sayıda yapan kod bloklarıdır.Örneğin faktöriyel hesabı yapacaksak n tane sayıyı birbiriyle çarpmamız gerekecek.Burada çarpma işlemi n defa yapılacağından döngülere ihtiyaç duyarız.Döngülerde iki temel aşama vardır.Bunlardan ilki kontrol kısmıdır.İkincisi ise döngünün yapacağı iştir.Döngülerde kontrol kısmında hata varsa döngümüz çalışmayabilir ya da sonsuz döngü oluşabilir.Bu yazımda 3 döngüden bahsedeceğim.Bunlar; while,do while ve for yapılarıdır.

6.1)While Döngüsü

While döngüsünde bir kontrol ifadesiyle döngünün devam edip etmeyeceğine karar verilir.Süslü parantez içinde ise döngünün yapacağı işlemler olur.

#include <stdio.h>

/*program 6.1*/
/*while döngüsü tanımlama*/
int main() 
{
	while(kontrolyapisi)
		calisacakkod;
	return 0;
}

Eğer döngüde tek satır kod çalışacak ise program 6.1’deki gibi tanımlanır.Aksi halde program 6.2’deki gibi bir tanımlama yapmalıyız.

#include <stdio.h>

/*program 6.2*/
/*while döngüsü tanımlama*/
int main() 
{
	while(kontrolyapisi)
	{
		calisacakkod1;
		calisacakkod2;
		calisacakkod3;
	}
	return 0;
}

Ekrana 5 defa “Merhaba Dunya” yazan program:

#include <stdio.h>

/*program 6.3*/

int main() 
{
	int i=0; //i değişkenine bir başlangıç değeri veriyoruz
	while(i<5) //Burada i<5 demek i 5'den kucuk olduğu sürece bu döngü çalışsın demektir
		{
			printf("Merhaba Dunya\n");
			i++; 
			//i değerini her Merhaba Dunya yazdıktan sonra 1 artırıyoruz
			//i++ nın diğer bir yazılışı ise i=i+1'dir.
		}
	return 0;
}

Çıktı:

[alert-success]Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

[/alert-success]

Klavyeden girilen sayının faktöriyelini hesaplayan program

#include <stdio.h>

/*program 6.4*/

int main() 
{
	int n,faktoriyel=1;
	printf("Bir sayi giriniz: ");
	scanf("%d",&n);
	int i=1 ;
	while(i<=n)
		{
			faktoriyel*=i;
			i++;
		}
	printf("%d!=%d dir",n,faktoriyel);	
	return 0;
}

6.2)Do While Döngüsü

Do while döngüsü while döngüsü ile hemen hemen aynıdır.Aralarındaki fark ise while döngüsünde döngü şartı sağlanmıyorsa o döngü içerisindeki kod bloğu çalışmaz ama do while döngüsünde kod bloğu en az bir kez çalışır.

#include <stdio.h>

/*program 6.5*/
/*do while örnek*/
int main() 
{
	do
	{
		calisacakkod;
	}while(kontrolyapisi);
	return 0;

6.3)For Döngüsü

For döngüsü diğer iki döngü çeşidi ile aynı işleri yapabilir.Genellikle diğer iki döngü çeşidinden daha fazla kullanılır.

For döngüsünün genel yazım şekli;

#include <stdio.h>

/*program 6.6*/
/*for genel yazım şekli*/
int main() 
{
	for(ilk_deger;sart;ilk_degeri_artırma_gibi_islemler)
	{
		calisacakkod1;
		calisacakkod2;
	}
	return 0;
}

While döngüsünde verdiğim örneklerin aynısını kullanacağım ki aralarıdaki fark daha iyi görülsün.

Ekrana 5 defa “Merhaba Dunya” yazan program.

#include <stdio.h>

/*program 6.7*/
int main() 
{
	int i; //kontrol degiskenimizi tanımladık.
	
	for(i=0;i<5;i++)
		printf("Merhaba Dunya\n");
	return 0;
}

Çıktı:

[alert-success]Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

Merhaba Dunya

[/alert-success]

Klavyeden girilen sayının faktöriyelini hesaplayan program:

#include <stdio.h>

/*program 6.7*/
int main() 
{
	int i,n,faktoriyel; 
	printf("Bir sayi giriniz: ");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		faktoriyel*=i;
	printf("%d!=%d dir",n,faktoriyel);
	return 0;
}

6.4)break komutu

Break komutu döngüyü durdurmak istediğimizde kullanırız.Örneğin ileri konularda anlatacağım diziler konusunda dizi içerisinde bir eleman ararken elemanı bulduktan sonra döngünün gereksiz yere çalışmasına gerek yok.İstediğimiz elemanı bulduğumuzda döngüyü durdurabiliriz.Nasıl kullanıldığına beraber bakalım.

#include <stdio.h>

/*program 6.8*/

int main() 
{
	int i;
	
	for(i=0;i<5;i++)
	{
		printf("%d\n",i);
		if(i==3)
			break;
	}
	
	return 0;
}

Çıktı:

[alert-success]0

1

2

3

[/alert-success]

Yukarıdaki programda eğer sayımız 3’e eşit ise break komutu verdik yani döngüyü durdurduk.Eğer break komutu vermeseydik çıktımız ekrana 0 1 2 3 4 yazacaktı.

#include <stdio.h>

/*program 6.9*/

int main() 
{
	int sayi;
	for(;;) //Döngüyü bu şekilde tanımlarsak sonsuz döngü oluşur.
	{
		printf("\nBir sayi giriniz: ");
		scanf("%d",&sayi); //sayımızı aldık.
		if(sayi==10) //eğer sayımız 10 ise break komutu ile döngüden çıkıyoruz değil ise döngü 10 girilene kadar devam eder.
			break;
	}
	return 0;
}

6.5)continue komutu

Continue komutu ise break komutunun tam tersidir.Döngünün devam etmesi halinde kullanılır.

 

0-100 arasındaki tek sayıları ekrana yazdıran program.(daha efektif şekilde yapılabilir ama continue komutu anlaşılsın diye bu şekilde yaptım)

#include <stdio.h>

/*program 6.10*/

int main() 
{
	int i;
	
	for(i=0;i<100;i++)
	{
	//eğer sayımız 2'ye bölünüyorsa çifttir
	//çift ise bu sayıyı yazmadan devam et
	//sayı tek ise ekrana yaz.
		if(i%2==0)
			continue;
		printf("%d\n",i);
	}
	
	return 0;
}

 

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.