Add to Technorati Favorites

30 Temmuz 2008 Çarşamba

Döngüler

Başlığımız biraz genel oldu ama temiz oldu:)..Arkadaşlar, programlama mevcut işleri kolaylaştırmak ve onları tıkırında götürebilmek için kullanılmaya başlanılmış bir araçtır.Böyle bir araç programcıya da aynı güler yüzü göstermelidir, gösteriyor da.Örneğin kullanıcıdan 10 öğrencinin 1er notunu okumak istiyorken 10 kere read komutu kullanacak olsak bu bir acımasızlık olurdu işte bu yüzdendir ki tekrar eden işlemlerin yapılması döngülerle olmaktadır.

Döngü, içerisindeki işlemi bir durma noktasına kadar devam ettiren bir yapıdır.Bu durumda ise döngüleri ikiye ayırmak zorunda kalırız; adım sayısı belli olan ve olmayan döngüler.Misal yukarıda 10 öğrencinin notunu okumaktan bahsettik.Gördüğünüz gibi bu işlemin adım sayısı belli 10 öğrencinin notu 10 aşamada okunur.İşte böyle adım sayısı belli olan işlemler for döngüsü içinde yapılır ve kodu temel olarak;

>>> for i:=1 to n do şeklindedir.Bunun kalıp olmayan taraflarını kalın olarak yazdım.Burada hiçbir kalıp yok diyebilirsiniz. :) Şöyle ki orada i başlangıç değişkenidir i olmak zorunda değildir j de olabilir.1 başlangıç değeridir o da 2 3 v.s. olabilir. “to” artımı belirtir yani burada 1’den başlayarak n’e ulaşmadığımız müddetçe i’nin değeri 1 arttırılır, bu down to da olabilir o da değeri 1’er 1’er azaltır.N ise m de olabilir durma noktasıdır.

Toparlamak gerekirse i ile belirtilen başlangıç değişkeninin değerinden başlayan döngü, içerisinde bulunan işlemleri bitirdikten sonra değerini bir arttırır ve N’e ulaşıp ulaşmadığına bakar ve de N’ ulaştığında döngüye son kez girer.N’e ulaştığında çekip gitmez, for döngüsünün özelliği budur.

Yukarıdaki şekilde, özel olarak emek sarfetmediğim YTÜ BBG-1 dersinin notlarında bulunan, bir sayının herhangi bir kuvvetini bulan bir örneği görüyoruz, anlatmadan önce alıntı olduğunu belirtmek istedim. Gördüğümüz gibi kullanıcıdan sayı ve kuvvet diye iki değişken okuyoruz. Deger değişkenimiz dışarı dönderecek olduğumuz değişken ve programın başında 1 atamışız.Bu 1 atama işlemi şu an gereksiz gözükebilir ama ilerki aşamalarda, çok daha fazla satırdan oluşan bir program içerisinde "deger" daha önce kullanılmışsa buna işlenmiş bir bilgi olabilir ve biz bunu 1 olarak değiştirmeliyiz. Ardından for döngüsünün diyagramda ifade edilme tarzını görüyoruz.Burada i»1 i'nin 1'den başladığını, oranın hemen yanındaki 1; 1er 1er arttığını, alttaki "kuvvet" ise kuvvet değişkeninin değerine kadar, döngünün, içerisindeki işlemi yapacağını gösterir.Örneğin 3 üssü 4ü hesaplarken içerideki işlem deger=deger*3=3* 3=9* 3=27* 3=81 şeklinde gerçekleşir Kodlarımız;

Program usalma(input,output);
Var
-Sayi,kuvvet,deger,i:integer; {i dahil olmak üzere değişkenlerin tiplerini ifade ettik}
Begin
-Writeln(‘sayiyi giriniz’);
-Readln(sayi);
-Writeln(‘Kuvveti giriniz’);
-Readln(kuvvet);
-deger:=1; {deger’e en başta 1 atadık}
-For:=1 to kuvvet do {for döngümüzün kalıbını görüyoruz, for kalıbından sonra ; yok}
--deger:=deger*sayi; {tek bir işlem olduğu için for’un begin endi yok.}
-writeln(deger);
-readln;
End.
-
Bir dahaki yazımda adım sayısı belli olmayan döngülerden bahsedeceğim görüşmek üzere...

4 yorum:

ogzhndgn dedi ki...

Yörrü beee

Ahmet Dursun dedi ki...

30 temmuza gitmişsin ta, güncellerimiz vardı :))

ogzhndgn dedi ki...

Okuruz hepsini dert degil :) bu arada benden sana iki tavsiye, for icinde tek islem bile olsa begin end koy ve yazdığın programın boyutuna bakmaksızın açıklama satırları ekle :)
Yolun açık olsun

Ahmet Dursun dedi ki...

ben zaten her şeye begin end koyma taraftarıyım :).. Ama yine de ilk defa denk gelecekler için gerek olmadığını vurgulamak istedim.. Projemde oluşan patlakları düzeltememenin siniriyle gereksin gerekmesin baştan aşağı begin-end koyarak olayı çözmüştüm :)).. Açıklama satırı zaten ilaç! :)