1 / 17

Podprogramy

Podprogramy. Podprogramy. Potrzeba istnienia podprogramów Ograniczenia percepcji człowieka (5-9 obiektów, średnio 7) Programowanie zstępujące Programowanie wstępujące Podprogramy w Pascalu Procedury Funkcje. Procedury. procedure nazwa(lista_parametrów); deklaracje_etykiet;

carlow
Download Presentation

Podprogramy

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. Podprogramy

  2. Podprogramy • Potrzeba istnienia podprogramów • Ograniczenia percepcji człowieka(5-9 obiektów, średnio 7) • Programowanie zstępujące • Programowanie wstępujące • Podprogramy w Pascalu • Procedury • Funkcje

  3. Procedury procedure nazwa(lista_parametrów); deklaracje_etykiet; deklaracje_stałych; deklaracje_typów; deklaracje_zmiennych; deklaracje_podprogramów; begin instrukcja_1; instrukcja_2; ... instrukcja_ostatnia end;

  4. Procedury • Zmienne lokalne • Lista argumentów (może być pusta) • Parametry formalne • Parametry aktualne • Zakres widoczności identyfikatorów • Zmienne globalne • Zmienne lokalne • Zmienne nielokalne

  5. program przyk_proc; var i: integer; { zmienne globalne } s: string; procedure pisz; { pisze 40 gwiazdek } var i: integer; { zmienna lokalna procedury } begin write(s); { dotyczy globalnej zmiennej s } for i:=1 to 40 do { dotyczy lokalnej zmiennej i } write(’*’); writeln end; begin s:=’Gwiazdki: ’; for i:=1 to 10 do { dotyczy globalnej zmiennej i } pisz; end.

  6. Procedury • Jak to działa? • Co znajduje się na stosie?

  7. Przez wartość program przyk5; var i: integer; procedure test5(k:integer); begin k:=k+1; writeln(k) end; begin i:=10; test5(i); { 11 } writeln(’Po teście: ’,i); { 11 } end. Przez zmienną ( var) program przyk6; var i: integer; procedure test6(vark:integer); begin k:=k+1; writeln(k) end; begin i:=10; test6(i); { 11 } writeln(’Po teście: ’,i); { 10 } end. Przekazywanie argumentów

  8. Funkcje • Podprogramy zwracające wartość (w Pascalu następujących typów): • typów porządkowych, • typu rzeczywistego, • łańcuchów, • wskaźników. function nazwa(argumenty): typ_wyniku;

  9. Funkcje • Jak zwrócić wynik? program przyk7; function razy3(k:integer):integer; begin razy3:=3*k end; begin writeln(razy3(5)); end.

  10. Przykład • Dana jest funkcja f1(x):real. Napisać (zaimplementować) funkcję calk1(x0,x1:real):real, która wyznacza przybliżoną wartość całki oznaczonej fukcji f1(x) w przedziale od x0 do x1 metodą prostokątów.

  11. Przykład • Napisać funkcję, której argumentem jest łańcuch, zwracającą oryginalny łańcuch uzupełniony o spacje wstawione między każdą parę sąsiadujących znaków (’Ala ma kota’ -> ’A l a m a k o t a’).

  12. Przykład • Napisać funkcję, która sprawdza, czy podana jako argument liczba całkowita jest liczbą pierwszą, czy nie (wynik powinien być typu boolean).

  13. Przekazywanie argumentów do programu var i: Word; begin for i := 1 to ParamCount do WriteLn(ParamStr(i)); end.

  14. Rekurencja • Silnia: n! = n * (n-1) * (n-2) * … * 2 * 1 function silnia(n : integer) : integer; begin if n=0 then silnia := 1 else silnia := n * silnia(n-1); end;

  15. Rekurencja • Ciąg Fibonacciego: Fib(1) = 1; Fib(2) = 1; Fib(n) = Fib(n-1) * Fib(n-2) function fib(n : integer) : integer; begin if n=1 or n=2 then fib := 1 else fib := fib(n-1) * fib(n-2); end;

  16. Rekurencja • Warunek końca rekurencji • słowo kluczowe forward • rozmiar stosu • kiedy nie stosować rekurencji?

  17. Przykład • Napisać funkcję, która wygeneruje wszystkie permutacje przekazanej tablicy znaków.

More Related