You are on page 1of 4

Apostila de C++ - Faculdade de Engenharia de Ilha Solteira - UNESP

http://apostilacpp.awardspace.com/index.php?pagina=modulo05

Mdulo 5 Estudo dos comandos cout e cin


Home ndice Mdulo 01 Mdulo 02 Mdulo 03 Mdulo 04 Mdulo 05 Mdulo 06 Mdulo 07 Mdulo 08 Mdulo 09 Mdulo 10 Mdulo 11 Bibliografia Downloads
A linguagem C++ possui uma tima biblioteca de classes relacionadas ao controle de entrada e sadas de dados. Desde o incio da apostila temos feito uso de algumas facilidades fornecidas por esta biblioteca, especificamente, os comandos cout e cin. Como voc deve ter percebido, a classe cout serve para exibir valores - seja o valor de uma varivel ou uma frase enquanto que cin serve para armazenar valores recebidos atravs do teclado em variveis. Tnhamos na linguagem C as funes printf e scanf para executar estas mesmas funes. Na verdade, printf e scanf tambm esto presentes em C++ (assim como todas as funes padres de C), e podemos utiliz-las caso desejemos. Porm, os comandos ou, utilizando um termo mais tecnicamente apropriado, classes cin e cout facilitam muito a vida do programador, por serem mais inteligentes que printf e scanf.

5.1 Utilizao de cout


Como j dissemos, cout exibe valores na tela. A sintaxe utilizada : cout << <valor, string, varivel, ponteiro, etc>; Utilizamos cout em conjunto com o operador de insero <<. Note que smbolo << tambm utilizado pelo operador de bitwise shift para a esquerda (move bits de uma varivel para a direo esquerda), entretanto no precisamos nos preocupar com isto: C++ sabe diferenciar quando estamos utilizando um operador ou o outro, atravs do contexto. O operador << indica ao comando cout que um dado deve ser exibido na tela, alm de identificar automaticamente qual o tipo deste dado e como ele deve ser formatado para exibio na tela. Assim, no precisamos informar cout que estamos enviando um inteiro, um real ou uma string, como fazamos em C: o operador << se encarrega desta identificao, bastando para o operador indicar o nome da varivel. Abaixo temos a lista de todos os tipos bsicos de C++ reconhecidos pelo operador de insero: unsigned char signed char char short unsigned short int unsigned int long unsigned long float double long double O operador de insero tambm fornece facilidades para a exibio de strings. Alm dos tipos bsicos mostrados acima, o operador de insero tambm reconhece os seguintes tipos de ponteiros: const signed char * const unsigned char * const char * void * Ponteiros sero explicados com maior propriedade no mdulo 8, mas precisamos saber que C e C++ representam strings utilizando ponteiros para o endereo de memria da string. Este ponteiro pode ser o nome de uma varivel matriz de tipo char, um ponteiro de tipo char ou ento uma frase entre aspas. O operador de insero reconhece cada um destes casos e exibe na tela a string de texto. Por exemplo: char nome[20] = Jose das Couves; char * nome2 = Jose das Galinhas; cout << Jose das Dores; cout << nome;

1 de 4

17/6/2013 16:58

Apostila de C++ - Faculdade de Engenharia de Ilha Solteira - UNESP

http://apostilacpp.awardspace.com/index.php?pagina=modulo05

cout << nome2; Estas 3 utilizaes de cout exibem as strings de texto na tela. Veremos mais adiante que toda string possui um caractere de trmino, \0, que indica para o compilador que a string terminou. Nestes trs casos, o operador de insero orienta-se por este \0 para terminar a exibio das strings. importante ressaltar que o operador de insero no reconhece automaticamente matrizes numricas e no as exibe automaticamente na tela. Para fazer isso, precisaremos utilizar os mtodos tradicionais envolvendo loops para mostrar cada membro da matriz de uma vez. Este assunto ser discutido no mdulo 7, dedicado para matrizes.

5.2 Overload do operador de insero


