Documente Academic
Documente Profesional
Documente Cultură
Cuprins Pagina
11.2 Ciclul cu test final (verificat după executarea operaţiilor din ciclu) 5
Recapitulare 16
1
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
Structurile de selecție care conțin mai multe variante sunt denumite structuri de selecție
cu multiple alternative sau structuri de selecție extinse. Pentru a codifica o astfel de structură de
selecție, în loc de a utiliza instrucțiunea if, se poate utiliza instrucțiunea switch:
Instrucţiunea SWITCH
permite selecţia unei variante din mai multe posibile.
Forma: switch (expresie)
{
case c1: secvenţă instrucţiuni1; break;
case c2: secvenţă instrucţiuni2; break;
............................................................
case cn: secvenţă instrucţiunin; break;
[default: secvenţă instrucţiunin+1];
}
Funcţionare: se evaluează expresia. Dacă aceasta produce o valoare egală cu ci, se execută
secvenţă instrucţiunii şi se trece la instrucţiunea următoare instrucţiunii switch, altfel se execută
secvenţă instrucţiunin+1.
2
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
În absenţa alternativei default, dacă valoarea expresiei nu coincide cu valoarea nici uneia dintre
constantele c1, c2, ……, cn , instrucţiunea switch nu are nici un efect şi se trece la execuţia
instrucţiunii următoare.
k=2; k=2;
switch ((k-1)*3)) switch(3<4)
{ {
case 4-1 : k=k+1; case 1 : k++;
case (5-3)%2 : k=k+2; case (3<=5)&&(2>3) : k=k+2;
default: : cout<<”sfarsit”; case ‘a’ : k--;
} default: : cout<<”10”;
}
k=’a’; k=’a’;
switch (k+1) switch(k<’4’)
{ {
case ‘d’ : k=k+1; case ‘d’<=’9’ : k++;
case ‘1’ : k=k+2; case ‘1’>=’4’ : k=k+2;
default: : cout<<1; default :;
} }
3
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
Exemplu de program care citeşte un număr natural şi precizează dacă el reprezintă codul
ASCII al unui caracter alfanumeric (literă mică, literă mare, cifră), în acest caz afişându-se şi
caracterul:
#include <iostream.h>
void main()
{
int n, a=0;
cin>>n;
if ((n>=97)&&(n<=122)) a=1;
else if ((n>=65)&&(n<=90)) a=2;
else if ((n>=48)&&(n<=57)) a=3;
swich(a)
{
case 1 : cout<<n<<”e codul ASCII al literei mici”<< (char) n;
case 2 : cout<<n<<”e codul ASCII al literei mari”<< (char) n;
case 3 : cout<<n<<”e codul ASCII al cifrei”<< (char) n;
default : cout<<n<<” nu e codul ASCII al unui caracter alfanumeric”;
}
}
Obs: Atunci când pentru anumite valori ale expresiei din cadrul instrucțiunii switch trebuie
executată aceeași secvență de instrucțiuni, alternativele se pot grupa.
De exemplu, în codul de mai jos, considerăm că se introduce de la tastatură numărul lunii din an
și dorim să obținem câte zile are acea lună:
switch (nr_luna_an)
{
case 2 : cout<<"are 28 de zile"; break;
case 4 : case 6 : case 9 : case 11:
cout<<"are 30 de zile"; break;
default : cout<<"are 31 de zile"; break;
}
4
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
11.2. Ciclul cu test final (verificat după executarea operaţiilor din ciclu)
Instrucţiunea DO WHILE
instrucţiune ciclică ce defineşte o structură repetitivă condiţionată posterior.
Forma: do
instrucţiune
while(expresie);
5
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
Instrucţiunea FOR
instrucţiune ciclică ce defineşte structura repetitivă condiţionată anterior, cu număr cunoscut de
paşi.
unde exp1, exp2, exp3 sunt expresii: exp1 iniţializare, exp2 testare, exp3 reiniţializare
(incrementare)
for(int i=1;i<=10;i++); /* deoarece dupa for am pus ‘;’ in ciclu nu se va executa nici o*/
cout<<i<<” “; /* instructiune, iar valoarea tiparita pentru i va fi 11 */
6
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
Exemplu de program în care expresiile din cadrul instrucțiunii pot conține condiții asupra mai
multor variabile:
#include<iostream.h>
void main()
{
int n, m ;
for (n=3,m=0;n<=10,m<=3 ;n++,m++)
cout<<“n = “<<n<<“, m = “<<m<<“, produs = “ <<n*m<<endl;
}
Obs: În acest caz, ciclarea se termină la m <= 3 și nu continuă până la n <= 10.
#include<iostream.h>
#include<conio.h>
void main()
{
int A[10], maxim;
clrscr();
for(int i=0;i<10;i++)
{
cout<<"A["<<i<<"]=";
cin>>A[i];
7
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
};
maxim=A[0];
for(i=1;i<10;i++)
if(maxim<A[i])
maxim=A[i];
cout << "Numarul maxim este: " << maxim << endl;
cout << endl << "Apasati o tasta...";
getch();
};
#include<iostream.h>
#include<conio.h>
void main()
{
int A[50], tmp;
// preia de la consola elementele
do
{
clrscr();
cout<<"Introduceti numarul de elemente (2-50): "; cin>>n;
}while((n<2)||(n>50));
cout<<"Introduceti valorile"<<endl;
for(int i=0;i<n;i++)
{
cout<<"A["<<i<<"]= ";
cin>>X[i];
};
// sorteaza crescator elementele
for(int i=0;i<n-1;i++) // bucla incepe de la primul element si se
// termina la penultimul
for(int j=i+1;j<n;j++) // bucla incepe de la elementul din
8
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
#include<iostream.h>
#include<conio.h>
void main()
int i,j;
for(i=1;i<=n;i++)
cout<<”x[”<<i<<”]=”;
cin>>x[i];
9
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
i=1; j=1;
while (i<=n-1)
y[j]=x[i];
y[j+1]=(x[i]+x[i+1])/2;
j=j+2; i++;
for(i=1;i<=j;i++)
cout<<y[i]<<” ”;
cout<<endl<<"Apasati o tasta...";
getch();
};
x[i]=x[i+1];
cout<<”noul vector obtinut:”;
for(i=1;i<=n-1;i++)
cout<<x[i]<<” ”;
cout<<endl<<"Apasati o tasta...";
getch();
};
11
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
Test de autoevaluare 1
a) 0 b) infinit c) 10 d) 1
12
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
cout<<endl;
} while(x<0);
a) 2 b) 2 1 0 -1 c) 2 1 d) 2 1 0 -1 -2
13
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
a) 0 b) 30 c) 100 d) 20
14
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
xy ( x y ) 2
Programare în C/C++ : structuri de control auxiliare
Nivel Mesaj
1 sau 2 incepator
3 mediu
4 sau 5 avansat
altul ID gresit
int nivel;
cout<<” Nivelul de la 1 la 5 este : “; cin>>nivel;
switch (nivel)
{
case 1:
case 2: cout<<”incepator”;
case 3: break; cout<<”mediu”;
case 4: cout<<”avansat”;
case 5: break;
default: cout<<”Id gresit”;
}
se citește: se afișează:
5*4 20
17 / 3 5
25 – 40 - 15
15
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
1. a)
2. b)
3. c)
4. a)
5. a)
6. b)
7. b)
Recapitulare
Bibliografie:
16
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii
Programare în C/C++ : structuri de control auxiliare
2016.
5. Farrell, J. ”Programming Logic and Design”, Ed. Cengage Learning, 2012.
17
Programarea calculatoarelor și limbaje de programare – Curs şi aplicaţii