Enrere Mòdul 1
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis

 
Una conversa en C++

A la pràctica 2 hem fet servir dues de les funcions d'entrada i sortida més importants de C: printf() i scanf(). C++, com superconjunt de C, inclou també aquestes funcions, però incorpora altres elements que poden ser més còmodes en molts casos, es tracta dels objectes cout i cin. Les declaracions d'aquests objectes es troben a l'arxiu de capçalera: iostream.h:

  • cout posa dades a la sortida estàndard (pantalla)
  • cin pren dades de l'entrada estàndard (teclat)

 

Desenvolupament de la pràctica

Feu el mateix que heu fet a les pràctiques anteriors per tal d'obrir un nou arxiu però en aquest cas seleccionarem com a tipus de fitxer C++ Source file. Poseu com a nom  m1p04, i comprovareu com Anjuta  col·loca automàticament l'extensió .cc .

Escriviu a la finestra de text el següent codi:

//m1p04.cc - Una conversa en C++ -

#include <iostream>

using namespace std;


int main(){

char nom[30];
int edat;

cout <<"Si us plau, escriviu el vostre nom\n";
cin >> nom;
cout <<"Ara podeu escriure la vostra edat\n";
cin >> edat;
cout <<"Molt bé " << nom <<" vosté té "
<< edat << " anys" <<endl;
return 0;
}

Captura de l'execució del programa.

 

Premeu la tecla F11 ( munta ) i F3 per executar. Veiem com ara la és compila amb g++.

            g++ "m1p04.cc" -o "m1p04

Explicació del programa

Per imprimir en pantalla s'ha fer servir l'objecte cout. Aquest objecte ja no és exactament una funció, però encara que no es pot explicar amb detall què és,  és fàcil explicar com funciona.

Les instruccions "#include <iostream>" y "using namespace std;" son necessàries perquè les declaracions que permeten l’accés a "cout" y "cin" estan en una llibreria externa.

Es pot imaginar que cout és la pantalla i que l'operador <<, anomenat operador d'inserció, envia informació a l'objecte cout (pantalla). La potència d'aquesta forma d'enviar dades per pantalla és que no fa falta indicar quin tipus de dades enviem. Per enviar una cadena s'escriu:

cout <<"Ara podeu escriure la vostra edat\n";

i per enviar una variable numèrica s'escriu:

cout << edat

Per tant,  no es fan servir codis de tipus com fèiem a les funcions de C printf() i scanf().

Per imprimir diferents tipus de dades només fa falta fer servir l'operador << més d'una vegada:

cout <<"Molt bé "<<nom<<" vosté té "<< edat << " anys" <<endl;

El manipulador endl inserta un caràcter de nova línia, tal com feia "\n", i a més buida el buffer. 

El mateix passa amb l'objecte cin. Aquest representa l'entrada estàndard (el teclat) i va associat amb l'operador d'extracció: >>. La sentència:

cin >> nom;

llegeix del teclat una cadena de caràcters (sense espais) i l'emmagatzema a la variable nom. I la sentència:

cin >> edat;

llegeix un número enter i l'emmagatzema a la variable edat.

Per tal de poder llegir cadenes de caràcters amb espais (per exemple Josep Anton) s'ha de fer servir la següent funció associada a l'objecte cin:

cin.getline(nom,30,'\n');

Aquesta sentència fa que es llegeixin fins a 30 caràcters o fins que premem INTRO.

Entendre el funcionament d'aquests objectes no és necessari per tal d'usar-los. No és l'objectiu d'aquest curs entrar en la programació orientada a objectes i, per aquest motiu, no entrarem en més detalls.