top of page

Tablouri unidimensionale

 

Un sir de elemente de acelaşi tip, în care contează ordinea elementelor, se numeşte vector sau tablou unidimensional.

Un tablou(array) este o structura formata dintr-un număr fixat de componente de acelaÅŸi tip, numit tip de baza. Numărul de componente este determinat de numărul de valori ale indicilor, care sunt obligatoriu tipuri ordinale. PoziÅ£ia unui element se mai numeÅŸte si indicele sau rangul elementului, iar elementele se mai numesc si componente ale vectorului. Sintaxa declarării  tipului tablou este :

type_nume=array[tip_ordinal1,......tip_ordinaln] of tip_oarecare

unde:

n-reprezinta dimensiunea tabloului

tip_ordinal1,...tip_ordinaln reprezinta tipul indicilor tabloului

tip_oarecare reprezinta tipul componentelor tabloului

!Obervatii.In cazul in care tip_ordinal este unul din tipurile intregi,este obligatoriu sa folosim subdomeniile lui

Exemplu: type vector=array[1..100] of integer;

  Sintaxa
  • Sintaxa declarării  tipului tablou este :

    type_nume=array[tip_ordinal1,......tip_ordinaln] of tip_oarecare

    unde:

    n-reprezinta dimensiunea tabloului

    tip_ordinal1,...tip_ordinaln reprezinta tipul indicilor tabloului

    tip_oarecare reprezinta tipul componentelor tabloului

     

  • !Observatii.In cazul in care tip_ordinal este unul din tipurile intregi,este obligatoriu sa folosim subdomeniile lui

    Exemplu: type vector=array[1..100] of integer;

     

    var v:vector -

    variabila v este un tablou de dimensiune 1 cu 100 componente intregi  identificate prin indici din subdomeniul 1..100.

    Aici tipul ordinal este subdomeniu al tipului integer, iar tipul oarecare este ineger. Componentele unui tablou sunt memorate pe zone de memorii consecutive. Adresarea unei componente a tabloului se face prin indice (o valoare a tipului ordinal) care se specifica după numele tabloului, între paranteze drepte.

    Tipul tablou array[tip_ordinal] of tip poate rămâne si anonim. Astfel, putem scrie ceva de genul type vector=array ...si var x:vector pe scurt prin var x:array...Adică, tipul tablou rămâne anonim, nu trebuie neapărat să primească un nume(aici cel de vector).

    tip_ordinal si tip pot fi atât tipuri anonime, cât si identificatori de tip. Limbajul Turbo Pascal nu ne permite sa declaram o variabila de tip array cu un număr variabil de componente. De multe ori nu ÅŸtim cate componente vor fi necesare pentru o anumita rulare a programului. Orice problema în care se lucrează cu variabila de tip array si in care se cere prelucrare a n componente constituie un exemplu in acest sens .In acest caz ideea este sa rezervam un număr maxim de componente, atât cat este necesar pentru rulare atunci când n este maxim. la fiecare rulare a programului se cere numărul de componente. De cele mai multe ori o parte dintre cele rezervate rămân neutilizate.

    Prin declararea unui vector vom înţelege numărul maxim de elementele acestuia. Numărul elementelor efective folosite, care diferă de la o execuţie la alta se numeşte număr real (efectiv de elemente).

    "Vizualizarea" tuturor elementelor pe rând si prelucrare acestora se numeşte parcurgere. Parcurgerea intr-un ciclu poziţiile elementelor din vector i=1,2,3,...,n si pentru fiecare valoare a lui i, "vizităm" si prelucram elementul v[i], adică elementul aflat pe poziţia i: secvenţa de program:

    for i:=1 to n d0

    <prelucrarea v[i]

    urmarirea ciclului pas cu pas

    Pasul 1:i:=1,prelucreaza v[1]

    Pasul 2:i:=2,prelucreaza v[2]

    -------------------------------------

    Pasul n:i:=n,prelucreza v[n]

     
     
     
     
     
     

Exemplu Program:

Program ce afiseaza elementul maxim dintr-un tablou unidimensional introdus de la tastatura si calculeaza cate numere pare sunt in tablou.

 

Program Uni; {Uni - numele programului}

uses crt; {Directiva ce permite utilizarea bibliotecii CRT, adica pot fi executate astfel de functii, precum: curatarea ecranului dupa executare, adaugarea culorilor, sunetelor in program etc.}

var A: array[1..100] of integer; {Declaram variabila A de tip array , elementele de tip integer- vector cu nu mai mult de 100 de elemente}

p, max, i, n: integer; {Declaram variabilele p, max, i, n de tip integer - numere intregi}

begin {Inceputul programului}

clrscr; {Comanda ce va curata automat ecranul dupa executie}

textcolor(4); {Coloreaza textul programului in culoarea cu nr. 4 - red}

textbackground(7); {Coloreaza fundalul programului in culoarea cu nr. 7 - lightgray}

write('Introdu nr. de elemente: '); {Afiseaza pe ecran  "Introdu nr. de elemente: "}

readln(n); {Citeste numarul introdus de la tastaturatrece in rand nou}

for i:=1 to n do {Parcurge toate elementele , se repeta pana cand i=n si efectueaza urmatoarele sarcini}

begin {Inceputul ciclului} 

write('Introdu elementele in tablou: '); {Afiseaza pe ecran  "Introdu elementele in tablou: "}

readln(A[i]); {Citeste valoarea introdusa de la tastatura si o atribuie pozitiei corespunzatoaretrece in rand nou}

end; {Sfarsitul ciclului; intoarcere la sintaxa for}

writeln('Ati introdus: '); {Afiseaza pe ecran  "Ati introdus "trece in rand nou}

for i:=1 to n do {Parcurge toate elementele din vector, se repeta pana cand i=n si efectueaza urmatoarea sarcina}

write(A[i]:3); {Afiseaza pe ecran  valoarea fiecarui element, cu 3 spatii intre ele}

writeln; {Trece in rand nou}

max:=A[1]; {Ii atribuim variabilei max, care va determina elementul cu valoarea maxima din vector, valoarea initiala a elementului de pe pozitia 1 in vector}

p:=0; {Ii atribuim variabilei p, care va calcula cate numere pare au fost introduse in vector, valoarea initiala 0}

for i:=1 to n do {Parcurge toate elementele din vector, se repeta pana cand i=n si efectueaza urmatoarele sarcine}

begin {Inceputul ciclului} 

if A[i]>max then { Daca elementul de pe pozitia are valoarea mai mare decat valoarea primului element

max:=A[i]; {Variabilei max i se atribuie valoarea elementului de pe pozitia i}

if not odd(A[i])  then { Daca elementul de pe pozitia i este par} 

inc(p); {Adaugam la valoarea lui p 1}

end; {Sfarsitul ciclului; intoarcere la sintaxa for}

writeln('In tablou sunt ',p,' numere pare'); {Afiseaza pe ecran  "In tablou sunt: ", afiseaza valoarea lui p, afiseaza " numere pare" ,trece in rand nou}

writeln('Maximul din tablou este ', max); {Afiseaza pe ecran  "Maximul din tablou este ", afiseaza valoarea lui max, trece in rand nou}

writeln('Autor: Mirela Burduja'); {Se afiseaza pe ecran fraza: " Autor: Mirela Burduja", trece in rand nou}

readkey; {la apasarea unei taste, trece din ecranul negru in ecranul albastru}

end. {Sfarsitul programului}

 

 

Screenshot-uri:

Diagrama de sintaxa:

© Creat in 2015 de Mirela. Toate drepturile rezervate!!

bottom of page