Commodore sayı 15, sayfa 10

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 10

BASIC

READY. 100 REM VERİ KAYITLARI 110 DIM AS(8),B$(8) 120 FOR 1-1 TO 8:READ 130 DATA “AD”, “SOYAD”, “DTARIH”, “SOKAK”, “SEMT”, “SEHİR”, 140'PRİNT TAB(10); :PRİNT TAB(10);

1 TO 8:PRİNT

150 FOR | BS0): NEXT READY.

Kısa ama karışık: BASIC'de veri soruşturması.

BR Logo

TO S :X :ORD REPEAD 4 ICIZ :X :ORD SAGA END END

TO CIZ :X :ORD IF :ORD — 1 THEN FORM :X STOP CIZ :X :ORD — 1 SAGA :X CIZ :X :ORD — 1 SOLA :X CIZ :X :ORD — 1 SAGA :X CIZ :X: ORD — 1 END

TO FORM :X REPEAT 2 :X LEFT 45) FORWARD :X END

TO SOLA :X LEFT 45 FORWARD :X LEFT 45 END

TO SAGA :X RIGHT 90 FORWARD :X RIGHT 90 END

ilişkin LOGO programı dört adet alt-rutine (SAGA, SOLA, FORM, CIZ) ve bir adet ana yordama sahip (5).

PASCAL

program dosya; type tarih - record gün: ay: yıl: end; adres - record ad: soyad: dogum: yer: semt: sokak: case denk: true: false; end; var düzeltici: adres; sahte; stringl801; begin writeln ( writeln ( with duzeltici do begin write (ad.....

(ad);

1..12, 1890..2000;

stringl801; stringl801; tarih; 1000..8999; stringl801; stringl801; boolean of (geçici: real);

bilgi girisi

Buna tekabül eden Pascal programının uzun olduğu açık, ama ilk bakışta kavranması da çok daha kolay.

başvurmuş olana gerekli bilgiyi veriyor, bu bilgiyi alan da kendi tanıdığına bunu aktarıyor, o da öbürüne, tâ ki dostunuzun sormuş olduğu şey kendisine ulaşıncaya kadar. Recursion mekanizması en basit durumda böyle işlemektedir. Ama örneğin bir kitabın çözümlenmesi söz konusu olduğunda karmaşık durumlar ortaya çıkabiliyor. Kitap önce bölümlere, bölümler cümlelere, her bir cümle dil bilgisel kategorilere, her kategori alt-kategorilere, her alt kategori kelimelere, her kelime hecelere ve her hece de harflere ayrıştırılıyor. Ayrıştırma süreçlerinin hepsi birbirine benzemektedir. Ama bir ayrıştırma işlemi her zaman ânında tamamlanmamakta, muhtemelen de bir sonraki evrenin çözümlenmesine bağımlı kalmaktadır. LOGO'nun somut diline çevrildiğinde bunun anlamı şudur: En basit rekürsif fonksiyon -belki de okul dönemlerinden hatırlayacağınız- faktöriyel işlemdir. Bu işlem, sayının ardından gelen bir ünlem işaretiyle ifade edilmektedir: 3!=1x2x3=6. Ancak, rekürsif olarak bu fonksiyon şöyle tanımlanmaktadır: N sayısının faktöriyeli, ilkin N-1'in bulunması ve bunun da N sayısı ile çarpılması yoluyla hesaplanmaktadır. Bunun içinse tabii önce (N-1)! sayısının bilinmesi gerekmektedir ki, bu da (N-2)'den çıkarılmaktadır... vb. Ta ki 1'e ulaşıncaya kadar. Çünkü matematikçiler 1'in faktöriyel değerinin 1 olduğunu saptamışlardır: 1!=1. LOGO'da ise bu şöyle ifade edilmektedir: TO FAK :N IF :N=1 THEN OUTPUT 1 STOP ELSE OUTPUT :N * FAK (:N-1) Bu formülü şöyle açıklayabiliriz: Burada “N” N'in değeridir. “OUTPUT” ise bir şeyin geri verileceğini göstermektedir. Çünkü her LOGO yordamı tek bir görevi yerine getirir. Bu görevi dolaysız olarak yerine getiremediği takdirde, komutu bir alt programa iletir. Bu alt-program söz konusu komutun yordam tanımını temin eder ve sorunu çözmeye çalışır. Eğer başarılı olamazsa, o da tıpkı bir önceki gibi yaparak komutu bir alt-alt programa aktarır. Bu işlem, komut vericilerinden biri istediği sonucu alıncaya kadar böylece sürüp gider. Bu durumda sonuç bir önceki komut vericiye iletilir (OUTPUT talimatı aracılığıyla). Bu da bir kez daha görevini yerine getirmeyi dener.

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