Orice aplicație pe care o folosești, de la un joc la un GPS, a fost scrisă într-un limbaj de programare. În liceu, la informatică, limbajul de lucru este de obicei C++: este rapid, foarte răspândit și este limbajul folosit la BAC și la olimpiade. În această lecție înveți „alfabetul” lui: cum arată un program, cum memorezi date, cum faci calcule și cum iei decizii.
Structura unui program
Cel mai simplu program complet arată așa:
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
#include <iostream>aduce instrucțiunile de citire (cin) și afișare (cout);using namespace std;îți permite să scriicoutîn loc destd::cout;- execuția începe întotdeauna cu funcția
main; - fiecare instrucțiune se termină cu
;, iar acoladele{ }grupează instrucțiuni într-un bloc.
Variabile și tipuri de date
O variabilă este o zonă de memorie cu un nume, în care păstrezi o valoare. Înainte să o folosești, trebuie să o declari, adică să-i precizezi tipul:
| tip | ce memorează | exemplu |
|---|---|---|
int | numere întregi (aproximativ între și ) | int n = 2026; |
long long | numere întregi mari (până la aproximativ ) | long long p = 1; |
double | numere reale | double media = 9.5; |
char | un singur caracter | char c = 'A'; |
bool | o valoare logică (true sau false) | bool gasit = false; |
Atribuirea x = expresie; calculează expresia din dreapta și pune rezultatul în variabila din stânga. Valoarea veche a lui x se pierde. De aceea x = x + 1; are sens în C++: crește valoarea lui x cu (prescurtat x++;).
Numele variabilelor conțin litere, cifre și _, nu încep cu o cifră și țin cont de litere mari și mici: suma și Suma sunt variabile diferite.
Citire și afișare
cin >> x;citește o valoare de la tastatură în variabilax;cout << x;afișează valoarea luix;cout << "Text";afișează exact textul dintre ghilimele;cout << endl;(sau'\n') trece pe rândul următor.
Poți înlănțui operațiile: cin >> a >> b; citește două valori, iar cout << a << ' ' << b; le afișează separate printr-un spațiu.
Operatori
Aritmetici: +, -, *, /, %.
- Dacă ambii operanzi sunt întregi,
/dă câtul împărțirii întregi:17 / 5este3. %dă restul împărțirii întregi și se folosește doar cu întregi:17 % 5este2.- Dacă un operand este real, împărțirea este reală:
17.0 / 5este3.4.
Două aplicații pe care le vei folosi mereu: n % 10 este ultima cifră a lui n, iar n / 10 este numărul fără ultima cifră (pentru ).
Relaționali: <, <=, >, >=, == (egal), != (diferit). Rezultatul este adevărat (1) sau fals (0).
Logici: && (și), || (sau), ! (negație). Ordinea priorităților: !, apoi operatorii aritmetici, apoi cei relaționali, apoi && și abia la final ||. Când nu ești sigur, pune paranteze.
Instrucțiunea if
if (conditie)
instructiune1;
else
instructiune2;
Dacă conditie este adevărată, se execută instructiune1, altfel instructiune2. Ramura else poate lipsi. Dacă pe o ramură ai mai multe instrucțiuni, le pui între acolade.
Exemple rezolvate
Exemplul 1: cifrele unui număr
Se citește un număr natural n cu cel puțin două cifre. Afișează cifra unităților și cifra zecilor.
int n;
cin >> n;
cout << n % 10 << ' ' << n / 10 % 10;
Pentru n = 4728: n % 10 este 8, iar n / 10 este 472, deci n / 10 % 10 este 2. Se afișează 8 2.
Exemplul 2: interschimbarea a două variabile
Vrem ca a și b să-și schimbe valorile. Folosim o variabilă auxiliară, ca atunci când schimbi conținutul a două pahare cu ajutorul unui al treilea:
int a = 5, b = 8, aux;
aux = a; // aux = 5
a = b; // a = 8
b = aux; // b = 5
Fără aux, după a = b; valoarea s-ar pierde definitiv.
Exemplul 3: maximul a trei numere
int x, y, z, mx;
cin >> x >> y >> z;
mx = x;
if (y > mx) mx = y;
if (z > mx) mx = z;
cout << mx;
Pentru datele 7 12 9: mx pornește de la , devine la a doua comparație și rămâne la a treia. Ideea „presupun că primul este maximul, apoi îl corectez” se folosește în foarte multe probleme.
Greșeli frecvente
=în loc de==.if (x = 0)atribuie valoarea luixîn loc să o compare. Comparația se scriex == 0.- Împărțirea întreagă neașteptată. Pentru
int a = 7, b = 2;,a / beste3, nu3.5. Ca să obții un rezultat real, scrie de exemplu1.0 * a / b. - Interschimbare fără variabilă auxiliară.
a = b; b = a;lasă ambele variabile cu aceeași valoare. - Variabile neinițializate. O sumă trebuie pornită de la
0, iar un produs de la1, altfel pornești de la o valoare oarecare din memorie. - Restul numerelor negative. În C++,
-7 % 2este-1, nu1. Pentru a testa dacă un număr este impar, foloseștex % 2 != 0. - Lipsa acoladelor. Fără acolade,
ifcontrolează doar prima instrucțiune care îi urmează.
Pe scurt
- Un program C++ începe execuția cu
main, iar fiecare instrucțiune se termină cu;. - Variabilele se declară cu un tip:
int,long long,double,char,bool. - Între întregi,
/dă câtul și%dă restul;n % 10este ultima cifră,n / 10elimină ultima cifră. ==compară,=atribuie;&&are prioritate mai mare decât||.if/elsealege între două ramuri în funcție de o condiție.