Sunteți pe pagina 1din 25

Pseudocod

1) Ce este un algoritm?
Algoritmul este o succesiune de etape care se pot aplica mecanic în vederea
obținerii unor anumite rezultate.
Exemplu: O persoană care merge la școală
În orice algoritm se pornește de la anumite informații cunoscute și se dorește
obținerea anumitor rezultate.
Exemplu: Algoritmul prin care mergem la școală:
- ne trezim
- ne spălăm pe dinți
- mâncăm
- ne îmbrăcăm de plecare
- luăm autobuzul
- ajungem la școală

2) Date de intrare / Date de ieșire:


Orice algoritm conține date de intare / ieșire care ne ajută să înțelegem mai bine
programul pe care vrem să-l executăm.
Exemplu: Ioana are 5 ani. Să se afle peste câți ani va împlini 15.
- Date de intrare: 5 (vârsta Ioanei din prezent)
- Date de ieșire: ani (reprezentând un număr pe care trebuie să-l
aflăm)
𝑥 2 − 2 𝑝𝑒𝑛𝑡𝑟𝑢 𝑥 < 0
Exemplu Matematic: 𝑓: 𝑅 → 𝑅 | 𝑓(𝑥) = { 5 𝑝𝑒𝑛𝑡𝑟𝑢 𝑥 = 0
2𝑥 + 1 𝑝𝑒𝑛𝑡𝑟𝑢 𝑥 > 0
Date de intrare: x | Date de ieșire: f(x)
Etape:
- se citește x
- în funcție de x se verifică cele 3 condiții (𝑥 < 0 | 𝑥 = 0 | 𝑥 > 0)
- se calculează valoarea lui f(x)
- se afișează valoarea lui f(x)

PSEUDOCOD | Crantea Antonio Cristian - 2021


3) Tipuri de date:
După tipul lor, datele se clasifică în: - întregi (Exemplu: 6)
- reale (Exemplu: 6.5)
- șir de caractere (Exemplu: “Ana are mere”)
- logice (Exemplu: TRUE / False)
Ne putem imagina variabilele ca pe niște casete care rețin date. Fiecare variabilă
are un nume și poate reșine date de un anumit tip:

6 6.5 Ana are mere TRUE

a b c d

4) Expresii și operatori în limbajul pseudocod:


În scopul efectuării calculelor și a luării anumitor decizii, algoritmii folosesc
expresii. O expresie este alcătuită din 1 sau mai mulți operanzi legați între ei prin
operatori.
operator
1+2=3

operanzi

Operatorii aritmetici sunt constante sau variabile de tip întreg sau real.
Operatorii mai des întâlniți sunt: - “+” pentru adunare
- “-” pentru scădere
- “*” pentru înmulțire
- “/” pentru împărțire
În pseudocod se poate utiliza orice simbol cu semnificație matematică (√𝑥, [x]) și
multe altele.
Operatorul NOT acționează asupra unui singur operand logic (Dacă operatorul
este TRUE, rezultatul va fi FALSE).
TRUE FALSE
NOT FALSE TRUE

PSEUDOCOD | Crantea Antonio Cristian - 2021


5) Relații Importante:
I) Între 2 numere “a” și “b” pot exista numai relațiile:
- Dacă a > b atunci relațiile a = b și a < b sunt FALSE
- Dacă a = b atunci relațiile a > b și a < b sunt FALSE
- Dacă a < b atunci relațiile a = b și a > b sunt FALSE
II) NOT (a > b) => a ≤ b
NOT (a ≥ b) => a < b
NOT (a < b) => a ≥ b
NOT (a ≤ b) => a > b
NOT (a = b) => a ≠ b
NOT (a ≠ b) => a = b
III) Relațiile lui De Morgan:
NOT (a și b) => NOT (a) sau NOT (b)
NOT (a sau b) => NOT (a) și NOT (b)
Exercițiu: Cărui interval îi aparține valoarea memorată de variabila reală x, astfel
încât expresia următoare să aibă valoarea TRUE.
(x ≤ 2) sau (x > -1) și NOT (x ≥ 1) sau (x > 50)
a) (-∞, -2) ∪ (-1, 1] ∪ (50, +∞)
b) (-∞, -2) ∪ (-1, 50)
c) (-∞, -2] ∪ (-1, 1) ∪ (50, +∞)
d) (-∞, -2) ∪ (-1, 1) ∪ (50, +∞)
Pentru a rezolva acest exercițiu, trebuie mai întâi să-l transformăm, tocmai pentru
a scăpa de NOT și a ajunge la valoarea lui adevărată.
Astfel, expresia noastră devine: (x ≤ 2) sau (x > -1) și (x < 1) sau (x > 50)
Astfel, transformând expresia dată, putem observa că răspunsul corect este c).

6) Atribuiri:
În pseudocod, atribuirile se fac ajutându-ne de simbolul “←”.
Exemplu: a ← 5 | nr ← nr + 1 |V ← V + nr

PSEUDOCOD | Crantea Antonio Cristian - 2021


7) Exemple de algoritmi:
Exemplul 1: Se citesc 2 numere întregi. Să se afișeze suma lor.
Date de intarare: a, b Ce știm? a și b
Date de ieșire: S Ce trebuie să aflăm? S
--------------------------------- ---------------------------------
întreg a, b, S Am definit variabilele a, b și S ca fiind de tip întreg
citește a, b Citim a și b, astfel: a ← 5; b ← 10 (Numere random)
S←a+b Sumei ii se atribuie valaorea a + b, astfel: S ← 5 + 10; S ← 15
scrie S Afișăm suma: 15

Exemplul 2: Variabilele a, b și c sunt de tip întreg. Să se afișeze rezultatul în urma


executării algoritmului de mai jos.
întreg a, b, c Am definit variabilele a, b și c ca fiind de tip întreg
a←2 Lui a i s-a atribuit automat valoarea 2
b←5 Lui b i s-a atribuit automat valoarea 5
c ← (a * b) + (b - a) Lui c i s-a atribuit valoarea alăturată care trebuie calculată,
scrie c astfel, o calculăm: c ← (2 * 5) + (5 - 2) ; c ← 10 + 3; c ← 13
Afișăm c: 13

Exemplul 3: Variabilele a, b și c sunt de tip întreg. Să se afișeze rezultatul în urma


executării algoritmului de mai jos.
întreg a, b, c Am definit variabilele a, b și c ca fiind de tip întreg
a←6 Lui a i s-a atribuit automat valoarea 6
b←3 Lui b i s-a atribuit automat valoarea 3
b←a+b Lui b i s-a atribuit valoarea alăturată: b ← (6 + 3); b ← 9
c ← (a + b) / 5 Lui c i s-a atribuit valoarea automată, iar noi vom lua în
calcul noul b, adică 9, nu 3, așa cum a fost la început, astfel:
c ← (6 + 9) / 5; c ← 15 / 5; c ← 3
Afișăm c: 3

(!) Reținem că de fiecare dată când o variabilă își schimbă valoarea, aceasta va fi
folosită / utilizată cu noua sa valoarea, nu cu ce avea memorat inițial.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Restul împărțirii și împărțirea numerelor întregi

În pseudocod, restul și împărțirea a 2 întregi este întreagă, astfel:


100 împărțit la 10 se scrie ca 100/10, rezultatul fiind 10.
123 împărțit la 10 se scrie ca 123/10, rezultatul fiind 12,3 iar în pseudocod se ia doar
partea întreagă, adică 12.
12 împărțit la 10 se scrie ca 12/10, rezultatul fiind 1,2 iar în pseudocod se ia doar
partea întreagă, adică 1.

(!) De aici putem înțelege că orice număr împărțit la 10 este exact același număr fără
ultima cifră.

100 împărțit la 2 se scrie ca 100/2, rezultatul fiind 50.


123 împărțit la 2 se scrie ca 123/2, rezultatul fiind 61,5 iar în pseudocod se ia doar
partea întreagă, adică 61.
13 împărțit la 2 se scrie ca 13/2, rezultatul fiind 6,5 iar în pseudocod se ia doar partea
întreagă, adică 6.

(!) De aici putem înțelege că orice număr împărțit la orice altceva este exact partea
întreagă, fără ce se află după virgulă.

