Sunteți pe pagina 1din 20

CURS 5

Instructiuni
2

• Algoritmul proiectat pentru rezolvarea unei anumite probleme trebuie


implementat într-un limbaj de programare; prelucrarea datelor se
realizează cu ajutorul instrucţiunilor.
• Instrucţiunea descrie un proces de prelucrare pe care un calculator îl poate
executa.
• O instrucţiune este o construcţie validă (care respectă sintaxa limbajului)
urmată de ;
• Ordinea în care se execută instrucţiunile unui program defineşte aşa-
numita structură de control a programului.

• Limbajele moderne sunt alcătuite pe principiile programării structurate.


• orice algoritm poate fi realizat prin combinarea a trei instructiuni
fundamentale:
• instructiunea secvenţială;
• instructiunea alternativă (de decizie, de selecţie);
• instructiunea repetitivă (ciclică).
3

Ordinea de execuţie a intrucţiunilor


• La un moment dat, calculatorul se găseşte sub controlul unei
instrucţiuni;
• După ce această instrucţiune este executată, controlul este trecut
următoarei instrucţiuni;
• În mod obişnuit execuţia este secvenţială.

Instrucţiunea 1

Instrucţiunea 2

Instrucţiunea 3
4

Ordinea de execuţie a intrucţiunilor


• Acolo unde dorim ca execuţia să nu mai fie secvenţială, se introduc
instructiuni de control .
• Atunci când se doreste ca un program să aleagă între două acţiuni
alternative, se utilizeaza o instructiune de control al selecţiei.

• Dacă este adevărată, calculatorul execută o intrucţiune.


• Dacă este falsă, execută altă instrucţiune.

Adevărat Fals
Presupunere

Instrucţiunea 1A Instrucţiunea 1B
5

Instrucţiuni
Expresii: (vida); expresie;

Compuse (bloc): {declaraţii instrucţiuni}

Condiţionale: if if-else switch-case

Iterative: for while do-while

Intreruperea secvenţei: continue break return expr

Salt necondiţionat: goto


6

• înşiruire de secvenţe de prelucrare (instrucţiuni), plasate una


