Program Test;
Var z,y:integer;
Procedure Pro (a:integer; Var b:integer);
Begin
A:=a+1; b:=b+3; End;
Begin
X:=5; y:=3;
Pro(x,y); writeln(x, ` `, y); end.
a) Ce va afișa programul ?
b) Care sunt parametrii formali valoare ____ , parametri formali variabilă _____, parametri actuali ______
Răspunsuri la întrebare
Răspuns:
Explicație:
parametrii formali sunt în antetul unui subprogram, la tine sun aici:
Procedure Pro (a:integer; Var b:integer);
b) a se numeşte parametru valoare, iar b este parametru variabilă (are în faţă cuvântul-cheie var)
c) Parametrii actuali sunt în apelul subprogramului, în programul tău apelul subprogramului Pro se află în partea executabilă a programului şi este:
Pro(x,y); şi deci parametrii actuali sunt x şi y.
a) concretizări: parametrul formal valoarea primeşte valoare la apel şi dacă în subrogram se modifică valoarea, ea nu va fi trimisă în programul principal, dar orice schimbare a parametrului formal variabilă va trimite în blocul apelant valoarea schimbată.
Acum ce va afişa programul:
Se execută instrucţiunile părţii executabile a programului principal:
Begin
X:=5; y:=3;
Pro(x,y); writeln(x, ` `, y);
end.
Deci x ia valoarea 5, iar z devine 3. Se apelează procedura Pro. x trimite valoarea parametrului a, iar y trimite valoarea sa parametrului formal variabila b. Deci a=5, b=3, după transmiterea valorilor. În procedură se execută două instzrucţiuni A:=a+1; b:=b+3;
Deci a:=a+1=5+1=6, iar b:=b+3=3+3=6. parametrul b, fiind parametru formal variabilă întoarce parametrului actual apelant valoarea sa, deci y va obţine valoarea 6. Procedura şi-a încheiat activitatea, deci se revine în programul principal şi se execută următoarea instrucţiune writeln(x, ` `, y);
Deci se afişează valorile 5 6. Asta e răspunsul la puncrul a)