Extras din curs
Curs 1
Structuri de date
Structurile de date erau definite în limbajul C drept organizarea datelor primare. În limbajul C++, acestea reprezinta o colectie de date împreuna cu operatiile lor (data obiect).
De exemplu, prin multimea N a numerelor naturale se va întelege si elementele multimii N, dar si operatiile ce se pot efectua cu acestea: 1, 2, 3, ..., +, -, *, /. Sau prin multimea numerelor complexe:
C: {z = a + bi/a si bÎR, i = sqrt(-1)}, -, +, *, /, etc.
Algoritmul se defineste ca o metoda de rezolvare a unei probleme într-un numar de pasi, metoda efectiva (pas cu pas), finita (are un numar finit de pasi) si cu o intrare si o iesire (I/O).
Un algoritm poate avea un limbaj natural (o specificatie), un limbaj matematic (alta specificatie), un limbaj de programare (alta specificatie), s.a.m.d. Între limbajul natural si cel în C++, de exemplu, vom folosi
un pseudolimbaj (de trecere).
Modele de calcul
Masina este un model de calcul care se constituie din Unitate Centrala (U.C.), Memorie (M), I/O.
Exemple de modele de calcul:
Masina Von Newman - presupune executia pe baza modelului de calcul cu:
Programarea este în acest caz programare imperativa procedurala.
Masina RAM (Random Acces Memory) cu:
- model bazat pe algebra booleana;
- programarea este imperativa procedurala;
- evolutia se face prin set redus de instruciuni;
- viteza foarte mare de executie.
Masina TURING
1. MODELUL functional - bazat pe teoria l - calcul.
Limbajele în acest model sunt LISP, ML, MIRANDA, etc. iar programarea este în acest caz programare functionala.
2. MODELUL logic - bazat pe predicate de ordin I.
Un exemplu de limbaj în acest model este PROLOG.Iar programarea se numeste programare logica.
În cele ce urmeaza ne vom limita la modelul Von Newman.
Asadar limbajul C++ se constituie din:
- variabile;
- identificatori;
- constante;
- operatori numerici obisnuiti;
- operatori relationali;
- structuri de control a executiei: if/else, while, do/while, for, etc.
Analiza performantelor algoritmului
Analiza performantelor (estimarea algoritmului) se impune înca înainte de scrierea programelor.
Etapele de realizare a unui produs software (software engineering)
Aceasta stiinta pune în evidenta metodologii clare pentru modele.
Modelul initial:waterfall (cascada):
Etapele de realizare ale unui produs software:
O prima faza:
- se pleaca de la cerinte;
- se obtin specificatii;
- se face analiza specificatiilor;
A doua faza (DESIGN):
- proiectare de ansamblu (se sparge modulul în submodule, etc);
- proiectarea structurilor de date;
- proiectarea algoritmilor;
- analiza performantelor;
- codarea (scrierea programului);
A treia faza:
- testarea;
Ultima faza:
- implementarea.
Programul rezultat se compara cu cerintele, si daca nu corespunde, se reia ciclul ori de câte ori este nevoie.
Analiza performantelor presupune ¾ renuntând la acuratete ¾ estimarea timpului de lucru si a spatiului de stocare, nestiind înca limbajul care va fi folosit si calitatea programului ce se va obtine.
Presupunând ca modelul RAM de masina pe care lucram executa instructiuni pseudocod, si ca fiecare instructiune pseudocod consuma acelasi timp de executie,rezulta ca timpul estimat pentru executia unui algoritm este proportional cu numarul instructiunilor executate de acel algoritm.
Timpul de executie al algoritmului depinde de:
- dimensiunea datelor de intrare
- spatiul de memorie suplimentar ocupat
Dimensiunea datelor de intrare este o functie f(n) care calculeaza, pentru un n dat, numarul de instructiuni al algoritmului respectiv.
Preview document
Conținut arhivă zip
- Structuri de Date si Algoritmi.doc