Sunteți pe pagina 1din 8

Notiunea de algoritm

Un algoritm reprezinta o metoda de rezolvare a problemelor de un anumit tip. A rezolva o problema inseamna a obtine date de iesire pe baza datelor de intrare in urma aplicarii algoritmului. Algoritmul este o succesiune de operatii care descriu pas cu pas modul de obtinere al datelor de iesire. Ex: repararea unei pene de cauciuc 1. Se scoate cricul din portbagaj. 2. Se slabeste fiecare piulita. 3. Se monteaza cricul in piesa de prindere. 4. Se ridica masina. 5. Daca roata de rezerva este umflata, atunci se monteaza roata altfel se umfla roata. 6. Se strange fiecare piulita. 7. Se coboara masina. OBS: In algoritm exista 3 tipuri de structuri: Secventiala: se enumera pasii etapei respective Conditionala: daca e indeplinita o conditie, se realizeaza prelucrarea Repetitiva: de un nr. de ori se realizeaza prelucrarea

Proprietatile caracteristice ale algoritmilor


1. Claritate: la fiecare moment, operatia care urmeaza trebuie sa fie unic determinata, definita si realizabila. 2. Generalitate: o secventa reprezinta un algoritm daca se obtin date de iesire pt. orice date de intrare specifice problemei. 3. Finititudine: rezultatul se obtine dupa un nr. finit de pasi. OBS: Exista algoritmi literativi: descriu la fiecare pas prelucrarea care se executa algoritmi recurisivi o prelucrare comuna care se executa la fiecare pas un pas sau mai multi diferiti reprezinta conditii de oprire pt. a respecta principiul finititudinii

Date
Orice algoritm prelucreaza date de intrare si ofera date de iesire. Datele de iesire se numesc rezultatele problemei. Algoritmul poate utiliza date intermediare necesare stocarii temporare a rezultatelor intermediare. constante au o valoare care nu poate fi modificata ulterior variabile au continutul variabil. El poate fi suprascris printr-o operatie cu alta valoare (vechea valoare se pierde). In functie de valoarea lor, variabilele sunt: - date numerice - date alfabetice - date logice Datele au o caracteristica foarte importanta: tipul de data = o conventie cu privire la multimea valorilor posibile si operatorii caracteristici. In contextul limbajelor de programare apare si lungimea si organizarea zonei de memorie. Aceste caracteristici sunt strans legate, deoarece din lungimea zonei de memorie se determina multimea valorilor posibile pt. datele de tip intreg. O variabila trebuie definita inainte de a fi utilizata. Definirea se face cu sintaxa:

Datele:

tip data

nume variabila

ex: intreg a s-au definit variabilele real b a de tip intreg si b de tip real. Obs: Valorile asociate variabilei trebuie sa fie de tipul respectiv! ex: a=3 corect a= 3,69 incorect Obs: Operatiile tipice pt. variabile sunt: - atribuirea - citirea de la tastatura - afisarea - utilizarea in expresii

Expresii = combinatii valide de operanzi si operatori.


- se evalueaza la un rezultat de un anumit tip. Tipul rezultatului tipul expresiei 1. Operanzi = valori (constante, variabile) 2. Operatori = simboluri speciale, capabile sa efectueze operatii specifice. - au grade de prioritate diferite. La evaluare se aplica operatorul cu prioritate maxima, urmeaza operatorul care a devenit cu prioritate maxima. Ordinea de evaluare poate fi schimbata prin utilizarea parantezelor. 2.1. Aritmetici - multiplicativi - inmultire * - impartire / . Are efect diferit in functie de tipul operanzilor. Daca ambii operanzi sunt intregi rezultat intreg. Daca un operand este real rezultat real. - restul impartirii intregi % - aditivi - adunare + - scadere

2.2. Relationali descriu relatiile de ordine sau de egalitate intre operanzi = > > < < 2.3. Logici - negatia logica - si logic - sau logic TABELUL DE ADEVAR x Fals Fals Adevarat Adevarat y Fals Adevarat Fals Adevarat !x adevarat Adevarat Fals Fals x sau y Fals Adevarat Adevarat Adevarat x si y Fals Fals Fals Adevarat

GRADELE DE PRIORITATE Prioritate 1. 2. 3. 4. 5. 6. Operatori Negatia logica Aritmetici multiplicativi Aritmetici aditivi Relationali Conjunctia logica Disjunctia logica Simbol ! *, /, % +, =, = si sau Asociativitate De la dreapta la stanga De la stanga la dreapta De la stanga la dreapta De la stanga la dreapta De la stanga la dreapta De la stanga la dreapta

Reprezentarea algoritmilor Principiile programarii structurate


Programarea structurata a aparut in anii 70, datorita cresterii complexitatii aplicatiilor. A adus o serie de principii si tehnici inovative (modularizarea). Modularizarea permite impartirea problemei in subprobleme mai mici si complexitate mai redusa. Aceste probleme erau rezolvate de echipe diferite de programatori si rezultatele erau combinate in scopul rezolvarii problemei initiale. Structurarea datelor si prelucrarilor permite gruparea datelor in anumite zone de program, dar si descrierea si utilizarea unei structuri de date proprii. Structurarea prelucrazilor se utiliza prin utilizarea modulelor si a subpragramelor. Este un principiu important, deoarece orice program se poate scrie prin secvente liniare,alternative si repetitive.

Descrierea algoritmilor
Un algoritm de rezolvarea presupune stabilirea pasilor necesari, care pot fi descrisi intr-un limbaj de programare, dar nu toti cunosc acel program si niciun program nu s-a impus ca fiind singurul utilizat de catre programatori. S-au impus niste metode generale de descriere a algoritmilor independete de limbajele de programare. Programele se scriu pe baza acestor descrieri. Cele mai importante metode sunt:

1. Pseudocod-ul reprezinta un set restrans de cuvinte in romana sau engleza asociate unor operatii. Astfel
Cuvintele utilizate sunt: intreg, real, citeste, scrie, daca, atunci, altfel, sfarsit daca, pentru, sfarsit pentru, cat timp, sfarsit cat timp, executa, sfarsit executa. 2. Schema logica reprezinta reprezentarea grafica alea prelucrarilor (un set de simboluri grafice) Start tttttt tttt Stop - punctul de pornire al algoritmului - prelucrare - scrierea si citirea variabilelor - blocul conditional testarea unei conditii

- punctul de oprire al algoritmului

Cond

Structura secventiala
permite executarea unor prelucrari in ordinea precizata (ele nu se executa conditionat sau repetitiv) ex: Se citesc 2 valori. Interschimbati valoarea si afisati valorile rezultate. Pseudocod intreg a,b,aux citeste a,b aux=a a=b b=aux scrie a,b Schema logica
Start intreg a,b,aux

Citeste a,b aux=a a=b b=aux Scrie a,b

Stop

Structura alternativa
permite efectuarea unei prelucrari in functie de valoarea unei conditii 1. Decizia permite executarea unei prelucrari daca o conditie este indeplinita daca cnd atunci nu da P Cnd=T sfarsit daca
P

- Mecanism de functionare: se evalueaza conditia sau expresia la o valoare logica. Daca e adevarata se executa prelucrarea P; daca nu, nu se executa nimic. ex: Se citeste media unui elev. Afisati daca este promovat. Pseudocod real med citeste med daca med >= 5 atunci scrie promovat sfarsit daca

Schema logica
Start

Citeste med

nu
Med > 5

da
Scrie promovat

Stop

2. Selectia permite executarea unei prelucrari din 2 posibile la un moment dat, in functie de valoare unei
conditii. daca cnd atunci P1 altfel P2 sfarsit daca - Mecanism de functionare: se evalueaza conditia la o valoare logica. Daca este adevarata, se executa prelucrarea P1; daca nu, se executa prelucrarea P2. ex: Se citeste media unui elev. Afisati daca este promovat sau nepromovat. Pseudocod real med citeste med daca med >= 5 atunci scrie promovat altfel scrie nepromovat sfarsit daca nu
P2 Cnd=T

da
P1

Schema logica
Start

Citeste med

nu
Med > 5 nepromovat

da
promovat

Stop

OBS: Atat pentru decizie cat si pentru selectie, se executa in mod conditionat o singura prelucrare. Daca trebuie executate conditionat, pe oricare dintre ramuri, mai multe prelucrari, acestea trebuie cuprinse intre acolade instructiune bloc.

