Commodore sayı 8, sayfa 59

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 59

GOTO'suz

Programlama

BASIC 7.0, GOTO'lara gerek duymaksızın yapılandırılmış programlama sağlayan bir dizi döngü ve yapı komutlarına sahiptir. Bunlardan biri, ELSE koşulu için IF...THEN sorusunun geliştirilmişi. Şimdiye kadar alternatifli tercihler şu örnekteki gibi programlanabiliyordu:

40 A$—”N” THEN PRİNT “HAYIR”:GOTO 30 20 PRİNT “EVET” 30 REM BOYLECE DEVAM

BASIC 7.0'da aynı işi yapmak için çok daha kolay anlaşılabilen tek bir satır yeterli:

40 1F AS—“N” THEN PRİNT PRİNT “EVET” AS, “N”e eşitse “HAYIR”, değilse “EVET” basılacaktır.

Yazık ki, ELSE komutu bu şekliyle tek bir satırla sınırlanmıştır. Burada gerekli çareyi BEGIN...BEND ile parantezleme sağlar. BEGIN ve BEND arasında yer alan tüm BASIC satırları, BASIC çeviricisi tarafından tek bir BASIC satırı gibi algılanan bir öbek oluşturur. Bu nedenle BEGIN...BEND, özellikle IF sorularında çok yarar sağlar:

40 INPUT “SENİN BİLGİSAYARIN COMMODORE MU BASKA MI?:C$ 20 IF C$-“COMMODORE” THEN BEGİN SATIN ALINIZ!” 40:BEND:ELSE BEGİN SO:PRİNT“HAİN!” 60 BEND

60

Burada dikkat edilmesi gereken, IF komutunun 20. satırından 60. satırına kadar yayılmakta olmasıdır. Bu örnekte, eğer bilgisayar Commodore ise, bir C-128 satın alınması öneriliyor. Eğer bilgisayar Schneider veya başka bir markaysa hemen “hain” damgası vuruluyor. Tabii ki, bu tür IF...THEN...ELSE soruları, BEGIN...BEND ile birbirine geçirilebilir, yani hem THEN bölümüne hem de ELSE bölümüne ek IF soruları eklenebilir. Böylece daha büyük program öbekleri de GOTO kullanılmaksızın programlanabilir. GOTO'nun dışlanması, programa bir toplu bakışı kolaylaştırdığı gibi, hızını da oldukça artırır. BASIC çevirici her GOTO komutunda öncelikle programın içinde ondalık olarak bulunan satır numarasını ikili yazı düzenine dönüştürmek ve verilen satırı aramak zorundadır. Bir diğer avantaj: Program komutlarının kendilerine artık daha başka satır numaralarına gerek kalmıyor. Örnek program hiçbir değişiklik gerektirmeksizin olası tüm satır alanlarında kullanılabilir. Böylesine kolay programlanan yalnızca dallanmalar değildir. Özellikle döngülerde, yani belirli program parçalarının tekrarlanmasında, BASIC 7.0'ın üstünlüğü kendini açıkça göstermektedir. C-64'ten de bildiğimiz gibi, bir FOR...NEXT döngüsü, aynı döngünün IF ve GOTO ile programlanmış halinden bir miktar daha hızlıdır. FOR...NEXT döngüsünün dezavantajı ise, döngünün kaç kere tekrarlanması gerektiğinin girişte verilmesi zorunluluğudur. Bu dezavantaj, yeni ve hızlı bir DO...LOOP döngü yapısı ile ortadan kaldırılabilmektedir. FOR...NEXT gibi DO...LOOP da istenen uzunlukta bir program bölümünü çevreleyebilir. DO komutu, yalnızca BASIC çeviricisinin döngünün başlangıcını fark etmesini sağlar. Buna ilişkin LOOP'a erişildiğinde, herhangi bir arama süresi gerektirmeksizin son derece hızlı bir biçimde DO'ya geri atlanacaktır. Yani sonuçta ortaya çıkan, DO ile LOOP arasında bir “sonsuz döngü”dür. Bu döngüyü terk edebilmek için, EXIT komutu öngörülmüştür. EXIT'in görevi, LOOP'un arkasından programın akışının normal bir biçimde sürdürülmesidir. Bu nedenle EXIT komutu, çoğunlukla bir koşula bağlanır. Örnek:

10 20 DO 30:X — x*2:PRİNT X A0:İF X THEN EXİT 50 LOOP

x değeri, 1500 değerini aşılana kadar ikiye katlanır ve görüntülenir. Bu koşulsuz DO...LOOP döngüsünün yanısıra, koşullara bağımlı iki tür de öngörülmüş durumda:

DO WHILE...LOOP, WHILE'den sonra yer alan koşul geçerli olana kadar sürer:

40DO WHİLE A$ A$:LOOP

Hiçbir tuşa basılmamış olduğu durumda, WHILE koşulunu yerine getiren A$ daima boştur. Döngünün terk edilmesi ancak bir tuşa basılmasıyla gerçekleşir. DO UNTIL döngüsü ise bunun aksine, koşul doğru olduğu sürece yerine getirilmez, ancak UNTIL'in arkasında verilen koşulun doğrulanmasına kadar yürütülür. Tabii ki, DO WHILE veya DO UNTIL'de, bu komutların verimini yükseltecek şekilde istendiği kadar EXIT döngüye eklenebilir.

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