Commodore sayı 17, sayfa 58

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 58

Örneğimizin başında I değişkenine sıfır değeri vermiştik. Eğer I değişkenine 21 değeri verseydik döngü hiç yapılamadan kontrol bir sonraki komuta aktarılırdı. Yani Boolean İfadesi ilk işlendiğinde FALSE sonucu verirse, döngü içindeki komutlar hiç tekrarlanmadan kontrol bir sonraki komuta geçerdi. İsterseniz şimdi de yeni öğrendiğimiz döngü komutunu bir örnek programda kullanalım. Programımızda kaç gün içinde 1.000.000 TL kazanacağımızı hesaplayacağız. Fakat parayı kazanmamız bir kurala bağlı: İlk gün 1 TL, ikinci gün 2 TL, üçüncü gün 4 TL, dördüncü gün 8 TL yani her gün bir evvelki günün iki katı para kazanacağız. Programımızda döngünün ne kadar süreceğini bilemediğimiz için de, WHILE komutunu kullanacağız. Zaten programımızın amacı da, döngünün ne kadar süreceğini bulmak. Program ve açıklaması için program döküm ekine bakınız. Döngülerin en çok kullanıldığı yerlerin başında bir seri bilginin okunup işlenmesi gelir. Mesela bir işyerindeki işçilerin maaşlarının, çalışma sürelerinin okunması gibi. Burada karşımıza bilgilerin okunmasına ne zaman son vereceğimiz problemi çıkıyor. İlk çözüm olarak bilgilerin okunmasına başlamadan evvel, okuyacağımız ilk değeri veri sayısı olarak alıp, bir FOR döngüsü ile verileri okuyabiliriz. Bu tip veri girişine şöyle bir örnek verelim:

5 3.87 9.65 5.61 7.76 9.19

5, bize okunacak beş veri olduğunu bildiriyor. Bu yöntem programınızın başında kaç veri işleyeceğinizi biliyorsanız işe yarayabilir. Fakat işleyeceğiniz veri sayısını bilmiyorsanız ikinci yöntemimizi uygulamamız gerekecek. İkinci yöntem olarak istediğimiz özel bir değer kullanacağız. Veri okumamız bu özel veri girilinceye kadar devam edecek. İstediğimiz özel değeri saptarken, bu değerin isteyeceğimiz değerlerle karışmaması için çok dikkatli olup, seçimimizi buna göre yapmalıyız. Mesela 0 ile 100 arasında veriler işleyeceğiz. Bu durumda 999 özel değer olarak çok uygun bir seçim olur. Özel değer okuyarak veri işlediğimiz durumlarda yapacağımız işlerin genel hali şöyledir: İlk veriyi okuyun WHILE (Okuduğunuz değer özel değere eşit değilse) DO Verileri işleyen komutlar Bir sonraki veriyi okuyun

Bu genel duruma bir örnek verelim. Örneğimizde özel değer 999.0 ve kullanılan değişkenlerin daha evvel tanımlandığını kabul ediyoruz;

x<> 99.0 DO BEĞIN END

İlk READ komutu ilk veriyi okuyor. WHILE komutu bunun özel değer olup olmadığını kontrol ediyor. Eğer özel değer değilse okunan değer işlenip yeni bir değer okunuyor, bu işlemler okunan değer özel değere eşit olana kadar devam ediyor. Okunan değer özel değere eşit olduğunda, döngü sona erip kontrol bir sonraki komuta aktarılıyor. Bu tür kullanımda okunan değerin işlenmeden evvel daima kontrol edildiğine dikkat edelim, böylece eğer okuduğumuz değer özel değerse bunu işleme sokmuyoruz. Son olarak WHILE...DO komutunu kullanırken nelere dikkat etmemiz gerektiğine değinelim. Döngüye girmeden evvel döngüye kontrol edecek değişkenin ilk olarak bir değere eşitlenmesi gerekir. Döngü içinde döngüyü kontrol eden değişkenin değerini her seferinde değiştirmezseniz hiçbir zaman döngünün içinden çıkamazsınız. FOR döngüsünü kullanırken döngüye kontrol eden değişkenin artışı birden farklı ise bunun yerine WHILE döngüsü kullanabilirsiniz. Örneğin:

1<- 100 DO BEĞİN 5; WRITE6:3); END

REPEAT...UNTIL

PASCAL'da döngüleri kontrol etmek için bir başka döngü çeşidimiz daha var. Bu döngü çeşidinin yapısını inceleyelim:

REPEAT komut;

komut UNTIL Boolean İfadesi

REPEAT...UNTIL yapısı içinde döngüye giren komutların başına BE-GIN...END eklememiz gerekmiyor, çünkü REPEAT...UNTIL yapısı bu görevi yerine getiriyor. REPEAT...UNTIL arasındaki komutlar işlendikten sonra Boolean İfadesi işlenir. Eğer bu ifade TRUE ve-

59 rirse döngü sona erer ve programın akışı bir sonraki komuta geçer. Boolcan İfadesi FALSE verirse döngü tekrarlanır. Bu yapıyı bir örnekle görelim:

Klavyeyle gezinmek için ← ve → tuşları.