Documente Academic
Documente Profesional
Documente Cultură
Exemple :
Type Sir_intregi = Array [1..9] Of Integer; { tipul sir de maxim 9 intregi } Var
Matrice : Array [1..25] Of Sir_intregi;{ tipul elementelor poate fi array }
sunt vectori având 7 elemente reale. Dac• T este un tablou de acest tip atunci T
are 6 componente, fiecare component• fiind un vector cu 7 elemente. De fapt
este vorba de o matrice cu 6 linii •i 7 coloane.
Componenta T[i] a acestui tablou va fi un vector cu 7 elemente reale.
Selectarea elementului cu indicele j al tabloului T[i] poate fi ob•inut• scriind
T[i][j]. Mention•m c• se accept• o prescurtare a declara•iei de mai sus sub
forma
: T : Array [1..10, 1..6] Of Real ;
Begin
Zi:=Succ(Zi);
End;
For s:=1 To 6 Do
Luna[s,ziua]:=0;
Else Zl:=28;
4,6,9,11 : Zl:=30
Else Zl:=31
End;
Luna[s,z]:=Zi;
Else z:=Succ(z)
End;
Case l Of
End; Writeln;
End; Writeln
End; Readln
End;
End.
Var A : Matrice;
X : Linie;
End;
52
Exemplu :
Zile = (Luni,Marti,Miercuri,Joi,Vineri,Sambata,Duminica);
Numere : Multime_Nr;
- diferenta ( \ ) se noteaz• cu −
b) rela•ionali :
<constructor>::=[<lista_elemente>] ,
53
Exemplu :
Vocale := [‘A’,’E’,’I’,’O’,’U’];
“ S• se determine numerele prime mai mici sau egale decât un num•r n dat
”. Pentru c• vom utiliza tipul mul•ime (Set), n va fi cel mult 255.
Ciur={2,...,n}; Prime=∅;
Repet•
p, n : Byte; m : Integer;
Begin
Repeat
Mp:=[]; m:=p;
Repeat
Mp:=Mp+[m]; m:=m+p
Until m>n;
End; {If}
p:=p+1
Until Ciur = [ ];
Write (Chr(8)+'}');
Readln
End.
Pot fi a •i b mai mari dacât 255 ? Cum poate fi modificat acest program
pentru a rezolva aceast• problem• ? În mul•imi vom re•ine doar indici din •irul
tuturor divizorilor. În felul acesta mul•imile pot con•ine elemente de orice tip,
dar cardinalul maxim al mul•imilor va fi doar 255.
55
7.3. Tipul •ir_caractere (String).
Acest tip se declar• astfel : String [m] sau simplu String. m reprezint•
num•rul maxim de caractere pe care poate s•-l con•in• o variabil• de acest tip.
Dac• nu se specific• aceast• limit• m (varianta a doua), atunci lungimea maxim•
este 255 (valoarea implicit• pentru m).
Exemplu :
Type Linie = String [80]; { Siruri de maxim 80 de caractere }
SirCar = String; { Siruri de maxim 255 de caractere }
Var Mesaj : String;
Rand : Line;
S : String [20];
X : Array [0..20] Of Char;
Exemplu :
Exemple :
‘Ionescu’ < ‘Popescu’ ; ‘0...’ < ‘9...’ < ‘A...’ < ‘Z...’ < ‘a...’ < ‘z...’.
( Copy(‘Marinescu’,2,4)=‘arin’ ),
57
- Str (e,S) depune în variabila S, •irul cifrelor corespunz•toare valorii
(numerice) expresiei e , care poate avea ata•at un format (:n:m ca •i Write) .
n1,2 sunt dou• numere reale, este un operator aritmetic (+, −, *, ×, / sau : ) iar
operator •i f•r• paranteze) este dat• sub forma unui •ir de caractere, iar rezultatul
e - reprezint• expresia sub forma unui •ir de caractere, iar r este rezultatul
(valoarea expresiei) dat• tot sub forma unui •ir de caractere în care se va înlocui
marca zecimal• ‘.’ cu ‘,’ . Dac• expresia nu se termina cu caracterul ‘=‘, acesta
va fi adaugat •irului introdus.
58
expresie) pân• când se va introduce expresia vid• (•irul vid) adic• se tasteaz•
doar Enter în momentul citirii expresiei.
o : Char; (* o ∈ {+,-,x,:,*,/} *)
n1, n2 : Real;
p , er : Integer;
Begin
Repeat
o:=e[p];
Delete (e,1,p);
Val (Copy(e,1,Length(e)-1),n2,er);
Case o Of
End;
Writeln (r)
End
Until e=’’
End.
59
Un alt exerci•iu pe care îl propunem ca tem• este urm•torul:
“S• se calculeze valoarea unui polinom P (dat ca •ir de caractere), într-un punct
x dat.”
n n-1
Polinomul P(X) = a0X + a1X + ... + an-1X + an se d• sub forma:
5 2
De exemplu, polinomul P(X) = 3X -7X +12X-9 se poate scrie astfel :
Pentru a rezolva aceast• problem•, se poate extrage din •irul dat, pe rând
fiecare monom (acestea fiind separate de caracterul + sau -), iar din fiecare
monom se va extrage coeficientul •i puterea. În acest fel putem memora
polinomul ca un •ir de perechi de forma (coeficient, grad), urmând s• calcul•m
valoarea polinomului ob•inut.
Declararea tipului inregistare const• într-o o parte fix• (în care se declar•
câmpurile împreun• cu tipurile lor) •i eventual o parte variabil• (Case ... , în
care câmpurile difer• în func•ie valoarea unor câmpuri din partea fix•) astfel :
Record
<list•_câmpuri> : <tip_câmp> { ;
<list•_câmpuri> : <tip_câmp> }
<list•_câmpuri> : <tip_câmp> } ) { ;
<list•_câmpuri> : <tip_câmp> } ) } ]
End;
<var_record> . <id_câmp>
De exemplu în programul urm•tor, Un_Student.Media_Gen reprezint•
câmpul Media_Gen al variabilei Un_Student, iar Un_Student.Rezultate.Informatic•
reprezint• calificativul la Informatic• din câmpul Rezultate. Dac• în câmpul
Informatic• a fost depus• valoarea NS sau S, înregistrarea are în partea variabil•
61
notele ob•inute la scris •i practic, iar dac• valoarea depus• a fost B sau FB
atunci în partea variabil• se va re•ine doar nota final• obtinut•.
În cazul în care referim mai multe câmpuri din cadrul unei înregistr•ri se
poate evita precizarea multipl• a acelea•i înregistr•ri prin instruc•iunea With.
Aceasta are urm•toarea sintax• :
De exemplu, în loc de
62
Program Inregistrari;
Student = Record
Nr_Matricol : Word;
Nume_Prenume : String[20];
Rezultate : Record
Informatica : Calificativ;
Ns : (Scris,Practic : Integer);
End;
Media_Gen : Real;
End;
Un_Student : Student;
i, n, k : Byte;
Rasp : String[10];
Begin
n:=0; {Citeste datele fiecarui student}
Repeat
Case Rasp[1] Of
End;
End
Readln ( Nota)
End;
63
’A’ : Sport:=Admis; ’R’ : Sport:=Respins
End;
Media_Gen:=(Algebra+Analiza+Geometrie+Nota)/4 Else
Media_Gen:=0;
n:=n+1; Studenti[n]:=Un_Student
End {If}
Write (Nr_Matricol:7,Nume_Prenume:20,
Algebra:3,Analiza:3,Geometrie:3);
Case Informatica Of
End;
Case Sport Of
Admis : Write (' Admis '); Respins : Write (' Respins ')
End;
Readln
End.
(1,...,n), apoi se va schimba aceast• ordine, dac• este cazul, (se interschimb•
64
doar elementele •irului O, deci oi ↔ oi+1) iar în final se vor tip•ri studen•ii în
ordinea dorit•, adic• se va tip•ri St[oi], i=1,...,n.
65