Parametrii formale și reale
Când scrieți parametrii de reținut:
- numărul de parametri formale și reale trebuie să fie la fel;
- și ordinea de tipul de parametrii actuali trebuie să se potrivească ordinea și tipul de parametrii formali corespunzători;
- ID-uri de parametrii formali și reale se pot suprapune;
- parametrii formali în limba Turbo Pascal în titlu sunt, împreună cu descrieri și să le declare în procedura secțiunea Declarații (funcția) nu este necesară;
- Parametrii formale trebuie să aibă un simplu sau tipuri definite anterior.
La transmiterea în subrutina matrice anunță tipul său anterior în descrierea secțiunea Tipuri de tip.
Tip TV = array [1..30] din întreg;
Procedura TOP (A: TM; Var B: TV; N: integer);
Două tipuri de matrice sunt descrise aici. TV - pentru o matrice unidimensională, și TM pentru matrice bidimensional. Apoi, în lista de parametri formali pentru variabilele A și B utilizând aceste tipuri definite anterior în descriere matricelor și vectorilor, respectiv.
Lista de parametrii specificați în antetul unei proceduri sau funcții, permite rutine de comunicare cu apelantul. În subprogram datele de intrare transmise prin acestea și returnează rezultatul (în cadrul procedurii). două opțiuni fundamental diferite pentru un anumit mecanism prevăzut în limbajul Turbo Pascal. și semnificativ prin referință.
Când parametrii de transmisie prin valoarea în stivă, în care alocarea memoriei este realizată în conformitate cu variabilele interne (locale) rutine alocate memorie suplimentară, care sunt copiate valorile parametrilor reale corespunzătoare. Programul de asteptare ca un argument subrutină pentru valorile parametrilor pot fi utilizate nu numai variabil, ci, de asemenea, o expresie. După finalizarea acestei subrutine de căutare memorie dedicată devine indisponibil, astfel încât parametrii de transmisie prin valoare nu poate fi utilizată în subrutine pentru a obține rezultate.
Așa cum poate fi utilizat parametri variabili tablouri și rânduri deschise, în care nu sunt specificate dimensiunile. Deschideți matrice reprezintă un parametru subrutină formală care descrie elementele de tipul de bază, dar nu și dimensiunea și determinarea frontierei sale. Elementele de indexare în acest caz începe de la zero. Limita superioară a șirului deschis este returnat funcția HIGH. O astfel de descriere este posibilă numai pentru rețea unidimensională. Pentru a deschide matrice stivă creează o copie care poate provoca o depășire de stivă.
Luați în considerare exemplul unei matrice deschise. Să presupunem că doriți să calculeze suma matrice unidimensională a elementelor.
USM Funcția (Var A: matrice de număr întreg): întreg;
În programul principal, matrice poate fi descrisă ca chiar
Var A: array [-2. 3] din întreg; Limitele actuale ale șirului nu este important. Cel mai important lucru este faptul că numărul de elemente în acest caz este de 6.
Linia deschisă poate fi stabilită printr-un tip standard și standard de tip STRING OPENSTRING folosind o directivă compilator.
Procedura ZAP (Var St. openstring; R: integer);
Procedura ZAP (Var St. string; R: integer);
Modul de compilare limba Turbo Pascal poate fi setat, în care controlul este oprit pentru o lungime coincidență parametru formal și linia reală. La transmiterea de rânduri de parametri formali mai mici vor avea aceeași lungime ca parametru de tratament; linie de transmisie mai mare este trunchiat la dimensiunea maximă a parametrului formal. Controlul este pornit doar atunci când parametrii sunt variabile trecut. pentru parametrii - valoarea lungimii nu este controlată.
Să considerăm un exemplu în care procedurile și funcțiile utilizate. Procedura de scriere, necesară în care matricea cuprinde coloanele M și N rânduri, necesare pentru a face numerele coloanelor vectoriale, toate elementele sunt sortate în ordine crescătoare sau descrescătoare și sunt numere prime. În programul principal sunt introduse toate datele de intrare este accesat procedura și ieșirile rezultatele.
Tip TMAS = array [1..100,1..100] cuvântului;
În acest exemplu, datele de intrare sunt transmise procedura: matrice bidimensională și dimensiunea sa. Matricea este trecut ca parametru la o variabilă, în cadrul procedurii nu alocă memorie pentru o copie. Rezultate: vector și dimensiunea sa este trecut în mod necesar ca parametri variabili. Verificați funcționarea unui număr prim este intern la procedura și nu este accesibilă din programul principal.
Deoarece argumentele trecut la o procedură sau o funcție. aranjate într-o stivă, în cazul transmiterii unei valori mari dimensiuni matrice, poate să apară preaplin stivă. În limba Turbo Pascal 7.0 este introdus descriptor CONST. care pot fi definite pentru parametrii subrutine formale. Argumentul care corespunde unei astfel de parametru este transmis pe link-ul, ca un descriptor Var parametru, dar procedura în sine (funcția) este interzisă pentru a atribui o nouă valoare pentru acest argument.
PROCEDURĂ <имя процедуры> (CONST <имя константы>:
FUNCȚIE <имя функции> (CONST <имя константы> :
Parametru-constantă nu poate fi transmisă ca parametru la o altă rutină.