Overload do operador de insero nada mais do que utilizar o operador de insero vrias vezes na mesma chamada de cout. Por exemplo: cout << O valor da varivel X : << X; A linha de comando acima exibe dois valores: a string O valor da varivel X : e a varivel X. Note que utilizamos duas vezes o operador de insero, sempre antes do valor a ser exibido. Podemos repetir o operador de insero quantas vezes precisarmos na mesma linha de cout.

5.3 Formatao de exibio com cout


A funo printf fornecia aos usurios de C mltiplas maneiras de formatar a exibio dos dados na tela do computador. A classe cout tambm fornece as mesmas facilidades para os usurios de C++. Nas subsees abaixo descreveremos como fazer vrios tipos de formatao de dados utilizando cout e o operador de insero.

5.3.1 Escolhendo a Base Numrica


Podemos escolher a base numrica que utilizaremos para representar nmeros inteiros. Para isto, devemos utilizar os comandos: cout << hex; cout<< oct; cout<< dec; Aps utilizar qualquer um destes comandos, sempre que pedirmos para cout exibir um nmero inteiro na tela, o comando automaticamente converter o nmero para a base definida previamente. Por exemplo: int numero = 10; cout << hex; cout << numero; Dessa forma, cout exibir na tela no o nmero 10 como estamos acostumados, mas a letra a, que representa 10 na base hexadecimal. Note que podemos utilizar o operador de insero duas vezes para deixar o cdigo mais compacto e obter o mesmo resultado: int numero = 10; cout << hex << numero; No se esquea de retornar para a base decimal com cout << dec; aps exibir valores na base hexadecimal ou octal!

5.3.2 Formatao de nmeros reais


Podemos escolher tambm a notao utilizada para exibio de nmeros reais. Com o comando: cout << fixed; Instrumos o programa a exibir valores reais usando a notao de ponto fixo ( por exemplo, 3.1214). Da mesma forma, com o comando: cout << scientific; Instrumos o programa a utilizar a notao cientfica (por exemplo, 3.21E-2).

5.3.3 Espaamento de Texto O comando cout permite tambm escolher um nmero mnimo de caracteres

2 de 4

17/6/2013 16:58

Apostila de C++ - Faculdade de Engenharia de Ilha Solteira - UNESP

http://apostilacpp.awardspace.com/index.php?pagina=modulo05

para ser exibido na tela. Isto feito utilizando o mtodo:


cout.width ( x );; Onde substitumos x pelo nmero mnino de caracteres a ser exibido na tela. Aps a utilizao deste mtodo, utilizamos o comando cout para exibir o valor desejado, como no exemplo abaixo: int variavel = 10; cout.width ( 5 ); cout << variavel; Neste exemplo, foi especificado cout.width (5); e o valor a ser exibido 10. Assim, cout predecer o valor 10 com trs espaos em branco. Observe que o valor especifica o nmero mnimo de caracteres que a sada consumir. Se o valor a ser exibido requer mais caracteres do que o especificado, ser usado o nmero de caracteres necessrios para exibir o valor corretamente. importante observar tambm que o mtodo cout.width s vlido para a prxima utilizao de cout: aps isto, o nmero mnimo de caracteres volta a ser zero. Podemos tambm determinar o caractere a ser utilizado para preencher os espaos em branco de um campo de exibio. Isto feito com o seguinte mtodo: cout.fill ( caractere); Onde substitumos caractere pelo caractere que ser exibido. necessrio utilizar aspas entre o caractere, para indicar para o compilador que no se trata de uma varivel. O exemplo abaixo mostra a utilizao conjunta destes dois mtodos: int variavel = 10; cout.width ( 8 ); cout.fill(0); cout << variavel; Este exemplo far a seguinte exibio na tela, preenchendo os espaos em branco determinados por cout.width com o caractere 0, determinado por cout.fill: 00000010

5.3.4 Preciso de Variveis Reais


