Sisteme unidimensionale

O matrice este un set ordonat de variabile (elemente) de un singur tip. Fiecare element are un număr de ordine întreg, numit un index. Numărul elementelor dintr-o matrice se numește dimensiunea sa. Arrays sunt utilizate în cazul în care aveți nevoie pentru a procesa mai multe variabile de același tip - de exemplu, estimările tuturor celor 20 de elevi din grup sau coordonatele a 10 puncte în avion. Șirul de text poate fi tratat ca o serie de caractere, iar textul de pe pagină este un șir de șiruri de caractere.

Matricea este descrisă în secțiunea var prin următoarea afirmație:

var ArrayName: matrice [NOR. VI] de tip;

НИ (index inferior) - numărul întreg al primului element al matricei;

.. -- operatorul gama Pascal (vezi pct. 7.8);

VI (superscript) este numărul întreg al ultimului element;

Tip - oricare dintre tipurile de date Pascal cunoscute. Fiecare element al matricei va fi tratat ca o variabilă de tipul corespunzător.

Să descriem mai multe tablouri cu scopuri diferite.

var a: matrice [1..20] de număr întreg;

Aici descriem o matrice cu numele A, care constă din 20 de elemente întregi;

var x, y. array [1..10] real;

Sunt descrise două tablouri cu numele x și y, care conțin 10 elemente reale;

var t. array [0..9] de șir;

Matricea t este formată din 10 linii care sunt numerotate de la zero.

Este ușor de observat că dimensiunea (numărul elementelor) matricei este calculată ca VI - HI + 1.

Pentru a accesa un singur element dintr-o matrice, utilizați operatorul formularului NameMassword [Index].

Aici Index este un număr întreg al unui element (poate fi o expresie întreg sau o constantă). Indicele nu trebuie să fie mai mic decât valoarea indexului superior sau superior al matricei, în caz contrar se produce o eroare "În afara intervalului". Un singur element dintr-o matrice poate fi utilizat în același mod ca o variabilă de tipul corespunzător, de exemplu:

În acest capitol, studiem matrice unidimensionale, în care fiecare element are un număr (indice) care caracterizează poziția sa în matrice. În matematică, conceptul unei matrice unidimensionale de elemente n corespunde noțiunii unui vector de n componente: A = i, i = 1, 2. n.

De regulă, intrarea, procesarea și ieșirea unei matrice sunt efectuate în mod elementar, utilizând buclă for.

Cea mai ușoară cale de a intra - introduceți matricea de la tastatură:

var a: matrice [1..n] de real;

writeln ('Introduceți elementele matricei');

pentru i: = 1 la n nu citiți (A [i]);

Dimensiunea matricei este definită de constanta n, elementele sunt introduse unul câte unul în buclă for. La începutul acestui program, utilizatorul va trebui să introducă 10 valori numerice. La rezolvarea problemelor de învățare, introduceți tabelele "manual", mai ales dacă dimensiunea lor este mare, nu este întotdeauna convenabilă. Există cel puțin două soluții alternative.

Descrierea matricei de constante este convenabilă dacă elementele matricei nu trebuie să se schimbe în timpul executării programului. Ca și alte constante, sunt prezentate în secțiunea const. Dăm un exemplu de o astfel de descriere:

const a: matrice [1..5] de real = (

După cum puteți vedea din exemplu, elementele matricei sunt listate în paranteze separate prin virgule, numărul lor trebuie să corespundă dimensiunii sale.

Formarea unei serii de valori aleatoare este adecvată dacă, în rezolvarea unei probleme, matricea servește doar pentru a ilustra unul sau alt algoritm, iar valorile specifice ale elementelor sunt neimportante. Pentru a obține următoarea valoare aleatorie, se folosește funcția standard aleatoare (N), unde valoarea tipului ordinar este transferată de parametrul N. Acesta returnează un număr aleatoriu de același tip ca tipul de argument și se află în intervalul de la 0 la N-1 inclusiv. De exemplu, un operator al formulei a [1]: = random (100); va scrie un [1] număr aleator din intervalul [0.99].

Pentru ca lanțul de numere aleatorii să fie nou de fiecare dată când porniți programul, înainte de primul apel random, este necesar să apelați procedura randomizată standard, care inițiază generatorul de numere aleatoare. Iată un exemplu de umplere a unui set de 20 de elemente cu numere aleatorii situate în intervalul de la -10 la 10:

var a: matrice [1..20] de număr întreg;

pentru i: = 1 până la 20 începe

O modalitate și mai convenabilă este de a citi elemente dintr-un fișier text sau fișier binar. Acest lucru este descris în Ch. 21 și 22.

Toți algoritmii standard studiați în subiectul "Cicluri" sunt aplicați la matrice. Să dăm un exemplu, în care se calculează suma elementelor pozitive ale matricei.

var b: matrice [1..5] reală;

writeln ('Introduceți 5 elemente ale matricei');

pentru i: = 1 la 5 nu se citesc (b [i]);

pentru i: = 1 până la 5 dacă b [i]> 0 atunci s: = s + b [i];

De ieșire a matricei pe ecran se face, de asemenea, folosind buclă pentru.

pentru i: = 1 până la 5 scrie (b [i]: 6: 2);

Aici, 5 elemente ale matricei b sunt tipărite într-o singură linie. Pentru a extrage un element pe o linie, ai putea folosi operatorul writeln în loc să scrie.

Este semnificativ faptul că dacă matricea este procesată secvențial, cu 1 element, ciclurile de intrare și de procesare pot fi adesea combinate, ca în exemplul următor.

Găsiți media aritmetică a elementelor matricei reale t a dimensiunii 6 și a valorii elementului său minim.

var b: matrice [1..6] de real;

writeln ("Input B [6]");

pentru i: = 1-6 începe

dacă b [i]

scriteln ('min =', min, 's =', s / 6);

Teoretic, acest program ar putea face fără o matrice - la urma urmei, elementele b [i] sunt folosite doar pentru a acumula suma și pentru a căuta un maxim, deci descrierea matricei ar putea fi complet înlocuită de o descriere a variabilei reale b. Cu toate acestea, în cazul problemelor reale, datele sunt de obicei prelucrate în mod repetat și fără matrice, este dificil de gestionat. Iată un exemplu de sarcină de învățare în care utilizarea unei matrice oferă un câștig prin reducerea cantității de calcul efectuate de program.

Se dă secvența Ti = max, i = -5, -4. 5. Găsiți elementul secvenței care are abaterea minimă față de media aritmetică a elementelor pozitive.

Aici, în primul ciclu, puteți forma o matrice în conformitate cu o regulă dată și puteți găsi media aritmetică a elementelor pozitive. În cel de-al doilea ciclu, atunci când media este cunoscută, se poate căuta o abatere. Fără a folosi o matrice, ar trebui să numărăm elementele secvenței de două ori.

var t. array [-5..5] real;

pentru i: = - 5 până la 5 nu începe

dacă t [i]

dacă t [i]> 0 începe apoi

pentru i: = - 5 până la 5 nu începe

dacă abs (t [i] -s)

writeln ('Ot =', ot: 8: 2);

Este comună procesarea mai multor mese dintr-o singură sarcină. Să dăm un exemplu.

Coordonatele a 10 puncte pe plan sunt date de matricele x = i, y = i, i = 1, 2. 10. Găsiți lungimea poligonului care trece prin punctele (x1, y1), (x2, Y2). (x10, y10), precum și numărul punctului care se află cel mai departe de origine.

Când rezolvăm o problemă, folosim formula pentru a găsi distanța dintre două puncte pe planul dat de coordonatele (x1, y1) și (x2, y2) :.

Indicați prin r distanța dintre punctul curent și următoarea, Len este lungimea necesară a poliliniei, Dist este distanța de la punctul curent la origine, max este maximul acestor distanțe, Num este numărul punctului dorit.

var x, y. array [1..10] real;

r, Len, Dist, max. reale;

writeln ('Introduceți coordonatele a 10 puncte');

pentru i: = 1 până la 10 începe

Dist: = sqrt (sqr (x [i]) + sqr (y [i]));

dacă dist> max începe apoi

writeln ('Număr punct =', num,

pentru i: = 1 până la 9 nu începe

r: = sqrt (sqr (x [i] -x [i + 1]) +

writeln ('Lungimea poliliniei =', len: 8: 2);

Să dăm un exemplu de sarcină de a forma o matrice în conformitate cu regula.

Se specifică o matrice x de 8 elemente. Formați o matrice y prin regula

și să găsească numărul elementelor sale pozitive.

var x, y: matrice [1..8] de real;

writeln ('Introduceți o matrice x de la 8 e.');

pentru i: = 1 până la 8 începe

dacă i mod 2 = 0 atunci y [i]: = 4 * x [i]

Articole similare