Documente Academic
Documente Profesional
Documente Cultură
Algoritmi și tehnici de
programare
Cursul 1
+
Cuprins
◼ Introducere
◼ Evaluare
◼ Prezentare curs
◼ Bibliografie
◼ Examen 70 de puncte
◼ Metoda backtracking
◼ Recapitulare.
+
Bibliografie
1. C. Uscatu, C. Cocianu, M. Mircea, L. Pocatilu, Algoritmi si tehnici de
programare. Aplicații, Editura ASE București 2015
◼ float
◼ double ◼ signed
◼ unsigned
◼ Instrucţiuni :
◼ if
◼ switch
◼ while
◼ do-while
◼ for
+
Pointeri
◼ int* vPtr, v;
◼ v= 10;
#include<stdio.h>
void main()
{
int v = 10;
int* vPtr;
vPtr = &v;
printf(“v = % d, *vPtr = % d\n", v, *vPtr);
}
+
Pointeri
Exemplu:
vPtr
int v=10, *vPtr;
vPtr = &v; v
+
Variabile de tip pointer
* - operator de indirectare
#include<stdio.h>
int v = 10;
int *vPtr; %p – specificator de
void main() formatare adresa de memorie
{
printf("%p\n", vPtr); initializare variabila pointer
vPtr = &v;
printf("%d\n", *vPtr);
printf("%p\n", vPtr); *vPtr – valoarea stocata la
printf("%p\n", &v); adresa de memorie spre care
} pointeaza vPtr.
&v – adresa de memorie la
care este stocata valoarea
variabilei v
+
Subprograme
tip_rez rezultat;
rezultat=nume ([lista parametrilor actuali]);
+
Transmiterea parametrilor
◼ Prin parametri
◼ prin valoare
◼ prin adresă
◼ Funcţii importante:
◼ malloc()
tip *p;
p = (tip*) malloc(dimensiune);
◼ free()
free(p);
+
Alocarea dinamică a memoriei
int v[8]; v:
int *p;
p=&v[0]; p:
V[1] *(p+1)
+
Alocarea dinamică a memoriei
◼ Vector alocat dinamic Matrice alocată dinamic
• Declarare • Declarare
tip* p; tip* *a;
• Alocare • Alocare
p = (tip*) malloc( n * sizeof(tip)); a = (tip**) malloc(m*sizeof(tip*));
• Utilizare for(i=0;i<m;i++)
*(p+i) *(a+i)=(tip*) malloc(n*sizeof(tip));
• Eliberare (dezalocare) • Utilizare
free(p); *(*(a+i)+j)
• Eliberare (dezalocare)
for(i=0;i<m;i++)
free(a[i]);
free(a);
+
Alocarea dinamică a memoriei
// funcţia care determină vânzările medii Apel:
pentru m firme de panificaţie (n
produse) float *v;
{ printf("\n");
} }
}
+
Alocarea dinamică a memoriei
void med1(float** a, float** v, int m, int n) void main()
{ {
int i, j, k; float** a, * v;
*v = (float*)malloc(m * sizeof(float)); int m, n, i;
for (i = 0; i < m; i++) readMatrix1(&a, &m, &n);
{ (*v)[i] = 0; writeMatrix1(a,m,n);
for (j = 0; j < n; j++) med1(a, &v, m, n);
(*v)[i] = (*v)[i] + *(*(a + i) + j); write1(v, m);
(*v)[i] = (*v)[i] / n; free(v);
} for (i = 0; i < m; i++)
} free(a[i]);
free(a);
}