1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer>

For döngü yapısı

PDF Yazdır e-Posta

Written by Admin

Posted on 07 Eylül 2010

Son Güncelleme 07 Eylül 2010

forLoop_main_Fullfor DÖNGÜ YAPISI

for döngü yapısı, sayıcı kontrollü döngülerin bütün detaylarını otomatik olarak kolaylıkla uygular. for yapısının gücünü anlatabilmek için, Şekil 4.1'deki programı for kullanarak tekrar yazalım. Program Şekil 4.2'de gösterilmiştir.

Program şu şekilde çalışmaktadır : for yapısı çalıştırıldığında kontrol değişkeni olan sayici, 1 değerine atanır. Daha sonra, döngü-devam koşulu olan sayici <=10 kontrol edilir. sayici değişkeninin ilk değeri 1 olduğundan, koşul sağlanır ve printf ifadesi ( 12.satır ) sayici

Program şu şekilde çalışmaktadır : for yapısı çalıştırıldığında kontrol değişkeni olan sayici, 1 değerine atanır. Daha sonra, döngü-devam koşulu olan sayici <=10 kontrol edilir. sayici değişkeninin ilk değeri 1 olduğundan, koşul sağlanır ve printf ifadesi ( 12.satır ) sayicideğişkeninin değerini ( 1 ) yazdırır. Kontrol değişkeni olan sayici'nin değeri sayici++ deyimi ile arttırılır ve döngü yeniden döngü devam kontrolünü yapar. Kontrol değişkeni olan sayici, artık 2'ye eşit olduğundan son değer aşılmamıştır. printf ifadesi yeniden çalıştırılır. Bu süreç kontrol değişkeni olan sayici , 11 olana kadar devam eder. sayici değişkeninin değeri 11 olduğunda, döngü devam şartı yanlış hale gelir ve döngü sona erer. Program for döngüsünden sonraki ilk ifadeyi çalıştırarak devam eder. ( Bu programda return ifadesini çalıştırır )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /* Şekil 4.2: fig04_02.c
     for yapısı ile sayıcı kontrollü döngü*/
    #include <stdio.h>
 
    int main( )
    {
       int sayici;
 
       /* ilk değer ataması, döngü koşulu, ve artırmanın
          hepsi birden for yapısının başlığı içindedir     */
       for ( sayici = 1; sayici <= 10; sayici++ )
          printf( "%d\n", sayici );
 
       return 0;
    }

 

Şekil 4.2 Sayıcı kontrollü döngülerin for yapısıyla uygulanması

Şekil 4.3'de, Şekil 4.2'de kullanılan for yapısına daha yakından bakılmıştır. for yapısının, sayıcı kontrollü döngülerde ihtiyaç duyulan her şeyi tek başına belirlediğine dikkat ediniz.
for yapısının gövdesinde birden fazla ifade bulunacaksa bu ifadeler küme parantezleri içine alınmalıdır.

Şekil 4.2'de, döngü devam şartının sayici <= 10 olduğuna dikkat ediniz.Eğer programcı yanlışlıkla sayici < 10 yazsaydı, döngü 9 kez tekrarlanıp sona erecekti. Bu, genellikle karşılaşılan bir mantık hatasıdır.

    Genel Programlama Hataları 4.2
    while ya da for döngüsü içinde yanlış karşılaştırma operatörü kullanmak ya da döngü sayıcısı için yanlış son değerler vermek mantık hatası oluşturur.

    İyi Programlama Alıştırmaları 4.6
    while ve for yapısı içinde döngünün son değerini <= karşılaştırma operatörüyle birlikte kullanmak mantık hatalarını engellemeye yardımcı olur. Örneğin, 1'den 10'a kadar değerleri yazdıracak bir döngünün döngü devam koşulu sayici < 11 ya da sayici < 10 yerine sayici<=10 olmalıdır.

for yapısının genel biçimi

1
2
for ( deyim1; deyim2; deyim3)
    ifade

 

olarak gösterilebilir. Burada, deyim1 döngü kontrol değişkenine ilk değer vermekte, deyim2 döngü devam koşulunu belirlemekte ve deyim3 kontrol değişkenini arttırmaktadır. Çoğu durumda for yapısı aşağıda gösterildiği gibi, while yapısı biçimine çevrilebilir:

 

1
2
3
4
5
6
deyim1;
 
while(deyim2){
   ifade
   deyim3;
}//while
Bu kural için bir istisnayı Kısım 4.9'da göstereceğiz.

