Documente Academic
Documente Profesional
Documente Cultură
ALGORITMI
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
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:
LEC IA 2 -
ALGORITMI
NOTI E
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.
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.
NOTI E
ALGORITMI
Identificatori de variabile simple
a, a i, j, suma, media, x1, x2, delta,
LEC IA 2
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.
Opera ia de atribuire se simbolizeaz prin semnul :=. n unele lucrri se utilizeaz semnul .
b) Opera ia de calcul
Se realizeaz la evaluarea expresiilor aritmetice, care leag
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
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
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.
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
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.
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.
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
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.
NOTI E
ALGORITMI
LEC IA 2
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
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).
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:.
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;
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;
NOTI E
LEC IA 2
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.
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
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
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
Programul pentru calculator ntocmit pe baza unui algoritm eficient utilizeaz ct mai pu in memorie intern dac: 17
NOTI E
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: -
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,
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