Restul împărțirii cu 10 este unul simplu și se notează cu “%”.

100 la sută 10 se scrie ca 100%10, rezultatul fiind 0.


123 la sută 10 se scrie ca 123%10, rezultatul fiind 3.
12 la sută 10 se scrie ca 12%10, rezultatul fiind 2.

(!) De aici putem înțelege că orice număr la sută 10 rezultă exact ultima cifră a
numărului. Acest lucru se foloseste foarte des în problemele de la informatică, ne pot
ajuta să găsim cifrele unui număr, să îl inversăm, etc.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structuri de bază

În pseudocod, structurile sunt de 2 tipuri, astfel:


- Structuri liniare
- Structuri alternative - dacă… atunci
- Structuri repetitive - cu test inițial - cât timp… execută
- pentru… execută
- cu test final - execută… cât timp
- repetă… până când

Structura Liniară

Structura liniară reprezintă o succesiune de operații ce se realizează executând


operațiile una după alta.
Aceasta nu are o “structură” propriu zisă, la fel ca celelalte.
Exemplu:
întreg a, b, c, d
a←5
b←a*2
c←b*2+a
d←c*2+b
scrie b “ ” c “ ” d
Exemplul de mai sus poate demonstra cu exactitate ce este o structură liniară și
anume o însiruire de atribuiri ale unor valori care, într-un final, vor primi o
anumită valoare executând operațiile și totodată, specific exemplului nostru, se
vor și afișa cu tot cu spații, reprezentat de simbolul “ ”.
Astfel, făcând niște calcule simple, pe rând, linie cu linie, vom ajunge la
următoarele rezultate:
b ← 5 * 2; b ← 10 | c ← 10 * 2 + 5; c ← 25 | d ← 25 * 2 + 10; d ← 60
Se va afișa: 10 25 60

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structura Alternativă
Dacă... atunci

Structura alternativă mai are denumirea și de structură de decizie, deoarece se


verifică dacă afirmația pe care pseudocodul o face este și corectă, altfel, se
părăsește.
1) Structură:

┌dacă <condiție logică> atunci


│ operație 1
│ altfel
│ operație 2
└■
2) Principiu de execuție:
Pasul 1: Se testează expresia logică
Pasul 2: Dacă expresia este îndeplinită (TRUE), se execută operație 1, altfel, dacă
expresia nu este îndeplinită (FALSE), se execută operație 2.
(!) La această structură NU este obligatoriu să avem și un “altfel” (operație 2),
astfel, putem pune doar condiția (expresia logică), dacă se îndeplinește se va
executa “operație 1”, alfel, se va părăsi structura alternativă.
3) Exemple:
Exemplu 1: Se citesc 2 numere întregi “a” și “b”. Să se afișeze cel mai mare dintre
ele.
întreg a, b
citește a, b
┌dacă a > b atunci
│ scrie a
│ altfel
│ scrie b
└■

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 2: Se citesc 4 valori reale “a”, “b”, “c” și “d”. Să se calculeze expresia:
𝑎 + 𝑏, 𝑑𝑎𝑐ă 𝑐 + 𝑑 > 0
E = {𝑎 − 𝑏, 𝑑𝑎𝑐ă 𝑐 + 𝑑 = 0
𝑎 ∗ 𝑏, 𝑑𝑎𝑐ă 𝑐 + 𝑑 < 0
Date de intrare: a, b, c, d Am scrie datele de intreare (ce știm)
Date de ieșire: E Am scris datele de ieșire (ce trebuie să aflăm)
--------------------------------- -------------------------------------------------------------------
real a, b, c, d, E Am definit variabilele ca fiind de tip real, inclusiv E, fiind real
citește a, b, c, d Am citit valorile cu care trebuie să calculăm valoarea lui E
┌dacă c + d > 0 atunci Am scris condițiile necesare aflării variabilei E, altfel:
│ E←a+b Dacă c + d > 0, E ← a + b, altfel, dacă c + d = 0, E ← a - b,
│ altfel altfel (aici nu mai scriem nimic, deoarece dacă nu este nici >,
│ ┌dacă c + d = 0 atunci nici =, automat se deduce că este <), E ← a * b
│ │ E←a-b L-am afișat pe E
│ │ altfel
Exemplu, pentru: a ← -2.0, b ← -5.0, c ← -2.0, d ← 1.0
│ │ E←a*b
Ne întrebăm dacă c + d > 0 (-2.0+1.0 = -1.0), deci, nu este
│ └■
Trecem mai departe. Ne întrebăm dacă c + d = 0 și nu este
└■
Trecem mai departe. Automat algoritmul îi atribuie lui E
scrie E
valoarea a * b, deci: E ← -2.0*(-5.0), deci E ← 10.
Se afișează 10

(!) Când folosim această structură trebuie să fim foarte atenti, întrucât să nu ne
încurcăm în scrierea acestora. Trebuie să deschidem (┌), să cpntinuăm (│) și să
închidem (└■) corect algoritmul, pentru a nu exista eventuale greșeli.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structura Repetitivă cu Test Inițial
Cât timp... execută

1) Structură:

┌cât timp <condiție logică> execută


│ operație / operații
└■
2) Principiu de execuție:
Pasul 1: Se evalurează condiția logică, iar dacă aceasta este îndeplinită (TRUE), se
execută operația / operațiile, altfel, se părăsește structura.
Pasul 2: Se reia pasul 1 (până când condiția nu se mai îndeplinește (FALSE))
3) Exemple:
Exemplu 1: Se citește un număr întreg. Să se calculeze suma cifelor sale.
întreg nr, S
S←0
┌cât timp nr > 0 execută
│ S ← S + nr % 10
│ nr ← nr / 10
└■
scrie S
Pasul 1: S primește instant valoarea 0 deoarece mai târziu vom aduna la S pe S +
cifrele numărului, astfel, dacă nu i-am acorda valoarea 0, nu am avea cum să
calculăm
Pasul 2: nr % 10 calculează ultima cifră a numărului, iar mai apoi nr / 10 face ca
ultima cifră a numărului să dispară, astfel, repetându-se algoritmul de câteva ori,
până numărul devine 0.
Pasul 3: După ce structura nu se mai execută, se afișează direct S
Exemplu: nr = 123 -> S = 0 + 3; nr = 12 | S = 0 + 3 + 2; nr = 1 | S = 0 + 3 + 2 + 1; nr =
0 | nr = 0, deci, se părăsește structura, iar S se afișează (6)

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 2: Se citește un număr întreg “n”, apoi “n” numere întregi. Să se afișeze
suma numerelor impare și produsul numerelor pare.
Date de intrare: n, nr, i Am scrie datele de intreare (ce știm)
Date de ieșire: S, P Am scris datele de ieșire (ce trebuie să aflăm)
-------------------------------- -------------------------------------------------------------------
întreg n, nr, i, S, P Am definit variabilele ca fiind de tip întreg
S←0 Am atribuit lui S valorea 0 și lui P valoarea 1
P←1 Am tribuit lui i valoarea lui 1, el ajutându-ne să ținem
i←1 evidența celor “n” numere
citește n Am citit numărul “n” ce reprezintă mai apoi câte numere
┌cât timp i ≤ n execută citim
│ citește nr Dacă “i” este strict ≤ “n”, atunci executăm tot ce intră în
│ ┌dacă nr % 2 = 1 atunci alcătuirea structurii, anume: citim cele n numere pe rând,
│ │ S ←S + nr folosindu-ne de variabila “nr”, apoi verificăm dacă este
│ │ altfel par sau nu și acordăm astfel lui “S” și “P” valorile
│ │ P ← P * nr corespunzătoare.
│ └■ “i” crește de fiecare dată, deoarece reprezintă un contor
│ i←i+1 ce ne ajută să executăm programul doar de “n” ori, adică
└■ să citim “n” numere
scrie S “ ” P La final afișăm “S” și “P” cu un spațiu între ele

Exemplu:
n ← 5, deci, vom executa algoritmul de 5 ori, citind astfel 5 numere.
Ne întrebăm de fiecare dată daca “i” este strict mai mic sau egal cu “n”, tocmai
pentru a nu executa algoritmul nici de mai puține, nici de mai multe ori.
Citim “nr”, apoi verificăm condiția. Dacă restul împărțirii numărului la 2 este 1,
atunci este număr impar, iar suma crește, altfel dacă restul este 0, produsul se
înmulțește.
(!) Nu există altă cale decât 0 și 1, deoarece restul împărțirii la 2 este mereu 0 sau
1, respectiv par sau impar.
Spre exemplu, pentru “n” = 5, iar “nr” = (pe rand): 12, 535, 49, 10 și 100, se va
executa:
“S” va lua valoarea: 0 + 535 + 49 -> “S” ← 584
“P” va lua valaorea: 1 * 12 * 10 * 100 -> “P” ← 12000

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structura Repetitivă cu Test Inițial
Pentru... execută

1) Structură:

┌pentru x ← a, b execută ┌pentru x ← a, b, -1 execută


│ operație / operații │ operație / operații
└■ └■
2) Principiu de execuție:
Pasul 1: Se acordă variabilei “x” valoarea lui “a”, apoi se verifică dacă “x” (“a”)
este strict mai mic sau egal decât b.
Pasul 2: Se execută operația / operațiile, iar la final, “x” crește cu o valoarea
(echivalent la: x ← x + 1), acest lucru făcându-se automat, fără să mai fie nevoie să
îl creștem noi la final, așa cum făceam la instrucțiunea “cât timp... execută”.
Pasul 3: Se execută pasul 2 până când condiția (x ≤ b) nu se mai execută, apoi se
părăsește instrucțiunea.
(!) Pentru cel de-al 2-lea exemplu, “x” scade cu o valoare, (echivalent la: x ← x - 1)
3) Exemplu:
Exemplu 1: Să citește un număr întreg “n”. Să se calculeze suma primelor “n”
numere.
întreg n, S
S←0
citește n
┌pentru i ← 1, n execută
│ S←S+i
└■
scrie S
(!) În exemplul de mai sus am calculat strict suma primelor “n” numere, astfel:
Dacă n ← 5, vom calcula: S ← 1 + 2 + 3 + 4 + 5, ceea ce am și făcut.
“i” a pornit de la 1, apoi a fost adăugat în sumă, după care a crescut, repetând
acest lucru până ce “i” a devenit 6 și nu s-a mai executat condiția “i ≤ n”.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 2: Se citește un număr întreg “n”, apoi “n” numere întregi. Să se afișeze,
pentru fiecare număr în parte, câte cifre are.
Date de intrare: n, nr, i Am scrie datele de intreare (ce știm)
Date de ieșire: cifre Am scris datele de ieșire (ce trebuie să aflăm)
-------------------------------- -------------------------------------------------------------------
întreg n, nr, i, cifre Am definit variabilele ca fiind de tip întreg
citește n Am citit numărul “n” pentru a putea afla cele “n” numere
┌pentru i ← 1, n execută Variabila “i” a pornit de la 1 și se duce până la “n” (i ≤ n)
│ citește nr Pentru fiecare “i” în parte am citit un număr
│ cifre ← 0 Pentru fiecare “nr” în parte valoarea lui “cifre” pornește
│ ┌cât timp nr > 0 execută de la 0, pentru a nu aduna cifrelor tuturor numerelor
│ │ cifre ← cifre + 1 Cât timp “nr” > 0 am adăugat un contor la “cifre”, apoi am
│ │ nr ← nr / 10 tăiat “nr”, repetându-se acest lucru cât timp numărul
│ └■ există
│ scrie cifre “ ” După ce am ieșit din instrucțiunea “cât timp... execută”,
└■ am afișat numărul cifrelor, apoi un spațiu pentru a nu se
lipi celelalte valori de cifra anterioară ce va reprezenta
câte cifre are numărul.

Exemplu:
n ← 5, deci, vom executa algoritmul de 5 ori, citind astfel 5 numere.
Ne întrebăm de fiecare dată daca “i” este strict mai mic sau egal cu “n”, tocmai
pentru a nu executa algoritmul nici de mai puține, nici de mai multe ori.
Citim “nr”, apoi verificăm, pentru fiecare în parte “cifre” primește valoarea 0.
Intrăm în altă structură, dar nu o părăsim decât după ce numărul nostru este “=”
sau “<” decât 0.
“cifre” crește de fiecare dată când se execută instrucțiunea, iar mai pe scurt, am
putea spune că “cifre” se mărește cu o valoare cât timp “nr” există.
La final, afișăm valoarea lui “cifre” și punem și un spațiu pentru ca celelalte valori
ale celorlalte “n-i” valori să nu se lipească.
Spre exemplu, pentru “n” = 5, iar “nr” = (pe rand): 14, 179, 54, 10482 și 1473, se
va executa:
“cifre” va lua valoarea 0 pentru fiecare, apoi se calculează, se afișează și tot așa.
În final, ca rezultat va trebui să se afișeze: 2 3 2 5 4.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structura Repetitivă cu Test Final
Execută... cât timp

1) Structură:

┌execută
│ operație / operații
└■cât timp <condiție logică>
2) Principiu de execuție:
Pasul 1: Se execută operația / operațiile
Pasul 2: Se verifică dacă condiția este îndeplinită (TRUE), iar dacă este, se reia
pasul 1, altfel (FALSE), se părăsește structura.
3) Exemple:
Exemplu: Se citește un număr întreg. Să se calculeze suma cifelor sale.
întreg nr, S
S←0
┌execută
│ S ← S + nr % 10
│ nr ← nr / 10
└■cât timp nr > 0
scrie S
Exemplul de mai sus este identic cu cel de la structura “cât timp… execută”, doar
că, de data aceasta condiția este pusă la final.
(!) Diferența dintre cele 2 structuri nu este des prea mare, deoarece, de obicei
structurile se execută de același număr de ori.
Spre exempu, pentru nr = 123, se va memora în S tot valoarea 6, ce ulterior va fi și
afișată.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Structura Repetitivă cu Test Final
Repetă... până când

1) Structură:

┌repetă
│ operație / operații
└■până când <condiție logică>
2) Principiu de execuție:
Pasul 1: Se execută operația / operațiile
Pasul 2: Se verifică dacă condiția este îndeplinită (TRUE), iar dacă este, se reia
pasul 1, altfel (FALSE), se părăsește structura.
3) Exemple:
Exemplu: Se citește un număr întreg. Să se calculeze suma cifelor sale.
întreg nr, S
S←0
┌repetă
│ S ← S + nr % 10
│ nr ← nr / 10
└■până când nr = 0
scrie S
Exemplul de mai sus este identic cu cel de la structura “cât timp… execută”,
respectiv “execută… cât timp”, doar că, de data aceasta condiția este pusă la
final, fiind negată.
Spre exempu, pentru nr = 123, se va memora în S tot valoarea 6, ce ulterior va fi și
afișată.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Transformările dintr-o structură în alta

┌dacă <condiție logică> atunci


│ ┌execută
│ │ operație / operații
│ └■cât timp <condiție logică>
┌cât timp <condiție logică> execută └■
│ operație / operații
└■ ┌dacă <condiție logică> atunci
│ ┌repetă
│ │ operație / operații
│ └■până când < NOT condiție logică>
└■

┌repetă operație / operații


│ operație / operații ┌cât timp <NOT condiție logică> execută
└■până când <condiție logică> │ operație / operații
└■

i←a
┌cât timp i ≤ b execută
│ operație / operații
│ i←i+1
┌pentru i ← a, b execută └■
│ operație / operații
i←a
└■
┌dacă i ≤ b atunci
│ ┌repetă
│ │ operație / operații
│ │ i←i+1
│ └■până când i > b
└■

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exerciții, Explicații & Exemple din Bacalaureat

(!) În examenul de bacalaureat se pot găsi exerciții cu pseudocod doar la:


