Condiții prealabile:
Cunoștințe și abilități de bază pentru lucrul cu calculatorul
Bazele programării (curs din semestrul 1)
Cunoștințe și abilități de bază Microsoft Visual Studio
Veți studia
Biblioteci de funcții
Pointeri la funcții
Iterativitate și recursivitate
Metoda Divide et Impera
Căutare, sortare, interclasare pentru masive unidimensionale
Validarea datelor
Structuri externe de date: fișiere (text, binare, indexed)
Grafuri: reprezentare, traversare, conectivitate, drumuri, arbori
Metoda Greedy
Metoda Backtracking
Algoritmi și tehnici de programare
Culegere de probleme
▪ C. Uscatu, C. Cocianu, M, Mircea, L. Pocatilu, Algoritmi și tehnici de programare.
Aplicații, Editura ASE 2015 (2017 – în curînd)
Alte cărți
▪ I. Gh. Roşca, B. Ghilic-Micu, C. Cocianu, M. Stoica, C. Uscatu, M. Mircea,
Programarea calculatoarelor. Algoritmi în programare, Editura ASE Bucureşti, 2007
▪ C. Uscatu, M. Popa, L. Pocatilu (Bătăgan), C. Silvestru, Programarea
calculatoarelor. Aplicații, Editura ASE București 2012
▪ Thomas H. Cormen, Charles E. Leiserson, Ronald R. Rivest, Introducere în
algoritmi, Computer Libris Agora, 2000
Algoritmi și tehnici de programare
Evaluare
▪ Seminar: 40%
▪ Teme obligatorii: 10%
▪ Proba practică: 30%
▪ Examen: 50%
Diverse
▪ Prezență, absențe, studiu individual, reguli, colaborare
online.ase.ro
Fișa disciplinei, prezentări, teme, alte materiale, comunicație
Biblioteci de subprograme
Scop
Reutilizarea codului în mai multe aplicații
Distribuirea către alți utilizatori
Tipuri
cod sursă / cod binar, statice / dinamice
Variante de lucru
În mod comandă cl.exe lib.exe link.exe
În mediul de programare (IDE) Visual Studio
Biblioteci de subprograme: statice
Cod binar
Editare de legături executabil
(.exe)
Biblioteci
cod obiect
(.lib)
Biblioteci de subprograme: statice
#include <stdio.h>
#include <malloc.h>
//alocare
#include dinamica matrice
"matrice.h"
// I - nr. linii, nr. coloane
// E - adresa
//citire matricematricei
patrata cu alocare
Fișiere sursă
double **aloca_matrice(int m, int n);
// I -
// E - adresa matrice, dimensiune
double** citire_matrice(int
//dezalocare *m)
matrice dinamica
antet
{//int
matrice.h
i,j;
I - adresa matricei, nr. linii
double** a;
// E - adresa matricei (NULL)
printf_s("\n\nDimensiune: ");
#include double**
<stdio.h> dezalocare_matrice(double **a, int m);
implementare matrice.cpp
scanf_s("%d",m);
#include <conio.h>
a=new double*[*m];
#include //produs
"matrice.h" matrice patrate de dimensiuni egale, prealocate
for(i=0;i<*m;i++)
// Ia[i]=new
- a, b,double[*m];
n
test
void main()
//for(i=0;i<*m;i++)
{ double** a;
E - c
voidfor(j=0;j<*m;j++)
test.cpp
produs_mpn(double** a, double **b, int n, double** c);
int m,n;
{ printf_s("a[%d,%d]= ",i,j);
scanf_s("%lf",&a[i][j]);
//copiaza matrice prealocate
a=citire_matrice(&m);
// I - } a, m, n
afisare_matrice(a,m);
return a;
// E - b
}
_getch();
void copiaza(double** a, int m, int n, double** b);
}
//afisare matrice patrata
//citire
// matrice
I - adresa patrata
matrice, cu alocare
dimensiune
// EI --
//
// E afisare_matrice(double**
void - adresa matrice, dimensiune
a, int m)
{double**
int i,j; citire_matrice(int *m);
//cout<<"\nMatricea este: \n";
for(i=0;i<m;i++)
//afisare matrice patrata
//{ Ifor(j=0;j<m;j++)
- adresa matrice, dimensiune
// E - printf_s("%10.6lf ",a[i][j]);
printf_s("\n");
void
}
afisare_matrice(double** a, int m);
printf_s("\n");
}
Biblioteci de subprograme: statice
În mod comandă
Se creează un director nou pentru proiect în care se salvează fișiere
necesare
Se execută vcvars32.bat, aflat in subdirectorul bin al Visual Studio
▪ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
cl -c matrice.cpp
▪ matrice.obj
cl test.cpp matrice.lib
▪ test.exe
Biblioteci de subprograme: statice
Dezavantaje
Mai multe fișiere (executabil + biblioteci dinamice)
Timp suplimentar la execuție
Asigurarea accesului la bibliotecă (calea curentă, PATH)
Biblioteci de subprograme: dinamice
Cod binar
Editare de legături executabil
Biblioteci (.exe)
Executare dinamice
(.dll) Biblioteci
aplicație
cod obiect
(.lib)
Cod binar
executabil
(.exe)
Biblioteci de subprograme: dinamice
Diferențe
Antetul funcțiilor trebuie să conțină (doar în .h)
__declspec(dllexport)
În mod comandă
Se creează un director nou pentru proiect în care se salvează cele 3
fișiere
Se execută vcvars32.bat, aflat in subdirectorul bin al Visual Studio
▪ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
cl matrice.cpp /LD
▪ matrice.dll, matrice.lib
cl test.cpp matrice.lib
▪ test.exe
TEMĂ!
Creați și testați o bibliotecă formată din funcțiile necesare
prelucrării masivelor (1/2 dimensiuni) – biblioteca trebuie
să includă funcții pentru citirea și afișarea masivelor.
Toate masivele trebuie alocate dinamic.
Continuare T E M Ă !
Comparație dimensiuni:
Statică (.lib) Dinamică (.dll)
L.C. IDE L.C. IDE
matrice.h ? ? ? ?
matrice.lib ? ? ? ?
matrice.dll - - ? ?
test.exe ? ? ? ?