Sunteți pe pagina 1din 9

CAP.2 ELEMENTE DE BAZĂ 2.2 Constante.

Identificatori

ALE LIMBAJULUI PASCAL 2.2.1 Constante


Constantele Pascal reprezintă valori care pot fi conŃinute de un program
2.1 Vocabularul limbajului scris în acest limbaj(nu sunt citite de program).Ele se folosesc în cadrul
diverselor expresii (numerice, logice, şiruri de caractere)sau pentru
Vocabularul oricărui limbaj este format din: scrierea unor mesaje.
• setul de caractere; Exemplu: În program trebuie realizată atribuirea y:=2*x+1. În acest caz
• identificatori; 2 şi 1 sunt constante.
• separatori; Constantele limbajului Pascal se împart în 4 categorii:
• comentarii; • constante întregi;
• constante reale;
2.1.1 Setul de caractere • constante şir de caractere;
• constante simbolice;
Reprezintă un ansamblu de caractere cu ajutorul căruia se poate realiza un
program Pascal. 2.2.1.1 Constante întregi
Acesta este alcătuit din: Sunt alcătuite dintr-o submulŃime a numerelor întregi care pot fi
• litere mari şi mici ale alfabetului englez(A-Z, a-z); reprezentate în memoria calculatorului.
• cifrele sistemului de numeraŃie în baza 10(0-9); ObservaŃie: Nu se pot reprezenta în calculator numere oricât de mari sau
• caractere speciale :+, - , * , / , = , ^ ,< ,>, ( , ) ,[ , ] ,{ ,} , ., , , : , ; , # , $ , oricât de mici (orice număr ocupă un spaŃiu în memoria internă a
@ , _ , şi blanc(spaŃiu). calculatorului).Prin utilizarea limbajului Turbo Pascal se pot reprezenta
numere întregi cuprinse în intervalul [-2.147.483.648, 2.147.483.648].
Numerele se pot reprezenta în baza 10 sau în baza 16 (mai rar utilizată).
2.1.2 Separatori şi comentarii Pentru baza 16, numărul este precedat de caracterul special ‘$’.
Cele mai simple elemente alcătuite din caractere cu semnificaŃie lingvistică Exemple: 32,-164,+31,$a1.
poartă denumirea de unităŃi lexicale. Acestea se separă între ele, după caz
prin blanc, sfârşit de linie sau caracterul’;’. 2.2.1.2 Constante reale
Pentru ca un program să fie uşor de înŃeles se folosesc comentariile. Acestea Sunt alcătuite dintr-o submulŃime a numerelor reale(mai precis a
se plasează oriunde în program. Un comentariu poate fi scris în două feluri numerelor raŃionale), care pot fi reprezentate în calculator. Numerele se
în program: găsesc în intervalul[3.4*10-4352 ,1.1*104932] . În locul virgulei se pune
• între acolade; exemplu:{un comentariu}; punct.
• între paranteze rotunde urmate de * ,exemplu: (*un comentariu*). Exemple:2.34, -45.26, 512E+23, -45.1E-3.
Ultimele două numere folosesc o scriere neîntâlnită în matematică. Ele
reprezintă numerele 512*1023şi –45.1*10-3.

