Arrays în parametrii de proceduri și funcții - Life-prog

Arrays, ca și alte tipuri de date, pot acționa ca parametri pentru proceduri și funcții. Iată cum poate arăta funcția care calculează valoarea medie într-o serie de numere reale:







const max = 63; tip TStatistics = array [0..max] de Double; Funcția medie (const A: TStatistics): Double; var I: Integer; începe Rezultat: = 0; pentru I: = Scăzut (A) la Înalt (A) nu Rezultat: = Rezultat + A [I]; Rezultat: = Rezultat / (Ridicat (A) - Scăzut (A) + 1);

Funcția Mediu ia ca argument un șir de dimensiuni cunoscute. Cerința unei mărimi fixe pentru un parametru de matrice este adesea un factor care restrânge. Procedura pentru găsirea valorii medii ar trebui să poată lucra cu matrice de lungime arbitrară. În acest scop, matricele de parametri deschise sunt introduse în limba Delphi. Astfel de matrice au fost împrumutate de dezvoltatorii limbii Delphi de la Modula-2.

1. Un parametru array deschis este descris cu ajutorul matricei de expresii. în timp ce limitele matricei sunt omise:

Funcția medie (const A: matrice de Double): Double; var I: Integer; începe Rezultat: = 0; pentru I: = Scăzut (A) la Înalt (A) nu Rezultat: = Rezultat + A [I]; Rezultat: = Rezultat / (Ridicat (A) - Scăzut (A) + 1);







2. În interiorul subrutinei Medie, limita inferioară a matricei deschise A este zero (Low (A) = 0), dar valoarea limitei superioare (High (A)) este necunoscută și se găsește doar la etapa de execuție a programului.

3. Există doar două moduri de a utiliza matrice deschise. accesul la elementele matricei și transferul matricei la o altă subrutină care acceptă o matrice deschisă. Nu puteți aloca o matrice deschisă alteia, deoarece dimensiunile lor nu sunt cunoscute în prealabil.

Iată un exemplu de utilizare a funcției Mediu:

var Statistici: matrice [1..10] din Double; Media: dublu, începeți. Media: = medie (statistică); Media: = medie ([0, aleatoriu, 1]); se încheie;

4. În a doua declarație, o matrice deschisă este construită în momentul în care se numește funcția medie. Constructorul unei matrice deschise este o listă de expresii încadrată. Constantele, variabilele și funcțiile pot fi folosite în expresii. Tipul de expresii trebuie să fie compatibil cu tipul de elemente de matrice. Construcția unei matrice deschise este echivalentă cu crearea și inițializarea unei variabile temporare.

5. Matricele deschise pot fi trecute la subrutine doar prin valoare sau ca parametri-constante.

6. Unele rutine de bibliotecă ale limbajului Delphi iau parametri de tipul matricei de constante const - deschise de constante. O matrice trecută, deoarece un astfel de parametru este construit în mod necesar la momentul apelului subrutinei și poate fi alcătuit din elemente de diferite tipuri (!). Din punct de vedere fizic, este alcătuit din înregistrări precum TVarRec. care codifică tipul și valoarea elementelor de matrice (intrările sunt discutate mai jos). O matrice deschisă de constante vă permite să emulați subrutine cu un număr variabil de diferite tipuri de parametri și este folosit, de exemplu, în funcția Format pentru a formata un șir.







Articole similare

Trimiteți-le prietenilor: