SEMANTICA LIMBAJULUI (TIPURI DE DATE, COMENZI)
SEMANTICA LIMBAJULUI (TIPURI DE DATE, COMENZI)
1. TIPURI SIMPLE DE DATE, TIPURI STANDARD
Orice tip de dată este definit de următoarele elemente:
• mulţimea de valori - domeniul tipului;
• regula de codificare a lor – modul în care se reprezintă datele în memorie;
• mulţimea de operaţii definite pe mulţimea valorilor.
Variabilele de tip standard sunt cele recunoscute de compilator (fără a fi definite în prealabil de programator).
După elementele care formează domeniul tipului deosebim:
• tipuri simple de date;
• tipuri compuse cu ajutorul altor tipuri.
TIPURILE SIMPLE DE DATE
În această categorie putem introduce următoarele tipuri de date:
• tipurile numerice: întregi INTEGER şi reale REAL;
• tipul caracter CHAR;
• tipul logic BOOLEAN;
• tipul enumerare – definit de utilizator;
• tipul subdomeniu – definit de utilizator.
Tipurile întreg, logic, caracter, enumerare şi subdomeniu se numesc TIPURI ORDINALE.
Funcţii definite pentru toate tipurile ordinale:
ORD(x) – determină obţinerea rangului elementului x (Primul element din mulţimea de valori are rangul 0 deci ORD(p) = 0)
• SUCC(x) – determină succesorul elementului x în domeniul de valori;
• PRED(x) – determină predecesorul elementului x în domeniul de valori.
Proprietăţi:
ORD(SUCC(x)) = ORD(x) + 1; ORD(PRED(x)) = ORD(x) - 1.
A) TIPURI ÎNTREGI
Tipul shortint: (întreg scurt cu semn)
- mulţimea valorilor [-128, 127];
- memorarea lor se realizează pe un singur octet;
- operaţiile sunt cele specificate la tipul integer.
Tipul integer: (întreg)
- mulţimea valorilor [-32768, 32767];
- memorarea lor se realizează pe doi octeţi;
- operaţiile definite între valorile de tip întreg sunt:
© - operatorul Semnificaţia x©y
+ Adunare
- Scădere
* Înmulţire
/ Împărţire reală (11/4 = 2.75)
DIV Câtul împărţirii întregi (11 DIV 4 = 2)
MOD Restul împărţirii întregi (11 MOD 4 = 3)
Tipul logint (întreg lung cu semn)
- mulţimea valorilor [-2147483648, 2147483647];
- reprezentarea lor se realizează pe patru octeţi;
Tipul byte:(întreg scurt fără semn)
- mulţimea valorilor numere naturale[0, 255];
- memorarea lor se realizează pe un octet;
Tipul word: (întreg fără semn)
- mulţimea valorilor numere naturale[0, 65535];
- memorarea lor se realizează pe doi octeţi.
Declararea variabilelor se face astfel:
Var a,b:integer;
c:word;
d:longint;
OPERATORI DE PRELUCRARE PE BIŢI
Operatorul NOT a:=NOTa ↔ toţi biţii care reţin 1 vor reţine 0 şi invers;
Ex: a:=11110000, a:= NOT a ↔ 00001111.
Operatorul SHL (operator binar) ↔ are rolul de a deplasa la stânga conţinutul biţilor primului operand cu un număr de poziţii dat de al doilea operand. Conţinutul primilor biţi se pierde, iar ultimii biţi vor conţine 0.
Ex: a: byte reţine valoarea 10000110, iar a SHL 2 va reţine valoarea 00011000.
Operaţia de deplasare la stânga cu o poziţie este echivalentă cu înmulţirea cu 2.
Operatorul SHR (operator binar) ↔ are rolul de a deplasa la dreapta conţinutul biţilor primului operand cu un număr de poziţii dat de al doilea operand. Conţinutul ultimilor biţi se pierde, iar primii biţi vor conţine 0.
Ex: a: byte reţine valoarea 10000110, iar a SHR 2 va reţine valoarea 00100001.
Operaţia de deplasare la dreapta cu o poziţie este echivalentă cu păstrarea câtului împărţirii la 2.
B) TIPUL CARACTER
se defineşte prin cuvântul CHAR;
domeniul tipului este mulţimea tuturor caracterelor (litere mari şi mici, cifre, alte caractere afişabile);
nu există operaţii definite pe acest tip;
declararea variabilelor se face în felul următor:
var a, b: char;
pe lângă operaţiile aplicabile pe tipurile ordinale, funcţia CHR returnează, pentru i[0..255]∩N, caracterul de rang i din domeniul tipului CHAR (codul ASCII al caracterului);
PROPRIETĂŢI:
ORD (CHR (i)) = i CHR (ORD (c)) = c
C) TIPURILE REALE
reprezintă valori în virgulă flotantă (valori reale);
• TIPUL REAL
• reprezintă o submulţime finită de numere reale aflate în intervalul[-vmax, vmin] unde -vmax reprezintă o constantă reală care diferă de la un calculator la altul dar nu este predefinită;
• operaţiile definite sunt: +, -, *, /;
• în reprezentarea oricărui număr real în calculator se reţine un număr finit de cifre semnificative. Spaţiul finit de reprezentare permite reprezentarea doar a unei aproximaţii a mulţimii numerelor reale din matematică. În plus, pentru un număr mare de operaţii cu numere reale, trebuie avută grijă la tratarea erorilor de trunchiere.
• TIPUL SINGLE, DOUBLE, EXTENDED, COMP (extensii Borland ale tipului real care măresc precizia de reprezentare)
• diferă prin valoarea domeniului;
D) TIPUL LOGIC
variabilele de acest tip pot reţine numai două valori TRUE şi FALSE;
ordinea este TRUE > FALSE;
OPERAŢIILE logice definite sunt: AND (conjuncţia logică), OR (disjuncţia logică), NOT (negaţia – operaţie logică unară);
OPERATORII relaţionali au semnificaţii logice în acest caz: = (echivalenţa); <> (neechivalenţă); <= (implicaţia);<= (implicaţia inversă);
declaraţia acestor variabile se face în mod foarte asemănător declarării altor tipuri de variabile:
var mama: boolean;
pentru variabile de acest tip este permisă operaţia de atribuire şi cea de scriere dar NU este permisă operaţia de citire.
E) TIPUL ENUMERARE
este un tip ordinal definit de utilizator;
se specifică prin scrierea valorilor acestui tip între paranteze;
Ex.: (Luni, Marţi, Miercuri, Joi, Vineri)
unde PRED(Marţi) = Luni;
SUCC (Marţi) = Miercuri;
ORD (Luni) = 0
ORD (Joi) = 3
declaraţia:
var nume_var: (lista_valori_enumerare)
variabilele de acest tip nu pot fi citite şi nici tipărite.
Ex:
var Zile_Săptămână: (Luni,Marţi,Miercuri,Joi,Vineri,Sâmbătă,Duminică)
F) TIPUL SUBDOMENIU
este un tip ordinal bazat pe un alt tip ordinal predefinit sau definit de utilizator;
se poate defini ca orice tip ordinal prin precizarea Li şi Lf care definesc valorile limită ale subdomeniului; valorile Li şi Lf aparţin ambele aceluiaşi tip ordinal şi se află în relaţia Li Lf.
Ex:
subdomeniul zilelor lucrătoare: Luni..Vineri
subdomeniul întregilor de la 1 la 35: 1..35
toate literele mici: `a`..`z`
CONSTANTE
- nu îşi modifică valoarea în timpul execuţiei unui program;
- sunt precizate prin sintaxă şi au o valoare bine definită;
Constantele pot fi:
numerice: întregi şi reale;
şir de caractere;
simbolice.
Constantele numerice întregi: reprezintă întregi din matematică cu sintaxa obişnuită. Ex. 15, -212 etc.
Constantele numerice reale: pot fi scrise în două forme:
-forma normală: sunt obligatorii partea reală, punctul zecimal şi partea fracţionară. Ex. 3.25;
-forma exponenţială: număr întreg sau real urmat de ‘E’ sau ‘e’ şi de un număr întreg numit exponent. Ex. 123.456E-3 care reprezintă 0.123456;
Constantele şir de caractere: secvenţă de caractere închisă între apostrofuri. Valoarea constantei este reprezentată de textul dintre apostrofuri. Dacă trebuie să apară caracterul apostrof, acesta trebuie dublat. Ex. ‘mama’ sau ‘Mam’’Mare’. Dacă între apostroafe avem închis un singur caracter, constanta se numeşte constantă de tip “caracter”. O constantă şir de caractere se obţine prin concatenarea mai multor constante de tip „caracter”.
În constantele „şir de caractere” literele mari şi mici nu sunt echivalente.
Constantele simbolice
au în program un anumit nume;
numele pot fi predefinite (ex: false, true, maxint etc.) sau pot fi date de programator (ex: PI=3,14);
declaraţia constantelor se face în secţiunea const a zonei de declaraţii a programului principal.
iniţializarea unei constante se face în momentul declaraţiei fie printr-o valoare constantă conformă tipului fie printr-o expresie care se evaluează la un tip compatibil cu tipul constantei. Dacă nu se precizează un tip, compilatorul alege tipul în funcţie de valoarea atribuită constantei.
const
identificator[:tip] = expresie;
____________________
identificator = expresie;
expresiile trebuie evaluate la compilare.
2. OPERAŢII DE INTRARE (CITIRE) ŞI IEŞIRE (SCRIERE)
CITIREA → READ şi READLN
Read (lista_variabile) – se citesc de la tastatură valori care se depun în variabilele din lista în ordinea în care ele apar; citirea se termină după realizarea ultimei atribuiri.
Readln (lista_variabile) – la fel cu READ, dar în plus aşteaptă un ENTER ca şi confirmare pentru încheierea citirii.
SCRIEREA → WRITE şi WRITELN
Write (lista_parametri) – se afişează fiecare parametru în conformitate cu natura lui; cursorul rămâne după ultimul caracter afişat;
Writeln (lista_parametri) – la fel cu WRITE dar cursorul sare la prima poziţie a liniei următoare celei în care s-a realizat afişarea.
Lista_parametri este formată din mesaje (şiruri de caractere) afişate exact cum au fost concepute şi variabile (având un anumit tip) pentru care se afişează valoarea asociată, conform tipului căruia îi aparţin (tipul declarat al variabilei).
Exemple:
Write (a) unde a este o variabilă → va scrie valoarea variabilei a din poziţia curentă a cursorului.
Writeln(b:m:n) unde b este o variabilă reală, m este numărul total de poziţii pe care se va scrie numărul real, n este numărul de poziţii pe care se va scrie partea zecimală, → va afişa valoarea variabilei b cu m cifre, dintre care n după virgulă (în partea zecimală).
READLN şi WRITELN pot apare şi ca instrucţiuni vide.
READLN – se utilizează pentru crearea unor puncte de întrerupere, unde se aşteaptă un ENTER din partea utilizatorului.
WRITELN – determină saltul cursorului pe rândul următor.
1. TIPURI SIMPLE DE DATE, TIPURI STANDARD
Orice tip de dată este definit de următoarele elemente:
• mulţimea de valori - domeniul tipului;
• regula de codificare a lor – modul în care se reprezintă datele în memorie;
• mulţimea de operaţii definite pe mulţimea valorilor.
Variabilele de tip standard sunt cele recunoscute de compilator (fără a fi definite în prealabil de programator).
După elementele care formează domeniul tipului deosebim:
• tipuri simple de date;
• tipuri compuse cu ajutorul altor tipuri.
TIPURILE SIMPLE DE DATE
În această categorie putem introduce următoarele tipuri de date:
• tipurile numerice: întregi INTEGER şi reale REAL;
• tipul caracter CHAR;
• tipul logic BOOLEAN;
• tipul enumerare – definit de utilizator;
• tipul subdomeniu – definit de utilizator.
Tipurile întreg, logic, caracter, enumerare şi subdomeniu se numesc TIPURI ORDINALE.
Funcţii definite pentru toate tipurile ordinale:
ORD(x) – determină obţinerea rangului elementului x (Primul element din mulţimea de valori are rangul 0 deci ORD(p) = 0)
• SUCC(x) – determină succesorul elementului x în domeniul de valori;
• PRED(x) – determină predecesorul elementului x în domeniul de valori.
Proprietăţi:
ORD(SUCC(x)) = ORD(x) + 1; ORD(PRED(x)) = ORD(x) - 1.
A) TIPURI ÎNTREGI
Tipul shortint: (întreg scurt cu semn)
- mulţimea valorilor [-128, 127];
- memorarea lor se realizează pe un singur octet;
- operaţiile sunt cele specificate la tipul integer.
Tipul integer: (întreg)
- mulţimea valorilor [-32768, 32767];
- memorarea lor se realizează pe doi octeţi;
- operaţiile definite între valorile de tip întreg sunt:
© - operatorul Semnificaţia x©y
+ Adunare
- Scădere
* Înmulţire
/ Împărţire reală (11/4 = 2.75)
DIV Câtul împărţirii întregi (11 DIV 4 = 2)
MOD Restul împărţirii întregi (11 MOD 4 = 3)
Tipul logint (întreg lung cu semn)
- mulţimea valorilor [-2147483648, 2147483647];
- reprezentarea lor se realizează pe patru octeţi;
Tipul byte:(întreg scurt fără semn)
- mulţimea valorilor numere naturale[0, 255];
- memorarea lor se realizează pe un octet;
Tipul word: (întreg fără semn)
- mulţimea valorilor numere naturale[0, 65535];
- memorarea lor se realizează pe doi octeţi.
Declararea variabilelor se face astfel:
Var a,b:integer;
c:word;
d:longint;
OPERATORI DE PRELUCRARE PE BIŢI
Operatorul NOT a:=NOTa ↔ toţi biţii care reţin 1 vor reţine 0 şi invers;
Ex: a:=11110000, a:= NOT a ↔ 00001111.
Operatorul SHL (operator binar) ↔ are rolul de a deplasa la stânga conţinutul biţilor primului operand cu un număr de poziţii dat de al doilea operand. Conţinutul primilor biţi se pierde, iar ultimii biţi vor conţine 0.
Ex: a: byte reţine valoarea 10000110, iar a SHL 2 va reţine valoarea 00011000.
Operaţia de deplasare la stânga cu o poziţie este echivalentă cu înmulţirea cu 2.
Operatorul SHR (operator binar) ↔ are rolul de a deplasa la dreapta conţinutul biţilor primului operand cu un număr de poziţii dat de al doilea operand. Conţinutul ultimilor biţi se pierde, iar primii biţi vor conţine 0.
Ex: a: byte reţine valoarea 10000110, iar a SHR 2 va reţine valoarea 00100001.
Operaţia de deplasare la dreapta cu o poziţie este echivalentă cu păstrarea câtului împărţirii la 2.
B) TIPUL CARACTER
se defineşte prin cuvântul CHAR;
domeniul tipului este mulţimea tuturor caracterelor (litere mari şi mici, cifre, alte caractere afişabile);
nu există operaţii definite pe acest tip;
declararea variabilelor se face în felul următor:
var a, b: char;
pe lângă operaţiile aplicabile pe tipurile ordinale, funcţia CHR returnează, pentru i[0..255]∩N, caracterul de rang i din domeniul tipului CHAR (codul ASCII al caracterului);
PROPRIETĂŢI:
ORD (CHR (i)) = i CHR (ORD (c)) = c
C) TIPURILE REALE
reprezintă valori în virgulă flotantă (valori reale);
• TIPUL REAL
• reprezintă o submulţime finită de numere reale aflate în intervalul[-vmax, vmin] unde -vmax reprezintă o constantă reală care diferă de la un calculator la altul dar nu este predefinită;
• operaţiile definite sunt: +, -, *, /;
• în reprezentarea oricărui număr real în calculator se reţine un număr finit de cifre semnificative. Spaţiul finit de reprezentare permite reprezentarea doar a unei aproximaţii a mulţimii numerelor reale din matematică. În plus, pentru un număr mare de operaţii cu numere reale, trebuie avută grijă la tratarea erorilor de trunchiere.
• TIPUL SINGLE, DOUBLE, EXTENDED, COMP (extensii Borland ale tipului real care măresc precizia de reprezentare)
• diferă prin valoarea domeniului;
D) TIPUL LOGIC
variabilele de acest tip pot reţine numai două valori TRUE şi FALSE;
ordinea este TRUE > FALSE;
OPERAŢIILE logice definite sunt: AND (conjuncţia logică), OR (disjuncţia logică), NOT (negaţia – operaţie logică unară);
OPERATORII relaţionali au semnificaţii logice în acest caz: = (echivalenţa); <> (neechivalenţă); <= (implicaţia);<= (implicaţia inversă);
declaraţia acestor variabile se face în mod foarte asemănător declarării altor tipuri de variabile:
var mama: boolean;
pentru variabile de acest tip este permisă operaţia de atribuire şi cea de scriere dar NU este permisă operaţia de citire.
E) TIPUL ENUMERARE
este un tip ordinal definit de utilizator;
se specifică prin scrierea valorilor acestui tip între paranteze;
Ex.: (Luni, Marţi, Miercuri, Joi, Vineri)
unde PRED(Marţi) = Luni;
SUCC (Marţi) = Miercuri;
ORD (Luni) = 0
ORD (Joi) = 3
declaraţia:
var nume_var: (lista_valori_enumerare)
variabilele de acest tip nu pot fi citite şi nici tipărite.
Ex:
var Zile_Săptămână: (Luni,Marţi,Miercuri,Joi,Vineri,Sâmbătă,Duminică)
F) TIPUL SUBDOMENIU
este un tip ordinal bazat pe un alt tip ordinal predefinit sau definit de utilizator;
se poate defini ca orice tip ordinal prin precizarea Li şi Lf care definesc valorile limită ale subdomeniului; valorile Li şi Lf aparţin ambele aceluiaşi tip ordinal şi se află în relaţia Li Lf.
Ex:
subdomeniul zilelor lucrătoare: Luni..Vineri
subdomeniul întregilor de la 1 la 35: 1..35
toate literele mici: `a`..`z`
CONSTANTE
- nu îşi modifică valoarea în timpul execuţiei unui program;
- sunt precizate prin sintaxă şi au o valoare bine definită;
Constantele pot fi:
numerice: întregi şi reale;
şir de caractere;
simbolice.
Constantele numerice întregi: reprezintă întregi din matematică cu sintaxa obişnuită. Ex. 15, -212 etc.
Constantele numerice reale: pot fi scrise în două forme:
-forma normală: sunt obligatorii partea reală, punctul zecimal şi partea fracţionară. Ex. 3.25;
-forma exponenţială: număr întreg sau real urmat de ‘E’ sau ‘e’ şi de un număr întreg numit exponent. Ex. 123.456E-3 care reprezintă 0.123456;
Constantele şir de caractere: secvenţă de caractere închisă între apostrofuri. Valoarea constantei este reprezentată de textul dintre apostrofuri. Dacă trebuie să apară caracterul apostrof, acesta trebuie dublat. Ex. ‘mama’ sau ‘Mam’’Mare’. Dacă între apostroafe avem închis un singur caracter, constanta se numeşte constantă de tip “caracter”. O constantă şir de caractere se obţine prin concatenarea mai multor constante de tip „caracter”.
În constantele „şir de caractere” literele mari şi mici nu sunt echivalente.
Constantele simbolice
au în program un anumit nume;
numele pot fi predefinite (ex: false, true, maxint etc.) sau pot fi date de programator (ex: PI=3,14);
declaraţia constantelor se face în secţiunea const a zonei de declaraţii a programului principal.
iniţializarea unei constante se face în momentul declaraţiei fie printr-o valoare constantă conformă tipului fie printr-o expresie care se evaluează la un tip compatibil cu tipul constantei. Dacă nu se precizează un tip, compilatorul alege tipul în funcţie de valoarea atribuită constantei.
const
identificator[:tip] = expresie;
____________________
identificator = expresie;
expresiile trebuie evaluate la compilare.
2. OPERAŢII DE INTRARE (CITIRE) ŞI IEŞIRE (SCRIERE)
CITIREA → READ şi READLN
Read (lista_variabile) – se citesc de la tastatură valori care se depun în variabilele din lista în ordinea în care ele apar; citirea se termină după realizarea ultimei atribuiri.
Readln (lista_variabile) – la fel cu READ, dar în plus aşteaptă un ENTER ca şi confirmare pentru încheierea citirii.
SCRIEREA → WRITE şi WRITELN
Write (lista_parametri) – se afişează fiecare parametru în conformitate cu natura lui; cursorul rămâne după ultimul caracter afişat;
Writeln (lista_parametri) – la fel cu WRITE dar cursorul sare la prima poziţie a liniei următoare celei în care s-a realizat afişarea.
Lista_parametri este formată din mesaje (şiruri de caractere) afişate exact cum au fost concepute şi variabile (având un anumit tip) pentru care se afişează valoarea asociată, conform tipului căruia îi aparţin (tipul declarat al variabilei).
Exemple:
Write (a) unde a este o variabilă → va scrie valoarea variabilei a din poziţia curentă a cursorului.
Writeln(b:m:n) unde b este o variabilă reală, m este numărul total de poziţii pe care se va scrie numărul real, n este numărul de poziţii pe care se va scrie partea zecimală, → va afişa valoarea variabilei b cu m cifre, dintre care n după virgulă (în partea zecimală).
READLN şi WRITELN pot apare şi ca instrucţiuni vide.
READLN – se utilizează pentru crearea unor puncte de întrerupere, unde se aşteaptă un ENTER din partea utilizatorului.
WRITELN – determină saltul cursorului pe rândul următor.
Comentarii
Trimiteți un comentariu