Sunteți pe pagina 1din 13

Instruciuni in C++

Struct Structu Struct Aplic ura ra ura aii liniar alterna repetit tiv iv
http://lectie.traducator.info/index.htm

Test de evalu are

Structuri liniare
Structura liniar este o secven de instruciuni care se execut necondiionat, o singur dat. O astfel de structur poate s conin instruciuni pentru citirea i scrierea datelor, calcule matematice (expresii) instruciuni de atribuire. Prin atribuire, o variabil primete valoarea unei alte variabile, a unei valori sau a unei expresii. Instruciunea de atribuire este reprezentat prin operatorul de atribuire specific limbajului de programare. Sintaxa instructiunii de atribuire Limbajul C/C++ id variabila=valoare/expresie; Precizare: Atribuirea este precedata de conversia implicita a valorii/expresiei la tipul variabilei.

Exemplu: Se interschimb coninutul a dou variabile intregi u i v. Limbajul C/C++ #include<iostream.h> void main() { int u=5,v=9;//atribuire/initializare cu valori u=u+v;{atribuirea valorii unei expresii} v=u-v;{ atribuirea valorii unei expresii} u=u-v;{ atribuirea valorii unei expresii} cout<< u= <<u<< v= <<v; }
http://lectie.traducator.info/str_lin.htm

Structuri alternative

a) Instruciunea if Structurile alternative dirijeaz execuia unei secvene de instruciuni (s1 sau s2) in funcie de valoarea unei condiii plasate in blocul de decizie. Aceste structuri se codifica prin instruciunea if. Dac secvena s1 sau s2 conine mai multe instruciuni, acestea sunt introduse intr-un bloc de instruciuni. Dac secvena s2 este vida (structura pseudoalternativ), instruciunea if nu are ramura else.

Sintaxa instruciunii if
Limbajul C/C++

if(cond_logica) s1; else s2;

Exemplu: Rezolvarea ecuaiei de gradul I, de forma ax+b=0, cu coeficieni reali. Limbajul C/C++ #include<iostream.h> void main() { float a,b,x; cout<< cin a= >>a;cout<< ;cin b= >>b; if(a!=0) { x=-b/a; cout<< ec.compatibila deterinata x= <<x; } else

if(b!=0) cout<< ; else cout<< ; }

ec.incompatibila ec.compatibila nedeterminata

b) Instruciunea de selecie

Structura alternativa de selecie dirijeaz execuia unei secvene de instruciuni (s1,s2, .. ,sn) in funcie de valoarea unui selector. Sintaxa instruciunii de selecie Limbajul C/C++ switch(selector) {case v1 :s1;break; case v2 :s2;break; ... case vm :sm;break; default:s; } unde: - selector este o expresie de tip int sau char; - v1,..,vm sunt expresii constante de acelai tip cu expresia selector; - s1,.., sm, s reprezint secvene de instruciuni clauza default este opional; Exemplu: Se citesc de la tastatur dou numere intregi x i y. Programul realizeaz una dintre urmtoarele operaii aritmetice, potrivit opiunii utilizatorului: suma, diferena, produsul, catul impririi intregi. Limbajul C/C++ #include<iostream.h> void main() { int a,b,selector; cout<< ;cin a= >>a;cout<< b= ;cin>>b; cout<< Tastati una dintre cifre <<endl; cout<< ; 1-suma/2-diferenta/3-produs/4-cat

cout<< selector= ;cin>>selector; switch(selector) { case 1: cout<< suma= <<a+b;break; case 2: cout<< produsul= <<a*b;break; case 3:cout<< diferenta= <<a-b;break; case 4: cout<< catul= <<a/b;break; default:cout<< Ati tastat o optiune inexistenta }}
http://lectie.traducator.info/str_alt.htm

Structuri repetitive
Dac, intr-un algoritm, se repet o secven de operaii, atunci se utilizeaz structuri repetitive cu numr cunoscut de pai (cu contor) sau cu numr necunoscut de pai (cu condiie). a) Structuri repetitive cu contor Structura repetitiv cu contor (cu numr cunoscut de pai) este codificat prin instruciunea for.
Limbajul C/C++

