Sunteți pe pagina 1din 34

Liceul Teoretic “Dunărea” Galați

Lucrare pentru obținerea atestării competențelor


profesionale la informatică
Algoritmi elementari. Limbajul pseudocod

Profesor îndrumător : Gavrila Iulia


Elev : Felea Alin-Alexandru
Clasa: a-XII-a B
Cuprins :

Argument…………………………………………………………………………2
Capitolul 1: Notiuni Teoretice……………………………………………………3
1. Definitie…………………………………………………………………....3
2. Declarare…………………………………………………………………...3
3. Instructiuni…………………………………………………………………4
4. Citire.……………………………………………………………………....4
5. Afisare.……………………………………………………………………..5
6. Atribuire.…………………………………………………………………...5
7. Structura……………………………………………………………………6
● 1.Structura Liniara…………………………………………………..6
● 2.Structura Alternativa……………………………………………....6
● 3. Structura Repetitiva……………………………………………….7
A.Structura repetitivă cu număr cunoscut de pași…………………....7
B.Structura repetitivă cu număr necunoscut de pași și test inițial …...8
C.Structura repetitivă cu număr necunoscut de pași și test final……..9
● 4.Echivalența structurilor repetitive…………………………………11

Capitolul 2: Aplicatii……………………………………………………………...15
Capitolul 3: Bibliografie…………………………………………………………..34

1
Argument

Mă numesc Felea Alin Alexandru și am pregatit lucrarea de atestat intitulată


”Pseudocod“ sub îndrumarea profesorului Gavrilă Iulia.
Lucrarea enuntata reprezinta un beneficiu important incepatorilor in informatică
cat și pentru programatorii care utilizează C++, deoarece ajuta foarte mult la
formarea unei gândiri algoritmice și de a înțelege mai bine codul sursa.
Un limbaj pseudocod este o scriere intermediară, menită să simplifice scrierea unui
algoritm într-un limbaj de programare și să ajute la realizarea clarității
algoritmului, în timp scurt.
Acesta mai este folosit ca o cale de comunicarea ușoară între creatorii și cititorii
de algoritmi, dorindu-se o oarecare standardizare.
Aceasta dorința firească nu poate impune însă reguli stricte deoarece, în această
formă de reprezentare a algoritmilor, sintaxa este secundara, accentul fiind pus pe
identificarea și exprimarea unei idei de rezolvare.

Astfel pseudocodul reprezinta o parte esentiala a programarii, o metoda de inițierea


a începătorilor în tainele programării, acesta fiind motivatiile alegerii temei.

Capitolul 1

2
Noțiuni teoretice

1. Definiție:
Pseudocod este un limbaj prin care sunt descriși pașii dintr-un algoritm.
Limbajul pseudocod conține structurile specifice unui limbaj de programare
obișnuit (precum Pascal, C/C++, Basic, etc) dar este destinat a fi citit de către
oameni, nu de către calculatoare.
De obicei sunt omise detaliile vitale într-un limbaj de programare, precum
declararea variabilelor sau secvențe specifice limbajului.
Algoritmii pseudocod pot conține secvențe descrise în limbaj natural, precum și
expresii matematice compacte, care lipsesc din limbajele de programare reale.

2.Declarare:
În pseudocod variabilele nu se declară, iar numele lor respectă regula uzuală a
identificatorilor – litere, cifre, caracterul de subliniere și să nu înceapă cu cifră.
Constantele care apar de regulă în algoritmii pseudocod sunt constante literale
(valori numerice, întregi sau reale, caractere – delimitate prin apostrof , șiruri de
caractere – delimitate prin apostrof(‘) sau ghilimele(“).
De asemenea, pot să apară constante matematice, de exemplu π.

3.Instructiuni:

3
Instrucțiunile sunt componentele algoritmului care au efect, atunci când se
execută. Ele modifică valorile unor variabile, citesc sau afișează date, repetă
anumite acțiuni, etc.
De regulă fiecare instrucțiune se scrie pe o linie (sau mai multe în cazul celor
complexe), dar există situații când, pentru a economisi spațiu, două sau mai
multe instrucțiuni simple se scriu pe același rând, separate prin punct si
virgula(;).
Orice algoritm poate fi reprezentat prin intermediul a trei tipuri de structuri:

● structura liniară
● structura alternativă
● structura repetitivă
o structura repetitivă cu număr necunoscut de pași
▪ structura repetitivă cu număr necunoscut de pași și test
inițial
▪ structura repetitivă cu număr necunoscut de pași și test final
o structura repetitivă cu număr cunoscut de pași

4. Citire:
Pentru citirea datelor se folosește instrucțiunea citește <listă variabile>,
unde <listă variabile> reprezintă un șir de variabile separate prin caracterul(,).
Se preiau valori succesive de la tastatură și se memorează în variabilele din
listă.
Exemplu:

citeste a , b , c

Citirea datelor este frecvent însoțită de precizări privind datele citite (tip,
valori posibile. etc.).

4
5. Afisare:
Pentru afișarea datelor se folosește instrucțiunea scrie <listă expresii>,
unde <listă expresii> reprezintă un șir de expresii separate prin caracterul ,.
Se evaluează în ordine expresiile din listă și se afișează pe ecran rezultatele
lor.
Exemplu:

scrie 'a + b = ' , a + b

Dacă a = 3 și b = 4 se va afișa:

a+b=7

6. Atribuire:

Pentru atribuire se folosește instrucțiunea <variabilă> ← <expresie>. Se


evaluază expresia, iar valoarea obținută se memorează in variabilă.
Exemple:

a←0
S←a+b
i←i+1

5
7. Structura:
Principiul programării structurate: Orice algoritm poate fi descris utilizand trei
tipuri de structuri de control: liniara, alternativa si repetitive.

1.Structura liniara: – contine operații de citire/scriere/atribuire.


┌ citeste var1, var2, …., varn. //var1, var2, … sunt identificatory de variabile
│ scrie expresie1, expresie 2, ….expresien // sunt expresii de orice tip.
│variabila 🡨 expresie // Se evalueaza expresia din partea dreapta iar valoarea obtinuta I se
atribuie variabilei cu identificatorul variabila
│ <instructiuni2>
└■

2. Structura alternativă:
În pseudocod există instrucțiunea dacă, cu următoarea sintaxă:

┌ dacă <condiție> atunci


│ <instructiuni1>
│ altfel
│ <instructiuni2>
└■

sau

┌ dacă <condiție> atunci


│ <instructiuni 1>
└■

Modul de execuție este următorul:

● se evaluează <condiție>
● dacă este adevărată, se executa grupul de instrucțiuni <instrucțiuni1>, apoi
se trece la următoarea instrucțiune
● dacă este falsă, se executa grupul de instructiuni <instructiuni2>, dacă există
secțiunea altfel, apoi se trece la următoarea instrucțiune.

6
3.Structuri repetitive:
A.Structura repetitivă cu număr cunoscut de pași:
INSTRUCȚIUNEA: PENTRU
Sintaxă

┌ pentru <variabila> ← <expresie inițială>, <expresie finala> , <pas> executa


│ <instructiuni>
└■

Unde expresie initiala, expresie finală și pas sunt expresii cu rezultat (de regulă)


întreg, iar pas poate fi 1 sau -1 și poate lipsi, caz în care se consideră că este 1.

Variabila primește pe rând valori crescătoare (dacă pas = 1) sau descrescătoare


(dacă pas = -1) începând de la expresie inițială până la expresie finală, și pentru
fiecare valoare se execută secvența instrucțiuni.

Dacă pas = 1 și expresie inițială > expresie finală>, secvența instrucțiuni nu se va


executa deloc. La fel se întâmplă când <pas = -1 și expresie inițială < expresie
finală. În caz contrar numărul de pași este expresie inițială - expresie finală + 1,
dacă <pas = 1, respectiv expresie finală - expresie inițială + 1, dacă pas=-1.

Exemplu:

Determinarea sumei și produsului primelor n numere naturale:

S ← 0; P ← 1
┌ pentru i←1,n executa
│ S←S+i
│ P←P*i
└■
scrie S, ' ' , P

7
B.Structura repetitivă cu număr necunoscut de pași și test inițial:

INSTRUCȚIUNEA CÂT TIMP … EXECUTĂ


Sintaxă

┌ cat timp <conditie> executa


│ <instructiuni>
└■

Mod de execuție

1. se evaluează condiția
2. dacă este adevărată se executa instrucțiunile și se revine la pasul 1
3. dacă este falsă se trece la următoarea instrucțiune din algoritm

Important: Dacă condiția este de la început falsă, instrucțiunile nu se vor executa


deloc!

Exemplu:

Determinarea sumei cifrelor unui număr natural:

citeste n
S←0
┌ cat timp n ≠ 0 executa
│ S ← S + n % 10
│ n ← [n/10]
└■
scrie S

8
C.Structura repetitivă cu număr necunoscut de pași și test final:
A.INSTRUCTIUNEA EXECUTA … CAT TIMP
Sintaxă

┌ executa
│ <instructiuni>
└ cat timp <conditie>

Mod de execuție

1. se executa instrucțiunile
2. se evaluează condiția
3. dacă este adevărată se revine la pasul 1
4. dacă este falsă se trece la următoarea instrucțiune din algoritm

Important: Chiar dacă condiția este de la început falsă, instrucțiunile s-au executat


deja o dată!

Exemplu:

Numărul cifrelor unui număr natural:

citeste n
cnt ← 0
┌ executa
│ cnt ← cnt + 1
│ n ← [n/10]
└ cat timp n ≠ 0
scrie cnt

9
B. INSTRUCȚIUNEA REPETĂ … PÂNĂ CÂND
Sintaxă

┌ repeta
│ <instructiuni>
└ pana cand <conditie>

Mod de execuție

1. se executa instrucțiunile
2. se evaluează condiția
3. dacă este falsă se revine la pasul 1
4. dacă este adevărată se trece la următoarea instrucțiune din algoritm

Important: Chiar dacă condiția este de la început adevărată, instrucțiunile s-au


executat deja o dată!

Exemplu:

Numărul cifrelor unui număr natural:

citeste n
cnt ← 0
┌ repeta
│ cnt ← cnt + 1
│ n ← [n/10]
└ pana cand n = 0
scrie cnt

10
4.Echivalența structurilor repetitive
Numeroase exerciții propun un algoritm și se cere scrierea unui algoritm
echivalent care să folosească o structură repetitivă de alt tip.

Doi algoritmi sunt echivalenți dacă pentru orice set de date de intrare
(conforme cu restricțiile problemei) ei obțin aceleași rezultate.

Această secțiune descrie câteva reguli de transformare a structurilor repetitive


din algoritmii pseudocod.

A. PENTRU → CÂT TIMP

┌ pentru i←a,b executa


│ <instructiuni>
└■
i←a
┌ cat timp i ≤ b executa
│ <instructiuni>
│ i←i+1
└■

11
B. PENTRU → EXECUTĂ … CÂT TIMP

┌ pentru i←a,b executa


│ <instructiuni>
└■
i←a
┌ daca i ≤ b atunci
│┌ executa
││ <instructiuni>
││ i←i+1
│└ cat timp i ≤ b
└■

C. PENTRU → REPETĂ … PÂNĂ CÂND

┌ pentru i←a,b executa


│ <instructiuni>
└■
i←a
┌ daca i ≤ b atunci
│┌ repeta
││ <instructiuni>
││ i←i+1
│└ pana cand i > b
└■

12
D. CÂT TIMP → EXECUTĂ … CÂT TIMP

┌ cat timp <conditie> executa


│ <instructiuni>
└■
┌ dacă <condiție> atunci
│┌ executa
││ <instructiuni>
│└ cat timp <conditie>
└■

E. CÂT TIMP → REPETĂ … PÂNĂ CÂND

┌ cat timp <conditie> executa


│ <instructiuni>
└■
┌ dacă <condiție> atunci
│┌ repeta
││ <instructiuni>
│└ pana cand NOT <conditie>
└■

13
F. REPETĂ … PÂNĂ CÂND → CÂT TIMP

┌ repeta
│ <instructiuni>
└ pana cand <conditie>
<instructiuni>
┌ cat timp NOT <conditie> executa
│ <instructiuni>
└■

14
Capitolul 2
Aplicatii

1. Scrieți pseudocodul unui algoritm care citeşte de la tastatură două numere reale
şi strict pozitive b şi h, reprezentând baza, respectiv înălțimea unui triunghi, apoi
calculează şi afişează aria triunghiului. În cazul în care valorile introduse nu pot
reprezenta latura şi înălțimea unui triunghi, se va afişa mesaj de eroare. Reamintim
formula ariei triunghiului: A=(b*h)/2.

REZOLVARE

Orice algoritm trebuie să înceapă cu citirea datelor de intrare, în cazul de fată baza
triunghiului (adică o latură) şi înălțimea corespunzătoare. Aşa cum am arătat în
lecția introductivă din capitolul I, instrucțiunea necesară este {citeşte b,h;}.

Urmează testarea condițiilor pe care trebuie să le îndeplinească datele de intrare. În


problema noastră, fiind vorba despre mărimi geometrice într-un triunghi, valorile
lui b şi h trebuie să fie strict pozitive.

Această testare se realizează cu ajutorul unei instrucțiuni de selecție simplă de tipul


"dacă altfel", care va introduce o ramificație în program. Întrucât baza şi înălțimea
trebuie să fie ambele mai mari ca 0 în acelaşi timp, cele două condiții vor fi
"legate" prin operatorul "ŞI logic", iar expresia logică compusă aferentă condiției
din linia "dacă" este "dacă (b>0 ŞI h>0)" (pusă între paranteze, aşa cum ştiți deja).

Aşadar: Dacă este îndeplinită această condiție atunci: – calculăm aria triunghiului;
în acest scop, atribuim unei variabile A valoarea expresiei (b*h)/2 ce reprezintă
aria; – afişăm valoarea variabilei A, cu ajutorul cuvântului cheie "scrie". În caz
contrar, tipărim mesajul "date incorecte".

15
2. Se dă secvența de algoritm de mai jos, prezentată în pseudocod, în care toate
variabilele identifică numere reale:

citeşte a,b,c; dacă (a>b+c) atunci început dacă (b>=c) atunci x←(a+b)/(2*c);
altfel x←0; sfârşit altfel x←(a/c+b/c)/2; scrie x;

a) Rescrieți secvența, folosind o aşezare în pagină mai "aspectuasă", cu liniile de


algoritm scrise una sub alta, şi aliniate astfel încât să se vadă fiecare ramură "altfel"
cărei ramuri "dacă" îi corespunde.

b) Deduceți ce se afişează în urma execuției secvenței, dacă valorile citite de la


tastatură sunt a=9, b=5 şi c=2.

c) Găsiți un set de valori pentru variabilele a, b şi c, astfel încât, în urma execuției


algoritmului, să se afişeze valoarea 0.

d) Rescrieți algoritmul într-un mod mai scurt, folosind un număr mai mic de
ramuri de tip"dacă altfel".

e) Dacă din algoritm am şterge cuvintele "început" şi "sfârşit", efectul execuției


algoritmului s-ar schimba, sau ar rămâne acelaşi ? Justificați răspunsul.

a)

16
b) Pentru a=9, b=5 şi c=2, avem: − condiția "a>b+c" din prima instrucțiune de
selecție este îndeplinită pentru aceste valori (9>5+2), deci se execută ramura
"dacă" a acesteia, unde întâlnim o altă instrucțiune de selecție de tipul "dacă-
altfel"; − aici condiția "b>=c" este la rândul ei adevărată (5>=2), motiv pentru care
se execută atribuirea {x←(a+b)/(2*c);}, de unde rezultă x=(9+5)/(2*2)=14/4=3.5.
Variabila x nu mai suferă nici o modificare a valorii sale, întrucât celelalte ramuri
ale instrucțiunilor "dacă-altfel" imbricate nu sunt atinse. În concluzie, programul va
afişa valoarea 3.5.

c) Singurul loc din secvență în care găsim o atribuire prin care variabila x primeşte
valoarea 0, este pe ramura "dacă" a primei instrucțiuni de selecție şi pe ramura
"altfel" a celei de-a doua astfel de instrucțiuni. Cu alte cuvinte, valorile alese
pentru a, b şi c trebuie să îndeplinească prima condiție "a>b+c", şi să nu
îndeplinească cea de-a doua condiție b>=c". Un exemplu de astfel de valori ar fi
a=9, b=3 şi c=4, dar, evident, nu singurele.

d) În secvența dată, avem trei instrucțiuni prin care variabilei x i se atribuie o


anumită valoare, dar, dintre acestea, două sunt echivalente. Este vorba despre
instrucțiunile x←(a+b)/(2*c) şi x←(a/c+b/c)/2, cauza fiind faptul că expresiile
atribuite, (a+b)/(2*c), respectiv (a/c+b/c)/2, înseamnă de fapt acelaşi lucru. Într-
adevăr, nu este greu de observat că expresia (a/c+b/c)/2 se poate scrie şi sub forma
(a+b)/c/2, adică (a+b)/(2*c). Prin urmare, cele două ramuri care atribuie variabilei
x aceeaşi valoare pot fi comasate între ele.

Care sunt situațiile ce conduc la aceste două atribuiri echivalente ? − una se


