Sunteți pe pagina 1din 10

3. Limbajul Pascal : elementele limbajului, structura programelor, tipuri simple de date.

Cu toate c limbajul Pascal a fost conceput pentru nvarea programrii, el este folosit astzi la rezolvarea celor mai diverse probleme, de orice nivel.

3.1. Vocabularul i sintaxa limbajului.

Limbajul Pascal este construit folosind un alfabet ce conine caracterele ntlnite n scrierea obinuit i cea matematic (cu ajutorul crora se vor scrie toate instruciunile 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 lecii vom utiliza notaia BNF prezentat n continuare. Prin scrierea unei construcii ntre acolade { ... } se indic faptul c acea construcie poate s se repete de ori cte ori (inclusiv de zero ori). Parantezele drepte [ , ] sunt folosite pentru scrierea construciilor opionale (ceea ce se afl nchis ntre aceste paranteze poate lipsi). Se observ c n sintaxa de mai sus se folosesc metasimbolurile [ , ] , { i } , avnd alt semnificaie fa de caracterele [, ], { i } permise i folosite n anumite construcii Pascal. Ca n toate limbajele de programare i n Pascal se folosesc frecvent identificatorii. Prin identificator, notat n definiiile sintactice care urmeaz prin <id>, se nelege o secvena de litere (mari sau mici) i cifre, primul caracter fiind obligatoriu o liter. De asemenea, n construcia identificatorilor este permis i caracterul _. Acesta se recomand s se foloseasc n scrierea identificatorilor compui din dou cuvinte unite prin acest caracter.

19

O parte dintre identificatori au un rol special n definirea instruciunilor limbajului Pascal, (fiind Cuvinte rezervate). Acetia sunt:

And Array Begin Case Const

Div Do

File For

In Label Mod Nil Not

Of Or Packed Procedure Program

Record Repeat Set Then To

Type Until Var While With

DownTo Function Else End GoTo If

Cuvintele rezervate nu pot fi folosite n program n alt scop dect cel fixat, acela de a defini sintaxa instruciunilor Pascal. Pentru a fi mai uor descoperite ntr-un program acestea vor fi scrise n exemplele ce urmeaz nclinat, iar primul caracter va fi litera mare (ca i n lista de mai sus).

3.2. Structura unui program Pascal.


Un program Pascal const dintr-un antet, o parte de declaraii i instruciunile care formeaz programul principal. El are urmatoarea structur : <program> ::= <antet_program> ; <bloc> . unde <antet_program> ::= Program <id> [ ( <lista_id> ) ] iar <bloc> ::= <lista_decl> ; <ins_compus> Construciile <lista_decl> i <ins_compus> vor fi complet ntelese puin mai trziu, dup ce se vor prezenta declaraiile i instruciunile limbajului Pascal. n general prin <lista_el> se nelege un simplu element <el>, sau o succesiune de elemente <lista_el> ::= <el> { , <el> }

20

n definiia blocului elementul <decl> este metasimbolul folosit pentru declaraia Pascal care va fi definit n lecia urmtoare (4), iar <ins> este metasimbolul folosit pentru a nota o instruciune Pascal i va fi definit n lecia 5. Aa cum se va vedea mai trziu, n definiia declaraiilor de procedur se folosete metasimbolul < bloc >. Deci un bloc care conine o procedur conine un alt bloc care, la rndul lui, poate conine alt bloc. Oriunde n textul programului pot fi incluse comentarii. Acestea sunt folosite de ctre utilizatori n scopul mbuntirii claritii programului i a explicrii semnificaiei unor notaii sau pari 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 explicaii utile omului. Un comentariu este orice text nchis ntre acolade <comentariu> ::= { text } | (* text *) Un exemplu de program Pascal este urmtorul : $ Program Suma; Var a,b : Real; Begin Write ( Dati doua numere separate prin spatiu, apoi Enter : ); Readln(a,b); Write ( Suma este ,a+b); Readln End. { Tiparete suma a dou numere reale,} { a i b, citite de la tastatur.}

21

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 execuiei 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 rndul 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 numr real poate fi n forma normal sau n forma exponential. n forma normal este obligatoriu att punctul zecimal "." ct i partea ntreag i partea fracionar a numrului real. De exemplu 3.14159 1.72 -5.749 sunt constante reale, n timp ce scrierile .23 103. 375. -123.+44 sunt greite. n forma exponential, un numr ntreg sau un numr real n forma normal este urmat de litera E sau e i de un numr ntreg numit exponent. Valoarea numrului real scris n aceast form este egal cu numrul scris n faa literei E nmulita 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 . $ 103.0 0.23 $

22

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 concatenrii mai multor constante de tip caracter. Dei s-a afirmat la nceput c literele mari se consider identice cu cele mici, singura excepie este folosirea lor n constanta ir de caractere. Constanta booleana reprezint o valoare logic i se reprezint prin identificatorii True pentru valoarea logic "adevrat", respectiv False pentru valoarea logic "fals". Variabila corespunde mrimii care i poate schimba valoarea n timpul execuiei 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 execuiei 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 nelege o mulime de valori (domeniul tipului) i o mulime de operaii ce pot fi efectuate cu aceste valori. Unele tipuri de date sunt predefinite, iar altele sunt definite de ctre programator 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>

23

Tipul de date <tip_simplu> se definete n continuare, iar celelalte tipuri vor fi definite n leciile urmtoare. Tipurile simple de date conin 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> <tip_ntreg> ::= Real ::= Integer

<tip_boolean> ::= Boolean <tip_caracter> ::= Char Tipurile Integer i Real se refer la mulimile Z i R, dar mulimea valorilor fiecrui tip este finit i depinde de calculatorul folosit. Dei funciile Pascal vor fi indicate n seciunea urmtoare prezentm aici cteva funcii definite asupra valorilor de tip ordinal sau de tip caracter. Pentru fiecare tip ordinal, deci i pentru tipul caracter, mulimea valorilor este finit i ordonat. Pentru obinerea rangului elementului x n aceast mulime ordonat se poate folosi funcia Ord(x). Pentru primul element p din aceast mulime avem Ord(p) = 0. Funcia Succ furnizeaz succesorul unui element n aceast mulime, 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 definiiile de mai sus se deduc uor urmtoarele proprieti: Ord( Succ(x) ) = Ord(x) + 1;

24

Ord( Pred(x) ) = Ord(x) 1.

3.4.1. Tipul ntreg.

Domeniul tipului ntreg este submulimea numerelor ntregi cuprinse n intervalul [-Maxint-1, Maxint], unde Maxint este o constant ntreag predefinit a crei valoare depinde de calculatorul folosit i este determinat de mrimea locaiei pe care se reprezint un numr ntreg n calculatorul respectiv (de exemplu Maxint = 32767). Operaiile definite ntre valori de tip ntreg sunt +,,* , DIV, MOD i /, iar semnificaia lor se d n tabelul urmtor:

+
*

Semnificaia lui x y adunare scdere nmulire mprirea ntreag (11 DIV 4 este 2) mprirea real (11/4 este 2.75) restul mpririi ntregi a lui x la y ( 11 MOD 4 = 3 )

DIV / MOD

De asemenea, prin se noteaz i o operaie unar (x fiind opusul lui x faa de operaia de adunare).

3.4.2. Tipul real. Tipul real reprezint o submulime finit de numere reale aflate n intervalul [-vmax, vmax], submulime care depinde de modul de reprezentare a numerelor reale n calculatorul folosit. Deci vmax este o constant real care

25

difer de la un calculator la altul, dar nu e o constant predefinit ca Maxint n cazul tipului Integer. Operaiile definite ntre valori de tip real sunt adunarea, scderea, nmulirea si mprirea, notate prin +, -, *, respectiv / . De remarcat c aceste operaii sunt definite i cnd un operand este ntreg ,iar cellalt real, rezultatul fiind real, datorit conversiei implicite a tipului ntreg la real. Menionam c n reprezentarea oricrui numr real n calculator se rein un numr finit de cifre semnificative. Din aceast cauz rezultatul unei operaii cu numere reale este aproximativ. Pentru a nelege exact aceste afirmaii este necesar cunoaterea reprezentrii numerelor n calculator.

3.4.3. Tipul boolean.

Domeniul tipului boolean const din mulimea valorilor logice "fals" i "adevrat", marcate prin constantele False respectiv True. Ordinea este False < True. Operaiile logice binare sunt marcate prin And (conjuncia logic) i Or (disjuncia logic), iar negaia (operaie logic unar) prin Not. Operatorii

relaionali au n acest caz semnificaii logice. Deci prin =, <>, <=, >=, sunt notate echivalena, neechivalena (Sau exclusiv), implicaia, respectiv implicaia invers.

3.4.4. Tipul caracter. Tipul caracter se definete prin cuvntul Char i are ca domeniu de valori mulimea tuturor caracterelor (litere mari i mici, cifre i caractere afiabile). Nu exist operaii definite asupra valorilor de tip Char. Pe lnga funciile definite pentru argument de orice tip ordinal, pentru tipul caracter mai ntlnim i funcia

26

Chr. Pentru i ntreg, Chr(i) furnizeaz caracterul de rang i din domeniul tipului Char. Se observ c Ord( Chr(i) ) = i 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 definiia altui tip. Exemplu : (Luni, Mari, Miercuri, Joi, Vineri, Smbata, Duminic) (Primvar, Var, Toamn, Iarn) Pentru aceste exemple avem : Pred(Toamn) = Var Succ(Joi) = Vineri Ord(Luni) = 0 Ord(Iarn) = 3 . Menionm c valorile variabilelor de tip enumerare nu pot fi citite si nici tiprite. $ i Chr( Ord(c) ) = c .

3.4.6. Tipul subdomeniu. Tipul subdomeniu poate fi definit din orice tip ordinal prin precizarea limitelor inferioar i superioar care definesc valorile subdomeniului. Tipul ordinal pentru care se definete subdomeniul se numete 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 ).

27

De exemplu: - subdomeniul ntregilor de la 1 pn la 20: 1..20 - subdomeniul zilelor lucrtoare: Luni .. Vineri - caracterele cifre zecimale: 0 .. 9. 3.4.7. Alte tipuri predefinite n Turbo Pascal.

Pe lnga tipurile prezentate mai sus, existente n limbajul Pascal standard, n Turbo Pascal exist cteva extensii importante. n primul rnd exist extinderi ale tipului Integer, prezentate n tabelul urmtor mpreun cu domeniile acestora.

Tipul
Byte ShortInt LongInt Word Comp

Domeniul
[0, 255] [-128, 127] [-231, 231-1] [ 0, 65535] [-2*1063+1, 2*1063-1]

Operaiile sunt cele precizate pentru tipul Integer, doar c domeniile difer. Ele sunt bine definite dac rezultatul face parte din domeniul menionat.

28

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