Sunteți pe pagina 1din 21

LEC IA 2

ALGORITMI

algoritm, scheme logice, pseudocod, structuri fundamentale

1. DEFINI IE Elementele unui algoritm. 2. OPERA II NTR-UN ALGORITM No iunea de variabil. Opera iile de atribuire, intrare-ieire, de decizie, de apel, de salt. 3. REPREZENTAREA ALGORITMILOR Scheme logice. Limbajul pseudocod. 4. STRUCTURI FUNDAMENTALE NTR-UN ALGORITM Structuri lineare. Structuri alternative. Structuri repetitive (cicluri). 5. PROPRIET ILE I EFICACITATEA ALGORITMILOR Propriet i. Aprecierea eficacit ii. 6. EXEMPLU COMPLET

Definirea algoritmului i a opera iilor ntr-un algoritm Prezentarea blocurilor dintr-o schem logic Utilizarea limbajului pseudocod la descrierea algoritmilor n elegerea structurilor fundamentale ale algoritmilor Capacitatea de apreciere a calit ii algoritmilor

NOTI E

ALGORITMI

LEC IA 2

1. DEFINI IE
Rezolvarea unei probleme numerice cu ajutorul calculatorului

presupune alctuirea unui algoritm pentru problema respectiv, adic specificarea unei succesiuni de opera ii i ac iuni elementare, care s conduc la solu ia problemei, pornind de la date cunoscute. Denumirea de algoritm provine de la numele matematicianului arab al-Khwarizmi1. ntr-o accep ie mai general, algoritmii pot fi ntlni i frecvent n activit ile cotidiene obinuite sau profesionale exprima i prin regulamente, proceduri, protocoale etc. De exemplu algoritmul pentru utilizarea unei maini-unelte, algoritmul de fabrica ie al unui autoturism, algoritmul
algoritm

pentru decolarea unui avion etc.

Prin algoritm se n elege o mul ime finit de opera ii (ac iuni, pai), derulate ntr-o anumit succesiune, cu ajutorul crora se ob ine solu ia unei probleme.

Elementele (obiectele) cu care se construiete un algoritm sunt: datele, care pot fi valori constante sau variabile, de un anumit tip:

numeric, logic sau ir de caractere;


expresiile, formate din operanzi (nume de variabile, constante sau func ii) i operatori (aritmetici, rela ionali sau logici); opera iile, adic ac iuni elementare asupra datelor i expresiilor, ac iuni de decizie etc. La ntocmirea unui algoritm trebuie bine precizate :
Abu Abdullah Muhammad bin Musa al-Khwarizmi (sau Muhammed ibn Musa Horezmi ), prescurtat Al-Horezmi (n.780 - m.845) savant, astronom/astrolog, matematician i scriitor persan. Este considerat ca "printele algebrei", numele acestei discipline matematice avnd la origine titlul cr ii sale Hisab o jabr o muqabele. [citat din http://ro.wikipedia.org/wiki/Al-Khwarizmi]
1

LEC IA 2 -

ALGORITMI

NOTI E

datele de intrare, mrimile sau datele cunoscute ale problemei de


rezolvat, care sunt introduse n algoritm;
date

opera iile, care ac ioneaz asupra mrimilor; datele de ieire, mrimile sau rezultatele algoritmului (solu iile
problemei).

Definirea algoritmul este un pas important pentru crearea unui program executabil. De calitatea algoritmilor proiecta i n etapa de analiz depinde n mare msur calitatea programelor i succesul execu iei acestora.

2. OPERA II NTR-UN ALGORITM


2.1. NO IUNEA DE VARIABIL Variabila este o construc ie (modalitate) pentru reprezentarea i utilizarea n algoritmi sau limbaje de programare a valorii unei date.

Prin variabil n elegem o mrime care poate lua diferite valori dintr-o mul ime dat.

Variabilele sunt identificate printr-un nume de variabile, formate din combina ii de litere i cifre, cu urmtoarele restric ii: numele ncepe ntotdeauna cu o liter; nu con ine caracterul spa iu sau caractere speciale.

Variabilele pot s fie: -

simple, dac, la un moment dat n executarea algoritmului,


reprezint o singur valoare;

indexate, dac refer sau reprezint o list de valori, iar o


anumit valoare din list este accesibil (utilizat) prin precizarea pozi iei (indexului) acesteia n lista de valori (de exemplu iruri, matrici, tablouri multidimensionale).

NOTI E

ALGORITMI
Identificatori de variabile simple
a, a i, j, suma, media, x1, x2, delta,

LEC IA 2

Variabila indexat x cu n valori, x[5] elementul 5 din ir


x[i], i:=1,n x x[5]

2.2. OPERA II

a) Opera ia de atribuire
Unei variabile i se poate atribui o valoare constant, valoarea unei alte variabile sau rezultatul evalurii unei expresii.

Pe parcursul algoritmului, o variabil i poate modifica valoarea prin opera ii de atribuire.


:=

Opera ia de atribuire se simbolizeaz prin semnul :=. n unele lucrri se utilizeaz semnul .

k := 2; media := (nota1+nota2)/2; i := i+1; p := TRUE; x[5]:=120; raspuns := DA;

b) Opera ia de calcul
Se realizeaz la evaluarea expresiilor aritmetice, care leag

operanzi numerici (variabile, constante, func ii prin operatori ii) operatori


aritmetici.

Operatori aritmetici sunt : +, -, /, *.

ntr-o opera ie de atribuire o

expresia aritmetic se gs gsete ntotdeauna n partea dreapt a semnului de ntotdeauna atribuire. Aceasta se evalueaz i rezultatul este atribuit variabilei din stnga semnului de atribuire. 4

LEC IA 2
delta_2 := b*b b*b-4*a*c; delta := sqrt(delta_2);

ALGORITMI

NOTI E

Observa ie: sqrt() este func ia radical i se presupune c delta_2 >= 0 0.

c) Opera ia de decizie
Permite determinarea valorii de adevr a unor expresii logice, valoare ce poate fi TRUE (adevrat) sau FALSE (fals).

TRUE/FALSE

n descrierea opera iei de decizie se folosesc expresii rela ionale i expresii logice. Expresiile rela ionale leag dou expresii aritmetice prin intermediul

operatorilor rela ionali =, , <, >, <=, >=, rezultatul fiind o valoare ,
logic. Expresiile logice leag propozi ii logice prin intermediul operatorilor

logici AND, OR, NOT etc. rezultatul fiind o valoare logic.


(x+5) >= 0 (a >= 3) AND (a <= 10)

d) Opera ii de intrare-ieire ieire


Permit introducerea n algoritm a datelor de intrare i redare a rezultatelor prelucrrii (a datelor de ieire).

Ele opereaz att asupra datelor individuale, ct i asupra datelor organizate n fiiere sau baze de date.

e) Opera ii auxiliare
Sunt opera ii specifice lucrului cu colec ii de date organizate n fiiere sau baze de date.

f) Opera ii de salt

NOTI E

ALGORITMI

LEC IA 2

Permit saltul n interiorul algoritmului, deci continuarea algoritmului dintr un anumit punct al acestuia, specificat prin dintr-un opera ia de salt.

n mod frecvent opera ia de salt nso ete opera ia de decizie frecvent, decizie, valoarea TRUE sau FALSE rezultat condi ionnd saltul la puncte diferite n algoritm.

g) Opera ii de apel
Permit apelul unei secven e de instruc iuni n vederea execu iei acestei secven e o dat sau de mai multe ori. e,

Secven a de instruc iuni care se apeleaz este descris o singur dat n algoritm i este identificat printr printr-un nume i parametri de apel.

Se apeleaz secven a numit media_sir, cu parametri x i m (un ir de numere i media acestora)


media_sir(x,m);

3. REPREZENTAREA ALGORITMILOR
Exist mai multe modalit i de reprezentare prezentare a algoritmilor:

enumerarea pailor n limbaj obinuit, scheme logice, limbaj pseudocod, ilor diagrame sau tabele de decizie. Cele mai frecvente sunt reprezentrile prin

scheme logice i limbaj pseudocod.


Schema logic reprezint o transcriere grafic a etapelor
(pailor) unui algoritm. Fiecrei opera ii i se ataeaz un simbol grafic specific, numit bloc, sensul de parcurgere fiind indicat prin sge i.

LEC IA 2

ALGORITMI

NOTI E