după alta, în ordinea în care se doreşte execuţia acestora.
• Reprezentarea structurii secvenţiale cu ajutorul schemei logice
(Reprezentarea structurii secvenţiale cu ajutorul pseudocodului:

Instructiune 1;

Instructiune 2;

Reprezentare in pseudocod

Schema logica pentru instructiune secventiala


7

1. Instrucţiunea vidă
Sintaxa: ;

Instrucţiunea vidă nu are nici un efect.


Se utilizează în construcţii în care se cere prezenţa unei instrucţiuni, dar
nu se execută nimic (de obicei, în instrucţiunile repetitive).

Exemplu:
int a;
......
int j;
;
for (;;)
{
....
}
Instrucţiunea expresie
Sintaxa: expresie;
sau: apel_funcţie;

oExemplu:
int b, a=9;
double c;
b=a+9;
cout<<a;
c=sqrt(a);
clrcsr(); //apelul funcţiei predefinite care şterge
ecranul; prototipul în headerul conio.h
9

Instrucţiunea compusă (bloc)


Sintaxa: { declaratii;
instr1;
instr2;
....
}
Grupează instrucţiuni într-o unitate executabilă.
 Dacă sunt şi declaraţii la început, instrucţiunea compusă se numeşte şi
bloc.
Într-un bloc se pot declara şi variabile care pot fi accesate doar în corpul
blocului.
Instrucţiunea bloc este utilizată în locurile în care este necesară prezenţa
unei singure instrucţiuni, însă procesul de calcul este mai complex, deci
trebuie descris în mai multe secvenţe.
Instrucţiunile condiţionale if şi if-else
Sintaxa: if (expresie)
instrucţiune1;
else
instrucţiune2;
• Ramura else este opţională.
Observaţii:
Instrucţiune1 şi instrucţiune2 pot fi instrucţiuni compuse (blocuri),
sau chiar alte instrucţiuni if .
Deoarece instrucţiunea if testează valoarea numerică a expresiei
(condiţiei), este posibilă prescurtarea: if (expresie), în loc de if
(expresie != 0).
Deoarece ramura else a instrucţiunii if este opţională, în cazul în care
aceasta este omisă din secvenţele if-else, se produce o ambiguitate.
De obicei, ramura else se asociază ultimei instrucţiuni if.
11

 Pentru claritatea programelor


sursă se recomandă alinierea
instrucţiunilor prin utilizarea
tabulatorului orizontal. Aceeaşi construcţie poate fi scrisă
 Deseori, apare construcţia: şi astfel:
if (expresie1) if (expresie1)
instrucţiune1;
instrucţiune1;
else
if (expresie2) else if (expresie2)
instrucţiune2; instrucţiune2;
else else if (expresie3)
if (expresie3) instrucţiune3;
instrucţiune3; . . . . .. . . . . .
......... else
else

instrucţiune_n; instrucţiune_n
12

Expresiile sunt evaluate în ordine; dacă una dintre expresii are valoarea 1, se
execută instrucţiunea corespunzătoare şi se termină întreaga înlănţuire. Ultima
parte a lui else furnizează cazul când nici una dintre expresiile 1,2,. . ., n-1 nu are
valoarea 1.
Aplicatie 1.Să se citească de la tastatură un număr real. Daca acesta se află în
intervalul [-1000, 1000], să se afiseze 1, dacă nu, să se afiseze -1.
#include <iostream>
using namespace std;
int main()
{double nr;
cout<<”Astept numar:”;
cin>>nr;
int afis = (nr>= -1000 && nr <= 1000 ? 1 : -1);
cout<<afis;
if (nr >= -1000 && nr <= 10000)
afis = 1;
else afis= -1;
cout<<afis;
return 0; }
13

2. Se citeşte un caracter reprezentând un operator aritmetic binar simplu.


În funcţie de caracterul citit, se afişează numele operaţiei pe care acesta o
poate realiza.
#include <iostream>
using namespace std;
int main()
{ char oper;
cout<<”Introduceti operator aritmetic, simplu, binar:”; cin>>oper;
if (oper == ’+’)
cout<<”Operatorul de adunare!\n”;
else if (oper==’-’ )
cout<<”Operatorul de scadere!\n”;
else if (oper==’*’ )
cout<<”Operatorul de inmultire!\n”;
else if (oper==’/’ )
cout<<”Operatorul de impartire!\n”;
else if (oper==’%’ )
cout<<”Operatorul rest!\n”;
else cout<<”Operator ilegal!!!\n”; }
14

Instrucţiunea switch
15

Sintaxa switch (expresie)


{
case expresie_const_1: instructiune_1;
[break;]
case expresie_const_2: instructiune_2;
[break;]
..................................
case expresie_const_n-1: instructiune_n-1;
[break;]
[ default: instructiune_n; ]
}
Valoarea expresiei expresie_intreaga, care este de tip int, se compară cu
constantele exp_const.
În caz de egalitate se execută instrucţiunea corespunzătoare si toate cele ce
urmează. Există posibilitatea de ieşire cu instrucţiunea break.
16

Dacă valoarea determinată diferă de oricare din constantele


specificate, se execută instrucţiunea specificată la default, care
apare o singură dată, nu neaparat la sfârşit.
 Dacă default lipseşte se iese din switch.

Valorile constantelor trebuie sa fie diferite; ordinea lor nu are


importanţă.

Acoladele ce grupeaza mulţimea case-urilor sunt obligatorii. După


fiecare case pot apare mai multe instrucţiuni fără a fi grupate în
acolade.
17

Instructiunea if poate sa apara in interiorul altei instructiuni if.


In acest caz se spune ca o instructiue if este imbricata in interiorul altei instructiuni if.

3. Sa se realizeze programul care rezolva ecuatia de gradul 1 a carei schema logica o


aveti mai jos.
18

4. Sa se realizeze programul pentru ordonarea a trei numere conform schemei


logice de mai jos.
19

5. Pentru circuitul din figura sa se realizeze un program in care sa se testeze care


este starea comutatoarelor K1 si K2 si programul sa afiseze starea ledului (aprins
sau stins).
#include < iostream >
using namespace std;
int main()
{ char k1,k2;
bool c1,c2;
cout <<" Analiza stare circuit cu doua comutatoare serie K1 si K2." ;
cout <<" K1 este inchis sau deschis(I/D): ";
cin >> k1;
cout <<" K2 este inchis sau deschis(I/D): ";
cin >> k2;
if (k1==‘I')
c1=true;
else c1=false;
if (k2=='I') c2=true;
else c2=false;
if (c1 && c2)
cout <<" Circuitul este inchis si ledul e aprins: ";
else cout <<" Circuitul este deschis si ledul e stins: ";
return 0; }
20

T1. Pentru circuitul din figura sa se realizeze un program in care sa se testeze care
este starea comutatoarelor K1 si K2 si programul sa afiseze starea ledului (aprins
sau stins).

T2. Sa se realizeze algoritmul si programul corespunzator in Cpp pentru testarea


unui patrat perfect.

T3. Sa se scrie un program c++ care sa afiseze cate numere pare se afla in
intervalul [a, b]. a si b sunt 2 numere intregi care se citesc de la tastatura. (se va
folosi if si se va face discutie dupa paritatea lui a si b).

T4. Se citesc 3 variabile reale a, b si c. Sa se calculeze valoare expresiei:

Se poate folosi functia sqrt(x) , care are prototipul


in headerul math.h.

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