Documente Academic
Documente Profesional
Documente Cultură
BPC - Sem 03 - OL
BPC - Sem 03 - OL
calculatoarelor
Seminar 3
Algoritmi – scheme logice si pseudocod
2021
Cuprins
Aspecte teoretice
Scheme logice
Pseudocod
Exemple si exercitii
2
A. Aspecte teoretice (1)
1. Algoritm - ?
Algoritm - multime ordonata si finita de reguli care descriu o succesiune
finita de operatii necesare rezolvarii unei probleme
3
A. Aspecte teoretice (2)
3.Forme de reprezentare a algoritmilor:
a) scheme logice (nestructurate si
structurate)
b) pseudocoduri
c) in cuvinte pe pasi (analitic)
d) arbori
A. Aspecte teoretice (3)
3.1 Reprezentarea algoritmilor prin scheme logice (SL)
Definitie SL: ?
reprezentare grafica a algoritmului, formată din blocuri si segmente (arce) orientate, blocurile
marcand operatiile ce trebuie efectuate, iar arcele indica relatia de succesiune a operatiilor.
Tipuri de blocuri
e) blocul de atribuire - marcheaza
a) blocul START - START atribuirile si presupune evaluarea
marcheaza inceputul unei expresii e si inscrierea
schemei logice (atribuirea) rezultatului in locatia de atribuire
memorie corespunzatoare unei
variabile v:
b) blocul STOP - - notatii: v =e, v <- e, e -> v, v :=e.
marcheaza sfarsitul
schemei logice STOP
Pseudocod (metalimbaj) - ?
– text coerent, construit pe baza unor reguli (foloseste simboluri si propozitii din matematica)
- mai multe variante
Varianta propusa:
- cuvinte cheie (de ex. WHILE-DO, IF-THEN-ELSE)
- si instructiuni: declaratii (instr. neexecutabile) si instr. efective (executabile).
Exemple:
/*declaratii*/ /*instr. de atribuire: v – variabila, e – expresie, ambele
INTREG a,b,c; de acelasi tip*/
REAL vector[20]; v=e;
INTREG matrice [10][15]; v:=e;
i=n: Sn
b.1 IF-THEN-ELSE
nu
C
da ELSE: S
IF C THEN S1 ENDCASE;
S2 S1
ELSE S2
ENDIF;
/*caz particular*/
CASE OF i i
i=1: S1
b.2 IF-THEN nu da i=2: S2
C
IF C THEN S1 ………. S1 S2 ….. S n-1 Sn
ENDIF; S1 i=n: Sn
ENDCASE;
A. Aspecte teoretice (6)
d) structuri repetitive
- cu numarator – DO-FOR
- conditionata anterior – WHILE-DO - conditionata posterior – DO-UNTIL (v,vi,r,vf, s), cu v –
WHILE C DO S DO S UNTIL C variabila contor, vi, vf, vr –
ENDWHILE; ENDDO; expresii cu rol de valoare
initiala, finala si ratie.
DO-FOR v=vi, vf, vr
S
S ENDDO;
da v=vi
C
nu
C
S
da
nu v<=vf
da
S
nu
v=v+vr
B. Exemple si exercitii
Cerinta
Pentru exercitiile de mai jos realizati algoritmul folosind reprezentarea prin:
- schema logica
- pseudocod.
1. Calcul expresie
2. Calculati:
- media aritmetica ((a+b)/2)),
- media geometrica (√a*b),
- media armonica ((2ab/(a+b))
3. Rezolvarea ecuatiei de gradul I
4. Functie acolada
5. Maxim dintre 3 numere
6. Aria unui triunghi folosind formula lui Heron
7. Realizarea la cerere a unei operatii (+,-,*,/) (folosind CASE-OF)
8. Determinati salariul saptamanal platit de o firma unui angajat
Rezolvare
Schema logica Pseudocod:
START REAL a,b,e;
READ (a,b);
à a, b Read a,b e=(a+b)*(a-b);
WRITE (e);
e=(a+b)*(a-b)
STOP.
ße Write e
STOP
B. Exemple si exercitii
2. Calculati media aritmetica, media geometrica si media armonica pentru
doua numere reale a si b.
SL Start
Pseudocod
REAL a,b, Ma, Mg, Marm;
READ (a,b);
Read a,b Ma = (a+b)/2;
WRITE (Ma);
Ma= (a+b)/2
IF ((a*b)>0) THEN
{
Write Ma Mg = sqrt (a*b);
WRITE (Mg);
Nu Da }
a*b>0 ELSE
Mg= sqrt(a*b) WRITE (“Mg nu se poate calcula”);
Write “Mg nu se END_IF;
poate calcula” IF ((a+b)<> 0) THEN
Write Mg
{
Marm = 2*a*b/(a+b);
WRITE (Marm);
Nu Da
a+b<>0 }
ELSE
Marm= 2*a*b/(a+b)
WRITE (“Marm nu se poate calcula”);
Write “Marm nu se
poate calcula” END_IF;
Write Marm STOP.
Start PSEUDOCOD
SL
Read a,b
REAL a,b,x;
READ (a,b);
Nu Da
a!=0 IF (a!=0)
THEN { x=-b/a;
Nu Da WRITE (x);
x = - b/a }
b == 0
ELSE
Write x IF (b==0)
Write “Ecuatia nu are Write “Solutia este
solutie, ec. imposibila” orice nr. real, ecuatie THEN WRITE (“Ecuatie nedeterminata”);
nedeterminata”
ELSE WRITE (“Ecuatie imposibila”);
ENDIF;
ENDIF;
STOP.
STOP
B. Exemple si exercitii
4. Functie acolada
Fie functia: f:R-> R, x real.
f(x) = 6*x, x<0
3*x*x, x>=0;
Pseudocod
SL Start
REAL x,f;
Read x
READ (x);
Nu Da
x >= 0
IF (x<0) THEN { f = 6*x;
WRITE (f);
f = 6*x f = 3*x*x
}
ELSE { f = 3*x*x;
Write f Write f WRITE (f);
}
ENDIF;
STOP.
Stop
B. Exemple si exercitii
5. Determinati maximul dintre 3 numere reale.
PSEUDOCOD
REAL a,b,c; START
READ (a,b,c);
IF (a>=b) THEN
IF (a>=c) THEN WRITE (“Max este a”, a) à a, b, c
ELSE WRITE (“Max este c”, c) NU DA
ENDIF; a≥b
NU NU
DA DA
b≥c a≥c
ELSE
IF (b>=c) THEN WRITE (“Max este b”, b) max=c max=b max=c max=a
ELSE WRITE (“Max este c”, c)
ENDIF;
ß max
ENDIF;
STOP.
STOP
B. Exemple si exercitii
6. Calculati aria unui triunghi folosind formula lui Heron.
SL
PSEUDOCOD
Start
INTREG a,b,c;
REAL p, Aria; READ a,b,c
READ (a,b,c);
p=(a+b+c)/2
p=(a+b+c)/2;
Aria = sqrt (p*(p-a)*(p-b)*(p-c)); Aria = sqrt (p*(p-a)*(p-b)*(p-c))
WRITE
WRITE (p,Aria);
(“Semiperimetrul=“, p, ”Aria este=“, Aria);
STOP.
STOP
B. Exemple si exercitii
7. Scrieti algoritmul care realizeaza la cerere o operatie (+,-,*,/) pentru
doua numere reale a si b
i
PSUDOCOD - ? SL - ?
i=1
i=2
S1 S2 Sn S
CASE-OF op + /
op= “+” : r=a+b op
op = “-” : r=a-b
op = “*” : r=a*b - *
op = “/” : r=a/b r = a+b r = a-b r = a*b r = a/b
ENDCASE;
WRITE (r);
STOP.
WRITE r
Ce ar trebui adaugat pentru ca algoritmul sa
acopere toate cazurile ?
Tema - In vederea realizarii impartirii, modificati Stop
programul adaugand conditia b!=0. Daca b=0 se va da
un mesaj de avertizare utilizatorului.
B. Exemple si exercitii
8. Calculati salariul net saptamanal al unui angajat (nr. ore de lucru normale 40).
Indicatii:
- se determina nr de ore suplimentare (daca este cazul)
- se calculeaza salariul brut tinand cont de numarul de ore de lucru normale si
suplimentare (daca este cazul)
- se calculeaza salariul net
B. Exemple si exercitii
8. Calculati salariul net saptamanal al unui angajat (nr. ore de lucru normale 40).
Start
PSEUDOCOD SL - ?
REAL plata_pe_ora, Sal_brut, Sal_net;
READ plata_pe_ora, nr_ore_lucrate
INTREG nr_ore_lucrate, nr_ore_in_plus = 0;
nr_ore_in_plus * plata_pe_ora * 2;
Sal_net = 0,58*Sal_brut;
//determinare salariu net
Sal_net = 0,58*Sal_brut;
WRITE sal_net
WRITE (Sal_net);
STOP. Stop
Probleme
19