Commodore sayı 18, sayfa 56

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 56

LABEL'dan sonra gelen komut yerine BEGIN...END blokları arasında komut grupları da olabilir.

CASE AY OF 1,3,5,6,8,10,12: GUN: - 31; 4,6,9,1 :GUN: — 30; 2 : BEĞİN I FRAC (Y/4)-0 THEN GUN:-29 ELSE 28; END:

Üstteki programımızda AY, GÜN ve Y değişkenlerinin INTEGER veri tipinde daha evvel tanımlandığını kabul ediyoruz. FRAC fonksiyonu yapılan bölmenin kalanını hesaplıyor.

Hangi komutun işleneceğini saptayan değeri üreten ifadeye “seçici” denir. Seçici'nin değeri INTEGER olarak sınırlandırılmamıştır; REAL veri tipi hariç şimdiye kadar öğrenmiş olduğumuz tüm veri tiplerini kullanabiliriz. Aşağıdaki ufak programı inceleyin.

PROGRAM örnek; VAR NOT: CHAR; BEGIN READLN (NOT); CASE OF

“A': WRİTELN ("Cok “B': WRİTELN ('İyi'); *“C': WRİTELN 'D': WRİTELN 'E': WRİTELN (“Zayıf”); END; END;

CASE komutunda kullanılan LABEL'ların veri tipi seçici değişken veya ifadenin veri tipi ile aynı olmak zorundadır.

Son olarak program döküm ekinde bulacağınız programın genel açıklamasını görelim:

Programımız bir işyerinde çalışan komisyoncuların çalışma şekillerine göre alacakları ücreti saptıyor. Çalışanlar üç grupta hesaplanıyor; geçici, düzenli, kıdemli. Programımız satıcının ne kadarlık satış yaptığını sorduktan sonra hangi türde olduğunu (G)eçici, (D)üzenli, (K)ıdemli sorusunu yönelterek öğreniyor. Yapılan seçim TİP değişkenine yükleniyor. WHILE döngüsü ile G, D, veya K harflerinden sadece birinin seçilmesi sağlanıyor. CASE komutu ile yapılan seçime göre program akışı sağlanıyor.

CASE TİP OF *G': “Geçici satıcı için komisyon hesapla”” “D”; “Düzenli satışı için komisyon “K': “Kıdemli satıcı için komisyon hesapla” END

ALT PROGRAMLAR

Şimdiye kadar herhangi bir programlama dilinde görülebilecek komutları öğrendik. Yazımızın başında

PASCAL'ın modüler programlama için çok uygun bir dil olduğunu söylemiştik. PASCAL'ı böylesine güçlü bir dil yapan nedir? Büyük boyutta bir program yapacağımız zaman, programımızı her biri kendi başına bir program sayılabilecek modüller halinde hazırlarız. Bu modüllerin birleşmesi ile programımız oluşur. Modüler bir program yazmak bize ne gibi faydalar sağlar? İlk olarak yapacağımız işleri ufak parçalara ayırıp, bu parçalarla tek tek uğraşabiliriz. Hazırladığımız modüllerin sağlıklı bir şekilde çalıştıklarını anlamamız, boyutları ve yaptıkları işler ufak olduğundan çok daha kolay olur. Programda her hangi bir mantık hatası çıktığında, hatanın nerede olduğunu aramak için uzun araştırmalara girmemiz gerekmez; soruna sebep olan modülün elden geçirilmesi hatanın giderilmesi için yeterli olur. Nasıl bir araba başlıca dört teker, dört kapı, bagaj kapakları, kaporta ve iç aksamdan oluşursa, biz de programımızı böyle küçük parçalara, yani alt programlara ayırarak hazırlarız. Modüler bir programlama yapmanın başlıca üç yararını sayabiliriz:

(1) Programımız için bir modül hazırlarken dikkatimizi sadece bu bölüme yöneltebiliriz, böylece programı kolaylıkla baş edilebilecek parçalara ayırmış oluruz.

(2) Çok büyük programlarda aynı anda farklı kişiler programın farklı modüllerini hazırlayabilirler.

(3) Eğer bir modülün programda birden fazla yerlerde kullanılması gerekiyorsa modül bir kere yazıldıktan sonra ihtiyaç duyuldukça kullanılabilir. Başka programlama dillerinde de alt programlar bulunuyor, ancak PASCAL'da alt programlar çok daha önemli bir yer tutuyor. BASIC'te bir alt programı ancak satır numarası vererek çağırabiliyorsunuz ancak PASCAL'da alt programınızın, daha doğrusu modülünüzün adını vermeniz yeterli oluyor.

Öncelikle alt programların yapılarını inceledikten sonra programlarımızı modüler bir yapı kullanarak nasıl hazırlayacağımızı göreceğiz.

FUNCTIONS (fonksiyonlar)

SQR, SQRT, TRUNC, ROUND önceden tanımlanmış olan fonksiyonlardan bazılarıdır. Ancak önceden tanımlanmış olan fonksiyonlardan hiçbirisi ihtiyacımızı karşılayamazsa ne yapabiliriz? FUNCTION bildirimi ile istediğimiz bir fonksiyonu tanımlayabiliriz. Verilen bir sayının isteğimiz üstünü bulabilen fonksiyonu aşağıda inceleyebilirsiniz.

FUNCTİON USALMA (X:RE- AL;N:İINTEGER4):REAL; VAR SONUÇ : REAL; I:İNTEGER; BEGIN SONUÇ: — 1.0; FOR 1:—1 TO ABS(N) DO SONUÇ: — sonuç*X;

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