Limbaje de Programare I
-
Upload
liviu-damoc -
Category
Documents
-
view
237 -
download
2
Transcript of Limbaje de Programare I
-
7/30/2019 Limbaje de Programare I
1/72
-
7/30/2019 Limbaje de Programare I
2/72
-
7/30/2019 Limbaje de Programare I
3/72
-
7/30/2019 Limbaje de Programare I
4/72
4
Limbajul C++
Noiuniintroductive:
orice instruciune se ncheie cu punctivirgul (;). pot fi scrise mai multe instruciunipe o singur linie o instruciune poate fiscris pe mai multe linii. un irde caractere se ncadreazntre ghilimele.
un caracter se ncadreazntre apostrofuri. cuvintele cheie au o semnificaie predefinit
pentru compilator
comentariile secvene de cod neinterpretate decompilator
4
-
7/30/2019 Limbaje de Programare I
5/72
-
7/30/2019 Limbaje de Programare I
6/72
6
Constante
Constante ntregi valori pozitive sau negativedate n zecimal (baza 10), octal (baza 8) sauhexazecimal (baza 16)
Constante reale formatul general al uneiconstante reale este numitiformatexponenial
Constante caracter sunt ncadrate ntrecaractere apostrof (' ')
Literali constante irde caractere constndntr-o succesiune de caractere ncadrat ntreghilimele (" ")
6
-
7/30/2019 Limbaje de Programare I
7/72
-
7/30/2019 Limbaje de Programare I
8/72
-
7/30/2019 Limbaje de Programare I
9/72
-
7/30/2019 Limbaje de Programare I
10/72
-
7/30/2019 Limbaje de Programare I
11/72
-
7/30/2019 Limbaje de Programare I
12/72
-
7/30/2019 Limbaje de Programare I
13/72
-
7/30/2019 Limbaje de Programare I
14/72
-
7/30/2019 Limbaje de Programare I
15/72
-
7/30/2019 Limbaje de Programare I
16/72
16
Instruciuni
Instruciuneavid (;) nu execut nimic
Instruciunea expresie are sintaxa:E;
unde E este o expresie oarecare (de exemplu,
de atribuire, apel de funcie, etc.). Instruciuneacompus are rolul de a grupa mai
multe instruciuni
16
{declaraii i/sau instruciuni
}
-
7/30/2019 Limbaje de Programare I
17/72
17
Instruciuni
Instruciunea if are dou forme
Instruciunea switch
17
if (E)
I1
if (E)
I1else
I2
switch(E){
case : [I1] [break;]case : [I2] [break;]....case : [In] [break;][default: In+1]
}
-
7/30/2019 Limbaje de Programare I
18/72
-
7/30/2019 Limbaje de Programare I
19/72
-
7/30/2019 Limbaje de Programare I
20/72
-
7/30/2019 Limbaje de Programare I
21/72
-
7/30/2019 Limbaje de Programare I
22/72
22
Pointer i
ncrcarea pointerilor
cu adresa unei variabile existente
prin alocare dinamic (la execuie)Alocarea dinamic se realizeaz cu ajutoruloperatorului new sau a funciilorde bibliotec cumar fi malloc sau calloc.
Eliberarea memoriei se realizeaz cu operatoruldelete, respectiv cu funcia de bibliotec free.
22
int a=3;
int *pi=&a;
-
7/30/2019 Limbaje de Programare I
23/72
23
Pointer i
Aritmetica de pointeri
atribuirea pointerilor
compararea pointerilor
adunarea iscderea pointerilor cu un ntreg incrementarea / decrementarea pointerilor
scderea a doi pointeri Modificatorul const
pointer constant, zon de memorie variabil pointer variabil, zon de memorie constant
pointer constant, zon de memorie constant
23
-
7/30/2019 Limbaje de Programare I
24/72
-
7/30/2019 Limbaje de Programare I
25/72
-
7/30/2019 Limbaje de Programare I
26/72
-
7/30/2019 Limbaje de Programare I
27/72
-
7/30/2019 Limbaje de Programare I
28/72
28
Legtura dintre pointeri i masive
Matrice reprezentarea i referirea elementelor.Aritmetica de pointeri poate fi combinat cureferirea indexat. Astfel, un element A[i][j] almatricei poate fi referit cu oricare dintre
expresiile echivalente:
A[i][j]*(A[i]+j)
(*(A+i))[j]
*(*(A+i)+j)
28
-
7/30/2019 Limbaje de Programare I
29/72
-
7/30/2019 Limbaje de Programare I
30/72
-
7/30/2019 Limbaje de Programare I
31/72
-
7/30/2019 Limbaje de Programare I
32/72
1/11/2013 1:25 AM32
32
iruri decaractere
-
7/30/2019 Limbaje de Programare I
33/72
-
7/30/2019 Limbaje de Programare I
34/72
-
7/30/2019 Limbaje de Programare I
35/72
-
7/30/2019 Limbaje de Programare I
36/72
-
7/30/2019 Limbaje de Programare I
37/72
37
Funcii de prelucrare a irurilor
int strcmp (char *sir1, char *sir2)
compar lexicograficirurile primite ca argument int stricmp (char *sir1, char *sir2)
compar alfanumeric cele dou iruri primite caargument, nmanier case insensitive
int strncmp (char*sir1,char*sir2,int n)
compar alfanumeric primele n caractere din celedouiruriprimite ca argument
int strnicmp (char*sir1,char*sir2,int n)
compar alfanumeric primele n caractere din celedou irurinmanier case insensitive .
37
-
7/30/2019 Limbaje de Programare I
38/72
-
7/30/2019 Limbaje de Programare I
39/72
-
7/30/2019 Limbaje de Programare I
40/72
-
7/30/2019 Limbaje de Programare I
41/72
-
7/30/2019 Limbaje de Programare I
42/72
-
7/30/2019 Limbaje de Programare I
43/72
-
7/30/2019 Limbaje de Programare I
44/72
44
Funcii
Apelul uneifunciiare sintaxa:
Dacfuncia nu ntoarce void, ise dorete utilizarea valoriireturnate, apelulsu va fi inclus, ca operand, ntr-o expresie.
Valoarea ntoars trebuie specificat cuinstruciunea return: dac funcia ntoarce void, prezena instruciunii
return nu este obligatorie
dacfunciantoarce un tip de date diferit de void,instruciunea return va primi obligatoriu o valoarede tipul returnat sau compatibil cu acesta.
44
()
-
7/30/2019 Limbaje de Programare I
45/72
-
7/30/2019 Limbaje de Programare I
46/72
-
7/30/2019 Limbaje de Programare I
47/72
-
7/30/2019 Limbaje de Programare I
48/72
-
7/30/2019 Limbaje de Programare I
49/72
-
7/30/2019 Limbaje de Programare I
50/72
-
7/30/2019 Limbaje de Programare I
51/72
-
7/30/2019 Limbaje de Programare I
52/72
-
7/30/2019 Limbaje de Programare I
53/72
54
-
7/30/2019 Limbaje de Programare I
54/72
54
Funcii cu numr variabil de
parametr i
Limbajul permite declararea de funciia crorlistde parametri nu este complet definit. Funcia
poate primi, la apel, orice numrde parametri, deorice tip.
Lista variabil de parametriprezent n antetul
funcieise marcheaz cu secvena ,... . Ea trebuieprecedat de celpuin un parametru fixise aflntotdeauna la sfritullistei de parametri.
Ex.
54
int ampl(int n,...)
-
7/30/2019 Limbaje de Programare I
55/72
-
7/30/2019 Limbaje de Programare I
56/72
-
7/30/2019 Limbaje de Programare I
57/72
58
-
7/30/2019 Limbaje de Programare I
58/72
58
Pointeri ctre funcie
Pointerul astfel definit poate fi ncrcat cu adresauneifunciicu prototipul:
printr-o simpl atribuire: Ulterior, funcia ctre care pointeaz pf poate fi
apelat prin intermediul pointerului:
Vectori de pointeri ctre funcie pointerii ctrefuncie pot fi grupai n masive, obinnd astfel
vectori de pointerictrefuncie.
58
(*pf)(lista_parametri_efectivi)
59
-
7/30/2019 Limbaje de Programare I
59/72
59
Argumente n linia de comand
Limbajul permite preluarea parametrilor la linia de
comand prin argumente ale funcieimain.
argc (argument count) numrulde parametri dinargv; el este ntotdeauna mai mare sau egal cu 1;
argv (argument values) vector de iruri decaractere care conine parametrii transmii la liniade comand
envp (environment pointers) vector de iruri decaractere ce reprezint valorile variabilelor demediu. Ultimul element al vectorului este NULL.
59
int main( int argc , char *argv[] , char *envp[] );
-
7/30/2019 Limbaje de Programare I
60/72
61
-
7/30/2019 Limbaje de Programare I
61/72
61
abloane de funcii
abloanele permit parametrizarea funciilor; astfel,este permis definirea unei funcii generice ceprelucreaz date a crortip nc nu este precizat,tip ce va fi declarat ca template, acesta urmndsfie specificat la apelulfunciei.
Funciageneric va putea fiapelat cu diferite tipuride date: swap(a,b) unde a i b pot fi variabile
ntregi, reale sau de tipuri definite de utilizator
61
template void swap (T &a, T &b) {T aux=a; a=b; b=aux;
}
-
7/30/2019 Limbaje de Programare I
62/72
1/11/2013 1:25 AM62
62
Tipu ri de datedef ini te de
uti l izator
63
-
7/30/2019 Limbaje de Programare I
63/72
63
Enumerri
Tipul enumerare permite asocierea de nume
sugestive unor constante numerice
Valorile elementelor suntopionale; dac lipsesc,
atunci elementelor fr valoare explicit li se voratribui valori conform urmtoarelordou reguli: valoarea implicit pentru primul element este 0; valoarea implicit a celorlalte elemente este
valoarea elementului precedent, incrementat cu 1
63
enum [] {elem1[=val1], ...., elemn[=valn]
};
64
-
7/30/2019 Limbaje de Programare I
64/72
64
Structur i
Sunt tipuri de date definite de utilizator ce
reprezintcoleciieterogene de date (date de tipuridiferite), stocate ntr-o zoncontinu de memorie.
Declararea structurilor:
Numele structuriiilista de variabile pot lipsi, darnu simultan.
64
struct {
} ;
65
-
7/30/2019 Limbaje de Programare I
65/72
65
Structur i
Declararea variabilelor de tipul structurii:
Accesarea cmpurilor structurii se face: cuoperatorul . pentru variabilele simple, cu
operatorul -> n cazul pointerilor ncrcarea structurilor:
ncrcareindividual a cmpurilor prin iniializare la declaraie prin atribuire (cmpurile structurii vor fi copiate bit cu bit)
prin citire de la terminal sau din fiier
65
66
-
7/30/2019 Limbaje de Programare I
66/72
66
Uniuni
Uniunile reprezint, ca i structurile, colecii dedate de tipuri diferite, ns, spre deosebire deacestea, permit memorarea la un moment dat
numai a unuia dintre cmpurile sale. In cazul unei uniuni nu se aloc memorie pentru
fiecare cmp, ci numai pentru cmpul careocup cel mai mult, iar zona rezervat lui esteutilizat,n diferite momente ale execuiei, pentrustocarea oricruia (dar unul singur) dintre
cmpurile uniunii.
66
67
-
7/30/2019 Limbaje de Programare I
67/72
67
Uniuni
Definirea unei uniuni:
Pentru memorarea unei uniuni, compilatorul
rezervspaiu pentru un singurcmp - cel mai
mare:
Programatorul trebuie s gestioneze foarte atentcare este cmpul reinut n zona rezervatuniunii pe parcursulexecuieiprogramului.
67
union {
} ;
sizeof()=camp
max {sizeof(camp)}
68
-
7/30/2019 Limbaje de Programare I
68/72
68
Cmpuri de bii
Limbajul C/C++ permite prelucrarea datelor la
nivel de bit. Cmpurilorstructuriloriuniunilor li sepot aloca bii individualin cadrul unui octet, biicepot fiaccesaiindependent de restul octetului.
O structur cu cmpuride biiare sintaxa:
Declaraia unuicmp al structurii pe biieste deforma:
68
struct {
} ;
:;
69
-
7/30/2019 Limbaje de Programare I
69/72
69
Cmpuri de bii
Operaiile pe cmpurile de bii acestora nu li sepoate extrage adresa (pentru citire cu scanf, spre
exemplu), deoarece adresa unuicmp de biinueste un ntreg; astfel, cmpurile de bii nu pot fiorganizate n masive.
ncrcarea structurilor pe bii prin ncrcareaindividual a cmpurilor citire de la terminal sau din fiier; naceastsituaie
se va utiliza o variabilauxiliar
iniializare la declaraie
69
70
70
-
7/30/2019 Limbaje de Programare I
70/72
70
Tipu r i sinonime de date
Tipurile sinonime de date au rolul de a asocia un
nume unui tip de date. Ele se utilizeaz, deregul, pentru a nlocuideclaraiimai complicate.
Tipul de date poate fi un tip primitiv (cu eventuali
modificatori) sau un tip de date definit de utilizator,
deja declarat. Definirea unui tip sinonim:
Definirea unui tip sinonim de date nu se poate
face n interiorul uneifuncii.
70
typedef ;
71
71
-
7/30/2019 Limbaje de Programare I
71/72
71
Bibl iograf ie
Crian D.A., Limbajul C/C++. Fundamente. Vol I, Ed.ProUniversitaria, Editie Revizuita, Bucureti, 2010;
Stnic J.L.,Crian D.A., Limbajul C/C++. Aplicaiii testegril, vol. III, Ed. ProUniversitaria, Bucureti, 2010;
Smeureanu I., D. A. Crian, J. L. Stnic, Limbajul C/C++.Teorie iaplicaii, Ed. Universul Juridic, Bucureti, 2005
Jamsa K., Totul despre C si C++ - Manualul fundamentalde programare in C si C++, Ed. Teora, Bucureti, 2005
Schildt H., C/C++ Programmer's Reference, Second
Edition, Ed. Osborne McGraw-Hill, 2000
Oualline S., Practical C++ Programming, Second Edition,'
71
72
72
-
7/30/2019 Limbaje de Programare I
72/72
7272
END