Documente Academic
Documente Profesional
Documente Cultură
Structura este prezenta atat in raport cu datele, cat si cu programul (codul) care
implementeaza algoritmul.
Cerinte asupra programelor : usor de urmarit, concise, usor de modificat
Structurarea programului - permite descompunerea problemei de rezolvat,
si implicit a solutiei, in parti mai simple, pana la cele direct rezolvabile
Structurarea datelor – conduce la operatii simple si eficiente, in cazul alegerii
unei structuri de date potrivite
Structura datelor si a programelor se afla intr-o stransa corelare si ambele
conduc la eficienta
Ex. 3 Parcurgerea traseului intre casele dintr-un oras ( N case )
Ex. 4 Cautarea unui nr. de telefon in cartea de telefon cand se cunoaste numele.
Ex. 5 Cautarea unor informatii pe hartile geografice
Structurarea clarifica, iar detaliile fara insemnatate pentru rezolvare ingreuneaza.
prime1 ( n)
1. Creeaza o multime (colectie) numita candidati care cuprinde toti intregii intre
2 si n
2. Elimina toate numerele care nu sunt prime din candidati
3. Tipareste toti intregii ramasi in candidati
sterge ( int factor, int n, colectie c) /* sterge multiplii lui factor din c */
{
int urm_multiplu;
urm_multiplu=2*factor;
while (urm_multiplu <=n)
{
omite ( urm_multiplu, c);
urm_multiplu=urm_multiplu +factor;
}
}
non_prim (int factor, int n) /* returneaza adevarat daca mai sunt numere
neprime in c */
{
return (factor < = sqrt((double)n));
}
omite (i, c) /* sterge i din c */
SDA curs 1 I INFO 2013/2014 9
prime1_a( int n)
creeaza ( int n, colectie c) /* creeaza o colectie c de intregi intre 2 si n */
{
int i;
init ( n, c);
for ( i=2; i <=n; i++)
insereaza (i, c);
}
init ( n, c) /* goleste c de elemente */
insereaza ( i, c) /* adauga i in c */
tipareste ( int n, colectie c)
{
int i;
for ( i=2; i <=n; i++)
if ( apartine (i, c))
printf(“ \n %d \n”, i);
}
apartine (i, c) /* returneaza adevarat daca i este prezent in c */
SDA curs 1 I INFO 2013/2014 10
prime1_b( int n)
{ colectie candidati;
int factor, i, urm_multiplu, primul_prim=2;
init (n , candidati);
for (i=2; i<=n; i++)
insereaza ( i, candidati);
factor=primul_prim;
while (factor < = sqrt ((double) n))
{
urm_multiplu=2*factor;
while (urm_multiplu <=n)
{
omite (urm_multiplu, candidati);
urm_multiplu=urm_multiplu+factor;
}
factor++;
}
for (i=2; i<=n; i++)
if (apartine(i, candidati))
printf (“\n %d \n”,i);
}
SDA curs 1 I INFO 2013/2014 11
Utilizarea datelor abstracte si a modularizarii functionale
usureaza intelegerea programului si a manierei de rezolvare, dar
totodata simplifica si mentenanta unui program
Modificarea programului pentru a face ceva nou
Modificarea programului pentru a nu mai face anumite operatii ( sarcini)
Modificari pentru cresterea eficientei in implemetarea anumitor sarcini
(task-uri)
Alegerea implementarii pentru datele abstracte este un punct
critic pentru cresterea eficientei programelor
Mark Allen Weiss- Data Structures and Algorithm Analysis in C, 2nd ed,
Addison Wesley, 1997
1. Un tip de data determina in mod univoc multimea valorilor pe care le poate asuma un
element incadrat in tipul respectiv ( constante, variabile sau valori generate de un operator
sau o functie)
2. Tipul unui element sintactic poate fi dedus din forma sa de prezentare sau din
declaratia sa explicita, fara a fi necesara executia unor procese de calcul suplimentare.
3. Fiecare operator sau functie definita accepta argumente de un tip precizat si
furnizeaza rezultate de asemenea de un tip precizat. Daca apar abateri de la aceasta
regula generala , ele sunt rezolvate de reguli specifice limbajelor
4. Presupune un anumit grad de structurare a informatiei, grad care e evidentiat de
nivelul de organizare asociat tipului de data.
Daca intre valorile individuale ale tipului exista o relatie de ordonare, atunci
tipul de data este ordonat sau scalar . Majoritatea tipurilor primitive sunt
scalare.
Metodele de structurare de baza genereaza tipuri de date structurate:
- statice
- dinamice
- definite de utilizator