1 / 17

تابع و رویه 1

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

Download Presentation

تابع و رویه 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. تابع و رویه 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 باشد: فضای حافظه Heap

  10. انواع متغیرها • متغیر جهانی (global) • متغیرهایی هستند که در برنامه اصلی تعریف می شوند. در سرتاسر برنامه از جمله بدنه تابع ها و رویه ها قابل دسترسی هستند. • متغیر محلی (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; begin x:= 200; test; writeln(x); end.

  12. انواع متغیرها(ادامه) • آرگمان متغیر محلی محسوب می شود: • هنگامی که نام آرگمان n باشد: فضای حافظه 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; Var a : Real ; b : Integer; Begin Readln (a , b); Writeln ( Power (a , b) ); End.

  14. مثال :کرم Begin EOG := true ; LEVEL:=1 ; EOG := true ; While EOG do Begin 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; 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;

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

  17. مثال :کرم (ادامه) 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.

More Related