Documente Academic
Documente Profesional
Documente Cultură
com/rid/H-4522-2011
Versiunea 2013
Obiectivele disciplinei Coninutul tematic Lucrri de laborator Evaluare Bibliografie C1 - Algoritmi: Algoritmi: Caracteristici. Caracteristici. Descriere. Descriere. Complexitate
Versiunea 2013
Versiunea 2013
Algoritmi: Caracteristici. Descriere. Complexitate [Complexitatea programelor (time.h)]. Corectitudine [Corectitudinea programelor C. Metoda aseriunilor (assert.h)]. Limbaje de programare. Caracteristici. Exemple: FORTRAN, C, Pascal... Limbajul de programare C: Entiti sintactice. Operatori. Expresii. Instruciuni. Funcii (definire i declarare, transferul parametrilor). Directive de preprocesare. Tablouri i Pointeri. Funcia main cu argumente. Pachetele: stdio.h, math.h, string.h Alocare static Alocare dinamic. Structuri de date dinamice (liste i arbori). Aplicaii ale utilizrii tipurilor de date structurate (struct, union, typedef) cu ajutorul pointerilor: crearea i explorarea structurilor de date. Pachetele: stdlib.h, alloc.h Operaii de intrare-ieire. Fiiere n C i aplicaii. Pachetul iostream.h (C++). Testarea programelor C. Utilizarea bibliotecilor statice (.LIB) i dinamice (.DLL). Metode de proiectarea programelor.
Versiunea 2013
1. Structura programelor C. Instruciuni decizionale. Instruciuni repetitive 2. Tablouri unidimensionale. Tablouri bidimensionale 3. Tablouri i pointeri 4. Transferul parametrilor 5. Uniti de translatare. Funcia main cu argumente. Comunicare cu module scrise n limbaj de asamblare sau alte limbaje de programare. 6. Funcii cu numr variabil de argumente. Pointeri 7. Aplicaii ale pointerilor (liste, arbori, grafuri). Fiiere 8. Corectitudinea i complexitatea programelor 9. Testarea programelor 10. Biblioteci statice i biblioteci dinamice. Realizarea aplicaiilor complexe.
G. Albeanu, Programare Procedural M1
Versiunea 2013
30% Laborator 70% Evaluare final n (pre)sesiune Sesiuni de examinare: iarn, var, toamn/mrire de not Refacerea lucrrilor de laborator condiioneaz intrarea n evaluarea final. Structura lucrrii finale: Sintaxa/semantica C, algoritmi, complexitate (teorie i aplicaii), corectitudine (aseriuni), directive de preprocesare, pointeri, fiiere, funcii cu numr variabil de argumente, main cu parametri, generarea secvenelor de test.
Versiunea 2013
G. Albeanu, Algoritmi i limbaje de programare, Editura Fundaiei Romnia de Mine, Bucureti, 2000. B.W. Kernighan, D.M. Ritchie, The C programming language, Prentice Hall, 1988 (2nd ed.). Peter Salus, Handbook of Programming Languages: Vol. II: Imperative Programming Languages, Macmillan Technical Publishing, 1998. C.A. Giumale, Introducere n Analiza Algoritmilor, Polirom, 2004. H.S. Wilf, Algorithmes et complexite, Masson / Prentice+Hall, 1989. Blnescu T., Corectitudinea Algoritmilor, Editua Tehnic, 1995. B.W. Kernighan, R. Pike, The practice of programming, Addison-Wesley, 1999. P. van der Linden, Expert C programming, Prentice Hall, 1994. G. Perry, C by examples, Que, 2000. P.S. Deshpande, O.G. Kakde, C and Data structures, Charles River Media, 2004.
Versiunea 2013
Prin algoritm vom nelege o secven finit de comenzi explicite i neambigue care executate pentru o mulime de date (ce satisfac anumite condiii iniiale), conduce n timp finit la rezultatul corespunztor. Caracteristici: Caracteristici: Generalitate, Claritate, Finititudine, Corectitudine, Performan, Robustee Descriere: Limbaj natural / Pseudocod, Diagram (schem logic), program, ...
Versiunea 2013
Analiza complexitii unui algoritm presupune determinarea resurselor de care acesta are nevoie pentru a produce datele de ieire. Prin resurs nelegem timpul de executare, dar uneori este necesar s analizm i alte resurse precum: memoria intern, memoria extern etc. Modelul mainii pe care va fi executat algoritmul nu presupune existena operaiilor paralele; operaiile se execut secvenial. n analiza complexitii unui algoritm avem n vedere cazul cel mai defavorabil din mai multe motive:
a) Timpul de executare n cazul cel mai defavorabil ofer o limit superioar a timpului de executare (avem certitudinea c executarea algoritmului nu va dura mai mult). Aceast situaie va fi acoperitoare pentru algoritmii cu funcionare n cadrul sistemelor pentru controlul proceselor n timp real. b) Situaia cea mai defavorabil este ntlnit des. c) Timpul mediu de executare este, uneori, apropiat de timpul de executare n cazul cel mai defavorabil, dar dificil de estimat.
G. Albeanu, Programare Procedural M1
Versiunea 2013
Versiunea 2013
10
Versiunea 2013
11
Tem:
Determinarea maximului i minimului, simultan, folosind 3n/2 + O(1) operaii de comparare.
Versiunea 2013
12
Versiunea 2013
13
Versiunea 2013
14
Tem:
Complexitatea algoritmului de nmulire a unui ir de matrice A1, A2, ..., Ak, k>2. (Metoda programrii dinamice permite obinerea unui algoritm cu numr minim de operaii de nmulire)
Versiunea 2013
15
Pentru msurarea timpului includei fiierul antet <time.h>. Acesta conine prototipul functiei clock(), care ntoarce numrul de tacte de ceas de timp real scurs de la nceperea programului, pna n punctul n care se plaseaz aceast funcie. Pentru obtinerea timpului n secunde se folosete expresia clock()/CLK_TCK. Plasnd dou asemenea expresii, naintea i dup apelul subprogramului aflat sub msurare, diferena lor ne d timpul consumat de algoritm.
In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.
G. Albeanu, Programare Procedural M1
Versiunea 2013
16
Versiunea 2013
17
Versiunea 2013
18
Versiunea 2013
19
Versiunea 2013
20
Versiunea 2013
21
Versiunea 2013
22
Versiunea 2013
23
Generarea numerelor pseudoaleatoare: http://en.wikipedia.org/wiki/Random_number_generation Rezolvarea ecuaiilor liniare: http://en.wikipedia.org/wiki/System_of_linear_equations Cutare n iruri de caractere: http://en.wikipedia.org/wiki/String_searching_algorithm Generarea permutrilor, aranjamentelor, combinrilor, etc. Metode algoritmice n geometrie: http://en.wikipedia.org/wiki/Computational_geometry Metode algoritmice n algebr: http://en.wikipedia.org/wiki/Computer_algebra_system Metode algoritmice n analiza matematic: http://en.wikipedia.org/wiki/Numerical_analysis Algoritmi evoluioniti: http://en.wikipedia.org/wiki/Evolutionary_algorithm Alte clase de algoritmi (inclusiv aproximativi): http://en.wikipedia.org/wiki/Approximation_algorithm
Versiunea 2013
24