- Subiectul al II-lea, exercițiul 1 (a, b, c și d) - Exercițiu strict predestinat
pseudocodului
Profil: Matematică-Informatică, Științe-Ale-Naturii
- Subiectul al III-lea, exercițiul 1 - Exercițiu strict predestinat pseudocodului
Profil: Științe-Ale-Naturii
Explicații: Subiectul al II-lea, exercițiul 1:
Acest exercițiu conține 4 subpuncte, anume a, b, c și d, toate care au leăgătură cu
pseudocodul. În partea dreaptă este atașat un program, iar mai apoi subpunctele:
a) La subpunctul “a” vi se cere să arătați ce se afișează în urma executării
întregului algoritm dacă o anume valoarea primește o valoare, sau chiar mai
multe, în funcție și de program.
b) La subpunctul “b” vi se cere să scrieți una sau mai multe valori pentru care
algoritmul dat primește la final o anume valoare, dacă se execută cu valorile pe
care le-ați alege.
c) La subpunctul “c” vi se cere să scrieți algoritmul dat în limbajul C++.
d) La subpunctul “d” vi se cere să scrieți un algoritm asemănător cu cel dat, însă
trebuie să schimbați structura într-alta.
Explicații: Subiectul al III-lea, exercițiul 1:
În acest exercițiu vă este dată o cerință medie ca dificultate, iar mai apoi trebuie
rezolvată scriind-o într-un program, sub formă de pseudocod.
(!) În principiu, cam acestea sunt singurele situații unde pot pica astfel de exerciții,
strict legate de pseudocod.

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exerciții: Subiectul al II-lea, exercițiul 1:
Exemplu 1 (Matematică-Informatică & Științe-Ale-Naturii):

a. La acest subpunct trebuie să se citească pe rând valorile date, anume: 12345,


780, 921, 4013, 75 și 100214, după care să se scrie pe foaia de răspuns direct
răspunsul final, în cazul nostru 2020.
b. La acest subpunct este oferită o altă valoarea pentru “n”, iar mai apoi se cere
să scrieți două seturi de date care pot fi citite, astfel încât, la final să se afișeze 49.
Știind că lui “n” i se atribuie valoarea 49 observăm că algoritmul s-ar executa de 2
ori, deci, trebuie să scriem 2 valori pentru “x”, însă în două seturi, adică, în total, 4
valori, două câte două.
Exemplu: n = 49; x1 = 0, x2 = 1;
n = 49; x1 = 9, x2 = 4;
(!) La aceste tipuri de exerciții trebuie să fiți foarte atenți, întrucât se poate greși
destul de rapid și totodată aceste probleme se punctează strict, fără să existe
punctaj intermediar.
Mai pe scurt: Totul sau nimic.

PSEUDOCOD | Crantea Antonio Cristian - 2021


c. d.
#include <iostream.h> citește n (număr natural)
using namespace std;
int main(){ p ← 1; m ← 0; k ← 0
unsigned int n, p, m, x, i, c; ┌cât timp n ≠ 0 execută
cin >> n; │ citește x (număr natural)
p = 1; m = 0; k = 0;
│ x ← [x / p]
│ ┌dacă x ≠ 0 atunci c ← x % 10
while(n != 0){
│ │ altfel c ← n % 10
cin >> x;
for(i = 1; i <= k; i++) │ └■
x = x / 10; │ m←c*p+m
if(x != 0) │ n ← [n / 10]
c = x % 10; │ p ← p * 10; k ← k + 1
else
└■
c = n % 10;
m = c * p + m; scrie m
n = n / 10;
p = p * 10; k = k + 1;
}
cout << m;
return 0;
}

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 2 (Matematică-Informatică & Științe-Ale-Naturii):

a. La acest subpunct trebuie să se citească valoarea: 100, după care să se scrie pe


foaia de răspuns direct răspunsul final, în cazul nostru D10.
b. La acest subpunct este oferit un interval și se cer toate numerele din interval,
astfel încât, dacă executăm algoritmul citind acel număr, la final să se afișeze chiar
el.
Știind că lui “n” trebuie să i se atribuie una din valoarile intervalului [1, 9], căutam
cifrele din interval care, în urma unei executări, se vor afișa fără modificări.
Răspuns: Pentru exemplul nostru, cifrele care pot fi citite sunt: 2 3 5 6 7 8
(!) De fel, dacă avem la finalul programului o structură alternativă care pentru o
anume condiție afișează “X”, altfel “Y”, iar la subpunctul b. trebuie să lucrăm cu
niște numere / cifre pentru a se afișa “Y”, rezultatul final va fi “X” alături de un
rezultat urmat, ca în exemplul nostru, D10.
(!) La aceste tipuri de exerciții trebuie să fiți foarte atenți, întrucât se poate greși
destul de rapid și totodată aceste probleme se punctează strict, fără să existe
punctaj intermediar.
Mai pe scurt: Totul sau nimic.

