29 Mart 2008 Cumartesi

Turbo Pascal Ders Notları

PASCAL
Giriş
Pascal programlama dili 1968 yılında Niklaus Wirth tarafından geliştirilmiş üst düzey programlama dilidir. Pascal programlama dilinin günümüzdeki sürümleri Turbo/Borland ve Windows Pascal adları ile bilinmektedir. Turbo Pascal programlama dili mühendislik problemlerinin çözümlerinde, bilimsel projelerde, sağladığı grafik desteği ve program yazmadaki kolaylıklarıyla aranılan bir dil olma özelliğini sürdürmektedir.
Pascal programlama dilinin önemli özelliklerinden biri, program yazmadaki kolaylıkların yanısıra, yazılan bir metinin kolaylıkla değiştirilebilmesi, program içindeki bir metinin istenilen yere taşınabilmesi, kopyalanabilmesi, yazılan programdaki yazım kurallarının kolaylıkla kontrol edilebilmesi, hataların kolaylıkla tespiti ve bu hataların düzeltilmesi için yaptığı öneriler vb. gibi işlemlerin çabuk ve güvenilir bir şekilde yapılabilmesine olanak sağlamasıdır.
Pascal'ın programcıya sunduğu önemli özelliklerden biri de; bazı programlarda ortak olarak kullanılan program parçalarının ayrı bir Pascal dosyası olarak saklanması suretiyle farklı programlarda bu program parçalarının kullanılabilmelerine olanak tanımasıdır.
Pascal Menüleri
Pascal editöründe kullanımı kolaylaştıran bir çok menü vardır. Bu menülere ulaşmak için \"Alt \" tuşu ile birlikte menü isimlerinin ilk harflerine basmak yeterlidir. Menüye ulaştıktan sonra menü komutlarına erişim için üç yol vardır. 1)Mouse ile, 2)Ok tuşlarıyla 3) menü komutu üzerindeki işaretli harfe basılır.
Burada Pascal menülerinin tamamını tanıtmayıp sıklıkla kullanılan menü ve menü komutlarının kullanımı anlatılacaktır. Burada tanımı yapılan menüler, Windows Pascal için ifade edilmekle olup, aralarındaki küçük farklarla Turbo ve Borland Pascal 7.0 için de geçerlidir.



Devamını okuyun...>>

Compile Menüsü

Compile Menüsü
Compile Menüsü (Şekil 11) editörde aktif bulunan Pascal programının derlenmesinde, bu programa bağlı unit programların derlenmesinde ve yazılan Pascal programının dos/windows ortamında kendi başına çalışır duruma yani; XXXXXXXX.EXE durumuna getirilmesi için kullanılır. En çok kullanacağımız menü komutları aşağıda özetlenmiştir.
Compile: Editör ekranındaki aktif durumda olan programı derlemek amacıyla kullanılır. Kısa yol tuşu (Alt+F9).
Make: Editör ekranındaki aktif durumda olan programı ve bu programa bağlı unit harici programlarını en son değiştirilmiş halleriyle derleme işlemini yapar. Kısa yol tuşu (F9).
Build: Editör ekranındaki aktif durumda olan programları ve bu programa bağlı unit harici programlarını birlikte derler.

Şekil 10. Compile Menüsü
Destination Memory (Disk): Sadece DOS Turbo Pascalda bulunan bu komut ile Programın derlenerek çalıştırılacağı ortamın belirtilmesi için kullanılır. Seçenek üzerine \"Enter\" tuşuna basılarak Memory yazılı bölüm Disk veya Disk yazılı ise Memory durumuna alınır. Destination Disk durumunda derleme sonucunda program dos ortamında direkt olarak çalıştırılabilir.
Target: Yazılan programın derlenip çalıştırılacağı ortamı belirlemek için kullanılır. Pascal Real mode, Protected mode ve Windows olmak üzere üç ortam sunmaktadır.
Editör ve derleyici ile ilgili detaylar kullanıcı kitaplarından veya Help menüsünden sağlanabilir

Devamını okuyun...>>

Run Menüsü

Run Menüsü
Run menüsünde yazılan programın çalıştırılması için bazı komutlar bulunmaktadır. Run menüsünde bulunan menü komutları aşağıda özetlenmiştir.
Run: Programı derleyerek çalıştırır. Kısa yol tuşu (Ctrl+F9).

Şekil 9. Goto Line Number Diyalog kutusu
Program Reset: Sadece DOS sürümü Turbo/Borland Pascal'de bulunan bu komut ile Step Over veya Trace Into komutlarından biri çalıştırılınca, yapılan kontrolü durdurmak ve hata kontrolünü tekrar programın ilk deyimi üzerine almak için kullanılır. Kısayol tuşu (Ctrl+F2).
Goto Cursor: Sadece DOS sürümü Turbo/Borland Pascal'de bulunan bu komut ile editör ekranındaki program yazılımında kursörün bulunduğu satıra kadar olan program bölümünün derlenerek çalıştırılmasını sağlar. Kısayol tuşu (Ctrl+F4).
Trace Into: Sadece DOS sürümü Turbo/ Borland Pascal'de bulunan bu komut ile editör ekranındaki programın satır satır çalıştırılmasını sağlar. Kısayol tuşu (F7).
Step Over: Sadece DOS sürümü Turbo/ Borland Pascal'de bulunan bu komut ile editör Trace On durumuna geçer. Aktif durumdaki programın çalışması sırasında programın hangi satırları izlediğini ve işlem sırasını izlemek amacıyla kullanılmaktadır. Kısayol tuşu (F8.)

Devamını okuyun...>>

Search Menüsü

Search Menüsü
Search Menüsü (Şekil 6), program yazımı sırasında belirli sözcüklerin aranması ve değiştirilmesi, istenilen program satırına hızlı bir şekilde ulaşılması vb. gibi işlemlerin kolaylıkla yapılabilmesini sağlar.
Find: Bu komut program içinde herhangi bir metinin aranması amacıyla kullanılır. Komut aktif hale geldiğinde Şekil 7'deki diyalog kutusu ekrana gelir. Aranılacak metin, kendisi için ayrılmış alana yazılarak klavyeden \"Enter\" tuşuna veya mouse ile Ok butonuna basılır.

Şekil 6. Search Menüsü
Bulunulan noktadan ileriye doğru arama yapılacak ise Direction bölümünde Forward terimi işaretlenmeli, geriye doğru arama yapılacak ise Backward terimi işaretlenmelidir.

Şekil 7. Find Diyalog kutusu
Scope bölümünde, sözcüğün tüm dosya içinde aranılması isteniyorsa global, sadece seçilen metinde aranılması isteniyorsa selected text bölümleri işaretlenmelidir. Origin bölümünde, aramaya başlanacak sözcük, nokta bütün dosya içinde aranılacak ise entire scope, imleçin bulunduğu noktadan itibaren aranılacak ise from kursor bölümleri seçilmelidir.
Replace:Yazılan program içinde kullanılan herhangi değişkenlerin veya Pascal sözcüklerinin başka bir değişken veya Pascal sözcüğü ile değiştirilmesi gerekebilir. Bu komut kullanıldığında Şekil 8'deki diyalog kutusu ekrana gelir. Text to find' 'in karşısında ayrılmış alana değiştirilmesi istenilen sözcük, New Text' in karşısındaki ayrılmış alana yeni sözcük yazılır. Değiştirilecek sözcük programın tamamında veya birden çok yerinde değiştirilecek ise Change all tuşunun üzerine gelinir ve klavyeden \"Enter\", mouse ile Ok butonuna basılır. Programda aranılan metin bulunduğunda değişim için kullanıcıdan onay bekleyen bir diyalog kutusu ekrana gelir. Değişime onay için \"Y\", değişime hayır demek için \"N\" tuşuna basılır.

Şekil 8. Replace Diyalog kutusu
Search Again: Find menü komutu ile arama yapıldığında, program içinde aranılan metine ilk karşılaşılan yerde arama kesilir. Aynı metini tekrar aramak için Search Again menü komutu kullanılır.
Goto Line Number: Program içinde istenilen program satırına hızlı bir şekilde ulaşılmasını sağlar (Şekil 9). Komutun kullanımıyla ekrana gelen diyalog kutusunda ayrılmış alana satır numarası yazılarak \"Enter\" tuşuna basılır

Devamını okuyun...>>

Write-Writeln

Write-Writeln
Pascal programlama dilinde yazma işlemi için WRITE ve WRITELN komutları kullanılmaktadır. Bu komutların genel kullanım yapısı şu şekildedir
Write(A1,A2,A3,...,An)
Writeln(A1,A2,A3,...,An)

İki kullanım şekli arasındaki fark, Read ile Readln arasındaki fark gibidir. İfadeler Write ile yazdırıldıktan sonra kursör aynı satırda bekleyecektir, Writeln ile yazdırılması durumunda ise kursör bir sonraki satıra geçecektir.
Vars,a,n:integer;......begins:=3;a:=9;n:=5;Write(s );Write(a);Write(n);End.

Programın çalıştırılmasıyla elde edilen sonuç;
395
olacaktır.
Aynı değişkenleri Writeln ile yazdırdığımızda;
Vars,a,n:integer;......begins:=3;a:=9;n:=5;Writeln (s);Writeln(a);Writeln(n);End

3
9
5
elde edilecektir.
Read-Readln
Pascal 'da okuma işlemi için kullanılan komutlar READ ve READLN olup genel kullanım yapısı şu şekildedir;
Read(A1,A2,A3,...,An)
ReadLn(A1,A2,A3,...,An)
Read ile Readln arasındaki fark: Read, okuma işlemi tamamlandıktan sonra aynı satırda kalınmasını, Readln ise yeni bir satıra gelinmesini sağlar. Bir Pascal programı içerisinde bu iki komutun kullanımı aşağıdaki program parçasında verilmiştir.
Vars,a,n:real;beginRead(s,a,n)end.
Okunacak değerlerin düzeni;
12.45 43.543 62.12
Aynı değerleri ReadLn ile okutturmak istersek;
Vars,a,n:real;beginReadln(s,a,n)end.
Okunacak değerlerin düzeni yukarıdaki okuma düzeni ile aynı olabileceği gibi her değer ayrı bir satırda verilebilir, her hangi satırlarda verilebilir, örnek olarak s, a ve n değerleri aşağıdaki okuma düzeninde okutturulmuştur.
12.45 43.543
62.12

Devamını okuyun...>>

For-Do

For-Do
For deyimi, bir program parçasının herhangi bir boolean şartına bağlı olmaksızın belirlenen sayıda üstüste çalıştırılması için kullanılır. For deyiminin genel kullanım şekilleri aşağıda verilmiştir.
1. FOR Kontrol Değişkeni :=Başlangıç_Değeri TO Son_değer DO
Begin
İşlemler
End;
Bu kullanım şeklinde başlangıç değeri bitiş değerinden küçük olmak zorundadır. TO ifadesiyle başlangıçtan bitişe kadar artarak tekrar yapılacağını, DO ifadesi de tanımlanan işlemlerin tekrarlanacağını bildirir
For-Downto
FOR Kontrol Değişkeni :=Başlangıç_Değeri DOWNTO Son_değer DO
Begin
İşlemler
End;
For deyiminin bu kullanım şeklinde başlangıç değeri bitiş değerinden daima büyük olup DOWNTO ifadesi de döngü değişkeninin tekrarlama işleminde azalacağını belirtir. DO ifadesi ise belirtilen işlemlerin döngü sayısınca tekrarlanacağını bildirir.
Turbo Pascal dilinde diğer programlama dillerinden farklı olarak başlangıç değerinden son değere artışlar/azalmalar birer birer olmaktadır. Aşağıdaki örnek programları inceleyiniz.
Program Hesap_plani;Uses Crt; {Windows için Wincrt}var i:byte;Hesapkodtring[ 10] ;Hesapaditring[ 20] ;begin clrscr;for i:=1 to 5 dobeginWrite('Hesap Kodu ........:');Readln(HesapKod);Write('Hesap Adı............:');Readln(HesapAdi);end;Readln;end .
Örnek:Aşağıdaki örnek Program; 1'den 8'e kadar artan ve 9'dan 3'e kadar birer birer azalan içiçe for do döngülerinin kullanımını göstermektedir.
Program icice_for_ornek;Uses crt; {Windows için Wincrt}Vari,j:byte;BeginFor i:=1 to 8 doBeginfor j:=9 downto 3 doBeginWrite(i*j:6);end;Writeln;end;Readln;End.
Örnek: 'A' dan 'Z' ye kadar büyük harfleri ekrana yazdıran Pascal programı.
Program Odev;var ch:=Char;beginWriteln('BÜYÜK HARFLER');for ch:='A' to 'Z' DOWrite(Ch,' ');end.
Örnek. Klavyeden girilen bir ifadeyi tersten yazdıran program.
program terstenyazma;uses crt; {Windows için Wincrt}varmesaj:string;i,l:byte;beginWrite('Bir mesaj yazınız');Readln(mesaj);l:=length(mesaj);Writeln(L );for i:=L downto 1 doWrite(Copy(mesaj,i,1));End.


Devamını okuyun...>>

Repeat-Until

Repeat-Until
Bir program bloğunun belli bir şart sağlanıncaya kadar üst üste çalıştırılmasını sağlayan REPEAT deyiminin genel formu aşağıdaki şekildedir.
Repeat
.
Program Satırları
.
Until (Boolean Şartı)

Burada repeat, tekrar etme anlamında olup, tekrar etme işi UNTIL deyimindeki boolean ifadesi sağlanıncaya kadar devam eder. Bu deyim program satırları bölümüne herhangi bir şey yazılmaksızın kullanılabilir.
Bu döngünün en büyük avantajı belirli bir sayı ile sınırlandırılmamış olmasıdır. Boolean ifadesindeki şart sağlanıncaya kadar işlemlere devam edilmektedir.
Dikkat edilirse şart cümlesinin aldığı değer ne olursa olsun program bloğu bir kez çalışmaktadır.
Örnek : Aşağıda verilen Pascal programı karton fabrikasındaki kenar kesme ünitesinde, kesme makinasından çıkan kartonların ortalama ağırlıklarını hesaplamaktadır. Karton ağırlığı olarak 0 girildiğinde programın çalışması sona ermektedir.
Program ornek_repeat;uses wincrt;vari,sayi:integer;top,ort:real;beginclrscr; i:=0;top:=0;ort:=0;Repeati:=i+1;Write(i,'. Kartonun Ağırlığını Giriniz =');Readln(sayi);Top:=top+sayiUntil (Sayi=0);ort:=top/(i-1);Writeln;Writeln;Writeln(i-1,' Adet Kartona ait Ağırlık Ölçümü Yapılmıştır.');Writeln(i-1,' Adet Kartonun Toplam Ağırlığı =',top3);Writeln('Girilen sayıların ortalaması =',ort3);repeat until KeyPressed;end.

Devamını okuyun...>>

While-Do


Bir program bloğunun belli bir şart sağlandığı sürece üst üste icrasını sağlayan WHILE deyiminin genel yazılış şekli aşağıdadır.
While <şart cümlesi> Do BLOK
Do kelimesini takibeden blok WHILE deyimi tarafından döngüye sokulacak komut cümlelerini kapsar. Komut cümlesi sayısı birden fazla ise, bu bloğun BEGIN...END deyimleri arasına alınması zorunludur.
WHILE ile REPEAT arasındaki fark; Repeat döngüsü şart cümlesi yanlış olduğu sürece, While döngüsü ise şart cümlesi doğru olduğu sürece devam etmesidir.
Örnek : Repeat -Until ile yapılan örnek programı WHILE-DO ile yapalım.
program ornek_While;uses wincrt;vari,sayi:integer;top,ort:real;beginclrscr; Write('1. Kartonun Ağırlığını Giriniz =');Readln(sayi);i:=1;top:=0;ort:=0;While Sayi>0 dobeginTop:=top+sayi;i:=i+1;Write(i,'. Kartonun Ağırlığını Giriniz =');Readln(sayi);end;ort:=top/(i-1);Writeln;Writeln;Writeln((i-1),' Adet Kartona ait Ağırlık Ölçümü Yapılmıştır.');Writeln((i-1),' Adet Kartonun Toplam Ağırlığı =',top3);Writeln('Girilen sayıların ortalaması =',ort3);repeat until KeyPressed;end

Devamını okuyun...>>

IF Deyimi

IF Deyimi
IF deyimi, bir şartın doğru veya yanlış olmasına bağlı olarak programın belirli parçalarının çalışmasını veya çalışmamasını sağlar. IF deyimi,
IF şart cümlesi THEN Blok1;
veya
IF şart cümlesi THEN Blok1 ELSE Blok2;
şeklinde kullanılabilir.
Buradaki şart cümlesi, birbirlerine mantıksal operatörler ile bağlanmış bir veya birkaç ilişkisel operasyon veya bir tek boolean ifade olabilir. Aşağıdaki örnekleri inceleyelim:
IF A=B THEN ...
IF (A=B) AND (A=C) THEN ...
IF (A+1) < (B-1) THEN ...
IF (Cev In ['E' , 'e']) THEN ...
Then sözcüğünü takiben, bloklar birden fazla komut cümlesinden oluşurlar ise, bu blokların BEGIN ve END deyimleri içine alınması zorunludur. IF deyiminin ikinci şekli yani ELSE' den sonra gelen komut veya komutlar dizisi geçerlilik kazanmışsa, ELSE' den önce gelen komut cümlesinin yada, End deyiminin sonuna ';' işareti konulmaz. Aşağıdaki örneklerden 1.si hatalı 2.si doğrudur.
IF A=B Then Writeln ('Eşit'); Else Writeln ('Farklı');
IF A=B Then Writeln ('Eşit') Else Writeln ('Farklı');
IF deyimi içinde kullanılan Blok1 ve Blok2 çeşitli komut cümlelerinden oluşabileceğine göre bu blokların içinde başka IF cümleleri de yer alabilir. IF deyimlerinin bu şekilde kullanılmasına iç içe IF deyimleri adı verilir. IF cümlesinde yer alan her iki bloğun geçerlilik kazanması söz konusu olamaz.
IF degisken_1 degisken_2 then
begin
-----
islemler
-----
end;

Devamını okuyun...>>

If Then Else Yapısı

If Then Else Yapısı
IF degisken_1 degisken_2 then
begin
-----
islemler
-----
end
ELSE
begin
-----
islemler
-----
end;
Bu yapı kullanıldığında, Degisken_1 ile Degisken_2 belirtilen koşulu karşıladıkları zaman THEN ifadesinden sonra gelen işlemler, aksi halde ELSE ifadesinden sonra tanımlanan işlemler yaptırılır.
IF degisken_1 degisken_2 then
begin
islemler1;
end
else
if degisken_3 degisken4 then
begin
islemler2;
end
else
if degisken_5 degisken6 then
begin
islemler3;
end;
Örnek:Aşağıdaki program klavyeden girilen yılın kaç gün olduğunu vermektedir. Programı inceleyiniz.
program deneme;uses crt; {Windows için Wincrt}varyil:integer;beginclrscr;Write('Gun Sayisini ogrenmek istediginiz yili giriniz :');readln(yil);if (yil mod 4 )=0 thenbeginWriteln('Yil 366 gun');EndElseBeginWriteln ('Yil 365 gun');end;readln;end

Devamını okuyun...>>

Continue

Continue
Fortran programlama dilinde olduğu gibi tekrarlama çevrimini yeniden başlatır. Programcı, bilgi girişlerinde kullanıcının sayısal olmayan bir giriş yapacağını varsayarak önlem almak amacıyla tekrarlama işlemlerini yeniden başlatmak için CONTINUE komutu kullanılır. Bu deyim PASCAL 7.0 ' da geçerlidir.
Program Continue_Kullanimi;Uses Crt; {Windows için Wincrt}Constn=5;varsayac,i:integer;rakam :Array [ 1..n] of Real;toplam:Real;beginclrscr;toplam:=0; sayac:=1;While sayac <>0 thenbeginWriteln('Rakam girmelisiniz');CONTINUE;end;sayac:=sayac+1end;For I:=1 to sayac dotoplam:=toplam+rakam[ i] ;Writeln('Toplam Sayı :',Toplam:7:2);end.
Örnek program çalıştırıldığında kullanıcının hatalı bir giriş yapması halinde Run Time Error hatası oluşacaktır. Bu hatalı durum IORESULT hata durumu fonksiyonu ile kontrol ettirilerek programın kırılması önlenir ve CONTINUE komutu tekrarlama çevrimini tekrar başlatır. Ancak hata yoklama rutinleri {$I-} ile pasif duruma düşürülmüştür. IORESULT fonksiyon değeri kontrolü yapabilmek için {$I-} derleme komutu verilerek Pascal hata yoklama rutinleri pasif duruma alınmalıdır. Ancak kontrol işlemi bittikten sonra hata yoklama rutinleri {$I+} ile tekrar aktif duruma getirilmelidir.
Break
Turbo Pascal 7.0 programlama dilinde bir döngüyü kırarak sona erdirmek amacıyla kullanılır. Program içinde BREAK deyimiyle karşılaşıldığında içinde bulunduğu döngüden sonraki program satırının işler hale getirir. BREAK komutu FOR-DO, REPEAT-UNTIL ve WHILE-DO döngülerinin içinde kullanılabilir.
Konunun daha iyi anlaşılabilmesi için aşağıdaki örneği inceleyiniz. Örnek Programda i ve j gibi iki sayının çarpımı yapılmaktadır. i=j olduğu durumda içteki döngü BREAK deyimi ile kırılmakta ve i 'nin değeri bir üst değere arttırılarak programın çalışmasına devam edilmektedir.
Program break_kullanimi;uses crt; {Windows için Wincrt}var i,j:integer;beginclrscr;for i:=1 to 10 dobeginWriteln(i,'. değeri ');for j:=1 to 10 dobeginif i=j then break; (* i=j olduğu takdirde içteki döngünün çalışması sona eriyor*)Writeln(i:3,' * ',j:3,'= ',i*j:3);end;Writeln('Devam Etmek için ENTER tuşuna Basınız');Readln;end;end.

Devamını okuyun...>>

GOTO Deyimi


Programın çalışma yönünün değiştirilmesi için kullanılan GOTO deyiminin genel kullanımı şu şekildedir;
GOTO Etiket;
GOTO deyimi ile kullanılan etiket, çalışma akışının yönlendirileceği noktayı gösterir. Bu etiketin programın tanım bloklarının olduğu yerde LABEL adı verilen bölümde tanımlanması gereklidir.
GOTO deyiminin kullanıldığı program bloğu içinde bulunması zorunludur. Etiket, bir komut cümlesinin yani bir program noktasının etiketlenmesi için yazıldığında kendisinden sonra \" : \" karakterinin yazılması zorunludur.
GOTO deyimleri ile ana program ve alt programlar arasında veya bir alt program ile başka bir alt program arasında dallanma yapılamaz. Ayrıca, IF, CASE, FOR, REPEAT, ve WHILE deyimlerinin blokları içine dallanılamaz. Ancak bu deyimler ile kullanılan bloklar içinden, dışarıya dallanma yapılabilir.
Turbo PASCAL' daki kontrol ve döngü deyimlerinin etkinliği ve PASCAL programlarının yapısallığı GOTO deyimine ihtiyacı ortadan kaldırır. Basic ve Fortran' da yazılan programlarda bol miktarda görülen GOTO deyimlerine Pascal programlarında pek rastlanmamaktadır.
Örnek:Aşağıdaki program, 1' den n sayısına kadar olan sayıların toplamını hesaplamaktadır. Program içinde üç kez GOTO deyimi kullanılmıştır. GOTO devam şeklindeki komut cümlesi şartsız, diğerleri ise şartlıdır.
Uses crt; {Windows için Wincrt}VarI,N : INTEGER;Top : REAL;Cev : Char;LabelBasla, Devam, Son;BeginBaşla:Clrscr;I:=0;Top:=0;Write('Bir sayı giriniz=');Readln (N);Devam:I:=I+1;Top:=Top+1;IF I=N then goto son;GOTO DEVAM;Son:Writeln('1 den', N,'e kadar sayıların toplamı=', Top:5);Writeln;Write ('Devam Edecek misiniz :');Readln (Cev);IF Cev In ['E' , 'e'] then GOTO Basla;End.

Devamını okuyun...>>

Forward İfadesinin Kullanımı

Forward İfadesinin Kullanımı
Program içinde tanımlanan Prosedür blokları içinde bazılarının programın daha sonraki satırlarında tanımlanacağını belirten ifadedir. FORWARD deyimi, sonra tanımlanacak prosedür bloğu devamında kodlanmalıdır.
Aşağıdaki örnek programda ASAMA2 prosedür bloğu devamında görülen FORWARD ifadesi blok bilgilerinin daha sonra tanımlanacağını belirtir. Program I>10 olduğu durumda sona erecektir
program procedure_ornekleri;uses crt; {Windows için Wincrt}var i:integer;Procedure Asama2;forward;Procedure Asama1;Begini:=i+1;Write(I,'.');Asama2;End;Procedu re Asama2;BeginWrite(I*i,'.');if i>10 then halt;readln;Asama1;End;beginclrscr;i:=1;asama1;end .
Yukarıda verilen iki örnek programda procedure ismini takiben herhangi bir değişken adı yazılmadığına dikkat ediniz.
Kullanıcı Tanımlı Function Alt Programları
Pascal'da altprogramlar başlığı altındaki yapısal modüllerden bir diğeri de fonksiyonlardır (function). Function ve Procedure arasındaki farkı anlayabilmek için procedure ve function olarak ayrı ayrı yazılmış bir uygulama üzerinde duralım.
PROCEDURE Toplam(X,Y:integer; var Z:integer);
begin
Z:=X+Y;
end;
FUNCTION Toplam (X,Y:integer):Integer;
begin
TOPLAM:=X+Y;
end;
Örnekte toplam isimli alt yordam (Procedure) X ve Y tamsayılarının toplamını referans parametresi türündeki Z değişkeni aracılığı ile getirir. Procedure durumunda geri döndürülecek değer, VAR ile tanımlanmış bir değişkene atanmaktadır. Fonksiyon olarak tanımlanan TOPLAM modülü ise toplamı kendisi getirmektedir. Fonksiyon sona erdirilmeden önce geri döndürülecek, fonksiyonun ismine atanmaktadır. Toplam isimli fonksiyon, integer tiptedir.
Procedure olarak yazılan TOPLAM alt programı ;
Toplam (A;B;T); (Procedure)
şeklinde çağırılırken function şeklinde geliştirilmiş Toplam alt programı ;
T:=Toplam(A;B); (Function)
komutuyla çağırılır.


Devamını okuyun...>>

Alt programlar


Yapısal programlamanın en önemli yaklaşımlarından biri, temel uygulamayı bir takım parçalara bölerek gerçekleştirmektir. Pascal'da bu parçalar altyordam (procedure) veya fonksiyon (function) olarak kodlanır. Yapısal programlamanın temel tercih nedeni, program modüllerinin bağımsız olarak geliştirilmeleri ve çalışıp çalışmadığının kolaylıkla anlaşılabilmesidir.
Alt programlar genellikle tekrar edilen işlemleri kolaylıkla yapabilmek için yazılırlar. Tekrar edilen işleme örnek olarak, programımız içinde birden fazla yerde faktöriyel hesabı yapmamız gerekiyor ise bunu bir alt program ile hesaplatmamız halinde aynı işleme sahip program satırlarının tekrarı önlenecek, programın takibi kolaylaşacak ve daha verimli hafıza kullanımı söz konusu olacaktır.
Bilgisayar dillerinin tamamında bulunan alt program yapısı PASCAL Programlama dilinde PROCEDURE ve FUNCTION türü alt programlar olmak üzere iki ayrı türdedir. Bu iki ayrı tür alt programlar birbirlerine benzer özellikler taşımalarına rağmen yapısallık ve icra açısından bazı farklılıklar içerirler.
Alt programlarda yapılacak işlemler, ana program içinde nerede gerekiyor ise o noktada ilgili işlemleri yapan alt programın adı yazılarak devreye sokulur.

Devamını okuyun...>>

Alt Programlar Hakkında Genel Bilgiler

1.1 Alt Programlar Hakkında Genel Bilgiler
*Her alt programın bir başlığı, bir tanım bloğu, bir de icra bloğu vardır.
*Ana programlar PROGRAM deyimi, prosedür alt programlar PROCEDURE, fonksiyon alt programlar FUNCTION deyimi ile başlar.
*Alt program adının hemen yanında verilen parametreler değer transferi işlemleri için kullanılırlar. Bir alt programa değer transferi yapılarak, her bir çalışmada verilen değişik değerlere bağlı olarak değişik sonuçlar üretmek mümkündür.
*Alt program isminin yanına parametre yazmak seçime bağlıdır. Eğer

parametre yazılıyor ise bunlar procedure isminin yanına parantez içinde yazılırlar.
*Pascal programlama dilinde formal ve aktüel parametreler olmak üzere iki tür parametre tanımlanabilir. Formal parametreler, programın tamamına ait olmayıp sadece değer transferi için kullanıldıklarından geçici paramatreler olarak isimlendirilebilirler. Yani bu parametreler ile sadece alt program içinde çalışılabilir. Ana programda, alt programın çalıştırılması için yazılması gereken alt programın yanında yazılan parametreler ise Aktüel parametre adını alırlar. Burada aktüel ve formal parametrelerin sıralanış, sayı ve tip bakımından aynı olması gerekir.
Procedure Alt Programlar
Bir pascal programında Procedure alt programlara erişim ve procedure alt programın program içindeki yeri aşağıdaki genel gösterim şeklinde verilmiştir.
Program ad_;
procedure Altprogram1;
begin
işlem blokları;
end;
procedure Altprogram2;
begin
işlem blokları;
end;
(* ANA PROGRAM*)
BEGIN
işlemler;
Altprogram1;
Altprogram2;
........
işlemler;
........
Altprogram1 ;



##############
Otomatik Birlestirme
##############

........
END.

Devamını okuyun...>>

Alt Programlarda sabit değişken

Alt programlarda, ana programlarda olduğu gibi sabit, değişken ve çeşitli tip tanımlamaları yapılabilir. Yapılan bu tanımlamalar, alt program aktif olduğu sürece geçerli olup alt programın çalışması sona erdiğinde alt programda tanımlanan değişken, sabit ve tipler bellekten silinir.


Procedure işlem blokları iki şekilde kullanılır,
1. Parametresiz Prosedürler
2. Parametreli Prosedürler
Parametreli Prosedürler

Ana program ve alt programlarda tanımlanan değişkenlerin farklı olması durumunda tercih edilirler. Ana programda tanımlanan değişken değerlerinin işleme alınmaları, alt programda tanımlanan değişkenlere aktarılarak yapılır.
Parametreli prosedürlerde de tek yönlü ve çift yönlü olmak üzere iki ayrı tür değer transferi söz konusudur. Eğer procedure ismini takiben parametrelerin tanım cümlesi VAR ile başlıyorsa parametreler arasında çift yönlü değer transferi yapılacak demektir. Yani ana programda kullanılan değişkenler alt programa aktarılacak ve alt programın çalışması sona erdiğinde sonuç değerler ana programa transfer edilir.
Tek yönlü değer transferinde ise parametrelerin tanım cümlesi VAR ile başlamaz, değer transferi ana programdan alt programa olur ve alt programın icrası sonunda ortaya çıkan sonuçlar ana programa transfer edilmez. Her iki tür için yazım örnekleri aşağıda verilmiştir.
Tek yönlü Transfer rocedure Altyordam(X;Y;Z:integer;KAD:real);
Çift yönlü Transfer rocedure Altyordam(VAR X;Y;Z:integer;VAR KAD:real);
Veri transferinde String değişken veya bir dizi değişken formal parametre olarak tanımlanamaz. String ve dizi değişkenler formal parametre olarak kullanılacaksa, tip bildirisinin özel bir tip ismi olarak verilmesi gerekir. Aşağıda verilen örnekler sözü edilen kurala göre hatalı yazılmışlardır.
Procedure Altyordam(A:Array1..100 of real);
Procedure Altyordam2(String200);
Uygun tanımlamalar yapmak için Type bölümünden yararlanılmalıdır. Aşağıda verilen örnek tanımlar özel tip isimler kullanıldığı için geçerlidir.
Type
Oz=Array1..100 of real;
sozcuk=String200;

Procedure Altyordam(Az);
Procedure Altyordam2(Sozcuk);
Ana programdan alt programa transfer sırasında tanım bloklarında kullanılan parametrelerin tipleri aynı olmak zorundadır. Aksi takdirde 'Tip Uyuşmazlığı' hatası meydana gelecektir.
Aşağıdaki örnek programları inceleyiniz.
program paramli1;uses crt; {Windows için Wincrt}vara,b,t:integer;procedure toplam(x,y:integer);begint:=x+y;end;beginclrscr;re adln(a);readln(b);Toplam (a,b);Writeln(t);end.

program paramli2;uses crt; {Windows için Wincrt}vara,b,t:integer;procedure toplam(x,y:integer;var z:integer);beginz:=x+y;end;beginclrscr; readln(a);readln(b);Toplam (a,b,t);Writeln(t);end.
Yukarıdaki programda X ve Y değerlerinin toplamları Writeln(t); program satırında ekrana yazdırılmaktadır. Aynı programda toplamı yazdırmak istenilen parametre değiştirildiğinde program hata verecektir. Aşağıdaki program derlendiği zaman çalışmayacak ve 3 nolu hata meydana gelecektedir. Programı yazarak hatanın nedenini anlamaya çalışınız.
program hatali_paramli;uses crt; {Windows için Wincrt}vara,b,t:integer;procedure toplam(x,y:integer;var z:integer);beginz:=x+y;end;beginclrscr;readln(a);r eadln(b);Toplam (a,b,t);Writeln(z);end.

Örnek 4: Aşağıdaki örnek programda dizgi isimli tek boyutlu bir dizi oluşturulmuş ve bu dizinin elemanları sıra ile 1-100 arasındadır. Bu dizi değer aldıkça altprograma değer transfer etmekte ve alt programda bu dizinin değerleri random komutu ile rastgele sayılardan oluşan yeni bir diziye aktarılmakta ve ana programa geri dönmektedir.
Program degerparametresi; uses crt; {Windows için Wincrt}type DiziTipi=Array[1..100] of integer;varDizgiiziTipi;Yenidizi1,YenidiziiziT ipi;K:word;PROCEDURE Ornekleme(PardiziiziTipi;var YeniDiziiziTipi);beginYenidizi[k]:=Random(Pardizi[k])end;beginfor k:=1 to 100 dobeginDizgi[k]:=K;Ornekleme(Dizgi,YeniDizi1);Writeln(Dizgi[k],' ',YeniDizi1[k]);end;While not keypressed doend.

Devamını okuyun...>>

Parametresiz Prosedürler


Bu tür alt programlarda; alt program içinde kullanılan değişkenler ana program içinde kullanılan değişkenler ile aynıdır. Bu nedenle ana program ile alt program arasında veri transferi yapılmasına gerek yoktur. Aşağıdaki örnek programlar Parametresiz Prosedür kullanımını açıklamaktadır.
program faktoriyel_hesabi; uses crt; {Windows için Wincrt} var fakt:longint; n,i:integer;procedure islem1; begin fakt:=1; for i:=1 to n dobegin fakt:=fakt*i;end;end;begin clrscr;Write('N sayısını giriniz =');Readln(N); islem1;Writeln('N sayısının Faktöriyeli =',fakt:10);repeat until keypressed;end.
Yukarıda verilen programı çalıştırarak sonucu inceleyiniz.
Ekran komutları

Ekran komutları ekrandaki görüntü tasarımı için kullanılan komutlardır. Bu komutların program içinde kullanılabilmesi için, program başlığı satırından sonra USES komutunda CRT (Windows programları için WINCRT) unit isminin yazılması gereklidir. Aksi halde, ekran komutlarıyla ilgili yazılan komutlar Pascal derleyicisi tarafından tanınmayacaktır. En çok kullanılan ekran komutları aşağıda verilmiştir.
Clrscr
\"Clrscr\" CRT/WINCRT üniti içinde yer alan bir alt programdır. Ekranda daha önce yazılı olan ifadeleri silerek ekranın temizlenmesi amacıyla kullanılır.
GotoXY
Kursörü ekranın istenilen sütun ve satırına taşımak için kullanılır. Kullanımı;
GotoXy(Sütun,Satır);
şeklindedir. Normal bir ekran üzerinde 80 sütun ve 25 satır vardır.
Uses wincrt;varj:word;beginclrscr;for j:=1 to 20 dobegingotoxy(j,j);Write('Balıkesir Üniversitesi');gotoxy(50-j,j);Write('Balıkesir Üniversitesi');end;end.
Readkey
Klavyeden basılan karaktesi okumak için kullanılır. Bu fonksiyonun sonucu char tipi bilgidir. Turbo/Borland Pascal 7.0 'da tek başına kullanıldığında program bu komuta rastladığında, herhangi bir tuşa basılıncaya kadar programın çalışması kesilir.
Uses wincrt;vartus:char;begin clrscr;Write('Balıkesir ');Readkey;Writeln('Üniveristesi');Readkey;end.
Readkey komutunun çok kullanıldığı uygulamalardan biri de basılan veya basılacak karakteri kontrol etmektir.
Aşağıda verilen örnek programda her B tuşuna basıldığında \"Balıkesir Üniversitesi\" yazmaktadır. Program ESC tuşuna basılarak durdurulmaktadır.
Uses wincrt;vartus:char;j:word;beginrepeattus:=readkey; if upcase(tus)='B' thenWrite('Balıkesir Üniversitesi');until tus=#27;end.

Keypressed
Klavyeden bir tuşa basılıp basılmadığını kontrol etmek amacıyla kullanılan bir komuttur. Aşağıda verilen örnek programı inceleyiniz.
Uses wincrt;vartus:char;j:word;beginj:=0;repeatWrite('B alıkesir Üniversitesi');j:=j+1;if keypressed then tus:=readkey;if j=75 thenbeginclrscr;j:=0;end;until tus=#27;end.


Window
Ekranda pencere oluşturmak için kullanılan bir komuttur. Bu komut sadece Turbo/Borland Pascalda kullanılabilir. Kullanımı;
Window(X1,Y1, X 2,Y2);
X1 encerenin sol sütun numarası (1-80)
Y1 encerenin sol satır numarası (1-25)
X2 encerenin sağ sütun numarası (1-80)
Y2 encerenin sağ satır numarası (1-25)


Delay
Programın belirtilen süre kadar bekletilmesini sağlar. Delay (1000) komutu, programın 1 sn bekletilmesini sağlamaktadır. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
uses crt;beginwindow(20,5,60,20);REPEATDELAY(5); Write('BAÜ');UNTIL keypressed;end.


ClrEol
Kursörün bulunduğu konumdan satırın sonuna kadar bütün karakterleri silmek için kullanılır. Kursör bulunduğu konumda kalır.
uses winCrt;beginClrScr;Writeln('Günaydın Bugün nasılsınız?');Writeln('Enter tuşuna Basınız...');Readln;GotoXY(1,2); {Kursör 2.satır 1.sütuna konumlandırılıyor}ClrEol;Writeln ('İyi olmanızı duymak güzel.');end.
Highvideo
Ekrana yazılacak yazının parlak yazılmasını sağlar. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
Lowvideo
Ekrana yazılacak yazının mat yazılmasını sağlar. Bu komut sadece Dos için Turbo/Borland Pascalda kullanılabilir.
Normvideo
Ekrana yazılacak yazının normal parlaklıkta yazılmasını sağlar. Bu komut sadece Turbo/Borland Pascalda kullanılabilir.
Uses Crt;BeginClrscr;Highvideo;Writeln('Parlak');Lowvid eo;Writeln('Mat');Normvideo;Writeln('Normal');End.
WhereX
Kursörün üzerinde bulunduğu sütunun numarasını verir.
WhereY
Kursörün üzerinde bulunduğu satırın numarasını verir.
uses winCrt;beginWrite('Şu anda kursör pozisyonu :',WhereX,',',WhereY);end.
TextColor
Ekrana yazdırılacak yazının rengini ayarlamak için kullanılır. Bu komut sadece Turbo/Borland Pascalda kullanılabilir. Kullanımı;
Textcolor(Renkkodu/Adı);
Renklerin kodları aşağıda verilmiştir.
Renk Kod Adı
Siyah 0 Black
Mavi 1 Blue
Yeşil 2 Green
Turquaz 3 Cyan
Kırmızı 4 Red
Pembe 5 Magenta
Kahve 6 Brown
Açık gri 7 Lightgray
Koyu gri 8 Darkgray
Açık mavi 9 Lightblue
Açık yeşil 10 Lightgreen
Açık turquaz 11 Lightcyan
Açık kırmızı 12 Lightred
Açık pembe 13 Lightmagenta
Sarı 14 Yellow
Beyaz 15 White
Yanıp/sönme 128 Blink
Textcolor(0)=Textcolor(black)
Textbackground
Ekrana yazdırılacak yazının zemin rengini ayarlamak için kullanılır. Bu komut sadece Turbo/Borland Pascalda kullanılabilir. Kullanımı;
uses Crt;begin{ Siyah üzerinde yeşil karakterler}TextColor(Green);TextBackground(Black) ;WriteLn('Merhaba');{ Gri üzerinde yanıp sönen kırmızı karakterler}TextColor(LightRed+Blink);TextBackgrou nd(LightGray);WriteLn('Günaydın!');{ Mavi üzerinde sarı karakterler}TextColor(14); { Yellow = 14 }TextBackground(Blue);WriteLn('nasılsın');NormVide o; { Orijinal özellik }End.
Sound/Nosound
Sound, verilen frekanste ses üretmek için kullanılır. Nosound, sound ile üretilen sesi ortadan kaldırmak için kullanılır. Bu komutlar sadece Turbo/Borland Pascalda kullanılabilir.
uses Crt;beginSound(220);Delay(200);NoSound;end

Devamını okuyun...>>

Diğer komutlar

Diğer komutlar
Chr
Standart CHR fonksiyonu [ 0..255] arasındaki tam sayıların ASCII karşılığı olan karakteri vermektedir.
CHR fonksiyonuna, doğrudan aktarılan tam sayı sayısal ifadeleri alfabetik karaktere çeviren bu fonksiyonun yaygın kullanımlarından biri de, bilgilerin yazıcıya dökümü sırasında klavye üzerindeki komutların ya da kontrol karakterlerinin üretilmesidir. Aşağıdaki örnek programda bir yazıcıda kağıda üst üste basmak için ENTER tuşuna karşılık gelen ASCII 13 karakterini kullanmak amacıyla CHR fonksiyonundan yararlanılabilir.
Örnek:
Program Chr_Ornek;Uses LST;beginWriteln('Endüstri',Chr(13),'Mühendisliği' );Readln;end.
Concat
Bilgilerin birbirlerine eklenmelerini sağlayan, alfa sayısal fonksiyondur. Ekleme işlemleri CONCAT fonksiyonu ile veya alfa sayısal bilgiler arasına + işareti konarak sağlanır. Concat fonksiyonu ile istenilen sayıda katar birbiri ardına eklenebilir. CONCAT fonksiyonunun kullanımı aşağıdaki örnek programda verilmiştir.
Örnek:
Program Ornek_Concat;Uses Crt;{windows için Wincrt}varx1,x2,x3,x4tring[ 20] ;x5,x6:=String[ 50] ;begin clrscr;x1:='Balıkesir '; x2:='Mühendisliği';x3:='Universitesi ';x4:='Endüstri ';x5:=Concat(x1,x3,x4,x2);Writeln('4 sözcüğün CONCAT ile birleştirilmesi');Writeln(x5);x5:=x1+x3+x4+x2;Writ eln('4 sözcüğün + ile birleştirilmesi');Writeln(X5);While Not keypressed do;end

Devamını okuyun...>>