Procedury i funkcje

1. Do czego one służą

Procedury oraz funkcje są użytecznym elementem programowania w Pascalu i nie tylko. Dzięki nim dany fragment kodu możemy wykonać wielokrotnie nie kopiując go. Zmniejsza to wielkość tworzonego programu. Dzięki możliwości wprowadzania do procedury lub funkcji dowolnych danych, każde ich wykonanie może zwrócić inny wynik

2. Czym się różnią

Procedury są bardzo podobne do funkcji, różnica pomiędzy nimi jest główne taka, że przy deklaracji funkcji, musimy określić typ danej, która ma zostać przekazana do wykonywanego programu. W procedurach zazwyczaj takiej opcji się nie stosuję.
Oto przykładowa struktura procedury :

procedure nazwa(przekazywane-parametry);

var
{Zmienne i stale procedury}
begin
{kod wykonywany przez procedurę}
end;

A to struktura funkcji:

function nazwa(przekazywane-parametry):typ-wyniku;

var
{stałe i zmienne funkcji}

begin
{ kod funkcji }
nazwa := wynik-funkcji;
end;

3. Jak z nich korzystać

Wiesz już mniej więcej do czego można wykorzystywać funkcje. Orientujesz się także jaką mają strukturę. Stwórzmy teraz dwa programy, będą wyprowadzać taki sam wynik tzn. będą w dowolnym miejscu programu wypisywały ile jest w danej chwili wolnej pamięci.
Najpierw program oparty o procedurę:

program Procedury;

procedure pamiec;
begin
writeln('Wolnej pamieci: ', MemAvail);
end;

begin
pamiec;
end.

Po słowie kluczowym program tworzymy procedurę o nazwie pamięć. Wewnątrz jej używając funkcji wbudowanej MemAvail wypisujemy wolną pamięć. W części głównej programu wywołujemy procedurę poprzez jej nazwę.
Teraz program oparty o funkcje:

program func_tion;

var
X, Y : Integer;

function pamiec:integer;
begin
pamiec := MemAvail;
end;

begin
pamiec;
writeln('Wolnej pamięci: ', pamiec);
X := 22222; {Przypisujemy coś zmiennej }
pamiec;
writeln('Wolnej pamięci: ', pamiec);
Y := 30000; {Teraz innej }
pamiec;
writeln('Wolnej pamięci: ', pamiec);
end.

W powyższym przykładzie tworzymy funkcję która będzie zwracać wartość typu integer. Reszta jest podobna jak w w poprzednim programie. Dla przykładu tworzę przykładowe zmienne. Jeżeli masz mało RAM'u masz szansę zobaczyć różnicę pomiędzy poszczególnymi wywołaniami.