cursul 03 limbajul pascal. structura programelor tipuri simple de date

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 lim bajului.  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 c onstruc•ii între ac olade { ... } se indic• faptul c• acea construc•ie poate 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.

Upload: krugerr

Post on 09-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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.

Page 2: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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

Page 3: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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.

Page 4: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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 .

Page 5: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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• • >

Page 6: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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;

Page 7: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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

Page 8: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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

Page 9: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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 ).

Page 10: CURSUL 03 Limbajul Pascal. Structura Programelor Tipuri Simple de Date

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