Pai eu cand faceam Pascal gandeam asa:
Procedurile fac ceva, afiseaza, deseneaza, citesc valori de la tastatura pe care apoi le folosesc dar nu am de unde sa stiu ce valori au variabilele din interiorul functiilor. De exemplu, daca am o procedura care doar citeste doua numere de la tastatura si atat, e cam inutila, in schimb as putea face o functie care sa citeasca numele si prenumele de la tastatura apoi sa-l afiseze:
procedure afiseaza(nume: String; prenume: String);
begin
writeln('Care este numele tau? ');
read(nume);
writeln('Care este prenumele tau?');
read(prenume);
writeln('Deci te numesti ', prenume, nume, ' ?');
end;
nume si
prenume sunt parametrii proceduri insotiti de tipul lor. O procedura poate avea sau nu parametrii, dupa caz.
Daca vrei sa folosesti asta intr-un program:
program proceduranume;
var num, prenum: String;
procedure afiseaza(nume: String; prenume: String; );
begin
writeln('Care este numele tau? ');
read(nume);
writeln('Care este prenumele tau?');
read(prenume);
writeln('Deci te numesti ', prenume, nume, ' ?');
end;
begin
afiseaza(num, prenum);
end.
Daca am declarat procedura cu parametrii, automat va trebui sa o apelam tot cu parametrii

.
Functiile in schimb returneaza o valoare, le poti folosii in expresii matematice spre exemplu. Hai sa luam o functie care ne ajuta sa rezolvam o ecuatie de gradul II:
function Delta(b, a, c:Real): Real;
begin
Delta := b^2 - 4*a*c;
end;
Ok, aici avem o functie cu 3 parametrii de tip Real, iar tipul functiei este declarat tot Real. Cand spunem ca functia este de tip Real inseamna ca returneaza o valoare reala! Nu trebuie ignorat.
Ok, am calculat delta, programul arata cam asa:
program ecuatiegraddoi;
var a, b, c, x1, x2: Real;
function Delta(b, a, c:Real): Real;
begin
Delta := b^2 - 4*a*c;
end;
begin
writeln('Introduceti a: ');
read(a);
writeln('Introduceti b: ');
read(b);
writeln('Introduceti c: ');
read(c);
x1 := (-b + sqrt(Delta(a, b, c)))/2*a;
x2 := (-b - sqrt(Delta(a, b, c)))/2*a;
writeln('x1 = ', x1,' iar x2 = ', x2);
end.
Sper ca nu am gresit ceva, nu am compilator de Pascal acum sa testez...