petrece atunci când se intră pe ramura "dacă" a primei instrucțiuni de selecție şi în
acelaşi timp pe ramura "altfel" a celei de-a doua, adică atunci când "a>b+c ŞI
b>=c"; − cealaltă are loc atunci când se intră pe ramura "altfel" a primei
instrucțiuni de selecție, adică pentru cazul contrar lui "a>b+c", care se traduce prin
"a<=b+c".

Comasarea celor două posibilități într-o singură linie "dacă" se face utilizând
operatorul "SAU logic" (poate să se întâmple ori una ori cealaltă dintre alternative,
nu amândouă simultan). Aşadar: − dacă (a>b+c ŞI b>=c) SAU (a<=b+c) atunci lui

17
x i se atribuie valoare expresiei (a+b)/(2*c); − în caz contrar, variabila x primeşte
valoarea 0. Lăsăm ca exercițiu rescrierea secvenței, operațiune care după aceste
explicații ar trebui să fie o simplă formalitate !

e) În secvența dată, se vede foarte clar faptul că prima ramură "altfel" corespunde
lui "dacă b>=c", iar al doilea "altfel" se asociază cu "dacă a>b+c". Să vedem cum
ar arăta secvența fără cuvintele cheie "început" şi "sfârşit":

Conform regulii prezentată pe larg în partea de teorie, într-un lanț de instrucțiuni


"dacă-altfel" imbricate, în mod implicit, în absența unor cuvinte cheie "început" şi
"sfârşit", fiecare ramură "altfel" se asociază primului "dacă" de dinaintea lui care
nu a fost încă asociat. Altfel spus, asocierile trebuie stabilite dinspre interiorul
înspre exteriorul secvenței. Mai exact: − pentru primul "altfel", cea mai apropiată
ramură "dacă" situată înaintea sa este "dacă b>=c"; − pentru al doilea "altfel",
căutăm de jos în sus primul "dacă" de dinaintea sa care nu a fost încă asociat, şi
ajungem astfel la "dacă a>b+c".

Observăm că a rezultat aceeaşi cuplare a perechilor "dacă-altfel" pe care o aveam


în secvența inițială, cea care conținea şi cuvintele "început" şi "sfârşit". Pe cale de
consecință, aceste cuvinte cheie erau complet inutile, iar eliminarea lor nu modifică
cu nimic efectul execuției algoritmului.

3. Să se calculeze valoarea funcției matematice f(x), pentru o valoare a lui x


introdusă de la tastatură:

18
Nu putem introduce în calculator o funcție algebrică aşa cum o cunoaştem din
matematică, cu argument, domeniu, codomeniu şi lege de asociere.

