Pe scurt
Un limbaj de programare are un vocabular și reguli de scriere, așa cum o limbă are cuvinte și reguli gramaticale. Unele cuvinte au un rol stabilit de limbaj, de exemplu cuvintele pentru „dacă”, „altfel” sau „repetă”. Ele se numesc cuvinte rezervate. Alte nume sunt alese de programator pentru valori sau părți ale programului; acestea sunt identificatori.
Dacă vrei să păstrezi scorul unui joc, poți alege numele „scor”. Este mai ușor de înțeles decât „x”. Nu poți însă folosi ca nume orice șir de semne. Limbajul ales impune reguli: de pildă, un nume poate conține litere, cifre și caracterul de subliniere (_), dar nu poate începe cu o cifră în C++ și Python. Numele „scor2” este acceptabil, iar „2scor” nu.
Semne precum parantezele, virgula și punctul și virgula sunt delimitatori: separă părți ale instrucțiunilor. Un semn lipsă poate schimba înțelesul sau poate împiedica rularea. Comentariile sunt note pentru oamenii care citesc programul; ele nu sunt instrucțiuni executate de calculator. Un comentariu bun explică de ce faci un pas mai puțin evident, nu repetă inutil fiecare cuvânt al codului.
Exersează recunoașterea rolurilor înainte de a memora multe reguli. Într-o instrucțiune care schimbă scorul, găsești un nume ales de programator, un semn de atribuire și o expresie. Într-o alegere găsești un cuvânt rezervat și o condiție. Dacă primești un mesaj de eroare, verifică întâi numele, delimitatorii și felul în care sunt scrise cuvintele limbajului.
Exemplu rezolvat — recunoașterea rolurilor. Ai instrucțiunea „scor primește scor + 5” și condiția „dacă scor este cel puțin 10”. Recunoști părțile ei:
- „scor” este un nume ales de programator pentru o valoare: un identificator.
- „primește” (în limbaj, semnul
=) este semnul de atribuire. - „5” este o valoare scrisă direct în program.
- „dacă” este un cuvânt rezervat: are un sens fix în limbaj și nu poate fi folosit ca nume.
- Semnul
;de la sfârșitul instrucțiunii (în C++) este un delimitator: arată unde se termină instrucțiunea.
Dacă ai scrie „2scor” în loc de „scor2”, limbajul ar refuza numele, pentru că nu poate începe cu o cifră. Dacă ai scrie „Scor” într-un loc și „scor” în altul, în C++ și în Python ar fi două nume diferite, pentru că literele mari și mici se deosebesc.
În detaliu
Un program este format din elemente lexicale: cuvinte rezervate, identificatori, constante (numerice sau de tip text), operatori și delimitatori, la care se adaugă comentariile. Cuvintele rezervate au un înțeles fixat de limbaj și nu pot fi folosite ca nume; în C++ sunt, de exemplu, int, double, if, else, for, while, return, iar în Python if, elif, else, for, while, def, return. Un identificator este numele unei variabile, constante sau funcții: poate conține litere, cifre și caracterul _, nu poate începe cu o cifră și nu poate coincide cu un cuvânt rezervat. C++ și Python deosebesc literele mari de cele mici, deci scor, Scor și SCOR sunt trei identificatori diferiți. Delimitatorii separă sau grupează părți ale programului: ;, ,, ( ), { }, [ ].
Exemplul 1 — elementele unui fragment C++.
#include <iostream>
using namespace std;
int main() {
int scor = 3; // valoarea inițială
scor = scor + 2;
cout << scor;
return 0;
}
În linia int scor = 3; cuvântul rezervat este int, identificatorul este scor, operatorul de atribuire este =, constanta numerică este 3, iar ; este delimitator. Textul de după // este comentariu și nu se execută. După a doua linie, scor are valoarea 5 și programul afișează 5.
Exemplul 2 — nume valide și nume invalide. Din lista viteza_1, 1viteza, Total, total, a-b, for, _x sunt valide viteza_1, Total, total și _x. Numele 1viteza începe cu o cifră, a-b conține caracterul -, care este operator, iar for este cuvânt rezervat. Total și total sunt două variabile diferite: după int Total = 1, total = 2;, expresia Total + total are valoarea 3.
Exemplul 3 — descompunerea unei instrucțiuni în elemente lexicale. Instrucțiunea scor = scor + 5; are șase elemente: identificatorul scor, operatorul =, identificatorul scor, operatorul +, constanta 5 și delimitatorul ;. Același nume apare de două ori, dar este o singură variabilă. În cout << "Salut"; elementele sunt identificatorul cout, operatorul <<, constanta text "Salut" și delimitatorul ;; textul dintre ghilimele este o constantă, nu un identificator, de aceea nu se verifică după regulile numelor. Valorile se scriu direct în program ca constante: 12 (întreg), 3.5 (real), 'A' (caracter) și "text" (șir de caractere).
Comentarii. În C++ un comentariu pe o linie începe cu //, iar unul pe mai multe rânduri se scrie între /* și */. În Python, comentariul începe cu # și ține până la sfârșitul rândului: în x = 3 # numărul de mere valoarea lui x este 3. Un comentariu bun spune de ce faci ceva, nu repetă codul: // pragul de promovare explică o constantă, pe când // adun 1 lângă k++ nu aduce nimic nou. Un identificator bine ales, ca numarElevi, reduce nevoia de comentarii.
Exemplul 4 — elementele lexicale ale unei decizii. Fragmentul if (nota >= 5) cout << "admis"; are zece elemente: cuvântul rezervat if, delimitatorul (, identificatorul nota, operatorul >=, constanta 5, delimitatorul ), identificatorul cout, operatorul <<, constanta text "admis" și delimitatorul ;. Semnul >= este un singur operator, format din două caractere, deci nu se numără ca două elemente; la fel <<. Dacă între cele două caractere ale unui operator compus se pune spațiu, de pildă > =, programul nu mai este corect.
Mai sunt două distincții care se verifică la citirea unui fragment. 'A' este o constantă de tip caracter, iar "A" este o constantă text, deși arată aproape la fel. Iar 5 este constantă numerică în nota >= 5, dar "5" ar fi un text: nu se poate compara cu nota ca număr. Numele nota se schimbă liber în punctaj, fără să se schimbe sensul programului, pe când if nu se poate înlocui cu alt cuvânt.
Pentru admitere
La întrebările despre sintaxă, separă eroarea lexicală (un nume invalid, un cuvânt rezervat folosit ca nume) de cea de logică. 2scor nu este un identificator valid, iar int este rezervat. O diferență de majusculă poate desemna alt nume. Într-un fragment, notează pentru fiecare nume la ce declarație se referă înainte de a calcula valori. Două semne se confundă frecvent în fragmente scurte: // începe un comentariu de o linie, iar tot ce urmează după el pe rând este ignorat, chiar dacă arată ca o instrucțiune; un comentariu /* ... */ nu poate conține alt comentariu de același fel, pentru că primul */ îl închide. Un cuvânt rezervat folosit ca nume, precum int if = 3;, face programul să nu compileze.
Exemplu în formatul examenului. Ce se afișează în urma executării secvenței de mai jos?
int Scor = 1, scor = 2;
Scor = Scor + scor;
cout << scor << ' ' << Scor;
- a)
3 3 - b)
2 3 - c)
3 2 - d)
2 2
Răspunsul corect este b). Scor și scor sunt variabile diferite: Scor pornește de la 1, iar scor de la 2. Atribuirea Scor = Scor + scor dă Scor = 1 + 2 = 3 și nu modifică scor. Se afișează întâi scor, adică 2, apoi Scor, adică 3. Varianta a) presupune că ambele nume desemnează aceeași variabilă.
Alt exemplu: comentariile se ignoră. Ce se afișează pentru următorul fragment?
int x = 4; // x = 9;
int y = x /* + 100 */ + 1;
cout << x << ' ' << y;
Atribuirea x = 9; se află după //, deci este comentariu și nu se execută: x rămâne 4. În a doua linie, textul dintre /* și */ este ignorat, deci y = x + 1, adică 5. Se afișează 4 5. Un comentariu /* rămas fără */ ar acoperi restul programului, iar compilatorul ar semnala eroare.
Greșeli frecvente
- Greșit:
Scorșiscorsunt același nume.Corect: în C++ și în Python majusculele contează. - Greșit: un identificator poate începe cu o cifră.Corect: poate conține cifre, dar nu poate începe cu una.
- Greșit: comentariile influențează rezultatul programului.Corect: comentariile nu se execută.
Pentru părinți
Copilul exersează identificarea pieselor unui program.
- Scrieți pe cartonașe „scor”, „if”, „(” și „// explicație”.
- Rugați-l să le grupeze după rol.
- Încercați numele „scor2” și „2scor”.
- Discutați de ce un nume clar ajută la citire.
Întrebați-l: „Care cuvânt este ales de programator și care aparține limbajului?”
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMEN 3393/2017, anexa 2, Informatică și TIC, pp. 11–12; isj.tm.edu.ro
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X; plan de încadrare: OMECI 3410/2009, anexa 1, p. PDF 1–14; forum.isj.hd.edu.ro; filiera tehnologică: OMECI 3412/2009, anexa 2, tabel X, legislatie.just.ro
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X; rocnee.eu
- UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3 și 6; aplicabilitatea 2027: OMEC 5211/2026, art. 3 alin. (10); edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 5–6; edu.ro
Documente consultate
- OMEN 3393/2017, anexa 2, Informatică și TIC, clasa a VII-a, p. 12; UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
- Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 3 și 6; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original), conform OMEN 3393/2017, anexa 2, Informatică și TIC VII; isj.tm.edu.ro
