matrice deschise - studopediya

Static (standard) tablouri

Anunțul unui vector sau o matrice unidimensională are următoarea formă generală (aici și mai jos folosim recomandarea, potrivit căreia un tip definit de utilizator structurat este declarat separat prin declararea unei variabile de acest tip):

Aici două identice matrice declarate A și B, ale cărei elemente sunt de tip Integer, și o matrice arrStudent, baza de tip TarrStudent, a anunțat în subsecțiunea 5.2. Numărul de elemente din fiecare matrice A și B este de 13, matrice 101 cuprinde elementul arrStudent. O serie de caractere S - este de fapt un șir poate fi tratat ca un șir de caractere.

În acest exemplu, indici au fost limitate de un anumit tip. Deci, de multe ori cazul, dar nu neapărat. orice tipuri limitate sau enumerate pot fi utilizate pentru index de matrice. Puteți defini o matrice arrColor urmează:

Culoare = (Rosu, Verde, Albastru);

Acum putem aplica, de exemplu, la al doilea membru al unui vector ca arrColor arrColor [Verde].

Nu este interzis să ceară un indice de caracter.

Structura fizică a vectorului este reprezentată în secvența identică de memorie ma-bus pe lungimea porțiunilor de memorie (sloturi) fiecare Koto-ryh pentru stocarea unui element de vector. De obicei, elementele vectoriale sunt aranjate în memorie în ascendent adrese rând fantele corespunzătoare. Vectorul descriptor poate cuprinde domenii, cum ar fi numele vectorului, adresa în memoria elementul său inițial-lea (t. E. Primul slot), fețele inferioare și superioare gical element de tip index și dimensiunea spațiului. Structura fizică a vectorului A, declarată mai sus este prezentată în figura 5.1.

matrice deschise - studopediya

Figura 5.1 - EXEMPLU vector structura fizică a bazei de tip Integer

Când orice indice vectorul dostupek elementuimya iar curentul este transformat într-o adresă fizică a unui canal în care se află elementul. După cum se vede din risunka5.1, lo-cal și structura fizică a vectorului coincid, ambele - secvența liniară a elementelor. Dacă structura logică a tranziției de la un element la un alt element al indicelui de secvență este schimbată cu una, atunci tranziția între elementele succesive în structura fizică, adresa este schimbată cu o valoare egală cu dimensiunea fantei tip de bază.

5.2.2 matrice statice multi-dimensionale

După cum sa menționat mai sus, vectorul - o matrice unidimensională. In toate matrice multi-dimensionale pot fi declarate limbaje de programare, de ex., E. Matricele ale cărui elemente sunt matrice. De exemplu, o matrice bidimensională poate fi declarată după cum urmează:

Același lucru poate fi declarat mai compact:

Accesul la valorile elementelor unei matrice multidimensionale este asigurată de un nume de variabilă a „matrice“ și indexurile transferate printr-o virgulă, de exemplu, X [3, 0]. Numărul care indică indicele trebuie să fie egală cu dimensiunea de matrice: pentru a avea acces la elementul de matrice M-dimensionale trebuie să specificați indicii M.

Toate elementele de matrice sunt de același tip. Spre deosebire de vector matrice tip general transforma structura logică în fizic are o formă complicată. Această conversie este efectuată de liniarizare, pe parcursul căreia structura logică matrice M-dimensional este transformat într-o structură unidimensionale INDIVIZI-ică reprezentând un ordonate liniar secventa chennuyu-sloturi. Această conversie este realizată printr-o funcție de ordonare corespunzătoare a cărui element de argument este setul ordonat de index-bufnite, iar valoarea - adresa slotul corespunzător-conductor. De exemplu, dacă o secvență de elemente similare, este tratată ca o matrice bidimensională, și limitele inferioare ale indicilor i și j sunt 0, adresa (i, j) matricea -Element se calculează folosind următoarele funcții de ordonare:

Adresa (i, j) = bază + Nrow * sizeof (Element) * i + j,

în cazul în care baza - adresa elementului inițial de matrice,

Nrow - numărul de elemente într-un rând,

Sizeof (Element) - Dimensiunea elementului în octeți fantă,

Deși structura fizică a matricei M-dimensional, cu o ordonare liniară a elementelor din memoria coincide cu structura fizică a vectorului, matrice descriptor este diferit de vectorul descriptor. În special, următoarele în formațiune poate fi conținută în matrice descriptor de domenii:

- câmp de tip structură;

- Numele câmpului de matrice, de exemplu, MATR;

- un câmp care conține o dimensiune matrice;

- adresa în matrice de memorie (de bază);

- câmp care conține o pereche de valori la limită ale indicelui-cos, numărul de câmpuri egal cu dimensiunea de matrice;

- câmp conținând speciale index multiplicatorii-li (numărul lor egală cu dimensiunea de matrice) care sunt necesare pentru a fi utilizate în funcție prin care se dispune;

- Domeniul de tipul de bază de matrice;

- câmp conține dimensiunea elementului fantă.

Pentru matrice din Delphi determinată operație de atribuire. Dacă cele două matrice A și de tip B, TarrVect identificate prin notatii date în Sec. 5.2.1, rezultatul operatorului

Valorile elementelor matricei sunt copiate elementele matrice A.

Dar dacă declarați ca matrice

atunci când încercați să alocați A: = B Delphi compilatorul va genera un mesaj de eroare de tipuri de incompatibilitate. Faptul este că compilatorul constată că variabilele au același tip numai în cazul în care acestea sunt declarate în aceeași listă sau care sunt identificate în mod clar printr-un anumit tip pe nume. Acesta este un alt argument în favoarea folosirii numelor tipurilor de variabile structurate în descrierile.

5.2.3 Proprietățile matrice statice

tablouri statice caracterizate prin următoarele proprietăți:

- structura consistenta pe parcursul întregii perioade de existență,

- elemente contiguitate și continuitate pas regiune memorie RAM retrase simultan pentru toate elementele structurii.

- simplitatea și constanței relațiilor dintre structura membru-E, care să permită să excludă informații cu privire la relația dintre zona de memorie alocată pentru structura de e-polițiști, și păstrați-l într-o formă compactă de scriptorium.

În lista de parametri, este plasat în funcțiile de antet și proceduri pot specifica matrice. Dacă rezoluția percepută de matrice este fixat în lista de parametri de tipul de seturi de parametri folosind doar identificator de tip. Object Pascal Rutinele pot lua, de asemenea, matrice, dimensiunea este necunoscut. În acest caz, numele subrutinei din titlu după înregistrare parametru matrice este specificat matrice cuvânt, și apoi un tip de bază, iar descrierea este omisă indici. De exemplu,

Astfel de matrice (ambele D și T) sunt numite matrici deschise.

Cu această definiție de matrice D și T matrice care este transmis în prima procedură InverArray ca parametru real pe stiva care urmează să fie copiat, iar copia - matrice D - Procedura va funcționa. A doua matrice deschisă (matrice T) definite ca Var. Această matrice este trecut la „link-ul“, adică. E. Nu este copiat în stivă, iar procesul va lucra cu o matrice, care a fost menționată ca un parametru real în InverArray apelului.

Array trecut ca un deschis, perceput în corpul unei proceduri sau funcții ca o matrice cu indici întregi pornind de la zero. Nu contează ce a fost declarat gama pentru indicele în matrice a trecut la subrutina ca parametru real.

articole similare