Tematică științifică · 2.2
Elementele de bază ale limbajului
Vocabularul limbajului, tipurile de date simple, constantele, variabilele, operatorii și expresiile, cu exemplele date în C++, limbajul de examen, și în Python.
Un limbaj de programare este caracterizat prin sintaxă, semantică și vocabular. Sintaxa cuprinde regulile după care se scriu corect programele, semantica arată ce înseamnă construcțiile corecte sintactic, iar vocabularul este format din cuvintele care pot fi folosite într-un program.
Exemplele de mai jos sunt date în C++, limbaj care se poate folosi la proba scrisă, și în Python, cel studiat la clasa a IX-a din 2025. Comutatorul de la începutul lecției schimbă limbajul: se schimbă și explicația, nu doar codul, fiindcă cele două limbaje nu se deosebesc numai prin felul în care se scrie același lucru.
Vocabularul limbajului
Vocabularul este format din:
- setul de caractere;
- identificatori;
- cuvinte cheie;
- comentarii;
- separatori;
- operatori;
- tipuri de date.
Setul de caractere folosit la scrierea programelor în C++ este cel al codului ASCII: literele mari și mici ale alfabetului latin, cifrele sistemului zecimal și caracterele speciale. În Python, textul sursă folosește setul de caractere Unicode, codificat în UTF-8, deci identificatorii, șirurile de caractere și comentariile pot conține și litere cu diacritice.
Identificatorii denumesc elementele programului: constante, variabile, funcții.
Amândouă limbajele deosebesc literele mari de cele mici: A1 și a1 sunt
identificatori diferiți.
| Corect | Greșit | De ce |
|---|---|---|
suma | suma 1 | conține spațiu |
Suma | 1suma | începe cu cifră |
suma1 | suma+1 | conține un operator |
suma_1 | suma&nr | conține un caracter nepermis |
_suma | suma$ | conține un caracter nepermis |
În C++
Sunt cuvinte cheie, între altele: bool, break, case, char, const, default, do,
double, else, float, for, if, int, long, return, struct, switch, unsigned,
void, while.
Standardul limbajului nu impune o lungime maximă a identificatorului. Unele compilatoare vechi luau în considerare numai primele 31 de caractere, iar compilatoarele actuale, de exemplu GCC, deosebesc identificatorii după toate caracterele lor.
Se recomandă ca numele de variabile să înceapă cu literă mică, iar numele de constante să se scrie cu majuscule. Un nume nu se începe cu două liniuțe de subliniere: identificatorii care încep așa sunt folosiți de bibliotecile limbajului.
În Python
Sunt cuvinte cheie, între altele: and, break, class, def, elif, else, False, for,
if, import, in, is, None, not, or, return, True, while.
Lungimea identificatorului nu este limitată.
Se recomandă ca numele de variabile să se scrie cu litere mici, cu cuvintele legate prin liniuță de
subliniere (numar_maxim), iar numele constantelor cu majuscule.
În C++
// comentariu pe un singur rând
/* comentariu
pe mai multe rânduri */
În Python
# comentariu pe un singur rând
# pe mai multe rânduri se scrie
# câte un diez la începutul fiecăruia
În C++
Spațiul și tabulatorul separă cuvintele. Punctul și virgula, ;, separă instrucțiunile. Virgula separă elementele unei liste. Trecerea la rândul următor nu
are valoare de separator: o instrucțiune se poate întinde pe mai multe rânduri.
În Python
Spațiul separă cuvintele, iar virgula separă elementele unei liste. Instrucțiunile nu se încheie cu punct și virgulă: fiecare se scrie pe rândul ei, iar trecerea la rândul următor le desparte.
Spațiul de la începutul rândului nu mai este liber, ca în C++: indentarea arată blocul din care face parte fiecare instrucțiune. Un rând indentat greșit schimbă înțelesul programului sau dă eroare.
Tipurile de date
În C++
Tipurile standard, numite și tipuri de bază, sunt:
| Tipul | Ce reține |
|---|---|
char | caractere |
int | numere întregi |
float, double | numere reale |
void | tip neprecizat |
Tipul datei hotărăște dimensiunea zonei de memorie alocate și, o dată cu ea, domeniul de valori.
Dimensiunea depinde de compilator și de sistemul de calcul, în afară de char, care ocupă
întotdeauna un octet. La compilatoarele vechi, pentru sisteme pe 16 biți, int ocupa 2 octeți. La
compilatoarele actuale, de exemplu GCC, folosit în Code::Blocks, pe sisteme de calcul pe 32 sau pe
64 de biți, int ocupă 4 octeți.
Modificatorii de tip schimbă domeniul de valori și memoria ocupată: signed, unsigned,
short, long. La compilatoarele actuale:
| Tipul | Dimensiunea | Domeniul de valori |
|---|---|---|
char | 8 biți | −128 … 127 |
unsigned char | 8 biți | 0 … 255 |
short | 16 biți | −32 768 … 32 767 |
unsigned short | 16 biți | 0 … 65 535 |
int | 32 biți | −2 147 483 648 … 2 147 483 647 |
unsigned int | 32 biți | 0 … 4 294 967 295 |
long | 32 biți sub Windows, 64 biți sub Linux pe 64 de biți | ca int, respectiv ca long long |
long long | 64 biți | −9 223 372 036 854 775 808 … 9 223 372 036 854 775 807 |
unsigned long long | 64 biți | 0 … 18 446 744 073 709 551 615 |
float | 32 biți | ±1,2·10⁻³⁸ … ±3,4·10³⁸, cu 6–7 cifre semnificative |
double | 64 biți | ±2,2·10⁻³⁰⁸ … ±1,7·10³⁰⁸, cu 15–16 cifre semnificative |
long double | 80 biți folosiți, din 12 sau 16 octeți ocupați | ±3,4·10⁻⁴⁹³² … ±1,1·10⁴⁹³², cu 18–19 cifre semnificative |
Cunoașterea domeniului de valori este ceea ce hotărăște alegerea tipului. O valoare întreagă care nu
depășește în modul aproximativ 2·10⁹, de exemplu un număr natural cu cel mult nouă cifre, se
reține în int. Pentru valori mai mari, de exemplu un număr natural cu zece cifre sau mai multe,
cel mult 18, se folosește long long. Tot long long se folosește pentru produsul a două valori de
tip int care poate depăși domeniul lui int.
Modificatorii se aplică după câteva reguli:
- pe
intse pot aplica toți, iar cuvântulintpoate lipsi:shortînseamnăshort int, iarunsigned long longînseamnăunsigned long long int; - pe
charse aplică numaisignedșiunsigned; - pe tipurile reale se aplică numai
long, și numai pedouble:long double; shortocupă cel puțin 2 octeți, dar nu mai mult decâtint,longcel puțin 4 octeți, dar nu mai puțin decâtint, iarlong longcel puțin 8 octeți.
Tipul logic este bool, cu valorile true și false, reținute ca 1 și 0. Orice valoare
numerică se poate folosi și ca valoare logică: 0 înseamnă fals, iar orice altă valoare înseamnă
adevărat. O expresie logică dă 1 pentru adevărat și 0 pentru fals.
int r = (5 > 3); // r primește 1
if (0) // condiția este falsă
cout << "nu se afiseaza";
Tipul char reține un caracter prin codul lui ASCII. Pentru calculator, caracterul 'A' și
numărul 65 sunt aceeași valoare. De aici urmează:
- unei variabile
chari se poate atribui un caracter sau un cod:char c = 'A';șichar c = 65;au același efect; - într-o expresie aritmetică se folosește codul:
'A' + 1dă 66, iarchar d = 'A' + 1;reține literaB; - la citire se ia un singur caracter, iar la afișarea unei variabile
charse scrie caracterul, nu codul; codul se afișează cu o conversie,(int)c.
| Expresia | Ce se afișează | De ce |
|---|---|---|
'2' | 2 | caracterul cifră |
'2' + 3 | 53 | codul lui '2' este 50, iar rezultatul adunării este de tip int |
(char)('2' + 3) | 5 | 53 este codul caracterului '5' |
x + 3, cu char x = 2; | 5 | x reține valoarea 2, nu caracterul '2' |
Biblioteca <cctype> are funcții pentru caractere:
| Funcția | Ce face |
|---|---|
isalpha(c) | adevărat dacă c este literă |
isdigit(c) | adevărat dacă c este cifră |
isupper(c), islower(c) | adevărat dacă c este literă mare, respectiv mică |
toupper(c), tolower(c) | litera mare, respectiv mică, corespunzătoare lui c |
Cifra dintr-un caracter se obține scăzând codul lui '0': '7' - '0' dă 7.
Tipurile reale float și double ocupă 4, respectiv 8 octeți. Numărul de zecimale afișate se
stabilește cu setprecision din biblioteca <iomanip>. Singur, setprecision(n) fixează numărul
total de cifre semnificative; precedat de fixed, fixează numărul de zecimale.
float x = 1.23456;
cout << setprecision(2) << x; // 1.2
cout << fixed << setprecision(2) << x; // 1.23
Tipurile definite de utilizator. Instrucțiunea typedef dă un nume nou unui tip existent. Nu
se creează un tip nou: variabilele declarate cu numele nou au aceleași proprietăți ca cele de tipul
inițial. Tipul se definește înainte de a fi folosit.
typedef unsigned char octet;
octet a = 200; // a este de tip unsigned char
În Python
Tipurile de bază sunt:
int, pentru numere întregi;float, pentru numere reale;str, pentru șiruri de caractere;bool, pentru valori logice.
Deosebirile față de C++ nu sunt de scriere, ci de fond:
- Tipul nu se declară. El se stabilește din valoarea atribuită și se poate schimba pe parcurs.
- Nu există tip caracter. Un caracter este un șir de lungime 1, adică tot
str. - Nu există modificatorii
signed,unsigned,short,long. intnu are limită de mărime. Nu se pune problema depășirii domeniului: un număr crește cât îngăduie memoria.- Există tip logic adevărat,
bool, cu valorileTrueșiFalse.
Tipul unei date se află cu funcția type:
numar = 10
print(type(numar)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type('A')) # <class 'str'>
print(type(5 > 3)) # <class 'bool'>
Codul unui caracter se află cu ord, iar caracterul cu un cod dat se obține cu chr. Un caracter
nu se adună cu un număr: 'A' + 1 oprește programul cu TypeError.
print(ord('A')) # 65
print(chr(ord('A') + 1)) # B
print(ord('7') - ord('0')) # 7
print(int('7')) # 7
Pentru caractere, funcțiile din <cctype> au corespondent în metodele șirurilor: c.isalpha(),
c.isdigit(), c.isupper(), c.islower(), c.upper(), c.lower().
Numărul de zecimale afișate se stabilește la scriere: print(f"{x:.2f}") scrie valoarea lui x
cu două zecimale.
Constantele
Într-un program se folosesc constante literale și constante simbolice.
Constantele întregi se pot scrie în baza 10, în baza 8 și în baza 16 (precedate de 0x sau
0X). În C++, constantele în baza 8 sunt precedate de 0: 012 înseamnă 10. În Python ele se
scriu cu prefixul 0o sau 0O, de exemplu 0o12, iar 012 este eroare de sintaxă. Constantele reale se scriu cu punct între partea întreagă și cea
fracționară, sau în notație științifică, cu mantisă și exponent despărțite de e sau E:
12.5 se poate scrie și 125E-1.
Materialul acesta se citește pe educamp.ro și nu se tipărește.
S-a încheiat minutul de citit liber.
Ce cuprinde subcapitolul
- Vocabularul limbajului
- Tipurile de date
- Constantele
- Variabilele
- Operatorii
- Citirea și scrierea datelor
Continuă lectura ca și cursant
Cel puțin un subcapitol din fiecare capitol este disponibil gratuit și integral. Pentru a citi toate celelalte subcapitole ale disciplinei, te înscrii la cursul de pregătire.
Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este prezentată materia, poți reveni la primul subcapitol al capitolului.
Acces la suportul de curs
25 RON / lună, fără ședințe
Ce cuprinde:
- Acces la toate lecțiile disponibile
- Suport de curs pentru tematica științifică și metodică
- Exemple, explicații și exerciții
- Acces la materialele noi adăugate pe platformă
- Posibilitatea de a adresa întrebări
Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.
Surse (3)
- Cerchez, E., Șerban, M., „Programarea în limbajul C/C++ pentru liceu”, Editura Polirom, Iași, 2005
- „Informatică. Manual pentru clasa a XI-a”, Editura Didactică și Pedagogică, București
- „Tutorialul de Python”, documentația oficială a limbajului Python, https://docs.python.org/ro/3/tutorial/index.html