Sunteți pe pagina 1din 19

Bazele programarii

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

2. Caracteristicile unui algoritm - ?


 generalitate
 conceput pentru o clasa generala de probleme
 claritate (determinare)
 prevede modul de solutionare a tuturor situatiilor ce pot aparea in
rezolvarea problemei fara ambiguitati.
 finitudinea
 algoritmul trebuie sa se termine intr-un numar finit de pasi

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

f) blocul de ramificare (selectie) -


c) Blocul de citire -
marcheaza etapele de decizie:
contine lista variabilelor READ - > cand conditia este verificata, se da nu
ce constituie datele lista variabile
urmeaza ramura marcata cu “da” conditie
initiale ale problemei
- > in caz contrar cea marcata cu
(CITESTE, READ,...)
“nu”
d) Blocul de scriere - marcheaza
datele de iesire: contine WRITE
lista variabile
variabilele ce reprezinta
rezultatele finale
(TIPARESTE, WRITE, ...)
A. Aspecte teoretice (4)
3.2 Reprezentarea algoritmilor prin pseudocod

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;

/*instr. de citire: READ (lista_de_variabile) */ /*instr. de ramificare: IF-THEN-ELSE, IF-THEN,


READ (A,B); CASE-OF*/
READ (xi);
/*instr.repetitive: WHILE-DO, DO-UNTIL, DO-FOR*/
/*instr. de scriere: WRITE (lista_de_variabile) */
WRITE (A,B);
WRITE (“VECTORUL ESTE=”);
WRITE (xi);
A. Aspecte teoretice (5)
4. Descriere structuri fundamentale

a) strucura secventiala S1 c) structura CASE-OF


s1;
s2; S2
/*caz general*/
i
CASE OF i i=1
i=1: S1 i=2
i=2: S2
b) structuri alternative ………. S1 S2 Sn S

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

OBS: A se consulta si lista cu probleme orientative ce va fi postata pe site.


B. Exemple si exercitii

1. Calculati expresia: e  a  b  a  b


 unde a si b sunt numere reale.

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.

!!! Atentie la cazurile particulare (ex: a*b>=0 si a+b !=0


STOP
B. Exemple si exercitii
3. Scrieti algoritmul care sa rezolve ecuatia de gradul I
Forma - ? a*x+b=0, a, b reale

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

REAL a,b,r; Start


CARACTER op;
READ (a, b, op); READ a, b, op

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).

Se cunosc: Trebuie determinate:


- plata pe ora (brut) -> valori intermediare
- nr_de_ore_lucrate (in total pe saptamana) - nr_ore_in_plus (ore suplimentare)
- sal_brut
-> valoare ceruta in cerinta
- sal_net

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;

READ (plata_pe_ora, nr_ore_lucrate);


Da
nr_ore_lucrate > 40
//determinare nr ore suplimentare
IF (nr_ore_lucrate > 40) THEN (nr_ore_in_plus =
Nu nr_ore_lucrate - 40)
THEN (nr_ore_in_plus = nr_ore_lucrate - 40)
ENDIF;

//determinare salariu brut Sal_brut = 40 * plata_pe_ora +


Sal_brut = 40 * plata_pe_ora + nr_ore_in_plus * plata_pe_ora * 2;

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

Rezolvati problemele din fisierul cu


probleme aferent seminarului 3

19

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

  • Probleme Tema - Sem 3
    Probleme Tema - Sem 3
    Document3 pagini
    Probleme Tema - Sem 3
    MisterTony112
    Încă nu există evaluări
  • Curs4 A
    Curs4 A
    Document16 pagini
    Curs4 A
    MisterTony112
    Încă nu există evaluări
  • Curs 11
    Curs 11
    Document30 pagini
    Curs 11
    MisterTony112
    Încă nu există evaluări
  • ECONOMIE
    ECONOMIE
    Document9 pagini
    ECONOMIE
    MisterTony112
    Încă nu există evaluări
  • Stat Sal 05052022 130154
    Stat Sal 05052022 130154
    Document1 pagină
    Stat Sal 05052022 130154
    MisterTony112
    Încă nu există evaluări
  • Seminar 4 2022
    Seminar 4 2022
    Document5 pagini
    Seminar 4 2022
    MisterTony112
    Încă nu există evaluări
  • Curs 9
    Curs 9
    Document20 pagini
    Curs 9
    MisterTony112
    Încă nu există evaluări
  • Man 3
    Man 3
    Document30 pagini
    Man 3
    MisterTony112
    Încă nu există evaluări
  • Man 2
    Man 2
    Document2 pagini
    Man 2
    MisterTony112
    Încă nu există evaluări
  • Impozitele
    Impozitele
    Document50 pagini
    Impozitele
    MisterTony112
    Încă nu există evaluări
  • Finante Publice Notiuni Generale Si Cheltuieli Publice
    Finante Publice Notiuni Generale Si Cheltuieli Publice
    Document18 pagini
    Finante Publice Notiuni Generale Si Cheltuieli Publice
    MisterTony112
    Încă nu există evaluări
  • Finante - Introductiv
    Finante - Introductiv
    Document4 pagini
    Finante - Introductiv
    MisterTony112
    Încă nu există evaluări
  • Cursuri Microecon Merged
    Cursuri Microecon Merged
    Document158 pagini
    Cursuri Microecon Merged
    MisterTony112
    Încă nu există evaluări
  • Energie Electrică
    Energie Electrică
    Document5 pagini
    Energie Electrică
    MisterTony112
    Încă nu există evaluări