Professional Documents
Culture Documents
Exist• mai multe instruc•iuni Pascal, toate notate prin metasimbolul <ins>.
Exist• instruc•iuni Pascal simple în interiorul c•rora nu se afl• alte instruc•iuni •i
instruc•tiuni structurate, compuse din alte instruc•iuni. Deci
<ins_structurate>
unde
35
5.1. Instruc•iunea de atribuire.
36
A[i]:=B[i] pentru toate valorile indicelui i aflate în tipul de index folosit în
definirea tablourilor A •i B.
În general, este posibil• atribuirea A := B când •i A •i B sunt variabile de
acela•i tip. În toate cazurile se cere ca partea dreapt• a atribuirii s• aib• o valoare
anterioar•, altfel vom spune c• variabila B este neini•ializat•, iar atribuirea va
conduce la erori logice în execu•ia programului.
37
“dac• r este pozitiv •i impar atunci r:=r+1, iar dac• r este negativ atunci
r:=r−1”,
secven•a urm•toare
If r>0 Then
If Odd(r) Then r:=r+1
Else r:=r−1;
If r>0 Then
If Odd(r) Then r:=r+1
Else r:=r−1;
If r>0 Then
If Odd(r) Then r:=r+1
Else { instruc•iunea vid• }
Else r:=r−1;
38
Pentru transferul datelor între memoria intern• •i suportul extern de date se
folosesc procedurile Read •i Write. De•i procedurile vor fi prezentate mai târziu,
d•m semnifica•ia acestor dou• proceduri pentru a putea da în continuare exemple
complete de programe Pascal.
Read ( <list•_variabile> )
Read(X, U, V)
cere atribuirea unei valori întregi variabilei X •i a câte o valoare caracter
variabilelor U •i V.
Dac• pe suportul extern se afl•
125 A
atunci X va primi valoarea 125, variabila U va primi valoarea ’ ’ (caracterul
blanc), iar V va primi valoarea ’A’.
Daca îns• suportul extern con•ine
12.4 A
execu•ia se va termina cu eroare întrucât valoarea 12.4 nu are tipul întreg. Tot cu
eroare se va termina execu•ia când pe suportul extern avem
TEXT 25
întrucât prima valoare întâlnit• nu este un num•r întreg.
39
Procedura Write asigur• transferul informa•iei din memoria intern• pe
suportul extern. Apelul procedurii are forma
Write ( <list•_expresii> )
40
1
2
3
unde <cond> este o expresie logic• ,iar <ins1> •i <ins2> sunt instruc•iuni Pascal.
Subliniem c• dup• cuvântul Then •i în fa•a cuvântului Else nu poate fi scris
caracterul ';' (deci nu poate apare •i o instruc•iune vid• ) .
În ambele variante instruc•iunea cere mai întâi evaluarea expresiei logice
<cond>. Dac• valoarea ob•inut• este True atunci se execut• instruc•iunea <ins1>
cu care se încheie execu•ia instruc•iunii If . Dac• valoarea ob•inuta este False
atunci, în cazul variantei a doua se execut• instruc•iunea <ins2>, iar în cazul
primei variante nu se execut• nimic.
Aceast• instruc•iune permite scrierea în Pascal a structurilor alternative •i
este echivalent• ca semnifica•ie cu propozi•ia Pseudocod
41
Ca un prim exemplu, pentru a efectua atribuirea V:= |x| în Pascal putem scrie
42
Readln
End.
Case <eo> Of
<lista-c> : <ins> { ;
<lista-c> : <ins> {
[ Else <ins> ]
End
unde <eo> este o expresie de tip ordinal, <lista-c> este o list• de constante-case,
fiecare constant•-case având tipul ordinal al expresiei <eo>. În <lista-c> în locul
unei constante poate apare •i un subdomeniu c1..c2 pentru o scriere mai
condensat• în cazul când constantele sunt consecutive.
43
Program Case_Caracter; { Analiza unui caracter c. }
{ daca este litera, cifra sau alt caracter ? }
Var c : Char; { Litera poate fi mica/mare, }
{ vocala/consoana }
Begin
Write (’ Dati un caracter ’); Readln(c);
Case c Of
’a’..’z’ : Begin
Write (’ Este litera mica,’);
Case c Of
’a’,’e’,’i’,’o’,’u’ : Write (’ vocala.’)
Else Write (’ consoana.’)
End
End;
’A’..’Z’ : Case c Of
’A’,’E’,’I’,’O’,’U’ : Write (’ Este litera mare, vocala.’)
Else Write (’ Este litera mare, consoana.’)
End;
’0’..’9’ : Write (’ Este o cifra. ’);
Else Write (’ Este un caracter special.’);
End;
Readln
End.
44