Sıklıkla, deyim1 ve deyim3 deyimlerin virgüllerle ayrılmış listeleridir. Burada virgüllerin kullanılması, virgül operatörünün ( , ) deyimlerin soldan sağa doğru hesaplanmasını garanti altına almasıdır. Virgülle ayrılmış bir listenin değeri ve tipi listede en sağda bulunan deyimin değeri ve tipidir. Virgül operatörü, for yapıları içinde oldukça sık kullanılır. Bu kullanımın esas faydası, programcının birden çok deyime ilk değer atama ve birden çok deyimin değerini arttırmasıdır. Örneğin, tek bir for yapısı içinde ilk değer atanması ve değerlerini arttırması gereken iki kontrol değişkeni bulunabilir.

1
for(sayici=1;sayici<=7;++sayici)

 

Şekil 4.3 Tipik bir for yapısı başlığının bileşenleri

    İyi Programlama Alıştırmaları 4.7
    for yapısı içine yalnızca kontrol değişkenlerine ilk değer atama kısımlarını ve for yapısında arttırma yapılan kısımları yerleştirmek. Diğer değişkenlerle ilgili işlemler eğer yalnızca bir kez yapılacaklarsa döngüden önce, eğer birden fazla tekrarlanacaklarsa döngünün içine yerleştirilmelidir.

for yapısının içindeki 3 deyimin de kullanımı tercihe bağlıdır. Eğer deyim2 çıkartılırsa C, değerin doğru olduğunu kabul eder ve bu da sonsuz döngü oluşmasına sebep olur. deyim1, eğer değişkene ilk değer verme işlemi programda başka bir yerde yapılmışsa çıkartılabilir. Eğer arttırma işlemi for yapısının gövdesinde tanımlanmışsa ya da arttırmaya ihtiyaç duyulmuyorsa deyim3 çıkartılabilir. for içindeki arttırma deyimi, for yapısının sonunda tek başına duran bir ifade gibi kullanıldığından

sayici = sayici + 1
sayici += 1
++sayici
sayici++

deyimlerinin hepsi for içinde aynı biçimde çalıştırılır. Çoğu C programcısı, arttırma döngü sonunda yapılacağından sayici++ biçimini tercih eder. Aslında, burada yapılacak ön arttırma ya da son arttırma hiçbir deyim içinde yer almadığından aralarında bir fark yoktur. for yapısı içinde mutlaka iki adet noktalı virgül bulunmalıdır.

    Genel Programlama Hataları 4.3
    for yapısının başlığı içinde noktalı virgül yerine virgül kullanmak.

    Genel Programlama Hataları 4.4
    for yapısının başlığının dışına noktalı virgül koymak o for yapısının gövdesini boş bir ifade haline getirir.Bu, bir mantık hatasıdır.

for DÖNGÜ YAPISIYLA İLGİLİ NOTLAR VE GÖZLEMLER

1. İlk değer verme, döngü devam koşulu ve artırma deyimleri aritmetik operatörler içerebilir. Örneğin, x = 2 ve y = 10 olsun,

1
for(j=x;j<=4*x*y;j+=y/x)

 

ifadesi

1
for(j=2;j<=80;j+=5)

ifadesi ile eşdeğerdir.

2. Arttırma negatif olabilir. ( Bu durumda döngü değişkeni azaltılır ve aşağıya doğru saydırılır )

3. Eğer döngü devam koşulu en baştan yanlışsa, for yapısının gövdesi tümden atlanır ve for yapısından sonraki ilk satır çalıştırılır.

4. Kontrol değişkeni, döngü gövdesinde sıklıkla yazdırılır ya da işlemlere sokulur. Ancak genelde bu yapılmamalıdır. En uygun olan, kontrol değişkenini döngüyü kontrol etmek için kullanmak ve döngünün gövdesi içinde bir daha kullanmamaktır.

5. for yapısı, while yapısının akış grafiğine benzer bir biçimde şekillendirilir. Örneğin,

1
2
for(sayici=1;sayici<=10;sayici++);
    printf("%d",sayici);

 

gibi bir for yapısının akış grafiği şekil 4.4'te gösterilmiştir. Bu akış grafiği, ilk değer verme işleminin yalnızca bir kez uygulandığını ve arttırma işleminin gövde içindeki işlemlerden sonra yapıldığını açıkça göstermektedir. Akış grafiğinin (çemberler ve akış çizgileri dışında) yalnızca dikdörtgen ve elmas sembollerini içerdiğine dikkat ediniz. Bir kez daha, programcının algoritma oluşturmak için, istediği kadar for yapısını diğer kontrol yapılarının üzerine dizebileceğini ya da içlerine yuvalayabileceğini hatırlayınız. Programcı algoritmasını tamamlayabilmek için dikdörtgen ve elmas sembollerinin içlerini tamamlayacaktır.

    İyi Programlama Alıştırmaları 4.8
    Kontrol değişkenini for döngüsünün gövdesi içinde değiştirmek mümkündür. Ancak bu, hatalara yol açabilir. En iyisi kontrol değişkenini değiştirmemektir.