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

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.

Ce operatie efectueaza urmatoarea secventa: PENTRU i DE LA 1 LA n EXECUTA citeste a[i]?
A Afiseaza elementele sirului
B Citeste toate elementele sirului unul cate unul
C Calculeaza suma elementelor
8

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.

Pentru a calcula suma elementelor unui sir, ce variabila initializam inainte de bucla?
A max = a[1]
B suma = 0
C contor = n
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. Completeaza tabelul pas cu pas: dupa pasul 1 n=... s=..., dupa pasul 2 n=... s=..., etc.
  2. 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.
  3. 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.
  4. 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=...
  5. 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

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)
  • Siruri de valori numerice - notiuni introductive
  • Algoritmi de baza pe siruri de valori
  • Algoritmi pe numere - cifre si numere prime
  • Recapitulare - Cum trasezi un algoritm

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →