001 cursul5 spam

8
Programarea Calculatoarelor (limbajul C) Curs 4 – Operatori şi Modul de Evaluare al Expresiilor Universitatea “Politehnica” din Bucureşti Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei Ş.l. Bogdan IONESCU Prof. Dragoş BURILEANU Prof. Claudius DAN 2010-2011 2 Cuprins 4.1. Operatori şi modul de evaluare al expresiilor 4.2. Instrucţiuni de scriere şi citire Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 1/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 2/44 4.1. Operatori şi modul de evaluare al expresiilor Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 3/44 Operatorii folosiţi în limbajul C > Am vorbit până acum de variabile şi constante, precum şi de tipuri de date, dar cum ne folosim de valorile acestora pentru efectuarea anumitor calcule ? pe baza operatorilor > În limbajul C, spre deosebire de alte limbaje de programare în care operatorii sunt definiţi folosind cuvinte cheie, operatorii sunt definiţi folosind simboluri ce nu fac parte din alfabet, dar care sunt disponibile pe orice tip de tastatură. acest lucru face ca limbajul C să fie mai compact, precum şi mai accesibil pentru toate limbile. Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 4/44 Operatorii folosiţi în limbajul C (continuare) > Limbajul C propune următorii operatori: A. operatorul de atribuire, B. operatori aritmetici, D. operatori de incrementare şi decrementare, E. operatori relaţionali, F. operatori logici, G. operatorul virgulă, H. operatori de lucru cu biţi, I. operatorul de forţare a tipului, J. operatorul sizeof(), C. operatori de atribuire mixtă, Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 5/44 Operatorii folosiţi în limbajul C (continuare) A. Operatorul de atribuire Exemplu: a = 3; a = b; > În limbajul C atribuirea unei valori unei variabile se face folosind “=”. a ia valoarea 3 a ia valoarea lui b B. Operatorii aritmetici operatori clasici: “+(adunare), “-(scădere), *(înmulţire) şi “/(împărţire), operatorul modulo: “%” (restul împărţirii întregi, doar pentru numere întregi) Exemplu: 5 % 3 = 2 3 % 1 = 0

Upload: bogdan6