3. Selectia multipla
- o structura derivata - poate fi inlocuita prin structuri decizionale case exp V1 : P1
. . .

V1

P1 P2

V2
......

Vn : Pn end case - Mecanism de functionare: se evalueaza expresia. Daca valoarea obtinuta = V1, atunci se executa P1 si se iese din instructiune; daca nu, se compara valoare cu V2, daca sunt egale se executa P2; daca nu......se compara cu Vn, daca sunt egale se executa Pn si se iese din instructiune.

Vn

Pn

4. Structuri imbricate
- o structura alternativa poate fi inclusa in alta structura alternativa. - o regula utila: if se asociaza cu cel mai apropiat else. ex: Se citeste media unui elev. Afisati daca este nepromovat, promovat sau bursier(>8). Pseudocod Real med Citeste med Daca med >= 5 atunci nepromovat Scrie promovat Daca med > 8 atunci Scrie bursier Sfarsit daca Altfel Scrie nepromovat Sfarsit daca Schema logica
Start

Citeste med

Med<=5 promovat

Med>8 bursier

Stop

Structura repetitiva Structura pentru sfarsit pentru


Permite executarea unei prelucrari de un nr. cunoscut de ori. Este o structura cu test initial si nr. cunoscut de iteratii. Se efectueaza intai testarea conditiei si apoi se efectueaza prelucrarea. pentru k=vi , vf executa k=vi P sfarsit pentru k=k+1 da k < vf Mecanism de functionare: se initializeaza contorul cu o valoare P initiala. Se evalueaza conditia k <= vf. Daca e adevarata se nu executa prelucrarea P si creste contorul automat cu o unitate.

OBS: Se efectueaza in mod repetat o singura prelucrare. Mai multe prelucrari trebuie incluse intr-o structura bloc. ex: calculati suma primelor n nr. naturale. Pseudocod intreg n,i,s citeste n s=0 pentru i=1, n executa s=s+i sfarsit pentru scrie s simulare numerica: n = 3, s = 0 pas 1: i=1, 1 < 3 (A), s=0+1=1, i=1+1=2 pas 2: i=2, 2 < 3 (A), s=1+2=3, i=2+1=3 pas 3: i=3, 3 < 3 (A), s=3+3=6, i=3+1=4 pas 4: i=4, 4 < 3 (F), scrie 6.

Schema logica
Start

Citeste n

S=0 i=1
i=i+1 i<n

s=s+i
Scrie s Stop

Structura cat timp


- Permite executarea unei prelucrarii cat timp o conditie este indeplinita. - Este o structura cu test initial si nr. necunoscut de iteratii. Programatorul nu cunoaste la momentul scrierii programului de cate ori se repeta prelucrarea respectiva. cat_timp cnd executa P da Cnd=T sfarsit cat_timp P nu - Mecanism de functionare: se evalueaza conditia la o valoare logica. Daca e adevarata se executa prelucrarea P si se revine la testul conditiei; daca nu se iese din structura. OBS: Programatorul trebuie sa asigura initializarea corecta a datelor inainte intrarii in structura. De regula, repetitive sunt coordonate de o variabila contor. Initializarea = atribuirea corecta pt. contor. Programatorul trebuie sa asigure transformarea conditiei din adevarata in falsa dupa un nr. finit de iteratii. In caz contrar, bucla este infinita. Modificarea conditiei se face prin cresterea sau descresterea contorului cu o unitate. Se poate realiza si prin citirea unor valori noi de la tastatura sau dintr-un fisier. ex: calculati suma primelor n nr. naturale, folosind structura cat_timp. Pseudocod intreg n,i,s citeste n s=0 i=1 cat_timp i < n, executa s=s+i i=i+1 sfarsit cat_timp scrie s simulare numerica: n = 3, s = 0 pas 1: i=1, 1 < 3 (A), s=0+1=1, i=1+1=2 pas 2: i=2, 2 < 3 (A), s=1+2=3, i=2+1=3 pas 3: i=3, 3 < 3 (A), s=3+3=6, i=3+1=4 pas 4: i=4, 4 < 3 (F), scrie 6. Schema logica
Start

Citeste n

S=0 i=1
i=i+1 i<n

s=s+i
Scrie s Stop