Noțiunea de algoritm

Algoritmul este o succesiune finită de operații care se execută într-o ordine bine definită, astfel încât, pornind de la un set de date de intrare ce îndeplinesc anumite condiții, se obține un set de date de ieșire.

Pentru a înțelege această definiție aparent pretențioasă propun un exemplu foarte practic: rețeta pentru o prăjitură. Ingredientele vor reprezenta datele de intrare, amstecarea lor, pe rând, și coacerea, sunt operațiile ce trebuie efectuate pentru a obține prăjiturie, datele de ieșire.

Acum un exemplu mai teoretic: rezolvarea ecuației ax+b=0, cu parametrii a și b, a nenul, și necunoscuta x. Înainte de a trece mai departe doresc să evidențiez claritatea cu care este fromulată problema. În acest caz, datele de intrare sunt cei doi parametri a și b, operația care trebuie efectuată este atribuirea x=-a/b, iar data de ieșire este x.

Nu mai este decât un singur pas de făcut până când această problemă se poate rezolva pe un calcuator: să ințelegem cum interacționează calculatorul cu datele, iar diagrama de mai jos este foarte utilă în acest sens.Programul primește datele de intrare se la utilizator prin intermediul tastaturii sau a unui fișier, le prelucrează, urmând pașii impuși de utilizator, iar apoi returnează datele de ieșire afișându-le pe ecran sau scriindu-le într-un fișier.

Vom discuta acum câteva proprietăți importante ale algoritmilor:

  • caracterul determinist: furnizându-i-se un anumit set de date de intrare, algoritmul va genera mereu aceleași date de ieșire; această condiție nu va fi respectată în algoritmi în care intervin numere generate aleator.
  • generalitatea: proprietatea algoritmului de a rezolva o clasă largă de probleme. Altfel spus, în cazul algoritmului descris mai sus pentru rezolvarea ecuatiei de gradul I, algoritmul trebuie să poată rezolva ecuația pentru orice a și b citit de la tastatură (respectând precizarea de a nenul); un algoritm greșit ar ignora valoarea citită de la tastatură a unuia dintre parametri, adică ar rezolva ecuația 4x-2=0, chiar dacă de la tastatura s-ar cere rezolvarea ecuației 2x-17=0.
  • claritatea: algoritmul trebuie să descrie cu exactitate pașii care sunt parcurși în rezolvarea problemelor; această proprietate este importantă deoarece, la un moment dat, algoritmii vor deveni foarte stufoși și trebuie să înțelegi ușor ce face fiecare instrucțiune.
  • finitudinea: algoritmul trebuie să se termine într-un număr finit de pași; un algoritm care intră la un moment dat într-un ciclu infinit este greșit.

Odată ce am creat un algoritm care respectă proprietățile de mai sus, putem începe să redactăm programul care va rezolva problema dată.

Probabil că algoritmul descris mai sus este prea simplu ca să se înțeleagă mult din el, de aceea propun analizarea a altor doi algoritmi:

  1. Rezolvarea ecuației ax+b=0, oricare ar fi a. Pentru această problemă, sunt două cauri de analizat:
  • a nu este 0, caz în care soluția este unică și egală cu x=-b/a
  • a=0, caz în care ecuația de rezolvat devine b=0, deci de deosebesc două posibilități:
    • b=0, iar orice valoare a lui x este soluție a ecuației
    • b diferit de 0, iar ecuația nu are soluții.

Algoritmul care rezolvă ecuația de gradul 1 va arăta astfel:

  • Dacă a=0:
    • Dacă b=0, orice e soluție
    • Altfel, ecuația nu are soluții
  • Atfel, ecuația are soluția unică x=-b/a

Similar se poate găsi un algoritm care determină soluțiile ecuației de gradul al doilea, lucru pe care îl recomand ca exercițiu. Formulele de rezolvare a ecuației de gradul al doilea le găsiți aici.

În cursul următor vom discuta despre limbajul C++ și structurile de bază ale acestuia. Îl puteți găsi aici.

Un gând despre “Noțiunea de algoritm”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

iunie 2018
L Ma Mi J V S D
 123
45678910
11121314151617
18192021222324
252627282930