Presentation is loading. Please wait.

Presentation is loading. Please wait.

تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86

Similar presentations


Presentation on theme: "تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86"— Presentation transcript:

1 تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تابع و رویه 1 تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86

2 مروری بر مطالب تاکنون یک برنامه به دستورات پاسکال شکسته می شود.
طراحی برنامه دشوار است زیرا کوچکترین واحد دستوری، دستورات پاسکال است. اگر برنامه را بتوانیم به ساختاری اجرایی با هدف مشخص بشکنیم، طراحی و پیاده سازی راحت تر خواهد شد. طراحی مدولار ، طراحی از بالا به پایین است.

3 مثال : نمايش عدد زوج به صورت جمع دو عدد اول
Var I , n : Word found : boolean; Begin Readln (n); found := false; for I := 2 to n do If ( Prime ( I ) ) and ( Prime ( n-I ) ) then begin Write(I, n-I); found := true; break; end; if not found then write (‘Not found’); End.

4 مثال : نمايش عدد… کافی است prime را یکبار بنویسیم و چندین بار استفاده کنیم. مجموعه ای از دستورات را نام prime فراخوانی می کنیم. ورودی (پارامتر) را به صورت آرگمان دریافت می کند. کد برنامه ساده تر و قابل فهم تر می شود

5 تعریف تابع Function نام تابع ( متغير : نوع ; … ) : نوع خروجی ; Var
تعريف متغيرها ; متغير کمکی : نوع خروجی ; Begin . . . انجام محاسبات با متغير کمکی ; نام تابع := متغير کمکی ; End;

6 رویه رویه خروجی ندارد! Procedure نام رویه ( متغير : نوع ; … ) ; Var
تعريف متغيرها ; Begin چند دستور ; End;

7 فرق تابع و رویه تابع دارای خروجی است. حال آنکه رویه خروجی ندارد.
عملياتهای محاسباتی، انتساب (مقداردهی)، مقايسه ای و چاپ در خروجی، فقط برای توابع معتبرند و برای رویه معنا ندارند. به عنوان مثال اگر F تابعی با ورودی Real و خروجی Integer و a هم متغيری Integer باشد، عملياتهای زير معتبرند : a := F (2.5) + 3; Write ( F (1.7) ); If F ( 1.3 ) > F ( 7.4 ) Then a := F (5.4);

8 پیاده سازی تابع prime Function Prime ( m : Word ) : Boolean; Var
b : Boolean; I : Integer; Begin b := True; for i := 2 to Trunc ( sqrt (m) ) Do If n mod I = 0 Then b := false; Prime := b; End; متغیر داخلی نوع ورودی نوع خروجی

9 نگاشت متغیرها هنگامی که نام آرگمان m باشد: l n l=1 l=2 l=3
found l=1 n=10 found =false m=1 l=2 n=10 found =false m=2 m=8 l=3 n=10 found =false m=3 m-=7 فضای حافظه Heap

10 انواع متغیرها متغیر جهانی (global) متغیر محلی (local)
متغیرهایی هستند که در برنامه اصلی تعریف می شوند. در سرتاسر برنامه از جمله بدنه تابع ها و رویه ها قابل دسترسی هستند. متغیر محلی (local) متغیرهایی هستند که در رویه ها و تابع ها تعریف می شوند و فقط در بدنة آن تابع یا رویه قابل استفاده هستند. در صورت وجود هم نامی بین متغیرهای محلی و جهانی ، تابع یا رویه به متغیرهای محلی رجوع می کند.

11 انواع متغیرها (ادامه) var x : integer; y : boolean;
function test : boolean; var x,y:Integer; begin x := 100; if y than writeln(x); test := true; end; x:= 200; test; writeln(x); end.

12 انواع متغیرها (ادامه) آرگمان متغیر محلی محسوب می شود:
هنگامی که نام آرگمان n باشد: l n found l=1 n=10 found =false n=1 l=2 n=10 found =false n=2 n=8 l=3 n=10 found =false n=3 n-=7 فضای حافظه Heap

13 مثال : محاسبه توان Function Power ( x : Real ; n : Integer ) : Real;
Var p : Real; I : Integer; Begin p := 1; For i := 1 To abs (n) Do p := p * x ; if n <0 then p := 1/p; Power := p; End; a : Real ; b : Integer; Readln (a , b); Writeln ( Power (a , b) ); End.

14 مثال :کرم Begin EOG := true ; LEVEL:=1 ; While EOG do
INIT_Wall(Level); INIT_foods ; INIT_putworm; If Game then LEVEL:=LEVEL+1 else EOG := false; End ;

15 مثال :کرم (ادامه) Procedure INIT_Wall(l:Integer); x,y : integer;
مثال :کرم (ادامه) Procedure INIT_Wall(l:Integer); x,y : integer; dir : byte; … Begin x := random(79)+1; y := random(24)+1; for i:= 1 to l*10 do begin d := random(3); case d of 0 : y:=y-1; …. if y=0 then y:=25 else if y:=26 then y:=1 ; ground[x][y]:=true ; end; End; To

16 مثال :کرم (ادامه) چناچه ملاحظه می شود برنامه به صورت مدولار از بالا به پایین طراحی می شود: Program INIT_Wall INIT_foods INIT_foods Game

17 مثال :کرم (ادامه) Function Game:boolean; Var … Begin gameover:= false;
مثال :کرم (ادامه) Function Game:boolean; Var Begin gameover:= false; while not gameover do begin Move(get_dir); if food[wx,wy] >0 then grow(food[wx,wy]); else ... end; Game := gameover; End.


Download ppt "تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86"

Similar presentations


Ads by Google