Vom proceda în felul următor: argumentul x al funcției va fi definit ca o variabilă,


iar valoarea sa se va citi de la tastatură; conform valorii citite pentru x, trebuie
aleasă una dintre cele trei "ramuri" ale funcției, adică una dintre expresiile x 2+1,
x-2 şi x 2-4x+5; pentru valoarea respectivă a lui x, expresia aleasă se evaluează,
obținându-se o valoare pe care o atribuim unei variabile E. De exemplu, pentru x=1
se va alege ramura din mijloc a funcției. Rezultă E←x-2, adică E=1-2=-1.

În concluzie, după citirea lui x urmează un şir de testări:

-dacă x ≤ −3 , atribuim lui E valoarea expresiei x^2 +1 ;

- în caz contrar:

dacă x ∈ (− 3 , 3) atribuim lui E valoarea expresiei x − 2 (e suficient să se verifice


dacă x < 3 );

în caz contrar, nu mai trebuie testat nimic (deoarece nu mai rămâne decât
posibilitatea x ≥ 3 ) şi atribuim lui E valoarea expresiei x^2-4x +5

4. Realizați un algoritm care citeşte de la tastatură două numere naturale distincte,


apoi afişează câtul şi restul împărțirii celui mai mare dintre cele două numere la cel
mai mic dintre ele. Dacă numerele sunt egale, sau dacă împărțirea nu se poate
efectua, se va afişa mesajul "Eroare".

Algoritmul începe cu citirea de la tastatură a numerelor a şi b. Prima condiție

care trebuie testată este aceea ca numerele să fie distincte, deci:

-dacă cele două valori sunt egale, atunci scrie mesajul "Eroare " ";

19
- în caz contrar:

dacă a este mai mare ca b, atunci trebuie afişat câtul împărțirii lui a la b, dar

pentru aceasta este necesar ca împărțitorul să fie nenul, deci:

– dacă b este diferit de 0, atunci scrie pe ecran câtul şi restul împărțirii lui

a la b, adică a/b şi a%b, separate printr-un spațiu (vă reamintim că, în

cazul în care operanzii a şi b sunt ambii întregi, expresia "a/b"

furnizează câtul întreg al împărțirii lui a la b, adică fără parte zecimală);

– în caz contrar, scrie de asemenea mesajul 'Eroare';

dacă a este mai mic ca b, atunci trebuie afişat câtul împărțirii lui a la b, şi

urmează o testare similară cu cea de dinainte:

– dacă a este diferit de 0, atunci scrie pe ecran câtul şi restul împărțirii lui

b la a, separate printr-un spațiu;

– în caz contrar, trebuie din nou afişat mesajul 'Eroare';

Mai precizăm că ramura "altfel" a primei instrucțiuni de selecție "dacăaltfel"


conține alte două instrucțiuni "dacă-altfel" (cu condițiile "dacă a>b" şi "dacă b>a"),
motiv pentru care trebuie cuprins între cuvintele cheie "început" şi "sfârşit".

În absența acestor cuvinte, calculatorul va considera că pe ramura "altfel" a


primului "dacă-altfel" se găseşte doar următoarea instrucțiune, adică numai prima
dintre cele două secvențe "dacă-altfel" care urmează (cel cu condiția "dacă a>b") ,
iar următorul "dacă-alfel" (cel cu condiția "dacă b>a") va fi scos în afara selecției
(reamintim în acest punct de vedere că o secvență "dacă-altfel" împreună cu cele
două ramuri şi corpurile lor, este privită ca o singură instrucțiune).

20
Nu în ultimul rând trebuie remarcat că în loc de "dacă b>a" puteam să scriem pur şi
simplu "altfel". De ce ? Cazul contrar lui "a>b" este "a<=b", dar situația "a==b" a
fost tratată separat mai sus, deci rămâne doar "a<b", adică exact ceea ce testăm în
respectiva linie "dacă".

Am preferat această variantă, pentru că în cealaltă am fi ajuns la un lanț de


