Bu sayfadaki yazılar
Sayfanın metni
Sayfa 57
BURAK KİPER
Geçen bölümde döngülere başlamış ve FOR...DO döngü çeşidini incelemiştik. Bu döngü, eğer tekrarın ne kadar yapılacağını biliyorsak kullanışlı olabilir. Tekrarın sayısını her zaman bilemeyiz ama hangi durumda tekrarın biteceğini bilebiliriz. Başka bir deyişle, döngümüzün belirli bir durumunun doğru olduğu sürece devam etmesini isteyebiliriz. Belirli durumumuz yanlış olduğunda ise döngü sona erer. Belirli durum ne olabilir? Mesela kullanıcıdan alınan cevap “evet” olduğu sürece döngüye devam eder, cevap “hayır” olarak verildiğinde döngüyü sona erdirerek bir sonraki komut gruplarına geçebiliriz. Döngü çeşitlerinden WHILE komutu döngüyü bu şekilde kontrol etmemizi sağlar. WHILE komutunun genel şekli şöyledir:
Boolean İfadesi DO Komut
Bilgisayar ilk önce Boolean İfadesi'ne bakar, eğer bu ifadenin değeri doğru (TRUE) ise DO'dan sonra gelen komutu işler. Döngü Boolean İfadesi'nin değeri TRUE olduğu sürece devam eder. Boolean İfadesi'nin değeri yanlış (FALSE) olduğu andan itibaren döngü sona erer ve kontrol bir alta geçer. Bu arada Boolean'ın sadece iki durumu olduğunu belirtelim: TRUE veya FALSE. Mesela DEVAM değişkenini VAR bildiriminde Boolean veri tipi olarak bildirdiyseniz, bu değişkeninize ya DEVAM:= TRUE veya DEVAM:= FALSE; şeklinde bir değer verebilirsiniz. Programınızda WHILE DEVAM DO I:=I+1; şeklinde bir komut kullandığınızda DEVAM değişkeninizin değeri TRUE olduğu sürece I değişkenimizin içeriği bir artar. FOR döngüsünde olduğu gibi, tekrarlanan tek bir komut olabileceği gibi, BEGIN...END bloğu içinde çoklu komutlar da olabilir. Şimdi WHILE...DO komutu ile ilgili olarak anlattıklarımızı birkaç örnekle inceleyelim. Örneklerimiz bir programın belirli bir bölümünü oluşturmakta. Örneklerde kullanılan değişkenlerin daha evvelden bildirildiğini kabul edeceğiz.
0)
WHİLE 1: < -20 DO 5;
Örneğimizde I:=I+5 komutu devamlı tekrarlanmakta ve bu komutun her tekrarlanışında I değişkeninin değeri 5 artmaktadır. Böylece I değişkeni sırayla 5, 10, 15, 20 ve 25 değerlerini alır. Komutun her tekrarlanışından evvel I değişkeninin değerinin 20'den küçük olup olmadığı kontrol ediliyor. I<20 ifadesi bizim Boolean İfademizi oluşturur ve bu ifadenin aldığı değere göre döngünün devam edip etmeyeceği belirlenir. I değişkeninin değeri 0, 5, 10, 15 veya 20 iken ifadenin değeri TRUE olacağı için döngü yapılır, fakat I değişkeninin değeri 25 olduğunda ifade FALSE değeri ile sonuçlanacağından kontrol bir sonraki komuta atlar. Yukarıdaki örnekte tek bir komutun döngü içinde kullanılmasına örnek verdik. Şimdi de döngü içinde bir komut grubunun kullanılışına örnek verelim:
ıt -0; WHİLE 1: < -20 DO BEGIN WRITE6:4); END;
Dikkat ettiyseniz WHILE...DO'dan sonra döngüde yer almasını istediğimiz komutları BEGIN...END bloğu içine aldık. Yazımızın ilk başlarında bir PASCAL programının BEGIN ile başlayıp END ile bittiğini söylemiştik. Bundan başka programımızın herhangi bir yerinde üstteki örnekte de olduğu gibi belirli bazı komutların tek bir komut gibi işlem görmesini istersek BEGIN...END bloğu içine alırız. Programımızı çalıştırdığımızda şöyle bir çıktı alacağız:
05101520
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 56
Tanımlama bittikten sonra yaptığımızı Logo'nun tanıması için Control ve C tuşlarına aynı anda basalım.
KARE DEFINED
Logo KARE sözcüğünü dağarcığına kattığını belirtti. Bundan sonra,
KARE
yazarak istediğimiz an kare çizdire- biliriz. LEFT 20 KARE
Turtle'ın bu konumuna göre eğri bir kare elde ettik.
REPEAT 18 (LEFT 20 KARE|
Turtle her seferinde 20 derece dönerek on sekiz kare çizdi. Bu arada dikkatinizi çekti mi bilmem, dönüş açısıyla tekrarlama sayılarının çarpımı hep 360 oluyor (kare için 4 x 90, şimdiki için 18). Bu tüm kapalı şekiller için geçerlidir. Tüm poligonlar için geçerli olan kural: Dönme açısı = 360/kenar sayısı'dır. Tanımlarken
REPEAT kenar sayısı (LEFT 360/ kenar sayısı FORWARD adım)
şeklinde ifade edebiliriz. Buna göre üçgen
TO ÜÇGEN REPEAT 3 (LEFT 120 FORWARD 50) END olabilir. Beşgen, altıgen ve diğerleri için tanımlamayı siz yapın. Şimdi KARE'yi biraz geliştirelim.
EDIT KARE
Tekrar yazılım moduna geçtik. Şimdi imleci TO KARE satırının sonuna getirelim ve arada bir boşluk bırakmaya dikkat ederek aşağıdakileri aynı satıra ekleyelim (sonda RETURN'e basmadan):
:KENAR
yazdıktan sonra, REPEAT 4(FORWARD 50 LEFT 90) satırına gelip cursor ve delete tuşlarıyla 50'yi silip yerine :KENAR yazalım. Bitince aşağıdaki gibi olacaktır:
REPEAT :KENAR LEFT 90)
Şimdi yaptığımız değişiklikleri Logo'ya anlatmak için Control ve C tuşlarına basıp çıkalım.
KARE yazdığımızda Logo bize, KARE NEEDS MORE INPUTS diye cevap verecektir. Yani daha veri vermemiz gerektiğini söylemektedir.
KARE 70
Yaptığımız kare biraz daha büyüdü. Yeni tanımladığımız bu sözcükle istediğimiz büyüklükte kare çizdirebiliriz. Logo, sözcüğün ardından gelen sayıyı :KENAR nesnesine atamakta ve bu değeri işlem içinde kullanmaktadır.
TO ŞEKİL :KENAR REPEAT 18 (KARE :KENAR LEFT 20) END
Bu tanımlandıktan sonra ŞEKİL 50 diyerek şekil çizdirebiliriz. Böylece daha önce öğrettiğimiz bir sözcüğü kullanarak yeni bir sözcük tanımlamış olduk. Logo tanımladığımız her sözcüğü kendisinin önceden bildiklerinden farksız görür. Bunun anlamı tanımladıklarınızı da var olanlar gibi kullanabilmenizdir.
TO ŞEKİLİ :KENAR REPEAT I8|KARE :KENAR LEFT 20 MAKE”KENAR :KENAR * 5) END
Bu yeni tanımlamada MAKE sözcüğü ile KENAR nesnesinin taşıdığı değeri her seferinde artırarak şekil çizdirebiliriz. Dikkat edilecek konu bir nesneye değer atfedileceği zaman " işaretiyle bunun yeni bir değer olduğunu belirtmemiz gerektiğidir.
Var olan değerini kullanırken ise nesnenin adından önce : işaretini koyarız. Logo'da değişkenler tek tiptir, yani sayısal ya da başka tür değişkenler yoktur ve bunlar nesne adını alırlar. Nasıl KARE sözcüğünü yapılacak bir dizi işlemi içeren listeyi ifade etmek için kullanıyorsak, KENAR nesnesini de ona bağlı bir değeri ifade etmek için kullanıyoruz. Okula gitmek bizim için her sabah yaptığımız bir eylemdir. Harçlık ise parasal bir değeri ifade eder ve aldığımız miktara göre zihnimizde canlanan, ismi aynı kalmasına rağmen, değişir. Gördüğümüz gibi Logo aslında bizim zihnimizin çalışmasına benzer ilkelerle çalışır. Bu nedenle BASIC gibi diğer programlama dillerinin mantığını Logo'yu öğrenirken bir kenara bırakmak, doğrudan kendimiz gibi düşünmek zorundayız. Şimdiye kadar yaptıklarımızı kaydetmek için disket sürücüsüne formatlanmış bir disket koyup SAVE "CALISMA yazalım. Bu şekilde yaptığımız tüm çalışmalar kaydedildi.
CATALOG yazdığımızda, CALISMA.LOGO adını görebiliriz. Kaydettiğimiz, çalışma alanındaki tüm çalışmaları içeren bir listedir. Başka bir zaman bunları kullanmak için,
READ "CALISMA dememiz gerekir. PRINTOUT dersek çalışma alanımızda var olan tanımlamaların bir listesini görebiliriz. Şimdi GOODBYE diyerek çalışmayı bitirelim. Bu şekilde çalışma alanı tamamen silinip, Logo ilk açıldığı ana geri döner. Hoşça kalın...