Funkcje w Turbo Pascalu
Funkcje. Są bardzo przydatnymi podprogramami, które mogą nas wybawić od wklepywania wielokrotnie w różnych miejscach naszego programu tego samego kodu źródłowego. Są to programiki, które mogą zrobić wszystko co zechcemy. Poniżej podaję, parę przykładów.
Funkcje to nic innego jak rozszerzone procedury. Funkcje w przeciwieństwie do procedur zwracają wartości, wyjście z funkcji QWQ odbywa się poprzez podstawienie w jej kodzie QWQ:=zwraca_wartosc;
function QWQ (A, B : Integer; C: Real) : Integer;
a jej wywołanie wygląda następująco:
wynik:=QWQ(A,B,C);
Program do obliczania największego wspólnego dzielnika:
program NWD;
var
A, B : Integer;
function NWD (A, B : Integer) : Integer;
{ Funkcja oblicza najwiekszy wspolny podzielnik liczb }
{ A i B. }
Pom : Integer;
begin
while (A<>B) do
if A < B then
Pom := A; A := B; B := Pom;
end;
A := A - B;
NWD := A;
end; {-------------------------- NWD -}
write ('Podaj A: '); readln (A);
write ('Podaj B: '); readln (B);
write ('NWD (', A, ', ',', B, ') ')= ')=', NWD (A, B));
readln;
end.
Następnym przykładem nich będzie sposób obliczania potęgi(naturalnej) liczby całkowitej:
program potega_rekurencja;
A : Integer;
N : Byte;
function PotegaCalkowita (A: Integer; N : Byte) : Integer;
{ Funkcja oblicza N-ta potege liczby A, dla calkowitego A }
{ i naturalnego N. }
if N=0 then
PotegaCalkowita := 1
else
if (N mod 2 = 0) then
PotegaCalkowita := Sqr (PotegaCalkowita (A, N div 2))
PotegaCalkowita := A * Sqr (PotegaCalkowita (A, N div 2))
end; {----------------------------------- PotegaCalowita -}
write ('Podaj liczbe: '); readln (A);
write ('Podaj wykladnik: '); readln (N);
writeln (A, '^', N, ' = ', PotegaCalkowita (A, N));
Wywołanie funkcji
Typ argumentu
Typ wyniku
Wartość funkcji
Abs(x)
Integer, Real
ten sam co argument
wartość bezwzględna x
Arctan(x)
Real
arcus tangens
Chr(x)
Integer
Char
znak o liczbie porządkowej x jako Char
Cos(x)
cosinus
Eof(f)
Plikowy
Boolean
True gdy wskaźnik pliku ustawiony jest na znak końca pliku, False gdy nie
Eoln(f)
Plik tekstowy
True jeśli aktualnie dostępny element pliku f jest znakiem końca pliku, False gdy nie
Exp(x)
ex
Ln(x)
logarytm naturalny dla x >0
Odd(x)
True dla x nieparzystych, False dla parzystych
Ord(x)
Porządkowy
Interger
liczba porządkowa argumentu
Pred(x)
poprzedni argument(jeśli istnieje)
Round(x)
wartość x zaokrąglona do najbliższej liczby Integer
Sin(x)
sinus
Sqr(x)
kwadrat x
Sqrt(x)
pierwiastek kwadratowy dla x>0
Succ(x)
następny argument(jeśli istnieje)
Trunc(x)
wartość argumentu odcięta do liczby całkowitej alternatywne wyjścia to: Round(x)=Trunc(x+0.5) dla x>0 Round(x)=Trunc(x-0.5) dla x<0
3
akunseth