imbricări ale structurilor "dacă-altfel" cu trei nivele, care ar fi făcut destulde
anevoioasă înțelegerea algoritmului. Celor care au pătruns deja profund în tainele
structurilor de selecție, le propunem să se încumete să abordeze şi cealaltă versiune
!

5. Se citesc de la tastatură trei numere reale a, b, c. Să se verifice dacă aceste


numere pot fi laturile unui triunghi şi în caz afirmativ să se determine natura
triunghiului în funcție de laturi (echilateral, isoscel, oarecare).

Trei numere pot fi laturile unui triunghi, dacă sunt pozitive şi suma a oricare două
dintre ele este mai mare decât al treilea. Exemplu: Numerele a=4, b=4 şi c=7 sunt
laturile unui triunghi isoscel, iar valorile a=2, b=3 şi c=9 nu pot fi laturile unui
triunghi (din cauză că 2+3<9).

Algoritmul ilustrează funcționarea structurilor selective imbricate. Citim numerele


a, b, c, apoi testăm dacă îndeplinesc condiția de a fi laturile unui triunghi: (a>0 ŞI
b>0 ŞI c>0 ŞI a+b>c ŞI a+c>b ŞI b+c>a)

21
În cazul în care această condiție este adevărată, printr-o altă structură de

selecție determinăm natura triunghiului, afişând un mesaj:

- dacă triunghiul are perechi de laturi egale, adică (a==b ŞI a==c), atunci

este echilateral (automat rezultă şi că b este egal cu c, conform tranzitivității

relației de egalitate);

- în caz contrar, triunghiul poate fi isoscel sau oarecare:

• dacă două laturi sunt egale, (a==b SAU a==c SAU b==c), atunci

este isoscel;

• în cazul contrar şi celui anterior nu mai testăm nimic, pentru că

triunghiul nu mai poate fi decât oarecare.

6. Se citesc doua numere natural a si b (a<b). sa se afle cate numere se afla între
cele doua numere date, a si b.

Citeste a

Citeste b

s<- b-(a-1)

Scrie s

22
7.Se citeste valoarea laturii unui patrat. Sa se determine aria și perimetrul
pătratului.

Citeste a

s<- a*a

Scrie “Aria patratului”, s

p<- 4*a

Scrie “ Perimetrul p”, p

8.Se citeste valorile laturilor unui dreptunghi. Sa se determine aria si perimetrul


dreptunghiului.

Citeste a

Citeste b

s <- a*b

Scrie “Aria dreptunghiului”, s

p <- 2*(a+b)

Scrie “ Perimetrul

dreptunghiului”, p

9.Sa se interschimbe valorile retinute in doua variabile

Citeste a

Citeste b

c <- a

a <- b

23
b <- c

Scrie a

Scrie b

10.Se citeste o perioada de timp exprimata in secunde. Sa se determine numărul de


ore, de minute si secundele corespunzătoare.

Citeste s

h <- s /3600

s <- s % 3600

m <-s /60

s <- s % 60

Scrie h

Scrie m

Scrie s

11.Se citesc două numere naturale. Să se determine suma ultimelor lor două cifre.

Exemplu: a=126 , b=65456 => 2+6+5+6=19

Citeste a

Citeste b

za <- a div 10 mod 10

zb <- b div10 mod 10

sa <- a mod 10 + za

24
sb <- b mod 10 + zb

s <- sa+sb

Scrie s

12.Se citesc două perioade de timp exprimate în ore, minute, secunde. Să se


determine suma acestor perioade exprimată de asemenea în ore,

minute, secunde.

Exemplu: perioada 1 = 1 ora, 2 min, 18s perioada 2 = 2 ore, 59 minute , 48 s

Va afisa => 4 ore 2 min 6 s

Citeste h1

Citeste m1

Citeste s1

Citeste h2

Citeste m2

Citeste s2

s <- h1*3699+m1*3600+s1

s <-s+ h2*3699+m2*3600+s2

h <- s div 3600

s <- s mod 3600

m <-s div 60

s <- s mod 60

Scrie h

25
Scrie m

