Noţiuni generale
Noţiunea de algoritm este primară, nu se defineşte, întocmai ca şi noţiunea de mulţime în matematică. Cu toate acestea, ca şi mulţimea, algoritmul poate fi descris. în esenţă, este vorba de o succesiune de etape care se pot aplica mecanic în vederea obţinerii unui anumit rezultat. în activitatea cotidiană întâlnim la tot pasul algoritmi. Vom da câteva exemple.
1. Algoritmul prin care o persoană dă un telefon. Persoana ridică receptorul, aşteaptă tonul. Dacă nu vine tonul, închide telefonul, apoi îl redeschide. După apariţia tonului formează numărul, etc. Nu îmi propun să descriu amănunţit algoritmul prin care se dă un telefon pentru că este mult prea cunoscut, dar atrag atenţia asupra faptului că se poate descrie foarte bine, astfel încât persoana poate executa mecanic operaţiile necesare.
2. Algoritmul prin care o persoană poate găti un anumit fel de mâncare. Persoana are la dispoziţie făină, zahăr, ouă etc. pe care le combină în anumite proporţii, după care amestecul obţinut se fierbe (se prăjeşte sau se pune în cuptor) un anumit interval de timp. Produsului obţinut i se mai poate adăuga câte ceva, după care este din nou fiert (prăjit) un interval de timp, după care se obţine produsul finit, adică mâncarea dorită.
3. Algoritmul prin care se adună două fracţii. Cele două fracţii se aduc la acelaşi numitor, se fac înmulţirile, adunările, apoi fracţia este simplificată.
Oricare din algoritmii de mai sus poate fi descris în termeni precişi, astfel încât cel care-l execută poate efectua operaţiile fără să fie nevoit să gândească ce are de făcut la un anumit moment.
O analiză sumară a exemplelor ne conduce la următoarele observaţii:
> in orice algoritm se porneşte de la ceva şi se doreşte obţinerea unui anumit rezultat.
• Dăm un telefon pentru ca un anumit mesaj să ajungă la destinaţie. Se porneşte de la un mesaj şi se doreşte ca acesta să ajungă la o anumită persoană.
• Dacă dorim să gătim un anumit fel de mâncare, pornim de la anumite produse şi obţinem mâncarea solicitată.
• Dacă adunăm două fracţii, pornim de la cele două fracţii şi obţinem suma lor.
în orice algoritm se operează cu anumite "obiecte" asupra cărora sunt permise anumite operaţii.
• Algoritmul prin care dăm un telefon operează cu telefonul. Operaţiile permise sunt deschiderea, închiderea telefonului, formarea numărului etc.
• Algoritmul prin care se obţine un anumit fel de mâncare operează cu farfurii, tăvi, aragaz, alimente, etc. Operaţiile permise sunt amestecarea, fierberea, prăjirea alimentelor.
• Algoritmul prin care se adună două fracţii operează cu valori numerice. Operaţiile sunt cele descrise de regulile matematice.
> în cele mai multe cazuri cel care elaborează algoritmul este diferit de executant.
• Pentru a putea fi aplicat algoritmul prin care se dă un telefon a fost necesară inventarea telefonului, gândirea modului în care cineva dă uşor un telefon. O mulţime de personalităţi au gândit toate acestea, dar algoritmul poate fi aplicat de orice persoană care ştie cifrele între 0 si 9.
• Pentru a putea fi aplicat algoritmul prin care se obţine un anumit fel de mâncare au fost făcute numeroase experimente care au condus până la urmă la o reţetă. Poate găti orice persoană care ştie să citească şi să folosească aragazul.
• Pentru a putea aduna două fracţii a fost necesar ca matematica să se dezvolte suficient de mult. Să nu uităm că oamenii au lucrat mult timp doar cu numere naturale...
Din cele de mai sus, rezultă că noţiunea de algoritm este extrem de generală, cu ea ne întâlnim tot timpul. în această carte ne ocupăm numai de elaborarea algoritmilor pentru programarea calculatoarelor. Aici "executantul" este calculatorul, iar cel care elaborează algoritmul poartă numele de "programator". Calculatorul doar execută instrucţiuni, nu gândeşte, dar viteza de executare a instrucţiunilor este foarte mare, imposibil de atins de om. Frecvent, mai intervine o persoană, de cele mai multe ori diferită de programator, numită "utilizator". Ea este cea care utilizează programul obţinut şi beneficiază de avantajele lui. De cele mai multe ori, o astfel de persoană are o pregătire minimă de specialitate în informatică. Din păcate, se face deseori confuzia între programator şi utilizator.