Documente Academic
Documente Profesional
Documente Cultură
CURS 4
OPERATII DE INTRARE/IESIRE
OPERTORI MATEMATICI, LOGICI
2
Operaţii de intrare/ieşire
• Limbajele C/C++ nu posedă instrucţiuni de intrare/ieşire, deci de
citire/scriere (ca limbajul PASCAL, de exemplu). În limbajul C aceste
operaţii se realizează cu ajutorul unor funcţii (de exemplu, printf şi
scanf), iar în limbajul C++ prin supraîncărcarea operatorilor (definirea
unor noi proprietăţi ale unor operatori existenţi, fără ca proprietăţile
anterioare să dispară), mai precis a operatorilor >> şi << .
• În limbajul C++ sunt predefinite următoarele dispozitive logice de
intrare/ieşire:
• cin - console input - dispozitivul de intrare (tastatura);
• cout - console output - dispozitivul de ieşire (monitorul).
• Transferul informaţiei se realizează cu operatorul >> pentru intrare şi
operatorul << pentru ieşire.
• Utilizarea dispozitivelor de intrare/ieşire cu operatorii corespunzători
determină deschiderea unui canal de comunicaţie a datelor către
dispozitivul respectiv. După operator se specifică informaţiile care vor
fi citite sau afişate.
3
• Operatorul >> se numeşte operator extractor (extrage valori din fluxul datelor de
intrare, conform tipului acestora), iar operatorul << se numeşte operator insertor
(inserează valori în fluxul datelor de ieşire, conform tipului acestora).
• Tipurile de date citite de la tastatură pot fi toate tipurile numerice, caracter sau şir de
caractere. Tipurile de date transferate către ieşire pot fi: toate tipurile numerice,
caracter sau şir de caractere. Operanzii operatorului extractor (>>) pot fi doar nume
de variabile. Operanzii operatorului insertor (<<) pot fi nume de variabile (caz în care
se afişează valoarea variabilei), constante sau expresii. Utilizarea dispozitivelor şi
operatorilor de intrare/ieşire în C++ impune includerea fişierului iostream.h.
Exemple:
char c;
cout<<"Astept un caracter:"; //afişarea constantei şir de caractere, deci a
mesajului
cin>>c; //citirea valorii variabilei c, de tip caracter
int a, b, e; double d;
cin>>a>>b>>e>>d; //citirea valorilor variabilelor a, b, e, d de tip
int, int, int, double
cout<<"a="<<a<<"Valoarea expresiei a+b este:"<<a+b<<'\n';
4
Componentele
unui program
C/C++
5
Operatorii matematici
• Operatorii matematici sunt:
+ Plus unar
- Minus unar
+ Adunare
- Scădere
* Multiplicare
/ Împărţire reală (rezultat real) sau Împărţire întreagă (rezultat
întreg)
% Modulo (restul împărţirii)
• Exemple
-54 +259.65 -rate
În instrucţiunea
num = num + alpha;
valorile lui num şi alpha sunt adunate, iar rezultatul este păstrat
în num, înlocuind vechea valoare păstrată aici.
Incrementarea şi decrementarea
+= a=a+b a+=b
-= a=a-b a-=b
*= a=a*b a*=b
/= a=a/b a/=b
%= a=a%b a%=b
#include <iostream.h>
void main()
{
int a,b; float c=9.3; a=3; b=8;
cout<<”a=”<<a<<’\n’;
a+=b; cout<<”a=”<<a<<’\n’;
a-=b; cout<<”a=”<<a<<’\n’;
a*=b; cout<<”a=”<<a<<’\n’;
a/=b; cout<<”a=”<<a<<’\n’;
a%=b; cout<<”a=”<<a<<’\n’;
13
O declaraţie posibilă:
typedef enum {false = 0, true = 1} bool;
bool x, y;
17
Expresii logice
expresie_relationala ::=
expr < expr | expr > expr
| expr <= expr | expr >= expr
| expr == expr | expr != expr
expresie_logica ::= ! expr
| expr || expr
| expr && expr
18
pozitiv 0 1 0 1 0 1
zero 0 0 1 1 1 0
negativ 1 0 1 0 0 1
19
Nu se
0 1
evaluează
1 dacă exp2 0
=0 Se evaluează
0 dacă exp2 = 0
20
Nu se
=0 0
evaluează
1 dacă exp2 0
0 Se evaluează
0 dacă exp2 = 0
21
Exemple
O condiţie de forma a x b se scrie în limbajul C++:
(x >= a) && (x <= b) sau a <= x && x <= b
O condiţie de forma a > x sau x > b se scrie în limbajul C++:
x < a || x > b sau !(x >= a && x <= b)
Exerciţiu: Să se scrie un program care citeşte un număr real şi afişează 1
dacă numărul citit aparţine unui interval ale cărui limite sunt introduse tot de
la tastatură, sau 0 în caz contrar.
#include <iostream.h>
void main()
{
double lmin, lmax, nr;cout<<"Numar=";cin>>nr;
cout<<”Limita inferioară a intervalului:”; cin>>lmin;
cout<<”Limita superioară a intervalului:”; cin>>lmax;
cout<<(nr>=lmin && nr<=lmax); }
22
Operatorul condiţional ?:
exp1 ? exp2 : exp3
Se evaluează exp1
Dacă exp1 are valoare nenulă (true) atunci valoarea
expresiei este valoarea lui exp2; exp3 nu se evaluează
Dacă exp1 are valoare nulă (false) atunci valoarea expresiei
este valoarea lui exp3; exp2 nu se evaluează
Operatorul ?: este drept asociativ
23
x >= 0 ? x : y
x>y?x:y
x>y ? x>z ? x :z : y>z ? y : z
Nu confundaţi e1 = e2 cu e1 == e2
26
Operatorul virgulă ,
expresia_virgula ::= expresie, expresie
Operatorul sizeof()
• Operator unar ce permite găsirea numărului de octeţi pe care se
reprezintă un obiect (tip, expresie):
sizeof(int), sizeof(double)
sizeof(b*b-4*a*c), sizeof(i)
sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)
sizeof(signed)=sizeof(unsigned) = sizeof(int)
sizeof(float)<=sizeof(double)<=sizeof(long double)
29
Operatorul sizeof()
#include<iostream>
int main(void)
{
int x=1; double y=9; long z=0;
cout<<sizeof(int); // afişează numărul de octeţi pe care
este memorat un întreg (2)
cout<<sizeof(”ab6*”); // afişează 5, nr. de octeţi pe care este
memorată constanta şir ”ab6*”
}
30
Precedenţa operatorilor
OPERATORI ASOCIERE
() ++ -- (postfix) stânga
++ -- (prefix) ! & (adresa) dreapta
* (deref ) + - (unari) sizeof()
* / % stânga
+ - stânga
< <= > >= stânga
== != stânga
&& stânga
|| stânga
?: dreapta
= += -= *= /= %= dreapta
, (operatorul virgulă) stânga