Scrie s

13.Se citeşte un număr natural format din trei cifre. Să se determine produsul
cifrelor lui. Exemplu: 512 => p=5*1*2 =10

Citeste a

za <- a div 10 mod 10

sa <- a div 100

p <- sa*za*(a%10)

Scrie p

14.Se citeşte un număr natural n. Să se determine rezultatul următoarelor expresii


matematice:

E1=1+2+3+…+(n-1)+n / E2=1+3+5+…+2(n-1) / E3=2+4+6+…+2n Exemplu: n=4


=> E1=10, E2=16, E3=20

Citeste n

E1 < n*(n+1)/2

E2 <- n*n

E3 < n*(n+1)

Scrie E1

Scrie E2

Scrie E3

26
15.Se citesc două numere naturale diferite de zero, a şi b. Să se determine valoarea
lui x din ecuaţia a*x-b=0.

Exemplu: a=3, b=15 => x=5

Citeste a

Citeste b

x <- b/a

Scrie “ x” , x

16.Să se determine suma cifrelor unui număr natural de patru cifre.

Citeste x

u < x mod 10

z <- a div 10 mod 10

s <- a div 100 mod 10

m <- a div 1000 mod 10

Suma <- u+z+s+m

Scrie suma

27
17.Se dă un număr natural de 8 cifre. Calculați produsul cifrelor aflate pe poziții
impare în numărul dat.

Citeste a

ua < a mod 10

za <- a div 100 mod 10

sa<- a div 10000 mod 10

ma<- a div 1000000 mod 10

s <- ua+za+sa+ma

Scrie s

18.Se dau trei variabile întregi a, b, c ale căror valori se citesc de la tastatură. Se
cere să se permute circular spre stânga valorile acestor

variabile și apoi să se afișeze. (ex. a=1, b=2, c=8 => a=2, b=8, c=1)

Citeste a

Citeste b

Citeste c

x <- a

a <- b

b <- c

c <- x

Scrie a

Scrie b

Scrie c

28
19.Factorialul unui numar n n!=1*2*3*...*n folosind structura repetitiva
conditionata anterior.

start

citeste n

p=1

i=1

cat timp i<=n

{p=p*i

i=i+1}

scrie p

sfarsit

20.Factorialul unui numar n (n!=1*2*3*...*n) folosind structura repetitiva


conditionata posterior.

start

citeste n

p=1

i=1

repeta

{p=p*i

i=i+1}

cat timp i<=n

scrie p

sfarsit

21.Media aritmetica a n numere ma=(n1+n2+...nn)/n.

29
start

citeste n

ma=0

pentru i=1,n

citeste x

ma=ma+x

ma=ma/n

scrie ma

stop

22.Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau nu.

start citeste n prim=1

pentru d=2,n/2 executa

daca n mod d =0 atunci

prim=0

daca prim=1 atunci

scrie "este prim"

altfel

scrie"nu este prim"

sfarsit

23.Sa se calculeze CMMDC pentru doua numere

prin impartiri repetate (algoritmul lui Euclid).

30
start

citeste a,b

deimp=a

imp=b

cat timp imp != 0 executa

r=deimp mod imp

deimp=imp

imp=r

scrie "cmmdc este",deimp

stop

24.Sa se afle daca un numar este perfect.

Un numar este perfect daca este egal cu suma divizorilor sai, inclusiv 1, dar fara el
insusi.

Exemplu: 6=1+2+3 este numar perfect.

31
start

citeste n

s=0

pentru d=1,n/2

daca n mod d = 0 atunci

s=s+d

daca s=n atunci

scrie "este numar perfect"

sfarsit

25. Sa se afle cifra maxima a unui număr (cea mai mare cifra a unui număr).

start citeste n max=-1

cat timp n>0

c=n mod 10

daca max<c atunci max=c n=n div 10

scrie max

Sfarsit

Bibliografie:
https://www.modinfo.ro/bac.php
https://www.pbinfo.ro/articole/5547/informatica-clasa-
a-ix-a

32
https://pseudocod1.weebly.com/exercitii.html

33

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