Documente Academic
Documente Profesional
Documente Cultură
inginereti
Tema 6
C++: implementarea
structurilor de control,
tablouri
1.
2.
int a;
......
int j;
;
for (;;)
{
....
}
int b, a=9;
double c;
b=a+9;
cout<<a;
c=sqrt(a);
clrcsr();
6 x 20
f ( x)
x ( , 7]
x 30
x ( 7,0]
x (0, )
test_expresie
instruciune1
break
instruciune2
break
instruciune_n
Dac expresie=expr_const_1
instruciune1;
[ieire;]
Altfel dac expresie=expr_const_2
instruciune2;
[ieire;]
Altfel dac expresie=expr_const_n-1
instruciune_n-1;
[ieire;]
Altfel instruciune_n;
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)
Reprezentare n pseudocod:
expresie2
1
instruciune
evaluare expresie1
CT TIMP expresie2 REPET
NCEPUT
instruciune
evaluare expresie3
SFRIT
Sintaxa:
for (expresie1; expresie2; expresie3)
instructiune;
cout<<"n=";
int n;
cin>>n;
int S=0, P=1, k=1;
do
{
S+=k;
P*=k;
k++;
} while (k <= n);
cout<<"P="<<P<<"\tS="<<S<<'\n';
Instruciunea break
Fr 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.
instructiune1;
instructiune2;
if (expresie2)
break;
else
continue;
instructiune3;
} while (expresie1);
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.
DECLARAREA TABOURILOR
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];
#define MAX
10
char tabc[MAX];
double matrice[2][3];
INIIALIZAREA TABOURILOR
Iniializarea valorilor elementelor unui tablou se poate face prin:
-Declararea direct
-Declararea prin intermediul unei expresii
-Citirea de la tastatur
-Declararea 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<5; i++)
{
cout<<a["<<i<<]=;
cin>>a[i];
}
INIIALIZAREA TABOURILOR
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;
cout<<"Nr. linii:";
cin>>nr_lin;
cout<<"Nr. coloane:";
cin>>nr_col;
int i, j;
for (i=0; i<nr_lin; i++)
for (j=0; j<nr_col; j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}