Variabile si tipuri de date
Variabilele sunt locatii in memoria calculatorului care stocheaza date. Gandeste-te la o variabila ca la o cutie etichetata: cutia are un nume (eticheta), un tip (ce fel de lucruri poti pune in ea) si o valoare (ce se afla efectiv in cutie la un moment dat).
Tipuri de date principale:
| Tip | Descriere | Exemple |
|---|---|---|
| Integer (intreg) | Numere fara zecimale | 5, -3, 100, 0 |
| Real (float) | Numere cu zecimale | 3.14, -2.5, 0.001 |
| String (sir) | Text intre ghilimele | "Salut", "Ana", "123" |
| Boolean | Valori logice (adevarat/fals) | True, False |
Operatii cu variabile: Putem face operatii matematice (+, -, *, /) sau sa concatenam siruri de caractere. Important: impartirea intreaga (DIV) pastreaza doar partea intreaga, iar restul impartirii (MOD) returneaza restul. De exemplu: 17 DIV 5 = 3, iar 17 MOD 5 = 2.
💡 Sfat pentru examen:
Atentie la diferenta intre impartirea reala (/) si impartirea intreaga (DIV). La evaluarea nationala, intrebarile verifica frecvent daca stii sa faci aceasta distinctie!
Expresii si ordinea operatiilor
Expresiile sunt combinatii de variabile, constante si operatori care produc un rezultat. La fel ca in matematica, ordinea in care se executa operatiile conteaza enorm.
Ordinea operatiilor (prioritate):
- Parantezele ( ) - se evalueaza primele, de la cele mai interioare
- Inmultire *, Impartire /, DIV, MOD - se evalueaza de la stanga la dreapta
- Adunare +, Scadere - - se evalueaza de la stanga la dreapta
- Operatori de comparare (<, >, =, <=, >=, !=) - ultimii
Exemplu pas cu pas:
Expresia: (3 + 2) * 4 - 10 / 2
Pas 1: (3 + 2) = 5 (paranteza primul)
Pas 2: 5 * 4 = 20 (inmultire)
Pas 3: 10 / 2 = 5 (impartire)
Pas 4: 20 - 5 = 15 (scadere)
Rezultat: 15
Operatori logici:
SI (AND), SAU (OR), NU (NOT) sunt folositi pentru conditii complexe. Expresia
x > 5 SI x < 10
este adevarata doar cand x este intre 6 si 9.
⚠ Greseala frecventa:
Expresia
3 + 2 * 4
NU este 20! Inmultirea se face inainte de adunare, deci: 2*4=8, apoi 3+8=
11
. Daca vrei 20, scrie
(3 + 2) * 4
.
Structuri conditionale (DACA-ATUNCI-ALTFEL)
Structurile conditionale permit programului sa ia decizii. Programul verifica o conditie si executa instructiuni diferite in functie de rezultat - exact ca in viata reala: "DACA ploua, ATUNCI iau umbrela, ALTFEL merg fara".
Structura simpla (fara ALTFEL):
DACA conditie ATUNCI
instructiuni (se executa DOAR daca conditia e adevarata)
SFARSIT DACA
Structura completa (cu ALTFEL):
DACA conditie ATUNCI
instructiuni_A (conditia e adevarata)
ALTFEL
instructiuni_B (conditia e falsa)
SFARSIT DACA
Operatori de comparare:
-
=(egal),!=sau<>(diferit) -
<(mai mic),>(mai mare) -
<=(mai mic sau egal),>=(mai mare sau egal)
Structuri imbricate: Poti pune un DACA in interiorul altui DACA. De exemplu, pentru a clasifica un numar: "DACA x > 0 ATUNCI scrie pozitiv, ALTFEL DACA x = 0 ATUNCI scrie zero, ALTFEL scrie negativ".
💡 Exercitiu mental:
Daca x = 7 si y = 3, ce afiseaza: DACA x MOD y = 1 ATUNCI scrie "DA" ALTFEL scrie "NU"? Raspuns: 7 MOD 3 = 1, deci se afiseaza "DA".
Bucla PENTRU (FOR) - cand stim numarul de pasi
Bucla PENTRU se foloseste cand stim exact de cate ori vrem sa repetam o operatie. Este cea mai simpla structura repetitiva si cea mai frecvent intalnita la evaluarea nationala.
Sintaxa:
PENTRU contor DE LA valoare_initiala LA valoare_finala EXECUTA
instructiuni
SFARSIT PENTRU
Cum functioneaza:
- Contorul primeste valoarea initiala
- Se verifica daca contorul <= valoarea finala
- Daca da: se executa instructiunile, contorul creste cu 1, se revine la pasul 2
- Daca nu: bucla se termina
Exemplu concret - suma numerelor de la 1 la n:
citeste n
suma = 0
PENTRU i DE LA 1 LA n EXECUTA
suma = suma + i
SFARSIT PENTRU
scrie suma
Daca n = 4: suma = 0+1+2+3+4 = 10
⚠ Atentie la numarare:
PENTRU i DE LA 1 LA 5 se executa de 5 ori (valorile 1,2,3,4,5). PENTRU i DE LA 0 LA 4 se executa tot de 5 ori (valorile 0,1,2,3,4). Numarul de executii = valoare_finala - valoare_initiala + 1.
Bucla CAT TIMP (WHILE) - cand nu stim numarul de pasi
Bucla CAT TIMP se foloseste cand NU stim dinainte de cate ori se va repeta operatia. Repetarea continua atat timp cat o conditie ramane adevarata.
Sintaxa:
CAT TIMP conditie EXECUTA
instructiuni
SFARSIT CAT TIMP
Diferenta fata de PENTRU: Conditia se verifica INAINTE de fiecare executie. Daca conditia e falsa de la inceput, corpul buclei NU se executa niciodata (zero executii).
Exemplu - cifre unui numar:
citeste n // n = 1234
contor = 0
CAT TIMP n > 0 EXECUTA
contor = contor + 1
n = n DIV 10
SFARSIT CAT TIMP
scrie contor // afiseaza 4 (numarul are 4 cifre)
Trasarea pas cu pas: n=1234, contor=0 | n=123, contor=1 | n=12, contor=2 | n=1, contor=3 | n=0, contor=4 | 0>0 fals, STOP.
⚠ Bucla infinita:
Daca conditia nu devine niciodata falsa, bucla se executa la infinit si programul se blocheaza! Asigura-te ca in corpul buclei exista o instructiune care modifica variabilele din conditie.
Bucla REPETA...PANA CAND (DO...UNTIL)
Bucla REPETA...PANA CAND este similara cu CAT TIMP, dar cu o diferenta fundamentala: conditia se verifica DUPA executarea instructiunilor, nu inainte. Asta garanteaza ca instructiunile se executa cel putin o data .
Sintaxa:
REPETA
instructiuni
PANA CAND conditie_de_oprire
Comparatie intre cele 3 bucle:
| Bucla | Cand o folosesti | Executii minime |
|---|---|---|
| PENTRU | Stii exact cate repetitii | 0 (daca start > final) |
| CAT TIMP | Nu stii cate, verifici inainte | 0 (conditie falsa de la inceput) |
| REPETA | Nu stii cate, verifici dupa | 1 (mereu cel putin o data) |
Exemplu - citirea unui numar valid:
REPETA
scrie "Introdu un numar intre 1 si 100:"
citeste n
PANA CAND n >= 1 SI n <= 100
Bucla cere numarul pana cand utilizatorul introduce o valoare valida.
Siruri de valori numerice - notiuni introductive
Sirul de valori este o colectie de elemente de acelasi tip, grupate sub un singur nume. Fiecare element este identificat prin pozitia sa in sir. Gandeste-te la un sir ca la un rand de casute numerotate: fiecare casuta pastreaza o valoare, iar numarul ei ne spune unde sa o gasim.
Notatie in pseudocod:
Daca sirul se numeste
a
si are
n
elemente, pozitiile sunt numerotate
de la 1 la n
. Elementul de pe pozitia
i
se noteaza
a[i]
.
Citirea unui sir:
citeste n
PENTRU i DE LA 1 LA n EXECUTA
citeste a[i]
SFARSIT PENTRU
Afisarea unui sir:
PENTRU i DE LA 1 LA n EXECUTA
scrie a[i]
SFARSIT PENTRU
Parcurgerea inseamna sa vizitezi pe rand fiecare element al sirului folosind o bucla PENTRU, de la pozitia 1 la pozitia n. Aceasta este baza tuturor algoritmilor pe siruri.
💡 De retinut:
In pseudocod (conform programei cls. VIII), sirul se parcurge de la pozitia 1 la pozitia n. Bucla PENTRU i DE LA 1 LA n parcurge toate cele n elemente in ordine.
Algoritmi de baza pe siruri de valori
Algoritmii pe siruri urmeaza un tipar comun: parcurgi elementele cu o bucla PENTRU si efectuezi o operatie pe fiecare. Urmatorii algoritmi corespund programei cls. VIII (OMEN 3393/2017).
1. Suma elementelor:
suma = 0
PENTRU i DE LA 1 LA n EXECUTA
suma = suma + a[i]
SFARSIT PENTRU
scrie suma
2. Gasirea maximului:
max = a[1]
PENTRU i DE LA 2 LA n EXECUTA
DACA a[i] > max ATUNCI max = a[i]
SFARSIT PENTRU
scrie max
3. Numararea elementelor care indeplinesc o conditie:
contor = 0
PENTRU i DE LA 1 LA n EXECUTA
DACA a[i] MOD 2 = 0 ATUNCI contor = contor + 1
SFARSIT PENTRU
scrie contor // numarul elementelor pare
4. Verificarea unei proprietati (ex: toate elementele sunt pozitive):
ok = adevarat
PENTRU i DE LA 1 LA n EXECUTA
DACA a[i] <= 0 ATUNCI ok = fals
SFARSIT PENTRU
DACA ok ATUNCI scrie "toate pozitive" ALTFEL scrie "nu toate"
💡 Tipar universal:
Initializeaza variabila de acumulare (suma=0, contor=0, max=a[1]), parcurge sirul de la 1 la n cu PENTRU, aplica operatia pe fiecare element. Acesti algoritmi (numarare, suma/produs, minim/maxim, verificare proprietate) sunt cei prevazuti de programa cls. VIII.
Algoritmi pe numere - cifre si numere prime
Unii dintre cei mai frecventi algoritmi la evaluare lucreaza cu cifrele unui numar . Doua operatii sunt esentiale:
- n MOD 10 = ultima cifra a lui n (exemplu: 1234 MOD 10 = 4)
- n DIV 10 = numarul fara ultima cifra (exemplu: 1234 DIV 10 = 123)
Exemplu - suma cifrelor unui numar:
citeste n // n = 1234
suma = 0
CAT TIMP n > 0 EXECUTA
cifra = n MOD 10 // extrage ultima cifra
suma = suma + cifra
n = n DIV 10 // elimina ultima cifra
SFARSIT CAT TIMP
scrie suma // 1+2+3+4 = 10
Verificare numar prim:
Un numar este prim daca are exact 2 divizori: 1 si el insusi. Pentru a verifica, cautam un divizor intre 2 si radical din numar:
este_prim = true
DACA n < 2 ATUNCI este_prim = false
PENTRU d DE LA 2 LA radical(n) EXECUTA
DACA n MOD d = 0 ATUNCI este_prim = false
SFARSIT PENTRU
💡 De retinut pentru examen:
Algoritmii cu cifre (suma cifrelor, inversul unui numar, numarul de cifre) sunt printre cele mai frecvente intrebari la evaluarea nationala!
Recapitulare - Cum trasezi un algoritm
La evaluarea nationala vei primi frecvent cerinte de tipul "Ce afiseaza urmatorul algoritm?" sau "Ce valori primeste variabila x?". Pentru a raspunde corect, trebuie sa stii sa trasezi un algoritm - adica sa-l executi pas cu pas pe hartie.
Pasii pentru trasarea unui algoritm:
- Noteaza toate variabilele si valorile lor initiale
- Parcurge instructiunile una cate una, in ordine
- Actualizeaza valorile variabilelor dupa fiecare instructiune
- La bucle: verifica conditia, executa corpul, actualizeaza, verifica din nou
- Noteaza ce se afiseaza (instructiunile "scrie")
Exemplu complet de trasare:
x = 1; s = 0
CAT TIMP x <= 4 EXECUTA
s = s + x * x
x = x + 1
scrie s
| Pas | x | s | x<=4? |
|---|---|---|---|
| Init | 1 | 0 | DA |
| 1 | 2 | 1 (0+1*1) | DA |
| 2 | 3 | 5 (1+2*2) | DA |
| 3 | 4 | 14 (5+3*3) | DA |
| 4 | 5 | 30 (14+4*4) | NU |
Rezultat afisat: 30 (suma patratelor: 1+4+9+16 = 30)
🏆 Sfaturi pentru evaluarea nationala:
- Fa mereu tabele de trasare pe ciorna - nu incerca sa calculezi in minte
- Atentie la ordinea operatiilor (inmultirea inaintea adunarii)
- Verifica daca bucla include sau nu valoarea finala
- La CAT TIMP, verifica daca conditia e adevarata INAINTE de executie
Exercitii practice
Exercitiul 1 (Nivel minim) - Analiza si trasare algoritmi
Traseaza urmatoarele fragmente de cod si raspunde la intrebari:
- Ce afiseaza algoritmul: n=2468; s=0; CAT TIMP n>0 EXECUTA s=s+n MOD 10; n=n DIV 10; SFARSIT; scrie s. Completeaza tabelul pas cu pas: dupa pasul 1 n=... s=..., dupa pasul 2 n=... s=..., etc.
- Cate executii are bucla: PENTRU i DE LA 3 LA 15 EXECUTA DACA i MOD 3 = 0 ATUNCI scrie i? Scrie valorile lui i la fiecare executie si incercuieste pe cele care se afiseaza.
- Ce tip de bucla ai folosi pentru a citi numere de la utilizator pana cand introduce 0? Scrie CAT TIMP sau PENTRU si motivul in 1-2 propozitii.
- Ai un sir a cu n=4 elemente: a[1]=5, a[2]=3, a[3]=8, a[4]=1. Completeaza trasarea pentru gasirea maximului: max=a[1]=5; i=2: a[2]=3, 3>5? (da/nu) max=...; i=3: a[3]=8, 8>5? (da/nu) max=...; i=4: a[4]=1, 1>8? (da/nu) max=...; Rezultat final: max=...
- Identifica greseala: suma=1; PENTRU i DE LA 1 LA n EXECUTA suma=suma+a[i]; scrie suma. Ce valoare trebuia sa aiba suma inainte de bucla si de ce?
Raspunde numerotat: 1. ... 2. ... 3. ... 4. ... 5. ...
Exercitiul 2 (Nivel standard) - Mini-proiect: Colectie de algoritmi rezolvati
Creeaza un document Word cu rezolvarea completa a 5 probleme de algoritmi, fiecare cu trasare pas cu pas.
Cerinte obligatorii:
⭐ Bonus (pentru nota maxima):
- Adauga o varianta alternativa de pseudocod cu alta structura repetitiva (ex: CAT TIMP in loc de PENTRU) pentru cel putin 2 algoritmi
- Creeaza o sectiune cu "greseli frecvente" la fiecare problema
- Include o problema rezolvata de tip Evaluare Nationala (din modele de subiecte)
- Creeaza un "cheat sheet" de o pagina cu toti algoritmii importanti
Exercitiul 3 (Nivel performanta) - Compunere - Ghidul algoritmilor
Cerinta: Scrie o compunere de 15-20 randuri cu titlul "Ce am invatat despre algoritmi" in care explici unui coleg ce sunt algoritmii, ce structuri de control exista si cum se rezolva o problema algoritmica.
Indicii pentru structura:
- Incepe cu definitia: ce este un algoritm si de ce e important
- Prezinta cele 3 tipuri de structuri: secventiala, conditionala, repetitiva
- Explica diferentele intre cele 3 bucle (PENTRU, CAT TIMP, REPETA)
- Mentioneaza algoritmii frecventi: suma, maxim, cifre, numere prime
- Incheie cu sfaturi pentru trasarea algoritmilor la evaluare
Cuvinte cheie de folosit: algoritm, variabila, conditie, bucla, PENTRU, CAT TIMP, REPETA, sir de valori, MOD, DIV, numarare, suma, minim, maxim, trasare, evaluare nationala