Parametry (czyli dane przekazane do funkcji) są widoczne wewnątrz niej pod odpowiednimi nazwami (takimi, jakie zadeklarowaliśmy w nagłówku funkcji) i można na nich operować, tak jak na zmiennych danego typu.
Do funkcji odwołujemy się poprzez jej nazwę i dane (czyli parametry aktualne) podane w nawiasach i oddzielone przecinkami.
C ■ I C Z E
3.47
Posłużymy się tekstem programu z ćwiczenia 3.37 (czyli rozwiązaniem iteracyjnym).
program cw3_47;
{ Program oblicza N! za pomocą funkcji Silnia. }
{ Katalog r3_10 : 3_47.pas }
var
N : Byte;
function Silnia (N : Byte) : Longint;
{ Funkcja oblicza silnie liczby N. } var
I : Byte;
Wartość ; Longint;
begin
Wartość 1; for I :- 1 to N do
Wartość Wartość * I;
Silnia Wartość;
end; {-------------------- Silnia -} begin
Write ('Podaj liczbę: '); Readln (N); Writeln (N. '! - Silnia(N)); Readln; end.
Jak widać, do napisanej już funkcji możemy się odwołać tak, jak do standardowej. Komentarz po słowie end funkcji (ten z jej nazwą) wstawiłem tylko po to, żeby optycznie funkcję wyróżnić — pomaga to w poruszaniu się po tekstach większych programów. To moja metoda. Możesz ją przejąć, jeśli metodę uznasz za pomocną, ale nic się nie stanie, jeżeli ją zignorujesz.
Pojawia się pytanie: dlaczego w funkcji Silnia deklarujemy dodatkową zmienną Wartość, a nie posługujemy się Silnia, tak jak wcześniej? To jeden z często popełnianych przez początkujących błędów. Co oznaczałby zapis Silnia := Silnia * I w pętli for? Silnia już nie jest zmienną, jest funkcją, która ma swoje parametry. Taki więc zapis nie ma sensu. Jeżeli odwołujemy się do Silnia, odwołujemy się do funkcji [de facto znowu zaczynamy liczyć jej wartość), musimy więc podać jej parametry. Czyli na przykład można by zapisać Silnia (5) * I. A to już nie ma sensu. Dlatego tworzymy dodatkową zmienną, która przechowuje obliczenia, a na koniec nadajemy za jej pomocą wartość funkcji. Niebawem poznasz możliwość użycia funkcji w niej samej (czy przypomniało Ci się pojęcie rekuren-cji? — jak tak, to dobrze). Odbędzie się to jednak w innym kontekście i w inny sposób.