Amiga Dünyası sayı 10, sayfa 19

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 19

PRINT HEX$(60037) komutu, EA85 sonucunu verir.

IF..GOTO IF..THEN..ELSE IF..THEN..ELSE Blok

KOMUTLARI

Kullanım Şekli: 1. IF ifade GOTO satır [ELSE yönerge] 2. IF ifade THEN satır [ELSE yönerge] 3. IF ifade THEN yönerge [ELSE yönerge] 4. IF ifade THEN yönerge blok'u......

ELSE yönerge blok'u......

ELSEIF ifade THEN yönerge blok'u......

ENDIF

IF..THEN yönergesi, belli koşulları kontrol ederek sonuca göre ya programın takip eden satırlarını çalıştırır ya da programın belirtilen bir başka bölüme dallanmasını sağlar. Kullanım şekillerinde gördüğünüz gibi birçok farklı kullanımı vardır. En basit kullanım 1., 2. ve 3. formlardır. Bir örnek ile açıklayalım: IF a<10 THEN PRINT "a, 10'dan küçüktür"

ifade, genellikle fiziksel bir koşulun karşılaştırmasıdır. Belirtilen koşul karşılaştırıldığında sonuç doğruysa, Amiga Basic -1 (doğru) değerini; yanlışsa, 0 (yanlış) değerini alır ve eğer sonuç -1 ise (doğruysa) ekrana "a, 10'dan küçüktür" yazılır. Sonuç yanlışsa, program bir alt satırdan itibaren çalışmasını sürdürür. Komut, ELSE ile genişletilebilir:

IF a<10 THEN PRINT "a, 10'dan küçüktür"

ELSE PRINT "a, 10'dan küçük değildir"

Bu ilave ile program koşulun yanlış olduğu durumda ELSE ile verilen işlemi yapar ve ekrana "a, 10'dan küçük değildir" yazar. Komutta THEN ve takip eden komutun yerine bir GOTO ve satır numarası ya da etiket konulabilir. Yani:

IF a<10 GOTO koşul 1 ELSE GOTO 250

IF/ELSE IF/ELSE/END IF yapısı kullanılarak birden fazla koşul karşılaştırması yapılabilir. Biraz önceki formatta THEN'den sonra başka bir karşılaştırma imkanı olmadığını düşünürseniz, bu yeni kullanım çok işe yarayacaktır. Birinci koşulun doğru olmadığı durumlarda ELSE IF....THEN satırı ile ikinci koşul karşılaştırması yapmak mümkündür. IF ELSE IF/ELSE yapısı, END IF komutu ile sona erer. Bu yapıyı birbiri içine geçmiş olarak vermek mümkündür. İsterseniz sadece bu komutu kullanarak 3 sayıyı karşılaştırıp en büyüğünü bulan basit bir program yazalım::

a=4:b=6:c=11 IF a<b THEN

IF a<c THEN

IF b<c THEN PRINT "en büyük c" ELSE PRINT "en büyük b" ENDIF ELSE PRINT "en büyük b" ENDIF ELSEIF a<c THEN PRINT "en büyük c" ELSEIF a>b THEN PRINT "en büyük a" ENDIF

Programda verdiğiniz a, b ve c değerlerini değiştirerek denemeler yapabilir, hatta yeni bir mantık kurup kendi programınızı oluşturabilirsiniz. Deneyin.

Örneklerle açıklamaya çalıştığımız kullanım şekillerinin bağlı olduğu kuralları maddeler halinde aşağıdaki listede bulabilirsiniz:

1., 2. ve 3. format için: . ifade sonucu doğru ise, program ya satır ile belirtilen satıra dallanır ya da THEN'den sonraki yönerge'yi yerine getirir.

. ifade sonucu yanlış ise, GOTO ve THEN ile verilen işlem yapılmaz; eğer varsa, ELSE'ten sonraki yönerge uygulanır.

. THEN ve ELSE'ten sonraki yönergeler iç içe geçebilir, bu birçok Amiga Basic yönerge ve fonksiyonunu içeren komut girebilmenizi sağlar. Ancak 1., 2. ve 3. formlar bir satırı aşamazlar.

. THEN'den sonra, bir Amiga Basic yönergesi ya da satır numarası veya etiket belirtilebilir.

. GOTO her zaman satır numarası ya da etiketi ile verilir.

. Yönergede THEN ve ELSE aynı sayıda değilse, her ELSE en yakın THEN ile uyumlaştırılır.

. Bir IF..THEN yönergesi bir satır numarası ya da etiketine atlama yapıyorsa ve bir Amiga Basic "Undefined line number" hata mesajı verirse, gönderilen satır bulunamamış demektir.

4. Kullanım şeklinde bunlardan farklı kurallar da şunlardır: Yönerge bloğu iç içe geçmiş IF-THEN-ELSE bloklarından oluşabilir. Amiga Basic iç içe geçmiş yönergeler için tek satır sınırı koymaz; yönerge bloğu bir ya da daha çok satırdan oluşabilir.

. Bir ifade doğruysa, karşılık gelen THEN yönerge blok'u çalıştırılır ve program END IF yönergesini takip eden ilk yönergeye giderek çalışmasını sürdürür.

. Hiçbir ifade doğru değilse; ya program END IF'ten sonraki ilk yönergeden devam eder ya da varsa ELSE yönerge blok'u devreye sokulur ve program yine END IF'ten sonraki ilk yönergeden çalışmasını sürdürür.

. ELSE-IF blok'u opsiyoneldir. Amiga Basic bu konuda herhangi bir limit koymaz.

. ELSE blok'u da seçimliktir. . Satırda THEN yönergesinden sonra herhangi bir şey yazılmışsa, Amiga Basic bunun tek satırlık bir IF-THEN-ELSE yönergesi olduğunu düşünür.

INKEY$ KOMUTU:

Kullanım Şekli: INKEY$

Bu komut klavye buffer'ından bir karakter okur ve onu tek karakterlik bir yazısal dizi olarak geçirir. Herhangi bir karakter girişi yapılmazsa, buffer boş kalır ve INKEY$ boş bir karakter geçirir. Burada programı durduran Amiga+nokta tuş kombinasyonu haricinde tüm tuşlar kullanılabilir.

INKEY$ komutu ekrana herhangi bir karakter yazmaz, sadece karakteri geçirir.

Tus: a$=INKEY$ INPUT "Devam edecek misiniz (E/H)? ",a$ a$=UCASE$(a$) IF a$<>"" THEN IF a$="E" GOTO Yaz IF a$= "H" THEN END BEEP ENDIF GOTO Tus yaz: PRINT Merhaba" GOTO Tus

Örnek programımız, ekrana "Devam edecek misiniz (E/H)? " yazarak sizden cevap bekliyor. Cevap olarak tek karakterlik bir harf giriyorsunuz. Harf girmezseniz, aynı soruyu yineliyor, E veya H dışında bir harf girip Return'e basarsanız, bip sesi çıkarıp tekrar soruya dönüyor. UCASE$ fonksiyonu, girişi küçük harf yapsanız bile büyük harfe çeviriyor. "E" cevabı verirseniz, ekrana "Merhaba" yazıp soruya dönen program, "H" cevabı ile sona eriyor.

INPUT KOMUTU:

Kullanım Şekli: INPUT[;] ["uyarı mesajı";] değişken-listesi

INPUT komutu, programın çalışması esnasında kullanıcının klavyeden değerleri girebilmesini sağlar. Girilen değerler daha sonra program tarafından ilgili değişkenlere atanırlar. Program çalışırken bir INPUT yönergesi ile karşılaştığında durur ve uyarı mesajı yazılmamışsa bir soru işareti görüntüleyerek girişi bekler, uyarı mesajı'nı yazmak, özellikle uzun programlarda kullanıcının hangi bilgiyi gireceğini göstermesi bakımından çok yararlıdır. Mesajı takip eden “;” yazıdan sonra soru işareti koyar. Noktalı virgül yerine virgül koyulursa, soru işareti yazılmayacaktır.

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