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 DunyaMerhaba 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 DunyaMerhaba 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]01
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 yanıt yazın