Download - Proiect informatica C++.docx

Transcript
  • 5/24/2018 Proiect informatica C++.docx

    1/25

    Proiect informatica

    Cuprins

    Cap I.

    1. Instructiuni: -1.1 Prezentare generala

    -1.2 Instructiuni citire/scriere

    -1.3 Instructiunea for

    -1.4 Instructiunea while

    2. Tablouri unidimensionale: -2.1 Prezentare generala

    -2.2 Operatii cu tablouri

    3. Subprograme: -3.1 Prezentare generala

    -3.2 Domeniul de vizibilitate al variabilelor

    -3.3 Transmiterea parametrilor

    Cap II.

    Rezolvarea problemei: - Metoda 1- Metoda 2

    - Metoda 3

    Cap III.

    Cod sursa: - Metoda 1

    - Metoda 2

    - Metoda 3

    Anexa 1: Print scree

    Anexa 2: Problema in pseudocod/C++

  • 5/24/2018 Proiect informatica C++.docx

    2/25

    Cap I.

    1. Instructiuni:

    1.1 Prezentare generala: Un program scris in C++ este alcatuit din una sau mai multe functii.

    Fiecare functie are mai multe instructiuni in C++ care codifica algoritmul programului.Instructiunile unei functii reprezinta corpul functiei si sunt cuprinse intre { }. Dupa fiecare

    instructiune din corpul functiei se pune semnul;

    Functiile de acelasi domeniu sunt grupate in fisiere headernumite si directive.

    La inceputul fiecarui program se specifica fisierele care contin functiile ce se utilizeaza in

    program astfel: # include

    Dupa specificarea directivelor trebuie scrisa functia radacina care se numeste main( )sau void

    main( ).Dupa numele directivelor sau a functiilor nu se punesemnul ;

    1.2 Instructiuni citire/scriere:

    -pentru realizarea citiriise utilizeaza : cin>>nume variabila

    cin>>a>>b>>c - citeste variabilele a, b, c

    - pentru realizarea scrieriise utilizeaza: cout

  • 5/24/2018 Proiect informatica C++.docx

    3/25

    1.3 Instructiunea ,,for":

    Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial.

    Forma generala:

    for(eINITIALIZARE; eTEST; eINCREMENTARE) instructiune

    eINITIALIZARE- se evalueaza o singura data pentru initializareavariabilei de ciclare inaintea

    primului ciclu ;

    eTEST- este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea

    subordonata si reprezinta conditia de iesire din ciclu;

    eINCREMENTARE- se evalueaza la sfirsitul fiecarui ciclu pentru incrementareavariabilei deciclare.

    Principiul de executie:

    Se evalueazaeINITIALIZARE(numai la prima rulare), se evalueaza eTEST, daca este adevarata se

    executa instructiunea subordonata for, se evalueaza eINCREMENTARE si se revine la evaluarea

    expresiei eTEST. Daca eTESTeste falsase trece la urmatoarea instructiune (se termina executarea

    instructiunii for)

    Observatie. Daca expresia eTEST este vida se executa un ciclu infinit. Pentru a iesi din acest

    ciclu : in DOSse tasteaza CTRL+PAUSE

    in WINDOWSse tasteaza CTRL +ALT + DEL

  • 5/24/2018 Proiect informatica C++.docx

    4/25

    Exemplu: Afiseaza toate patratele si radicalii numerelor naturale pina la numarul nintrodus de latastatura.

    #include

    #include

    void main( )

    {

    float i,n,a,b;

    coutn;

    a=b=0;

    for(i=1 ;i

  • 5/24/2018 Proiect informatica C++.docx

    5/25

    Exemplu: puterea unui numar

    #include

    void main( ) {

    float a,b,p;

    couta;

    coutb;

    while(a!=0){ p=p*b;

    a--;}

    cou

  • 5/24/2018 Proiect informatica C++.docx

    6/25

    int n,i,a[100],b[100];

    cout

  • 5/24/2018 Proiect informatica C++.docx

    7/25

    for (i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    8/25

    Lista_parametrilor_formali: Reprezint o list de declaraii de variabile separate prin virgul.

    Aceast list poate s fie i vid.

    Instruciune: Este o instruciune vid sau o instruciune simpl sau o instruciune

    compus.

    Exist dou tipuri de apel al subprogramelor:

    A. Apel prin valoare

    B. Apel prin referin

    A. Apel prin valoarese transmite o copie a parametrului actual.

    Valorile transmise la apelul unui subprogram sunt memorate n stiv. Datorit faptului c, dup

    terminarea execuiei unui subprogram, stiva este eliberat, n cazul apelului prin valoareparametrul

    actual nu se modific (se opereaz asupra unei copii a parametrului efectiv)

    B. Apel prin referin - se transmite adresa parametrului actual.

    n cazul apelului prin referin, subprogramul, cunoscndadresa parametrului actual,

    acioneaz direct asupra locaiei de memorie indicat de aceasta, modificnd valoareaparametrului

    actual.

    3.2 Domeniul de vizibilitate al variabilelor:

    Variabile locale i variabile globale

    Funcia main.

    n C, numele de funie main determin prima instruciune pe care o va executa programul.

    Acesta este unica diferen dintre main i celelalte funcii. Din acest motiv se poate spune corice se poate face n main se poate face i n celelalte funcii.

    Variabile locale

    La fel cum se declar variabilele n cadrul funciei main, la fel se pot declara varibile n cadrul

    celorlalte funcii. Aceste variabile se numesc locale i sunt accesibile doar de funcia care le -adeclarat.

  • 5/24/2018 Proiect informatica C++.docx

    9/25

    La fel n cadrul unei funcii se pot apela i alte funcii, ca i n main, dac acestea au fost definite

    naintea eventualului apel sau dac este prezent un prototip de funcie naintea funciei apelantei o definiie de funcie n cadrul programului respectiv sau n fiierele incluse n programuluirespectiv.

    Variabile globale

    Variabilele globale sunt declarate nafara oricrei funcii i pot sunt vizibile (pot fi utilizate) n

    tot programul (n programul principal i n subprograme) din momentul declarrii lor.

    3.3 Transmiterea parametrilor:

    Apelul unei funcii /revenirea dintr-o funcie:

    Apelul unei funcii care returneaz o valoare are forma general:

    nume_funcie (lista parametrilor efectivi);

    parametru efectiv = parametru actual = parametru real = parametru de apel

    lista parametrilor efectivi = fie vid, fie o expresie sau mai multe desprite prin virgul

    O funcie care returneaz o valoare poate fi apelat fie printr-o instruciune de apel simpl

    (cazul funciilor care nu returneaz valori) i n plus poate fi apelat ca operand a l unei expresii.n cazul n care funcia se apelaz print-o instruciune de apel simpl, rezultatul funciei se

    pierde. Cnd funcia se apeleaz ca operand, valoarea returnat va fi utilizat n expresie.La apelul unei funcii, valorile parametrilor efectivi se atribuie parametrilor formalicorespunztori. n cazul n care unul din tipul unui paramatru efectiv difer de tipul parametrului

    formal corespunztor, parametrul efectiv va fi convertit spre parametru formal (dac este posibil,altfel compilatorul genereaz eroare). n momentul n care se ntlnete un apel de funcie,controlul execuiei programul este transferat primei instruciuni din funcie, urmnd a se executasecvenial instruciunile funciei.

    Revenirea dintr-o funcie se face n unul din urmtoarele cazuri:

    - dup execuia ultimei instruciuni din corpul funciei

    - la ntlnirea unei instruciuni return

    Instruciunea return are formatele: - return ;

    - return expresie ;

  • 5/24/2018 Proiect informatica C++.docx

    10/25

    Cap II:

    1. Rezolvarea problemei:

    1.1 Metoda 1: citeste n; -pseudocod

    s=0;

    pentru(i=1;n)

    citeste x[i]

    pentru(i=1;n)

    s=s+pow(2,x[i]);

    scrie s;

    #include -C++

    #include

    void main (){

    int n,X[10];

    long s;

    unsigned i,p;

    p=2;

    s=0;

    coutn;

    for(i=1;i>X[i];

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    11/25

    Algoritmul scris mai sus citeste un vector "X" de lungime "n" . Iar elemntele din vector lefoloseste ca puteri ale valori 2 pe , rezultatul obtinut astfel punandu-l intr-o suma.

    Algoritmul de mai sus este si eficient din punct de vedere al timplui si al memoriei ocupatedeoare parcurge vectorul o singura data.

    Programul de mai sus este comup din 4 variabile(dintre care: 1 long"s",2 int"n"si vectorul x[] siun unsigned"i"), 2 instructiuni "pentru/for": 1 pentru a citi vectorul"x" si cealalta pentru aparcurge vectorul si a face suma prin ridicarea valori 2 la puterea elementelor citite din vector sio instructiune de afisare a valori "s".

    1.2 Metoda 2: -Pseudocod

    subprogramul putere ( cu variabilele p si z)

    v=1;

    cat timp (z !=0) executa v=v*p;

    z-- ;

    returneaza v;

    programul principal

    citeste n

    p=2

    s=0

    pentru(i=1;n)

    citeste x[i]

    pentru(i=1;n)

    s=s+putere de (p si x[i]);

    scrie s;

    #include -C++

    #include

  • 5/24/2018 Proiect informatica C++.docx

    12/25

    int n,X[10];

    long s,v;

    unsigned i,p,z;

    long putere(unsigned p,int z){v=1;

    while (z!=0){

    v=p*v;

    z--;}

    return v;}

    void main( ){

    p=2;

    s=0;

    cout n;

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    13/25

    1.3 Metoda 3: subprogramul putere ( cu variabilele p si z)

    z=1;

    v=pow(p,z);

    returneaza v;

    program principal

    citeste n

    p=2

    s=0

    pentru(i=1;n)

    citeste x[i]

    pentru(i=1;n)

    s=s+putere de (p si x[i]);

    scrie s;

    #include -C++

    #include

    int n,X[10];

    long s,v;

    unsigned i,p,z;

    long putere(unsigned p,int z){

    v=pow(p,z);return v;}

    void main( ){

    p=2;

    s=0;

  • 5/24/2018 Proiect informatica C++.docx

    14/25

    cout n;

    for(i=1;i>X[i];

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    15/25

    for(i=1;i>X[i];

    for(i=1;iX[i];

  • 5/24/2018 Proiect informatica C++.docx

    16/25

    for(i=1;iX[i];

  • 5/24/2018 Proiect informatica C++.docx

    17/25

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    18/25

    Anexa 1.

    Metoda 1:

  • 5/24/2018 Proiect informatica C++.docx

    19/25

    Metoda 2:

  • 5/24/2018 Proiect informatica C++.docx

    20/25

    Metoda 3:

  • 5/24/2018 Proiect informatica C++.docx

    21/25

    Anexa 2 :

    Metoda 1: citeste n; -pseudocod

    s=0;

    pentru(i=1;n)

    citeste x[i]

    pentru(i=1;n)

    s=s+pow(2,x[i]);

    scrie s;

    #include -C++

    #include

    void main (){

    int n,X[10];

    long s;

    unsigned i,p;

    p=2;

    s=0;

    coutn;

    for(i=1;i>X[i];

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    22/25

    Metoda 2: : subprogramul putere ( cu variabilele p si z)

    z=1;

    v=pow(p,z);

    returneaza v;

    program principal

    citeste n

    p=2

    s=0

    pentru(i=1;n)

    citeste x[i]

    pentru(i=1;n)

    s=s+putere de (p si x[i]);

    scrie s;

    #include -C++

    #include

    int n,X[10];

    long s,v;

    unsigned i,p,z;

    long putere(unsigned p,int z){

    v=pow(p,z);return v;}

    void main( ){

    p=2;

    s=0;

  • 5/24/2018 Proiect informatica C++.docx

    23/25

    cout n;

    for(i=1;i>X[i];

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    24/25

    int n,X[10];

    long s,v;

    unsigned i,p,z;

    long putere(unsigned p,int z){v=1;

    while (z!=0){

    v=p*v;

    z--;}

    return v;}

    void main( ){

    p=2;

    s=0;

    cout n;

    for(i=1;i

  • 5/24/2018 Proiect informatica C++.docx

    25/25