Jump to content

[PASCAL] Informatică Clasa a X-a - Capitolul #1 (Subprograme) - Lecţia 1.2.5.3


Leventhe
 Share

Recommended Posts

1.2.5.3. Transmiterea parametrilor la apel

In ce priveste mecanismul de transmitere a parametrilor nu exista nici o diferenta intre proceduri si functii. Din acest motiv, transmiterea parametrilor se va trata unitar.

 

  • Parametrii formali sunt cei trecuti in antetul subprogramului.
  • Parametrii efectivi sunt cei trecuti la apelul subprogramului.

Asa cum am vazut, subprogramele pot lucra cu variabilele globale ale blocului care contine definitia lor. Atunci care este motivul pentru care sunt necesari parametrii?

 

Cunostintele dobandite pana in acest moment nu permit o justificare completa. Putem spune numai ca utilizarea parametrilor permite ca subprogramul sa fie scris independent de programul principal. Sa luam un exemplu: ni se cere sa scriem un subprogram care calculeaza suma a doua valori reale. Ce adunam? Pentru un program ar trebui sa adunam x cu y, iau pentru altul, m cu n.

var x,y,sum:integer;

procedure suma(a,b:integer; var s:integer);
 begin
  s:=a+b;
 end;

begin
 x:=3;
 y:=4;
 suma(x,y,sum); writeln(sum);
 suma(2,3,sum); writeln(sum);
end.

In programul anterior, procedura suma calculeaza suma a doua numere intregi. Ea este apelata de doua ori din cadrul programului principal.

 

-Parametrii formali sunt:"a,b:integer; var s: integer;";

-Pentru primul apel, parametrii efectivi sunt x,y,sum;

-Pentru al doilea apel. parametrii efectivi sunt: 2,3,sum.

 

Iata cateva reguli care trebuie respectate la apel:

  • Numarul parametrilor formali trebuie sa coincida cu numarul parametrilor efectivi. In exemplu, acest numar este 3.
  • Tipul parametrilor formali trebuie sa coincida cu tipul parametrilor efectivi sau tipul paramaetrilor efectivi sa poata fi convertit implicit catre tipul parametrilor formali, la fel ca in cazul atribuirii.

De exemplu, daca parametrii formali a si b sunt de tipul integer, nu este permis ca parametrii efectivi sa fie de alt tip (de exemplu, de tipul real).

 

Nu este obligatoriu ca numele parametrilor formali sa coincida cu numele parametrilor efectivi.

 

Nu este permis sa definim tipul parametrilor in cadrul antetului subprogramului. Tipul trebuie sa fie prefedinit sau sa fie declarat in prealabil.

 

Exemple:

type vector=array[1..9] of integer;
...
procedure test(n:integer, v: vector); {corect}
procedure test(n:integer, v:array[1..9] of integer); {incorect}

Parametrii formali sunt de doua feluri: transmisi prin valoare si transmisi prin referinta. In cazul in care acestia sunt precedati de cuvantul cheie var, se considera ca sunt transmisi prin referinta, contrar, prin valoare.

 

 

 

 

 

Copyright 2014 - Creat de Blaze / L&S Infomat pentru B-Zone.

 

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.