Apostila - Programa--o C++
169 pág.

Apostila - Programa--o C++


DisciplinaOrganização de Computadores6.412 materiais120.235 seguidores
Pré-visualização50 páginas
no arquivo <iostream.h>. 
13.4.1 A stream de saída cout 
Cout é um objeto de uma clase de I/O predefinida em C++. Para mostrar os dados em um 
programa C++, deve-se utilizar a stream cout. Por default cout está associada a uma saída 
padrão (stdout), i.e., o ao terminal de vídeo. Sintaxe de cout : 
 
 cout << expressão; 
onde, 
<< : é o operador de inserção usado a fim de direcionar a saída de dados para a saída 
padrão (vídeo). 
expressão : é qualquer combinação de caracteres ou variável. 
 Abaixo apresentamos alguns exemplos da utilização de cout. Note que em nenhuma das 
declarações da stream cout são formatados os dados a serem apresentados. Essa formatação é feita 
pela própria stream. 
 
Variáveis C++ Resultado 
int x = 2; Cout << \u201cx = \u201d << x; x = 2 
Float f = 1.2, g = 3; Cout << f << \u201c \u201d << g; 1.20 3.00 
Double dou = 2.14; 
Char ch = \u2018F\u2019; 
Cout << \u201cvalor = \u201d 
 << dou << \u201c\nsex = \u201d << ch; 
valor = 2.14 
sex = F 
 
No último exemplo acima, mostramos o uso do caracter especial \u2018\n\u2019 para fazer com que o 
computador pule uma linha antes de continuar escrevendo dados na tela. Podemos utilizar todos os 
caracteres especiais definidos para printf() da mesma maneira que utilizamos agora \u2018\n\u2019. Uma 
lista completa destes caracteres está em 3.1. 
O objeto cout utiliza flags de formatação para sinalizar as opções de formatação dos 
dados. Os flags (sinalizadores) de formato (definidos em <iomanip>) são os seguintes: 
 
Manipulador Significado 
skipws Ignora o espaço em branco na entrada 
left Saída ajustada à esquerda 
right Saída ajustada à direita 
internal Preenchimento após indicador de sinal ou base 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 93 
dec Conversão em decimal 
oct Conversão em octal 
hex Conversão em hexadecimal 
showbase Mostra o indicador de base na saída 
showpoint Mostra ponto decimal (para float) 
uppercase Saída hexadecimal maiúscula 
showpos Mostra o sinal \u2018+\u2019 em inteiros positivos 
scientific usa notação científica de ponto flutuante 1.23E2 
fixed usa notação de ponto flutuante 1.23 
unitbuf Libera (flush) todas as streams depois da inserção 
stdio Libera (flush) stdout, stderr depois de inserção 
 
A sintaxe para usar esses sinalizadores (ou flags) é a seguinte: 
cout.setf(ios::<sinalizador>); // para ligar 
cout.setf(ios::scientific); 
cout << 12.345; // Imprimirá : 0.12345E2 
cout.unsetf(ios::<sinalizador>); // para desligar 
cout.unsetf(ios::scientific); 
cout << 12.345 // Imprimirá: 12.345 
 
O objeto cout permite estabelecer o tamanho de um campo para a impressão. Isto significa 
que podemos definir o número de colunas que serão ocupados por um valor ou texto a ser impresso. 
Geralmente, a definição de tamanho de campos é usada para alinhamento e estética de um relatório. 
Os manipuladores de formato são utilizados para manipular a formatação dos dados em 
streams de saída. Alguns manipuladores são idênticos ao sinalizadores, a diferença está na forma 
mais compacta e na inclusão de outra biblioteca de classes <iomanip>. 
 
Manipulador Significado 
dec Passa ara base decimal 
oct Passa ara base octal 
hex Passa ara base hexadecimal 
ws Extrai caracteres de espaço em branco 
endl Insere nova linha e libera stream 
ends Insere término nulo em string \u2018\0\u2019 
flush Libera o buffer de saída ostream alocado 
setbase(n) Ajusta o formato de conversão para a base n. default n = 0; 
resetiosflags(long) Limpa os bits de formato em ins ou outs especificadas. 
setiosflags(long) Ajusta os bits de fomato em ins ou outs especificadas. 
setfill(int n) Ajusta o caracter de preenchimento para n 
setprecision(int n) Ajusta a precisão do ponto flutuante para n 
setw(int n) Ajusta o tamanho do campo para n 
 
Exemplo do uso destes manipuladores: 
 
// Exemplo do emprego de Cout 
#include <iostream> 
#include <iomanip> 
using namespace std; 
 
int main(int argc, char* argv[]) 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 94 
{ 
 float lap = 4.875; 
 float bor = 234.5421234546; 
 int can = 42; 
 int cad = -8; 
 cout << &quot;\n\n&quot; << setiosflags(ios::left); 
 cout << setprecision(2); 
 cout << &quot;\n\t&quot; << &quot;Lapis &quot; << setw(12) << lap; 
 cout << &quot;\n\t&quot; << &quot;Borracha &quot; << setw(12) << bor; 
 cout << &quot;\n\t&quot; << &quot;Canetas &quot; << setw(12) << can; 
 cout << &quot;\n\t&quot; << &quot;Cadernos &quot; << setw(12) << cad; 
 cout << &quot;\n\t&quot; << setfill('.') << &quot;Fitas &quot; << setw(12) << &quot;TYE&quot;; 
 
 return 0; 
} 
 
 
Observação: Todos esses cabeçalhos usados oferecem recursos no ambiente de nomes std, 
de modo que, para usar os nomes que eles oferecem, precisamos ou usar qualificação explícita com 
std: : ou trazer os nomes para o ambiente de nomes global com 
using namespace std; 
 
Observação: quando a função main( ) é chamada, esta recebe dois argumentos especificando 
o número de argumentos, usualmente chamado argc, e um array de argumentos, usualmente 
chamado de argv. Os argumentos são strings de caracteres, de modo que o tipo de argv é char* 
[argc+1]. O nome do programa é passado como argv[0], de modo que argc é sempre no mínimo 1. 
A lista de argumentos é terminada por um zero; isto é, argv[argc] = = 0. 
 
Observação: Se o tamanho do campo especificado em setw for menor que o tamanho 
mínimo necessário para imprimir o valor associado, a impressão utilizará o número necessário de 
colunas, ignorando o tamanho do campo. 
Outro exemplo do emprego destes manipuladores: 
 
// Exemplo do emprego de hex, dec e oct 
#include <iostream> 
int main(int argc, char* argv[]) 
 
{ 
 int n = 15; 
 cout << &quot;\n&quot; << &quot;Hexadecimal \t&quot; << hex << n; 
 cout << &quot;\n&quot; << &quot;Decimal \t&quot; << dec << n; 
 cout << &quot;\n&quot; << &quot;Octal \t&quot; << oct << n; 
 return 0; 
} 
13.4.2 A stream de entrada cin 
A forma de entrar com dados em um programa C++ é através do objeto cin. Tratra-se de um 
fluxo associado à entrada padrão do computador (stdin, i.e, o teclado). A sintaxe de cin é: 
 
cin >> variável; 
onde 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 95 
>> : é o operador de extração usado para direcionar a entrada de dados à entrada padrão 
(teclado). Através do contexto, o compilador sabe que este operador não será o operador para 
deslocamento de bits mas sim o operador de leitura de dados. 
variável : é o nome da variável onde desejamos guardar os valores lidos. 
Na tabela a seguir, apresentamos alguns exemplos da leitura de dados através de cin. Note 
que em C++ não é necessário formatar o dado que está sendo lido. Cin faz isto automaticamente, 
de acordo com a declaração da variável. 
 
 Variáveis C++ C 
 int x; cin >> x; scanf(\u201c%d\u201d,&x); 
 float f,g; cin >> f >> g; scanf(\u201c%f %f\u201d, &f, &g); 
 double dou; char ch; cin >> dou >> ch; scanf(\u201c%Lf %c\u201d, &dou, &ch); 
 
O objeto cin faz com que o programa aguarde que você digite o dado a ser adquirido e 
pressione a tecla [ENTER] para finalizar a entrada. O operador >> pode apresentar-se diversas 
vezes numa instrução com a finalidade de permitir a introdução de diversos valores ao mesmo 
tempo. Múltiplas entradas são digitadas separadas por um espaço em branco. O objeto cin entende 
um espaço em branco como término de uma entrada e o [ENTER] como finalizador geral. 
Podemos ler números em outras bases numéricas, utilizando os manipuladores hex, dec e oct 
apresentados anteriormente. 
int n = 0; 
cin >> hex >> n; 
A biblioteca stream define outras funções para leitura e escrita de dados que não serão aqui 
apresentadas. Todas as funções apresentadas na secção 3 podem ser aqui empregadas. 
13.5 Funções 
13.5.1 Valores Default Para Argumentos de uma Função 
C++ permite a definição de valores default para argumentos