Sunteți pe pagina 1din 7

Instructiuni in C++

Teorie
Tipuri de instructiuni:
1. Instructiunea compusa
2. Instructiunea de atribuire
3. Instructiunea de citire
4. Intructiunea de scriere
5. Instructiunea de decizie
6. Instructiunea de selectie
7. Instructiunea repetitiva cu nr. cunoscut de pasi
8. Instructiunea repetitiva cu test initial
9. Instructiunea repetitiva cu test final

1. Instructiunea compusa

{
instr 1;
instr 2;
.......
instr n;
}

Unde instr 1, instr 2, ..., instr n pot fi oricare dintre instructiunile limbajului de programare.

2. Instructiunea de atribuire

var=expresie

Unde "=" se numeste operator de atribuire.

Modul de executie:
- se evalueaza expresia aflata la dreapta semnului de atribuire si rezultatul obtinut este memorat in
variabila aflata la stanga semnului de atribuire.

OBS!
Variabila si expresia utilizata in cadrul unei instructiuni de atribuire trebuie sa aibe acelasi tip de date
sau sa fie de tipuri compatibile de date.

Ex::
int x,y;
float m,n;
x=2; x=2
y=x+2; y=4
m=x/y; m=0
n=m*2+x-5; n=-3
x=y+12; y=16
x=(m>n); x=1

In limbajul C++ exista si urmatorii operatori de atribuire:

+=, -=, /=, *=, %=

Ex:
int x=6,y=3;
x+=12 <=> x=x+12(18)
y/=5 <=> y=y/5(0)
x%=y <=> x=x%y(0)
y*=2 <=> y=y*2(0)

3. Instructiunea de citire

OBS!
Functiile pentru citirea si afisare datelor se afla in biblioteca iostream.

Atunci cand un program utilizeaza cel putin o instructiune de citire sau afisare programul trebuie sa
contina in mod obligatoriu in sectiunea de declarare biblioteci linia:

#include <iostream>

Forma generala a instructiunii de citire este urmatoarea:

cin>>var1[>>var2>>...>>varn];

Instructiunea de citire se efectueaza astfel:


- se intrerupe executia programului si se asteapta introducerea unui nr de valori "=" cu numarul
variabilelor aflate in cadrul instructiunii cin.
- valorile introduse sunt memorate pe rand in variabila din linia de instr.

OBS!
Valorile introduse trebuie sa fie de acelasi tip de date ca si tipurile de date aflate in cadrul
instructiunii de citire.

Ex:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b; // <=> cin>>a; cin>>b;
return 0;
}

4. Instructiunea de scriere

cout<<exp1[<<exp2<<...<<expn];

Modul de executie:
-se evalueaza expresiile care apar in cadrul liniei de instr. si valorile obtinute se afiseaza pe ecran.

In cadrul unei instrucituni cout se pot afisa si caractere sau siruri de caractere. In limbajul C++ se
reprezinta incadrate intre apostrofuri, iar sirurile de caractere se reprezinta intre ghilimele.

Ex: Se citesc de la tastatura 2 nr intregi a si b. Scrieti un program care afiseaza suma si produsul celor
2 nr.

#include <iostream>
using namespace std;
int main()
{
int a,b;
cout<<"Introduceti valoarea lui a "; cin>>a;
cout<<"Introduceti valoarea lui b "; cin>>b;
cout<<a+b<<" "<<a*b;
return 0;
}

In cadrul instructiunii cout pot sa apara endl care realizeaza saltul la linie noua a cursorului.

Endl <=> '\n'

Ex:
cout<<a+b<<endl;
cout<<a*b;

Pentru afisare datelor intregi sau reale se pot utiliza din biblioteca iomanip.

setw(nr) = nr care precizeaza pozitiile pe care va fi afisata valoare intreaga sau reala. Daca acest nr
este mai mic decat nr. pozitiilor necesare afisarii unei date atunci acesta va fi ignorat.

setprecision(nr) = specifica nr de zecimale care vor fi utilizate pentru afisarea datelor reale. In cazul in
care data reala nu are zecimala sau un numar de nr zecimale aceasta va fi ignorata.

Pentru afisarea tuturor datelor reale cu un nr exact de zecimale se utilizeaza cuvantul fixed care se
afla in aceeasi biblioteca iomanip.

Ex: Se citesc 2 nr reale x si y. Sa se afiseze cele 2 nr cu cel mult 3 zecimale.

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float x,y;
cout<<"x= "; cin>>x;
cout<<"y= "; cin>>y;
cout<<setprecision(3)<<x<<" "<<y;
return 0;
}

OBS!
Pentru afisarea nr cu exact 3 zecimale, la afisare vom folosi urmatoarea structura:

cout<<fixed<<setprecision(3)<<x<<" "<<y;

5. Instructiunea de decizie

a) if(expresie)
instr1;
else
instr2;

b) if(expresie)
instr1;

Modul de executie:
- se evalueaza expresia si daca aceasta este diferita de 0 se efectueaza instructiunea 1.
- in cazul in care valoarea expresiei este egala cu 0 atunci:

a) daca instructiunea if este in forma a) se efectueaza instructiunea 2.


b) daca instructiunea if este in forma b) atunci se executa instructiunea care urmeaza in cadrul
algoritmului dupa instructiunea de decizie.

Ex: Se citesc 2 nr intrgi a si b. Scriei un program C++ care afiseaza valoarea maxima dintre cele 2 nr
citite.

#include <iostream>
using namespace std;
int main()
{int a,b;
cout<<"Introduceti a= "; cin>>a;
cout<<"Introduceti b= "; cin>>b;
if(a>b)
cout<<a<<" este mai mare ca "<<b;
else
cout<<b;
return 0;
}

NOTA
if(a!=0) <=> if(a)
if(a==0) <=> if(!a)
6. Instructiunea de selectie(switch)

swith(expresie)
{
case exp1: instructiuni; break;
case exp2: instructiuni; break;
............................................
case expn: instructiuni; break;
[default: instructiuni]
}

- unde exp1, exp2,..., expn pot fi constante variabile sau expresii de acelasi tip simplu de date.

Modul de executie:
- se efectueaza instructiunea pentru care expresia este egala cu una dintre expresiile exp1, exp2,...,
expn.
- in cazul in care expresia nu este egala cu niciuna dintre cele n expresii atunci se efectueaza
instructiunile care urmeaza dupa default, in cazul in care aceasta clauza este prezenta in cadrul
instructiunii switch, si daca aceasta nu mai apare in cadrul insructiunii switch, atunci se termina de
efectuat instructiunea switch si se efectueaza instructiunea urmatoare in cadrul programului
instructiunii switch.

OBS!
O problema care se rezolva cu ajutorul instructiunii switch se poate rezolva si utilizand instructiuunea
if.

Ex:
Se citesc de la tastatura 2 nr intregi a si b si unul dintre operatorii matematici: +, /, -, *. Scrieti un
program care afiseaza:
"a+b" daca +
"a-b" daca -
"a*b" daca *
"a/b" daca / (catul real)

#include <iostream>
using namespace std;
int main()
{int a,b; char c;
cin>>a>>b;
cin>>c;
switch(c)
{
case '+': cout<<a+b; break;
case '-': cout<<a-b; break;
case '*': cout<<a*b; break;
case '/': cout<<a/b; break;
default: cout<<"Operator gresit";
}
return 0;
}
Instructiuni repetitive
1. Instructiunea repetitiva cu nr cunoscut de pasi(for)

for(expresie_initializare; exp_test; exp_incrementare/decrementare)


instructiune;

Modul de executie:
- se efectueaza expresia de initializare si se valueaza expresia de test. Dca rezultatul expresiei de test
este diferit de 0(adica este adevarata) se efectueaza instructiunea subordonata instructiunii for.
- dupa efectuarea instructiunii subordonate se efectueaza expresia de incrementare sau de
decrementare, si se evalueaza din nou expresia de test. Daca valoarea acesteia este diferita de 0 se
efectueaza din nou instructiunea subordonata secventii for si se efectueaza expresia de incrementare
sau de decrementare.
- algoritmul se continua pana cand valoarea expresiei de test este egala cu 0(este falsa)

OBS!
Instructiunea subordonata secventei for poate fi instructiune simpla sau compusa.

Ex: Se citeste n nr nat. Scrieti un prgram care calculeaza suma primelor n nr naturale.

S=1+2+3+...+n, n∈N

#include <iostream>
using namespace std;
int main()
{int n,S,i;
cin>>n;
S=0;
for(i=1;i<=n;i++)
S=S+i;
cout<<S;
return 0;
}

2. Instructiunea repetitiva cu test initial(while)

while(expresie)
instructiune;

Modul de executie:
- se evalueaza expresia si daca aceasta este diferita de 0 se efectueaza instructiunea subordonata.
Dupa efectuarea instructiunii se evalueaza din nou expresia si daca aceasta este diferita de 0 se
efectueaza din nou instructiunea subordonata. Algoritmul se reia cat timp valoarea expresiei este
diferita de 0.
- in cazul in care valoarea expresiei este egala cu 0, se termina de efectuat instructiunea while si se
efectueaza instructiunea care urmeaza in cadrul programului dupa instructiunea while.

Ex:

n∈N
S=1+2+...+n.
#include <iostream>
using namespace std;
int main()
{int n,i,S=0;
cin>>n;
i=1;
while(i<=n)
{
S=S+i;
i++;
}
cout<<S;
return 0;
}

3. Instructiunea repetitiva cu test final(do-while)

do
instructiune;
while(expresie);

Modul de executie:
- se efectueaza instructiunea subordonata si apoi se evalueaza expresia, daca expresia este diferita
de 0 atunci se efectueaza din nou instructiunea subordonata.
- dupa efectuarea instructiunii se evalueaza din nou expresia, algoritmul reluandu-se cat timp
expresia este diferita de 0.
- in cazul in care valoarea expresiei este egala cu 0 se termina de efectuat instructiunea do-while si se
executa instructiunea care urmeaza in cadrul programului dupa aceasta.

Ex:
n∈N
S=1+2+...+n;

#include <iostream>
using namespace std;
int main()
{int n,i,S=0;
cin>>n;
i=1;
do
{
S+=i;
i++;
}
while(i<=n);
cout<<S;
return 0;
}

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