Cursul de prelegeri pe tablouri Pascal
Până în prezent, am considerat variabilele care au doar o singură valoare poate conține doar o singură valoare de un anumit tip. Singura excepție este variabilele șir care reprezintă un set de date de tip caracter, dar în acest caz este vorba despre linia ca valoare separată.
Array va fi numită o secvență ordonată de date de același tip, unite sub un singur nume. Apropo, această definiție se potrivește un set de obiecte din lumea reală: dicționar (secvență de cuvinte), desene animate (secvență de imagini) etc. Cel mai simplu mod de a imagina o matrice ca un tabel, în cazul în care fiecare valoare este în propria celulă ... Poziția celulei din tabel trebuie să fie determinată în mod unic set de coordonate (index). Cel mai simplu este un tabel liniar în care să indice cu precizie un element de date este suficient pentru a cunoaște doar un singur număr (indice). Suntem cu tine până avem de a face doar cu matrici liniare, așa cum sunt construite structuri mai complexe, bazate pe ele.
Descrierea tipului de matrice liniară arată astfel:
tip <Имя типа>= Array [<Диапазон индексов>] de <Тип элементов>;
Variabilele de orice tip de comandă pot servi ca indici. indicele de pornire nu trebuie să depășească sfârșitul anului, atunci când specificați intervalul. matrice poate fi orice tip (convențional sau descris anterior).
Descrie o variabilă array și poate fi direct (fără descriere tip prealabilă) în secțiunea care descrie variabilele:
var <Переменная-массив>. Array [<Диапазон индексов>] de <Тип элементов>;
Exemple care descriu matrice:
var
S, BB. Array [1..40] Real;
N. Array [ 'A' .. 'Z'] Din Integer;
R. Array [-20..20] Cuvântului;
T. Array [1..40] Real;
Acum variabile S, BB și T reprezintă matrici de patruzeci de numere reale; Ea are o serie de coduri de caractere N și elemente de tip întreg; R matrice poate stoca un număr de 41 Word tip.
Singura acțiune care ar putea produce o matrice cu totul - o misiune. Pentru acest exemplu, descrierea următoarea intrare este permisă atunci:
S: = BB;
Cu toate acestea, puteți atribui numai matrice de același tip. Chiar și gama de T S nu poate fi atribuit unei matrice, deși s-ar părea, descrierile lor sunt aceleași, ele sunt produse într-o varietate de înregistrări care descriu secțiune.
Nu există alte operații pe matrice produc în întregime imposibil, dar cu matrice elemente pot lucra la fel de bine ca și o simplă variabilă de tip corespunzător. Apel către elementul individual al matricei se face prin specificarea numelui întregii matrice în paranteze pătrate - indicele unui anumit element. De exemplu:
R [10] - element de matrice la index R10.
Acest aranjament cu o astfel de structură de date ca o matrice, permite utilizarea unui ciclu de umplere, imprimare și procesarea conținutului acestuia.
Dacă vă amintiți, deoarece această formă de organizare ne-am întâlnit de date atunci când a studiat variabile șir. Într-adevăr, variabilele de tipul String sunt foarte apropiate în proprietățile lor, cum ar fi matrice Char. Diferențele sunt după cum urmează: variabilele string pot fi tastate și imprimate pe ecran (cu matrice obișnuită nu este trecut); șir de lungime variabilă a fost limitată la 255 de caractere (255 B), ca și pentru dimensiunea matrice este informație volum critic de 64 KB.
Acum, uita-te la câteva modalități de a umple matrice și a afișa conținutul de pe ecran. Practic vom folosi tipurile numerice de componente, dar aceste exemple sunt valabile pentru alte tipuri (în cazul în care acestea permit acestor acțiuni).
Nu contează cât de primitiv exemplul de mai sus, aceasta ilustrează totuși capacitatea de a accesa direct fiecare element matrice separat. Cu toate acestea, nici un avantaj de matrice la câteva variabile simple, care nu sunt vizibile. Deci - un alt mod:
Acest program introduce tastatura 20 de numere întregi, iar apoi le imprimă în ordine inversă. Acum, încercați să scrie același program, dar fără utilizarea unei game largi de structuri. De câte ori va fi mai lung? Apropo, introducerea limbii parametrului ciclului Pascal sa datorat în mare măsură necesitatea de secvențe de prelucrare a informațiilor, adică. E. Arrays.
Programul următor umple o matrice cu valorile pătratelor indicilor de elemente:
În viitor, în scopuri educaționale, vom folosi matrice, definite de un generator de numere aleatoare. În Pascal generează o funcție aleatorie de numere aleatorii. numere fractionare obținute, repartizate uniform în intervalul de la 0 la 1. Expresia care dă un număr întreg aleator în intervalul [-50.50] ar fi:
Trunc (Random * 101) -50
Definim și imprima o matrice aleatoare de patruzeci de-numere întregi:
Cu matrici liniare asociate procesarea unei multitudini de sarcini. Ne vom uita la ei în clase practice.
Două-dimensionale matrice și multi-dimensionale
Imaginați-vă un tabel format din mai multe linii. Fiecare linie este formată din mai multe celule. Apoi, pentru a determina poziția exactă a celulei, trebuie să știm mai mult de un număr (ca în cazul unui tabel liniar), dar două: numărul liniei și numărul coloanei. Structura de date în Pascal pentru stocarea unui astfel de tabel este numit un tablou bidimensional. Pentru a descrie o astfel de matrice în două moduri:
I.
Var A. Array [1..20] Of Array [1..30] Din Integer;
II.
Var A. Array [1..20,1..30] Din Integer;
În ambele cazuri descrise matrice bidimensională corespunzătoare tabelului, format din 20 de rânduri și 30 de coloane. Aceste descrieri sunt echivalente.
Pentru a ilustra moduri de a lucra cu matrice bidimensionale rezolva problema, „Cere și imprima 10X10 matrice, constând din întregul număr aleator în intervalul [1100] Găsiți suma elementelor situate deasupra diagonalei principale ..“
Când se numără, pornind de la colțul din stânga sus al mesei, vom presupune diagonala principală din stânga sus la dreapta jos a tabelului. În acest caz, se dovedește că elementele situate pe diagonală va avea același indice, și pentru elementele de mai sus principal numărul coloanei diagonala va fi întotdeauna mai mare decât numărul liniei. De asemenea, a fost de acord să se precizeze inițial un număr de linie, iar apoi - numărul coloanei.
Programul M5;
Var A. Array [1..10,1..10] Din Integer;
I, K. Byte;
S. Integer;
începe
S: = 0;
Pentru I: = 1 To Do 10
începe
Pentru K: = 1 To Do 10
începe
A [I, K]: = Trunc (Random * 100) + 1;
Scriere (A [I, K]: 6);
Dacă K> I Atunci S: = S + A [I, K]
End;
writeln
End;
( 'Elementele de mai sus Sum Sec. RavnaV diagonală', S) writeln
Sfârșit.
În cazul în care modelul de date într-o sarcină care nu poate fi redusă la o masă liniară sau plană, acesta poate fi folosit rețele de orice dimensiune. matrice N-dimensional este caracterizată prin indici N. Formatul descrierii tipului de date:
tip
<Имя типа>= Array [<диапазон индекса1>,<диапазон индекса2>.
<диапазон индекса N>] de <тип компонент>;
nume de elemente separate, după cum urmează:
<Имя массива>[<Индекс 1>,<Индекс 2>. <Индекс N>]
Introducere. Informații generale. Structura programului.