En aquest tema, aprendrem com gestionar l'entrada i la sortida de dades en C++. La capacitat de llegir dades de l'usuari i mostrar resultats és fonamental per a qualsevol programa. Utilitzarem les biblioteques estàndard de C++ per aconseguir-ho.
Conceptes Clau
- Fluxos d'Entrada i Sortida (I/O Streams)
cin
per a l'entrada de dadescout
per a la sortida de dades- Manipuladors de fluxos
Fluxos d'Entrada i Sortida (I/O Streams)
En C++, els fluxos d'entrada i sortida es gestionen mitjançant la biblioteca <iostream>
. Aquesta biblioteca proporciona els objectes cin
, cout
, cerr
i clog
per gestionar l'entrada i la sortida de dades.
cin
: Utilitzat per a l'entrada de dades des del teclat.cout
: Utilitzat per a la sortida de dades a la consola.cerr
: Utilitzat per a la sortida d'errors a la consola.clog
: Utilitzat per a la sortida de missatges de registre a la consola.
cin
per a l'Entrada de Dades
L'objecte cin
s'utilitza per llegir dades de l'usuari. Aquí teniu un exemple bàsic:
#include <iostream> using namespace std; int main() { int edat; cout << "Introdueix la teva edat: "; cin >> edat; cout << "Tens " << edat << " anys." << endl; return 0; }
Explicació del Codi
- Incloure la Biblioteca:
#include <iostream>
inclou la biblioteca necessària per a l'entrada i sortida. - Espai de Noms:
using namespace std;
permet utilitzar els objectes de la biblioteca estàndard sense prefixar-los ambstd::
. - Declaració de la Variable:
int edat;
declara una variable per emmagatzemar l'edat. - Sortida de Dades:
cout << "Introdueix la teva edat: ";
mostra un missatge a la consola. - Entrada de Dades:
cin >> edat;
llegeix un valor des del teclat i l'emmagatzema a la variableedat
. - Mostrar Resultat:
cout << "Tens " << edat << " anys." << endl;
mostra el valor introduït.
cout
per a la Sortida de Dades
L'objecte cout
s'utilitza per mostrar dades a la consola. Aquí teniu un exemple bàsic:
Explicació del Codi
- Incloure la Biblioteca:
#include <iostream>
inclou la biblioteca necessària per a l'entrada i sortida. - Espai de Noms:
using namespace std;
permet utilitzar els objectes de la biblioteca estàndard sense prefixar-los ambstd::
. - Sortida de Dades:
cout << "Hola, món!" << endl;
mostra el missatge "Hola, món!" a la consola.
Manipuladors de Fluxos
Els manipuladors de fluxos permeten formatar la sortida de dades. Alguns dels manipuladors més comuns són:
endl
: Insereix un caràcter de nova línia i buida el buffer de sortida.setw
: Estableix l'amplada del camp per a la sortida.setprecision
: Estableix el nombre de dígits després del punt decimal.
Exemple amb Manipuladors
#include <iostream> #include <iomanip> using namespace std; int main() { double pi = 3.14159; cout << "Valor de pi: " << setprecision(2) << pi << endl; cout << "Valor de pi: " << setprecision(5) << pi << endl; return 0; }
Explicació del Codi
- Incloure les Biblioteques:
#include <iostream>
i#include <iomanip>
inclouen les biblioteques necessàries per a l'entrada, sortida i manipulació de fluxos. - Espai de Noms:
using namespace std;
permet utilitzar els objectes de la biblioteca estàndard sense prefixar-los ambstd::
. - Declaració de la Variable:
double pi = 3.14159;
declara una variable per emmagatzemar el valor de pi. - Sortida de Dades amb Manipuladors:
cout << "Valor de pi: " << setprecision(2) << pi << endl;
mostra el valor de pi amb 2 dígits de precisió.cout << "Valor de pi: " << setprecision(5) << pi << endl;
mostra el valor de pi amb 5 dígits de precisió.
Exercicis Pràctics
Exercici 1: Entrada i Sortida Bàsica
Escriu un programa que demani a l'usuari el seu nom i la seva edat, i després mostri un missatge de benvinguda.
Solució
#include <iostream> using namespace std; int main() { string nom; int edat; cout << "Introdueix el teu nom: "; cin >> nom; cout << "Introdueix la teva edat: "; cin >> edat; cout << "Hola, " << nom << "! Tens " << edat << " anys." << endl; return 0; }
Exercici 2: Formatació de Sortida
Escriu un programa que mostri el valor de diverses constants matemàtiques amb diferents precisions.
Solució
#include <iostream> #include <iomanip> using namespace std; int main() { double pi = 3.141592653589793; double e = 2.718281828459045; cout << "Valor de pi amb 3 dígits de precisió: " << setprecision(3) << pi << endl; cout << "Valor de pi amb 7 dígits de precisió: " << setprecision(7) << pi << endl; cout << "Valor de e amb 3 dígits de precisió: " << setprecision(3) << e << endl; cout << "Valor de e amb 7 dígits de precisió: " << setprecision(7) << e << endl; return 0; }
Errors Comuns i Consells
- Oblidar el
using namespace std;
: Això pot causar errors de compilació si no prefixeu els objectes de la biblioteca estàndard ambstd::
. - No buidar el buffer d'entrada: Després de llegir una línia amb
cin
, el buffer pot contenir caràcters no desitjats. Utilitzeucin.ignore()
per evitar problemes. - Utilitzar
endl
en excés:endl
buida el buffer de sortida, cosa que pot afectar el rendiment. Utilitzeu\n
si no necessiteu buidar el buffer.
Resum
En aquesta secció, hem après com utilitzar els fluxos d'entrada i sortida en C++ per llegir dades de l'usuari i mostrar resultats. Hem vist com utilitzar cin
per a l'entrada de dades i cout
per a la sortida de dades, així com alguns manipuladors de fluxos per formatar la sortida. També hem practicat amb alguns exercicis per reforçar els conceptes apresos. En el proper mòdul, explorarem les estructures de control en C++.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil