120 likes | 276 Views
PASCAL’da. Procedure ve Function. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN. Modüler Programlama. Program modülleri : Procedur ve Function.
E N D
PASCAL’da Procedure ve Function ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Modüler Programlama Program modülleri : Procedur ve Function Modüller, tek başlarına bir iş yapan (kendi “const” ve “var”ları olan) ve ana bütünle birleşince daha çok iş yapan alt programlardır. Ana program, modüller koleksiyonu gibidir. Ana programda modüller çağrılarak iş yapılır, ancak program entegre olmalıdır. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Procedure ve Function’lar alt programlardır. Algoritma deseninde işi alt parçalara bölmek ve ana programda bunları çağırmak gerek. Procedure ve Functionlar alt algoritmalardır Bu programlar, ana program tarafından bazı işleri yaptırmak için çağırılır ve kullanılırlar (program içinde program). Bunlar da begin ile başlayıp end; ile biter. Bunlara anlamlı isimler vermelidir, çünkü gerektiğinde bu adla çağrılacaktır. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Procedure ve Function’lar alt programlardır. Ana program, bir mütahit gibi duvarcı, tesisatçı, elektriçi, sıvacı vs.yi sırası geldiğinde çağırır. Ana program İşlem 1.1 Dataları al İşlem 1 İşlem 1.2 İşlem yap İşlem 2 Top-down design: İşi alt parçalara böl, her alt parçanın programını (procedure) yaz, bunları gerektiğinde çağıran ana programı yaz. Hangi alt programın ne işe yaradığını { } arasına açıkça yaz. Çıktıyı yaz ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Procedure Pascal programları alttan başlayarak okunursa daha iyi olur. Çünkü ana program en alttadır. Procedur ve Functionlar başta yer alır. ProcA program Procedure;uses wincrt; procedure selam;begin Writeln(‘Merhaba');end;begin selam;end. ProcB Alt programlar her zaman üstte yazılır. ProcC Ana program Begin ProcA; ProcB; PorcC; End. Ana program ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Procedure’ler parametre kullanabilir Program Procedure2; uses wincrt; var x,x2: integer; procedure kare (x: integer); begin x2:=x*x; end; begin write ('Karesi alınacak sayı : '); readln (x);kare (x); write (x,' sayısının karesi : ',x2); end. Program procedure1; uses wincrt; var s:string; i:integer; procedure yaz(s: string; i: integer); begin Writeln(s); Writeln(i); end; begin writeln ('Dizi :'); read (s); write ('Sayı :'); read (i); yaz(s,i); end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Global ve lokal parametreler Local değişkenler bir procedur içinde belirlenen ve kullanılan değişkenlerdir. Başka yerde kullanılmaz. Global değişkenler bütün program boyunca geçerli olan değişkenlerdir. Bunlar procedur içinde kullanılıp üzerinde işlem yapılabilir, ancak procedur bitince ana programda geri eski değerlerini alır. Geçici değişkenleri global değil, lokal ayarlayın (“no global variables in procedures”) ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Global ve lokal parametreler Burada “var” komutunu unutursan, yukarıdaki “var” satırında global değer gibi arar. Program procedure7; uses wincrt; var a,b,gec: integer; procedure degistir (var x,y: integer); var gec: integer; begin gec:=x; x:=y; y:=gec; writeln (a:4,b:4,gec:4) end; begin a:=1; b:=2; gec:=3; writeln (a:4,b:4,gec:4); degistir (a,b); writeln (a:4,b:4,gec:4) end. • Burada çıktı • 2 3 • 1 1 • 2 1 3 şeklinde olur. • İkinci satırda “b” “a”nın, “a” da “b”nin değerini alıyor. • “Gec” değişkeni procedureden sonra global değerini geri alır. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Parametreler Value parametre Program parametre; Var say1,say2: integer; say3:real; Procedure dene (s1,s2: integer; s3:real); Procedure dene (var s1,s2: integer; s3:real); Aktüel parametre Formal parametre Variable parametre Ana program Proc Ana programdaki değişkenler Procedur içindeki işlemlerde değişik değerler alabilir, ancak ana programa döner dönmez eski değerlerini alır. Procedur içinde değer tanımlayacaksak “var” ile tanımlamalıyız. 5 5 Say1 s1 8 8 Say2 s2 2.6 2.6 Say3 s3 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Global ve lokal parametreler Burada önce ana program değerleri yazılıyor, alt program çağrılıyor, burada da önce ana program değerleri yazılıyor, sonra işlem yapılıp yeni değerler yazılıyor, sonra eski programa dönüp tekrar oranın değerleri yazılıyor. Program proc9; uses wincrt; var say1,say2: integer; say3:real; procedure sayyaz (s1,s2:integer; s3:real); begin writeln (s1:10,s2:10,s3:10:2); s1:=2*s1; s2:=2*s2;s3:=2*s3; writeln (s1:10,s2:10,s3:10:2) end; begin say1:=5; say2:=8;say3:=say1/say2; writeln (say1:10,say2:10,say3:10:2); sayyaz (say1,say2,say3); writeln (say1:10,say2:10,say3:10:2) end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
“Procedur”ler bizi yüzlerce satır kod yazmaktan ve satır numaralarına atlayan ilkel “goto” komutundan kurtarıyor. Program procedure3; uses wincrt; const oran=0.18; {kdv oranı} indir=0.20; {peşin indirimi} var fiyat,sonfiyat :real; procedure kdv (fiyat:real); begin sonfiyat:=fiyat+(fiyat*oran); end; procedure indirim (fiyat:real); begin sonfiyat:=fiyat-(fiyat*indir); end; begin writeln ('Fiyat : ');read (fiyat); kdv (fiyat); writeln ('KDVli fiyatı : ',sonfiyat:6:2); indirim (fiyat); writeln ('İndirimli fiyatı : ',sonfiyat:6:2); end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN
Otomatik para ödeme procedure bes (p5:integer); begin yb:=p5 div 5; kl:=p5 mod 5; ptek:=kl; end; begin write ('Kaç lira ödenecek : '); readln (p); yuz (p); writeln (yb:5,' yüzlük ',yb*100:8); elli (p50); writeln (yb:5,' ellilik ',yb*50:8); yirmi (p20); writeln (yb:5,' yirmilik',yb*20:8); on (p10); writeln (yb:5,' onluk ',yb*10:8); bes (p5); writeln (yb:5,' beşlik ',yb*5:8); writeln (ptek:5,' teklik ',ptek*1:8); writeln ('Toplam ',p:8); end. Program procedurcagirma; uses wincrt; var p,p50,p20,p10 ,p5,ptek,yb,bl,kl:integer; procedure yuz (p:integer); begin yb:=p div 100; kl:=p mod 100; p50:=kl; end; procedure elli (p50:integer); begin yb:=p50 div 50;kl:=p50 mod 50; p20:=kl; end; procedure yirmi (p20:integer); begin yb:=p20 div 20;kl:=p20 mod 20; p10:=kl; end; procedure on (p10:integer); begin yb:=p10 div 10;kl:=p10 mod 10; p5:=kl; end; ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN