Sunteți pe pagina 1din 6

1.

Notiunea de algoritm
Istoric. Definitie
Cuvantul algoritm provine de la numele unui matematician arab (Mohammed ibn-Musa alKhowarizmi) a carui lucrari au fost traduse in latina sub numele de Algorismus. Definitia actuala a cuvantului algoritm :

Ansamblu de simboluri folosite n matematic i n logic, permind gsirea n mod mecanic (prin calcul) a unor rezultate. Succesiune de operaii necesare n rezolvarea unei probleme oarecare

Din punctul de vederea al informaticii, algoritmul reprezinta rezolvarea etapizata, in pasi mici, elementari, a unei probleme. Scopul folosirii algoritmului este aplicarea lui la o serie pe probleme care au aceeasi metoda de rezolvare; adica, facand abstractie de valoarea datelor problemei, aceasta sa se rezolve in acelasi mod. Un exemplu in acest sens este acuatia de gradul I. Exista o infinitate de ecuatii de gradul I dar toate se subscriu aceleiasi ecuatii generice A*X^2+B=0. Algoritmul trebuie sa rezolve aceasta ecuatie generica pentru a obtine rezultate corecte pentru intreaga clasa se ecuatii de gradul I.

Caracteristici
Deducem de aici o serie de proprietati pe care un algoritm corect trebuie sa le indeplineasca:

sa aiba caracter de generalitate: sa rezolve o intreaga clasa de probleme de acelasi gen (pentru orice date de intrare) sa aiba finitudine: sa ofere un raspuns la problema si sa se incheie in timp util sa fie clar: calculul/etapele sa fie descriese intr-o maniera fara dubii DATE DE INTRARE -> ALGORITM -> DATE DE IESIRE

Reprezentarea algoritmilor
S-au identificat cateva structuri folosite in descrierea unui algoritm:

secventa: pasii sa se execute unul dupa altul testul: in cazul in care rezolvarea trebuie sa raspunda unei intrebari sa putem aplege traseul logic ce trebuie urmat repetitia: sa putem repeta o anumita secventa daca algoritmul o cere
1

De asemeni s-a incercat o metoda universala (care sa poata fi inteleasa de toti) pentru exprimarea algoritmilor. Iata cateve dintre ele:

scheme logice: metoda grafica care specifica traseul ce trebuie urmat pseudocod: un set de reguli de scriere , in principiu in limba engleza; pt elevi s-a simplificat, folosindu-se aceleasi notatii si limba romana (o varianta care se poate folosi in laborator gasiti la http://www.haskell.org/haskellwiki/Rodin) limbaj de programare: mult mai strict ca exprimare dar folosind aceleasi concepte.

2.Pseudocod. Date. Expresii


Cuvantul pseudocod provine din pseudo, care inseamna fals, si cod care se refera la textul scris intr-un limbaj de programare. Deci pseudocod inseamna un asa-zis limbaj de programare. Pseudocodul, ca orice limbaj, foloseste date, variabile, operatii si instructiuni. Pentru doritori, va prezint o varianta de pseudocod apropiata de cea din manual, limbajul Rodin a domnului profesor Dan Popa de la Univeristatea Bacau. In acest fel puteti pigmenta orele de informatica din clasa a 9-a si cu ore de laborator.

Date
Datele cu care lucreaza un algoritm (scris in pseudocod) sunt:

valori intregi: 12, -5, 17 valori reale: 3.14, -1005.25, ; observati ca folosim punct zecimal si nu virgula ca in notatia de la matematica valori logice: adevarat (true) si fals (false) siruri de caractere: introdu valoarea:, rezultatul este:

Variabile
O variabila este un simbol care se caracterizeaza prin:

nume; se noteaza cu combinatii de litere sau cifre dar intotdeauna primul caracter este litera: a, Beta, nr1, nr2 tip de data: intreg, real, sir de caractere, logic valoare: functie de tipul de data asociat, o variabila poate avea valori din cele de mai sus; valoarea memorata se poate schimba, de unde si numele de variabila;

Practic, o variabila se comporta ca o cutie ce poate fi folosita doar pentru ceva anume: valorile intregi in cutii pentru valori intregi si valori reale in cutii pentru valori reale; doar nu puneti zahar intr-o cutie de pantofi. .

Din acest motiv, la inceputul algoritmului nostru in pseudocod trebuie sa specificam cu ce variabile lucram si ce tip au, ca in exemplul de mai jos: intreg m,n real x,y.z logic ok, exista, este

Expresii
Expresiile sunt foormate din operatori si operanzi. Formeaza expresie urmatoarele

o variabila variabila operator variabila expresie operator expresie operator expresie (cazul operatorilor unari de genul - (5+3) )

Dintre operatorii folositi vom vorbi acum numai de cei intregi (care se folosesc numai pentru operanzi intregi):

semnul - se foloseste pentru scaderi sau ca operator unar semnul + se foloseste pentru adunari semnul * se foloseste pentru inmultiri semnul / se foloseste pentru impartiri semnul % se foloseste pentru a obtine restul impartirii primului operand la cel de al doilea o a % b = restul impartirii lui a la b o a % 2 = restul impartirii lui a la 2, care este 1 daca a este impar si 0 daca a este par o a % 10 = restul impartirii lui a la 10, care este intotdeauna ultima cifra a lui a, cifra unitatilor prioritatea operatiilor este aceeasi ca in matematica; mai intai inmultirile si impartirile si apoi adunarile si scaderile se pot folosi si paranteze pentru expresiile mai complicate, dar numai perechide paranteze rotunde atentie la ordinea operatiilor si folosirea parantezelor rotunde (ex. ecuatia de gradul 2): o x1=-b+ radical(b*b-4*a*c)/2*a o x1=(-b+ radical(b*b-4*a*c))/2*a o x1=(-b+ radical(b*b-4*a*c))/(2*a) care din variantele de mai sus este corecta? o prima imparte numai radicalul la 2, rezultatul este inmultit cu a si apoi se efectueza scaderea o al doilea exemplu pune parantezele pentru numarator dar imaprte numai la 2, rezultatul impartirii fiind inmultit cu a o abia ultima varianta separa numitorul si numaratorul prin paranteze
3

3.Instructiuni intrare/iesire. Atribuirea


Instructiuni de intrare iesire
Asa cum am vazut in lectiile anterioare schema fluxului de date in rezolvarea unei probleme este urmatoarea: Date de intrare -> Algoritm -> Date de iesire (Rezultate) Deducem ca aven nevoie de o metoda de a prelua datele initiale (ale problemei reale) pentru a le putea prelucra in algoritm. De asemenea, Avem nevoie de o metoda de a transmite rezultatul calculului nostru. Pentru preluarea datelor vom folosi instructiunea Citeste.

Sintaxa: Citeste variabila; Exemplu: Citeste a; Efect: Se citeste o valoarea care va fi memorata in variabila a Observatii: o pentru intreg n; citeste n , nu putem introduce o valoare reala (3.14) deoarece variabila n este declarata ca fiind intreaga

Pentru afisarea rezultatului vom folosi instructiunea Scrie:


Sintaxa: Scrie expresie Exemplu: Scrie a Efect: o instructiunea Scrie afiseaza valoarea expresiei o presupunand ca ceea ce se scrie este transmis care monitor, atunci prima instructiune scrie afiseaza sirul de caractere Rezultatul problemei iar cea de a doua afiseaza valoarea memorata in variabila a la acel moment Observatii o pentruafisarea unor texte folosim text acesta este mesajul o instructiunea scrie afiseaza valoarea expresiei; atunci o instructiune de tipul Scrie a+b va afisa valoarea calculata a expresiei a+b; adica se aduna valoarea lui a cu valoarea lui b si se afiseaza rezultatul expresiei

Pana acum, cel mai complicat algoritm pe care il putem scrie este cel de adunare a doua valori intregi: Intreg a, b; Citeste a, b; Scrie a+b.

Atribuirea
Pentru a schimba valoarea unei variabile pot folosi citirea. Daca totusi doresc ca variabila sa primeasca valoarea unei expresii calculate pe parcursul algoritmului, atunci am nevoie de atribuire:

Sintaxa: variabila<- expresie; Efect: In cutia variabilei se memoreaza valoarea expresiei; Exemplu: o intreg a; a<- 10; o real b; b<- 3.14; o sir c; c<- totul e ok; Observatie: o noua valoare se memoreaza peste vechea valoare care se va pierde; adica, se inloceste vechea valoare cu cea noua o in fiecare din exemple in variabila se memoreaza o valoare de acelasi tip cu variabila; nu putem memora intr-o variabila o valoare de alt tip: secventa intreg a; a<-3.14; scrie a; nu este corecta; variabila a este de tip intreg si nu poate memora o valoare reala. secventa real a; a<- +10; este corecta deoarece valoarea intreaga 10 este si valoare reala, conform incluziunii matematice. greselile frecvente sunt cele in care valori obtinute in urma unor impartiri sau radicali (valori reale) sunt atribuite unor variabile intregi o operatiile cele mai de intalnite la atribuire sunt incrementarea (marirea cu 1 a valorii variabilei) si decrementarea (micsorarea cu 1 a valorii variabilei) o incrementarea: a<- a+1; asa cum stim , intai se calculeaza valaorea expresiei (cresterea cu 1 a lui a) si apoi se memoreaza in variabila, peste vechea valoare o decrementarea: a<- a-1; se calculeaza valoarea expresiei (scadereacu 1 a lui a) si apoi se memoreaza in variabila, peste vechea valoare

Exemplul 1: calculul vitezei, atunci cand stim valoarea distantei parcurse si timpul necesar;

real viteza; intreg timp, distanta; citeste timp, distanta;


5

viteza <- distanta/timp; scrie viteza.

Exemplul 2 (interschimbarea a doua variabile folosind auxiliar). Fie doua variabile intregi. Sa se interschimbe valorile variabilelor. Daca variabila a are valoarea 5 si variabila b are valoarea 7, dupa executarea algorimului, variabila a sa aiba valoare 7 si variabila b sa aiba valoare 5.

intreg a, b, aux; citesc a, b; aux<-a; a<-b; b<-aux; scrie a, b. observatie: problema este similara cu urmatoarea problema. Aveti un pahar de bere (rolul variabilei a) si o halba de suc (rolul variabilei b). Pentru a schimba bauturile aveti nevoie de o cana goala (rolul variabilei aux); o turnam in cana goala continutul paharului o turnam in pahar continutul halbei o turnam in halba continutul canii o acum toate sunt in ordine; berea in halba si sucul in pahar si gana este goala; NU BEM DECAT SUCUL!

Exemplul 2 (interschimbarea valorii a doua variabile fara auxiliar). Avem aceeasi problema dar trebuie rezolvata fara o variabila in plus.

intreg a, b; citeste a,b; a <-a+b; b<-a-b; a<-a-b; scrie a,b.

S-ar putea să vă placă și