Escolar Documentos
Profissional Documentos
Cultura Documentos
1.1 Definiie:
DEF . Prin algoritm vom nelege o metod de rezolvare a problemelor de un
anumit tip . Algoritmul este o succesiune finit de operaii cunoscute , care
se execut ntr-o ordine stabilit astfel nct plecnd de la un set de date (
numite datele problemei sau date de intrare = D.I. ) ce mdeplinesc
anumite condiii , s obinem ntr-un interval de timp finit un set de valori (
numite soluiile problemei sau date de ieire = D.E. ) .
Nu orice descriere pas cu pas a etapelor rezolvrii unei probleme
reprezint un algoritm . Pentru a fi algoritm , o metod de rezolvare a unei
probleme trebuie s aib trei proprieti :
generalitate ( universalitatea ) - un algoritm ofer o metod general de
rezolvare a unui anumit tip de probleme ;
finitudine orice algoritm se ncheie ntr-un timp dup un numr finit
de pai ;
unicitatea - pentru aceleai date de intrare se obin totdeauna aceleai
date de ieere.
Reprezentarea Algoritmilor
Una din cele mai rspndite metode de reprezentare a algoritmilor
este o metod de reprezentare grafic : metoda SCHEMELOR LOGICE .
Simbolurile grafice folosite sunt :
1. Blocurile terminale - pun n eviden nceputul respectiv sfritul unui
algoritm .
da C nu
1
5. Conector- arat punctele de intersecie dintre ramurile unui algoritm .
6. Sgeata indic un drum posibil de urmat n schema logic .
D.I. a , b
START
D.E. S
START
Algoritm :
Pas0 : START SCRIE a,b
Pas1 : Se scriu a , b .
Pas2 : Calculm S : = a + b .
Pas3 : Afim rezultatul , S . S=a+b
Pas4 : STOP .
Afieaz
S
STOP
2
1.3 Reprezentarea algoritmilor
Modalitile de codificare a algoritmilor sunt diverse. Cele mai folosite
dintre acestea sunt:pseudocodul i schema logic.
a. Pseudocodul este o reprezentare semantic a operaiilor. Aceast
form este cea mai apropiat de programul de calcul.
b. Schema logic (organigrama) este reprezentarea algoritmului sub
forma unei succesiuni de simboluri grafice interconectate.Fiecare operaie este
indicat printr-un simbol grafic distinct.
Facem observaia c operaia de codificare a algoritmilor nu este nc
complet standardizat. De aceea n unele cri s-ar putea gsi alte variante dect
acelea folosite n cadrul acestui referat.
2. CODIFICAREA ALGORITMILOR
2.1. Structura secvenial include operaiile de:
- citirea date de intrare;
- calculul valorii unei/unor expresii i atribuirea valorii unei/unor
variabile;
- afiarea rezultatelor;
3
n figura 1 se indic reprezentarea unui algoritm secvenial sub forma de
pseudocod (1.a) i schem logic (1.b)
4
Codificarea algoritmului sub form de program de calcul i execuia
programului vor fi prezentate n lucrarea de laborator nr. 4
Observaii
1. Se observ c n etapele a i b se aleg identificatorii mrimilor cu
care se opereaz n rezolvarea problemei(b,db,n).
2. Este de dorit ca aceste nume s fie scrise numai cu litere mici.
3. n etapele a, b se precizeaz care sunt mrimile cu care opereaz
programul:
- datele iniiale(b,db,n)
- datele finale(bf)
- datele intermediare, dac este necesar(dl,s1)
De asemenea se precizeaz care sunt mrimile :
- constante
- variabile
Constantele pot fi introduse direct prin valorile lor(12,100,etc)sau
printr-un identificator propriu(db=23).
Variabilele se definesc i se folosesc n alctuirea expresiilor de
calcul numai prin intermediul identificatorilor(b,n,dl).
4. Alegerea valorilor datelor iniiale i alctuirea expresiilor de
calcul implic i precizarea unitilor de msur.
5. Se observ c alctuirea algoritmului este condiionat n primul
rnd de posibilitatea alctuirii unor relaii de calcul pentru mrimile care
se determin (variabile intermediare sau de ieire)
Ex. 2.
Fie z1=a1+b1i, z2=a2+b2i dou numere complexe. Se cere s se calculeze
z=z1*z2.
Etapele rezolvrii problemei
a) Definirea datelor de intrare/ieire
Date de intrare :
- a1,b1,a2,b2
5
Date de ieire:
- Rezultatul operatiei matematice z=z1*z2
b) Modelul matematic
z1=a1+b1i, z2=a2+b2i
z=z1*z2=zre+zimi Forma general a unui numr complex. Prin nmulirea
a dou numere complexe se obine tot un numr
complex.
z=z1*z2=(a1+b1i)*(a2+b2i)=a1a2+a1b2i+a2b1i+b1b2i*i=a1a2+a1b2i+a2b1i-b1b2=
(a1a2- b1b2)+(a1b2 + a2b1)i
Identificm,
zre=a1a2- b1b2
zim= a1b2 + a2b1
c) Reprezentarea algoritmului:
Mai nti se aleg variabilele pentru fiecare data (de intrare, ieire sau auxiliar):
Date Identificatori de
variabile corespunztori
a1 a1
b1 b1
a2 a2
b2 b2
zre zre
zim zim
6
d) Tabel de verificare:
Instruciuni Pas
Citete a1,b1,a2,b2 a1=2 b1=1 a2=5,b2=-1
Afieaz a1,b1,a2,b2 2 1 5 -1
zre=a1a2-b1b2 zre=2*5-1*(-1)=11
zim=a1b2+ a2b1 zim=2*(-1)+5*1=-2+5=3
Afieaz zre+izim 11+i3
STOP STOP
Observaii
7
2.2 Structura de decizie (se mai numete i structur alternativ sau
structur ramificat) introduce n algoritm operaia de ramificare, adic
evaluarea unei condiii (notat test n cele ce urmeaz), stabilirea valorii
adevrat sau fals a acesteia i adoptarea unei decizii privind modul n care se
continu calculele.
Definirea structurii instruciunii de decizie:
n fig.2 este prezentat reprezentarea unei structuri de decizie care se
bazeaz pe verificarea condiiei test ? n pseudocod (2.a), respectiv schem
logic(2.b)
8
Instruciunea de ramificare poate avea i urmtoarele variante de
alctuire:
- subblocurile de instruciuni pot conine i numai o singur instruciune;
- se neglijeaz subblocul de instruciuni corespunztor ramurii neselectate;
- exist posibilitatea ca secvena de decizie s fie alctuit dintr-un singur
subbloc de instruciuni (fig. 3 unde lipsete subblocul aciune 2).
Ex. 3.
S se rezolve ecuaia de gradul I (a*x + b = 0)n ipoteza considerrii
tuturor variantelor posibile ale datelor de intrare.
a) Definirea datelor de intrare/ieire
Date de intrare : a,b
Date de ieire: x
b) Modelul matematic.
Ecuaia de gradul I este ax+b=0.Sub aceast form rezolvarea ecuaiei nu
poate fi efectuat printr-un program de calcul. Algoritmul de calcul nu poate
include dect relaii de calcul pentru mrimile necunoscute. Deci se alctuiete
b
relaia: x .
a
b
daca a0 atunci x
a
dac a=0, atunci avem 2 cazuri:
dac b=0, ecuaia devine 0*x+0=0, ecuaia are o infinitate de soluii.
dac b0, ecuaia nu are soluii (este o imposibilitate).
9
c)Reprezentarea algoritmului
d)Tabel de verificare
operaii
citete a a=4
citete b b=2
a=0? 4=0?
DA NU Nu
b=0? -
DA NU
x=-b/a x=-2/4
afieaz x -0,5
Stop
Stop
10
n toate limbajele de programare sunt definite trei structuri tip pentru
secvena repetitiv(fig.4a,4b i 4c):
structura cu, contorizare;
structura cu test iniial (anterior);
structura cu test final (posterior).
11
n figura 5 este reprezentat structura repetitiv cu contorizare simpl.
5a pseudocod 5b organigrama
Fig. 5
Structura repetitiv cu contorizare are urmtoarele elemente:
- o variabil contor i de preferin cu valori ntregi;
- un interval nchis ( [iiniial , ifinal]);
- condiia de test;
- subblocul aciune 1 care conine instruciunile care se repet;
- ipas reprezint pasul cu care se va modifica variabila i dup fiecare
ciclare.De regul ipas = 1 (incrementare / decrementare).n acest caz valoarea
ipas=1 nu este reprezentat exlicit n pseudocod(fig.5.a).
Interpretare:
- se iniializeaz variabila cu valoarea iiniial;
- se verific condiia de test i [iinitial , ifinal ] ;
- dac testul are valoarea DA(adevrat) se execut aciune 1;
- se modific valoarea variabilei i cu pasul ales;
- se revine automat al verificarea testului;
- pentru valoarea NU(fals) a testului se ncheie secvena repetitiv , iar
programul se continu cu instruciunea imediat urmtoare structurii
ciclice(aciune 2).
Obs.
- Instruciunea este cu test anterior;
- dac i nu aparine intervalului ales, instruciunile din corpul buclei
(aciune 1) nu se vor executa.
- instruciunile de iniializare, cretere i verificare a contorului sunt
incluse automat n program de ctre SC.Deci, dei sunt reprezentate n algoritm,
aceste instruciuni nu apar explicit n programul de calcul;
- introducerea de ctre programator a unor instruciuni de
modificare a contorului duce la o execuie eronat a testului, nesemnalizat
de ctre SC;
- acelai efect l are includerea n algoritm a condiiei de test printr-o
instruciune de decizie.
12
n
Ex. 4 Sa se determine valoarea expresiei S i 3
i 1
a) Date de intrare : n
b) Date de ieire: S
c) Model matematic:
n
S 1 2 3 ............. n i 3
3 3 3 3
i 1
d) Reprezentarea algoritmului :
Obs.
- Instruciunea s=0 este obligatorie. n absenta acesteia valoarea finala
obinut pentru suma s este eronat(s se explice aceasta ?) ;
- instruciunea s=s+i3 se interpreteaz astfel: suma (s) ce este calculat la
momentul actual se obine din suma (s) calculat la momentul anterior la care se
adaug i3 (i fiind valoarea curent a pasului).
Verificarea corectitudinii unui algoritm se face prin alegerea unui set de
valori pentru datele de intrare i alctuirea tabelului de verificare.
13
e) Tabel de verificare Tabelul 2
instruciune PAS 1 PAS 2 PAS 3 PAS 4
citete n n=3
afieaz n 3//ecou
s=0 s=0
i=1 i=1
Instruc. repetitiv
DA DA DA DA
afieaz s 36
n i
Ex. 5 Sa se calculeze valoarea sumei duble S i j 2
i 1 j 1
a) Date de intrare : n
b) Date de ieire: s
c) Model matematic:
n i
S i j 2
i 1 j 1
d) Reprezentarea algoritmului :
14
Obs.
- Instruciunea s=0 este obligatorie i permite reiniializarea variabilei care
memoreaz valoarea j2 pentru fiecare pas al contorului i .
e) Tabelul de verificare Tabelul 3
instruciune PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6
citete n n=2
afieaz n 3//ecou
S=0 S=0
i=1 i=1
i<=n? 1<=2 2<=2 3<2
Instruc. Repetitive
DA
j=1 j=1 j=1
j<=i? 1<=1 2<=1 1<=2 2<=2 3<=2
DA NU S=0+1*1 S=1+2*1 S=3+2*2
s=s+i*j
Obs. Algoritmul unei structuri duble cu contorizare este corect alctuit dac:
- sunt definite dou variabile contor;
- ciclul exterior(primul deschis) cuprinde n totalitate ciclul
interior.Altfel spus,primul ciclul deschis este ultimul nchis.
- contorul ciclului exterior(i) nu este modificat n ciclul interior.nvers,n
afar ciclului interior contorul acestuia(j) poate fi redefinit.
2.3.2. Structura repetitiv cu test anterior (iniial)
Exist algoritmi repetitivi pentru care utilizatorul nu poate aprecia
numrul de repetri(reluri)a secvenei ciclice . n aceste cazuri pentru controlul
interpretrii secvenei ciclice este necesar s se defineasc o variabil de control
i o expresia relaional. Dup modul n care este amplasat condiia de test se
definesc secvene ciclice cu test iniial respectiv final.
Comparativ cu structura cu contorizare ,n acest caz trebuiesc
respectate urmtoarele condiii:
- este necesar iniializarea explicit,prin program, a variabilelor care
alctuiesc condiia de test. n caz contrar se va interpreta coninutul locaiei de
memorie rezervate respectivei variabile ( v. i lucr. de lab. nr. 1), ceea ce va
compromite executarea respectivei secvene ciclice;
- pe parcursul ciclului trebuie s existe cel puin o instruciune prin care
se recalculeaz valorile acestor variabile.n caz contrar secvena repetitiv poate
deveni un ciclu infinit;
- exist posibilitatea ca instruciunile din corpul ciclului s nu fie
parcurse nici mcar o singur dat.
Algoritmii repetitivi cu test iniial sunt specifici problemelor de:
15
aritmetica numerelor(divizibilitate, transformri de baz, etc) sau de validare a
datelor de intrare.
n fig. 5 se reprezint pseudocodul i organigrama unei secvene repetitive
cu test anterior.
a) pseudocod b) organigram
Fig. 6
Sintaxa algoritmului .
Blocurile care alctuiesc secvena repetitiv au urmtoarele semnificaii:
- iniializarea valorii variabilelor care definesc condiia care verific
incheierea execuiei repetate (cond ?);
- cond ? - condiia care verific ncheierea execuiei repetate:expresie
relaional (x <=5) sau logic ((x >= -1) I (x<=1)) ;
- aciune 1 secvena de instruciuni care se repet;
- instruciunea prin care se modific valorile care definesc cond ?
Interpretarea secvenei repetitive cu test iniial:
- se efectueaz testul de la nceputul buclei;
- pentru cond=DA (adevrat) se execut instruciunile din corpul buclei;
- pentru cond=NU (fals ) se abandoneaz bucla i se trece la instruciunea
imediat urmtoare secvenei repetitive (aciune 2).
Ex. 6 Sa se tabeleze valorile funciei f ( x) x 2 9 pentru x [xi, xf] cu pasul
de modificare a variabilei independente xp.
a) Date de intrare : xi, xf, xp
b) Date de ieire: f (valoarea funciei determint pentru o anumit valoare x)
c) Model matematic:
f ( x) x 2 9
OBS. Fiecare valoare calculat este imediat tiprit.n acest mod locaia din
MO desemnat prin f este eliberat pentru nscrierea urmtoarei valori
calculate.
d) Reprezentarea algoritmului:
program tabelare;
16
citete xi, xf, xp;
afieaz xi, xf, xp;
f=0;
x= xi;
ct timp x< xf
t=x2-9;
dac (t>=0)
f= t ;
afieaz x , f;
sf. dac
x=x+xp;
sf. ct timp;
sf. program.
17
transcendente, calculul valorii radicalului,determinarea valorii unei serii cu
numr infinit de termeni etc).
n figura 6 se reprezint instruciunea repetitiv cu test anterior n
pseudocod i organigram
7a Pseudocod 7b organigram
Fig. 7
18
urmtoare secvenei repetitive (aciune 3).
19