limbaj de programare c4

Upload: mykel

Post on 05-Apr-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Limbaj de programare C4

    1/22

    Limbaje deprogramare

    Cursul IV

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    2/22

    InstruciuniC

    ifelse

    while, dowhile

    for break, continue

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    3/22

    break icontinue

    break i continuentrerup controlul normal alprogramelor. break va cauza ieirea din bucla n care se

    afl sau din switch.continue poate aprea numai n for, while sau do. Arerolul de a trasmite controlul la sfritul buclei.

    3

    while(1)

    {

    scanf("%lf", &x);

    if (x < 0.0)

    break;/*iesire pt. x negativ*/

    printf("%lf\n", sqrt(x));

    }

    while(contor < n)

    {

    scanf("%lf", &x);

    if (x

  • 7/31/2019 Limbaj de programare C4

    4/22

    switch

    switch este o instruciune condiional ce generalizeaz oinstruciune if-else.

    switch(val)

    {

    case 1:

    ++contor_a;

    break;

    case 2:

    case 3:

    ++contor_b;

    break;default:

    ++contor_c;

    }

    4 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    5/22

    switch

    switch este o instruciune condiional ce generalizeaz oinstruciune if-else.

    Expresia de control dintre paranteze (ce urmeazcuvantului switch) trebuie s fie de tip integral (vomreveni). Dup evaluarea sa, controlul sare la etichetacorespunztoare valorii gsite. De obicei, ultimainstruciune de sub un case este break. Dac nuexist

    break,atuncisevorexecuta iinstruciuniledinurmtoarelecase-uri.

    Atenie!Omitereascrieriiluibreak esteogreealfoartefrecvent!

    Poate apare cel mult un default.

    5 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    6/22

    ?:

    Operatorul ?: (operator condiional) este mai puin obinuitdeoarece este ternar (cu trei argumente).expresie1 ? expresie2 : expresie3

    Mai nti, se evalueaza expresie1. Daca aceasta esteadevrat, atunci se evalueaz expresie2, i aceasta va fivaloarea returnata. Dac expresie1 este 0 (false), atunci se

    evalueaza expresie3, i aceasta va fi valoarea ntregii expresiicondiionale.

    if (y < z)

    x = y;

    else x = ( (y < z) ? y : z );

    x = z;

    6 Limbaje deprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    7/22

    Funcii

    Un program este compus din una sau mai multe funcii, printrecare i main(). ntotdeauna execuia unui program ncepe cumain(). Cand o funcie este apelat atunci controlulprogramului este transmis ei. Dup ce aceasta i terminexecuia se transmite napoi controlul ctre program.

    Codul C care descrie ce face o funcie se numete "definiiafunciei":tip nume_functie (lista_parametri)

    {

    declaratii

    instructiuni

    }

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    8/22

    Funcii

    Primul rnd se numete headerul sau antetul funciei.Dac n antet nu precizm parametri, atunci se va scrie

    void (list vid). Dac funcia nu ntoarce nici o valoare,atunci se va scrie ca tip ntors totvoid. Tipul de variabilntors de funcie trebuie s fie acelai ca expresia din

    dreptul return. Parametrii din antetul funciei sunt dai printro list de

    argumente separate prin virgul. Acestea sunt date prin

    tipul argumentului urmat de un identificator. Se mai spunec acel identificator este parametru formal.

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    9/22

    Funcii

    #include

    void tipareste_mesaj(int k)

    {

    int i;

    for (i = 0; i < k; ++i)

    printf(" O zi buna ! \n");

    }void main(void)

    {

    int n;

    scanf("%d", &n);

    tipareste_mesaj(n);

    }

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    10/22

    Funcii prototipuri

    Apelul unei funcii poate s apar i naintea declarrii ei.Funcia poate fi definit mai trziu n acelai fiier, sau nalt fiier sau n bibliotec standard. Prototipul funciei punela dispoziie numrul, tipul argumentelor funciei i tipulreturnat de funcie.

    De exemplu:#include

    int min(int x, int y);void main(void)

    { //aici se foloseste min()}

    int min(int x, int y)

    { // aici se defineste min()

    }

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    11/22

    Funcii return

    return este folosit pentru dou scopuri. Controlul estetransmis napoi programului apelant i dac exist o

    expresie dup return, atunci se va returna valoareaacestei expresii.

    return; sau return expresie;

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

    #include int min(int x, int y)

    {

    if (x < y)

    return x;

    elsereturn y;

    }

    void main(void)

    {

    int j, k, m;

    printf("Dati doi intregi: ");

    scanf("%d%d", &j, &k);m = min(j, k);

    printf("\n%d este minimul dintre

    %d si %d.\n", m, j, k);

    }

  • 7/31/2019 Limbaj de programare C4

    12/22

    Funcii topdown

    Descrierea top-down se refer la descompunerea problemein subprobleme care de obicei sunt mai uor de descris.

    Presupunem c avem de citit civa ntregi i trebuie siafiam n ordine pe coloane (n partea de sus a coloanelortrebuie scris numele campului de tipul: "Numar", "Suma",

    "Minimul", "Maximul"), trebuie afiat suma lor parial,minimul i maximul lor.

    Descompunem problema n subprobleme:

    1. Un antet pentru problema data;2. Calculul campurilor;

    3. Citirea si scrierea lor pe coloane.

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    13/22

    Funcii topdown

    void tipareste_antet(void);

    void calculeaza_campurile(void);

    void citeste_scrie_coloanele(void);

    main()

    {

    ...

    tipareste_antet();

    calculeaza_campurile();

    citeste_scrie_coloanele();}

    void tipareste_antet(void)

    { // functia care tipareste descrierea problemei}

    void calculeaza_campurile(void)

    { // functia care calculeaza Suma etc. }

    void citeste_scrie_coloanele(void)

    { // restul: citire de la tastatura si afisare}

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    14/22

    Funcii apelareaprinvaloare

    O funcie este invocat prin scrierea numelui su mpreuncu lista sa de argumente ntre paranteze. Numrul i tipul

    acestor argumente se "potrivete" cu parametrii din listaprezentat n definiia funciei.

    Toate argumentele sunt apelate prin valoare: fiecare

    argument este evaluat i valoarea sa este folosit ca valoarepentru parametrul formal corespunztor. De aceea, dac ovariabil este folosit la transmiterea unei valori, atunci

    valoarea ei nu se schimb. Exist dou procedee de a returna o valoare.

    return expresie sau exit(expresie)

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    15/22

    Declaraiidevariabile

    Variabilele i constantele sunt obiecte cu care se lucreazntrun program. n C, toate variabilele trebuie declarate

    nainte de a fi folosite. Declaraiile au dou scopuri:1. spun compilatorului ct spaiu de memorie trebuie rezervatpentru memorarea acelor variabile;

    2. permit compilatorului s instruiasc maina pentru a faceoperaiile specifice corect.

    De exemplu, n expresia a + b, operatorul + este aplicat

    pentru dou variabile. Maina execut n mod diferitadunarea pentru variabile de tip int i pentru variabile detip float.

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    16/22

    Tipurifundamentalededate

    char signed char unsigned char

    signed short int signed int signed long int

    unsigned short int unsigned int unsigned long int

    float double long double

    De obicei, signed nu se mai scrie (signed int este

    echivalent cu int). De asemenea, short int, long inti unsigned int pot fi prescurtate ca short, long iunsigned:

    char signed char unsigned char

    short int long

    unsigned short unsigned unsigned long

    float double long double

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    17/22

    Tipurifundamentalededate

    n C, variabilele ntregi pot fi folosite pentru reprezentareacaracterelor. Constante cum ar fi a sau + pe care le gndim

    ca fiind caractere sunt de fapt de tip int, i nu de tip char.Practicnuexist constantedetipchar !

    char c = 'a'; /* 'a' are codulASCII 97 */int i = 65; /* 65 este codulASCII pentru 'A' */

    printf("%c", c + 1); /* este afisatb */

    printf("%d", c + 2); /* este afisat 99 */

    printf("%c", i + 3); /* este afisat D */

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    18/22

    Tipuridedate char

    Este unul dintre tipurile fundamentale din limbajul C.Constantele i variabilele de acest tip sunt folosite pentru

    reprezentarea caracterelor. Fiecare caracter este memoratpe 1 byte (octet), care este compus din 8 bii. Astfel, unoctet poate pstra 2^8=256 valori distincte.

    Dei putem memora 256 valori distincte, doar o parte dinele sunt tiparibile (litere mici, mari, cifre, semne de

    punctuatie, spaiu, tab, caractere speciale +, *, %). Exemplede caractere netipribile: newline, bell.

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    19/22

    Tipuridedate char

    O constant caracter se scrie ntre apostroafe:'a', 'b'

    O declaraie obinuit a variabilelor caracter:char c;

    char c1 = 'A', c2 = '*';

    codul ASCII: de la 2^5+2^4 pn la 57, n ordine: '0', '1', ..., '9'

    de la 2^6+2^0 pn la 90, n ordine: 'A', 'B', ..., 'Z'

    de la 2^6+2^5+2^0 pn la 112, n ordine: 'a', 'b', ..., 'z Pentru a obine litere mici din cele mari, schimbm doar un

    bit. Astfel, A = 65 = 01000001, iar a= 97 = 01100001.

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    20/22

    Tipuridedate char

    Nu me l e Mod descr ie re

    Valoare

    alert \a 7

    backslash \\ 92

    backspace \b 8

    carriage return \r 13

    ghilimea \" 34

    formfeed \f 12tab orizontal \t 9

    newline \n 10

    caracterul nul \0 0

    apostrof \' 39

    tab vertical \v 11

    20

    n funciile "printf()" i "scanf()",pentru formatul caracter se folosete%c.

    printf("%c", 'a');

    va tipri a

    printf("%c%c%c",A,B,C);va tipri ABC

    printf("%d", 'a');

    va tipri 97

    printf("%c", 97);

    va tipri a

    Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    21/22

    Tipuridedate char

    Pentru citirea unui caracter de la tastatur se folosestegetchar(), iar pentru scrierea unui caracter pe ecranputchar()(n ).

    Folosite pentru citirea i scrierea caracterelor.#include

    main()

    {

    char c;

    while (1)

    {

    c=getchar();

    putchar(c);

    } }

    21 Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]

  • 7/31/2019 Limbaj de programare C4

    22/22

    Tipuridedate char

    Alt variant:

    while ((c = getchar()) != EOF){

    putchar(c);

    }

    n biblioteca , exist o linie n care se declar#define EOF (-1) (EOF provine de la "endoffile)

    EOF = CTRL+Z

    22 Limbajedeprogramare Conf.dr.L.STOLERIU [email protected]