Lectia 1 din 6

Recapitulare Algoritmi

Citeste fiecare concept, apoi raspunde la intrebari pentru a continua

Progres lectie:
0%
🎯

Obiectivul lectiei

"Vreau sa recapitulez algoritmii fundamentali - variabile, operatii si structuri de control!"

Dupa aceasta lectie vei putea:

  • Sa explici variabile si tIPuri de date
  • Sa explici expresii si ordinea operatiilor
  • Sa analizezi structuri conditionale (daca-atunci-altfel)
  • Sa aplici bucla pentru (for) - cand stim numarul de pasi
  • Sa aplici bucla cat timp (while) - cand nu stim numarul de pasi
1

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!

Ce valoare va avea variabila x dupa executarea codului: x = 17 / 5 (impartire intreaga)?
A 3.4
B 3
C 2
2

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):

  1. Parantezele ( ) - se evalueaza primele, de la cele mai interioare
  2. Inmultire *, Impartire /, DIV, MOD - se evalueaza de la stanga la dreapta
  3. Adunare +, Scadere - - se evalueaza de la stanga la dreapta
  4. 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 .

Ce valoare are expresia: 3 + 2 * 4 - 1?
A 10
B 19
C 12
3

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".

Care este rezultatul daca x = 15 si executam: DACA x > 10 ATUNCI scrie "mare" ALTFEL scrie "mic"?
A mare
B mic
C Eroare
4

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:

  1. Contorul primeste valoarea initiala
  2. Se verifica daca contorul <= valoarea finala
  3. Daca da: se executa instructiunile, contorul creste cu 1, se revine la pasul 2
  4. 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.

De cate ori se va executa corpul buclei: PENTRU i DE LA 1 LA 5 EXECUTA scrie i?
A 4 ori
B 5 ori
C 6 ori
5

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.

Ce afiseaza codul: x=10; CAT TIMP x>3 EXECUTA x=x-3; scrie x?
A 7 4 1
B 10 7 4 1
C 7 4
6

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.

Care este diferenta principala intre CAT TIMP si REPETA...PANA CAND?
A Nu exista nicio diferenta
B REPETA se executa cel putin o data, CAT TIMP poate sa nu se execute deloc
C CAT TIMP se executa mereu o singura data
7

Tablouri (vectori) - colectii de date

Tablourile (numite si vectori) sunt structuri care stocheaza mai multe valori de acelasi tip sub un singur nume. Gandeste-te la un tablou ca la un dulap cu sertare numerotate: fiecare sertar are un numar (index) si contine o valoare.

Declarare si accesare:

numere = [10, 20, 30, 40, 50]

// Indexuri:  0   1   2   3   4

numere[0] = 10  (primul element)

numere[2] = 30  (al treilea element)

numere[4] = 50  (ultimul element)

Regula de aur: Indexarea incepe de la 0 ! Daca tabloul are n elemente, indexurile valide sunt de la 0 la n-1. Accesarea unui index care nu exista cauzeaza eroare!

Parcurgerea unui tablou cu PENTRU:

PENTRU i DE LA 0 LA lungime(tablou) - 1 EXECUTA

scrie tablou[i]

SFARSIT PENTRU

Operatii comune: citirea elementelor, afisarea, modificarea, adaugarea, stergerea, cautarea si sortarea.

Avem tabloul numere = [10, 20, 30, 40]. Ce valoare are numere[2]?
A 20
B 30
C 10
8

Algoritmi de baza pe tablouri

Majoritatea algoritmilor pe tablouri urmeaza un tipar comun: parcurgi elementele cu o bucla si faci o operatie pe fiecare element. Hai sa vedem cei mai importanti:

1. Suma elementelor:

suma = 0

PENTRU i DE LA 0 LA n-1 EXECUTA

suma = suma + tablou[i]

scrie suma

2. Gasirea maximului:

max = tablou[0]

PENTRU i DE LA 1 LA n-1 EXECUTA

DACA tablou[i] > max ATUNCI max = tablou[i]

scrie max

3. Numararea elementelor care indeplinesc o conditie:

contor = 0

PENTRU i DE LA 0 LA n-1 EXECUTA

DACA tablou[i] MOD 2 = 0 ATUNCI contor = contor + 1

scrie contor  // numarul elementelor pare

4. Media aritmetica: media = suma / n (unde n este numarul de elemente)

💡 Tipar universal:

Initializeaza o variabila de acumulare (suma=0, contor=0, max=tablou[0]), parcurge tabloul cu FOR, aplica operatia pe fiecare element. Acest tipar rezolva 90% din problemele cu tablouri!

Pentru a gasi suma elementelor unui tablou, ce structura folosim de obicei?
A O structura conditionala (DACA)
B O structura repetitiva (PENTRU sau CAT TIMP)
C Nu avem nevoie de nicio structura
9

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!

Ce operatie folosim pentru a extrage ultima cifra a unui numar?
A Impartirea intreaga (DIV 10)
B Restul impartirii (MOD 10)
C Inmultirea cu 10
10

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:

  1. Noteaza toate variabilele si valorile lor initiale
  2. Parcurge instructiunile una cate una, in ordine
  3. Actualizeaza valorile variabilelor dupa fiecare instructiune
  4. La bucle: verifica conditia, executa corpul, actualizeaza, verifica din nou
  5. 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
Care este primul pas cand trasezi un algoritm (simulezi executia)?
A Scrii direct raspunsul final
B Notezi valorile initiale ale tuturor variabilelor si parcurgi pas cu pas
C Citesti doar ultima instructiune

Exercitii practice

Exercitiul 1 (Nivel minim) - Analiza si trasare algoritmi

Traseaza urmatoarele fragmente de cod si raspunde la intrebari:

  1. Ce afiseaza algoritmul: n=2468; s=0; CAT TIMP n>0 EXECUTA s=s+n MOD 10; n=n DIV 10; SFARSIT; scrie s. Explica pas cu pas.
  2. Cate executii are bucla: PENTRU i DE LA 3 LA 15 EXECUTA DACA i MOD 3 = 0 ATUNCI scrie i? Ce valori se afiseaza?
  3. Ce tip de bucla ai folosi pentru a citi numere de la utilizator pana cand introduce 0? De ce nu PENTRU?
  4. Scrie un algoritm care gaseste cel mai mic element par dintr-un tablou de numere intregi. Ce se intampla daca tabloul nu contine niciun element par?
  5. Care este diferenta intre a initializa max cu tablou[0] vs. a initializa max cu 0 cand cautam maximul? In ce caz da gresit max=0?

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 si varianta in C++ sau Python pentru fiecare algoritm
  • 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, tablou, index, MOD, DIV, trasare, evaluare nationala

Ce ai invatat astazi

  • Variabile si tipuri de date
  • Expresii si ordinea operatiilor
  • Structuri conditionale (DACA-ATUNCI-ALTFEL)
  • Bucla PENTRU (FOR) - cand stim numarul de pasi
  • Bucla CAT TIMP (WHILE) - cand nu stim numarul de pasi
  • Bucla REPETA...PANA CAND (DO...UNTIL)
  • Tablouri (vectori) - colectii de date
  • Algoritmi de baza pe tablouri
  • Algoritmi pe numere - cifre si numere prime
  • Recapitulare - Cum trasezi un algoritm

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →