Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Podprogramy
2
Podprogramy Potrzeba istnienia podprogramów Podprogramy w Pascalu
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 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; 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
Przekazywanie argumentów
Przez wartość program przyk5; var i: integer; procedure test5(k:integer); begin k:=k+1; writeln(k) end; i:=10; test5(i); { 11 } writeln(’Po teście: ’,i); { 11 } end. Przez zmienną ( var ) program przyk6; var i: integer; procedure test6(var k:integer); begin k:=k+1; writeln(k) end; i:=10; test6(i); { 11 } writeln(’Po teście: ’,i); { 10 } end.
8
function nazwa(argumenty): typ_wyniku;
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; 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: function fib(n : integer) : integer;
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.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.