|
Algoritmul este un mod prin care o transformare este descrisa sistematic si conditional in desfasurarea sa.
Transformarea impune de obicei folosirea unor
valori numite date de intrare sau parametrii de intrare pe care algoritmul le
transforma in rezultate sau date de iesire.
Algoritmii au urmatoarele caracteristici:
generalizare: adica sunt conceputi pentru a rezolva cu succes mai multe probleme care au o cale de rezolvare asemanatoare
determinism: adica obtinerea de rezultate identice pentru valori de intrare identice
finitudine: procesul de prelucrare se termina dupa un numar finit de pasi; (exista cazuri in care programele scrise nu respecta aceasta conditie ceea ce conduce la bucla infinita)
claritate: toate actiunile sau conditionarile din algoritm sunt clar specificate
Exemplu:
Rezolvarea unei ecuatii de gradul I
Analiza problemei: Forma generala a unei ecuatii de gradul I este ax+b=0.
Date de intrare: a si b.
Date de iesire: radacina x a ecuatiei sau un mesaj ('x real' sau 'nu exista solutie' sau 'Exista o infinitate de solutii')
Procesul prelucrarii datelor de intrare poate fi descris astfel:
PAS 1. Se citesc valorile coeficientilor a, b;
PAS 2. Daca a=0 si b=0 atunci se 'Exista o infinitate de solutii';
PAS 3. Daca a=0 si b<>0 atunci se afiseaza 'nu exista solutie';
PAS 4. Daca a<>0 atunci solutia este x=-b/a;
PAS 5. Afiseaza valoarea lui x;
Pentru a reprezenta un algoritm putem alege orice model care repezita dezideratele aratate mai sus. Algoritmul din exemplul anterior a fost reprezentat prin pseudo cod. Pseudo codul este un mod de a descrie liber (fara ingradiri) a unui algoritm. El este apropiat de limbajul natural si de aceea este un excelent mod de a explica un algoritm. Din exemplul de mai sus reiese cu claritate finitudinea algoritmului si eficacitatea acestuia. Este un algoritm generalizat deoarece este conceput pentru a rezolva orice ecuatie de gradul I. Pentru a putea fi generalizata, orice solutie algoritmica are nevoie de a in cadrul algoritmului trebuie sa poata accepta date de intrare, de a le prelucra si de a le afisa ca rezultate. Aceste lucruri nu sunt posibile decat daca datele pot fi 'memorate'. Cea mai folosita cale de a memora si identifica date este aceea de a folosi variabile.
O variabila este o zona identificabila de memorie a carei valoare poate fi modificata prin actiunile algoritmului.
Caracteristicile variabilelor sunt
identificarea de obicei realizata printr-un nume (format dintr-o insiruire de litere si cifre);
tip de date. Este indicat ca sa se cunoasca ce fel de date vor fi memorate de catre variabila. Unele limbaje de programare (in special interpretoare) admit existenta unui tip de date variabil adica variabila poate in perioada sa de definitie sa-si modifice tipul.
zona de memorie care va contine valoarea la un moment dat a variabilei. Dimensiunea rezervata pentru o variabila este de obicei in functie de tipul de data pe care il contine. Localizarea exacta a zonei de memorie este de obicei cunoscuta doar in momentul executiei programului.
Variabila isi poate schimba valoarea pe parcursul parcurgerii algoritmului, dar la un moment dat o variabila nu poate avea decat o singura valoare. Valoarea variabilei poate fi utilizata de catre algoritm prin intermediul numelui: oriunde apare numele unei variabile se intelege de fapt valoarea pe care aceasta o are la momentul respectiv.
Prin tip de date se intelege gruparea datelor asemanatoare ca domeniu de definitie sub un nume numit identificator de tip de date. In general, tipurile de date utilizate in informatica sunt submultimi ale multimilor cunoscute din matematica. Limitarea plajei de valori este datorata caracterului finit al zonei de memorie folosite memorare. De exemplu, in limbajul C++ sunt utilizate, printre altele, urmatoarele tipuri:
int: valori intregi intre -32767 si 32768 (memorare pe 2octeti);
long int: valori intregi intre -2147483648 si 2147483647 (memorare pe 4octeti)
Unii autori considera inclusa in definitia tipului de date si multimea operatorilor si functiilor care se pot aplica elementelor tipului respectiv. De exemplu, pentru un tip intreg, exista operatii specifice: impartirea intreaga si modul aritmetic (restul impartirii intregi).
Prin constanta intelegem o valoare fixa, care nu se modifica de-a lungul aplicarii unui algoritm. Constantele se reprezinta uzual printr-o valoare efectiva:
3, -2, -123, 9452 sunt constante intregi
3.456, 2.000, 3.4000E+10 sunt constante reale
'a', 'B', '&' sunt constante de tip caracter
'ecuatia are o infinitate de solutii !' este o constanta sir de caractere