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 projecte anomenat m1p04, i un arxiu de font C++ anomenat també m1p04 (recordeu que Visual C++ li col·loca automàticament l'extensió .cpp)

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

//m1p04.cpp: Una conversa en C++

#include <iostream.h>

void 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\x082 " << nom <<" vost\x08a t\x082 "  
         << edat << " anys" <<endl;

}

Podeu crear l'arxiu m1p04.exe per tal de comprovar que funciona exactament igual que el programa de la pràctica 2 amb el problema dels accents solucionat.

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.

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\x082 "<<nom<<" vost\x08a t\x082 "<< 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.