De ce contează?
Gândește-te la o conversație simplă: tu întrebi „Câți ani ai?", celălalt răspunde „12". Un program lucrează la fel. El întreabă (citește datele pe care i le dai) și apoi răspunde (afișează un rezultat pe ecran). Fără întrebare n-ar ști cu ce să lucreze; fără răspuns n-ai ști niciodată ce a calculat. Toată informatica începe de aici: programul primește ceva și redă ceva.
Intuiția
Un program nu trăiește singur într-o cutie. El are o ușă de intrare prin care primește date (de obicei de la tastatură) și o ușă de ieșire prin care îți arată rezultatul (pe ecran). Tu îi dai numere, el le prelucrează, apoi îți spune ce a aflat. Exact ca într-un dialog: o parte spune, cealaltă ascultă și răspunde.
Ce este
În C++ ai două „unelte" pentru acest dialog:
cin(de la console input, „intrarea din consolă") — citește ce scrii tu de la tastatură și pune valoarea într-o variabilă.cout(de la console output, „ieșirea din consolă") — afișează pe ecran ce îi dai.
Le folosești mereu împreună cu o săgeată. La citire scrii cin >> a: săgeata arată dinspre tastatură spre variabila a — „bagă valoarea în a". La afișare scrii cout << a: săgeata arată dinspre a spre ecran — „scoate valoarea pe ecran". Săgeata indică mereu încotro merge informația.
Poți citi mai multe valori dintr-o dată: cin >> a >> b citește două numere și le pune în a, apoi în b. Programul nu se uită la rânduri — el ia valorile în ordine, separate prin spațiu sau prin Enter. Așa că 5 3 pe un rând și 5 urmat de Enter și 3 înseamnă exact același lucru pentru el.
Ordinea contează. cin >> a >> b pune prima valoare în a și a doua în b. Dacă enunțul spune „se citește lățimea, apoi înălțimea", trebuie să citești în exact aceeași ordine — altfel calculezi cu numerele inversate, fără ca programul să dea vreo eroare.
Cum arată
Hai să vedem un exemplu complet, de la cap la coadă: un program care citește două numere și afișează suma lor.
Tu, la tastatură, scrii cele două numere despărțite printr-un spațiu:
5 | 3 |
a | b |
Programul citește a = 5 și b = 3, calculează a + b, apoi scrie rezultatul pe ecran:
8 |
a+b |
Tot drumul, pe scurt: intrare 5 3 → programul adună → ieșire 8. Intri cu două numere, ieși cu unul singur. Programul a făcut munca dintre cele două uși.
Implementare C++
#include <iostream>
using namespace std;
int main() {
int a, b;
// citim doua numere de la tastatura, in ordine: intai a, apoi b
cin >> a >> b;
// calculam suma si o afisam pe ecran, urmata de rand nou
cout << a + b << endl;
return 0;
// pentru intrarea "5 3" -> iesirea este "8"
}Vrei să afișezi mai multe valori pe același rând? Pune un spațiu între ele, ca text:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
// afisam cele doua numere separate printr-un spatiu, apoi suma pe rand nou
cout << a << " " << b << endl; // pentru "5 3" arata: 5 3
cout << a + b << "\n"; // apoi pe rand nou: 8
return 0;
}Reține două lucruri despre afișare:
" "(un spațiu între ghilimele) lipit între două valori le desparte pe ecran. Fără el, valorile se lipesc.endlși"\n"fac același lucru: trec afișarea pe rândul următor. Le pui când vrei ca rezultatul următor să apară pe un rând nou.
Complexitate
| Operație | Timp | Spațiu |
|---|---|---|
O citire (cin >> a) | constant | constant |
O afișare (cout << a) | constant | constant |
Fiecare citire și fiecare afișare costă un timp fix, indiferent de cât de mare e numărul. Nu acesta e locul unde un program devine lent — important e doar să citești și să afișezi exact ce cere enunțul.
Trei capcane clasice la citire și afișare:
- Ordinea inversată. Enunțul spune „citește
a, apoib", dar tu scriicin >> b >> a. Programul nu dă eroare — pur și simplu calculează cu numerele schimbate între ele și răspunsul iese greșit. - Ai uitat o valoare. Trebuie citite trei numere, dar tu scrii doar
cin >> a >> b. Al treilea număr rămâne necitit, iarcconține o valoare „gunoi", imprevizibilă. Citește toate valorile pe care le promite enunțul. - Afișare fără spațiu. Scrii
cout << a << bîn loc decout << a << " " << b. Pentrua = 5șib = 3pe ecran apare53— un singur număr lipit — în loc de5 3. Pune mereu un" "între valorile pe care vrei să le desparți.