Limbaje 6

18
Limbaje de programare inginereşti Tema 6 C++: implementarea structurilor de control, tablouri

Transcript of Limbaje 6

  • Limbaje de programare ingineretiTema 6C++: implementarea structurilor de control, tablouri

  • IMPLEMENTAREA STRUCTURILOR DE CONTROL Ordinea n care se execut instruciunile unui program definete aa-numita structur de control a programului. Limbajele moderne sunt alctuite pe principiile programrii structurate.

    Orice algoritm poate fi realizat prin combinarea a trei structuri fundamentale: structura secvenial; structura alternativ (de decizie, de selecie); structura repetitiv (ciclic).

  • IMPLEMENTAREA STRUCTURII SECVENIALE Structura secvenial este o niruire de secvene de prelucrare (instruciuni), plasate una dup alta, n ordinea n care se dorete execuia acestora. Implementarea structurii secveniale se realizeaz cu ajutorul instruciunilor: Instruciunea vid Sintaxa:; Instruciunea expresieSintaxa:expresie;sau:apel_funcie; Instruciunea compus (instruciunea bloc)Sintaxa:{declaratii;instr1;instr2;. . . . }

  • IMPLEMENTAREA STRUCTURII SECVENIALEExemple:1.int a;. . . . . . int j; ;for (;;){. . . . }

    2. int b, a=9;double c; b=a+9;cout

  • IMPLEMENTAREA STRUCTURII DE DECIZIE (ALTERNATIVE, DE SELECIE) Instruciunea if:Sintaxa:if (expresie)instruciune1;[ else instruciune2; ] Observaii: Instruciune1 i instruciune2 pot fi instruciuni compuse (blocuri), sau chiar alte instruciuni if (if-uri imbricate).Deoarece ramura else a instruciunii if este opional, n cazul n care aceasta este omis din secvenele if-else imbricate, se produce o ambiguitate. De obicei, ramura else se asociaz ultimei instruciuni if. Pentru claritatea programelor surs se recomand alinierea instruciunilor prin utilizarea tabulatorului orizontal. n cazul n care instruciunile din cadrul if-else sunt simple, se poate folosi operatorul condiional.

  • Aplicaii1. S se citeasc de la tastatur un numr real. Daca acesta se afl n intervalul [-1000, 1000], s se afiseze 1, dac nu, s se afiseze -1.

    2. S se calculeze valoarea funciei f(x), tiind c x este un numr real introdus de la tastatur:IMPLEMENTAREA STRUCTURII DE DECIZIE (ALTERNATIVE, DE SELECIE) 3. Se citete un caracter reprezentnd un operator aritmetic binar simplu. n funcie de caracterul citit, se afieaz numele operaiei pe care acesta o poate realiza.

  • Instruciunea switch permite tratarea situaiilor cnd este necesar o decizie multipl.IMPLEMENTAREA STRUCTURII DE DECIZIE (ALTERNATIVE, DE SELECIE)

  • Sintaxa:switch (expresie){case expresie_const_1: instructiune_1;[break;]case expresie_const_2: instructiune_2;[break;]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . case expresie_const_n-1: instructiune_n-1;[break;][ default:instructiune_n; ]}

    Expresiile expresie, expresie_const_1, expresie_const_2, etc., trebuie s fie ntregi. Ele pot fi i de tip char, dar o dat de tip char este convertit automat n tipul int. (aplicatie)IMPLEMENTAREA STRUCTURII DE DECIZIE (ALTERNATIVE, DE SELECIE)

  • IMPLEMENTAREA STRUCTURILOR REPETITIVE (CICLICE) Implementarea structurilor ciclice cu test iniial Instruciunea whileSintaxa:while (expresie)instructiune; Instruciunea forSintaxa:for (expresie1; expresie2; expresie3)instructiune;

  • Instruciunea do-whileSintaxa:do instructiune;while(expresie);IMPLEMENTAREA STRUCTURILOR REPETITIVE (CICLICE) Implementarea structurilor ciclice cu test final AplicaiiSe citete un caracter reprezentnd un operator aritmetic binar simplu. n funcie de caracterul citit, se afieaz numele operaiei pe care acesta o poate realiza. Procesul se reia i se oprete cnd caracterul introdus este @.Se citete cte un caracter, pn la ntlnirea caracterului @. Pentru fiecare caracter citit, s se afieze un mesaj care s indice dac s-a citit o liter mare, o liter mic, o cifr sau un alt caracter. S se afieze cte litere mari au fost introduse, cte litere mici, cte cifre i cte alte caractere.

  • S se calculeze suma i produsul primelor n numere naturale, n fiind introdus de la tastatur. IMPLEMENTAREA STRUCTURILOR REPETITIVE (CICLICE) coutn;int S=0, P=1, k=1;while (k
  • FACILITI DE NTRERUPERE A UNEI SECVENE Instruciunea breakFr a se mai testa valoarea expresiei (condiia) care determin repetarea corpului instruciunii ciclice, se continu execuia cu instructiunea care urmeaz instructiunii ciclice.

    Instruciunea continue ntlnirea instruciunii continue determin ignorarea instruciunilor care o urmeaz n corpul instruciunii ciclice i reluarea execuiei cu testarea valorii expresiei care determin repetarea sau nu a corpului ciclului.

  • do{instructiune1;instructiune2;if (expresie2)break;elsecontinue;instructiune3;} while (expresie1);for (expr1; expr2; expr3)){instructiune1;instructiune2;if (expresie2)break;elsecontinue;instructiune3;}while (expresie1){instructiune1;instructiune2;if (expresie2)break;elsecontinue;instructiune3;}FACILITI DE NTRERUPERE A UNEI SECVENE

  • DECLARAREA TABOURILOR Numim tablou o colecie (grup, mulime ordonat) de date, de acelai tip, situate ntr-o zon de memorie continu (elementele tabloului se afl la adrese succesive).

    Tablourile sunt variabile compuse (structurate), deoarece grupeaz mai multe elemente.

    Variabilele tablou au nume, iar tipul tabloului este dat de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului i indicii (numere ntregi) care reprezint poziia elementului n cadrul tabloului.

    n funcie de numrul indicilor utilizai pentru a referi elementele tabloului, putem ntlni tablouri unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).

    Ca i variabilele simple, variabilele tablou trebuie declarate nainte de utilizare.

  • Modul de declarare:tip nume_tablou[dim_1][dim_2][dim_n];unde: tip reprezint tipul elementelor tabloului; dim_1,dim_2,...,dim_n sunt numere ntregi sau expresii constante ntregi (a cror valoare este evaluat la compilare) care reprezint limitele superioare ale indicilor tabloului.Exemple:int vect[20];// declararea tabloului vect, de maximum 20 de elemente, de tipul int.double p,q,tab[10]; /*declararea variabilelor simple p, q i a vectorului tab, de maximum 10 elemente, tip double */

    #define MAX10char tabc[MAX]; /*declararea tabloului tabc, de maximum MAX (10) elemente de tip char*/

    double matrice[2][3];// declararea tabloului matrice (bidimensional), // maximum 2 linii i maximum 3 coloane, tip doubleDECLARAREA TABOURILOR

  • Iniializarea valorilor elementelor unui tablou se poate face prin:Declararea directDeclararea prin intermediul unei expresiiCitirea de la tastaturDeclararea implicit

    Atenie: indicii se incrementeaz pornind de la valoarea 0.

    Exemple:

    int vector[6];vector[0]=100;vector[1]=101;vector[2]=102;vector[3]=103;vector[4]=104;vector[5]=105;INIIALIZAREA TABOURILOR

  • int vector[6]={100,101,102,103,104,105};

    double x=9.8;double a[5]={1.2, 3.5, x, x-1, 7.5};

    double alpha[5], beta[5], gama[5];int i=2;alpha[2*i-1] = 5.78;alpha[0]=2*beta[i]+3.5;gama[i]=aplha[i]+beta[i];

    double a[5];int i;for (i=0; i

  • double q[3][2];

    int mat[4][3] = {{10, -50, 3},{32, 20, 1},{-1, 1, -2},{7, -8, 19} };

    {int A[10][10]; int nr_lin, nr_col; coutnr_lin;coutnr_col;int i, j;for (i=0; i