Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Tekrar (Döngü) Yapıları Tekrar (döngü) yapıları belirli bir kod parçasının farklı değerler üzerinde tekrar tekrar çalıştırılmasını sağlar. Örneğin dizi ve matrise dayalı uygulamalar genel olarak döngü deyimlerini kullanır. Uygulamalarda sıklıkla döngü kurulması gerekmektedir. Bu döngü kurma işlemi, ya döngü deyimleriyle yada yapısal programlamada ilke olarak kullanılması istenilmeyen goto deyimiyle gerçekleştirilir. Döngü deyimleri uygulamalarda yazılan kod uzunluğunu azaltır. Bazı algoritmaların döngü deyimleri kullanılarak yazılması kaçınılmaz olabilir.
Tekrar (Döngü) Yapıları Döngü deyimleri kendi içerisinde iki sınıfa ayrılır. Birisi koşulu başta sınayan, diğeri koşulu sonda sınayan. Koşulu başa sınaması, daha çevrime girmeden döngü koşuluna bakılması ve koşul olumlu ise çevrime girilmesi, koşul olumsuz ise çevrime girilmeden sonraki adımlara geçilmesi anlamına gelir. Koşulun sonda sınanması ise, çevrim içerisinde kodun en az bir kere işletilmesi ve eğer koşul sağlanıyorsa çevrime devam edilmesi sağlanmıyor ise çevrimden çıkılması anlamına gelir.
FOR Döngüsü “for” döngüsü aynı işlemleri birçok kez tekrarlamak için kullanılır. Koşul sınaması çevrime girmeden yapılır. “for” döngüsünde koşul sayacı ve “for” koşul satırında üç parametre vardır. Birinci parametre döngü sayacına başlangıç değeri verilmesi, ikinci parametre koşulu ve üçüncü parametre her çevrimde sayacın nasıl artacağını/eksileceğini ifade eder. Döngüye girmeden önce sayaç başlangıç değeri alır ve daha sonra koşula bakılır. Döngü içerisindeki işlemler yapıldıktan sonra sayaç üçüncü parametrenin durumuna göre değiştirilir (artırılır/eksiltilir).
for döngüsü söz dizimi
FOR Döngüsü Örnek yazılım formatları: for (k=1;k<50; k+=2) for (k=5;k<=n; k++) for (x=50;x>10;x--) for ( ;x<10;x++) /* başlangıç değeri daha önce atanmış olmalı */ for (x=2;x<n; ) /* x döngü sayacı döngü içinde değiştirilmeli */
FOR Döngüsü Aşağıda verilen şekilde “for” döngü yapısı akış diyagramı olarak gösterilmekte ve genel yazılım formatı verilmektedir;
FOR Döngüsü Örnek: #include main() { int ctr; for(ctr=1; ctr<=10; ctr++) {printf(“%d \n “, ctr);} // body of loop return 0; }
FOR Döngüsü Örnek: #include void main(void) {int i, n, faktoriyel=1; clrscr(); printf("faktoriyeli alinacak sayiyi giriniz: "); scanf("%d",&n); for(i=1;i<=n;i++) { faktoriyel*=i; /* faktoriyel=faktoriyel*i */ }/* tek deyim oldugu icin parantezler kullanılmaya bilirdi */ printf("hesaplanan faktoriyel değeri = %d\n",faktoriyel); getch(); }
FOR Döngüsü Örnek: #include main() { char letter; for( letter = 'A'; letter <= ‘Z'; letter = letter + 1 ) { printf("%c ", letter); } Örnek program çıktısı A B C D E …
#include main() { int total,ctr; total=0; // 100 den 200 e kadar olan sayıların toplamını tutar for(ctr=100; ctr<=200; ctr++) // ctr 100,101,…,200 {total+=ctr;} // Her bir iterasyonda ctr değerini ilave et printf(“ Toplam %d \n “, total); return 0; }
WHILE Döngüsü “while” döngüsü “for” döngüsü gibi aynı işlemleri birçok kez tekrarlamak için kullanılır. Bu döngüde de koşul sınaması çevrime girmeden yapılır. Koşul tek bir karşılaştırmadan oluşabileceği gibi birden çok koşulun mantıksal operatörler ile birleştirilmesi ile de oluşturulabilir. şekilde “while” döngü yapısı akış diyagramı olarak gösterilmekte ve genel yazılım formatı verilmektedir;
WHILE Döngüsü
Sınama deyimi Döngü gövdesi çıkış Yanlış Doğru
Örnek: “while” döngü yapısı için örnek bir C/C++ programı; #include void main(void) {int sayac=1,n; clrscr(); printf("kaca kadar sayalim: "); scanf("%d",&n); while(sayac<=n) { clrscr(); printf(" %d",sayac); delay(100); sayac++; } getch(); }
// sayının küpü #include #include // setw manipülatörü için using namespace std; int main() { int kup=1; //kup 1 int sayi=1; //sayı 1 ata while( kup<200 ) //kup<200 ‘e kadar tekrarla { cout << setw(2) << sayi; //sayıyı yazdır cout << setw(4) << kup<< endl; //kup’ü yazdır ++sayi; //sayıyı artır kup = sayi*sayi*sayi; //küpü hesapla } cout << endl; return 0; }
DO … WHILE Döngüsü “do … while” döngüsü diğer döngüler gibi aynı işlemleri birçok kez tekrarlamak için kullanılır. Farklı olarak, bu döngüde koşul sınaması yapılmadan çevrime girilir ve işlem kümesi en az bir kere işletilir. Bu deyim yapısında da koşul sağlandığı sürece çevrim tekrarlanır. Koşul tek bir karşılaştırmadan oluşabileceği gibi birden çok koşulun mantıksal operatörler ile birleştirilmesi ile de oluşturulabilir.
DO … WHILE Döngüsü
Örnek: “do…while” döngü yapısı için örnek bir C/C++ programı yazalım; #include void main(void) {int sayi,kare; clrscr(); do { printf("bir sayi giriniz: "); scanf("%d",&sayi); kare=sayi*sayi; printf("sayinin karesi= %d\n",kare); } while(sayi>0); printf("cevrim sonlandirildi"); getch(); }
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz