🧩 Fișe Interactive  Blockly
📡 SCORM 1.2
Scor total: 0 / 0 pct
📗 Fișa 1 · Structuri Liniare · Începător
Afișare și variabile
Blocurile tipărește și setează. Programe fără ramificații.
puncte
1
Citește codul Blockly și scrie ce afișează
4 pct
A
tipărește "Bun"
tipărește "venit"
tipărește "!"
B
setează x = 4
setează y = 6
tipărește x × y
2
Trage blocul potrivit în locul marcat cu ?
3 pct
Programul trebuie să afișeze: Salut, Ana!
Blocuri disponibile
"Salut, Ana!"
42
"Bună!"
Programul meu
tipărește ?
Programul trebuie să afișeze: Bine ai venit,
Mihai!
Blocuri disponibile
"Bine ai venit,"
"Mihai!"
"La revedere!"
Programul meu
tipărește ?
tipărește ?
3
Ordonează blocurile — calculează și afișează 15 + 5
3 pct
Blocuri disponibile
☰ tipărește s
☰ setează a = 15
☰ setează s = a + b
☰ setează b = 5
Programul meu — trage blocurile în ordinea corectă
📗 Fișa 2 · Atribuiri · Începător
Atribuiri și expresii
Urmărirea valorii variabilelor. Operații aritmetice. Schimbarea valorilor.
puncte
1
Urmărește variabilele și scrie valoarea finală afișată
4 pct
A — Urmărește variabila n
setează n = 10
setează n = n × 2
setează n = n5
tipărește n
B — Calculează c
setează a = 3
setează b = a + 2
setează c = b × a
tipărește c
2
Trage valoarea corectă pentru a obține rezultatul dorit
3 pct
Programul trebuie să afișeze 24. Alege valoarea lui y.
Valori disponibile
6
3
20
Programul meu
setează x = 4
setează y = ?
tipărește x × y
3
Schimbul a două variabile — ordonează blocurile corect
3 pct
Programul schimbă valorile lui a și b folosind variabila temporară temp.
Blocuri disponibile
☰ setează b = temp
☰ setează temp = a
☰ tipărește a, b
☰ setează a = b
Programul meu (înceapă cu setează temp)
💡Pasul cheie: salvează întâi valoarea lui a în temp înainte să o suprascrii!
📗 Fișa 3 · Intrări și Ieșiri · Începător
Citire și afișare
Blocul citește pentru intrare de la utilizator. Combinat cu afișare.
puncte
1
Analizează programul și răspunde la întrebări
4 pct
A — Salut personalizat
citește nume
tipărește "Bună, " + nume
B — Suma a două numere
citește a
citește b
setează s = a + b
tipărește s
2
Trage variabila potrivită în blocul citește
3 pct
Programul citește un număr, îl dublează și afișează rezultatul.
Variabile disponibile
nr
x
text
Programul meu
citește ?
setează rez = nr × 2
tipărește rez
3
Ordonează: program care citește x și y și afișează suma
3 pct
Blocuri disponibile
☰ tipărește s
☰ citește y
☰ setează s = x + y
☰ citește x
Programul meu
📙 Fișa 4 · Alternative Simple · Mediu
Structura „dacă"
Execuția condiționată a unui bloc de instrucțiuni.
puncte
1
Ce afișează programul pentru valorile date?
4 pct
A — dacă x > 10
setează x = 15
dacă x > 10 :
tipărește "mare"
B — același program, x diferit
setează x = 3
dacă x > 10 :
tipărește "mare"
2
Trage condiția potrivită în blocul „dacă"
3 pct
Programul afișează „trece" dacă nota este cel puțin 5.
Condiții disponibile
nota ≥ 5
nota > 10
nota < 5
Programul meu
citește nota
dacă ? :
tipărește "trece"
3
Ordonează blocurile: afișează „pozitiv" dacă x > 0
3 pct
Blocuri disponibile
☰ tipărește "pozitiv"
☰ dacă x > 0: {
☰ citește x
☰ } ← sfârșit dacă
Programul meu
📙 Fișa 5 · Alternative Complete · Mediu
Structura „dacă / altfel"
Două ramuri de execuție în funcție de o condiție.
puncte
1
Ce afișează programul pentru valorile date?
4 pct
A — x = 7
setează x = 7
dacă x ≥ 0 :
tipărește "pozitiv"
altfel :
tipărește "negativ"
B — x = −4
setează x = −4
dacă x ≥ 0 :
tipărește "pozitiv"
altfel :
tipărește "negativ"
2
Trage operatorul de comparație potrivit
3 pct
Programul afișează „par" dacă numărul este par (rest împărțire la 2 = 0), altfel „impar".
Condiții disponibile
n mod 2 = 0
n > 0
n mod 2 = 1
Programul meu
citește n
dacă ? :
tipărește "par"
altfel :
tipărește "impar"
3
Ordonează: citește nota și clasifică
3 pct
Blocuri disponibile (6 blocuri)
☰ tipărește "promovat"
☰ dacă nota >= 5: {
☰ citește nota
☰ } altfel: {
☰ tipărește "repetent"
☰ } ← sfârșit dacă
Programul meu
📙 Fișa 6 · Bucle Simple · Mediu
Structura „repetă N ori"
Executarea unui bloc de N ori. Acumulatori simpli în buclă.
puncte
1
Urmărește execuția buclei și scrie rezultatul
4 pct
A — Repetă și numără
repetă 4 ori:
tipărește "★"
B — Acumulator
setează s = 0
repetă 3 ori:
setează s = s + 5
tipărește s
2
Trage numărul corect de repetări
3 pct
Programul trebuie să adune 10 de 5 ori și să afișeze 50.
Numere disponibile
5
3
10
Programul meu
setează total = 0
repetă ? ori:
setează total = total + 10
tipărește total
3
Ordonează: calculează produsul 3 × 4 prin adunări repetate
3 pct
Blocuri disponibile
☰ setează p = p + 3
☰ tipărește p
☰ setează p = 0
☰ repetă 4 ori: {
☰ } ← sfârșit buclă
Programul meu
📙 Fișa 7 · Bucle cu Contor · Mediu
Structura „pentru i de la … la …"
Buclă cu variabilă de control. Urmărirea valorilor contorului.
puncte
1
Urmărește contorul și scrie valorile afișate
4 pct
A — Tipărește i
pentru i de la 1 la 5:
tipărește i
B — Pătratele
pentru i de la 1 la 4:
tipărește i × i
2
Trage limita corectă a buclei
3 pct
Programul trebuie să calculeze suma 1+2+3+…+10 și să afișeze 55.
Limite disponibile
10
5
100
Programul meu
setează s = 0
pentru i de la 1 la ?:
setează s = s + i
tipărește s
3
Ordonează: afișează toți multiplii lui 3 până la 15
3 pct
Blocuri disponibile
☰ tipărește i * 3
☰ pentru i de la 1 la 5: {
☰ } ← sfârșit pentru
Programul meu
📘 Fișa 8 · Combinat: Intrări + Alternative · Avansat-Mediu
Citire și decizie
Programe care citesc date și iau decizii pe baza lor.
puncte
1
Urmărește programul pentru valorile date
4 pct
A — x = 8
citește x
dacă x > 0 :
tipărește "pozitiv"
altfel :
tipărește "negativ sau zero"
B — x = 0
citește x
dacă x > 0 :
tipărește "pozitiv"
altfel :
tipărește "negativ sau zero"
2
Trage condițiile potrivite în locurile goale
3 pct
Programul clasifică un număr: mare dacă > 100, mic dacă ≤ 100.
Condiții disponibile
n > 100
n < 0
n = 0
Programul meu
citește n
dacă ? :
tipărește "mare"
altfel :
tipărește "mic"
3
Ordonează: citește două numere și afișează maximul
3 pct
Blocuri disponibile (7 blocuri)
☰ citește a
☰ dacă a > b: {
☰ tipărește a
☰ citește b
☰ } altfel: {
☰ tipărește b
☰ } ← sfârșit dacă
Programul meu
📘 Fișa 9 · Combinat: Bucle + Acumulatori · Avansat-Mediu
Bucle și totalizare
Calculul sumelor și produselor cu variabile acumulator.
puncte
1
Calculează valoarea finală a acumulatorului
4 pct
A — Suma 1+2+3+4+5
setează s = 0
pentru i de la 1 la 5:
setează s = s + i
tipărește s
B — Factorial 4!
setează p = 1
pentru i de la 1 la 4:
setează p = p × i
tipărește p
2
Trage expresia de actualizare a acumulatorului
3 pct
Programul calculează suma pătratelor: 1² + 2² + 3² + … + 5² = 55.
Expresii disponibile
s + i²
s + i
s × i
Programul meu
setează s = 0
pentru i de la 1 la 5:
setează s = ?
tipărește s
3
Ordonează: citește n și calculează suma 1+2+…+n
3 pct
Blocuri disponibile (6 blocuri)
☰ citește n
☰ pentru i de la 1 la n: {
☰ setează s = 0
☰ setează s = s + i
☰ } ← sfârșit pentru
☰ tipărește s
Programul meu
📘 Fișa 10 · Problemă Complexă · Avansat-Mediu
Numărare condiționată în buclă
Combinare: citire, buclă, condiție, acumulator contor.
puncte
1
Urmărește programul complex și calculează rezultatul
4 pct
A — Numără numerele pare din 1–10
setează c = 0
pentru i de la 1 la 10:
dacă i mod 2 = 0 :
setează c = c + 1
tipărește c
B — Sumă numere impare 1–7
setează s = 0
pentru i de la 1 la 7:
dacă i mod 2 ≠ 0 :
setează s = s + i
tipărește s
2
Trage condițiile și valorile potrivite
3 pct
Programul numără câte numere din 1–n sunt strict mai mari decât 5.
Expresii disponibile
i > 5
i mod 2 = 0
c + 1
c − 1
Programul meu (2 locuri goale)
setează c = 0
pentru i de la 1 la n:
dacă ? :
setează c = ?
tipărește c
3
Ordonează: numără câte cuvinte dintr-o listă au lungimea > 4
3 pct
Programul citește n și numără câte numere de la 1 la n sunt multipli de 3.
Blocuri disponibile (7 blocuri)
☰ setează c = 0
☰ tipărește c
☰ } ← sfârșit dacă
☰ citește n
☰ pentru i de la 1 la n: {
☰ dacă i mod 3 = 0: {
☰ setează c = c + 1
☰ } ← sfârșit pentru
Programul meu
📡
Conectare Moodle LMS
Inițializare SCORM API... Dacă pagina rulează local (nu din Moodle), scorurile nu se transmit.
În așteptare
🔷 Fișa 11 · Bucla „cât timp" (while) · Avansat
Structura repetitivă condiționată
Bucla se execută cât timp o condiție este adevărată. Numărul de iterații nu este cunoscut dinainte.
puncte
1
Urmărește execuția buclei while și calculează rezultatul
4 pct
A — Numără până la 5
setează i = 1
cât timp i ≤ 5 :
tipărește i
setează i = i + 1
B — Câte iterații are bucla?
setează n = 100
cât timp n > 1 :
setează n = n ÷ 2
tipărește n
💡Împărțire întreagă: 25÷2=12, 3÷2=1
2
Trage condiția corectă de oprire a buclei
3 pct
ProblemăCitește numere de la utilizator cât timp nu se introduce 0. La final afișează câte numere au fost citite.
Condiții disponibile
x ≠ 0
x > 0
x < 10
Programul meu
setează c = 0
citește x
cât timp ? :
setează c = c + 1
citește x
tipărește c
3
Ordonează: găsește cel mai mic divizor al lui n (> 1)
3 pct
ProblemăCel mai mic divizor al lui n mai mare decât 1 se găsește pornind de la d = 2 și testând cât timp n mod d ≠ 0.
Blocuri disponibile (6 blocuri)
☰ citește n
☰ cât timp n mod d ≠ 0: {
☰ setează d = 2
☰ setează d = d + 1
☰ } ← sfârșit cât timp
☰ tipărește d
Programul meu
🔷 Fișa 12 · Vectori / Tablouri · Avansat
Structuri de date liniare
Citire și prelucrarea unui tablou de elemente. Accesarea prin indice.
puncte
1
Urmărește prelucrarea vectorului
4 pct
A — Suma elementelor
v = [3, 7, 2, 8]
setează s = 0
pentru i de la 0 la 3:
setează s = s + v[i]
tipărește s
B — Câte elemente sunt pare?
v = [4, 7, 2, 9, 6]
setează c = 0
pentru i de la 0 la 4:
dacă v[i] mod 2 = 0:
setează c = c + 1
tipărește c
2
Trage expresia de actualizare corectă
3 pct
ProblemăCalculează media aritmetică a n numere citite de la tastatură.
Expresii disponibile
s ÷ n
s × n
s + n
Programul meu
citește n
setează s = 0
pentru i de la 1 la n:
citește x
setează s = s + x
setează med = ?
tipărește med
3
Ordonează: găsește maximul dintr-un vector de n elemente
3 pct
Blocuri disponibile (8 blocuri)
☰ citește n
☰ citește v[0]
☰ setează max = v[0]
☰ pentru i de la 1 la n-1: {
☰ citește v[i]
☰ dacă v[i] > max: {
☰ setează max = v[i]
☰ } ← sfârșit dacă + pentru
☰ tipărește max
Programul meu
🔷 Fișa 13 · Cifre și Divizori · Avansat
Algoritmi pe numere întregi
Extragerea cifrelor, verificarea primalității, calculul numărului de divizori.
puncte
1
Urmărește algoritmul și calculează rezultatul
4 pct
A — Suma cifrelor lui 1234
setează n = 1234
setează s = 0
cât timp n > 0 :
setează s = s + n mod 10
setează n = n ÷ 10
tipărește s
B — Este 7 prim?
setează n = 7
setează d = 0
pentru i de la 1 la n:
dacă n mod i = 0:
setează d = d + 1
dacă d = 2:
tipărește "prim"
altfel:
tipărește "neprim"
2
Trage condiția corectă pentru algoritmul CMMDC (Euclid)
3 pct
ProblemăAlgoritmul lui Euclid calculează CMMDC prin împărțiri successive: înlocuiește a cu b și b cu restul împărțirii, cât timp b ≠ 0.
Condiții disponibile
b ≠ 0
a > b
a ≠ b
Programul meu
citește a, b
cât timp ? :
setează r = a mod b
setează a = b
setează b = r
tipărește a
3
Ordonează: afișează toate numerele prime de la 2 la n
3 pct
Blocuri disponibile (8 blocuri)
☰ citește n
☰ pentru i de la 2 la n: {
☰ setează d = 0
☰ pentru j de la 1 la i: {
☰ dacă i mod j = 0: c=c+1
☰ } ← sf. j + dacă d=2: {
☰ tipărește i
☰ } ← sf. dacă + sf. i
Programul meu
🔷 Fișa 14 · Algoritmi de Căutare · Avansat
Căutare secvențială și binară
Găsirea unui element într-un vector. Compararea eficienței algoritmilor.
puncte
1
Urmărește căutarea secvențială
4 pct
A — Găsește elementul
v = [5, 12, 3, 8, 17]
setează x = 8
setează poz = -1
pentru i de la 0 la 4:
dacă v[i] = x:
setează poz = i
tipărește poz
B — Ce afișează dacă x = 99?
v = [5, 12, 3, 8, 17]
setează x = 99
setează poz = -1
pentru i de la 0 la 4:
dacă v[i] = x:
setează poz = i
tipărește poz
2
Trage valorile corecte pentru căutarea binară
3 pct
ProblemăCăutare binară în vectorul sortat [1,3,5,7,9,11,13]. Caută x=7. st=0, dr=6.
Valori disponibile
3
7
13
Ce conține v[mij] la primul pas? (mij = (0+6)÷2 = 3)
setează mij = (st+dr2 = 3
v[3] = ?
💡v = [1,3,5,7,9,11,13]. Indicele 3 → elementul 7. Găsit din prima!
3
Ordonează: numără aparițiile lui x în vector
3 pct
Blocuri disponibile (6 blocuri)
☰ citește n, x
☰ setează c = 0
☰ pentru i de la 0 la n-1: {
☰ citește v[i]
☰ dacă v[i] = x: c = c+1 }
☰ tipărește c
Programul meu
🔷 Fișa 15 · Sortare prin selecție · Avansat
Algoritm de sortare
Sortarea unui vector prin selecția minimului la fiecare pas. Urmărirea stărilor intermediare.
puncte
1
Urmărește pașii sortării
4 pct
A — Vectorul [4, 1, 3, 2] după primul pas
ContextPrimul pas al sortării prin selecție: găsim minimul din [4,1,3,2], îl schimbăm cu primul element.
B — Câți pași sunt necesari?
ProblemăLa sortarea prin selecție a unui vector cu n=5 elemente, câți pași (treceri) sunt necesari?
💡La fiecare pas fixăm un element. Ultimul se fixează automat → n−1 pași.
2
Trage blocul de schimb (swap) în locul corect
3 pct
ProblemăSortare prin selecție: la fiecare pas i, găsim indicele minimului în v[i..n-1] și îl schimbăm cu v[i].
Blocuri de schimb disponibile
swap(v[i], v[min_j])
v[i] = v[i]+1
v[i] = v[min_j]
Programul meu
pentru i de la 0 la n-2:
setează min_j = i
pentru j de la i+1 la n-1:
dacă v[j] < v[min_j]:
setează min_j = j
?
3
Ordonează: sortare prin inserție
3 pct
Blocuri disponibile (6 blocuri)
☰ pentru i de la 1 la n-1: {
☰ setează temp = v[i]
☰ setează j = i - 1
☰ cât timp j>=0 și v[j]>temp: {
☰ v[j+1]=v[j]; j=j-1 }
☰ v[j+1] = temp }
Programul meu
📘 Fișa 16 · Funcții / Subprograme · Expert
Definirea și apelarea funcțiilor
Modularizarea codului prin funcții cu parametri și valoare returnată.
puncte
1
Urmărește apelul funcției și calculează rezultatul
4 pct
A — Funcție pătrat
funcție patrat(x):
returnează x × x
tipărește patrat(5)
B — Funcție cu 2 parametri
funcție max2(a, b):
dacă a > b:
returnează a
altfel:
returnează b
tipărește max2(8, 13)
2
Trage corpul corect al funcției factorial
3 pct
ProblemăFuncția factorial(n) calculează n! = 1×2×…×n. Completează corpul funcției.
Blocuri disponibile
p×i în buclă → ret p
returnează n+1
returnează n²
Funcția mea
funcție factorial(n):
setează p = 1
?
3
Ordonează: funcție care verifică dacă n este prim
3 pct
Blocuri disponibile (6 blocuri)
☰ funcție estePrim(n): {
☰ setează d = 0
☰ pentru i 1 la n: dacă n%i=0: d++
☰ returnează (d = 2) } ← sf. fn
☰ citește n
☰ dacă estePrim(n): tipărește "prim"
Programul meu
📘 Fișa 17 · Recursivitate · Expert
Funcții recursive
O funcție care se apelează pe sine. Cazul de bază și pasul recursiv.
puncte
1
Urmărește apelul recursiv și calculează
4 pct
A — Factorial recursiv: fact(4)
funcție fact(n):
dacă n = 0: returnează 1
altfel:
returnează n × fact(n−1)
tipărește fact(4)
B — Fibonacci recursiv: fib(6)
funcție fib(n):
dacă n ≤ 1: returnează n
altfel:
returnează fib(n−1) + fib(n−2)
tipărește fib(6)
💡fib(0)=0,fib(1)=1,fib(2)=1,fib(3)=2,fib(4)=3,fib(5)=5,fib(6)=8
2
Trage cazul de bază corect al recursiei
3 pct
ProblemăFuncție recursivă care calculează suma cifrelor unui număr: suma(1234) = 4 + suma(123).
Cazuri de bază disponibile
n = 0
n > 10
n < 0
Funcția mea
funcție sumaCifre(n):
dacă ?: returnează 0
altfel:
returnează n mod 10 + sumaCifre(n÷10)
3
Ordonează: funcție recursivă putere(baza, exp)
3 pct
Blocuri disponibile (5 blocuri)
☰ funcție putere(b, e): {
☰ dacă e = 0: returnează 1
☰ altfel: returnează b × putere(b, e-1) }
☰ citește b, e
☰ tipărește putere(b, e)
Programul meu
📘 Fișa 18 · Șiruri de caractere · Expert
Prelucrarea textului
Numărarea caracterelor, inversarea, palindroame, căutare în șiruri.
puncte
1
Urmărește prelucrarea șirului de caractere
4 pct
A — Numără vocalele
s = "programare"
setează c = 0
pentru i de la 0 la lung(s)−1:
dacă s[i] ∈ {a,e,i,o,u}:
setează c = c + 1
tipărește c
B — Este palindrom?
s = "cojoc"
rev = ""
pentru i de la lung−1 la 0:
rev = rev + s[i]
dacă s = rev:
tipărește "DA"
altfel:
tipărește "NU"
2
Trage expresia corectă pentru construirea cuvântului inversat
3 pct
Expresii disponibile
s[i] + rev
rev + s[i]
s[i] × 2
Inversarea unui șir (adaugă la STÂNGA)
setează rev = ""
pentru i de la 0 la lung−1:
setează rev = ?
💡Pentru a construi inversul, adaugi fiecare caracter înaintea celor existente: s[i] + rev
3
Ordonează: numără aparițiile unui caracter într-un șir
3 pct
Blocuri disponibile (5 blocuri)
☰ citește s, c
☰ setează cnt = 0
☰ pentru i de la 0 la lung(s)-1: {
☰ dacă s[i] = c: cnt = cnt+1 }
☰ tipărește cnt
Programul meu
📘 Fișa 19 · Probleme combinate · Expert
Algoritmi complecși
Combinarea tuturor structurilor: funcții, tablouri, bucle, condiții.
puncte
1
Analizează programul complex și răspunde
4 pct
A — Ciurul lui Eratostene (primii primi ≤ 10)
prim = [DA]*11
prim[0]=prim[1]=NU
pentru i de la 2 la 3:
dacă prim[i]:
pentru j de la la 10 (pas i):
prim[j] = NU
pentru i 2→10: dacă prim[i]: tipărește i
B — Anagramă?
s1 = "ascor"
s2 = "scora"
sortează s1, s2
dacă sort(s1) = sort(s2):
tipărește "anagrama"
altfel:
tipărește "nu"
2
Trage blocul de actualizare corect
3 pct
ProblemăCalculează media numerelor pozitive dintr-un vector (ignoră negativele).
Expresii disponibile
s ÷ cnt
s ÷ n
s × cnt
Programul meu
s=0; cnt=0
pentru i de la 0 la n−1:
dacă v[i] > 0:
s = s + v[i]
cnt = cnt + 1
med = ?
tipărește med
3
Ordonează: algoritmul de interclasare a doi vectori sortați
3 pct
Blocuri disponibile (7 blocuri)
☰ setează i=0, j=0, k=0
☰ cât timp i < n1 și j < n2: {
☰ dacă a[i] < b[j]: c[k]=a[i]; i++
☰ altfel: c[k]=b[j]; j++ } k++
☰ copiază restul din a sau b în c
☰ tipărește c
Programul meu
📘 Fișa 20 · Sinteză Finală · Expert
Problemă de evaluare completă
Test de sinteză: toate structurile, funcții, vectori, recursivitate.
puncte
1
Analizează algoritmul complet
4 pct
A — Turnul Hanoi (n=3), câte mutări?
funcție hanoi(n):
dacă n = 0: returnează 0
altfel:
returnează 2×hanoi(n−1)+1
tipărește hanoi(3)
B — Cel mai lung subșir crescător
v = [3, 1, 4, 1, 5, 9, 2]
max_len=1; cur_len=1
pentru i de la 1 la 6:
dacă v[i] > v[i−1]:
cur_len = cur_len + 1
dacă cur_len > max_len: max_len=cur_len
altfel: cur_len = 1
tipărește max_len
💡Subșiruri crescătoare: [3],[1,4],[1,5,9],[2]. Cel mai lung: 1,5,9 = lungime 3.
2
Trage algoritmul potrivit pentru problema dată
3 pct
Problemă de sintezăSe dă un vector de n numere întregi. Calculează suma numerelor ce sunt simultan: pozitive, pare și mai mari decât media vectorului.
Condiții de filtrare disponibile
v[i]>0 și v[i]%2=0 și v[i]>med
v[i] > 0
v[i] % 2 = 0
Programul meu — condiția completă
calculează med = s/n mai întâi
setează rez = 0
pentru i:
dacă ?:
rez = rez + v[i]
tipărește rez
3
BONUS: Ordonează algoritmul complet QuickSort (pivot)
3 pct
Blocuri disponibile (7 blocuri)
☰ funcție qs(v, st, dr): {
☰ dacă st >= dr: returnează }
☰ pivot = v[(st+dr)÷2]
☰ partiționează v în st..dr față de pivot → p
☰ qs(v, st, p-1)
☰ qs(v, p+1, dr) }
☰ apelează qs(v, 0, n-1)
Programul meu