Commodore sayı 41, sayfa 61
Sayfanın metni

Sayfa 61

SAYAC- 0 WHILE SAYAC 10 PRINT “MERHABA” SAYAC- WEND PRINT “SON”

Bu program bir önceki programla aynı işi yapıyor, ama ikincisi programcının olayı çok daha kolay görebilmesine olanak veriyor. Bu programda da başlangıçtaki sayaç sıfırlanıyor (initialize ediliyor). Ardından WHILE komutu geliyor. Bu komutu şöyle açıklamak mümkün: “SAYAC 10'dan küçük olduğu müddetçe, WEND'e kadarki bütün komutları yerine getir.” Yani pratikte WHILE ve WEND, döngünün başını ve sonunu işaretleyen parantezi oluşturuyorlar. Döngünün içinde bu iki komut arasında her akış sayacı 1 artıyor. SAYAC nihayet 10'a eşit olduğunda, WHILE'ın ardından gelen koşul geçerli olmuyor ve program WEND'in ardından gelen komutla devam ediyor. WHILE-WEND kombinasyonunun varlığının amacı, yalnızca bir döngünün komutlarının belirli bir sayıda yinelenmesini sağlamak değil elbette. Programcı, bu kombinasyonu, henüz döngünün kaç kez işlemesi gerektiğini bilmediği durumlarda kullanır. Döngünün sona ermesi belirli bir olayın gerçekleşmesine bağlıdır. Örnek:

INPUT SAYI S-— SAYI WHİLE S WEND SAYI-S PRINT S PRINT “SON”

-1

Bu program virgülden sonra hanesi olmayan bir sayı verir. INPUT komutu klavyeden bir giriş bekler. Bu komutun verilmesiyle ekranda bir kursor belirir. Şimdi, (RETURN) tuşuna basıldığında sayının adının bulunduğu bellek alanına yerleşecek olan herhangi bir değer klavyeden girilebilir. Sayı, S'ye geçici olarak yerleşir. Program, virgülden önce bir sıfır kalana kadar S'den 1 değerini eksiltir. Bu durumda S'de yalnızca sayının virgülden sonraki kısmı kalır. Bu, sayıdan çıkarılır ve sonuç ekrana yazılır. WHILE döngü akışlarının adedi bu sayıya bağlıdır. Peki, programın yerine getirmesi gereken döngü sayısının önceden bilinebildiği durumlarda ne olacak? Bu durum için de tabii hemen her programda bulunabilen özel bir yapı söz konusu. BASIC dilinde bu görevi FOR... NEXT döngüsü yerine getirir. Ama burada bu döngünün açıklamasına pek girmek istemiyoruz. Virgülden sonraki hanelerin ortadan kaldırılması çoğunlukla gerekli olmaktadır. Varsayalım ki, büyükçe bir programın üç yerinde bir değerin yalnızca virgülden önceki hanelerinin basılması gerekiyor olsun. Bu durumda son örneğin satırlarının bu programın içinde üç kez yinelenmesi gerekecek. Bu da oldukça gereksiz bir yer kaybına neden oluyor. Sorunu daha basit biçimde çözebilmek için BASIC ve diğer birçok programlama dilinde prosedür adı verilen bir yöntemden yararlanılabiliyor. Örnek:

PROC VIRGULDENSONRASIZ

(SAYI) STATIC S- SAYI WHILES - 1 WEND SAYI - SAYI — S PRINT S END PROC

Her iki örnekte de aslında aynı program adımları sözkonusu. Ama ilk ve son satırlar bu komutlardan özel bir durum yaratıyorlar: Bir prosedür. Prosedürler genellikle büyük programların sonlarında bulunurlar. Eğer bir programın belirli üç yerinde bir sayının yalnızca virgülden önceki kısımlarının verilmesi gerekiyorsa,

Başla

PRINT “MERHABA”

SAYAC- 1

IFSAYAC 10

PRİNT “SON”

Sayacı sıfıra getir

Sayacı bir artır

Sona erdir

Akış diyagramı ve BASIC'e çevirisi

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