structuri de control

Page 1

Liniară Alternativă

Repetitivă

– instructiunea compusa { … } – instrucţiunea  if ... else ...  switch … – instrucţiunile:  while ...  do ... while ...


Structura liniară - O succesiune de instrucţiuni care se execută în ordinea în care au fost scrise.

In limbajul de programare C++, structurii liniare îi corespunde instrucţiunea compusă (blocul de instrucţiuni) Instrucţiunea compusă – este reprezentată de o succesiune de instrucţiuni închise între acolade.

Forma: {

}

Exemplu: { instrucţiune_1; instrucţiune_2; ... }

cout << “Introduceti n: ”; cin >> n;


Structura alternativă - Selectarea instrucţiunii care urmează a fi executată în urma evaluării unei expresii.

În limbajul C++ pentru structura alternativă există două construcţii (instrucţiuni) a) if ... else ... b) switch … a) Construcţia if ... else ... permite executarea unei instrucţiuni din două variante posibile în urma evaluării unei expresii de tip logic (adică o expresie ce este evaluată cu adevarat sau fals). Forma: if ( <expresie logică> ) instrucţiune_1; else instrucţiune_2;

// Se evaluează expresia cu ADEVĂRAT (≠0) sau FALS (0) // expresie logică este ≠0 se execută instrucţiune_1 // altfel // expresie logică este 0 se execută instrucţiune_2


Exemplul 1: int

a=3, b=4; //var. a de tip întreg primeşte val. 3 //var. b de tip întreg primeşte val. 4 if( a > b) // se eval. expresia a>b  3>4fals 0 cout << a << “ > ” << b; // acestă instrucţiune nu se execută else cout << b << “ > ” << a ; // se afisează pe ecran: 4 > 3

Exemplul 2: int

a=7, b=2;

//var. a de tip întreg primeşte val. 7 //var. b de tip întreg primeşte val. 2 if( a > b) // se eval. expresia a>b  7>2adev. 1 cout << a << “ > ” << b; // se afisează pe ecran: 7 > 2 else cout << b << “ > ” << a ; // acestă instrucţiune nu se execută


Forma redusă a instrucţiunii if Forma: if ( <expresie logică> ) instrucţiune;

// Se evaluează expresia cu ADEVĂRAT (≠0) sau FALS (0) // expresie logică este ≠0 se execută instrucţiune // expresie logică este 0 nu se execută nimic şi controlul // programului trece pe instrucţiunea ce urmează // construcţiei if

Exemplu de problemă: Să se scrie un program C++ care primeşte de la tastatură valorile a, b, c de tip real, de la tastatură, pentru coeficienţii ecuaţiei de gradul II, ax 2 + bx + c = 0, şi afişează soluţiile ecuaţiei x1 şi x2 . Analiza problemei Date de intrare: a,b,c – nr. reale Date intermediare: delta – nr. real Date de ieşire: x1, x2 – nr. reale


# include <iostream.h> // # include <math.h> // double a, b, c, delta; // double x1, x2; // void main(){ // cout << “a=”; // cin >> a; // cout << “b=”; // cin >> b; // cout << “c=”; // cin >> c; // delta = b*b-4*a*c; // if( delta < 0 ) // cout << “Ecuatia nu are solutii

}

biblioteca necesara pt. cin si cout biblioteca de func. matematice pentru func. sqrt se declara variabilele reale necesare programului conform enuntului problemei functia principală a programului se afiseaza pe excran: a= se asteapta citirea valorii pt. var. a se afiseaza pe excran: b= se asteapta citirea valorii pt. var. b se afiseaza pe excran: c= se asteapta citirea valorii pt. var. c se calculeza valoarea lui delta daca delta < 0 reale”; // se afiseaza pe ecran mesajul: // Ecuatia nu are solutii reale else // altfel if( delta == 0 ){ // daca delta este 0 x1 = -b / (2*a); // se calculeaza valoare lui x2 = x1; // x2 primeste valoarea lui x1 cout << “x1 identic cu x2 si are valoarea ” << x1; // se afiseaza pe ecran mesajul: // x1 identic cu x2 si are valoarea ... } else { // altfel x1 = ( -b + sqrt(delta) ) / ( 2*a ); // sqrt – func. Radical x2 = ( -b - sqrt(delta) ) / ( 2*a ); cout << “x1 este ”<< x1; // se afiseaza pe ecran mesajul: // x1 este ... cout << “x2 este ”<< x2; // se afiseaza pe ecran mesajul: // x2 este ... } // S-a încheiat programul


Observaţie Într-un program C++ pot fi incluse mesaje text informative – comentarii, care nu vor fi niterpretate de compilator, acestea se introduc prin construcţia // Această construcţie indică, că ceeace urmează până la sfârşitul rândului este un comentariu şi va fi ignorat la compilare şi execuţie

A) Instrucţiunea repetitivă condiţională anterior while( expresie ) instrucţiune; Efect: Se eval. expresie la 0 sau ≠0, cât timp expresia este nenulă (adevărată) se execută instrucţiune şi se reia evaluarea expresiei expresie, altfel se trece controlul programului pe următoarea instrucţiune ce urmează construcţiei while ... . Exemplu

... i=1; while( i<10 ){ cout << i << “/”; i=i+1; } ...

Pe ecran se afişează 1/2/3/4/5/6/7/8/9/


B) Instrucţiunea repetitivă condiţională posterior

do { instrucţiune; } while( expresie ); Efect: Pas1: Se execută instrucţiune, se evaluează expresie la 0 sau ≠0;

Pas2: - dacă valoarea expresiei expresie este 0 (fals) se părăseşte execuţia construcţiei repetitive do ... while … . - dacă valoarea expresiei expresie este ≠0 (adevărat) se revine la Pas1. Exemplu ... i = 1; do { cout<< i << “ “; i = i + 2; } while ( i < 10 ); ...

Pe ecran se afişează 1 3 5 7 9


C) Instrucţiunea repetitivă cu un număr cunoscut de paşi for( contor = v_in ; contor < v_fin ; contor++ ) instrucţiune; Efect : Pas 1 : se atribuie variabilei contor valoarea expresiei v_in (valoare iniţială); Pas 2 : se verifică dacă contor este mai mic decât valoarea expresiei v_fin (valoare finala); obs. 1) În loc de < putem avea si <=, >, >=, ==, !=. 2) v_in şi v_fin trebuie să fie evaluate la o valoare întreagă. Pas 3 : dacă valoarea variabilei contor este mai mare sau egală cu valoarea expresiei v_fin, atunci se iese din instrucţiunea repetitivă. Dacă valoarea variabilei contor este mai mică decât valoarea expresiei v_fin, atunci se execută instrucţiune şi apoi se incrementează (cont++, se măreşte cu 1) valoarea variabilei contor, după care revine la Pas 2. Exemplu Pe ecran se afişează

... for( i=1; i<10; i++ ) cout << i << “_”; ...

1_2_3_4_5_6_7_8_9_


1. Se citesc trei numere întregi a, b, c. Să se afişeze în ordine crescătoare. 2. Se citeşte un număr natural format din trei cifre. Să se afişeze suma cifrelor sale. 3. Se citesc două variabile întregi a şi b. Să se interschimbe conţinutul lor. 4. Se citesc două variabile reale. Să se afişeze valoarea mai mare. 5. Se citeste un număr natural n. Să se tipărească numărul obţinut prin inversarea numărului citit. 6. Se citesc numerele naturale n1 şi n2. Să se calculeze produsul lor, fără a utiliza operatorul de înmulţire. 7. Să se afişeze suma primelor n numere naturale, unde n este un număr natural introdus de la tastatură. (S=1+2+…+n) 8. Să se afişeze produsul primelor n numere naturale, unde n este un număr natural introdus de la tastatură. (P=1*2*…*n)


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.