Structura generala a programelor pascal
Pentru evidentierea relatiilor intre diverse constructii sintactice, in cele ce urmeaza se face o abordare descendenta, pornind de la axioma gramaticii limbajului. In forma sa cea mai generala, structura unui program Pascal poate fi descrisa prin diagramele de sintaxa. Antetul programului, atunci cand este prezent, are rol pur informativ. Totodata, posibilitatea definirii unor eventuali parametri este mentionata numai pentru asigurarea similitudinii cu Pascal Standard, fara a avea nici o semnificatie in Turbo Pascal. Clauza USES, cu caracter optional, permite specifica-rea unitatilor (UNIT-urilor) folosite in programul respectiv. Principala componenta a unui program este blocul, care reprezinta corpul acestuia. Blocul (diagramele) este format din declaratii(instructiuni neexecutabile) si instructiuni (instructiuni executabile).
· Partea declarativă a blocului este subimpartita in:
- partea de declarare a etichetelor (LABEL), in care se declara etichetele folosite in partea de instructiuni a blocului;
- partea de declarare a tipurilor (TYPE), care contine definirea unor tipuri de date pe baza altor tipuri definite anterior, standard sau ale utilizatorului;
- partea de declarare a constantelor (CONST), care cuprinde declararea constantelor simbolice (identificatori asociati unor constante) si a constantelor cu tip (variabile initializate in momentul compilarii);
- partea de declarare a variabilelor (VAR), care contine definirea tuturor variabilelor specifice blocului respectiv;
- partea de declarare a procedurilor si/sau functiilor.
Procedurile si functiile sunt subprograme interne sau externe. Constructiv, indiferent de tipul sau, un subprogram este format dintr-un antet si un corpAntetul unui subprogram de tip PROCEDURE precizeaza numele (identificatorul) acestuia si lista parametrilor formali, care in momentul ape-larii vor fi pusi in corespondenta cu parametrii actuali, asigurand schimbul de informatii in contextul de apelare. Parametrii sunt de intrare si/sau de iesire, ceea ce inseamna ca un subprogram PROCEDURE returneaza zero, unu sau mai multe rezultate. Intrucat un subprogram de tip FUNCTION returneaza (cel putin) un rezultat asociat cu numele functiei, in antetul sau se include si o declaratie de tip corespunzand acestui rezultat. Corpul procedurilor interne contine drept princi-pala componenta blocul, care are aceeasi structura ca si in cazul programului.
· Corpul programului este formata din instructi-unile executabile prin care se codifica algoritmul problemei. Termenul instructiune desemneaza generic tipurile de instructiuni pe care le poseda limbajul. Se mentionea-za ca insasi constructia BEGIN...END reprezinta o instructiune compusa (care, la limita, poate sa fie vida). Analizand alternativele sau revenirile din dia-gramele de sintaxa, pot fi precizate urmatoarele aspecte practice: • partea de declaratii poate sa lipseasca (rezul-ta ca in partea de instructiuni nu se refera date declarate in program); • partea de declaratii, atunci cand este prezen-ta, o precede obligatoriu pe cea de instructiuni; • ordinea diverselor componenete ale partii de declaratii este oarecare, cu conditia ca orice referire a unui obiect (tip, variabila, constanta etc.) sa fie precedata de definirea sa; • procedurile (functiile) interne sunt optionale, iar cand sunt prezente se definesc anterior partii de instructiuni care le refera; • pot fi realizate subprograme imbricate, adica definirea de proceduri/functii in cadrul altor proceduri/functii.
In Pascal, tipurile de date sunt de 2 feluri: simple si structurate.Tipuri de date simple sunt impartite in tipuri ordinale si reale.
- Tipuri ordinale:
- Tipuri intregi:
- shortint
poate lua valori intre (-128, 127), stocat intern pe: 1 byte - byte
poate lua valori intre (0, 255),stocat intern pe: 1 byte - integer
poate lua valori intre (-32768, 32767), stocat intern pe: 2 bytes - word
poate lua valori intre (0, 65535), stocat intern pe: 2 bytes - longint
poate lua valori intre (-2147483648, 2147483647), stocat intern pe: 4 bytes - Tipul logic: boolean
poate lua ca valori doar TRUE sau FALSE, stocat intern pe: 1 byte - Tipul caracter: char
poate lua ca valoare orice caracter din ASCII (American Standard Code for Information Interchange), stocat intern pe: 1 byte - Tipul enumerare
- Tipul subdomeniu
- Tipuri reale
- single
poate lua valori intre (1.5E-45, 3.4E38)
stocat intern pe: 4 bytes - real
poate lua valori intre (2.9E-39, 1.7E38)
stocat intern pe: 6 bytes - double
poate lua valori intre (5.0E-324, 1.7E308)
stocat intern pe: 8 bytes - extended
poate lua valori intre (3.4E-4932, 1.1E4932)
stocat intern pe: 10 bytes - comp
poate lua valori intre (-2^63+1, 2^63-1)
stocat intern pe: 8 bytes
- single
- Tipurile structurate:
- tipul tablou: array
folosit pentru a memora un sir de valori - tipul sir de caractere: string
este o secventa dinamica (ca lungime) de caractere.
poate lua ca valori un sir de caractere din ASCII (maxim 255 de caractere)
stocat intern pe: maxim 256 de bytes (primul e pentru a stoca lungimea sirului (spre deosebire de C / C++, unde sirul se termina cu caracterul #0 - null terminated strings) - tipul inregistrare: record
folosit pentru a memora valori de mai multe tipuri in acelasi loc - tipul obiect: object
folosit in programarea pe obiecte (OOP) - tipul multime: set
folosit pentru a desemna o multime (ca in matematica) de elemente de acelasi tip - tipul fisier: text, file
folosit la prelucrarea fisierelor - tipul referinta: pointer
folosit la prelucrarea dinamica a memoriei - tipurile procedurale: function, procedure
extensie a Pascalului standard, folosite pentru a putea folosi subprogramele ca variabile
Tipuri ordinale
Tipurile ordinale de date sunt shortint, byte, integer, word , longint.
In operatii, toate tipurile intregi de date sunt compatibile intre ele. Operatorii aritmetici care se pot folosi sunt:- + (semnul plus), pentru adunare
- - (semnul minus), pentru scadere
- * (semnul asterisc), pentru inmultire
- DIV, impartire intreaga - se obtine catul
- MOD, impartire intreaga - se obtine restul
- / (semnul slash), impartire reala - se poate aplica asupra operanzilor intregi, dar rezultatul este real.
Tipul boolean este ordinal, enumerativ: (FALSE, TRUE). Operatorii logici care i se pot aplica sunt: - tipul tablou: array
- NOT, operatia logica "nu"
- AND, operatia logica "si"
- OR, operatia logica "sau"
- XOR, operatia logica "sau exclusiv" - este adevarat daca un operand este adevarat, dar nu amandoi. A XOR B inseamna "A sau B, dar nu amandoua".
- Tipul Char
Tipul char este ordinal.
Valoarea unei variabile de acest tip se va scrie intre ghilimele.
Ex. 'A' sau 'a' (sunt distincte !)
Operatorii si functiile care se pot aplica asupra acestui tip de data sunt:- +, concateneaza 2 sau mai multe caractere, dar rezultatul este de tip string
- CHR, este o functie care se aplica datelor de tip intreg, dar rezultatul este de tip Char. Returneaza caracterul cu codul respectiv din codul ASCII. Alternativ, se poate folosi #.
Ex. Chr(65) este egal cu #65, ambele avand valoarea A (caracter)
Tipuri reale
Tipurile reale de date sunt single, real, double, extended si comp.
Datele sunt memorate intern in virgula mobila.
Tipul comp desemneaza o data reala particulara, avand numai valori intregi. In operatii intra ca o data reala, avand partea zecimala egala cu zero.
Operatorii aritmetici (si functii) care se pot aplica tipurilor reale sunt:- +, pentru adunare
- -, pentru scadere
- *, pentru inmultire
- /, impartire reala (cu virgula)
- Trunc, functie care returneaza partea intreaga a numarului
- Round, functie care rotunjeste un numar. Daca partea zecimala este de 0.5 atunci numarul este rotunjit in sus
Niciun comentariu:
Trimiteți un comentariu