Sunteți pe pagina 1din 5

PCLP Laboratorul 6

Asist.drd.ing. Ana-Maria SUDUC

Laboratorul 6
Instrucţiuni II

1. Noţiuni teoretice
1.1. Instrucţiuni de salt
C/C++ dispune de patru instrucţiuni de salt: return, goto, break şi continue. Dintre acestea, return
şi goto pot fi folosite oriunde în program. Instrucţiunile break şi continue pot fi folosite împreună cu
oricare dintre instrucţiunile de ciclare. Instrucţiunea break se poate folosi împreună cu switch.
1.1.1 Instrucţiunea return
Instrucţiunea return este folosită pentru a obţine rezultatul unei funcţii. Este considerată drept
instrucţiune de salt întrucât determină executarea programului să revină (să execute un salt înapoi) la
punctul în care s-a făcut apelarea funcţiei. Dacă instrucţiunii return îi este asociată o valoare, acea valoare
devine valoarea calculată prin acea funcţie. Dacă nu este specificată nici o valoare calculată a funcţiei, se
presupune returnarea unei valori inutile. (Unele compilatoare C/C++ vor returna valoarea zero dacă nu este
indicată nici o valoare). Forma generală a instrucţiunii return este:
return expresie;
Expresie este opţională. Cu toate acestea, dacă există, ea va deveni valoarea returnată de funcţia
respectivă.
În cadrul unei funcţii puteţi folosi instrucţiuni return la discreţie. Cu toate acestea, o funcţie va fi
stopată din execuţie la întâlnirea primei instrucţiuni return. Acolada de la sfârşitul unei funcţii determină
de asemenea revenirea din aceasta. Situaţia este analogă cu un return căruia nu i s-a precizat nici o valoare.
O funcţie declarată de tip void nu poate conţine o instrucţiune return care specifică o valoare. (Din
moment ce o funcţie de tip void nu are valoare calculată, este de bun simţ faptul că o instrucţiune return
interioară acesteia nu poate returna o valoare.)
1.1.2. Instrucţiunea goto
Din moment ce limbajul C/C++ dispune de o zestre bogată de structuri de control şi permite
funcţiuni suplimentare de control folosind instrucţiunile break şi continue, instrucţiunea goto nu este
deosebit de necesară.
Instrucţiunea goto necesită o etichetă pentru a putea opera. (O etichetă este un identificator permis
din C/C++, urmat de două puncte.) în plus, eticheta trebuie să se afle în aceeaşi funcţie ca şi instrucţiunea
goto care o foloseşte; nu aveţi cum să faceţi salturi între funcţii. Forma generală a instrucţiunii goto este:
goto etichetă
.
.
etichetă:
unde etichetă este orice etichetă corectă, situată înainte sau după goto. De exemplu, poate fi creat un
ciclu de la 1 la 100 folosind instrucţiunea goto şi o etichetă, după cum se va arăta în continuare:
x = 1;
ciclul:
x++;
if(x<100) goto ciclul;

1.1.3. Instrucţiunea break


