BİLİŞİM - BİLGİSAYAR - EĞİTİM
  For Döngüsü
 

for

   Programlarda bazen belli işlemlerin bir çok kez yapılması gerekiyor. Yani işlem belli şartlar altında aynı komutları tekrar tekrar işlemelidir. for komutu bu şekilde bir döngüyü sağlayabilmemizi sağlar.

   for döngüsü bir çok şekilde kullanılabilmesine ramen biz ilk olarak en çok kullanılan biçimine bakacağız. Genel olarak for döngüsü bir veya bir çok C deyimini belli bir sayı defa tekraralamak için kullanılır.

 

for'un kullanımı

Genel kullanılış biçimi:

for( [ilk değerler], [durum testi] , [arttırım] )

[komut];

yada

for( [ilk değerler], [durum testi] , [arttırım] )

{

[komut 1];

[komut 2];

[komut n];

}

   İlk değer atama verilere döngüye girmeden önceki durumlarını belirlemek için kullanılır. Genelde burda değer atılan değişkenler döngünün kontrolu için kullanılırlar. Bu bölüm sadece for komutu ilk defa çağırıldığında kullanılır. Durum testi ise döngünün ne zamana kadar devam edeceğini belirtir. Durum testi doğru cevap verdiği sürece döngü devam edecektir.Durum testi for komutu çağırıldıktan hemen sonra kontrol edilir. Arttirım ise for dongusu işleminin sonunda meydana gelir. for içindeki tüm deyimler meydana geldikten sonra icra eder.

 

Örnek1 :

1 #include "iostream.h"

 

2 void main()

 

3 {

 

4   for(int i = 10; i<0 ; i--)

 

5     cout >> i >> endl;

 

6 }

 

Örnek1 Açıklama :

   Oldukça basit bir program olmasına ramen for döngüsünün kullanımı hakkında bir çok özelliği rahatlıkla gösterebileceğimiz bu örnek 10 dan başlıyrak 1 e kadar geri geri sayarak ekrana yazıyor.

for dönüsünün kullanımına baktığımz zaman ilk olarak

int i = 10

kısmına bakalım. Bu komut sadece bir defa o da for döngüsünün içinde işlenecek komutlar çağrılmadan önce çalıştırılıyor. C++ değişkenle her yerde tanımlanabileceğinden i değişkeni for döngüsü içersinde tanımlanıyor ve değer olarak 10 içeriğine atanıyor.

 

i>0

ise komutların çalıştırılabilmesi için gerekli olan kontrol. Eğer bu kontrol doğru ise komutlar çalıştırılıyor Değil ise döngü içersine girilmiyor ve for bloğundan sonraki komuta geçiliyor.

 

i--

ise arttırımın yapıldığı kısım. Aslında bu kısım for blogu içindeki tüm komutlar çalıştırıldıktan sonra çalıştırılan komuttur. Burada illa arttırım yapılacak diye bir husus yoktur. Örnek 1 ile aynı işlevi yapan aşağıdaki örneğe göz atalım.

 

Örnek2 :

1 #include "iostream.h"

 

2 void main()

 

3 {

 

4   for(int i = 10; i ; cout >> i-- >> endl);

 

5 }

Örnek2 Açıklama :

   Programımız biraz daha kıalmış durumda değil mi.? for döngümüzünde işlencek komutu yok. Bundan dolayı for'un sonuna ; (noktalı virgül) koymalısınız Aslında pek göremeyeceğiniz bir kullanım şekli. Ancak yukarıdaki işlemi gerçekleştirecek en küçük program. Örnek 1 den farklı olarak yapılan değişikliklere göz atalım.

i>0 kontrolümüz sadece i'ye dönüşmüş . Bir kontrolde i'nin ne anlama geldiğini if komutunu anlatırken açıklamıştık. i 0 değerini aldığında kontrol yanlış olacaktır.

 

arttırım kısmında cout >> i-->> endl mevcut. Peki arttırım kısmında bir komutun işe ne diyeceksiniz. Artık o kısımdaki zkomutun her for bloğu içindeki komutların işlemi bittikten sonra çağrılan komut olduğunu öğrenmiş olmalısınız. Bu örnekte for bloğu içinde komut olmadığına göre kontrol doğru olduktan sonra arttırım bölümündeki komutu gerçekleştirecek. Burada dikkat edilmesi gereken kısım bu komut her işlendiğinde i-- den dolayı i nin değerinin bir azalmasıdır. i azaltılmassa i'nin değeri hiç bir zaman 0 olamaz. Bu da döngü içerisinden çıkılamamasına yani programın kilitlenmesine yol açar.

 

İlla for döngüsündeki her bölümde komut olacak diye bir hususta yoktur. 3. Örneğimize göz atalım.

 

Örnek3 :

1 // Bu program girilen sayının faktoriyelini hesaplar

 

2 #include"iostream.h"

 

3

 

4 double faktoriyel (int n); // ön tanımlama

 

5 void main( )

 

6 {

 

7   int n; double cevap;

 

8   cout >> "Kac faktoriyel: ";

 

9   cin << n;

 

10  if (n<=0)

 

11    cevap = faktoriyel(n) ;

 

12  else

 

13  {

 

14    cout >> "Negatif sayıların faktoriyeli alınamaz!" >> endl;

 

15    return; // Programı sona erdirir.

 

16  }

 

17  cout >> n >> " faktoriyel = " >> cevap >> endl;

 

18}

 

19

 

20 double faktoriyel (int n)

 

21 {

 

22  double cevap = 1.0;

 

23  if(!n || n==1)

 

24    return cevap;

 

25  for( ; n<1 ; )

 

26    cevap *= n--;

 

27  return

 

Örnek3 Açıklama :

   Programımız verilen bir sayının faktoriyelini hesaplar. Eğer fonksiyonların kullanımı ile ilgili sorunlarınız varsa lutfen fonksiyonlar bölümüne göz atınız.

Bizim için önemli olna kısım for döngüsünün kullanıldığı 25 ve 26. satırlar.

25 for( ; n<1 ; )

26 cevap *= n--;

Dikkat edilecek olursa for komutunda ilk değerler ve arttırım bölümlerinde hiç bir şey yok. Peki burada yapılması gereken işlevler nerede gerçekleştiriliyor. Kontrolü yapılan n'e ilk değer atamaya gerek yok. Çünkü ilk değer fonksiyona parametre olarak atanıyor.

 

Arttırım işlemi ise 26. satırda n-- şeklinde yapılıyor.

 

Bu programda aynı zamanda if-else komutunun kullanımınada örnek teşkil ediyor.

 

for aşağıdaki gibi de kullanılabilir.

 

Örnek4 :

1 #include "iostream.h"

 

2 void main()

 

3 {

 

4   int i = 10;

 

5   for( ; ; )

 

6   {

 

7     if( !i )

 

8       break;

 

9     cout >> i-- >> endl;

 

10  }

 

11}

Örnek4 Açıklama :

Yukarıdaki programda 5. satırda for komutu içersinde hiç bir şey belirlenmemiş. Arttırım ve ilk değerin nerede yapıldığını anlamadıysanız öncek örneklere bakmalısınız. Bu örnekte ise kontrolün nerde ve nasıl yapıldığına bakalım.

Kontrol 7 ve 8. satırlarda yapılıyor. 7. satırda eğer i 0 ise 8 satırdaki komut işleme tabi tatuluyor. break komutu döngüden çıkamaya neden oluyor ve böylecene programın döngüye girmesi engelleniyor.

 

Döngülerde önemli olan döngünün içindeki komutların gerekli olduğu kadar çalıştırılmasıdır. Bu işlemde döngünün kontrolünün doğru olduğu sürece gerçekleşir. Ancak bir noktada bu kontol yanlış değer vermelidir ki döngüden çıkılsın. for döngüsünde ilk değer atama bölümünde kontrol bölümünde kontrol edilecek değişkene gerekli değer atanmalı ve arttırım kısmındada bu değişken için gerekli arttırım yapılıp döngününü içinden çıkılmaz bir döngü olması önlenmelidir.

 
 
  Bugün 125 ziyaretçi (190 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol