of 8/8
Programarea Calculatoarelor (limbajul C) Curs 4 Operatori şi Modul de Evaluare al Expresiilor Univer sitate a Politehnicadin Bucu reşti Facultatea de Electronică, Te lecomunicaŃii şi Tehnologia InformaŃiei Ş.l. Bogdan IONESCU Prof. Dr agoş 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 C alculatoarelor, Ş .l. Bogdan IONESCU, 2010-2011 1/44 Curs ProgramareaCa lculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 2/44 4.1. Operatori şi modul de evaluare al expresiilor Curs Programarea C alculatoarelor, Ş .l. Bogdan IONESCU, 2010-2011 3/44 Operatorii folosiŃi în limbajul C > Am v orbit 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 ProgramareaCa lculatoarelor, Ş.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 decrementar e, 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 C alculatoarelor, Ş .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Ńir e) şi /(împărŃire), operatorul modulo: “%” (restul împ ărŃirii întregi, doar pent ru nume re între gi) Exemplu: 5 % 3 = 2 3 % 1 = 0

Programarea Calculatoarelor M4

  • View
    227

  • Download
    0

Embed Size (px)

Text of Programarea Calculatoarelor M4

  • 8/8/2019 Programarea Calculatoarelor M4

    1/8

    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-20112

    Cuprins

    4.1. Operatori i modul de evaluare al expresiilor

    4.2. Instruciuni de scriere i citire

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

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

    4.1. Operatori i modul de evaluare alexpresiilor

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

    Operatorii folosii n limbajul C

    > Am vorbit pn acum de variabile i constante, precum ide tipuri de date, dar cum ne folosim de valorile acestorapentru efectuarea anumitor calcule ?

    pe baza operatorilor

    > n limbajul C, spre deosebire de alte limbaje de programaren care operatorii sunt definii folosind cuvinte cheie, operatoriisunt definii folosind simboluri ce nu fac parte din alfabet, darcare 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 C alculatoarelor, .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 C alculatoarelor, .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 facefolosind =.

    a ia valoarea 3

    a ia valoarea lui b

    B. Operatorii aritmetici

    operatori clasici: + (adunare), - (scdere),* (nmulire) i / (mprire),

    operatorul modulo: % (restul mpririi ntregi, doarpentru numere ntregi)Exemplu: 5 % 3 = 2

    3 % 1 = 0

  • 8/8/2019 Programarea Calculatoarelor M4

    2/8

    7Curs Programarea C alculatoarelor, .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 ntregimprire 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

    8Curs Programarea C alculatoarelor, .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 C alculatoarelor, .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;

    10Curs Programarea C alculatoarelor, .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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 11/44

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

    negarea - !

    !0 = 1!1 = 0

  • 8/8/2019 Programarea Calculatoarelor M4

    3/8

    13Curs Programarea C alculatoarelor, .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 carereturneaz valoarea 1 dac i mai mic ca 10 i c diferit dex, i respectiv valoarea 0 dac i mai mare sau egal cu10 sau c are valoarea x:

    (i=10 returneaz 0

    c==x returneaz 0

    14Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 13/44

    Operatorii folosii n limbajul C (continuare)

    G. Operatorul virgul

    > Operatorul , este folosit pentru a separa dou sau maimulte 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 sefolosete valoarea operatorului atunci doar ultima expresie estereturnat.

    b3, ii+1, ab+2=5

    15Curs Programarea C alculatoarelor, .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 valorilorbinare 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

    16Curs Programarea C alculatoarelor, .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 unanumit tip, ntr-un tip de baz ce este specificat de utilizator.

    Form general:

    ()

    Exemple:

    intintintint i;floatfloatfloatfloat f=3.14;i=(int)int)int)int) f; i=3

    floatfloatfloatfloat x;intintintint y=9;x=(float)float)float)float) y/4; x=2.25

    sau C++

    ()ex.: x=float(float(float(float(y))))/4;

    17Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 16/44

    Operatorii folosii n limbajul C (continuare)

    J. Operatorul sizeof()

    > Acest operator accept un singur parametru i anume, fieun tip de dat fie o variabil, i returneaz dimensiunea nbytes 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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 17/44

    > n limbajul C toi operatorii au o prioritate, iar operatorii cuprioritate mai mare sunt evaluai naintea celor cu prioritatemai mic.

    > Operatorii cu aceeai prioritate sunt evaluai de la stngala 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

  • 8/8/2019 Programarea Calculatoarelor M4

    4/8

    19Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 18/44

    Precedena operaiilor (continuare)

    > Prioritatea operatorilor n C (de la prioritatea maxim lacea minim):

    surs www.cplusplus.com

    20Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 19/44

    Precedena operaiilor (continuare)

    > Exemplu:

    > n general ca s fim siguri de execuia corect a operaiiloreste 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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 20/44

    Evaluarea expresiilor

    > Din evaluarea unei expresii n C rezult o valoare. Tipul iimplicit valoarea rezultatului unei expresii se stabilesc pe bazaunorreguli de conversie.

    > Vorbim de reguli de conversie n cazul n care n expresieapar 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 chari short int sunt convertite la int.Toate datele de tip float sunt convertite la double.

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

    Evaluarea expresiilor (continuare)

    > Regulile de conversie de evaluare a unei expresii ce nuimplic operatorul de atribuire sunt (continuare):

    R2. pentru toate perechile de operanzi, dac unul dintreoperanzi este de tip long double, cellalt operand esteconvertit la long double.

    R3. dac unul dintre operanzi este de tip double, cellaltoperand este convertit la double.

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

    R5. dac unul dintre operanzi este unsigned, cellalt operandeste convertit la unsigned.

    23Curs Programarea C alculatoarelor, .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. Dacaceast conversie nu este posibil, compilatorul va semnala oeroare.

    Concluzie: ntotdeauna are loc evaluarea expresiei din parteadreapt aplicndu-se regulile de conversie R1-R5 i dup

    aceea se aplic regula RA pentru operaia de atribuire.

    R1 R2 R3 R4 R5 RA

    24Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 23/44

    Evaluarea expresiilor (continuare)

    > Exemplu:

    charcharcharcharch;

    intintintint i;float f;double d, rezultat;

    rezultat = (chrezultat = (chrezultat = (chrezultat = (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

  • 8/8/2019 Programarea Calculatoarelor M4

    5/8

    25Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 24/44

    4.2. Instruciuni de scriere i citire

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

    > n aceast seciune vom discuta despre instruciunile clasicede 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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 26/44

    Instruciuni de scriere a datelor

    Instruciunea printf

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

    Prototipul funciei:

    > Instruciunea printfscrie pe dispozitivul standard de ieire(stdout, de regul ecran), o secven de date formatat.

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

    dup , se specificvariabilele sau constantele

    anunate n format.

    28Curs Programarea C alculatoarelor, .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 specificatntre i (precum un string),

    > n cazul n care nu inserm variabile sau constante nu se maifolosete enumerarea de dup ,.

    > irul de caractere furnizat este afiatntocmai (respectndspaiile existente).

    29Curs Programarea C alculatoarelor, .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 iparametri de afiare ce vor fi interpretai i substituii laafiare cu argumentele specificate dup , (variabile, valori, ...).

    > Modul de specificare al parametrilor de afiare esteurmtorul:

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

    caracterul special %: specific faptul c vrem s afimo variabil sau constant. Este nlocuit la afiare cu valoareaargumentului corespunztor de dup ,

    [ ] nseamn opional

    30Curs Programarea C alculatoarelor, .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 afiarea 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 %

  • 8/8/2019 Programarea Calculatoarelor M4

    6/8

    31Curs Programarea C alculatoarelor, .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 despaii dac se specific limea de afiare.

    lime: (opional) specific numrul minim de caractere pe

    care va f i afiat valoarea argumentului. Surplusul de caracterealocate nefolosite este bordat cu spaii.

    + - foreaz afiarea semnului chiar dac numruleste pozitiv,

    32Curs Programarea C alculatoarelor, .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 maximde 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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 32/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    Exemple:

    printfprintfprintfprintf("Caractere: %c%c%c%c %c%c%c%c", 'a', 65);

    c:\>Caractere: a A

    printfprintfprintfprintf(Valori intregi: %%%%i %%%%ld", 1977, 650000);

    c:\>Valori intregi: 1977 650000

    printfprintfprintfprintf(Precedat de spatii: %%%%10d", 1977);

    c:\>Precedat de spatii: 1977

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

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    printfprintfprintfprintf(Precedat de zerouri: %%%%010d", 1977);

    c:\>Precedat de zerouri: 0000001977

    printfprintfprintfprintf(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

    printfprintfprintfprintf( %%%%s, Un sir de caractere);

    c:\> Un sir de caractere

    Exemple (continuare):

    35Curs Programarea C alculatoarelor, .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 avanseazun 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

    36Curs Programarea C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 35/44

    Instruciuni de scriere a datelor (continuare)

    Instruciunea printf (continuare)

    PEnun: folosind instruciunea printf s se afieze peecran valorile reale 3.12, 34.5, 400.0, 56.789, cu 3zecimale, 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

  • 8/8/2019 Programarea Calculatoarelor M4

    7/8

    Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 2010-2011 36/44

    Instruciunea scanf

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

    Prototipul funciei:

    > Instruciunea scanfpermite citirea datelor de pe dispozitivul

    standard de intrare (stdin, de regul tastatur), i le stocheazn locaiile de memorie specificate de utilizator (pointeri).

    Instruciuni de citire a datelor

    dup , se specificunde vor fi stocate datele

    (adrese de memorie)format (ir de caractere) specifictipul datelor citite.

    Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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 latastatur a unui numr ntreg ce va

    fi stocat n variabila a.

    > Dup , urmeaz specificarea locaiei de memorie unde vafi stocat valoarea introdus.

    00110010

    n memorie:

    10110111 00000000

    adres 10 adres 11 adres 12

    desemnatde a (valoare)

    desemnatde &a (adres)

    Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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 toatespaiile goale indiferent de cantitate (aceasta include

    spaiile, tab i linie nou),

    - alte caractere diferite de spaiu i % : orice alt caracterce nu este spaiu sau alt caracter ce face parte din

    specificarea formatului datelor are ca efect: citirea de la tastatur a unui caracter, i comparareaacestuia cu caracterul n cauz,dac ==, nu este luat n calcul i funcia continu cuurmtorul caracter din irul format, dac != exit.

    40Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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 ncare vor fi introduse datele:

    %[*][lime][modificatori]tipdate

    [ ] nseamn opional

    caracterul special %: specific faptul c vrem s citim oanumit valoare de la tastatur. Aceasta este stocat la adresaspecificat dup ,.

    numrul de valori = numrul de adrese.

    41Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 2010-2011 40/44

    Instruciuni de citire a datelor (continuare)

    Instruciunea scanf (continuare)%[*][lime][modificatori]tipdate

    caracterul asterix *: (opional) specific faptul c dateleprimite de la dispozitivul de intrare vor fi ignorate (nu vor fistocate).

    lime: (opional) specific numrul maxim de caractere

    (alfanumerice) ce vor fi citite de la tastatur.

    tipdate: (obligatoriu) specific tipul datelor ce vor fi citite. Sefolosete 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 stocheazn locaii succesive ale vectorului specificat ca argument.

    42Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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 (conversieimplicit la float),s tip ir de caractere (char *).

    modificatori: (opional) specific mai precis tipul datei:h - short intsau unsigned short int,

    l - long intsau unsigned long intsau double pentru f,e,E.

    u tip ntreg fr semn (unsigned decimal integer),

  • 8/8/2019 Programarea Calculatoarelor M4

    8/8

    43Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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

    44Curs Programarea C alculatoarelor, .l. Bogdan I ONESCU, 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 C alculatoarelor, .l. Bogdan IONESCU, 2010-2011 44/44

    Sfritul Cursului 4