Instrucţiunea break poate fi folosită în două scopuri: în primul rând, se poate folosi pentru a încheia
execuţia unei instrucţiuni case aflată într-o instrucţiune switch (despre care s-a vorbit în unul dintre

1
PCLP Laboratorul 6
Asist.drd.ing. Ana-Maria SUDUC

laboratorele anterioare). De asemenea, mai poate fi folosită pentru încheierea imediată a unui ciclu, prin
omiterea testului condiţional al acestuia.
Atunci când instrucţiunea break apare în interiorul unui ciclu, acesta este încheiat imediat, şi
programul va continua cu instrucţiunea imediat următoare ciclului. De exemplu:
#include <iostream>
using namespace std;
void main(void)
{
int t;
for(t=0; t<100; t++)
{
cout<<t;
if(t==10) break;
}
}
Scrie pe ecran numerele de la 0 la 10. Apoi ciclul se încheie, fiindcă instrucţiunea break determină
ieşirea imediată din ciclu, ignorând testul condiţional t<100.
1.1.4. Instrucţiunea continue
Instrucţiunea continue este oarecum asemănătoare instrucţiunii break. Însă, în loc de a forţa
încheierea programului, continue forţează următoarea iteraţie a ciclului prin omiterea oricăror linii de
program dintre cele două iteraţii. Pentru ciclul for, instrucţiunea continue determină testul condiţional şi
apoi porţiunile de incrementare ale ciclului de executat. Pentru instrucţiunile while şi do-while, programul
trece la testele condiţionale.
1.2. Instrucţiuni expresie
O instrucţiune de tip expresie nu este altceva decât o expresie corectă în C/C++, urmată de punct şi
virgulă, ca în exemplul următor:
funct(); /* apelarea unei funcţii */
a = b+c; /* instrucţiune de atribuire */
; /* instrucţiune vidă */
Prima instrucţiune de mai sus execută apelarea unei funcţii. A doua este o atribuire iar ultima indică
faptul ca C/C++ permite ca o instrucţiune sa nu conţină nimic (uneori mai este denumită şi instrucţiune
nulă).
1.3. Instrucţiuni bloc
Instrucţiunile bloc nu sunt altceva decât grupuri de instrucţiuni legate între ele şi tratate unitar.
Instrucţiunile care alcătuiesc un bloc sunt interconectate din punct de vedere logic. Un bloc începe cu o
acoladă de deschidere şi se încheie cu o acoladă de închidere. Instrucţiunile bloc sunt folosite cel mai
adesea pentru a crea o destinaţie multi-instrucţiune pentru o altă instrucţiune, cum ar fi if. Totuşi, o
instrucţiune bloc poate fi plasată în orice loc normal pentru altă instrucţiune.
2. Aplicaţii
2.1.Lansaţi în execuţie aplicaţia Visual C++ 2010 Express Edition:
Din meniul Start-> All Programs-> Microsoft Visual Studio 2010 Express, executaţi clic pe
opţiunea Microsoft Visual C++ 2010 Express.
2.2. Creaţi un nou proiect, Proiect1 şi un nou fişier File1.cpp:
a) Din meniul File->New, alegeţi opţiunea Project;
b) În fereastra New Project selectaţi opţiunea Win32 şi verificaţi să fie selectat Win32 Console
Application;
c) În câmpul Name introduceţi Proiect1 şi apăsaţi OK;
d) În fereastra deschisă apăsaţi Next şi apoi selectaţi opţiunea Empty Project şi apăsaţi Finish;

2
PCLP Laboratorul 6
Asist.drd.ing. Ana-Maria SUDUC

e) În secţiunea Solution Explorer executaţi clic dreapta pe directorul Source File şi alegeţi opţiunea
New-> Item;
f) În fereastra Add New Item selectaţi categoria Code şi verificaţi să fie selectată opţiunea C++
File (.cpp);
g) În câmpul Name tastaţi numele File1 şi apăsaţi Add.

2.3. În fişierul File1.cpp introduceţi şi testaţi exemplul de program, de la punctul 1.1.3:


a) Tastaţi programul dat, respectând liniile de cod;
b) Compilaţi programul executând clic dreapta pe numele fişierului din secţiunea Solution Explorer
şi executând clic pe opţiunea Compile sau executând combinaţia de taste Ctrl+F7;
c) Corectaţi eventualele erori semnalate în secţiunea Output;
d) După rezolvarea eventualelor erori, rulaţi programul selectând, din meniul Debug, opţiunea Start
Without Debugging sau executând combinaţia de taste Ctrl+F5.
2.4. Testaţi următorul program care citeşte două numere naturale n şi p cu condiţia ca n>=2p şi
calculează suma primelor şi ultimelor p numere.
#include <iostream>
using namespace std;
void main(void)
{
int n,s=0,p,i;
cout<<"Introduceti valoarea lui n: ";
cin>>n;
cout<<"Introduceti valoarea lui p (n>=2p): ";
cin>>p;
if (n>=2*p)
{
for (i=1; i<=n; i++)
{
if (((p+1)<=i)&&(i<=(n-p))) continue;
else s+=i;
}
cout<< "s="<<s<<endl;
}
else cout<<"Nu este respectata conditia ca n>=2p.\n";
}
2.5. Modificaţi programul anterior, astfel încât să realizeze acelaşi lucru fără a folosi instrucţiunea
continue.
2.6. Testaţi următorul program care afişează termenul an al şirului:
1 / n, n = 3k ,

a n = 2 / n, n = 3k + 1, n ∈ N *
3 / n, n = 3k + 2.

#include <iostream>
using namespace std;
void main(void)
{
int n;
cout<<"n=";
cin>>n;
switch (n%3)
{
case 0:
cout<<1./n;
break;
case 1:

3
PCLP Laboratorul 6
Asist.drd.ing. Ana-Maria SUDUC

cout<<2./n;
break;
case 2:
cout<<3./n;
}
}
2.7. Testaţi următorul program:
#include <iostream>
using namespace std;

void main ()
{
int n;
cout << "Introduceti valoarea de inceput: ";
cin >> n;

while (n>0) {
cout << n << ", ";
--n;
}
cout << "Bum!\n";
}
2.8. Modificaţi programul anterior, înlocuind instrucţiunea while cu do{}while.
2.9. Modificaţi programul 2.6., înlocuind instrucţiunea while cu for.
2.10. Modificaţi programul 2.6. astfel încât să afişeze numerele pornind de la valoarea n, dată de
utilizator, care trebuie să fie mai mică decât 20, şi până la 20, inclusiv, după care să afişeze Bum!.
Exemplu: Pentru n=15 se va afişa

2.11. Testaţi următorul program care rezolvă ecuaţia de gradul II: ax2+bx+c=0
#include <iostream>
#include <cmath>
using namespace std;
void main(void)
{
float a,b,c,d;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"c="; cin>>c;
if (a!=0)
{
d=b*b-4*a*c;
if(d>0)
{
cout<<"x1="<<(-b+sqrt(d))/2*a<<endl;
cout<<"x2="<<(-b-sqrt(d))/2*a<<endl;
}
else
{
cout<<"x1="<<-b/(2*a)<<"+i"<<sqrt(-d)/(2*a)<<endl;
cout<<"x2="<<-b/(2*a)<<"-i"<<sqrt(-d)/(2*a)<<endl;
}
}

4
PCLP Laboratorul 6
Asist.drd.ing. Ana-Maria SUDUC

else
if(b!=0)
cout<<"x="<<-c/b;
else
if (c==0)
cout <<"Avem o infinitate de solutii"<<endl;
else
cout<<"Ecuatia nu are solutii"<<endl;
}
2.12. Modificaţi programul anterior, astfel încât să rezolve ecuaţii de gradul II, atâta timp cât
răspunsul la întrebarea: “Doriţi să rezolvaţi o nouă ecuaţie? (D/N)”, este “D”.
a) Declaraţi variabila de tip caracter o (în această variabilă va fi memorată opţiunea utilizatorului de a
rezolva sau nu o nouă ecuaţie);
b) Introduceţi într-o buclă do{}while setul de instrucţiuni de la afişarea mesajului a= şi până la
sfârşitul funcţiei main();
c) Adăugaţi la acest set de instrucţiuni instrucţiunea de afişare a mesajului “Doriţi să rezolvaţi o nouă
ecuaţie? (D/N)” şi o instrucţiune de citire a variabilei o;
d) Condiţia de continuare a instrucţiunii do{}while va fi: cât timp o va fi egal cu D sau d.

Bibliografie

http://www.cplusplus.com/doc/tutorial/

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