Pseudocodul este o metod frecvent de reprezentare a algoritmilor fiind considerat o cale de mijloc ntre limbajul natural i cel de programare.
Limbajul pseudocod este format dintr-un set de cuvinte cheie
sau rezervate, asociate opera iilor sau ac iunilor elementare dintr-un algoritm.

Este de preferat limba englez pentru c, n acest caz, limbajului pseudocod este mai apropiat de limbajul de programare. Cuvintele cheie sunt sugestive pentru opera iile din algoritm: begin, end, read, while, if, do, .. . Blocurile folosite ntr-o schem logic i echivalentele lor n pseudocod sunt prezentate n Tabelul 1.

Blocuri/cuvinte cheie n scheme logice/limbaj pseudocod


Blocul delimitator (terminator) Se utilizeaz pentru a marca nceputul sau sfritul algoritmului; begin

Tabelul 1

end.

Blocul de intrare/ieire Este utilizat pentru opera iile de intrare/ieire. Are o intrare i o ieire. read lista_variabile; write lista_variabile; Exemplu: read a, b, c; write x1, x2; Blocul de calcul 7

NOTI E

ALGORITMI

LEC IA 2

Este utilizat pentru scrierea expresiilor care se calculeaz i pentru atribuirea de valori variabilelor. Are forma geometric de dreptunghi, o intrare i o ieire.

nume_variabila := <expresie>; Exemplu: delta := b*b-4*a*c;

Blocul de decizie n urma evalurii condi iei scrise n interiorul blocului se decide ramura pe care va fi continuat algoritmul. Are forma geometric de romb, o intrare i dou ieiri. if (conditie) then actiuni ramura True else actiuni ramura False end_if; Exemplu: if (delta>=0) then write x1, x2 else write Radacini imaginare end_if; Blocul apel de procedur Indic apelarea unui subprogram (proceduri) n algoritm. Sunt precizate denumirea proceduri i parametri de apel. call nume_procedura(parametri); Exemplu: call COMB(n,k);

LEC IA 2

ALGORITMI

NOTI E

Sgeata Indic ordinea parcurgerii blocurilor ntr-o schem logic.

n limbajul pseudocod, pseudoinstruc iunile sunt executate secven ial, n ordinea n care au fost scrise. Separatorul ntre dou pseudoinstruc iuni este ; .

Conectori Reunesc mai multe trasee (alternative) n algoritm. Au mai multe intrri i o singur ieire. Conector de blocuri n interiorul cercului se scrie un numr, permi ndu-se legarea a dou blocuri neconsecutive ale schemei logice.

Conector de pagin n interiorul lui se scriu litere care marcheaz ntreruperea, respectiv continuarea schemei logice pe o alt pagin.

4. STRUCTURI FUNDAMENTALE NTR-UN ALGORITM


Orict de complica i ar fi, algoritmii sunt construi i utiliznd trei structuri fundamentale. n func ie de opera iile din care sunt compuse, structurile fundamentale pot fi liniare, alternative i repetitive.

4.1. STRUCTURI LINIARE

NOTI E

ALGORITMI

LEC IA 2

Structurile liniare con in orice tip de opera ii de prelucrare cu


excep ia celor de decizie, adic opera ii de atribuire sau sau/i opera ii de intrare intrare-ieire. Paii sunt parcuri succesiv, n ordinea n care apar n structur.

... read x,z,y; SUM := x+y+z; write SUM;

4.2. STRUCTURI ALTERNATIVE

Structurile alternative includ orice tip de opera ii de prelucrare i


cel pu in una de decizie.

Ramifica iile algoritmului rezultate sunt formate din opera ii sau grupe de opera ii ce urmeaz s fie executate n func ie de valoarea logic a condi iei din cadrul opera iei de decizie. Deciziile pot fi: a) decizii simple, caz n care au dou ramuri, b) decizii multiple n situa ia n care au mai mult de dou multiple, ramuri.

a) Structura alternativ IF .. THEN .. ELSE.. Structura de decizie simpl se mai numete i structur de tip IF..THEN..ELSE, dup cuvintele cheie din reprezentarea prin limbaj pseudocod. 10

LEC IA 2

ALGORITMI

NOTI E

Se evalueaz condi ia din blocul de decizie (o expresie logic) i, n func ie de valoarea True sau False ob inut, se parcurge ramura , corespunztoare. Indiferent de alternativa parcurs, cele dou ramifica ii se unesc i structura are o singur ieire n continuare. singur

if (conditie) then actiuni_1 else actiuni_2 end_if;

Ramura else nu este obligatorie poate s lipseasc. n acest caz exist obligatorie, . numai alternativa True, altfel nu se ex , execut nimic. nainte de else nu se pune ; (separatorul de pseudoinstruc iuni).

if (x>0) then A := x-y else A := x+y end_if;

11

NOTI E

ALGORITMI

LEC IA 2

Exist posibilitatea ca o alternativ s con in o alt structur ramificat simpl, adic s avem o structur IF inclus ntr-o alt structur IF, rezultnd un IF imbricat.

if (x>0) then if (y>0) then A:=x+y+2 else A:=x-y-2 end_if else A:=x+y end_if;

b) Structura alternativ CASE .. OF .. n cazul structurii bazat pe decizii multiple, case..of.., se evalueaz valoare unei expresii sau variabile numit contor (k), i, n func ie de valoarea acesteia, se alege alternativa (ramura de parcurs n algoritm) corespunztoare (ac iunile a1, .. ,an) dintr-o list de variante notate cu etichetele 1:, .. ,n:.

case (k) of 1: a1; 2: a2; n: an; end_case;

12

LEC IA 2

ALGORITMI

NOTI E

n func ie de valoarea variabilei op (1, 2, 3 sau 4) se efectueaz una din cele patru opera ii aritmetice asupra variabilelor a i b, iar rezultatul se atribuie variabilei rez.
case (op) of 1: rez := a+b; 2: rez := a-b; 3: rez := a*b; 4: if (b<>0) then rez := a/b else write eroare eroare; end_case;

4.3. STRUCTURI REPETITIVE (CICLURI)


Structurile repetitive con in ac iuni sau grupe de ac iuni, care se
execut repetat, de un anumit numr de ori, n func ie de o anumit condi ie.

La o structur repetitiv, numit i structur iterativ, ciclu sau bucl ur (engl. loop), se disting cteva elem elemente caracteristice: -

corpul ciclului, grupul de ac iuni (opera ii) care se execut; cut; pasul (itera ia), o repetare, o parcurgere (execu ie) complet a complet
corpului ciclului;

condi ia de sfrit de ciclu, condi ie care, dac este ndeplinit ndeplinit,


conduce la terminarea ci ciclului i trecerea la urmtoarea ac iune n algoritm;

contor, o variabil ntreag care numr itera iile (paii) executa i


la un moment dat. 13

NOTI E

ALGORITMI Dup numrul de pai structurile repetitive pot fi: -

LEC IA 2

cu numr necunoscu i de pai (WHILE..DO, DO..WHILE); cu numr cunoscut de pai (FOR..DO).

Ieirea din ciclu sau continuarea lui cu o nou itera ie se decide prin testarea condi iei de sfrit de ciclu, care poate fi fcut: -

anterior execu iei corpului ciclului (WHILE..DO, FOR..DO); posterior execu iei corpului ciclului (DO..WHILE).

a) Ciclul WHILE..DO WHILE..DO este o structur repetitiv, cu numr necunoscut de pai, condi ionat anterior. La intrarea n structura WHILE..DO se evalueaz expresia logic <conditie>. Ct timp aceasta este adevrat se execut repetat corpul ciclului. Cnd <conditie> este fals se prsete ciclul i algoritmul continu cu urmtoarea ac iune.

while (conditie) do corpul ciclului; end_while;

b) Ciclul DO..WHILE Ciclul DO..WHILE ncepe cu execu ia corpului ciclului, dup care se testeaz valoarea de adevr a expresiei <conditie>. Ct timp este adevrat, se va repeta execu ia corpului ciclului, altfel ciclul se termin. DO..WHILE este deci o structur repetitiv cu numr necunoscut de pai, condi ionat posterior.

14

LEC IA 2

ALGORITMI

NOTI E

do corpul ciclului; while (conditie);

Pentru <conditie> fals, bucla WHILE..DO nu se execut niciodat n timp ce bucla DO...WHILE se execut cel pu in o dat, indiferent dac , este adevrat sau fals. n corpul ciclului trebuie s existe ac iuni care fac <conditie> fals dup un numr oarecare de pa n caz contrar ciclul continu la infinit. pai, az n limbaj pseudocod DO..WHILE poate fi ntlnit i sub forma REPEAT..UNTIL, dup instruc iunea specific limbajului Pascal.

a) Ciclul FOR..DO Este un ciclu cu numr cunoscu i de pai. Execu ia corpului ciclului e este controlat de o variabil contor v, care are ini ial o valoare vi i la final o valoare vf. La fiecare pas valoarea variabilei contor crete cu o valoare p crete (dac nu se precizeaz, n mo implicit p=1). Rezult c se execut numr mod =1). de (vf-vi)/p de pai (itera ii). Opera iile de ini ializare contor, increme tare contor i verificarea incrementare condi iei de sfrit de ciclu sunt efectuate implicit de structura FOR..DO

descris n limbaj pseudocod sau n limbajele de programare. Din acest motiv, n corpul ciclului, nu trebuie s se intervin explicit opera ii asupra variabilei de contor.

15

NOTI E

ALGORITMI

LEC IA 2

for v:=vi, p, vf do corpul ciclului ciclului; end_for;

Structurile repetitive FOR..DO, WHILE..DO i DO..WHILE pot avea, cu anumite artificii i restric ii, formulri echivalente. Acest lucru poate fi ri observat n exemplul urmtor.

Se consider o variabil indexat note[i], i=1..N (ir, tablou , unidimensional) care con ine N note (numere ntregi ntre 1 i 10), pentru care se determin suma notelor i media acestora (variabilele suma i media).

16

LEC IA 2
suma := 0; i := 1; while (i<=N) do suma := suma+note[i]; i := i+1; end_while; media := suma/N;

ALGORITMI
suma := 0; i := 1; do suma := suma+note[i]; i := i+1; while (i<=N); media := suma/N; ...

NOTI E

suma := 0; for i:=1,N do suma := suma+note[i]; end_for; media := suma/N;

5. PROPRIET ILE I EFICACITATEA ALGORITMILOR


Orice algoritm corect ntocmit are trei propriet i de baz: -

unicitate generalitate finititudine

Unicitate - algoritmul trebuie s prevad modul de solu ionare a tuturor


situa iilor care pot s apar n rezolvarea problemei respective.

Generalitate - un algoritm trebuie s permit rezolvarea unei clase de


probleme i nu a unei probleme particulare. Datele de intrare pot varia ntre anumite limite determinate.

Finititudine - un algoritm trebuie s se termine ntotdeauna dup


parcurgerea de un numr finit de ori a pailor care-l descriu. Pentru rezolvarea unei probleme se pot ntocmi mai mul i algoritmi. Un criteriu de selectare este cel al eficacit ii.
Se consider c cel mai eficient algoritm este cel care utilizeaz cel mai pu in resursele principale ale calculatorului i anume

memoria intern i procesorul.

Programul pentru calculator ntocmit pe baza unui algoritm eficient utilizeaz ct mai pu in memorie intern dac: 17

NOTI E

ALGORITMI utilizeaz ct mai pu ine variabile; lizeaz

LEC IA 2

aloc pentru acestea memoria minim necesar tipurilor de date reprezentate de variabile.

Acest lucru depinde ns i de modul n care algoritmul este transpus n limbaj de programare. Performan a la nivelul de procesor se poate evalua prin: -

numrul de opera ii elementare efectuate; timpul mediu de execu ie al algoritmului.

Testarea n ambele cazuri se face pentru acela set de date de acelai intrare. Timpul mediu de execu ie rezult din media timpilor n cazurile cel mai pu in favorabil (cele mai multe opera ii efectuate) i cel mai favorabil (cele mai pu ine opera ii efectuate).

5. EXEMPLU COMPLET
Algoritmul pentru rezolvarea ecua iei de gradul I a x + b = 0 .
Date de intrare: a, b variabile reale , Date de ie ieire: x solu ia unic, dac a<>0, variabil real , real; Solutie imposibila mesaj (sir de caractere), dac (a=0) Solutie imposibila i (b<>0); Solutie nedeterminata mesaj (sir de caractere), dac Solutie nedeterminata (a=0) i (b=0); begin read a, b b; if (a<>0) then x := -b/a; write x else if (b=0) then write Ecuatie nedeterminata else write Ecuatie imposibila end_if; end_if; end. 18

LEC IA 2

ALGORITMI

NOTI E

Prin algoritm se n elege o mul ime finit de opera ii (ac iuni, pai), derulate ntr-o anumit succesiune, cu ajutorul crora se ob ine solu ia unei probleme. Variabila este o mrime care poate lua diferite valori dintr-o mul ime dat. Unei variabile i se poate atribui o valoare constant, valoarea unei alte variabile sau rezultatul evalurii unei expresii. Opera ia de decizie permite determinarea valorii de adevr a unor expresii logice, valoare ce poate fi TRUE (adevrat) sau FALSE (fals). Opera ii de intrareieire permit introducerea n algoritm a datelor de intrare i redare a rezultatelor prelucrrii (a datelor de ieire). Schema logic reprezint o transcriere grafic a etapelor (pailor) unui algoritm. Fiecrei opera ii i se ataeaz un simbol grafic specific, numit bloc, sensul de parcurgere fiind indicat prin sge i. Limbajul pseudocod este format dintr-un set de cuvinte cheie sau rezervate, asociate opera iilor sau ac iunilor elementare dintr-un algoritm. Structurile liniare con in orice tip de opera ii de prelucrare cu excep ia celor de decizie, adic opera ii de atribuire sau/i opera ii de intrare-ieire. Paii sunt parcuri succesiv, n ordinea n care apar n structur. Structurile alternative includ

19

NOTI E

ALGORITMI

LEC IA 2

orice tip de opera ii de prelucrare i cel pu in una de decizie. Structurile repetitive con in ac iuni sau grupe de ac iuni, care se execut repetat, de un anumit numr de ori, n func ie de o anumit condi ie. Orice algoritm corect ntocmit are trei propriet i de baz: unicitate, generalitate i finitudine. Se consider c cel mai eficient algoritm este cel care utilizeaz cel mai pu in resursele principale ale calculatorului i anume memoria intern i procesorul.

Completa i cu explica ii succinte semnifica ia termenilor, expresiilor sau func iilor din tabelul urmtor.
algoritm date de intrare/ieire variabil x[i], i:=1,n j := j+1 operatori rela ionali schem logic pseudocod structuri lineare if..then..else case..of while..do do..while for..do finitudine timp mediu de execu ie mul ime finit de opera ii (ac iuni, pai), derulate ntr-o anumit succesiune, cu ajutorul crora se ob ine solu ia unei probleme

TC1. Activit i (con inute n fiierul Activit i 02) Intra i pe platforma de e-learning MOODLE,
HTTP://DISTANCE.IDUORADEA.RO,

cursul Programarea calculatorului II

Deschide i i citi i con inutul documentului Activit i 02. Efectua i activit ile incluse i rezolva i problemele propuse.

20

LEC IA 2

ALGORITMI

NOTI E

TC2. Completa i i re ine i semnifica ia termenilor din Glosar de termeni. TC3. Efectua i Testul on-line pentru Lec ia 02.

1. Aaron MillerandJerry Lee Ford, Jr., Microsoft Visual C++ 2005 Express Edition Programming for the Absolute Beginner, Course Technology, 2006. 2. Ana ntuneric, .a., Informatic. Teste gril C/C++, Editura Polirom, Iai, 2003. 3. Brian Overland, C++: Ghid pentru nceptori, Editura Corint, Bucureti, 2008. 4. Cerchez, Emanuela, erban, Marinel, Programarea n limbajul C/C++ pentru liceu, Editura Polirom, Iai, 2005. 5. Ivor Hortons, Beginning Visual C++ 2005, Published by Wiley Publishing, Inc., 2006. 6. Jeff Kent, C++ fr mistere. Ghid pentru autodidac i, Editura ROSETI EDUCATIONAL, Bucureti, 2007. 7. Kris Jamsa, Lars Klander, Totul despre C i C++. Manual fundamental de programare n C i C++, Editura Teora, Bucureti, 2004. 8. Loudon, Kyle, C++ poket guide, Editura ALL, Bucureti, 2006. Cursurile i aplica iile pentru laborator, 9. Pele, Alexandru-Viorel, http://distance.uoradea.ro, cheie pc2, 2009. 10. ***, Microsoft Visual C++ 2008 Express Edition Online Help 11. ***, Surse Internet

21

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