Limbaje de Programare I

download Limbaje de Programare I

of 72

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