Sunteți pe pagina 1din 4

Instructiuni de ramificare

Instructiunea de ramificare contine mai multe alternative si in dependenta de valoarea unei


expresii alege si executa una din alternative. (adica sunt posibile mai multe cazuri din care alege
si executa doar unul). Sunt 2 instructiuni de ramificare:
1. Instructiunea if (in Pascal If) - contine doar 2 alternative: then / else
2. instructiunea switch (in Pascal e inst case) – poate contine mai multe alternative

Notiune de operatori
Operatorii sunt de mai multe tipuri:
1. Operatori aritmetici, care efectuiaza operatii cu numere intregi, sau reale
+ - * div (/ 5/2=2) mod(%) / (e impartirea reala, in c++ trebuie 1.0*5/2=2.5)
2. Operatori logici, cu ajutorul carora vom alcatui expresii boolean compuse din mai multi
operanzi (sunt expresii, care au valoarea true(1), sau false(0) ). Acesti operatori logici
sunt:
not and or xor implicatia (→) echivalenta (↔)

in C++ and - &&; or - ||; x xor y = not(x ↔ y )= x^^y


3. Operatori la nivel de bit pentru numere intregi:
not(!) and(&) or(|) xor(^) shl(<<) shr(>>)
4. Operatori pentru multimi – care efectuiaza operatii cu multimi (set):
- Reuniunea +
- Intersectia *
- Scaderea -
5. Operatori relationali - cu care vom alcatui expresii de tip boolean cu valoare:
true sau false: =, <>, <=, >=, in ( ∈¿
=(= =) <>(!=)
Operatori logici:
Definitia1. Se numeste conjunctia propozitiilor p si q, asa o propozitie, care se notea
p and q (p&&q), care este adevarata (true), cand si p si q ii adevarata si falsa in celelalte
cazuri

Definitia2. Se numeste disjunctia propozitiilor p si q, asa o propozitie, care se noteaza p


or q (p || q), care este adevarata (true), cand cel putin una din propozitiile p si q este
adevarata si falsa cand si p si q este falsa

Definitie3. Se numeste propozitia p implica q, asa o propozitie, care se notea p →q, care
este are valoare false, daca p este true, iar q false, in celelalte cazuri este true

Definitie4. Se numeste echivalenta propozitiilor p si q, asa o propozitie, care se notea


p ↔q, care este are valoare true , daca p si q au aceeasi valoare si false cand au valori
diferite
p ↔q = (p →q) and (q →p)
Definitia 5 p xor q = not (p ↔q)
Definitia6. Se numeste negatia propozitiei p, asa o propozitie, care se noteaza not p, sau
p, care este true cand p- false si false, cand p este true

Tabelul de adevar:

p q not p = p not q =q p and q p or q p→ q q→ p p ↔q p xor q


=!p =!q
0 0 1 1 0 0 1 1 1 0
0 1 1 0 0 1 1 0 0 1
1 0 0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1 1 0
Ex (2<8) and (4=6) = 1 and 0 =0 (2<8) ↔ (4=6) = 1 ↔0 =0
(2<8) or (4=6) = 1 or 0 =1 (2<8) xor (4=6) = 1 xor 0 =1

Instructiunea If
Semantica: Instructiunea IF evaluiaza mai intai o expresie de tip bool (boolean), care are valoarea true, sau
false. Daca expresia bool(boolean) este true se executa o instructiune I1, iar daca e false se executa
instructiunea I2 (daca exista) si nu se executa instructiune I1. Sunt doua tipuri de instructiuni IF:
1. Ramificator complect: if (expresie bool) I1; else I2;
2. Ramificator incomplct: if (expresie bool) I1;
3. Schema logica a instructiunii IF

In Pascal instructiunea if se scrie in felul urmator:


if <expresie boolean> then <instructiune> else <instructiune>; -ramificator complect
if <expresie boolean> then <instructiune>; - ramificator incomplect
Ex Se da variabilele int a,b,c,d;
1. De citit var a, b,c,d
2. De aflat si de scris max(a,b,c,d) -? Vom lua var ajutatoare int maxx;
cin>>a>>b>>c>d;
if (a> b) maxx=a; else maxx=b;
if (c> maxx) maxx=c;
if (d>maxx) maxx= d;
cout<<”numarul maxim este maxx=”<<maxx<<endl;
II metoda : folosim functia predefinita max
cin>>a>>b>>c>>d;
cout<<”numarul maxim este =”<<max(max(max(a,b),c),d);

Analog se determina nr. min(a,b,c,d)

Instructiunea switch ( in Pascal – instr. case).


Instructiunea switch este o instructiune de ramificare multipla, care poate sa cerceteze mai multe cazuri,
din care alege si executa doar un caz.
Semantica: Instructiunea switch evaluaiaza o expresie de tip ordinal (intreg (8tipuri), char, bool,
enumerare) si in dependenta de valoarea obtiunuta alege si executa una din alternative.
Schema logica de executie a instructiunii case:
Instructiunea switch - de ramificare multipla se scrie in felul urmator:

switch ( expresie )
{ case v1 : I1; break;
case v2: I2; break;
case v3: I3; break;
...
case vn : In; break;
default : In+1;
}
Exemplu 1.
Se da variabila int i;
1. de citit variabila i
2. Daca i=1; 2; 3;4 – de scris ce valoare are i
3. in caz contrar – de scris ca e alta valoare
Programul C++ #include< bits/stdc++.h>
using namespace std;
int main ()
{ int i; //declarăm variabila i- local
cin>>i; // citim de la ecran variabila i
switch (i) // instrucțiunea switch
{ //begin
case 1: cout <<”Am citit 1”; break; //cazul 1
case 2: cout<<”Am citit 2”; break; // cazul 2
case 3: cout<<”Am citit 3”; break; // cazul 3
case 4: cout<<”Am citit 4”; break; // cazul 4
default: cout<<”Am citit alt nr diferit de 1, 2, 3,4”; // în caz contrar

}return 0 ; // return 0; pentru a sfârși programul cu succes


}
Exemplu 2 Se da char c; int a,b;
1. De citit c,
2. daca c- litera mare - de scris c-litera mare
Daca c- litera mica – de scris c- litera mica
Daca c- cifra - c- este cifra; de scris a+b; a-b; a*b; a div b; a mod b; a/b(b<>0) else impartirea nu are sens
3. else de scris c- orice alt caracter si de scris ord(c); pred(c); succ(c)
Programul in C++
#include< bits/stdc++.h>
using namespace std;
char c; int a,b;
int main ()
{ cout<<”c=”; cin>>c;
switch (c) // instrucțiunea switch
{ case ’A’...’Z’: cout <<c<<”- litera mare”; break;
case ’a’...’z’: cout <<c<<”- litera mica”; break;
case ’0’...’9’: {cout <<c<<”- cifra”;
cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
cout<<”a+b=”<<a+b<<endl;
cout<<”a-b=”<<a-b<<endl;
cout<<”a*b=”<<a*b<<endl;
if (b) { cout<<”a div b=”<<a/b<<endl;
cout<<”a mod b=”<<a%b<<endl;
cout<<”a /b=”<<1.0*a/b<<endl;
} else cout<<”impartirea la 0 nu are sens”<<endl;
break;

}
default : { cout <<c<<”- orice alt caracter”<<endl;
cout<<”ord(c)=”<<int(c)<<endl;
cout<<”pred(c)=”<<char(c-1)<<endl;
cout<<”succ(c)=”<<char(c+1)<<endl;
break;
}
} return 0;
}

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