Documente Academic
Documente Profesional
Documente Cultură
Seminar 3 BPC
Seminar 3 BPC
Seminar 3
Reprezentarea numerelor intregi in virgula fixa
Reprezentarea numerelor in virgula fixa 2
Virgula fixa:
Aritmetica (numere pozitive)
Algebrica (numere pozitive si negative)
Exemplu: Nr (10) = 24
VF aritmetica = codul direct = reprezentarea in binar Conversie simpla din baza 2 in baza 10.
Daca bitul de semn este 1 -> mantisa este reprezentata de Codul Complementar
Daca bitul de semn este 0 -> mantisa este reprezentata de Codul Direct
5
Identificarea numarului in zecimal pentru o reprezentare interna in Virgula Fixa
VF algebrica
Ex1: 101000
1 = numar negativ
Mantisa = 01000 = Cod complementar
Nr (10) = -24
6
Start Stop
(2) Blocul de intrare/ieșire (citire/scriere date) este etichetat cu informații referitoare la datele care se citesc/scriu în cadrul
algoritmului.
- pentru citire, care reprezintă transferul datelor din exteriorul sistemului de calcul (tastatură, suporți externi de
memorare, alte dispozitive) în memoria principală, cu sau fără conversie:
Pentru citirea de la tastatură se poate utiliza convenția: 8
- pentru scriere, care reprezintă transferul datelor din memoria principală în exteriorul
sistemului de calcul (monitor, imprimantă, suporți externi de memorare, alte dispozitive), cu sau
fără conversie
(5) Blocul de apel de modul se utilizează când se aplică algoritmului tehnica proiectării modularizate
10
Structurile fundamentale din programarea structurată, reprezentate prin scheme logice sunt descrise prin
utilizarea de blocuri funcționale (care includ operații) și blocuri condiționale (de test), fiind grupate în trei
categorii:
Structura secvențială (liniară sau BLOCK) este formată din minim două blocuri funcționale.
11
Structura alternativă simplă (IF-THEN-ELSE) conține un bloc condițional și pe fiecare ramură a acestuia
(adevărat sau fals) câte un bloc funcțional.
12
Structura alternativă multiplă (CASE-OF) se bazează pe blocul de ramificare și este caracterizată de
prezența unei variabile selector iV={v1, v2, …, vn}, unde V este o mulțime discretă, finită și ordonată.
Dacă i=v1, atunci se execută ramura cu blocul s1, dacă i=v2 se execută ramura cu blocul s2 ș.a.m.d., dacă
i=vn se execută ramura cu blocul vn. Dacă iV, atunci se execută ramura cu blocul s.
Pseudocod
13
Citirea datelor de la tastatură:
read listă-de-variabile
Elementele din lista de intrare sunt doar variabile și sunt separate prin virgulă, iar structurile de date sunt delimitate de
paranteze rotunde.
Exemple:
read n;
read a,b,c;
read n, (x(i), i=1,n);
read m,n, ((a(i,j), i=1,m), j=1,n)
write listă-de-date.
Elementele din lista de ieșire pot fi variabile sau constante separate prin virgulă, iar structurile de date sunt
delimitate de paranteze rotunde.
Afișarea datelor pe monitor: 14
write listă-de-date.
Exemple:
write ma,mg,mh;
write “Suma = “, s;
write (x(i), i=1,n);
write ((a(i,j), i=1,m), j=1,n)
Atribuirea:
v=e;
Exemple:
s=0;
mh=2*a*b/(a+b);
z(i)=x(i)+y(i);
c(i,j)=c(i,j)+a(i,k)*b(k,j)
Structurile fundamentale din programarea structurată
15
1. Structura secvențială
{
s1;
s2;
...
sn
}
Exemple:
{ {
aux=a; k=k+1;
a=b; poz(k)=i
b=aux
}
}
2. Structura alternativă simplă 16
if c then
s1
else
s2
Endif
Exemple:
if a>b then if c≠0 then
max=a {
else e=(a+b)/c;
max=b write e
endif }
else
write "Numitor 0!"
endif
17
Structura alternativă simplă - pseudoalternativa
if c then
s1
endif
Exemplu:
if a>b then
{
aux=a;
a=b;
b=aux
}
endif
3. Structura alternativă multiplă 18
case of i
i=v1: s1;
i=v2: s2;
...
i=vn: sn
else s
endcase
Exemplu: 10, x 5;
8, x 0;
Calculul funcției f(x), cu f ( x)
20, x 2;
2 x 2 , x Z \ 5,0,2;
case of x
x=-5: f = -10;
x=0: f = 8;
x=2: f = 20;
else: f = 2*x*x
endcase
19
Probleme rezolvate:
- Schema logica structurala (SLS) -
- Pseudocod -
20
1. Să se calculeze expresia e = (a+b)(a-b), unde a și b sunt numere reale.
SLS: Pseudocod:
START {
read a,b;
à a, b e=(a+b)*(a-b);
write e;
e=(a+b)*(a-b) }
ß e
STOP
2. Să se calculeze expresia e = (a+b)/c, unde a, b și c sunt numere reale. 21
SLS: Pseudocod:
START {
read a,b,c;
à a, b, c if c≠0 then
{
NU DA e=(a+b)/c;
c≠0
write e;
e=(a+b)/c }
ß “Numitor 0 !”
else
ß e write "Numitor 0!“;
endif
}
STOP
3. Să se calculeze expresia , unde a, și b sunt numere reale. 22
SLS: Pseudocod:
START {
read a,b;
à a, b
x=a+b;
x=a+b
y=a-b;
if x≥0 and y>0 then
y=a-b {
;
NU DA
x≥0 și y>0 write e;
}
e = √ x/√ y
else
ß “Expresia nu se
poate calcula !”
write "Expresia nu se poate calcula!“;
ß e
endif
}
STOP
SLS:
4. Să se calculeze mediile aritmetică, geometrică şi armonică a
două numere reale strict pozitive. START
23
- Se dau numerele reale strict pozitive a şi b şi se calculează media
aritmetică ((a+b)/2), media geometrică (√ab) şi media armonică
a, b
(2/(1/a+1/b) = 2ab/(a+b)
NU DA
Pseudocod: a>0 și b>0
{
read a,b; ma=(a+b)/2
if a>0 and b>0 then
{ mg=√a*b
ma=(a+b)/2; “Numerele nu
; sunt reale pozitive !”
mh=2*a*b/(a+b); mh=2*a*b/(a+b)
write ma,mg,mh;
}
ma, mg, mh
else
write "Numerele nu sunt reale pozitive!“;
endif
} STOP
5. Să se determine maximul dintre trei numere reale.
Fie a, b, c cele trei numere reale. Maximul dintre cele trei numere se
24
determină prin comparări succesive.
START
SLS: à a, b, c
NU DA
a≥b
NU DA NU DA
b≥c a≥c
ß max
STOP
Pseudocod: 25
{
read a,b,c;
if a≥b then
if a≥c then
max=a;
else
max=c;
endif
else
if b≥c then
max=b;
else
max=c;
endif
endif
write max;
}
SLS: START
aux=a
a=b
b=aux
NU DA
a>c
aux=a
a=c
c=aux
NU DA
b>c
aux=b
b=c
c=aux
ß a, b, c
STOP
27
TEMA: