0% au considerat acest document util (0 voturi)
291 vizualizări12 pagini

Algoritmi

Documentul prezintă conceptul de algoritm și modurile de reprezentare a acestuia. Algoritmul este o procedură pentru rezolvarea unei probleme și este esențial atât în viața de zi cu zi, cât și în programare. Diagramele de flux și pseudocodul sunt metode populare de a reprezenta algoritmi.

Încărcat de

Maxim
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
291 vizualizări12 pagini

Algoritmi

Documentul prezintă conceptul de algoritm și modurile de reprezentare a acestuia. Algoritmul este o procedură pentru rezolvarea unei probleme și este esențial atât în viața de zi cu zi, cât și în programare. Diagramele de flux și pseudocodul sunt metode populare de a reprezenta algoritmi.

Încărcat de

Maxim
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 12

Î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 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, obligație, obstacol sau î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 învățatului ș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 aplicate î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 v-ați întrebat probabil 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 independente de


limbajul de programare, respectiv de tehnologia care va fi utilizată
pentru implementarea unor astfel de algoritmi. De aceea, este necesar
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 precis definită 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
utilizată una dintre modalităţile utilizate î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.

Diagrama de flux Flowchart

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


Terminal

Este folosit pentru a


reprezenta începutul
sau sfârșitul unui
proces sau al unui
subproces; acest
simbol conține de
obicei
textul Start sau End, în
funcție de ce
reprezintă: începutul
sau sfârșitul unui
proces.

Operaţia Acesta reprezintă orice


tip de operațiune care
creează, modifică,
transmite sau șterge
date, afectând astfel
starea internă a
procesului.
Intrare/Ieşire 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
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.
Proces predefinit Se foloseşte pentru a
indica un proces,
respectiv un set de mai
multe etape, care este
considerată o operație
unică; un astfel de
proces este definit în
avans, într-un alt loc și
de aceea se numeşte
predefinit; în cadrul
acestui simbol este
indicat numele
procesului predefinit.
Linia fluxului Simbol pentru legarea
etapelor succesive ale
diagramei; fluxul
implicit al diagramei
este de sus în jos și de
la stânga la dreapta;
dacă fluxul diagramei
deviază de la acest
standard, sunt
adăugate săgeți la
liniile fluxului.
Conector 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 simplu,
evitând liniile
intercalate confuze;
deoarece leagă două
puncte în diagramă,
acest simbol este
utilizat întotdeauna în
perechi cu însemne
identice.
Comentar Dacă este nevoie să fie
incluse nişte informații
sau comentarii
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. În descrierile unui algoritm este
recomandabil ca numele unei variabile să fie ales adecvat cu
semnificaţia logică a acesteia, şi mai precis cu semnificaţia valorilor pe
care această variabilă le poate lua.

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