for(e1;e2;e3) S; unde e1,e2,e3 sunt expresii de forma: e1initializare variabila contor contor=valoare_initiala e2 conditia de continuare contor<=valoare_finala for crescator contor>=valoare_finala for descrescator e3 modificare contor contor++ for crescator contor -- for descrescator Dac secvena (S) conine mai multe instruciuni,atunci acestea sunt cuprinse intre acolade{}.

Exemplu: Se afieaz pe ecran primele n numere naturale astfel: pe prima linie, in ordine cresctoare, iar pe urmtoarea linie, in ordine descresctoare. Numrul n se citete de la tastatura. #include<iostream.h> void main() { int i,n; cout<< ;cin n= >.n; for(I=1;i<=n;i++) cout<<i<< . ; cout<<endl; for(i=n;i>=1;i--) cout<<i<< . ; }

b) Structuri repetitive cu conditie In cazul in care o secven de operaii se repet cat timp/pana cand este indeplinit o condiie, atunci se folosesc structuri repetitive, cu test iniial sau cu test final. * Structuri repetitive cu test iniial
Structura repetitiva cu test iniial este codificat prin instruciunea while.

Evaluarea condiiei precede secvena de operaii; secvena se repeta cat timp condiia este indeplinit.

Sintaxa instruciunii repetitive cu test iniial

Limbajul C/C++

while(cond_logic) S; Secvena (S) se executa numai in cazul in care condiia logic este adevarat. (expresia genereaz o valoare nenul). Dac secvena conine mai multe instruciuni, atunci acestea sunt cuprinse intre acolade. Exemplu: Se afieaz, pe ecran, suma cifrelor unui numr natural nenul x. Numrul x se citete de la tastatur.

Limbajul C/C++ #include<iostream.h> void main() { unsigned int x,s=0; cout<< ;cin x= >>x; while(x!=0) { s=s+x%10;x=x/10; } cout<< Suma cifrelor = }

<<s<<endl;

* Structuri repetitive cu test final Structura repetitiv cu test final este codificat, in limbajul Pascal, prin instruciunea repeat_until, iar in limbajul C/C++, prin instruciunea do_while. Evaluarea condiiei se face dup execuia secvenei de operaii i determin repetarea secvenei sau ieirea din structur.

Sintaxa instruciunii repetitive cu test final


Limbajul C/C++

Do { S; } while(cond_logica); Secvena (S) se execut cat timp condiia logic este adevarat (expresia genereaz o valoare nenul). Secvena se execut cel puin o dat, chiar dac condiia logic nu este indeplinit. Exemplu: Se afieaz, pe ecran, cifra minim a unui numr natural nenul a. Numrul a se citete de la tastatur. Limbajul C/C++ #include<iostream.h> void main() {unsigned int a,min=9,c; cout<< ;cin a= >>a; do {c=a%10; if(c<min) min=c; a=a/10; }while(a!=0); cout<< Cifra minima= }

<<min<<endl;

http://lectie.traducator.info/str_rep.htm

Aplicaii
1. Se citete, de la intrarea standard, un ir de numere reale pana cand se introduce valoarea zero. S se determine media aritmetica a elementelor negative i media aritmetica a celor pozitive. 2. Din fiierul palindrom.in se citete un numr natural nenul n, iar de pe urmtoarea linie se citesc n numere naturale nenule separate prin cate un spaiu. In fiierul palindrom.out, s se afieze prima linie irul citit, pe urmtoarele linii numerele care sunt palindromuri, iar pe ultima linie cate

palindromuri s-au gsit sau un mesaj corespunztor. (Un palindrom este un numr simetric; de exemplu, 15451 este palindrom, 15452 nu este palindrom.) 3. De la tastatura se citete un numr natural nenul t. Prin descompunerea in factori primi, s se determine suma ordinelor de multiplicate ale fiecrui factor. Pe baza rezultatului obinut, se poate preciza dac numrul este prim? 4. De pe prima linie a fiierului fractii.in se citete un numr natural nenul n care prezint un numr de fracii raionale. De pe urmtoarele n linii se citesc perechi de numere naturale nenule, separate prin cate un spaiu. In fiierul fractii.out, s se afieze cele n fracii simplificate. Exemplu: fractii.in 4 12 27 17 23 54 28 125 275 fractii.out 4/9..17/23..27/14..5/11