8
2.2.1.3 Constante şir de caractere • reper .
După cum reiese şi din denumire, cu ajutorul lor se reprezintă şiruri de Tipurile simple de date se pot clasifica din două puncte de vedere .
caractere. Şirurile de caractere se pot reprezenta în două forme. Un tip ordinal reprezintă o mulŃime finită de valori între care există o
În prima formă se scrie şirul cuprins între apostroafe. relaŃie de ordine. Conform acestui criteriu, tipurile simple se clasifică în :
Exemplu: ’acesta este un text’. • tipuri ordinale ;
În forma a doua se scrie în cod ASCII(fiecărui caracter i se ataşează un cod • tipuri reale (chiar dacă se ia o submulŃime a numerelor reale situată
cuprins între 0 şi 255 şi este precedat de caracterul ‘#’). într-un anumit interval, acesta nu are un număr finit de elemente) .
Exemplu:#1#2 sau, echivalent(în baza 16), #$#$2. Din punct de vedere al modului de definire a tipului, tipurile simple se
clasifică în:
2.2.1.4 Constante simbolice • tipuri standard( este cunoscut, nu este necesar să fie cunoscut de
Acestea sunt constante care au în program un anumit nume. Numele dat programator);
acestor constante poate fi cunoscut de limbaj(de ex. : false, true, maxint )sau • tipuri definite de utilizator.
dat de utilizator atunci când defineşte constantele.

2.2.2 Identificatori 2.3.1. Tipuri simple standard


Prin identificatori înŃelegem o succesiune de litere sau cifre sau caracterul Acestea se clasifică în :
special ’–‘ din care prima trebuie să fie în mod obligatoriu literă. Cu • tip boolean:
ajutorul identificatorilor se asociază nume constantelor, variabilelor,
• tip char;
procedurilor etc.
• tipuri întregi;
Exemple de identificatori: a1, tasta, un_număr.
Contraexemple :1ar, mt&, (primul începe cu o cifră, al doilea conŃine un • tipuri reale;
caracter special). Dintre acestea primele trei sunt tipuri ordinale.
O categorie specială de identificatori este dată de cuvintele cheie ale
limbajului(au un înŃeles bine definit şi nu pot fi folosite în alt context). 2.3.1.1 Tipul boolean
Acestea sunt: AND, ARRAY, BEGIN, CASE, CONST, DIV, DO, Are numai două valori: true şi false. Operatorii care lucrează cu acest tip
DOWNTO, ELSE, END, FILE, FOR, FUNCTION, GOTO, IF, IN, sunt: AND ,OR , NOT. În versiune Turbo a limbajului s-a introdus şi
LABEL, MOD, NIL, NOT, PROCEDURE, PROGRAM, RECORD, operatorul XOR. Fiind date două valori oarecare ale acestui tip, a şi b,
REPEAT, SET, OF, OR, ORIGIN, OTHERWISE, PACKED, THEN, TO, avem a XOR b = true dacă şi numai dacă ele sunt diferite.
TYPE, UNTIL, VAR, WHILE, WITH.

2.3 NoŃiunea de tip de dată. Operatori aritmetici, logici, relaŃionali


Prin tip de dată vom înŃelege o mulŃime de valori. Pe tipurile de dată se 2.3.1.2 Tipul char
introduc anumite operaŃii. MulŃimea valorilor acestui tip este formată de toate caracterele
Exemplu de tip de dată: integer . reprezentate în codul ASCII extins. Fiecare din aceste caractere se
Avem trei categorii de tipuri : reprezintă pe un octet. RelaŃia de ordine între aceste caractere este dată de
relaŃia de ordine dintre codurile prin care se reprezintă (cuprinse între 0 şi
• simple
• structurate
9
255 ).Limbajul conŃine anumite funcŃii care se pot aplica tipului char. • semnul câtului se stabileşte după regula semnelor (+ cu + rezultat +,
Acestea sunt: - cu + rezultat -, etc.).
• SUCC(caracter)- returnează caracterul care are codul ASCII cu o Pentru MOD rezultatul se obŃine din scăderea din deîmpărŃit a
unitate mai mare (succ(‘c’)=’d’); produsului dintre împărŃitor şi cât (pentru exemplificare se calculează –13
• PRED(caracter)- returnează caracterul care are codul ASCII cu o unitate - -4*3= -1).
mai mică (pred(‘d’)=’c’ ); Operanzilor de tip întreg li se pot aplica şi operatorii pe biŃi (lucrează
• ORD(caracter)- returnează codul ASCII a caracterului; asupra biŃilor din reprezentarea internă a numărului).Aceştia vor fi
• CHR(cod)- returnează caracterul care are codul specificat. reprezentaŃi în continuare.

2.3.1.3 Tipuri întregi Operatorul NOT ( operatorul unar)


În funcŃie de submulŃimea considerată a numerelor întregi ,avem următoarea BiŃii care au valoarea 0 vor avea valoarea 1 şi invers .
clasificare : Exemplu: NOT 7= -8.
• tipul SHORTINT - numere din intervalul[-128,127] care se reprezintă în Presupunem numărul 7 reprezentat ca octet. El va arăta astfel: 00000111.
memoria internă pe un octet; Aplicând operatorul NOT obŃinem:11111000.Acesta reprezintă un număr
• tipul INTEGER - numere din intervalul [-32768, 32767],se reprezintă pe negativ. După cum ştim pentru a obŃine valoarea lui se transformă biŃii cu
doi octeŃi; 1 în biŃi cu 0,biŃii cu 0 în biŃi cu 1.
• tipul LOGINT - numere din intervalul [-2.147.483.648, Rezultă:00000111+1=00001000.Ultimul rezultat este numărul 8,iar dacă
2,147.483.648],se reprezintă pe 4 octeŃi; Ńinem seama că era negativ,obŃinem-8.
• tipul BYTE - numere din intervalul[0, 255],se reprezintă pe un octet;
Operatorul AND(operator binar )
• tipul WORD - numere din intervalul [0, 65535],se reprezintă pe doi
Fie conŃinutul a doi biŃi, b1 şi b2. Definim operaŃia de conjuncŃie asupra
octeŃi.
conŃinutului lor, astfel:
Variabilelor de tip întreg li se pot aplica următorii operatori aritmetici: + (
1,dacă b1=1, b2=1
adunare, operator binar), - (scădere ,operator binar), *(înmulŃire ,operator
b1 and b2=.
binar),DIV şi MOD (operatori binari). În cazul a două valori naturale (deci
0, în orice alt caz
întregi pozitive),operatorii MOD şi DIV furnizează restul şi câtul împărŃirii
Cu ajutorul lui AND se face conjuncŃia bit cu bit a celor doi operanzi.
întregi.
Exemplu: 3 AND 7=3.
Exemple 14 DIV 5 =2;
14 MOD 5 =4; • 3 se reprezintă astfel: 00000011;
Dacă cel puŃin un operand este negativ, lucrurile se complică. • 7 se reprezintă astfel: 00000111;
Exemple -13 DIV 4 = -3; • în final,rezultă:00000011, adică numărul 3.
-13 MOD 4= -1.
Ştim din matematică faptul că restul împărŃirii a două numere întregi este Operatorul OR
pozitiv. În acest caz ,cei doi operatori nu furnizează rezultatul corect. Fie b1 şi b2 conŃinutul a doi biŃi. Definim disjuncŃia astfel:
Pentru operatorul DIV rezultatul se obŃine astfel: 0, dacă b1=0,b2=0;
• se împart cele două numere în valoare absolută(pentru exemplu dat câtul b1 or b2=
este 3); 1, în orice alt caz

10
Operatorul OR se face disjuncŃia bit cu bit asupra reprezentării celor două Tipurile întregi sunt ordinale deci li se pot aplica funcŃiile SUCC ,
numere. PRED,ORD şi operatorii relaŃionali.
Exemplu: 3 or 7=7. FUNCłIA ABS(nr)- furnizează modulul numărului(abs(-12)=12).

Operatorul XOR(operator binar ) 2.3.1.4 Tipuri reale


Fie b1, b2 conŃinutul a doi biŃi. Definim operaŃia sau exclusiv asupra Într-o dată de tip real se pot reŃine numere raŃionale. Numerele reale
conŃinutului celor doi biŃi astfel: cunoscute de noi din matematică cuprind şi numere iraŃionale. Acestea
1, dacă b1=1 şi b2=0 sau b1=0 şi b2=1 din urmă au o infinitate de zecimale, deci nu pot fi reŃinute în calculator.
b1 xor b2 = Totuşi ele pot fi suficient de bine aproximate(nu se pot reŃine oricât de
0, în caz contrar multe zecimale).Limbajul TURBO PASCAL are următoarele tipuri reale:
Prin aplicarea operatorului XOR se face operaŃia sau exclusiv bit de bit • tipul REAL - numerele se reprezintă în memorie pe 6 octeŃi şi pot
asupra reprezentării binare a celor două numere. avea maxim 11, 12 cifre;
Exemplu: 3 XOR 7 =4. • tipul SINGLE - numerele se reprezintă în memorie pe 4 octeŃi şi pot
• reprezentăm numărul 3: 00000011; avea maxim 7, 8 cifre;
• reprezentăm numărul 7: 00000111; • tipul DOUBLE, numerele se reprezintă pe 8 octeŃi şi pot avea
• rezultă: 00000100, adică 4. maxim 15, 16 cifre;
• EXTENDED, numerele se reprezintă pe 10 octeŃi şi pot avea 19, 20
Operatorul SHL(operator binar ) cifre;
Deplasează la stânga toŃi biŃii primului operand, cu un număr de biŃi egal • COMP se reŃin numai numerele pozitive pe 8 octeŃi şi numerele pot
cu al doilea operand. ConŃinutul primilor biŃi se pierde, iar conŃinutul avea până în 19, 20 cifre.
ultimilor biŃi devine 0.
Exemplu :11 SHL 2 =44. Datelor de tip real li se pot aplica următorii operatori:
• 11 se reprezintă 00001011; + pentru adunare;
• prin deplasarea cu două poziŃii la stânga se obŃine : 00101100, adică - pentru scădere;
numărul 44. * pentru înmulŃire;
ObservaŃie: Prin deplasarea la stânga cu o poziŃie (dacă primul bit al / pentru împărŃire.
numărului nu este 1) numărul se înmulŃeşte cu 2. Datelor de tip real li se pot aplica operatorii relaŃionali şi următoarele
funcŃii:
Operatorul SHR • ABS(x)- are ca rezultat modulul numărului x;
Deplasează toŃi biŃii primului operand la dreapta cu un număr de poziŃii • SQR(x)- x la pătrat;
egal cu al doilea operand, ultimii biŃi ai primului operand se pierd, iar pe • SQRT(x)- radical din x;
primele poziŃii se pune 0. • SIN(x)- sinus din x (x este exprimat în radiani);
Exemplu: 44 SHR 2 =11.ArătaŃi cum s-a obŃinut acest rezultat. • Cos(x)- cosinus din x;
ObservaŃii: Deplasarea la dreapta cu o poziŃie este echivalentă cu • ARCTAN(x)- arctangentă din x;
împărŃirea întreagă la 2.
• LN(x)- logaritm natural din x;
• EXP(x)- ex (e are valoarea aproximativ 2,71);
11
• INT(x)- partea întreagă din x; 2.4 Definirea tipurilor de date
• FRAC(x)- partea fracŃionară a lui x; După ce am văzut principalele tipuri de date ale limbajului, trebuie să
O data de tip real nu este de tip ordinal. cunoaştem şi modul în care se fac declaraŃiile de tipuri.
Pentru declararea unui tip se foloseşte declaraŃia TYPE.
2.3.2 Tipuri ordinale definite de utilizator Exemple: TYPE zile=(luni, marŃi, miercuri, joi, vineri, sâmbătă,
Utilizatorul are posibilitatea să declare două tipuri de date ordinale : duminică);
• Tipul enumerat; An naştere=1900..1994;
• Tipul subdomeniu. Litere=’A’..’Z’;
ObservaŃii:
2.3.2.1 Tipul enumerat • Într-un program putem defini mai multe tipuri de date prin utilizarea
Având în vedere că acest limbaj a fost creat în scopuri didactice, s-a avut în unui singur cuvânt TYPE(toate declaraŃiile de mai sus pot fi făcute
vedere posibilitatea scrierii unor programe care să fie înŃelese cu uşurinŃă. într-un singur program);
Din acest motiv a apărut tipul de date enumerat. • Atunci când declarăm un tip, declarăm de fapt o mulŃime de valori
Exemple de astfel de tipuri: posibile pe care le-ar putea lua variabilele programului.
• (luni, marŃi, miercuri, joi, vineri, sâmbătă, duminică);
• (ieri, azi, mâine); 2.5 Variabile. Declararea variabilelor
Datele de acest tip nu pot fi scrise sau citite. Ele se reprezintă în memorie Pentru declararea variabilelor se foloseşte cuvântul cheie VAR.
prin numărul lor de ordine(ord(luni)=0, ord(marŃi)=1 etc.).Acestor date li se Exemple : TYPE zile=(luni, marŃi, miercuri, joi, vineri, sâmbătă,
pot aplica funcŃiile PRED,SUCC precum şi operatorii relaŃionali(avem, duminică);
referitor la exemplu dat, marŃi<miercuri). an_ naştere= 1900..1994;
litere= ’A’..’Z’;
2.3.2.2.Tipul subdomeniu VAR a:integer;
Se obŃine dintr-un tip ordinal definit anterior sau predefinit(numit tip de zi:zile;
bază)din care se extrage un număr de valori consecutive(precizând prima şi an1,an2:an_naştere;
ultima valoare).Cu acest tip se pot face aceleaşi operaŃii care se pot face şi ch:litere;
cu tipul de bază.
Exemple: 2.6 Definirea constantelor
• 2..20-o variabilă de acest tip ia valori întregi cuprinse între 2 şi 20, tipul Se face prin utilizarea cuvântului cheie CONST.
de bază fiind tipul integer; Exemple: CONST nota_max=10;
• luni..vineri - o variabilă de acest tip poate lua toate valorile dintre luni r=3.25.
şi vineri ale tipului de bază enumerat, definit anterior. Există posibilitatea de a defini o constantă prin precizarea tipului ei (care
poate fi şi un tip structurat).

2.7.Structura programelor. Comentarii


Un program este format din trei părŃi:
] 1. antetul programului;
2. zona de declaraŃii a programului
12
3. „corpul” programului sau zona operativă. 2.8.2 InstrucŃiunea de atribuire
Structura unui program Pascal este: În limbajul pascal are sintaxa: identificator:=expresie;
Prin instrucŃiunea de atribuire variabila identificator primeşte valoarea
program < nume dat de utilizator>;  antetul programului unei expresii.
……………………………………..  zona de declaraŃii a programului
begin
.................................................  „corpul” programului (zona operativă) 2.9.Citirea /scrierea datelor
end. Acestea se realizează utilizând procedurile standard READ, READLN,
WRITE, WRITELN.
Pentru a facilita procesul de înŃelegere a unui program, în dreptul
unor instrucŃiuni pe care acesta le cuprinde pot apărea comentarii referitoare 2.9.1. Citirea datelor
la ceea ce se execută cu ajutorul instrucŃiunilor respective, comentrii care Se face cu ajutorul procedurilor READ şi READLN.
sunt cuprinse între „{}” sau între „(* *)”. • READLN (v1,v2,…,n) - citeşte variabilele v1, …, vn, introduse de la
tastatură. Variabilele pot fi de orice tip învăŃat până acum, mai puŃin
2.8.Expresii. InstrucŃiunea de atribuire boolean sau un tip enumerare(sau un subdomeniu al unui astfel de
tip).Introducerea mai multor variabile se poate face dacă acestea se
2.8.1.Expresii separă prin spaŃii sau <ENTER>. La sfârşit trebuie apăsată tasta
Regulile de formare a expresiilor sunt aceleaşi din matematică. <ENTER>. Cursorul trece pe rândul următor. Procedura readln va
O mare importanŃă în evaluarea expresiilor o are prioritatea operatorilor. citi şi sfârşitul de linie(caracterul enter).
Aceasta este următoarea: • READ (v1,v2,…,vn)- la fel ca readln, doar că nu citeşte sfârşitul de
• Prioritatea 1: (maximă):NOT, +, -(operatori unari); linie. De aceea, în cazul şirurilor de caractere e bine să se folosească
• Prioritatea 2: AND,*, /, DIV(operatori multiplicativi); ATENłIE ! Datele citite se depun, de fapt, într-o zonă tampon, înainte
• Prioritatea 3: OR, XOR, +, -(operatori aditivi); de a fi acordate variabilelor. Această zonă tampon se goleşte când apare
• Prioritatea 4: >, >=, <, <=, =, IN(operatori relaŃionali). readln . De aceea, un apel simplu readln (fără argumente )va avea drept
În mod normal, expresia se evaluează de la stânga la dreapta, Ńinând cont de efect golirea acestei zone tampon. Astfel, apelul readln (x,y,…)este
priorităŃile operatorilor(putem schimba priorităŃile prin utilizarea echivalent cu secvenŃa read(x,y,…);readln.
parantezelor rotunde). Dacă variabilele ar fi avut alte valori înaintea apelului procedurii de
citire, ele se pierd. Valorile citite ale acestor variabile rămân neschimbate
Greşeli posibile: până la prima atribuire sau (re)citire a lor.
1. 1/2*a se calculează a împărŃit la doi şi nu unu împărŃit la 2*a, dacă se
doreşte aceasta se pune 1/(2*a);
2.9.2.Scrierea datelor
2. expresia (a>b) AND (b<c) nu este echivalentă cu expresia:
Se face cu ajutorul procedurilor WRITE, WRITELN.
a>b AND b>c (aceasta din urmă nici nu are sens deoarece se efectuează
iniŃial b AND b, după care expresia îşi pierde sensul). • WRITE (e1, e2, …, en) - evaluează şi apoi afişează valorile
expresiilor e1, …, en. Expresiile pot fi inclusiv de tipul boolean, caz
în care se afişează unul din cele două cuvinte(False sau True), dar nu

13
pot fi de tip enumerare. După afişarea valorilor unor expresii acestea nu 2.10.2.2 InstrucŃiunea de selecŃie multiplă - case
se pierd şi nici nu se schimbă. Cu ajutorul instrucŃiunii de selecŃie simplă (instrucŃiunea „IF”)
• WRITELN(e1,e2,…, en)face acelaşi lucru, dar la sfârşitul întregii afişări putem alege o secvenŃă de instrucŃiuni din 2 posibile, în funcŃie de
mută cursorul pe rândul următor. valoarea de adevăr a unei condiŃii.
Însă, pentru a putea alege o secvenŃă de instrucŃiuni din mai multe
secvenŃe posibile, vom fi nevoiŃi să utilizăm instrucŃiunea „case”.
2.10. Structuri de control (instrucŃiunea compusă, structuri alternative • SINTAXĂ:
şi repetitive) InstrucŃiunea „case” poate lua mai multe forme. Una dintre forme
cuprinde şi o ramură „else” iar cealaltă nu.
2.10.1 InstrucŃiunea compusă EXEMPLU:
O secvenŃă de mai multe instrucŃiuni ale unui program, despărŃite prin 1)Case <opŃiune> of
„punct şi virgulă” şi cuprinse între cuvintele cheie „begin” şi „end” caz1: instrucŃiune1;
formează instrucŃiunea compusă caz2: instrucŃiune2;
Exemplu: ...................................
begin cazn: instrucŃiunen;
readln(z); end;
x:=2; 2)Case <opŃiune> of
z:=3; caz1: instrucŃiune1;
writeln(’suma este:’,x+z) caz2: instrucŃiune2;
end ...................................
cazn: instrucŃiunen
2.10.2 Structuri alternative else instrucŃiunen+1;
end;
2.10.2.1 InstrucŃiunea de decizie IF
InstrucŃiunea „if” are două forme. Notă: <opŃiune> trebuie să fie o expresie de tip ordinal.
În prima formă instrucŃiunea are două ramuri: Exemplu de program care foloseşte instrucŃiunea „case”:
if condiŃie then instrucŃiune1 Program zile;
else instrucŃiune2 Var nr:integer;
• Se testează dacă condiŃia impusă este adevărată Begin
• Dacă condiŃia este adevărată se execută instruŃiunea1 Write(‘DaŃi numărul unei zile din săptămână ’);
• Dacă condiŃia nu este adevărată se execută instrucŃiunea2 Readln(nr);
În cea de-a doua formă, ramura else poate să lipsească: case nr of
if condiŃie then instrucŃiune1 1: writeln(‘luni’);
ATENłIE!!! 2: writeln(‘marŃi’);
Înainte de „else” nu se pune „ ; ”. 3 writeln(‘miercuri
4: writeln(‘joi’);
5: writeln(‘vineri’);
14
6: writeln(‘sâmbătă’); write(‘n=’);
7: writeln(‘duminică’); readln(n);
s:=0;
end; i:=1;
Readln; while i<=n do
End. begin
(*programul va tipări numele unei zile din săptămână coresounzătoare write(‘x=’);
readln(x);
numărului introdus*) s:=s+x;
i:=i+1;
2.10.3 Structuri repetitive (cicluri) end;
writeln(‘s=’,s);
2.10.3.1 Ciclul cu test iniŃial (while – do) readln;
end.
Sintaxă:
While <expresie> do <secvenŃă>
Programul calculează suma a „n” numere naturale care se citesc
pe rând de la tastatură. Numărul de numere, „n”, se citeşte de la tastatură.
• <expresie> este o condiŃiŃie (expresie logică), iar La fiecare execuŃie a ciclului se citeşte un număr „x” care se adaugă la
<secvenŃă> este o secvenŃă formată dintr-una sau mai multe suma „s”, apoi se incrementează contorul „i” care ne spune la a câta
instrucŃiuni numite corpul ciclului;
execuŃie ne aflăm. Variabila „i” se iniŃializează cu 1, iar ciclul se execută
Principiul de funcŃionare al structurii:
cât timp i<=n. (se citesc n numere)
Cât timp este îndeplinită condiŃia dată de <expresie> se execută
corpul ciclului <secvenŃă>
Structura repetitivă cu test final
se evaluează expresia logică <expresie> Sintaxă:
• dacă aceasta este adevărată atunci se execută secvenŃa Repeat <secvenŃă> until <expresie>
<secvenŃă>, apoi se revine la 1. (între timp este posibil ca
• <expr> este o condiŃie (expresie logică), iar <secv> este
valoarea expresiei <expresie> să fi suferit modificări) o secvenŃă formată dintr-una sau mai multe instrucŃiuni,
dacă condiŃia impusă nu este adevărată, se trece la prima numită corpul ciclului
instrucŃiune de după ciclu.
ObservaŃie: Principiul de funcŃionare al structurii:
1. În cazul în care corpul ciclului conŃine mai multe instrucŃiuni, acesta Repetă execuŃia secvenŃei de instrucŃiuni <secvenŃă > până când
trebuie cuprins între „begin” şi „end” condiŃia logică dată de <expresie> ia valoarea true.
2. Testarea condiŃiei are loc la început, deci corpul ciclului poate să nu 1) se execută secvenŃa de instrucŃiuni <secv>
se execute niciodată. 2) se evaluează condiŃia logică dată de <expr>
- dacă aceasta (<expresie>) este adevărată atunci se execută
Ex. de program care foloseşte structura repetitivă cu test iniŃial secvenŃa <secvenŃă>, apoi se revine la 1.
-dacă condiŃia impusă nu este adevărată, se trece la prima
program suma; instrucŃiune de după ciclu.
var i,n,s,x:integer; ObservaŃie:
begin
15
1. În cazul în care corpul ciclului conŃine mai multe instrucŃiuni, acesta Principiul de funcŃionare al ciclului
trebuie cuprins între „begin” şi „end” 1. Variabila <contor> ia pe rând toate valorile de la <v1> la <v2> în
2. Testarea condiŃiei are loc la sfârşit, deci corpul ciclului se va ordine crescătoare, şi pentru fiecare valoare a lui <contor> execută
executa cel puŃin o dată. corpul ciclului constituit de <secvenŃă>;
Variabila <contor> ia pe rând toate valorile de la <v1> la <v2> în ordine
Ex. de program care foloseşte structura repetitivă cu test final: descrescătoare, şi pentru fiecare valoare a lui <contor> execută corpul
ciclului constituit de <secvenŃă>;
• Program care calculează produsul numerelor naturale pare nenule
mai mici sau egale cu o valoare dată Exemplu de program care utilizează ciclul cu contor:

program produs; program cu_contor;


var i,n:integer; var i,n :integer;
p:longint; begin
begin readln(n);
readln(n); for i:=1 to n do
P:=1; write(i);
i:=2; end.
repeat
p:=p*i; Programul citeşte un număr „n” şi scrie toate valorile întregi cuprinse
i:=i+2;
until i>n; între 1 şi „n”.
write(‘p=’,p);
end.

2.10.3.2 Ciclu cu număr fix de paşi „FOR”


Sintaxă:
1. for i:=<v1> to <v2> do <secvenŃă>
2. for i:=<v2> downto <v1> do <secvenŃă>

Variabila “i” poartă denumirea de contor.


<v1> şi <v2> sunt valori extreme ale contorului, iar <secv> este o secvenŃă
de instrucŃiuni care reprezintă corpul ciclului. Dacă corpul ciclului conŃine
mai mult de o instrucŃiune acesta trebuie cuprins între begin şi end.
ObservaŃii:
1. Valorile extreme sau limită ale contorului pot să fie
constante, valori ale unor variabile, valori ale unor expresii,
valori returnate de funcŃii etc.
2. În corpul unui „ciclu for”, nu se va modifica contorul prin
citire de la tastatură şi nici prin atribuire.
16

S-ar putea să vă placă și