cursul 03 limbajul pascal. structura programelor tipuri simple de date
TRANSCRIPT
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 1/10
3. Limbajul Pascal : elementele limbajului,
structura programelor, tipuri simple de date.
Cu toate c limbajul Pascal a fost conceput pentru înv••area program•rii,
el este folosit ast•zi la rezolvarea celor mai diverse probleme, de orice nivel.
3.1. Vocabularul i sintaxa limbajului.
Limbajul Pascal este construit folosind un alfabet ce con•ine caracterele
întâlnite în scrierea obi•nuit• •i cea matematic• (cu ajutorul c•rora se vor scrie
toate instruc•iunile limbajului) :
- literele (mari •i mici) ale alfabetului latin: A, B, C,..., X, Y, Z, a, b, c, ... , x y z
- cifrele zecimale: 0, 1, ... , 9
- caractere speciale: + − * / . , ; : ( ) [ ] { } = < > ! ? ^ @ # $ % \ ‘ “ _ ... .
În aceste lec•ii vom utiliza nota ia BNF prezentat• în continuare. Prin
scrierea unei construc•ii între acolade { ... } se indic• faptul c• acea construc•iepoate s• se repete de ori câte ori (inclusiv de zero ori). Parantezele drepte [ , ]
sunt folosite pentru scrierea construc•iilor op•ionale (ceea ce se afl• închis între
aceste paranteze poate lipsi). Se observ• c• în sintaxa de mai sus se folosesc
metasimbolurile [ , ] , { •i } , având alt• semnifica•ie fa•• de caracterele [, ], { • i }
permise •i folosite în anumite construc•ii Pascal.
Ca în toate limbajele de programare •i în Pascal se folosesc frecvent
identificatorii. Prin identificator , notat în defini•iile sintactice care urmeaz• prin
<id >, se în•elege o secven•a de litere (mari sau mici) •i cifre, primul caracter fiind
obligatoriu o liter•. De asemenea, în construc•ia identificatorilor este permis •i
caracterul ’_’. Acesta se recomand• s• se foloseasc• în scrierea identificatorilor
compu•i din dou• cuvinte unite prin acest caracter.
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 2/10
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 3/10
În defini•ia blocului elementul <decl> este metasimbolul folosit pentru
declara•ia Pascal care va fi definit• în lec•ia urm•toare (4), iar <ins> este
metasimbolul folosit pentru a nota o instruc•iune Pascal •i va fi definit în lec•ia 5.
A•a cum se va vedea mai târziu, în defini•ia declara•iilor de procedur• se
folose•te metasimbolul < bloc >. Deci un bloc care con•ine o procedur• con•ineun alt bloc care, la rândul lui, poate con•ine alt bloc.
Oriunde în textul programului pot fi incluse comentarii. Acestea sunt
folosite de c•tre utilizatori în scopul îmbun•t••irii clarit••ii programului •i a
explic•rii semnifica•iei unor nota•ii sau par•i de program. Ele nu sunt luate în
seam• de calculator, singurul lor scop fiind acela de a oferi programatorului
posibilitatea de a insera în program explica•ii utile omului. Un comentariu este
orice text închis între acolade
<comentariu> ::= { text } | (* text *)
Un exemplu de program Pascal este urm•torul :
$
Program Suma; { Tipare• te suma a dou• numere reale,}
Var a,b : Real; { a • i b, citite de la tastatur • .}
Begin
Write (’ Dati doua numere separate prin spatiu, apoi Enter : ’);
Readln(a,b);
Write (’ Suma este ’,a+b);
Readln
End.
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 4/10
3.3. Constante •i variabile Pascal.
Datele dintr-un program pot fi constante sau variabile.
Constantele se caracterizeaz• prin aceea c• nu-•i modific• valoarea în
timpul execu•iei unui program. Orice constant• este precizat• prin sintaxa ei •i are
o valoare bine definit•.
Constantele pot fi: numerice, •ir de caractere •i booleene. La rândul lor
constantele numerice pot fi întregi sau reale.
Constantele întregi sunt cele care reprezint• numerele întregi din
matematic• •i au sintaxa obisnuit•. De exemplu, 15, 1989, -314 sunt constante
întregi.Constantele reale sunt cele care reprezint• numerele reale. Scrierea unui
num•r real poate fi în forma normal• sau în forma exponential• .
În forma normal• este obligatoriu atât punctul zecimal "." cât •i partea
întreag• •i partea frac•ionar• a num•rului real.
De exemplu $
3.14159 1.72 -5.749 103.0 0.23
sunt constante reale, în timp ce scrierile
.23 103. 375. -123.+44
sunt gre•ite.
În forma exponential• , un num•r întreg sau un num•r real în forma
normal• este urmat de litera E sau e •i de un num•r întreg numit exponent.
Valoarea num•rului real scris în aceast• form• este egal• cu num•rul scris în fa•a
literei E înmul•ita cu 10 la puterea egal• cu exponentul scris dup• litera E. De
exemplu:
12345E-6 este egal cu 0.012345 ; $
3.123456E5 este egal cu 312345.6 .
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 5/10
Constanta • ir de caractere este o secven•• de caractere (un text) închis•
între apostrofuri. Valoarea constantei este chiar textul închis între apostrofuri.
Dac• este necesar ca în text s• apar• •i apostroful el trebuie dublat. De exemplu:
’22 Decembrie 1989’ $
’Domnu’’ Trandafir’În cazul în care un singur caracter este închis între apostrofuri avem o
constant• de tip caracter . O constant• • ir de caractere este considerat• ca fiind
rezultatul concaten•rii mai multor constante de tip caracter .
De•i s-a afirmat la început c• literele mari se consider• identice cu cele
mici, singura excep•ie este folosirea lor în constanta •ir de caractere.
Constanta booleana reprezint• o valoare logic• •i se reprezint• prin
identificatorii True pentru valoarea logic• "adev• rat ", respectiv False pentru
valoarea logic• " fals".
Variabila corespunde m•rimii care î•i poate schimba valoarea în timpul
execu•iei programului. Ea are un nume •i poate primi o valoare dintr-un domeniu
bine precizat de valori. Numele unei variabile este un identificator. Pe timpul
execu•iei programului în limbajul Pascal fiecare variabil• are un tip care trebuie
s• fie declarat în program.
3.4. Tipuri de date.
Prin tip de dat • se în•elege o mul• ime de valori (domeniul tipului) •i o
mul• ime de opera• ii ce pot fi efectuate cu aceste valori.
Unele tipuri de date sunt predefinite, iar altele sunt definite de c•treprogramator în timpul scrierii programului. Dup• elementele care formeaz•
domeniul tipului deosebim tipuri de date simple, respectiv compuse cu ajutorul
altor tipuri.
<tip> ::= <tip_simplu> | <tip_structurat > | <tip_referin• • >
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 6/10
Tipul de date <tip_simplu> se define•te în continuare, iar celelalte tipuri
vor fi definite în lec•iile urm•toare.
Tipurile simple de date con•in tipurile numerice Integer •i Real, tipul
Boolean, tipul Char , tipul enumerare •i tipul subdomeniu. Avem:
<tip_simplu> ::= <tip_real> | <tip_ordinal>
unde
<tip_ordinal>::=<tip_întreg>|<tip_boolean>|<tip_caracter >|
<tip_enumerare>|<tip_subdomeniu>
Tipurile întreg, real, boolean •i caracter sunt predefinite •i sunt marcate
prin cuvintele Integer , Real, Boolean, respectiv Char . Deci
<tip_real> ::= Real
<tip_întreg> ::= Integer
<tip_boolean> ::= Boolean
<tip_caracter> ::= Char
Tipurile Integer •i Real se refer• la mul•imile Z •i R, dar mul•imea
valorilor fiec•rui tip este finit• •i depinde de calculatorul folosit.
De•i func•iile Pascal vor fi indicate în sec•iunea urm•toare prezent•m aicicâteva func•ii definite asupra valorilor de tip ordinal sau de tip caracter.
Pentru fiecare tip ordinal, deci •i pentru tipul caracter, mul•imea valorilor
este finit• •i ordonat•. Pentru ob•inerea rangului elementului x în aceast• mul•ime
ordonat• se poate folosi func•ia Ord(x). Pentru primul element p din aceast•
mul•ime avem Ord(p) = 0. Func•ia Succ furnizeaz• succesorul unui element în
aceast• mul•ime, deci Succ( x) reprezint• succesorul elementului x în domeniul
valorilor •i este nedefinit pentru ultimul element din domeniu. Prin Pred ( x) se
noteaz• predecesorul elementului x în domeniul tipului •i este nedefinit pentru
primul element din domeniu.
Din defini•iile de mai sus se deduc u•or urm•toarele propriet••i:
Ord( Succ(x) ) = Ord(x) + 1;
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 7/10
Ord( Pred(x) ) = Ord(x) − 1.
3.4.1. Tipul întreg.
Domeniul tipului întreg este submul•imea numerelor întregi cuprinse înintervalul [- Maxint-1, Maxint ], unde Maxint este o constant• întreag• predefinit• a
c•rei valoare depinde de calculatorul folosit •i este determinat• de m•rimea
loca•iei pe care se reprezint• un num•r întreg în calculatorul respectiv (de
exemplu Maxint = 32767).
Opera• iile definite între valori de tip întreg sunt + ,− ,* , DIV , MOD •i / ,
iar semnifica•ia lor se d• în tabelul urm•tor:
Semnifica•ia lui x y
+
−
*
DIV /
MOD
adunare
sc•dere
înmul•ire
împ•r•irea întreag• (11 DIV 4 este 2)împ•r•irea real• (11 / 4 este 2.75)
restul împ•r•irii întregi a lui x la y ( 11 MOD 4 = 3 )
De asemenea, prin − se noteaz• •i o opera•ie unar• (− x fiind opusul lui x
fa•a de opera•ia de adunare).
3.4.2. Tipul real .
Tipul real reprezint• o submul•ime finit• de numere reale aflate în
intervalul [-vmax, vmax], submul•ime care depinde de modul de reprezentare a
numerelor reale în calculatorul folosit. Deci vmax este o constant• real• care
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 8/10
difer• de la un calculator la altul, dar nu e o constant• predefinit• ca Maxint în
cazul tipului Integer .
Opera• iile definite între valori de tip real sunt adunarea, sc•derea,
înmul•irea si împ•r•irea, notate prin +, -, *, respectiv / . De remarcat c• aceste
opera•ii sunt definite •i când un operand este întreg ,iar cel•lalt real, rezultatulfiind real, datorit• conversiei implicite a tipului întreg la real.
Men•ionam c• în reprezentarea oric•rui num•r real în calculator se re•in un
num•r finit de cifre semnificative. Din aceast• cauz• rezultatul unei opera•ii cu
numere reale este aproximativ. Pentru a în•elege exact aceste afirma•ii este
necesar• cunoa•terea reprezent•rii numerelor în calculator.
3.4.3. Tipul boolean.
Domeniul tipului boolean const• din mul•imea valorilor logice "fals" •i
"adev•rat", marcate prin constantele False respectiv True. Ordinea este False <
True. Opera• iile logice binare sunt marcate prin And (conjunc•ia logic•) •i Or
(disjunc•ia logic•), iar nega•ia (opera•ie logic• unar•) prin Not. Operatorii
rela•ionali au în acest caz semnifica•ii logice. Deci prin =, <>, <=, >=, sunt notate
echivalen•a, neechivalen•a (Sau exclusiv), implica•ia, respectiv implica•ia
invers•.
3.4.4. Tipul caracter.
Tipul caracter se define•te prin cuvântul Char •i are ca domeniu de valori
mul•imea tuturor caracterelor (litere mari •i mici, cifre •i caractere afi•abile). Nu
exist• opera• ii definite asupra valorilor de tip Char . Pe lânga func•iile definite
pentru argument de orice tip ordinal, pentru tipul caracter mai întâlnim •i func•ia
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 9/10
Chr . Pentru i întreg, Chr(i) furnizeaz• caracterul de rang i din domeniul tipului
Char . Se observ• c•
Ord( Chr(i) ) = i •i Chr( Ord(c) ) = c .
3.4.5. Tipul enumerare.
Tipul enumerare se specific• prin scrierea valorilor acestui tip între
paranteze:
<Tip_enumerare> ::= ( < Lista_id > )
identificatorii din paranteze constituind valorile tipului enumerare definit.
Ordinea lor este cea dat• de ordinea identificatorilor în lista. Nu este permis ca o
valoare a acestui tip (deci un identificator) sa fie reutilizat în defini•ia altui tip.
Exemplu : $
(Luni, Mar • i, Miercuri, Joi, Vineri, Sâmbata, Duminic• )
(Prim• var • , Var • , Toamn• , Iarn• )
Pentru aceste exemple avem :
Pred(Toamn• ) = Var •
Succ(Joi) = Vineri
Ord(Luni) = 0
Ord(Iarn• ) = 3 .
Men•ion•m c• valorile variabilelor de tip enumerare nu pot fi citite si nici tip•rite.
3.4.6. Tipul subdomeniu.
Tipul subdomeniu poate fi definit din orice tip ordinal prin precizarea
limitelor inferioar• •i superioar• care definesc valorile subdomeniului. Tipulordinal pentru care se define•te subdomeniul se nume•te tip de baz• al
subdomeniului. Avem:
<tip-subdomeniu> ::= constanta1 .. constanta2
unde constanta1 si constanta2 sunt valori ale tipului ordinal de baz• care satisfac
inegalitatea : Ord(constanta1 ) ≤ Ord(constanta2 ).
8/7/2019 CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date
http://slidepdf.com/reader/full/cursul-03-limbajul-pascal-structura-programelor-tipuri-simple-de-date 10/10