Post on 08-Nov-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

  • Programarea Calculatoarelor(limbajul C)

    Curs 4 Operatori i Modul deEvaluare al Expresiilor

    Universitatea Politehnica din BucuretiFacultatea de Electronic, Telecomunicaii i

    Tehnologia Informaiei

    .l. Bogdan IONESCUProf. Drago BURILEANUProf. Claudius DAN

    2010-2011 2

    Cuprins

    4.1. Operatori i modul de evaluare al expresiilor

    4.2. Instruciuni de scriere i citire

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 1/44

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 2/44

    4.1. Operatori i modul de evaluare al expresiilor

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 3/44

    Operatorii folosii n limbajul C

    > Am vorbit pn acum de variabile i constante, precum i

    de tipuri de date, dar cum ne folosim de valorile acestora

    pentru efectuarea anumitor calcule ?

    pe baza operatorilor

    > n limbajul C, spre deosebire de alte limbaje de programare

    n care operatorii sunt definii folosind cuvinte cheie, operatorii

    sunt definii folosind simboluri ce nu fac parte din alfabet, dar

    care sunt disponibile pe orice tip de tastatur.

    acest lucru face ca limbajul C s fie mai compact,

    precum i mai accesibil pentru toate limbile.

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 4/44

    Operatorii folosii n limbajul C (continuare)

    > Limbajul C propune urmtorii operatori:

    A. operatorul de atribuire,

    B. operatori aritmetici,

    D. operatori de incrementare i decrementare,

    E. operatori relaionali,

    F. operatori logici,

    G. operatorul virgul,

    H. operatori de lucru cu bii,

    I. operatorul de forare a tipului,

    J. operatorul sizeof(),

    C. operatori de atribuire mixt,

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 5/44

    Operatorii folosii n limbajul C (continuare)

    A. Operatorul de atribuire

    Exemplu: a = 3;

    a = b;

    > n limbajul C atribuirea unei valori unei variabile se face

    folosind =.

    a ia valoarea 3

    a ia valoarea lui b

    B. Operatorii aritmetici

    operatori clasici: + (adunare), - (scdere),

    * (nmulire) i / (mprire),

    operatorul modulo: % (restul mpririi ntregi, doar

    pentru numere ntregi)Exemplu: 5 % 3 = 2

    3 % 1 = 0

  • 7Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 6/44

    mprirea ntreag: / (acelai operator de mprire)

    Cum se specific c este vorba de o mprire ntreag ?

    Exemplu: 13 / 3 = 4

    13.0 / 3 = 4.33

    dac numerele sunt ntregi mprire ntreag, dac un numr este real mprire real.

    Operatorii folosii n limbajul C (continuare)

    B. Operatorii aritmetici (continuare)

    Exemple:

    ...float x;x=23/3;...

    ???

    ...float x=3.5,y;y=x/5;...

    ???

    x=7.00 y=0.7

    8

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 7/44

    Operatorii folosii n limbajul C (continuare)

    C. Operatorii de atribuire mixt

    > Exist o modalitate de scriere prescurtat a operaiilor de

    atribuire pentru a facilita utilizarea lor direct n alte expresii.

    Form general:

    =

    +, -, *, /, %

    Rezultat:

    =

    Exemple: i+=3;

    x*=y+2;

    i=i+3;

    a%=14;

    x=x*(y+2);

    a=a%14;

    > Acetia sunt: ++ i respectiv --.

    y++; este echivalentul scrierii y=y+1;

    y--; este echivalentul scrierii y=y-1;

    Operatorii folosii n limbajul C (continuare)

    D. Operatorii de incrementare i decrementare

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 8/44

    > Motivaie: sunt mai rapizi dect executarea clasic a

    operaiei de atribuire.

    > Pot fi utilizati att ca prefix ct i ca sufix, eficientiznd astfel

    scrierea operaiilor (++x sau x++, --y sau y--).

    Exemplu:

    ...x=((++z) (w--)) % 100;...

    z=z+1;

    x=(z-w) % 100;

    w=w-1;10

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 9/44

    Operatorii folosii n limbajul C (continuare)

    E. Operatorii relaionali

    > n limbajul C se folosesc urmtorii operatori relaionali:

    operatori clasici: > (mai mare), 3) && (154) = 1 (Adevrat)

    &&i logic -

    0 && 0 = 01 && 0 = 00 && 1 = 01 && 1 =1

    12Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 11/44

    (10>3) || (154)) = 0 (Fals)

    negarea - !

    !0 = 1!1 = 0

  • 13

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 12/44

    Operatorii folosii n limbajul C (continuare)

    F. Operatorii logici (continuare)

    PEnun: i este o variabil ntreag i c este o variabil

    alfanumeric (caracter). S se scrie condiia logic care

    returneaz valoarea 1 dac i mai mic ca 10 i c diferit de

    x, i respectiv valoarea 0 dac i mai mare sau egal cu

    10 sau c are valoarea x:

    (i=10 returneaz 0

    c==x returneaz 0

    14

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 13/44

    Operatorii folosii n limbajul C (continuare)

    G. Operatorul virgul

    > Operatorul , este folosit pentru a separa dou sau mai

    multe expresii ce sunt incluse ntr-o formulare n care de regul

    se ateapt doar o expresie.

    Exemplu:

    a = (b=3, i=i+1, b+2);

    Form general:

    (, ..., ,);

    > Se evalueaz toate expresiile, dar n cazul n care se

    folosete valoarea operatorului atunci doar ultima expresie este

    returnat.

    b3, ii+1, ab+2=5

    15

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 14/44

    Operatorii folosii n limbajul C (continuare)

    H. Operatorii de lucru cu bii

    > Acetia modific variabilele pe baza modificrii valorilor

    binare ce corespund acestora.

    Operator Echivalent Descriere

    & I operaia logic I pe bii

    | SAU operaia logic SAU pe bii

    ^

    ^^

    ^ SAU excl. operaia logic SAU excl. pe bii

    ~

    ~ ~

    ~ negaie operaia de inversare bii

    >

    >> SHR operaia de shiftare pe bii

    16

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 15/44

    Operatorii folosii n limbajul C (continuare)

    I. Operatorul de forare a tipului (casting)

    > Acesta permite conversia temporar a unei date de un

    anumit tip, ntr-un tip de baz ce este specificat de utilizator.

    Form general:

    ()

    Exemple:

    int

    intint

    int i;

    float

    floatfloat

    float f=3.14;i=(int)int)int)

    int) f; i=3

    float

    floatfloat

    float x;

    int

    intint

    int y=9;x=(float)float)float)

    float) y/4; x=2.25

    sau C++

    ()

    ex.: x=float(float(float(

    float(y)))

    )/4;

    17

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 16/44

    Operatorii folosii n limbajul C (continuare)

    J. Operatorul sizeof()

    > Acest operator accept un singur parametru i anume, fie

    un tip de dat fie o variabil, i returneaz dimensiunea n

    bytes a acestora.

    > Este necesar la alocarea dinamic a memoriei pentru a

    specifica dimensiunea datelor.

    Exemple:

    int a;a=sizeof(char);

    a=1 int i;double a;i=sizeof(a);

    i=8

    18Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 17/44

    > n limbajul C toi operatorii au o prioritate, iar operatorii cu

    prioritate mai mare sunt evaluai naintea celor cu prioritate

    mai mic.

    > Operatorii cu aceeai prioritate sunt evaluai de la stnga

    la dreapta.

    a - b - cExemplu: este evaluat astfel: (a b) - c

    Precedena operaiilor

    Exemplu: a=5+7%2 este evaluat aa? 5+(7%2)

    sau aa? (5+7)%2

    corect

  • 19Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 18/44

    Precedena operaiilor (continuare)

    > Prioritatea operatorilor n C (de la prioritatea maxim la

    cea minim):

    surs www.cplusplus.com

    20

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 19/44

    Precedena operaiilor (continuare)

    > Exemplu:

    > n general ca s fim siguri de execuia corect a operaiilor

    este recomandat s folosim parantezele.

    a < 10 && 2 * b < c ???

    > S vedem care sunt prioritile:

    nivelul 6 - * (nmulirea)

    nivelul 9 - (relaii)

    nivelul 14 - && (i logic)

    (a < 10) && ((2 * b) < c)

    21Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 20/44

    Evaluarea expresiilor

    > Din evaluarea unei expresii n C rezult o valoare. Tipul i

    implicit valoarea rezultatului unei expresii se stabilesc pe baza

    unor reguli de conversie.

    > Vorbim de reguli de conversie n cazul n care n expresie

    apar constante, variabile i funcii de tipuri diferite.

    > Regulile de conversie de evaluare a unei expresii ce nu

    implic operatorul de atribuire sunt urmtoarele:

    R1. toate datele de tip char i short int sunt convertite la int.

    Toate datele de tip float sunt convertite la double.

    22Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 21/44

    Evaluarea expresiilor (continuare)

    > Regulile de conversie de evaluare a unei expresii ce nu

    implic operatorul de atribuire sunt (continuare):

    R2. pentru toate perechile de operanzi, dac unul dintre

    operanzi este de tip long double, cellalt operand este

    convertit la long double.

    R3. dac unul dintre operanzi este de tip double, cellalt

    operand este convertit la double.

    R4. dac unul dintre operanzi este long, cellalt operand este

    convertit la long.

    R5. dac unul dintre operanzi este unsigned, cellalt operand

    este convertit la unsigned.

    23

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 22/44

    Evaluarea expresiilor (continuare)

    > Pentru operaia de atribuire, regula de conversie de tip este:

    RA. valoarea din partea dreapt a operatorului de atribuire

    (=) este convertit la tipul variabilei din partea stng. Dac

    aceast conversie nu este posibil, compilatorul va semnala o

    eroare.

    Concluzie: ntotdeauna are loc evaluarea expresiei din partea

    dreapt aplicndu-se regulile de conversie R1-R5 i dup

    aceea se aplic regula RA pentru operaia de atribuire.

    R1 R2 R3 R4 R5 RA

    24

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 23/44

    Evaluarea expresiilor (continuare)

    > Exemplu:

    char

    charchar

    char ch;

    int

    intint

    int i;float f;double d, rezultat;

    rezultat = (ch

    rezultat = (chrezultat = (ch

    rezultat = (ch / i

    / i/ i

    / i)

    ))

    ) + (f * d)

    + (f * d) + (f * d)

    + (f * d)

    (f + i);

    (f + i);(f + i);

    (f + i);

    int double double

    int double double

    double

    double

    double

  • 25Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 24/44

    4.2. Instruciuni de scriere i citire

    26Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 25/44

    > n aceast seciune vom discuta despre instruciunile clasice

    de scriere i citire a datelor n limbajul C.

    - instruciunea printf (scriere date),

    - instruciunea scanf (citire date).

    Instruciuni de scriere i citire a datelor

    acestea se gsesc n biblioteca

    > Vom vorbi despre:

    27Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 26/44

    Instruciuni de scriere a datelor

    Instruciunea printf

    int

    intint

    int printf (const char *format, a, b, 15, ... );

    Prototipul funciei:

    > Instruciunea printf scrie pe dispozitivul standard de ieire

    (stdout, de regul ecran), o secven de date formatat.

    format (ir de caractere) specific modul de afiare (formatare) ct i tipul datelor afiate

    dup , se specific variabilele sau constantele

    anunate n format.

    28Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 27/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    printf(Acesta este un text simplu);

    Exemplu simplu:

    c:\>Acesta este un text simplu

    > Modul de formatare (irul de caractere) este specificat

    ntre i (precum un string),

    > n cazul n care nu inserm variabile sau constante nu se mai

    folosete enumerarea de dup ,.

    > irul de caractere furnizat este afiat ntocmai (respectnd

    spaiile existente).

    29Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 28/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    > irul de caractere specificat poate conine att text ct i

    parametri de afiare ce vor fi interpretai i substituii la

    afiare cu argumentele specificate dup , (variabile, valori, ...).

    > Modul de specificare al parametrilor de afiare este

    urmtorul:

    %[indicatori][lime][.precizie][lungime]specificator

    caracterul special %: specific faptul c vrem s afim

    o variabil sau constant. Este nlocuit la afiare cu valoarea

    argumentului corespunztor de dup ,

    [ ] nseamn opional

    30Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 29/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    %[indicatori][lime][.precizie][lungime]specificator

    specificator: (obligatoriu) specific tipul i modul de afiare

    a valorii argumentului.

    > Cei mai frecvent folosii specificatori sunt:

    c tipul caracter (char)

    d sau i tipul ntreg (decimal: signed int)

    e sau E tipul real n scrierea tiinific

    f tipul real (float) 3.9265eeee-2 = 3.9265x10-2

    s tipul ir de caractere (string)

    % se afieaz caracterul rezervat %

  • 31Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 30/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    %[indicatori][lime][.precizie][lungime]specificator

    indicatori: (opionali) specific s zicem detalii de afiare:

    - - aliniere a textului la stnga pe limea specificat

    (implicit este la dreapta)

    0 - bordeaz numrul cu zerouri la stnga n loc de

    spaii dac se specific limea de afiare.

    lime: (opional) specific numrul minim de caractere pe

    care va fi afiat valoarea argumentului. Surplusul de caractere

    alocate nefolosite este bordat cu spaii.

    + - foreaz afiarea semnului chiar dac numrul

    este pozitiv,

    32Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 31/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    %[indicatori][lime][.precizie][lungime]specificator

    .precizie: (opional)

    - pentru valori ntregi: specific numrul minim de cifre (digii) cu care va fi afiat valoarea (nu trunchiaz),

    - pentru valori reale: specific numrul de cifre (digii) de dup virgul (rotunjete),

    - pentru iruri de caractere: specific numrul maxim de caractere ce vor fi afiate (trunchiaz),

    lungime: (opional) specific mai precis tipul datei:

    h - short int sau unsigned short int,

    l - long int sau unsigned long int.

    33Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 32/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    Exemple:

    printf

    printfprintf

    printf("Caractere: %c%c%c

    %c %c

    %c%c

    %c", 'a', 65);

    c:\>Caractere: a A

    printf

    printfprintf

    printf(Valori intregi: %%%

    %i %%%

    %ld", 1977, 650000);

    c:\>Valori intregi: 1977 650000

    printf

    printfprintf

    printf(Precedat de spatii: %%%

    %10d", 1977);

    c:\>Precedat de spatii: 1977

    34Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 33/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    printf

    printfprintf

    printf(Precedat de zerouri: %%%

    %010d", 1977);

    c:\>Precedat de zerouri: 0000001977

    printf

    printfprintf

    printf(Numere reale: %4.2f%4.2f%4.2f

    %4.2f %+.0e

    %+.0e%+.0e

    %+.0e %E

    %E %E

    %E ", 3.1416, 3.1416, 3.1416);

    c:\>Numere reale: 3.14 +3e+000 3.141600E+000

    printf

    printfprintf

    printf( %

    %%

    %s, Un sir de caractere);

    c:\> Un sir de caractere

    Exemple (continuare):

    35Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 34/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    > Exist i o serie de comenzi speciale de formatare:

    \n - new line: la ntlnirea acestei comenzi cursorul trece pe

    linie nou (echivalent tast Enter),

    \t - tab: la ntlnirea acestei comenzi cursorul avanseaz

    un anumit numr de caractere la dreapta (echivalent tast Tab),

    Exemplu:

    int i=10; float x=3.14;printf(i=%%%

    %d \n x=%f%f%f

    %f", i, x);

    i=10x=3.14

    36

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 35/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    PEnun: folosind instruciunea printf s se afieze pe

    ecran valorile reale 3.12, 34.5, 400.0, 56.789, cu 3

    zecimale, sub forma unui tablou (se folosete indentarea)

    Soluie:

    printf(Solutia este\n");printf("%8.3f \t %8.3f \n", 3.12, 34.5);printf("%8.3f \t %8.3f", 400.0, 56.789);

    3.120 34.500400.000 56.789

  • Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 36/44

    Instruciunea scanf

    int

    intint

    int scanf (const char *format, &a, &b, ... );

    Prototipul funciei:

    > Instruciunea scanf permite citirea datelor de pe dispozitivul

    standard de intrare (stdin, de regul tastatur), i le stocheaz

    n locaiile de memorie specificate de utilizator (pointeri).

    Instruciuni de citire a datelor

    dup , se specific unde vor fi stocate datele

    (adrese de memorie)

    format (ir de caractere) specific tipul datelor citite.

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 37/44

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    > Modul de formatare a datelor (irul de caractere format)

    este specificat ntre i (precum un string),

    scanf(%d, &a);

    Exemplu simplu:- se ateapt introducerea de la tastatur a unui numr ntreg ce va fi stocat n variabila a.

    > Dup , urmeaz specificarea locaiei de memorie unde va

    fi stocat valoarea introdus.

    00110010

    n memorie:

    10110111 00000000

    adres 10 adres 11 adres 12

    desemnat

    de a (valoare)

    desemnat

    de &a (adres)

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 38/44

    > irul de caractere format, ce specific tipul datelor citite,

    poate conine urmtoarele informaii:

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    - spaii goale (whitespace): funcia va ignora toate

    spaiile goale indiferent de cantitate (aceasta include

    spaiile, tab i linie nou),

    - alte caractere diferite de spaiu i % : orice alt caracter

    ce nu este spaiu sau alt caracter ce face parte din

    specificarea formatului datelor are ca efect:

    citirea de la tastatur a unui caracter, i compararea acestuia cu caracterul n cauz, dac ==, nu este luat n calcul i funcia continu cu urmtorul caracter din irul format, dac != exit.

    40

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 39/44

    > irul de caractere format, ce specific tipul datelor citite,

    poate conine urmtoarele informaii (continuare):

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    - specificatori de format: acetia specific tipul i modul n

    care vor fi introduse datele:

    %[*][lime][modificatori]tipdate

    [ ] nseamn opional

    caracterul special %: specific faptul c vrem s citim o

    anumit valoare de la tastatur. Aceasta este stocat la adresa

    specificat dup ,.

    numrul de valori = numrul de adrese.

    41

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 40/44

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    %[*][lime][modificatori]tipdate

    caracterul asterix *: (opional) specific faptul c datele

    primite de la dispozitivul de intrare vor fi ignorate (nu vor fi

    stocate).

    lime: (opional) specific numrul maxim de caractere

    (alfanumerice) ce vor fi citite de la tastatur.

    tipdate: (obligatoriu) specific tipul datelor ce vor fi citite. Se

    folosete aceeai convenie ca la instruciunea printf:

    c tip caracter (char), citete un caracter, dac [lime]

    diferit de 1, funcia citete N=lime caractere i le stocheaz

    n locaii succesive ale vectorului specificat ca argument.42

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 41/34

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    %[*][lime][modificatori]tipdate

    tipdate: (continuare) :

    d tip ntreg cu semn (decimal integer),

    f, e, E tip real n forma standard sau tiinific (conversie

    implicit la float),

    s tip ir de caractere (char *).

    modificatori: (opional) specific mai precis tipul datei:

    h - short int sau unsigned short int,

    l - long int sau unsigned long int sau double pentru f,e,E.

    u tip ntreg fr semn (unsigned decimal integer),

  • 43

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 42/44

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    Exemple:

    int x,y;scanf(a%%%

    %d %%%

    %d", &x, &y);

    printf(x=%%%

    %d, y=%%%

    %d", x, y);

    c:\> (tastm b enter) ???

    c:\> (tastm a enter 2 enter 4 enter) ???

    int x=20;scanf(%*%*%*

    %*d", &x);

    printf(x=%%%

    %d", x);

    c:\> (tastm 33 enter) ??? x=20

    x=2, y=4

    stop

    44

    Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 43/44

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)

    Exemple:

    int x;scanf(%2%2%2

    %2d", &x);

    printf(x=%%%

    %d", x);

    c:\> (tastm 12345 enter) ???

    int a;float y;scanf(%%%

    %d %f", &a, &y);

    printf(a=%%%

    %d, y=%f%f%f

    %f", a,y);

    c:\> (tastm 10 enter 13e-2 enter) ???

    a=10, y=0.130000

    x=12

    45Curs Programarea Calculatoarelor, .l. Bogdan IONESCU, 2010-2011 44/44

    Sfritul Cursului 4