Sunteți pe pagina 1din 27

1

Seminar 3
Reprezentarea numerelor intregi in virgula fixa
Reprezentarea numerelor in virgula fixa 2
Virgula fixa:
 Aritmetica (numere pozitive)
 Algebrica (numere pozitive si negative)

Pas 1: Reprezentarea numarului din baza 10 in baza 2

Virgula fixa algebrica

Bit semn (15) Mantisa (biti 0-14)

Virgula fixa aritmetica

Reprezentarea numarului in binary (biti 0-15)


Virgula fixa aritmetica
3
• Reprezentarea numarului in binar = COD DIRECT

Exemplu: Nr (10) = 22 -> Nr (2) = 10100


VF artitmetica = Cod direct = 10100

Virgula fixa algebrica

• Reprezentarea numarului in binar, conversie in COD COMPLEMENTAR pentru nr negative,


mentinerea CODULUI DIRECT pentru numere pozitive si adaugarea bitului de semn.

Exemplu: Nr (10) = -24

Pas 1: Nr 24 in baza 2 => 11000 = COD DIRECT


Pas 2: Transformare din COD DIRECT in COD INDIRECT (1->0; 0->1)
CD = 11000  CI = 00111
Pas 3: Transformare din COD INDIRECT in COD COMPLEMENTAR (se adauga 1)
CI = 00111  CC = CI+1 = 00111+1 = 01000

Nr -24  bit semn|CC  101000


Virgula fixa algebrica
4

Exemplu: Nr (10) = 24

Pas 1: Nr 24 in baza 2 => 11000 = COD DIRECT

Nr 24  bit semn|CD  011000

Identificarea numarului in zecimal pentru o reprezentare interna in Virgula Fixa

VF aritmetica = codul direct = reprezentarea in binar  Conversie simpla din baza 2 in baza 10.

VF algebrica = BIT SEMN|CC sau CD

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

Pas 1: Transformare din CC in CI (-1)


CC = 01000  CI = CC-1 = 00111
Pas 2: Transformare din CI in CD
CI = 00111  CD = 11000
Pas 3: Conversie din CD in baza 10:
11000 = 16+8 = 24

Nr (10) = -24
6

Scheme logice si pseudocod


7
Schema logica - componente
(1) Blocul de început/sfârșit, etichetat diferit în funcție de entitatea de program pe care o descrie schema logică și care
trebuie să apară o singură dată într-o schemă logică (un singur bloc de început și un singur bloc de sfârșit).

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

Pentru afișarea pe monitor se poate utiliza convenția:

(3) Blocul de atribuire este etichetat cu informația:


unde e este o expresie, = este operatorul de
atribuire, iar v este variabila receptoare a
rezultatului expresiei
(4) Blocul de ramificare (selecție)
9

(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ă (BLOCK)


 structuri alternative (IF-THEN-ELSE, IF-THEN/IF-ELSE, CASE-OF)
 structuri repetitive (WHILE-DO, DO-UNTIL, DO-FOR)

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 iV={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ă iV, 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)

Afișarea datelor pe monitor:

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;

Similar schemei logice.

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=c max=b max=c max=a

ß 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

6. Să se ordoneze crescător trei numere reale. à a, b, c


26
Pseudocod: NU
a>b
DA

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:

1. Sa se determine minimul si maximul dintre 3 numere reale. Fie


a, b, c cele 3 numere reale. Maximul si minimul dintre cele trei
numere reale se determina prin comparari succesive.
2. Să se rezolve ecuaţia ax+b=0, unde a şi b sunt numere reale.
(ecuatia de gradul 1, aveti grija la cazurile posibile)
3. Sa se identifice daca un numar citit de la tastatura este par sau
impar.

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