Algoritm . Caracteristici . Exemple
5Ce este acela un algoritm ?
Pentru a putea rezolva o problema, in informatica, avem nevoie de o succesiune de instructiuni clare si bine definite transpuse intr-un limbaj de programare. Instructiunile trebuie sa respecte anumite reguli impuse de limbajul de programare folosit. Fiecare dintre acestea detine propriul set de reguli, care nu este compatibil cu un alt limbaj de programare, in majoritatea cazurilor. De exemplu, nu putem folosi aceeasi linie de cod pe care o utilizam in Pascal si in C++, deoarece Pascal are propria ortografie si C++ la fel.
Succesiunea de instructiuni explicite si bine definite aranjate dupa anumite reguli poarta denumirea de algoritm.
Un algoritm foloseste date de intrare si furnizeaza date de iesire. In interiorul sau, se mai pot folosi date intermediare.
Iata si cateva proprietati ale algoritmilor:
- Finititudinea. Este una dintre proprietatile importante ale algoritmilor si consta in faptul ca dupa un anumit numar de pasi procesul trebuie sa se incheie.
- Generalitatea. Un algoritm trebuie sa poata rezolva nu numai o problema particulara, ci o categorie  de probleme.
- Optimalitatea. Un algoritm trebuie sa se execute intr-un numar cat mai mic de pasi pentru a se obtine un timp de executie cat mai mic alaturi de un consum mic de memorie. De exemplu, pentru a putea testa daca un numar este prim, este nevoie sa parcurgem doar de la 1 pana la n/2, unde n este numar testat. Pe cand daca am parcurge toate numerele pana la n – 1, ar dura mai mult si algoritmul nu ar fi optim.
- Un algoritm va avea intotdeauna cel putin o data de iesire ce este legata de datele de intrare.
Sa speram ca ati inteles ce este acela un algoritm si care sunt proprietatile de baza ale acestui. Asadar, sa dam un exemplu de algoritm.
- Algoritmul de interschimbare a 2 valori. Sa luam un exemplu din viata de zi cu zi. Â Avem 2 Â pahare. Intr-unul avem compot si in celalalt avem iaurt. Noi dorim sa le schimbam intre ele, astfel ca in paharul in care era compot sa fie iaurt, iar in cel de iaurt sa fie compot. Nu putem sa facem aceasta operatiune fiindca am amesteca iaurtul cu compot si nu e bine de stomacul nostru. Asadar, avem nevoie de un pahar in plus pentru a depozita temporar una dintre ele. Deci, primul pas va consta in punerea iaurtului in paharul auxiliar(ajutator). Acum, avem paharul auxiliar plin cu iaurt, compotul este tot in paharul sau, dar paharul de iaurt este gol. Pasul doi, punem compotul in paharul de iaurt => paharul de iaurt este cu compot, paharul de compot este gol, iar paharul ajutator este cu iaurt. Ce mai ramane de facut este sa rasturnam paharul auxiliar(ce contine iaurt) in paharul de compot. Astfel, am interschimbat continutul celor 2 pahare.
Poate va intrebati unde este algoritmul ? Tocmai l-am elaborat in limbaj natural. Respecta conditiile ? 1. Se repeta intr-un numar finit de pasi(3). 2.Este optim, adica facem numarul minim de pasi necesari. 3. Avem date de iesire, cele 2 pahare. Avem si o data intermediara, care este paharul auxiliar. Tot ce mai ramane sa facem este sa-l transpunem intr-un limbaj de programare invatat.
In Pascal:
program interschimbare;
var pahar1, pahar2, pahar_aux: integer;
begin
writeln(„Dati cele 2 valori”);
readln(pahar1);
readln(pahar2);
pahar_aux := pahar1;
pahar1 := pahar2;
pahar2 := pahar_aux;
writeln(„Cele 2 valori s-au interschimbat: pahar1 = „,pahar1, ” , pahar2 = „, pahar2);
end.
In C++:
#include <iostream>; int main() { std::cout << "Dati cele 2 valori" << std::endl; int pahar1, pahar2; std::cin >> pahar1; std::cin >> pahar2; int pahar_aux; pahar_aux = pahar1; pahar1 = pahar2; pahar2 = pahar_aux; std::cout <<"Cele 2 valori s-au interschimbat pahar1 = "<< pahar1 << ", pahar2 = " << pahar2 << std::endl; }
Cam astia-s pasii pe care trebuie sa ii urmam in rezolvarea unei probleme:
- Stabilim datele de intrare
- Stabilim datele de iesire
- Stabilim date intermediare
- Rezolvam problema in limbaj natural
- „Traducem” problema in limbaj de programare
Probleme, necazuri, suparari daca aveti, nu ezitati sa le spuneti.
Puteti citi si variabile, constante si expresii in C++/Pascal care este o continuare a acestui articol.
Interschimbarea se poate face prin mai multe moduri :
XOR : a^=b^=a^=b;
Adunari/Scaderi : a += b; b = a-b; a-= b;
Cine-i bamboocha? 🙂
A new WorldIT Writter 😀 Curand va fi prezentat 🙂
Cati ani ai baiatasule?
Habar n-ai pascal, acum fara suparare…
baiiii pana la urma toata viata e un algoritm…