Didaxis
lecție · Informatică

Citirea și afișarea

Intrare standard, ieșire standard și formatare elementară.

Se face în:
Clasa a VII-a
Clasa a X-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 3 · rezumatul lecției

Pe scurt

Un program primește date de intrare și poate comunica date de ieșire. Când tastezi două numere într-un program care le adună, numerele sunt intrări. Numărul pe care îl vezi după calcul este ieșirea. Citirea aduce valorile în program; afișarea trimite rezultatul către utilizator.

Imaginează-ți că programul citește 3 și 4. După citire, variabilele păstrează cele două valori; programul calculează , apoi afișează 7. Dacă nu există pasul de afișare, suma poate fi calculată corect, dar nu o vei vedea. Dacă afișarea este înaintea calculului, va arăta o valoare veche sau niciun rezultat util.

Ordinea datelor de intrare contează. Pentru adunare, schimbarea lui 3 cu 4 nu modifică suma. Pentru scădere, , iar . De aceea un enunț trebuie să spună ce reprezintă prima și a doua valoare. Citește exact în ordinea cerută, mai ales când datele au roluri diferite, cum ar fi „preț” și „sumă plătită”.

Ieșirea trebuie să fie și ea clară. Dacă problema cere numai un număr, afișarea unui mesaj în plus poate împiedica verificarea automată a răspunsului. Într-un proiect făcut pentru oameni, un mesaj explicativ poate ajuta, dar în exercițiile cu format fix respecți cerința. Înainte de a rula, notează ce intră, ce calculezi și ce trebuie să apară la final.

Exemplu rezolvat — restul de plătit. Un program primește două date de intrare: prețul unui caiet și suma dată la casă. El trebuie să afișeze restul. Dacă prețul este 6 lei și suma dată este 10 lei, parcurgi pașii:

  1. Citești prima valoare, 6, și o păstrezi în variabila „preț”.
  2. Citești a doua valoare, 10, și o păstrezi în variabila „sumă”.
  3. Calculezi restul: .
  4. Afișezi rezultatul: 4.

Dacă ai citi valorile în ordine inversă, prețul ar fi 10 și suma 6, iar scăderea ar da , un rest negativ care nu are sens. De aceea ordinea citirii trebuie să respecte enunțul. Dacă lipsește pasul 4, restul este calculat, dar utilizatorul nu îl vede.

Desen la lecția „Citirea și afișarea”
2în detaliustratul 2 din 3 · pentru clasă și Bacalaureat

În detaliu

În C++, biblioteca <iostream> oferă cin pentru intrarea standard și cout pentru ieșirea standard. Operatorul >> extrage valori din cin: pentru valori numerice ignoră spațiile, taburile și trecerile la linie nouă dintre ele, deci 3 4 și 3 urmat de un rând nou și 4 produc același rezultat. Operatorul << trimite valori către cout; afișarea mai multor valori cere separatori scriși explicit, de exemplu ' ' pentru spațiu și '\n' pentru linie nouă. endl încheie și el linia, dar golește suplimentar zona de memorie a ieșirii.

Exemplul 1 — două valori citite și afișate.

#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    cout << a << ' ' << b << '\n';
    cout << a - b << '\n';
    return 0;
}

Pentru intrarea 3 4 programul afișează două linii, 3 4 și -1. După prima citire a = 3, după a doua b = 4; caracterul ' ' separă valorile pe primul rând, iar '\n' începe un rând nou. Pentru intrarea 4 3 liniile sunt 4 3 și 1. Ordinea citirii contează: scăderea nu este comutativă.

Exemplul 2 — formatarea numerelor reale. Fără formatare, cout afișează cel mult șase cifre semnificative, deci 7.0 / 2 apare ca 3.5. Pentru două zecimale exacte se folosesc fixed și setprecision(2) din <iomanip>:

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    cout << fixed << setprecision(2) << 7.0 / 2 << ' ' << 7 / 2;
    return 0;
}

Programul afișează 3.50 3. Formatarea schimbă doar aspectul afișării, nu și calculul: 7 / 2 are operanzi întregi, se calculează ca 3 înainte de afișare și rămâne 3.

Exemplul 3 — citirea unui număr necunoscut de valori. Expresia cin >> x are valoarea adevărat cât timp citirea reușește și fals la sfârșitul datelor sau la o valoare de tip greșit. Ciclul while (cin >> x) repetă deci prelucrarea până la sfârșitul intrării. Pentru valorile 2 5 3 o sumă s, inițial 0 și actualizată cu s += x după fiecare citire, trece prin 2, 7 și 10; suma finală este 10.

Un mesaj explicativ se scrie între ghilimele și se leagă de valori prin <<: cout << "Suma este " << a + b; afișează Suma este 7 pentru și . Atenție la expresiile aritmetice din afișare: cout << "Suma este " << a << b; scrie cele două valori una lângă alta și produce Suma este 43, pentru că a și b nu sunt adunate. Când problema cere strict un număr, mesajele se omit, pentru ca verificarea automată a răspunsului să compare exact valoarea așteptată.

Citirea unui text care conține spații se face linie cu linie, cu getline(cin, text), pentru că operatorul >> se oprește la primul spațiu. Dacă o linie este citită după un număr cu >>, rămâne în buffer sfârșitul de linie al numărului, iar prima getline poate întoarce un text gol.

Exemplul 4 — numărul de valori este dat în intrare. Multe probleme dau pe primul loc numărul de valori care urmează:

int n, x, s = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
    cin >> x;
    s += x;
}
cout << s;

Pentru intrarea 4 7 2 9 5, primul număr, 4, spune câte valori trebuie citite. Ciclul se execută de exact ori, iar s ia valorile 7, 9, 18 și 23; se afișează 23. Dacă valoarea 4 ar fi tratată ca element al șirului, suma ar fi 27, adică un rezultat greșit. Dacă la intrare apare un text în locul unui număr, citirea eșuează, iar valorile următoare nu mai sunt citite.

Dacă enunțul nu spune câte valori urmează, nu presupune un număr fix: folosește forma while (cin >> x).

3pentru admiterestratul 3 din 3 · pentru examene

Pentru admitere

Dacă nu se cunoaște câte valori urmează la intrare, while (cin >> x) repetă citirea până când aceasta eșuează. Verifică în enunț dacă prima valoare reprezintă numărul de elemente sau este ea însăși un element: cele două formate cer bucle diferite. Atenție la ce se afișează între valori: instrucțiunea cout << a << b; nu pune niciun separator, deci pentru a = 12 și b = 5 ieșirea este 125, o singură secvență de cifre.

Exemplu în formatul examenului. Se citesc, în această ordine, numerele și . Ce se afișează în urma executării secvenței de mai jos?

int a, b;
cin >> a >> b;
cout << a << b << ' ' << a + b;
  • a) 12 5 17
  • b) 125 17
  • c) 17 125
  • d) 12517

Răspunsul corect este b). Pentru a = 12 și b = 5, instrucțiunea cout << a << b scrie cifrele una după alta, 125, fără separator. Urmează un spațiu și suma . Varianta a) ar apărea dacă între a și b ar fi fost scris un spațiu, iar varianta d) dacă nici spațiul dintre cele două expresii nu ar fi fost scris. La fiecare afișare verifică separat ce se scrie între operatorii <<: valorile expresiilor, spațiile puse explicit și trecerile la linie nouă; un spațiu apare în ieșire numai dacă îl scrie programul.

Fii atent și la tipul operanzilor: pentru și , instrucțiunea cout << a / b; afișează 3, pentru că ambii operanzi sunt întregi, iar cout << a / (double)b; afișează 3.5. Secvența cout << a << ' ' << b; afișează 7 2, nu 72, deoarece spațiul este scris explicit.

La cout << a + b << a - b; cu și se afișează 95: valorile 9 și 5 sunt scrise una după alta, fără separator.

Greșeli frecvente

  • Greșit: cout << a << b; pune automat un spațiu între valori.
    Corect: separatorul se scrie explicit.
  • Greșit: fixed << setprecision(2) schimbă rezultatul împărțirii între întregi.
    Corect: schimbă numai afișarea; 7 / 2 rămâne 3.
  • Greșit: cin >> a >> b cere ca valorile să fie pe același rând.
    Corect: spațiile și rândurile noi sunt tratate la fel.
pentru adulți

Pentru părinți

Copilul exersează deosebirea dintre intrare și ieșire.

  1. Dați-i două numere, 3 și 4.
  2. Cereți-i să le noteze ca intrări.
  3. Calculați suma și spuneți care este ieșirea.
  4. Schimbați ordinea numerelor pentru o scădere.

Întrebați-l: „Ce s-ar întâmpla dacă programul ar calcula, dar nu ar afișa răspunsul?”

în contul tăuPremium

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, p. 4–5; 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 Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.