Documente Academic
Documente Profesional
Documente Cultură
Vom considera urmtorii algoritmi exprimai n pseudo-cod (varianta n scheme logice a fost
discutat n timpul laboratoarelor):
1. S se realizeze o schem logic care determin maximul a dou numere citite de la
tastatura.
Citeste a
Citeste b
Afiseaza b
Afiseaza a
2. Extindei programul anterior astfel nct s lucreze cu trei numere.
Citeste a
Citeste b
Citeste c
Afiseaza c
Afiseaza b
Afiseaza a
n mod similar se pot rezolva i cazul pentru 4 numere. Dei este relativ simplu, acest exemplu
evidenieaz o problem major: algoritmul trebuie modificat/rescris n funcie de numrul
datelor de intrare. Variabilele a, b, c au acelai rol, dar sunt denumite diferit i nu au o
caracteristic comun. Calculatorul nu poate s deduc din primele instruciuni citeste cum
vor arta urmtoarele instruciuni citeste. Deci, proiectantul algoritmului trebuie s includ in
mod explicit aceste instruciuni.
Masivele de date sunt soluia pentru problema anterioar. Un masiv de date este o variabil
care conine mai multe valori de acelai tip. Practic, masivele de date ne permit s grupm mai
multe date (care au un rol comun) sub un sigur nume. Notiunea de masiv de date mai este
intalnita si sub alte denumiri (vector, matrice, sir de valori, tablou de date etc).
Colecia de date din masiv este identificat prin numele acestuia, dar fiecare informaie n parte
este identificat prin numele masivului i poziia ei n masiv. De exemplu, ca s memorm
notele studenilor dintr-o clas putem s folosim masivul de date note. Nota primului student din
grup se gsete pe prima poziie din masiv, deci scriem note[1]. Poziia din masiv se numete
i index.
Folosind masive de date i instruciuni de buclare, proiectantul algoritmului poate s-i ofere
executantului un mini-algoritm de prelucrare a datelor. De exemplu, n algoritmul cu citirea si
afisarea numerelor, n loc s scriem instruciuni citeste a, b, c, ... pentru fiecare variabila in
parte, vom scrie o singur instruciune general valabile pentru toate numerele (citeste X[i]).
Deci, masivele de date mpreun cu instruciunile de buclare ofer algoritmului scalabilitate
relativ la dimensiunea datelor de intrare.
In continuare vor fi prezentati algoritmi specifici pentru prelucrarea datelor din vectori. La modul
general, toti acesti algoritmi realizeaza parcurgerea vectorului si procesarea operatiilor din el.
Deci ei se incadreaza in urmatorul tipar (V este vectorul si N este lungimea lui):
pentru X = 1 la N cu pasul 1
executa o operatie cu elementul V[X]
sfarsit
Cu mici modificari, acest model poate fi transformat astfel incat sa citeasca, sa afiseze, sa
copieze etc datele dintr-un vector oarecare.
Pe acest slide, algoritmul general de parcurgere si prelucrare a unui vector este particularizat
astfel incat sa efectueze operatiile de citire si afisare a unui vector.
Acesta este exemplul folosit la inceputul acestei unitati de studiu. Folosind masive de date,
putem sa construim un algoritm care permite citirea si afiseaza unui sir de numere de lungime
oarecare, chiar si atunci cand lungimea lui nu este cunoscuta in momentul scrierii algoritmului.
citeste N
pentru X = 1 la N cu pasul 1
citeste V[X]
sfarsit
pentru X= N la 1 cu pasul -1
afiseaza V[X]
sfarsit
Pe acest slide, algoritmul general de parcurgere si prelucrare a unui vector este particularizat
astfel incat sa efectueze operatiile de calcul cu vectori si cautare intr-un vector a elementelor
care indeplinesc anumite conditii.
citeste N
citeste V[1...N] se inlocuieste cu algoritmul de la exercitiile anterioare
calculeaza M = V[1]
pentru X = 1 la N cu pasul 1
daca M<V[X] atunci
calculeaza M=V[X]
sfarsit
sfarsit
afiseaza Maximul este M
citeste N
citeste V[1...N] se inlocuieste cu algoritmul de la exercitiile anterioare
calculeaza S = 0
pentru X = 1 la N cu pasul 1
calculeaza S = S+V[X]
sfarsit
calculeaza M = S/N
pentru X = 1 la N cu pasul 1
daca V[X]>M atunci
afiseaza V[X]
sfarsit
sfarsit
In continuare vor fi prezentati algoritmi specifici pentru prelucrarea datelor din matrici. Ei sunt o
extensie in spatiul 2D a cazurilor de la vectori. La modul general, toti acesti algoritmi realizeaza
parcurgerea matricii si procesarea operatiilor din el. Deci ei se incadreaza in urmatorul tipar (M
este matricea, L este numarul de linii din matricea M, C este numarul de linii din matricea M):
pentru X = 1 la L cu pasul 1
pentru Y = 1 la C cu pasul 1
executa o operatie cu elementul M[X,Y]
sfarsit
sfarsit
Cu mici modificari, acest model poate fi transformat astfel incat sa citeasca, sa afiseze, sa
copieze etc datele dintr-o matrice oarecare.
Pe acest slide, algoritmul general de parcurgere si prelucrare a unei matrice este particularizat
astfel incat sa efectueze operatiile de citire si afisare a unei matrice.
citeste L, C
pentru X=1 la L cu pasul 1
pentru Y = 1 la C cu pasul 1
citeste M[X,Y]
sfarsit
sfarsit
pentru Y = 1 la C cu pasul 1
pentru X = 1 la L cu pasul 1
afiseaza M[X,Y] (separate prin spatii)
sfarsit
afiseaza (si treci pe o linie noua)
sfarsit
Pe acest slide, algoritmul general de parcurgere si prelucrare a unei matrici este particularizat
astfel incat sa efectueze operatii de calcul cu matrici si cautare intr-o matrice a elementelor care
indeplinesc anumite conditii.
citeste L, C
citeste M[1...L, 1...C] se inlocuieste cu algoritmul din exemplul anterior
pentru X = 1 la L cu pasul 1
pentru Y = 1 la C cu pasul 1
daca M[X,Y]!=0 atunci
afiseaza M[X,Y]
sfarsit
sfarsit
sfarsit
citeste L, C
citeste M[1...L, 1...C] se inlocuieste cu algoritmul din exemplul anterior
calculeaza S = 0
pentru X = 1 la L cu pasul 1
pentru Y = 1 la C cu pasul 1
calculeaza S=S+M[X,Y]
sfarsit
sfarsit
afiseaza Suma este S