programarea calculatoarelorcap 2

Upload: pstraja

Post on 30-May-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 programarea calculatoarelorCap 2

    1/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    CAPITOLUL 2

    Etapele realizrii i testrii unui program scris n limbajul C

    Tehnologia informaiei se sprijin pe microcalculator. Din punct de vedere structural acesta

    cuprinde 2 pri eseniale: suport tehnic pentru prelucrarea informaiei, acceptat pentrudenumirea de hardware i totalitatea programelor care asigur utilizarea resurselor tehnicedenumite software.

    Pentru a avea acces la resursele calculatorului trebuie scrise programe n limbajerecunoscute de microcalculator. Orice limbaj este tradus n codrul intern, denumit limbajulintern al microprocesorului, de catre compilatoare, translatoare sau asambloare. Limbajul C este un limbaj structurat, flexibil, portabil i destul de prietenos. Instruciunilesunt mai apropiate de operaiile raionamentului uman. Pentru traducerea lor n cod main,un program numit compilator traduce fiecare instruciune ntr-un grup de instruciuni main.

    Programarea este activitatea de codificare a algoritmilor n calculator. Procesul deprogramare are 4 pai:

    specificarea task-urilor;descoperirea unui algoritm pentru soluia sa;codificarea algoritmului n limbajul C;testarea codului.

    Dac ne referim la structura interna a unui microcalculator din punct de vedere alprogramatorului, atunci aceasta se poate reduce la 4 blocuri funcionale:memoria;microprocesorul;dispozitivele de intrare-ieire;magistrala (asigur conectarea componentelor).

    Fig.1 Schema bloc a unui microcalculator.

    Procesorul lucreaz cu instruciuni care sunt nregistrate n memorie. Pe lng acesteinstruciuni, n memorie sunt pstrate i date.

    Un cod C se numeste cod surs, iar un fiier ce conine un cod surs se numete fiiersurs. Dupa ce a fost creat un fiier surs se invoc un compilator C. Dac nu sunt erori, nurma acestei operaii, se produce fiierul executabil asociat.

    editare compilare execuie.Toate programele C au anumite componente i trasturi comune, programele n C au

    urmatoarea structur:Directive preprocesareDeclaraii globaleFuncii

    18

    MemoriaROMRAM

    Microprocesor I 80X86

    Dispozitive I/Otastatur,display,

    imprimant,porturi

  • 8/14/2019 programarea calculatoarelorCap 2

    2/10

  • 8/14/2019 programarea calculatoarelorCap 2

    3/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    - spun compilatorului ct spaiu de memorie trebuie rezervat pentru memorarea acestorvariabile;- permit compilatorului s instruiasc maina pentru a face operaiile specifice corect;

    n limbajul C avem urmatoarele tipuri fundamentale de date:

    Tip Semnificaie Cuvnt cheiecaracter dat caracter char

    ntreg numr ntreg cu semn int

    virgula flotanta numr cu zecimale float

    dubla precizienumr cu zecimale

    reprezentat n dublprecizie

    double

    void fr valoare void

    Aceste tipuri de date, cu exceptia tipului void, pot fi modificate folosind modificarii detip:

    signedunsigned

    longshort.

    Modificrile de tip preced irul de dat ca n exemplul de mai jos, unde se declar unntreg long.

    long int i;n tabelul urmtor sunt prezentate combinaii ntre tipurile de date i modificari,

    lungimea de reprezentare n biti i domeniul de valori pe care le pot conine:

    Tip Lungime n bii Domeniu de valorichar 8 -128 la 127

    unsigned char 8 0 la 255

    signed char 8 -125 la 127

    int 16 -32768 la 32767

    unsigned int 16 0 la 65535

    short int 16 -32768 la 32767

    unsigned short int 16 0 la 65535

    long int 32 -2142483648 la2147483647

    unsigned long int 32 0 la 4294967295

    float 32 3.4 E -38 la 3.4 E + 38

    double 64 1.7 E 308 la 1.7 E + 308long double 80 3.4 E 4932 la

    1.1E + 4932

    Tipul de date char

    Este unul din tipurile fundamentale din limbajul C, constantele si variabilele de acesttip fiind folosite pentru reprezentarea caracterelor.

    Limbajul C folosete irul de caractere al codului ASCII care se codific prin numerentregi n intervalul [0 , 127], adic 128 de coduri.

    Mulimea caracterelor se mparte n trei grupe:

    20

  • 8/14/2019 programarea calculatoarelorCap 2

    4/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    -caractere negrafice (coduri cuprinse ntre 00 = NULL i 31 precum i 127 DELL);-spaiu (codul 32);-caractere speciale (coduri cuprinse ntre 33 si 126).Caracterele grafice se mpart la randul lor n:-litere mari (coduri ntre 65 si 90);-litere mici (coduri ntre 97 si 122);-cifre ( coduri ntre 48 si 59);-caractere speciale (celelalte coduri);

    Aplicaie:S se realizeze programul care citete o liter i afieaz codul su ASCII.

    Specificarea problemei:Date de intrare: c - un caracter citit de la tastatur;

    Date de ieire: afiarea codului ASCII;Date de test: Introducei un caracter: A

    Codul su ASCII este: 65Programul corespunztor este:

    #include #include void main ( ){char c;clrscr( );printf ("Introduceti un caracter: ");c = getchar ( );printf (" Codul sau ASCII este: %d" , c);}

    Analiza problemei:

    n corpul funciei principale se declar variabila cu urmtoarea semnificaie:c reprezint variabila n care se depune codul ASCII al caracterului;

    Cu ajutorul funciei printfse va afia la consol "Introducei un caracter:". Funciagetchar este folosit pentru a citi caracterul i prin asocierea c = getchar() se va depune nvariabila c codul ASCII al caracterului. Cnd funcia getchar este apelat, ea ateapt pncnd se apas o tast, apoi afieaz pe ecran caracterul citit i trimite acest caracter ctreapelant. Aceast funcie necesit includerea fiierului stdio.h.

    La sfrit, folosind funcia standard printfse va afia aceast variabil.

    Tipul de date int

    Acest tip de date este cel mai folosit in limbajul C, acesta permind o formprescurtat de declarare a ntregilor modificai cu signed, unsigned, short sau long, n sensul ctipul int poate s lipseasc, fiind implicit.

    Urmtoarele declaraii sunt echivalente:unsigned count;

    unsigned int count;

    21

  • 8/14/2019 programarea calculatoarelorCap 2

    5/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    Aplicaie: S se realizeze programul care cere utilizatorului s introduc o valoare de tip unsigned,o valoare de tip long i o valoare de tip short, iar apoi s afieze aceste valori.Specificarea problemei:

    Date de intrare: u, l, s - valori de tip unsigned long i short;Date de ieire: afiarea valorilor;

    Date de test: Introduceti o valoare unsigned: 3Introduceti o valoare long: 2233333Introduceti o valoare short: 233 2233333 23

    Programul corespunztor este:#include #include void main ( ){unsigned u;long l ;

    short s;clrscr( );printf("Introduceti o valoare unsigned: ");scanf("%d",&u);printf("Introduceti o valoare long: ");scanf("%ld",&l);printf(" Intoduceti o valoare short: ");scanf("%hd",&s);printf("%d %ld %hd\n",u,l,s);getch( );

    }

    Analiza problemei:n corpul funciei principale se declar variabile cu urmtoarea semnificaie:u reprezint variabila n care se depune valoare de tip unsigned;l - reprezint variabila n care se depune valoare de tip long;s reprezint variabila n care se depune valoare de tip short;

    Cu ajutorul funciei printf se vor afia la consol mesajele prin care se cereutilizatorului s introduc valorile. Apoi, cu ajutorul funciei scanf se vor citi aceste valori.Cnd afim ntregi modificai prin short sau long folosind printf, nu se poate folosi doarspecificatorul %d, deoarece trebuie s tie ce fel de date va primi. Atunci cnd se utilizeazfuncia printfpentru a afia un short, trebuie folosit specificatorul de format %hd, pentru aafisa un long se va folosi formatul %ld iar pentru o valoare unsigned se va utiliza formatul

    %d.Funcia standard printf ()

    Forma general a funciei standard printfeste urmtoarea:

    printf(control,par1,par2,parn);control - poate fi text sau/i specificatori de format;par1, par2,parn - pot fi expresii ale cror valori se scriu conform specificatorilor deformat.

    Specificatorii de format ai functiei printfsunt prezentai n tabelul urmtor:

    22

  • 8/14/2019 programarea calculatoarelorCap 2

    6/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    Cod Semnificaie%c Afieaz un caracter%d Afieaz un ntreg cu semn%i Afieaz un ntreg cu semn%e Notaie tiinific, format cu exponent%f Afieaz un numr float%g Folosete pe cel mai scurt ditre %e i %f%o Afieaz un ntreg n format octal fr semn%s Afieaz un ir de caractere%x Afieaz un hexazecimal fr semn%p Afieaz un pointer%n Argumentul asociat va fi un pointer ntreg n care este plasat numrul de caractere

    scrise anterior%u Afieaz un ntreg fr semn%% Afieaz semnul %

    Codurile Backslash ale limbajului C sunt prezentate n tabelul urmtor:

    Cod Semnificatie

    \b Backspace\f Form feed\n New line\r Carriage return\t Horizontal tab\ " Double quote\ Single quote\0 Null

    \\ Backslash\v Vertical tab\a Bell\N Octal constant (unde N este o

    constant octal)\xN Hexazecimal constant(unde

    N este o constant hexa)

    Cel mai utilizat cod backslash este \n. Cnd compilatorul C ntlnete acest cod, el ltranslateaz ntr-o operaie de trecere la linie nou.

    Prototipul funciei printfse afl n stdio.h.

    Aplicaia 1:S se realizeze programul care folosind specificatorii de format s afieze la consol :

    dou 3 7.43 L.Date de test: Multitudinea de argumente: doua 3 7.43 LProgramul corespunztor este:

    #include#include void main(){clrscr( );

    23

  • 8/14/2019 programarea calculatoarelorCap 2

    7/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    printf( Multitudinea de argumente: %s %d %1.2f %c \n , doua , 3,7.43, L);getch( );}

    Analiza problemei:Argumentele funciei printf sunt separate de virgul, deci avem 5 argumente.

    % s doua

    % d 3% f 7,43% c L

    Formatul % mfspecific lungimea cmpului, formatul %.nfspecific precizia.

    Aplicaia 2:S se realizeze programul care, folosind specificatorii de format, s afieze la consol:

    numere: 4.0 5.00 6.000 7.0000.Date de test: numere: 4.0 5.00 6.000 7.0000Programul corespunztor este:

    #include

    #include void main(){clrscr(); printf(" numere:%7.1f%7.2f%7.3f%7.4f", 4.0,5.0,6.0,7.0);getch();}

    Analiza problemei:Argumentele funciei standard printf sunt separate de virgul, deci avem 4

    argumente. Formatul % mf specific lungimea cmpului, formatul %.nf specific precizia,astfel s-a putut realiza afiajul cu lungimea i precizia dorit.

    Aplicaia 3:S se realizeze programul care, folosind specificatorii de format, s afieze la consol:

    Imi place limbajul C foarte, foarte multDate de test: Imi place limbajul C foarte, foarte mult!Programul corespunztor este:

    #include #include void main(){clrscr();

    printf("Imi place limbajul %c %s",'C',"foarte, foarte mult!");getch();}

    Analiza problemei:Argumentele funciei standard printf sunt separate de virgul, deci avem 2

    argumente. S-a folosit specificatorul de format %c pentru a afia caracterul C i specificatorulde format %s pentru a afia un ir de caractere foarte, foarte mult!. Funcia clrscr a fostfolosit pentru tergerea ecranului.

    24

  • 8/14/2019 programarea calculatoarelorCap 2

    8/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    Funcia standard scanf

    Funcia standard scanfeste asemntoare cu funcia standard printffiind folosit pentruintrari n loc de ieiri.

    Forma general a funciei standard scanf este urmtoarea:

    scanf (control,par1,par2,parn);control - identic cu cel de la funcia printf;par1, par2, .parn - zone receptoare ale datelor.Specificatorii de format ai funciei scanfsunt prezentai n tabelul urmtor:

    Cod Semnificaie

    %c Citete un caracter%d Citete un ntreg zecimal%i Citete un ntreg zecimal%e Citete un numar float%f Citete un numar float

    %g Citete un numar float%o Citeste un numr octal fr semn%s Citeste un ir de caractere%x Citete un numr hexazecimal fr semn%p Citete un pointer%n Argumentul asociat primete o valoare ntreag egal cu numrul. de caractere

    deja citite%u Citete un ntreg fr semn

    %[ ] Scanare pentru un set de caractere

    Aplicaia 1:

    S se realizeze programul care cere utilizatorului s introduc o valoare de tip ntreg io valoare de tip float, citete aceste valori i apoi le afieaz.Specificarea problemei:

    Date de intrare: num, fl - valorile de tip ntreg i de tip float;Date de ieire: afiarea valorilor citite;

    Date de test: Introduceti un numr intreg: 2Introduceti un numr float: 3.456782 3.456780

    Programul corespunztor este:#include #include

    void main ( ){int num;float fl;clrscr();printf("Introduceti un numar intreg: ");scanf("%d",& num);printf("Introduceti un numar float:");scanf("%f",& fl);printf("%d %f",num,fl);

    getch(); }

    25

  • 8/14/2019 programarea calculatoarelorCap 2

    9/10

    Etapele realizrii i testrii unui program scris n limbajul C.

    Analiza problemei:n corpul funciei principale se declar variabile cu urmtoarea semnificaie:num - reprezint variabila de tip ntreg;fl - reprezint variabila de tip float;

    Cu ajutorul funciei standard printfse va afisa la consol mesajul "Introducei unnumr ntreg " iar cu ajutorul functiei standard scanfse va citi valoarea acestui ntreg. Acelailucru se realizeaz pentru numrul de tip float. Apoi se afieaz cele doua numere num i fl.

    Aplicaia 2: S se realizeze programul care cere utilizatorului s introduc raza unui cerc iar apoicalculeaz aria acestuia.Specificarea problemei:

    Date de intrare: raza - raza cercului;Date de ieire: aria - aria cercului;

    Date de test: Introducei raza cercului: 2Aria=Pi*raza*raza=12.566371

    Programul corespunztor este:#include

    #include #define pi 3.141592653589793void main(){ double raza;clrscr() ;printf("Introduceti raza cercului: ");scanf("%lf",&raza);printf("Aria=Pi*raza*raza=%lf",pi*raza*raza);

    getch(); }Analiza problemei:

    n corpul funciei principale se declar variabila cu urmtoarea semnificaie:

    raza reprezint variabila n care se citete valoarea razei;Cu ajutorul funciei standard printfse va afisa la consol "Introducei raza cercului"

    iar apoi, cu ajutorul funciei scanfse va citi valoarea razei. La sfrit se va afia valoarea ariei.Directivele de preprocesare ncep cu # i se recomand folosirea acestui caracter

    ncepnd cu prima coloan. Pe lng directiva include care a fost expluicat mai sus, apare idirectiva define.

    Linia #define pi 3.141592653589793 va schimba toate apariiile identificatorului picu 3.141592653589793. Aceast directiv poate s apar oriunde n program, dar atunci vor fiafectate doar liniile care urmeaz.

    Aplicaia 3:

    S se realizeze programul care cere utilizatorului s introduc trei caractere iar apoiafieaz aceste caractere.Specificarea problemei:

    Date de intrare: a, b, c trei caractere citite de la tastatur;Date de ieire: afiarea celor trei caractere;

    Date de test: Introducei trei caractere: xyzCaracterele sunt: x y z

    Programul corespunztor este:#include #include void main()

    26

  • 8/14/2019 programarea calculatoarelorCap 2

    10/10