Documente Academic
Documente Profesional
Documente Cultură
PROCEDURAL
Bogdan Alexe
bogdan.alexe@fmi.unibuc.ro
1. Pointeri
2. Funcii de ci4re/scriere
5. Aritme4ca
pointerilor.
Tipuri
de
date
structurate
Limbajul
C
permite
creare
4purilor
de
date
n
5
moduri:
q sintaxa:
enum
<nume>
{
lista
enumerarilor
}
lista
variabile;
Enumerri
q exemplu
enum
{a,
b,
c,
d};
a
=
0,
b
=
1,
c
=
2,
d
=
3
q sintaxa:
typedef
<deniie
Qp>
<idenQcator>;
q exemple:
typedef
unsigned
int
natural;
typedef
long
double
tablouNumereReale
[100]
;
tablouNumereReale
a,
b,
c;
natural
m,n,i;
Specicatorul
typedef
Cursul
de
azi
1. Enumerri,
typedef.
5. Aritme4ca
pointerilor
Funcii
q permit modularizarea programelor
q variabilele declarate n interiorul funciilor variabile locale (vizibile
doar n interior)
q parametri funciilor
q permit comunicarea informaiei ntre funcii
q sunt variabile locale funciilor
q sintaxa:
antetul
funciei
Qp_returnat
nume_funcQe
(lista
parametrilor
formali)
(declarare)
{
variabile
locale
instruc4uni;
corpul
funciei
(denire)
return
expresie;
}
q
lista de parametri formali poate fi reprezentata de:
q nici un parametru:
q tip_returnat nume_functie ()
q tip_returnat nume_functie (void)
q unul sau mai muli parametri separai prin virgul.
Valoarea
returnat
de
o
funcie
q dou categorii de funcii:
q care returneaz o valoare: prin utilizarea instruciunii return expresie;
q care nu returneaz o valoare: prin instruciunea return; (tipul returnat
este void)
q returnarea valorii
q poate returna orice tip standard (void, char, int, float, double) sau definit
de utilizator (structuri, uniuni, enumerari, typedef)
Rezultatul aat
44
49
Fiiere
header
cu
extensia
.h
q conin prototipuri de funcii
q bibliotecile standard
q conin prototipuri de funcii standard regsite n fiierele
header corespunztoare (ex. stdio.h, stdlib.h, math.h,
string.h
q exemplu biblioteca stdio.h care conine i prototipul
funciei
q printf: int printf(const char* format, ...);
q se ncarc cu #include <filename.h>
q biblioteci utilizator
q conin prototipuri de funcii i macrouri
q se pot salva ca fiiere cu extensia .h : ex. filename.h
q se ncarc cu #include filename.h
Transmiterea
parametrilor
ctre
funcii
q utilizat la apelul funciilor
variabile registru
5. Aritme4ca
pointerilor
Pointeri
la
funcii
q pointer
la
o
funcie
=
variabil
ce
stocheaz
adresa
de
nceput
a
codului
asociat
funciei
zona
de
HEAP:
alocare
dinamic
variabile registru
q exemple:
1. int
suma(int
n,
int
(*expresie)(int));
(sum
generic
de
n
numere)
S1 (n) = 1 + 2 + ... + n
S2 (n) = 12 + 22 + ... + n2
n
Sk (n) = expresie(i)
i=1
Folosind
pointeri
la
funcii
pot
s
vd
funcia
ca
o
variabil
U4litatea
pointerilor
la
funcii
n
q exemplul
1:
vreau
s
calculez
suma
Sk (n) = ik
i=1
q implementare
elegant:
U4litatea
pointerilor
la
funcii
n
q exemplul
1:
vreau
s
calculez
suma
Sk (n) = ik
i=1
U4litatea
pointerilor
la
funcii
q exemplul
2:
funcia
qsort
din
stdlib.h
folosit
pentru
sortarea
unui
vector/tablou.
Antetul
lui
qsort
este:
5. Aritme4ca
pointerilor
Legtura
dintre
pointeri
i
tablouri
1D
q un pointer: variabil care poate stoca adrese de memorie
q exemple: int
a=5
p
a
int
*p;
to
point
p
=
&a;
adresa
a
5
adresa p adresa a
0
a[0]
a[[1]
a[2]
a[3]
a[4]
a[9]
Legtura
dintre
pointeri
i
tablouri
1D
q adresarea
unui
element
dintr-un
tablou
cu
ajutorul
pointerilor
Concluzie?
Legtura
dintre
pointeri
i
tablouri
1D
q adresarea
unui
element
dintr-un
tablou
cu
ajutorul
pointerilor
3
-12
10
7
1
10
2
0
-7
41
-3
-2
0
0
2
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[0][4]
a[1][0]
a[2][4]
q exemplu: q
p
a
int
a=5
adresa
p
adresa
a
5
int
*p;
p
=
&a;
int
**q;
adresa
q
adresa
p
adresa
a
q
=
&p;
indirectare simpl
indirectare
mul4pl
Pointeri
la
pointeri
q exemplu:
Pointeri
la
pointeri
q exemplu:
q p a
1606416736
1606416748
5
1606416728
1606416736
1606416748
Legtura
dintre
pointeri
i
tablouri
2D
q tablou
bidimensional
=
tablou
de
tablouri
q cazul
general:
int
a[m][n];
0
i
m-1
0
1
j
n-1
0
1
j
n-1
0
1
j
n-1
a
Reprezentarea
n
memoria
calculatorului
a
unui
tablou
bidimensional
5. Aritme4ca
pointerilor
Aritme4ca
pointerilor
q asupra pointerilor pot fi realizate operaii artimetice:
q asignri;
q comparaii.
Aritme4ca
pointerilor
q iniializarea
unui
pointer
cu
adresa
primul
element
al
unui
tablou
p=p+2
Aritme4ca
pointerilor
q adunarea/scderea
unui
numr
natural
dintr-un
pointer
Aritme4ca
pointerilor
q adunarea/scderea
unui
numr
natural
dintr-un
pointer
Aritme4ca
pointerilor
q adunarea/scderea
unui
numr
natural
dintr-un
pointer
p q