O seguinte mtodo utilizado para fixar a preciso de variveis reais, ou seja, o nmero mnimo de casas decimais serem exibidas aps a vrgula em um valor real: cout.precision ( valor ); Por default, C++ utiliza 6 casas decimais aps a vrgula. Quando alteramos o valor da preciso, este novo valor vale para todas as utilizaes futuras de cout.

5.3.5 Alinhamento de Texto


A escolha da direo de alinhamento de texto feita da seguinte forma utilizando cout: Alinhamento direita: cout << right << <valor a ser exibido>; Alinhamento esquerda: cout << left << <valor a ser exibido>; Por default, todos os valores exibidos em um programa so automaticamente alinhados direita. Quando mudamos o modo do alinhamento de texto, ele permanecer dessa forma at que o alteremos novamente.

5.4 Utilizao de cin


Utilizamos o comando cin para obter valores do usurio atravs do teclado. A sintaxe utilizada a seguinte: cin >> variavel_destino; Assim como cout, cin utiliza um operador (nesse caso, o operador de extrao >> ) para identificar o tipo de varivel onde o valor ser armazenado e encontrar o endereo de memria correto. Ao contrrio da funo scanf, utilizada na linguagem C, no preciso especificar qual o tipo de valor ser enviado pelo teclado pois o operador de extrao faz as converses necessrias. Podemos

3 de 4

17/6/2013 16:58

Apostila de C++ - Faculdade de Engenharia de Ilha Solteira - UNESP

http://apostilacpp.awardspace.com/index.php?pagina=modulo05

utilizar cin para ler valores inteiros, reais e strings de caracteres. Na maioria dos casos, o comando cin cobre nossas necessidades de entrada de dados via teclado. Entretanto, quando precisamos ler strings com mais de uma palavra, como por exemplo frases ou nomes, cin apresenta certos problemas. Isto acontece por causa da maneira que C++ trata os espaos em branco em uma entrada via teclado. Espaos em branco so considerados fim de entrada pelo comando cin; ao invs de descartar os caracteres que vierem aps o espao em branco, C++ os guarda em um buffer (uma espcie de reserva ou pilha de dados). Quando cin for chamado novamente, antes de ler a nova entrada do teclado, o programa primeiro utiliza os dados que esto nesse buffer. Assim, temos a impresso que a nova entrada de dados foi descartada pelo programa, mas na verdade ela foi jogada no buffer, esperando uma nova chamada de cin. Para solucionar este problema, utilizamos o mtdo de cin cin.getline.

5.5 Mtodo de cin: cin.getline


O mtodo cin.getline muito til para receber strings de caracteres com espaos, como frases. Este mtodo l uma linha inteira, marcando o fim da entrada de dados pelo uso da tecla <ENTER> indicando a entrada de uma nova linha. Abaixo temos a sintaxe do mtodo: cin.getline ( <matriz_destino>, <limite de caracteres>); O primeiro argumento a matriz de caracteres para onde sero enviados os dados recebidos. necessrio declarar uma matriz de caracteres previamente ao uso deste mtodo. O segundo argumento o nmero mximo de caracteres que ser lido pelo mtodo, menos o caractere \0 indicando o fim da string. Assim, se especificarmos um nmero mximo igual a 20, este comando ler 19 caracteres e descartar os prximos caracteres entrados pelo usurio, at que a tecla <ENTER> seja pressionada. Um espao ser sempre utilizado para marcar o fim da string atravs do caractere \0. Um exemplo da utilizao de cin.getline: char matriz[60]; cin.getline ( matriz, 50 ); cout >> matriz; Nesse caso, o mtodo cin.getline ler os prximos 49 caracteres (lembre-se do espao reservado para o caractere fim_de_string \0) que o usurio entrar atravs do teclado. A leitura ser feita at que ele aperte a tecla <ENTER> interrompendo o comando. Caso o usurio entre mais do que 50 caracteres , os prximos sero descartados pelo programa.
Apostila de C++ - Faculdade de Engenharia de Ilha Solteira - Enrique Camargo Trevelin - 2007

4 de 4

17/6/2013 16:58

You might also like