Wykład 30.11.2011
Definiowanie typu tablicowego
TYPE Identyfikator_typu1 = array [idP..idK] of typ; Identyfikator_typu2= Array [id1p..id1k, …, idNp..idNk] of typ; |
---|
Przykład
Type tablica = array [1..10] of real;
Str20=string[20];
Nazwisko=string[25];
Var tab:tablica;
Napis: str20;
Podprogramy:
Podział programu na tzw. Podprogramy umożliwia:
- zwiększenie czytelności redagowanego tekstu programu
- skrócenie implementacji programu
- łatwiejszą modyfikację implementacji programu
- mniejsze ryzyko ‘wprowadzenia’ błędu w programie
Dostępne są dwa rodzaje podprogramów: procedura i funkcja
Podprogramy do komunikacji z blokiem głównym programu lub innymi podprogramami wykorzystuje tzw. Parametry
Podporgramy – procedura
Definiowanie procedury:
Procedure identyfikator (lista_parametrów_formalnych); { - definicje i deklaracje – stałe, zmienne itp. -} Begin …. End; |
---|
Gdzie
Identyfikator –nazwa definiowanego podprogramu
Lista_parametrów_formalnych – oddzielone średnikami deklaracje parametrów programów np.:
Procedure Obliczenia (tab: tablica; var max: real);
Podprogramy – funkcja
Definiowanie funkcji:
Function identyfikator (lista_p_f) : typ_wartości; { - definicje i deklaracje – stałe, zmienne itp. -} Begin …. Identyfikator := wyrażenie End; |
---|
Np.: Function Srednia (suma: word; n:byte):real;
Parametry podprogramów
Parametrem podporgramu (procedury lub funkcji) może być wartością typu:
- prostego np.: byte, char, boolean, real¸tydzień, weekend
- złżonego (np: tablicowy, napisowy, rekordowy) np: stan_konta, str20, string
WYJAŚNIENIE – typy danych zdefiniowane w programie
Wartością funkcji może być typ:
- prosty np.: byte, char, boolean, real, dzień_tyg, weekend
- napisowy np.: string, str45
Przykłąd
Function Srednia (t: tablica; n: word):real;
Function Najcieplejszy_dzien (t:Ttemp): byte;
Function Najkrótsze_nazwisko (t:Tnazwiska): str35;
Przyklady podprogramów:
Zad: Napisać program, który dla danych Xi N obliczy wartość x^n
Program Podprogramy1; Var x, n, i: byte; Pom, wynik: longint; Procedure Wprowadz_dane; [definicje podprogramów] Begin Write (‘Wprowadź X:’); Readln (X); Write (‘Wprowadź Y:’); Readln (Y); End; Function Obliczenia (a,p:byte): longint; [definicje podprogramów] Begin Pom :=1; For i:=1 to p do Pom := pom*a; Obliczenia :=pom End; Begin Wprowadź_dane; [wywołanie podprogramu] Wynik :=Obliczenia (X,N); [wywołanie podprogramu] Writeln (‘Wynik=’, wynik); Writeln (‘Wynik=’, Obliczenia (4,3)) [wywołanie podprogramu] End. |
---|
Parametry formalne i aktualne
Parametrem formalnym nazywa się parametr wpisany w nagłówek definicji podprogramu (procedury lub funkcji)
Przykład:
Procedure Nazwa_PROC (p1: byte; var p2:word);
Function Nazwa_FUN (p1, p2: byte; p3:word):word;
Parametr aktualny nazywa się parameter wpisany jako argument w wyłowywaniu podprogramów. Parametrem aktualnym może być: stała, zmienna, wyrażenia, funkcja.
Przykład:
Nazwa_PROC (liczba, kwadrat_liczby);
X:=Nazwa_FUN (12, ZM, X+Y+1);
Przekazywanie parametrów
Przekazywanie parametrów przez wartość (p. wejściowy)
Jeżeli parametrem aktualnym jest zmienna, której w treści podprogramu zostanie przypisana nawa wartość, to po opuszczeniu podprogramu wartość zmiennej nie ulegnie zmianie (będzie taka sam jak przed wywołanie podprogramu)
Procedure PROC (par: byte); Begin Par :=25; End; … {wywołanie procedury w programie} Zm :=10; PROC (zm); {dobrze: 10, zm+x+1} {zm=10} … |
---|
Przekazywanie parametrów przez zmienną (p. wyjściowy lub wejściowo-wyjściowy)
Jeśli parametr formalny jest poprzedzony słowem VAR, to parametrem aktualnym musi być zmienna.
W tym przypadku po wykonaniu podprogramu parametr aktualny będzie miał taką wartość jak odpowiadający mu parametr formalny w momencie zakończenia podprogramu.
Procedure PROC (var par: byte); Begin Par :=25; End; … {wywołanie procedury w programie} Zm :=10; PROC (zm); {dobrze: 10, zm+x+1} {zm=10} … |
---|
Przekazywanie parametrów przez podprogram (procedurę, funkcję) – nie obowiązuje
Przekazywanie parametrów – przykłady
Definiowanie podprogramów:
Procedurę PROC (p_w: integer; var p_zm:integer); Begin {treść programu} end; Function FUN (p_w: integer; var p_zm:integer): integer; Begin {treść funkcji} end; |
---|
Przykłady wywołania podprogramów:
PROC (2,4) źle
PROC (2,Y) dobrze
PROC (X,4) źle
PROC(X,Y) dobrze
PROC(X+1,Y) dobrze
PROC(X, Y+1) źle
..analogincznie dla funkcji FUN