PSEUDOCOD | Crantea Antonio Cristian - 2021


c. d.
#include <iostream.h> citește n (număr natural)
using namespace std;
int main(){ x ← 1; y ← n; d ← 2
unsigned int n, x, y, d; ┌dacă x < y atunci
cin >> n; │ ┌dacă n = √n * √n atunci
x = 1; y = n; d = 2; │ │ x ← √n
│ │ y ← √n
while(x < y){
if(n % d == 0){ │ └■
x = d; └■
y = n / d; ┌dacă x = y atunci
} │ scrie ‘D’, x
d = d + 1;
}
│ altfel scrie ‘N’
└■
if(x == y)
cout << “D” << x;
else
cout << “N”;
return 0;
}

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 3 (Matematică-Informatică & Științe-Ale-Naturii):

a. La acest subpunct trebuie să se citească pe rând valorile date, anume: 16 și 7,


după care să se scrie pe foaia de răspuns direct răspunsul final, în cazul nostru 60.
b. La acest subpunct este oferită o altă valoarea pentru “x”, iar mai apoi se cere să
scrieți două valori care pot fi citite pentru variabila “y”, astfel încât, la final să se
afișeze 90.
Răspuns: x = 10; y = 20;
x = 10; y = 21;
(!) La aceste tipuri de exerciții trebuie să fiți foarte atenți, întrucât se poate greși
destul de rapid și totodată aceste probleme se punctează strict, fără să existe
punctaj intermediar.
Mai pe scurt: Totul sau nimic.

PSEUDOCOD | Crantea Antonio Cristian - 2021


c. d.
#include <iostream.h> citește x, y (numere naturale nenule)
using namespace std;
int main(){ ┌dacă x > y atunci
unsigned int x, y, i, j, s, aux;
│ x ←→ y
└■
cin >> x >> y;
i ← x; j ← y; s ← 0
if(x > y){ ┌cât timp i ≤ j execută
aux = x;
│ s ← s + (i%2)*j + (j%2)*i
x = y;
y = aux; │ i ← i + 1; j ← j - 1
} └■
scrie s
i = x; j = y; s = 0;
do{
s = s + (i%2)*j + (j%2)*i;
i = i + 1; j = j - 1;
}while(i <= j);
cout << s;
return 0;
}

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exerciții: Subiectul al III-lea, exercițiul 1:
Exemplu 1 (Științe-Ale-Naturii):

citește n
p ← 1; d ← 1; dd ← 2
┌cât timp n > 1 execută
│ pp ← 0
│ ┌cât timp n % dd = 0
│ │ pp ← pp + 1
│ │ n ← n / dd
│ └■
│ ┌dacă pp ≥ p atunci
│ │ p ← pp
│ │ d ← dd
│ └■
│ dd ← dd + 1
└■
scrie d, ‘ ’, p

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 2 (Științe-Ale-Naturii):

citește n
d ← 2; max ← 1
┌cât timp n > 1 execută
│ OK ← 0
│ ┌cât timp n % d = 0
│ │ OK ← 1
│ │ n←n/d
│ └■
│ ┌dacă OK = 1 atunci
│ │ max ← d
│ └■
│ d←d+1
└■
scrie max

PSEUDOCOD | Crantea Antonio Cristian - 2021


Exemplu 3 (Științe-Ale-Naturii):

citește n
d ← 2; nr ← 0
┌cât timp n > 1 execută
│ p←0
│ ┌cât timp n % d = 0
│ │ p←p+1
│ │ n←n/d
│ └■
│ ┌dacă p % 2 = 1 atunci
│ │ nr ← nr + 1
│ └■
│ d←d+1
└■
scrie nr

PSEUDOCOD | Crantea Antonio Cristian - 2021

S-ar putea să vă placă și