Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Instructiuni
Instrucţiune = şir de cuvinte cheie cu sintaxa corespunzătoare sau de expresii evaluabile terminat cu punct şi virgulă ;
Sintaxa: cuvinte cheie sau/şi expresii ;
Exemplu:
int a = 5;
a += 10;
int b;
b = a + 100;
Instrucţiune compusă (bloc de instrucţiuni) = succesiune de instrucţiuni incluse între acolade { }.
poate contine (oriunde in bloc) declaratii/definitiivariabile locale (ce vor exista numai în interiorul aceluibloc)
Sintaxa: { [lista declaraţii variabile locale ]
instrucţiune_1 . . . . . . . . . . . . . . .
instrucţiune_n[ lista declaraţii variabile locale ] instrucţiune_m. . . . . . . . . . .
}
Observatie: Blocul de instrucţiuni se foloseşte acolo unde sintaxa limbajului aşteptă o singură instrucţiune, iar utilizatorul doreşte să folosească mai multe
Instructiuni
Instrucţiunea goto
Instructiune de salt neconditionat = se intrerupe executareasecventiala (la rand) a instructiunilor si se trece direct, fara alta conditie, la executarea instructiunii precedata de eticheta.
Sintaxa: goto etichetă;
. . . . . . . . . . .
etichetă: instrucţiune
Observatie: Instrucţiunea goto trebuie evitată, pe cât este posibil,
deoarece prin salturile pe care le introduce face ca urmărirea şi depanarea unui program să se facă mai greu
Instructiuni
Instrucţiunea vida ;
nu are nici un efect.
se foloseste în cazul în care sintaxa cere o instrucţiune, iar utilizatorul nu doreşte să folosească una.
Instructiuni
Instrucţiuni de decizie
Folosite pentru ramificarea caii de executie a programului în funcție de anumite condiții.
Instructiuni
Instrucţiunea if
Sintaxa: if (expresie)
instrucţiune_1[compusă]else
instrucţiune_2[compusă]
Efect: dacă expresie este adevărată atunci
execută instrucţiune_1 altfel
execută instrucţiune_2
Instrucțiuni. Instrucțiuni de decizie
Instrucţiunea if
expresie trebuie sa ofere ca rezultat o valoare logică, în caz contraracesta este convertit la o valoare logica cu regula cunoscuta (0 = false)
Exemplu 1:
float a, b;
cin>>a>>b;
if (b==0) // conditia b este un numar real
cout<<"Numitor zero";
else
cout<<"Rez=”<<a/b<<endl;
Instrucțiuni. Instrucțiuni de decizie
Instrucţiunea if
Exemplu 2:
char a;
cin>>a;
if (a>='a' && a<='z')
cout<<a<<" este litera mica"<<endl;
else if (a>='A' && a<='Z')
cout<<a<<" este majuscula"<<endl;
else
cout<<a<<" nu este litera"<<endl;
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea if
Observatie: Înlănţuirea instrucţiunilor if-else introduce
ambiguitate referitor la împerecherea blocurilor if cu cele else.
Regula este ca o ramură else se asociază întotdeauna
cu if-ul imediat anterior.
Exemplu : (scrierea neidentata a fost voită)
if (n>0)
if (a>b)
z=a ;
else
z=b ;
if (n>0) {
if(a>b)
z=a; }
else
z=b;
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea if
Tema:
int main()
{ int a=0,b=0,x;
cin>>x; // de ex. x=5 apoi x=0
if((a=x)||(b=x+2))
cout<<"a= " << a <<"b= " << b << endl);
cout<<"a= " << a <<"b= " << b << endl);
return 0;
}
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea switch
pentru ramificăre multipla = în urma evaluării unei expresii, în funcţie de rezultat, putem avea mai multe alternative de urmat
Sintaxa:switch (expresie)
{ case constanta_1: [ instrucţiune_1 [compusă] ] [ break; ]
case constanta_2: [ instrucţiune_2 [compusă] ] [ break; ]
. . . . . . . . . . . . . . . . . . .
case constanta_n: [ instrucţiune_2 [compusă] ] [ break; ]
[ default: instrucţiune [compusă] ]
}
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea switch Sintaxa:switch (expresie)
{ case constanta_1: [ instrucţiune_1_1; ]
[ instrucţiune_1_2; ]
[ . . . . . . . . ]
[ break; ]
case constanta_2: [ instrucţiune_2_1; ]
[ instrucţiune_2_2; ]
[ . . . . . . . . . ]
[ break; ]
. . . . . . . . . . . . . . . . . . .
case constanta_n: [ instrucţiune_n_1; ]
[ instrucţiune_n_2; ]
[ . . . . . . . . . ]
[ break; ]
default:[ instrucţiune_d_1;]
[ instrucţiune_n_2;]
[ . . . . . . . . . ]
}
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea switch
Observație:
expresie obligatoriu = rezultat de tip întreg (sau caracter).
Efect:
daca rezultatul = una dintre
constanta_1, constanta_2,…, constanta_n,
atunci
executa ramura case din dreptul constantei respective şi
continuă până la întâlnirea primei comenzi
break => iese din blocul instrucţiunii switch.
dacă rezultat expresiei nu se regăseşte printre constante,
atunci
execută ramura default, dacă există!!
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea switch Observatii:
Dacă nu avem break după execuţia instrucţiunii desemnate de rezultatul expresie, atunci se vor executa şi instrucţiunile ce vor
urma, deci cele asociate următoarelor constante, până la întâlnirea primului break sau a ultimei acolade }.
Exemplu: Numararea inversa de la n (intre 1 si 5) la 1
int a;
cin>>a;
switch (a)
{ case 5: cout<<5<<endl;
case 4: cout<<4<<endl;
case 3: cout<<3<<endl;
case 2: cout<<2<<endl;
case 1: cout<<1<<endl;
break; // TREBUIE ???
default: cout<<” Numar intre 1 si 5!!”;
}
Instructiuni. Instrucțiuni de decizie.
Instrucţiunea switch Observatii:
Instrucţiunea asociată unei constante poate să lipsească, caz în care va fi executată instrucţiunea etichetei imediat următoare.
Astfel, mai multe constante conduc la execuţia aceleiaşi instrucţiuni
Exemplu: Determină numere pare/impare între 1 si 6
int a;
cin>>a;
switch (a)
{ case 2:
case 4:
case 6: cout<<”Numar par”<<endl;
break;
case 1:
case 3:
case 5: cout<<”Numar impar”<<endl;
break; // TREBUIE ???
default: cout<<” Numar intre 1 si 6!!”;
Instructiuni. Instrucțiuni de decizie.
Instructiuni
Instrucţiuni de buclare (ciclare)
folosite in cazul in care un bloc de instructiuni trebuie executat de mai multe ori, relativ la un anumit criteriu
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea while = ciclu cu test iniţial
Sintaxa: while(expresie)
instrucţiune [compusă]
Efect: cât timp expresie este adevărată
execută instrucţiune [compusă]
Instrucţiunea while
Observatii:
1. Datorită testarii înainte intrarii in ciclu:
daca expresia este falsă de la început
atunci instrucţiunea nu se execute niciodată.
2. Dacă în locul expresiei se pune valoarea 1 se obţine un ciclu infinit.
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea while
Exemplu: tipărirea numerele de la 0 la 9 si calcularea sumei lor
int main()
{ int nr = 0, suma = 0; //initializare nr si suma
while( nr < 10 ) //cit timp nr e mai mic decat 10
{ suma += nr;
cout<<"nr="<<nr++<<"suma="<<suma<<endl;
}
return 0;
}
Tema: se poate?
while( nr < 10)
cout<<"nr="<<nr++<<"suma="<<suma+=nr<<endl;
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea while
Exemplu: determina tipul unui caracter (litera/cifra), ciclu infinit
int main()
{ char a;
while(1)
{ cin>>a;
if(a>=‘a’ && a<=‘z’ || a>=‘A’ && A<=‘Z’)
cout << ”Litera” << endl;
else if(a>=‘0’ && a<=‘9’)
cout<<”Cifra”<<endl;
else if(a == 27)
return 0;
else
cout<<”Caracter special”;
}
return 0;
}
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea while
Exemplu: calcul n factorial
int main()
{ int nr;
long fact;
while(1)
{ cout<<“nr= ”;
cin >> nr;
fact = 1;
while(nr)
fact = fact * nr--;
cout << “factorial = ” << fact << endl;
}
return 0;
}
Tema: Ce valori se pot introduce pentru nr ?
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea do while = ciclu cu test final
Sintaxa: do
instrucţiune [compusă]
while(expresie);
Efect: execută
instrucţiune [compusă]
cât timp expresie este adevărată
Observație: Condiția de ieșire din ciclu este
expresie este falsă
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea do while
Observatii:
1. Datorită testarii la sfârșitul ciclului, chiar daca la prima testare expersie este falsă, blocul de instrucțiuni se execută cel puțin o
data:
execută
instrucţiune [compusă]
cât timp ... Dacă expersie este falsă, se iese
din ciclu abia la sfârșit dupa execiția blocului
2. Dacă în locul expresiei se pune valoarea 1 se obţine un ciclu infinit.
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea do while
Exemplu: Program care aşteptă introducerea de la tastatură a anumitor caractere, de exemplu d sau D
int main()
{ char c;
cout<<"Doriti sa continuati? (da/nu) ");
do
c = getch();
while( c!='d' && c!='D' );
cout<<"Programul s-a terminat!!"<<endl;
}
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Sintaxa: for(expr_1; expr_2; expr_3)
instrucţiune [compusă]
Efect: execută expr_1;
cât timp expr_2 este adevărată
execută { instrucţiune [compusă]
expr_3;
}
Observație: Condiția de ieșire din ciclu este
expr_2 este falsă
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Observație: Față de alte limbaje, în C++, instrucțiunea for are un
caracter mai general, în sensul ca cele 3 expresii pot fi de orice formă, evaluarea lor se face în ordinea descrisă anterior
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Observație: Față de alte limbaje, în C++, instrucțiunea for are un
caracter mai general, în sensul ca cele 3 expresii pot fi de orice formă, evaluarea lor se face în ordinea descrisă anterior
În cazul particular: ciclu cu contor, sintaxa devine:
Sintaxa: for(expr_init; expr_stop; expr_incr)
instrucţiune [compusă]
în care: expr_init se folosește pentru inițializarea contorului
expr_stop verifică dacă contorul a ajuns la sfârșitul
domeniului de variație
expr_incr actualizează contorul, de obicei îl
incrementează
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Exemplu: Folosirea unui ciclu for (cu contor )pentru afișarea
numerelor de la 1 la 10
int main()
{ int i;
for( i = 1; i < 11; i++ )
cout << i << endl;
}
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Observații: Ciclul infinit se obține când lipsește expr_2 , deci cu
sintaxa:
for( expr_1; ;expr_3 )
Caz particular, foarte des utilizat:
for( ; ; )
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Exemplu: Funcţie pentru calcularea factorialului
int main()
{ int f=1;
int n=10;
for ( ; n; )
f *= n--;
return 0;
}
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Exemplu: Program care citeşte o frază de la tastatură, terminarea ei fiinddeterminată de apăsarea tastei Escape. În timp ce se introduce textul se numără de câte ori apare caracterului a
int main()
{ char c; int i;
for(i=0,c=getche();c!='\x1b';i+=c=='a'?1:0,c=getche());
cout << endl << "S-au introduse " << i << " litere a";
return 0;
}
Instrucțiuni. Instrucțiuni de bulcare (ciclare)
Instrucţiunea for
Exemplu: Program care tipăreşte tabla înmulţirii. Folosește cicluri imbricate
int main()
{ int col, rand;
cout << endl; //linie noua
for(rand=1; rand<13; rand++) //bucla externa
{ for(col=1; col<13; col++) //bucla interna
cout << col*rand << “ “; //tipareste produsul
cout << endl; //linie noua
}
}
Instrucțiuni.
Instrucţiunea break
Sintaxa: break;
Utilizare: oprirea execuţiei unui ciclu într-un anumit moment sau
pentru terminarea unei instrucţiuni switch
Observație: Folosirea instrucţiunii break în ciclurile imbricate
conduce numai la părăsirea ciclului de nivel curent, încare se află instrucțiunea.
Instrucțiuni.
Instrucţiunea break
Exemplu / Tema: Ce afișează programul:
int main()
{ int i,k;
i=k=1;
while(i++<10)
{ cout << i << endl;
while( k++ )
{ cout << k << endl;
if ( k == i ) break;
}
}
return 0;
}
Instrucțiuni.
Instrucţiunea continue
Sintaxa: continue;
Utilizare: reluarea ciclului de la condiţia de testare, prin urmare nu se
mai execută instrucţiunile din ciclu care se află întreinstrucțiunea continue şi sfârşitul ciclului.
Într-un ciclu for saltul se face la executarea expresiei de
incrementare.
Instrucțiuni.
Instrucţiunea continue
Exemplu:
Program care adună numerele pare introduse de la tastatură până cândsuma depăşeşte 25. Dacă în timp ce se calculează suma ajunge zece, atunci se
reia procesul de la capăt.
int main()
{ int s=0,n;
while(1)
{ cout << “n=”;
cin >> n;
if( s == 10 )
{ s = 0;
continue;
}
s += n%2 ? 0 : n;
if( s > 25 )
break;
}
return 0;
}