Sunteți pe pagina 1din 25

Operații de intrare/ieșire

în limbajul C++
Programarea Structurată

Grupele: INF1412G, INF1413G

Profesor: Silviu GÎNCU


Sumar

1. Introducere
2. Operații de ieșire
3. Operații de intrare
4. Manipulatori
5. Utilizarea operațiilor de intrare/ieșire în
procesul de elaborare a programelor

2
Introducere
o Prin operație de ieșire, se are în vedere,
scrierea de instrucțiuni prin intermediul cărora
la consolă sînt afișate mesaje/informații
exacte, în cadrul unui program.

o Prin operație de ieșire, se are în vedere,


scrierea de instrucțiuni prin intermediul cărora
de la consolă sînt introduse/citite date
(informații) de către utilizator și transmise prin
intermediul programului calculatorului.

3
Programul 1

Exemplu
#include <iostream>
using namespace std;
int a, b, suma;
main(){
cout <<"Introduceti doua numere intregi"<<endl;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
suma=a+b;
cout<<"Suma numerelor este "<<suma;
}
Albastru – date de ieșire
Verde – date de intrare
4
Procesul de execuție a programului

1 - ieșire
2 - intrare
3 - ieșire
4 - intrare
5 - ieșire
Rezultat

5
Generalități (1)

În C++, pentru realizarea operațiilor de intrare/ieşire


se folosesc cîteva clase predefinite pentru "fluxuri de
intrare/ieşire " (declarate în fişierele antet iostream şi
fstream).
Un flux de date ("stream") este un obiect care
conţine datele şi metodele necesare operaţiilor cu acel flux.
Pentru operații de intrare/ieşire la consola sunt definite trei
variabile de tip flux, numite:
÷ cin (console input) pentru citirea fluxului de date;
÷ cout (console output) pentru afişarea fluxului de date;
÷ cerr (console errors) pentru indicarea erorilor.
6
Generalități (2)

Operaţiile de citire sau scriere cu un flux pot fi


exprimate prin metode ale claselor flux, sau prin doi
operatori cu rol de extractor din flux (>>) sau insertor în
flux (<<).
Operatorii << şi >> implică o conversie automată a
valorilor. Conversia automată la citire şi afişare este un
plus, deoarece nu este necesar de a specifica tipul datelor,
totodată dezavantajul este timpul de execuţie. Prin
utilizarea acestor operatori se pierde din timpul de
execuţiei a-l programului, totuşi acesta este nesemnificativ.

7
Sintaxa

Pentru afişarea datelor la consolă vom scrie :


cout<<flux1<<flux2<<…<<fluxn;
unde în calitate de flux pot fi variabile şi constante.

Pentru citirea datelor de la consolă vom scrie :


cin>>var1>>var2>>…>>varn;
unde var1, var2, …, varn sunt variabile.

Atenţie !!! în cazul citirii şirurilor operatorul >>


ignoră spaţiu, adică caracterul spaţiu nu este citit, acesta
este privit ca delimitator de şir, ca şi tasta Enter.
8
Programul 2
Exemple – ieșiri
Rezultat
#include <iostream>
using namespace std;
int a=2,b=3;
main(){
cout <<"Valori"<<a<<b<<endl;
cout <<"Valori"<<endl<<a<<b<<endl;
cout <<"Valori"<<endl<<a;
cout<<endl<<‘ ‘<<b<<“ “<<a+b<<endl;
}

9
Programul 3
Exemple – intrări

#include <iostream>
#include <conio.h>
using namespace std;
int a;
float p;
char r,q;
main(){
cout<<"Dati un numar intreg"<<endl; cin>>a;
cout<<"Dati un numar real"<<endl; cin>>p;
cout<<"Scrieti doua caractere"<<endl; cin>>r;
q=getche();
cout<<"Datele introduse"<<endl;
cout<<a<<p<<r<<q;
}

10
Exerciții (1)

În baza programului 1:
1. Specificați care vor fi datele de ieșire, dacă în calitate de date
de intrare se vor introduce numerele:
a) 10 și 200
b) -20000 și -20000
c) 15000 și 190000
d) -7 și 14
e) 9999999999 și 1111111111
f) 3.2 și 4
g) A și B
2. Modificați programul astfel încît să se determine diferența și
produsul a două numere;
3. Precizați care vor fi datele de ieșire pentru p.2 dacă în caitate
11
de date de intrare se introduc valorile de la p.1.
Exerciții (2)

În baza programului 2:
1. Precizați ce modificări sînt necesare a fi realizate în program
pentru a afișa rezultatele :

2. Modificați programul astfel încît fiecare flux de date să fie afișat


din rînd nou;
3. Modificați programul astfel încît textul extras la consolă să fie
afișat într-o singură linie. Fiecare flux de date va fi separat prin:
a) Spațiu
b) Cifra 3
c) Caracterul +. 12
Exerciții (3)

În baza programului 3:
Specificați care vor fi datele de ieșire, dacă în calitate de date de
intrare se va introduce :
a) 1 1 1 1 1
b) 3.2 4.5 6.4 8.4
c) a b c d e f
d) -3 -4 -5 -6 -9
e) 33333 23.123456789 p q
f) 9999999999 0.000000123456789 4 y

13
Problema 1 De la tastatură se citeşte lungimea laturii unu
pătrat. Să se elaboreze un program prin intermediul căruia se va
afişa la ecran suprafaţa şi perimetrul figurii.
Implementare C++

#include<iostream>
using namespace std;
float lat, aria, per;
main(){
cout<<"Dati lungimea laturii patratului lat=";cin>>lat;
aria=lat*lat;
per=lat*4;
cout<<"Aria patratului="<<aria<<endl;
cout<<"Perimetrul patratului="<<per;
}

rezultat

14
Problema 2 De la tastatură se citesc două numere
întregi. Să se elaboreze un program prin intermediul căruia se
va afişa la ecran suma, diferenţa, produsul câtul şi restul dintre
cele două numere. Implementare C++

#include<iostream>
using namespace std;
int a,b,sum,dif,prod,cit,rest;
main(){
cout<<"Dati doua numere intregi"<<endl;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
sum=a+b; dif=a-b; prod=a*b; cit=a/b; rest=a%b;
cout<<a<<"+"<<b<<"="<<sum<<endl;
cout<<a<<"-"<<b<<"="<<dif<<endl;
cout<<a<<"*"<<b<<"="<<prod<<endl;
cout<<a<<"/"<<b<<"="<<cit<<endl;
cout<<a<<"%"<<b<<"="<<rest<<endl;
}

15
Problema 3. Să se elaboreze un program prin intermediul căruia
se va oferi posibilitatea utilizatorului de a afișa codul din tabelul
ASCII al unui caracter citit de la tastatură și de a afișa caracterul
care corespunde poziției din tabelul ASCII, dacă numărul poziției se
citește de la tastatură. Implementare C++

#include<iostream>
using namespace std;
int a,b;
char c,d;
main(){
cout<<"Scrieti un caracter ";
cin>>c; // se poate si c=getche();
cout<<"Indicati pozitia din tabelul ASCII"; cin>>a;
b=c;
d=a;
cout<<"Caracterului "<<c;
cout<<" ii corespunde codul "<<b<<endl;
cout<<"Pe pozitia "<<a;
cout<<" se afla caracterul "<<d<<endl;
}
16
FORMATAREA PRIN MANIPULATORI

Manipulatorii sunt funcţii speciale, care pot fi folosite


împreună cu operatorii de inserţie într-un flux de ieşire sau
de extracţie dintr-un flux de intrare, în scopul modificării
caracteristicilor formatului informaţiilor de intrare/ieşire.
Manipulatorii furnizează, ca rezultat, fluxul obţinut în urma
acţiunii manipulatorilor. Pentru a avea acces la manipulatori
se va include biblioteca iomanip.
Manipulatorii fără parametri (Tabelul 1) se folosesc astfel:
cout<<manipulator;
cin>>manipulator;

17
Tabelul 1 Manipulatori C++fără parametri
Manipulator Intrare/Ieşire Acţiune
Formatează datele numerice în zecimal
dec I/O
(activează bitul de conversie zecimală)
Formatează datele numerice în hexa
hex I/O (activează bitul de conversie
hexazecimală)
Formatează datele numerice în octal
oct I/O
(activează bitul de conversie octală)
Afişează (inserează) un caracter '\n' şi
endl O
eliberează fluxul

Prototipul manipulatorilor cu parametri (Tabelul 2) este:

cout<<manipulator (argument)<<afisare_date;
cin>>manipulator (argument)>>citire_date;
18
Tabelul 2 Manipulatori C++ cu parametrii

Manipulator Intrare/
Acţiune
Ieşire
Stabileşte baza de conversie 8 10 sau
setbase(int baza) I/O
16.
Defineşte caracterul de umplere (cel
setfill(char c) I/O
implicit este spaţiul liber, blank-ul)
Defineşte precizia pentru numerele
setprecision (int p) I/O
reale
Defineşte lăţimea câmpului (numărul
setw(int w) I/O
de octeţi care vor fi citiţi sau afisaţi)
Exemple
Fie date declaraţiile:
int a=24;
double c=123.1234567;
cout<<a<<endl<<”a=”<<setw(5)<<a<<endl;
cout<<”c=”<<setw(7)<<setprecision(2)<<c;
cout << setfill ('x') << setw (10);
cout << 77 << endl;
va afişa :
24
a=VVV24
numărul a este afișat pe 5 poziţii
c=123.12
numărul c este afișat pe 7 poziţii cu 2 cifre după virgulă
xxxxxxxx77 20
Program-exemplu Acest program va
demonstra modalitatea de utilizare a
manipulatorilor de conversie.

#include<iostream.h>
using namespace std;
int a;
main(){
cout<<"Introdu un numar in baza 16"<<endl;
cin>>setbase(16)>>a;
cout<<"Hexazecimal "<<hex<<a<<endl;
cout<<"Zecimal "<<dec<<a<<endl;
cout<<"Octal "<<oct<<a<<endl;
}
21
Problema 4. De la tastatură se citește un caracter.
Să se elaboreze un program prin intermediul căruia la ecran
se va afișa un pătrat interiorul căruia să fie completat cu
caracterul citit.
#include<iostream>
#include<iomanip>
#include<conio.h>
using namespace std;
char a;
main(){
cout<<"Scrieti un caracter ";
a=getche(); cout<<endl;
cout<<setw(4)<<setfill(a)<<a<<endl;
cout<<setw(4)<<setfill(a)<<a<<endl;
cout<<setw(4)<<setfill(a)<<a<<endl;
cout<<setw(4)<<setfill(a)<<a<<endl;
}
22
Problema 5 Factura.
Lunar Ionel primește de la părinți A lei pentru
a achita factura pentru consumul de gaz şi apă. În
luna curentă consumul de gaze a fost de 43.23 m3,
iar de apă de 67.78 m3. De la tastatură se citește
suma de bani primită de Ionel, costul unui m3 de
gaz și costul unui m3 de apă. Să se elaboreze un
program prin intermediul căruia se va afișa la ecran
suma ce necesită a fi achitată de către Ionel, cât și
suma de bani rămasă.

23
Implementare în C++
#include<iostream>
#include<iomanip>
using namespace std;
float A,apa,gaz,rest,f;
const float g=43.23;
const float a=67.78;
main(){
cout<<"Indicati suma initiala ";cin>>A;
cout<<"Dati costul pentru un metru cub de gaz";
cin>>gaz;
cout<<"Dati costul pentru un metru cub de apa";
cin>>apa;
f=gaz*g+apa*a;
rest=A-f;
cout<<"Suma pentru achitarea facturii=";
cout<<setprecision(2)<<f<<endl;
cout<<"Lui Ionel iau ramas";
cout<<setprecision(2)<<rest<<" lei"; 24
}
Pentru acasa

Probleme din fișierul Laborator.pdf

Mult succes

Întrebările le adresați în scris la adresa


de email sgincu@gmail.com
25

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