Parametrii formale și reale în turbo 7 pascal

10.3. Parametrii formale și reale

Funcția Max (A: arrayt1..100] Real): Real;

Pentru a înregistra în mod corespunzător titlul, ar trebui să fie în programul principal, introduceți tipul de matrice, și apoi să-l utilizați în titlu:







tip Tarr = arrayt1..100] Real; Max funcționează (A: Tarr): Real;

Când apelați un subrutina parametrii formali se înlocuiesc cu programul de apelare efectivă corespunzătoare sau subprogram.

10.3.1. valorile parametrilor

Parametrii de valoare sunt trecute la rutina principală a programului din stiva sub formă de exemplare și, în consecință, propria lor subrutina program de opțiune nu se poate schimba.

Valoarea parametrului specificat în antetul subrutina numele dvs. și un colon - tip. Tipul de valorile parametrilor poate fi orice, cu excepția fișierului.

Dacă parametrul-valorile unui număr de tipuri, ele pot fi combinate în grup bine od plasarea numele lor separate prin virgulă și apoi specificați tipul general așa cum sa menționat mai sus, grupurile de parametri individuali sunt separate prin punct și virgulă.

Procedura Inp (Max, Min: Real; N: Word);
funcționa Mult (X, Y: Integer): Real;

Într-un valori ale parametrilor reale în locul parametrului când un apel subrutina poate fi orice expresie compatibil pentru a atribui un tip (a se vedea secțiunea 9.3 ..) Nu conține fișierul component, de exemplu:

Inp (Abs (Z), -Abs (T), 2 * K);
M: = Mult (X + Y, X - Y);
MA: = Max (B, 5);

Exemplu. Funcția calcularea elementului maxim în matrice. Lăsați principal matrice tip de program definit, o matrice de acest tip și o variabilă de tip întreg

tip
Tarr = array [1..100] de Integer;
var
Massiv: Tarr;
Maxim: Integer;

Funcția în acest caz, poate fi:

Max funcționa (Mas: Tarr; N: Byte): Integer;
var Ma: Integer;
I: Byte;
începe
Ma: = Mas [l];
pentru i: = 2 până la N do
în cazul în care Ma

Trebuie avut în vedere faptul că subprogramul poate lucra numai cu matrici de Tarr. Pentru alte tipuri de matrice va trebui să creeze o altă rutină similară. Mai mult decât atât, atunci când stiva subrutina creează o copie a șirului original, care reduce viteza de umplere și informații excesive stivă.

10.3.2. parametrii variabili

parametru variabil este specificat în antetul subrutina este similar cu valorile parametrilor, dar numai în fața numelui parametrului este scris var cuvinte cheie. Cuvintele de acțiune se aplică var la cel mai apropiat punct la punct, adică. E. În cadrul aceluiași grup.

Procedura MaxMin (A: Tarr; var Max, Min: Real; N: Word);

Aici, Max, Min - parametrii variabili, A și N - valori ale parametrilor.

Parametrii variabili de tip poate fi orice, inclusiv un fișier.

Într-un apel la subrutină variabilă parametru locație ca parametru de tip variabilă identică reală trebuie utilizată (vezi. F. 9.1). Astfel, dacă parametrul formală este un tip definit după cum urmează:

tip Tarr = array [1..100] de Integer;

și parametrul real trebuie să fie o variabilă sau o constantă dactilografiat de tip Tarr.

Exemplu. Funcția calcularea elementului maxim în matrice. Modificăm subrutină cerere Exemplul 10.3.1, folosind parametrul variabil ca prim parametru .:







Funcția Max (var Mas: Tarr; N: Byte): Integer;
var Ma: Integer;
I: Byte;
începe
Ma: = Mas [l];
pentru i: = 2 până la N do
în cazul în care Ma

10.3.3. Parametrii sunt constante

Parametrul este o constantă specificată în antetul subrutina este similar cu parametrii de valoare, dar înainte de numele parametrului este scris cuvântul cheie const. Cuvinte de acțiune const se aplică la cel mai apropiat punct la punct, adică. E. În cadrul aceluiași grup.

Funcția newstring (const S: string): string;

Tipul de valorile parametrilor poate fi orice, cu excepția fișierului.

Într-un apel la subrutină variabilă parametru locație ca parametru real poate fi orice expresie compatibil pentru a atribui un tip (a se vedea. F. 9.3), care conține nici o componentă de fișier.

Parametru-constantă nu poate fi transferat într-un alt subrutina ca parametru real.

Exemplu. Funcția calcularea elementului maxim în matrice. . Exemplul 10.3.1, folosind n ca primul parametru de setare constantă:

Funcția Max (const Mas: Tarr; N: Byte): Integer;
var Ma: Integer;
I: Byte;
începe
Ma: = Mas [l];
pentru i: = 2 până la N do
în cazul în care Ma

10.3.4. Parametrii fără tip

În Turbo Pascal, puteți utiliza parametrii de variabile și parametri constante fără a specifica tipul. În acest caz, parametrul variabil real poate fi de orice tip, precum și responsabilitatea pentru corectitudinea utilizării unui parametru este atribuit programator.

Funcția Egal (var Paraml, param2; Len: Word): Boolean;

Acolo param1, param2 --variables fără tip (poate fi utilizat în schimb, de exemplu, orice variabile de tip simplu, inregistrare-tip matrice de tip, etc ...); Len - valoarea parametrului.

Trebuie amintit că parametrul fără tip intra are rutine, iar înainte de utilizare trebuie să fie convertit într-un tip specific prin aplicarea identificatorul tipului corespunzător așa cum este indicat în Sec. 9.4, rezultatul poate fi de orice dimensiune.

Exemplu. Funcția calcularea elementului maxim în matrice. Să considerăm un alt exemplu de realizare n subrutină 10.3.1, folosind ca prim parametru un parametru variabil netipizat .:

Funcția Max (var Mas; N: Byte): Integer;
tip
tArray = array [1..Maxint] de Integer;

var Ma: Integer;
I: Byte;
începe
Ma: = tArray (Mas) [1];
pentru i: = 2 până la N do
în cazul în care Ma

10.3.5. Arrays și linia deschisă

In versiunea 7.0 pot fi adăugate ca parametri variabili pentru a utiliza matrice 1 și o linie deschisă ale cărei dimensiuni nu sunt specificate. Într-un parametru real, în acest caz, este posibil să se utilizeze o matrice sau un șir de orice zmera PA-1, dar matricea trebuie să constea din aceleași componente ca și matrice deschis componentelor j. Astfel de parametri sunt introduse la subrutina MO] SFA string mâner sau matrice de orice dimensiune. Dimensiunea reală a matrice în acest caz, poate fi determinată prin funcția de mare (a se vedea, j p. 16.1). Deschideți matrice este definit ca o matrice regulate, dar fără a specifica tipul indicelui. Trebuie avut în vedere faptul că indexarea este o matrice deschisă începe întotdeauna la zero, iar valoarea maximă a elementului index este funcția de mare.

Exemplu. Funcția calcularea elementului maxim în matrice. Să considerăm subrutina exemplu de realizare n 10.3.1, folosind ca parametru matrice trecut este deschis .:

Funcția Max (var Mas: matrice de Integer): Integer;
var Ma: Integer;
I: Byte;
începe
Ma: = Mas [0];
pentru i: = 1 la High (Mas) do
în cazul în care Ma

10.3.6. Parametrii procedurilor și parametrii funcției

Pass parametri pot fi, de asemenea, o procedură sau funcție de stabilire a parametrilor, adică. E. Setare tip procedură. De fapt, această opțiune este un parametru de valoare, t. Pentru a. Fi scris fără cuvântul rezervat var.

Într-un parametru real este utilizat în acest caz, o procedură adecvată sau o funcție care are numărul necesar tipurilor necesare de parametri.

Pentru parametrii, procedurile și parametrii funcțiilor, sunt aceleași reguli ca și pentru alte variabile ale unui tip de procedură: rutine trebuie să fie compilate cu cheia

Exemplu. Programul, adăugarea de masă de imprimare și înmulțirea a două numere întregi în intervalul dat.

Programul EXAMPLE15;
tip
FUNC = funcție (X, Y: Integer): Integer;
($ F +)
Funcția Add (X, Y: Integer): Integer;
începe
Se adaugă: = X + Y
se încheie;
functioneaza Multiply (X, Y: Integer): Integer;
începe
Multiply: = X * Y
se încheie;

Procedura PrintTable (A, B: Integer; Operation: Func);

var
i, j: Integer;
începe
pentru i: = 1 până la A do
începe
pentru j: = 1 să facă în
Write (Operation (i, j): 5);
WriteLn
se încheie;
WriteLn
se încheie;

începe
PrintTable (10, 10, Add);
PrintTable (10, 10, Înmulțire)
end.