5. Se citete un ir de numere intregi pana la citirea valorii -5. S se determine cel mai mare divizor comun i cel mai mic multiplu comun al numerelor citite. Datele de intrare vor fi citite de la tastatur, iar datele de ieire se vor afia pe linii distincte in fiierul cmmdcmc.out. 6. De la intrarea standard se citesc u numere intregi. S se afieze, pe ecran, linii distincte, suma cifrelor fiecrui numr. 7. Fie doua numere naturale a si b (a <b). S se afieze toate numerele rotunde din intervalul [a,b) i numrul lor. (Un numr este rotund dac in prezentarea in baza 2 are numrul de cifre de 1 egal cu numrul de cifre de 0.) Exemplu:12(10) -1100(2) este rotund.
http://lectie.traducator.info/Aplicatii.htm

Test de

evaluare
1. Fie n=12345. Care dintre urmtoarele instruciuni comand afiarea

pe ecran a cifrei miilor numrului natural n ? a) b) c) d) cout<<n%1000; cout<<n%10000/1000; cout<<(n/=1000,n%10); cout<<n/10000%1000; program urmtoare ? char , b , j= i++; k=j++-i A + a) a b c 3. a i= k;

2. Ce valori vor avea variabilele i, j i k dup executarea secvenei de

b)

a b 65

c) b c A

d) a b A

Se considera urmtorul program : # include <iostream.h> void main ( ) {int x; float y; cin>>x; y=x+100/x+.5; }

1.1 1.2
1.3

1.4

Clasificai datele din program in funcie de tipul i de natural lor. Enumerai operatorii prezeni in program, in ordinea prioritii lor. Daca valoarea citit este 14, ce valoare va avea variabila y la finalul executrii programului ? Clasificai instruciunile care alctuiesc programul din enun . 2. Transcriei in limbajul C++ algoritmul de mai jos, descris in limbajul pseudocod. Ce prelucrare realizeaz algoritmul ? citeste a, b, c {numere reale} daca a=0

atunci daca b=c atunci scrie altfel scrie m.vida , ( x= altfel scrie c-b)/a
3. Care

identitate

dintre instruciunile urmtoare determin memorarea, in variabila m, a celei mai mari valori dintre valorile reinute de variabilele reale a i b ? m=a>b?a:b; m=a; if (m>b)m=a; m=(a+b+fabs(a-b))/2; if (a<b)m=a; else m=b;

a) b) c) d)
4.

Fie x o variabila intreag. Se consider secvena de program urmtoare: if (x> -10) if (2*x<x) cout<< ; DOI else if (x) cout<< ; TREI else cout << ; UNU

6.1
6.2

6.3 6.4

Ce se va afia in urma executrii secvenei dac, iniial, x=-20? a) UNU b) DOI c) TREI d) nimic Pentru ce valori ale lui x, in urma executrii secvenei, se afieaz DOI ? a) x=0 b) -10<x<0 c) x>0 d) x<-10 Pentru ce valori ale lui x se afieaz TREI ? a) -1 b) 0 c) 3 d) 10 Exista vreun mesaj dintre UNU, DOI, TREI care se va afia in urma executrii secvenei indiferent de valoarea variabilei x ? Care este ?
5. Se considera instruciunile 1)-11) din tabelul urmtor. Aranjai

instruciunile in ordinea corespunztoare astfel incat programul realizat s rezolve urmtoarea Se citesc trei numere reale a, b i c. Scriei un program care s problem: verifice dac unul dintre numere este media aritmetica a celorlalte dou, situaie in care se va afia valoarea mediei, altfel, se va afia 0.
1) {

2) 3) 4) 5) 6) 7) 8) 9) 10) 11)

} # include <iostream.h> else if (b+c-a==a) cout<<a; if (a+b-c==c) void main( ) float a, b , c; else if (a+c-b==b) cout<<b; cout<<c; else cout<<0; cin>>a>>b>>c;

http://lectie.traducator.info/Testul%2012.htm

S-ar putea să vă placă și