Sunteți pe pagina 1din 9

Algoritmi

   00:15:30

Unitate: 2 din 27

În timpul activităților noastre zilnice, fiecare dintre noi se confruntă cu procesul de rezolvare a
diferitelor probleme comune și de luare a deciziilor. Pe ce drum să mergem la serviciu, ce să
mâncăm la micul dejun sau la prânz, ce telefon mobil să cumpărăm, când să facem renovarea
apartamentului... Acestea sunt doar câteva dintre situațiile care ne impun o anumită analiză și
reflexii pentru a rezolva o problemă concretă. Desigur, conceptul de problemă trebuie să fie
înțeles condiționat, ca o situație, o obligație, un obstacol sau o întrebare la care trebuie găsit un
răspuns. Viața noastră de zi cu zi este plină de astfel de situații.

Activitatea de a scrie programe de calculator seamănă, în mare măsură, cu situațiile de zi cu zi


descrise. De aceea, foarte des se spune că programarea este o activitate ce este compusă dintr-o
rezolvare constantă a problemelor cu ajutorul unui calculator. Cu alte cuvinte, produsul muncii de
programare, respectiv al programului, nu este nimic altceva decât instruirea unui calculator cum să
rezolve o anumită problemă. Dacă priviţi programul de calculator prin prisma aplicațiilor mult mai
complexe, munca de programare constă din rezolvarea unei serii de astfel de probleme
individuale, minore, a căror depășire duc la produsul final – un program de calculator complet
funcțional.

Indiferent dacă este vorba de o situație din viața de zi cu zi sau de probleme legate de scrierea
programelor de calculator, rezolvarea lor necesită implementarea unei serii de etape, care, unite,
se pot numi algoritm.

Ce este un algoritm
Sunt mari șanse să fi auzit până acum de multe ori cuvântul algoritm în diferite situații. Algoritmul
este definit ca o procedură descrisă corect pentru rezolvarea unei probleme, cel mai adesea
probleme în matematică sau programarea pe calculator.

Notă

Istoria algoritmilor

Algoritmii nu sunt nicio noutate, având în vedere că au fost cu 3500 de ani înainte de noua eră, babilonienii
antici aveau algoritmi pentru calcularea rădăcinii pătrate. Cuvântul algoritm (engl. algorithm) a fost creat
ca rezultat al latinizării numelui omului de știință și matematicianului persan, Al-Khwarizmi, care în anul
825 a scris o carte care se ocupa de calcule folosind numerele hindi.
Algoritmii nu se limitează la calculatoare, ci pot fi aplicați în orice situație care necesită o anumită
analiză cu scopul de a găsi o soluție. De exemplu, toate acele situații comune din viața reală,
enumerate la începutul acestei lecții, pot candida la crearea de algoritmi. Astfel, noi toţi, complet
inconștient, creăm diferiţi algoritmi care ne permit să rezolvăm situațiile zilnice în care suntem. Iată
câteva dintre aceste situații:

Să iau umbrela afară?

 Vedem prognoza meteo, dacă este anunțată ploaia, luăm umbrela; dacă ploaia nu este prevăzută, nu
luăm umbrela.

Cum se fac clătitele?

 Se amestecă 300 g de făină, 3 ouă, 100 ml apă minerală  și 400 ml lapte; amestecaţi; încălziți tigaia,
turnați  și distribuiți uniform amestecul; se coace la aproximativ 2-3 minute pe ambele părți; adăugați
umplutura pe care o doriți.

Cum se face ceaiul?

 Se toarnă 2 dl de apă în ceainic și se pune pe aragaz; aprindeţi aragazul și așteptați să fiarbă; luaţi
vasul de pe aragaz și adăugaţi ceai.

Acestea au fost doar câteva dintre situațiile a căror rezolvare ne cere să creăm algoritmi interni.
Etapele din care sunt compuse instrucțiunile prezentate, combinate, alcătuiesc procedura sau, cu
alte cuvinte, algoritmul care descrie modul concret de rezolvare a unei situații. Într-un mod identic
funcționează şi algoritmii calculatorului.

Notă

De ce prezentăm algoritmii?

Până acum, probabil v-ați întrebat care este motivul prezentării algoritmilor în cadrul acestei prezentări
introductive despre elementele de bază ale programării. Motivul este foarte simplu. Scrierea unui cod de
calculator este doar una dintre etapele de creare a unui program. Înainte de a începe efectiv să scrie codul
sursă ales, programatorii efectuează o serie de acțiuni de pregătire, cu scopul de a defini cât mai precis
etapele care vor fi implementate pentru a scrie un program de calitate și funcțional. Produsul acestor etape
este tocmai algoritmul sau mai mulţi algoritmi, care sunt apoi utilizaţi ca bază sau, mai bine zis, ca
instrucțiuni pentru scrierea codului sursă.
Orice programator bun vă va spune că munca de scriere a algoritmilor este mai importantă sau, cel puțin, la
fel de importantă ca şi munca de scriere concretă a codului sursă al unui program. Tocmai din acest motiv,
există oameni care se ocupă de știința informaticii, a căror muncă este compusă în exclusivitate din
scrierea algoritmilor.
 

Algoritmii în lumea calculatoarelor


În acest moment, probabil că nici nu vă puteți închipui în ce măsură sunt importanţi algoritmii
pentru funcționarea calculatoarelor şi a tehnologiilor informatice și digitale în general. De
exemplu, citirea acestui text nu ar fi posibilă fără existența câtorva algoritmi foarte puternici a
căror implementare constituie baza lumii digitale. Logica unor astfel de algoritmi se foloseşte
pentru a converti semnalele domeniului de timp în frecvențe, și invers, şi pe astfel de algoritmi se
bazează şi funcționarea internetului, a WiFi-urilor, a routerelor, a sateliților, a telefoanelor, a
calculatoarelor etc.

Atunci când se vorbeşte de programarea pe calculator, tema principală a acestui program, se


poate constata că algoritmii reprezintă baza unei astfel de activităţi. Având în vedere faptul că
calculatorul este o mașină care rezolvă probleme prin efectuarea unui număr mare de calcule,
algoritmii ar fi pașii practici pe care calculatorul ar trebui să-i execute pentru a produce rezultatul
așteptat. Unele dintre situațiile care, atunci când se programează, necesită crearea unor algoritmi
buni, pot fi următoarele:

 în ce mod se calculează valoarea medie a unui set de numere


 cum se face sortarea unui şir de date
 cum se determină poziția pe afișajul pe care va fi desenat un element grafic
 cum să determinăm cea mai scurtă cale între două puncte de pe hartă
 cum se generează o valoare aleatorie (engl. random).

Acestea au fost doar câteva dintre problemele care pot apărea atunci când se scriu programe de
calculator. Chiar și aplicațiile foarte simple de nivel înalt, create folosind diferite instrumente
grafice, care la nivelul lor de aplicare nu necesită crearea niciunui algoritm, se bazează în fundal pe
un număr mare de algoritmi deja scrişi. Dacă programul este creat într-un limbaj de nivel scăzut
sau înalt, în procesul de traducere a codului sursă al unui astfel de limbaj în limbaj mașină,
compilatorul, interpretorul sau asamblorul folosesc intensiv diferiţi algoritmi.

Algoritmii programelor de calculator sunt total independenți de limbajul de programare, respectiv


de tehnologia care va fi utilizată pentru implementarea unor astfel de algoritmi. De aceea, este
necesar ca de la început să se facă o diferență între algoritm și codul sursă al unui program, care
apare ca o realizare concretă a unui astfel de algoritm. Pentru a putea vizualiza mai bine relația
descrisă, este dată imaginea 2.1.
Imaginea 2.1. Algoritmul este instrucțiunea pentru crearea unui program sau a unei părți a acestuia

Imaginea 2.1 încearcă să ilustreze relația dintre algoritm, codul sursă cu care este scris programul
și calculatorul pe care se execută un astfel de program.

Moduri diferite de prezentare a algoritmilor


Algoritmul este o instrucțiune definită clar pentru rezolvarea unei probleme, care, în orice situație,
respectiv pentru orice intrare, produce ieşirea așteptată. Astfel, algoritmul este doar ideea care se
formează în capul programatorului. Pentru a se prezenta algoritmul, trebuie să fie utilizată una
dintre modalităţile folosite în acest scop. Trei dintre cele mai utilizate metode pentru prezentarea
algoritmilor sunt:

1. prezentarea prin cuvinte, vorbire, în limba engleză sau într-o altă limbă
2. prezentarea prin desenarea unei diagrame de flux (engl. flowchart)
3. prezentarea printr-un pseudocod
4. prezentarea unui cod al unui limbaj de programare.

La începutul acestei lecții, au fost deja definiți câţiva algoritmi, utilizând prima metodă menţionată,
respectiv utilizând una dintre limbile naturale. Deși acest tip de definire și prezentare a algoritmilor
este foarte bun în situațiile care necesită o comunicare orală sau opțională, atunci când este vorba
de programarea pe calculator, pentru prezentarea algoritmilor se recurge cel mai adesea la
utilizarea a 2, 3 sau 4 metode. Având în vedere că dvs. sunteți acum la începutul învăţării
programării și încă nu cunoașteți niciun limbaj de programare, continuarea acestei prezentări
introductive va fi dedicată prezentării algoritmilor utilizând o diagramă de flux și un pseudocod.
Aceste două metode de vizualizare a algoritmilor reprezintă un instrument excelent pentru
înțelegerea programării de bază și permit începătorilor să dezvolte o logică de programare chiar
înainte de a scrie o singură linie de cod pentru un limbaj de programare concret.  

Este posibil să prezentăm un algoritm folosind limbajul de programare C?

Da

Nu
Diagrama de flux
Diagrama de flux este una dintre modalitățile prin care etapele unui proces se pot prezenta grafic.
O astfel de reprezentare grafică ilustrează soluția completă a unei probleme, ajutând la
înțelegerea modului în care se rezolvă o astfel de problemă. Diagramele de flux nu sunt strict
legate de calculatoare și programare, ci au o aplicație mult mai largă.

Primele diagrame de flux au fost create în 1921 de către soţii Frank și Lillian Gilbreth, membri ai
Societății Americane de Ingineri Mecanici (engl. American Society of Mechanical Engineers, ASME).
Astfel, aceste diagrame au fost utilizate inițial pentru a descrie procesul de inginerie industrială.
Totuşi, de curând, diagramele de flux și-au găsit aplicația şi în alte ramuri ale științei, astfel că, în
1949 a fost înregistrată prima lor utilizare în descrierea funcționării programelor de calculator.
Astăzi, diagramele de flux sunt utilizate, în principal, în ingineria industrială, controlul calității,
economie și în informatică.

Diagramele de flux sunt compuse dintr-o serie de simboluri grafice, care reprezintă blocurile de
bază ale acestor diagrame. Prin interconectarea acestor simboluri într-o modalitate foarte simplă,
se poate ilustra fluxul unui proces (imaginea 2.2).

Imaginea 2.2. Diagrama de flux care ilustrează procesul unei decizii de zi cu zi

Imaginea 2.2 ilustrează exemplul unei diagrame de flux foarte simple, care prezintă procesul de
luare a unei decizii obișnuite, o decizie zilnică, menționată la începutul acestei lecții. Puteţi observa
că, odată cu formarea diagramei din imaginea 2.2., au fost folosite simboluri de diferite forme,
care sunt interconectate cu linii. Desigur, utilizarea simbolurilor prezentate nu este accidentală.
Simbolurile care pot fi folosite atunci când se creează o diagramă de flux sunt standardizate de
Institutul Național al Simbolurilor Americane (engl. American National Symbols Institute, ANSI) și
de Organizația Internațională pentru Standardizare (engl. The International Organizations for
Standardization, ISO). Cele mai importante simboluri ale diagramei de flux sunt ilustrate în tabelul
2.1.

Simbol Nume Descriere


Este folosit pentru a reprezenta
începutul sau sfârșitul unui
proces sau al unui subproces;
Terminal acest simbol conține de obicei
textul Start sau End, în funcție
de ce reprezintă: începutul sau
sfârșitul unui proces.
Acesta reprezintă orice tip de
operațiune care creează,
Operația modifică, transmite sau șterge
date, afectând, astfel, starea
internă a procesului.
Simbolul prin care se reprezintă
intrarea sau înscrierea datelor; se
utilizează în situațiile în care
este necesar să se modeleze
etapa în care se cere de la
utilizator să introducă unele date
Intrare/Ieşire
necesare pentru funcționarea
algoritmului sau când este
necesar să se afișeze anumite
date pe unul dintre dispozitivele
de ieșire (monitor, imprimantă
etc.).
Ramificaţie Simbol ce conţine o intrare și
două linii de ieșire; odată cu
trecerea prin acest element al
diagramei, va fi folosită
întotdeauna o singură linie de
ieșire; proprietăţile acestui
element pot fi înțelese şi din
analiza numelui lui - ramificare;
acesta este elementul care
permite ca fluxul diagramei să
înceapă de la una din cele două
linii oferite; în felul acesta, se
realizează ramificarea, așa cum
este definită în numele acestui
simbol.
Se foloseşte pentru a indica un
proces, respectiv un set de mai
multe etape, care este
considerată o operație unică; un
Proces astfel de proces este definit în
predefinit avans, într-un alt loc și, de
aceea, se numeşte predefinit; în
cadrul acestui simbol este
indicat numele procesului
predefinit.
Simbol pentru legarea etapelor
succesive ale diagramei; fluxul
implicit al diagramei este de sus
Linia
în jos și de la stânga la dreapta;
fluxului
dacă fluxul diagramei deviază de
la acest standard sunt adăugate
săgeți la liniile fluxului.
Simbol cu care se leagă două
puncte în cadrul diagramei,
atunci când acest lucru nu se
poate realiza prin linii sau când
se poate obține un afişaj mai
Conector
simplu, evitând liniile intercalate
confuze; deoarece leagă două
puncte în diagramă, acest simbol
este utilizat întotdeauna în
perechi cu însemne identice.
Dacă este nevoie să fie incluse
nişte informații sau comentarii
Comentariu suplimentare în diagramă, adică
comentarii, se utilizează acest
simbol.

Tabelul 2.1. Simboluri care sunt folosite la crearea unei diagrame de flux

Acum, când ştim principalele simboluri ale diagramei de bază, putem folosi cunoștințele
dobândite pentru a reprezenta niște algoritmi de bază. Primul algoritm pe care-l vom prezenta
utilizând diagrama fluxului va fi un algoritm pentru adăugarea a două numere. Acesta este unul
dintre cei mai simpli algoritmi de programare a calculatoarelor. Cu o limbă naturală, adică cu
cuvinte simple, un astfel de algoritm ar putea fi descris în felul următor:

colectează valorile primului  și ale celui de-al doilea număr, fă adunarea unor astfel de numere,
arată suma obţinută utilizatorului sau transmite-o în continuare la procesare.
Un astfel de algoritm, formulat într-o limbă naturală, folosind o diagramă de flux, poate fi
reprezentat ca în imaginea 2.3.

Imaginea 2.3. Un algoritm pentru adunarea a două numere reprezentat printr-o diagramă de flux

Diagrama de flux din imaginea 2.3. începe cu un dreptunghi rotunjit sau cu așa-numitul
simbol terminal, care ilustrează începutul diagramei. În interiorul lui este postat un text simbolic
(START), care indică faptul că este vorba despre începutul diagramei.

După simbolul terminal, este indicat simbolul de intrare/ieșire, care, în această situație, este folosit
pentru a introduce valorile. În termeni simpli, pentru a se face adunarea, este necesar să se asigure
un colector. În acest moment, este total irelevant de unde provin astfel de valori, dat fiind faptul
că algoritmul este doar o vedere abstractizată a unei probleme concrete. În realitate, adică în
cadrul unui program de calculator, astfel de valori vor veni de obicei din partea utilizatorului sau
de la logica internă a aplicației înseşi. Cele două numere care urmează să fie adunate, adică cele
două colectoare, sunt reprezentate în cadrul diagramei cu literele x și y.

După introducerea datelor, se trece la procesarea lor și, de aceea, se utilizează simbolul diagramei
de flux care reprezintă operația. Adunarea este cu siguranță unul dintre candidații ideali pentru
marcarea cu simbolul operației. Operația constă din adunarea valorilor numerelor x și y. Suma
acestor două numere este stocată ca valoarea z.
După finalizarea operației de adunare, se foloseşte încă o dată simbolul intrare/ieșire, dar, de
această dată, în contextul ieșirii. Ca ieșire, diagrama de flux emite valoarea z, adică suma
numerelor x și y.

Diagrama de flux se încheie cu simbolul terminal cu textul END, prin care se marchează sfârșitul
diagramei de flux.

Încheiere
Tocmai ați putut vizualiza, pentru prima dată, fluxul unui algoritm simplu. Pentru a efectua o astfel
de activitate ne-au ajutat diagramele de flux. Așa cum s-a spus, diagrama de flux este doar una
dintre modalităţile de a articula algoritmi. De aceea, este foarte important să înțelegeți că
diagramele de flux nu sunt algoritmi. Ele sunt doar o parte a modului de a le prezenta. În
următoarea lecție va fi prezentată încă o modalitate de articulare a algoritmilor, care reprezintă
forma cea mai asemănătoare scrierii codului sursă al unui limbaj de programare. Este vorba de
pseudocod.

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