Buscar

Algoritmo e estrutura de dados C++

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 2 de 27 
Linguagem C++ - Tutorial 
Este Tutorial pretende dar uma breve e simples introdução a vários aspectos da linguagem 
C++. Não é objetivo criar um Tutorial extenso, quer em teoria quer em prática, mas sim dar a 
conhecer certos tópicos que poderão ser posteriormente desenvolvidos. 
Este Tutorial foi criado a pensar em todo aquele que quer aprender C++. É fundamental, para 
quem quiser seguir convenientemente o Tutorial, ter um compilador de C++ em casa. 
Aconselho o Visual C++ pela sua facilidade de funcionamento. 
O C++ é uma linguagem difícil de aprender e, falando por experiência própria, pouco 
estimulante. Digo isto porque se, por exemplo, no Visual Basic não é preciso grandes 
conhecimentos para fazer janelas, desenhar imagens, incluir som, no C++ é! Nos primeiros 
capítulos irá trabalhar-se com o DOS prompt, o que não é muito apelativo... Mas o leitor tem de 
perceber que é importante aprender as bases antes de criar programas mais vistosos. 
Este Tutorial tem um pouco de teoria, mas é sobretudo com a prática que se aprende 
programação! Se não experimentar os exemplos e ver as coisas funcionando não aprenderá 
nada! 
Escrevendo na saída padrão (tela DOS) 
Um programa em C++ é um conjunto de funções. O conceito de função será explicado mais à 
frente. Por agora só é preciso saber que todo o programa em C++ tem obrigatoriamente de 
conter uma função main. Aqui está o programa mais básico do C++, um programa que não faz 
nada: 
 // programa que não faz nada! 
 int main() 
 { 
 /* o código que faria o programa funcionar deveria estar aqui */ 
 return 0; 
 } 
Aquele texto começado por //, é um comentário, os comentários são ignorados pelo compilador 
e devem ser usados abundantemente, para fazer com que o código seja mais fácil de 
compreender. Existem duas maneiras de realizar comentários, usando "//", o que fará com que 
toda a linha, a partir daí, seja comentada, e /* em que o texto que fica entre */ é um 
comentário. 
Antes de main() está a palavra int, que é uma palavra reservada do C++. Por agora não é 
necessário compreender estes conceitos, necessário é compreender que aquilo acima é a base 
de qualquer programa em C++. 
O C++ é Case Sensitive,ou seja é diferente escrever mAin(), Main(), MAIN(). Se não houver 
uma função com o nome exatamente igual a main(), o programa não funcionará! 
Os Arquivos fonte da linguagem C++ têm a extensão ".cpp". Sempre que criar um arquivo com 
código em C++ , ponha-lhe um nome do gênero: "nome_Arquivo.cpp". 
 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 3 de 27 
 
Antes de mais nada, o que é a saída padrão? Sempre que me referir saída padrão falo de uma 
saída no DOS. A seguir encontra-se o programa de praxe para quem começa a aprender uma 
linguagem de programação: 
 // este programa escreve na saída padrão a mensagem "Olá Mundo!" 
 #include <iostream.h> // é obrigatório para poder usar cout<<"..."; 
 
 int main() 
 { 
 cout<<"Olá Mundo!"<<endl; 
 return 0; 
 } 
Comecemos pela primeira linha, o C++ é uma linguagem poderosa devido às suas bibliotecas, 
a primeira linha permite ao programa poder escrever na saída padrão. Por agora o leitor terá de 
se contentar com esta explicação, e usar sempre aquela linha. Só mais adiante ela poderá ser 
explicada com clareza. Explicado assim por alto, o que #include <iostream.h> faz é incluir no 
programa o conteúdo do arquivo iostream.h 
Já dentro da função main() encontra-se a instrução cout<<"Olá Mundo!";, que fará aparecer na 
tela "Olá Mundo!". A palavra endl diz ao programa para mudar de linha e todas as instruções 
dentro do main() têm de ser concluídas com ponto e vírgula ';'. Isto não é bem assim, mas por 
agora terá de servir. 
Saída formatada 
Largura da saída: Você pode querer que a sida seja alinhada em colunas, o que significa que 
a saída deve ser escrita com uma largura fixa. 
Um programa pode especificar uma largura default para cada item mostrado inserindo o 
manipulador setw no fluxo ou chamando a função membro width. O manipulador setw e 
width usam um parâmetro de largura. 
Exemplo: mostrando uma coluna de números: 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 for (int=I; I < 4; i++) 
 cout << values[i] << ‘\n’; 
 } 
Os programa mostra a seguinte tela: 
1.23 
35.36 
653.7 
4358.224 (repare que os números estão desalinhados) 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 4 de 27 
 
Chamando a função width com um argumento de 10, o resultado seria: 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 for (int i=0; i < 4; i++) 
 { 
 cout.width(10); 
 cout << values[i] << ‘\n’; 
 } 
 } 
Significa que a saida deve aparecer em colunas de pelo menos 10 caracteres de largura. 
O resultado seria assim: 
 1.23 
 35.36 
 653.7 
4358.224 (a coluna possui 10 caracteres de largura e os números alinhados a direita) 
 
Algumas vezes é preciso usar larguras diferentes para dados diferentes. O manipulador setw 
oferece esta capacidade. 
 
Exemplo 
 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 static char *nomes[]={“Zoot”, “Jimmy”, “Al”,”Stan”}; 
 for (int i=0; i < 4; i++) 
 { 
 cout.<< setw(6) << nomes[i] 
 << setw(10) << values[i] << ‘\n’; 
 } 
 } 
O resultado seria: 
 
Zoot 1.23 
Jimmy 35.36 
 Al 653.7 
 Stan 4538.224 
Note que a utilização de setw ou width não provoca nenhuma truncagem. Se o valor mostrado for maior 
do que a largura corrente, o dado inteiro será mostrado mesmo assim. Para restaurar a largura default do 
objeto, usa a função width ou o setw com um argumento zero. 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 5 de 27 
Você pode usar a função fill para definir o valor do caractere de preenchimento para saídas que tem 
larguras diferentes da default. 
Exemplo: 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 for (int i=0; i < 4; i++) 
 { 
 cout.width(10); 
 cout.fill(‘*’); 
 cout << values[i] << ‘\n’; 
 } 
 } 
A saida gerada é: 
**********1.23 
*********35.36 
*********653.7 
******4358.224 
 
O asterisco completa o que falta para ficar com o tamanho de 10. 
 
Justificando a saída 
 
Suponha que você queira que os nomes do exercício anterior fiquem justificados à esquerda e 
que os números permaneçam justificados à direita. Você pode usar o manipulador setioflags 
para especificar que a saída deve ser justificada à esquerda ou à direita. 
Exemplo: 
 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 static char *nomes[]={"Zoot", "Jimmy", "Al","Stan"}; 
 for (int i=0; i < 4; i++) 
 { 
 cout << setiosflags(ios::left) 
 << setw(6) << nomes[i] 
 << resetiosflags(ios::left) 
 << setw(10) << values[i] << '\n'; 
 } 
 cin.get(); 
 } 
 
O resultado seria: 
 
Zoot 1.23 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 6 de 27 
Jimmy 35.36 
Al653.7 
Stan 4538.224 
O exercício ajusta a justificação à esquerda usando o manipulador setiosflags com um 
argumento de ios::left. (isso tem que ser incluído). O manipulador resetiosflags desliga a 
justificação á esquerda para retornar ao modo default de justificação à direita. 
 
Precisão 
 
Suponha que você queira que os números de ponto flutuante do exercício anterior sejam 
mostrados com uma casa decimal. O manipulador setprecision informa ao objeto para usar 
um determinado número de dígitos de precisão. 
Exemplo: 
 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 static char *nomes[]={"Zoot", "Jimmy", "Al","Stan"}; 
 for (int i=0; i < 4; i++) 
 { 
 cout << setiosflags(ios::left) 
 << setw(6) << nomes[i] 
 << resetiosflags(ios::left) 
 << setw(10) << setprecision(1) 
 << values[i] << '\n'; 
 } 
 cin.get(); 
 } 
 
O resultado seria: 
 
Zoot 1 
Jimmy 4e+001 
Al 7e+002 
Stan 4e+003 
 
A notação científica mostrada pode não ser aquilo que o programa precisa mostrar. Existem 
dois sinalizadores, ios::fixed e ios::cientific, que controlam a maneiro como um número de 
ponto flutuante é mostrado. Um programa pode ligar e desligar estes sinalizadores utilizando os 
manipuladores setiosflags e restiosflags. 
 
#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
 static double values[]={1.23, 35.36, 653.7,4358.224}; 
 static char *nomes[]={"Zoot", "Jimmy", "Al","Stan"}; 
 for (int i=0; i < 4; i++) 
 { 
 cout << setiosflags(ios::left) 
 << setw(6) << nomes[i] 
 << resetiosflags(ios::left) 
 << setiosflags(ios::fixed) 
 << setw(10) << setprecision(1) 
 << values[i] << '\n'; 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 7 de 27 
 } 
 cin.get(); 
 } 
O O resultado seria: 
 
Zoot 1.2 
Jimmy 35.4 
Al 653.7 
Stan 4358.2 
 
 
O exercício a seguir usa o manipulador setiosflags para ligar o sinalizador ios::fixed, de 
modo que o programa não mostre mais os números em notação científica. 
 
OBSERVAÇÕES IMPORTANTES 
 
Os dois comandos a seguir são semelhantes: 
 
cout.put(‘A’); 
cout << ‘A’; 
 
Os dois commandos a seguir também são semelhantes: 
 
cin.getline(nome, 35); (considerando um char com 35 posições) 
gets(nome); 
 
Os dois commandos a seguir também são semelhantes: 
 
cin.get(ch); 
cin >> ch; (considerando ch uma variável tipo char) 
Não há nada melhor para aprender estes conceitos que experimentar! Faça um programa 
parecido, mude as palavras... 
E já agora um pouco de teoria extra. Existem três momentos na realização de um programa: 
design time (tempo de criação do código), compile time(quando o compilador está a criar o 
executável) e run time(durante a execução do programa). 
Lendo Valores da Entrada Padrão (teclado) 
Variáveis e Seus Tipos 
Até aqui já sabemos escrever na saída padrão, mas é fundamental que escrevamos aquilo que 
queremos e quando queremos. Ao escrever cout<<"Olá!; sempre que rodarmos o programa 
aparecerá "Olá!", e se quisermos escrever outras coisas? 
O conceito de variável nasce daqui. Variável é tipo uma gaveta onde temos um valor que pode 
mudar quando quisermos e há vários tipos de variáveis, sendo as mais simples as seguintes: 
 // declaração de variáveis 
 int main() 
 { 
 int a; // cria uma variável numérica de tipo inteiro com o nome a 
 double b; // cria uma variável real com o nome b 
 char c; // cria uma variável que contém um único caractér 
 bool d; // cria uma variável booleana (true ou false) 
 return 0; 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 8 de 27 
 } 
Isto assim não dá muito jeito, é preciso poder alterar o conteúdo das variáveis. Para isso existe 
o operador '='. O exemplo seguinte mostra como declarar, inicializar e mostrar na saída padrão 
variaveis. 
 // declaração, inicialização e escrita de variáveis na saída padrão 
 #include <iostream.h> 
 
 int main() 
 { 
 int a; // declarar a variável a como inteiro 
 a = 2; // atribui a variável a com o número 2 
 cout<<"a = "<< a<<endl; // escreve na saída padrão a = 2 
 
 
 double b = 1.2; // declarar e inicializar a variável b com 1,2 
 /* atenção que no C++ a vírgula ',' é representada por um ponto '.' */ 
 cout<<"b = "<< b<<endl; // escreve b = 1.2 
 
 
 char c = 'C'; // declarar e inicializar a variável c com o caractér 'C' 
 cout<<"Linguagem "<< c <<"++"<<endl; 
 /* escreve Linguagem C++ */ 
 
 
 return 0; 
 } 
As variáveis podem ter qualquer nome e é diferente escrever int verde; e int Verde; Serão 
criadas duas variáveis distintas. 
Não sei se reparou mas por vezes uso aspas ' " ', e outras vezes a apóstrofo ' ' ' para 
representar texto. Isto funciona assim, texto entre aspas é considerado uma string (conjunto de 
caracteres) e entre apóstrofo(aspas simples) um único caracter. 
O tipo bool apenas suporta os valores 1(true) ou 0(false). A sua utilidade será verificada mais à 
frente. 
Lendo da Entrada Padrão (teclado) 
Em programação é muito comum precisarmos de pedir valores ao usuário do programa em run 
time. Para isso usa-se um método semelhante ao cout<<""; 
 // declaração, inicialização e escrita de variáveis na saída padrão 
 #include <iostream.h> // a variável de leitura também se encontra neste Arquivo 
 
 int main() 
 { 
 int a; // declaração da variável a 
 cout<<"introduza um número inteiro:"<<endl; 
 cin>>a; // lê do teclado um valor inteiro e guarda na variável a 
 
 
 cout<<endl<<"Acabou de introduzir o número: "<< a << endl; 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 9 de 27 
 cout<<"Pressione ENTER para terminar o programa."; 
 cin.get(); // espera que o usuário pressione ENTER 
 } 
A melhor maneira de aprender o conceito de cin, é testar o programa. Resumidamente o que 
ele faz é parar o programa à espera que o usuáro introduza um número seguido de ENTER. 
Outra novidade é a instrução cin.get(); Se alguém experimentou testar algum dos programas 
anteriores clicando no seu executável, com certeza que não viu nada! Isto porque não havia 
nada que indicasse ao programa para parar, para que o usuario pudesse ver o que estava a 
acontecer! O cin.get(); faz com que o programa pare, à espera da tecla ENTER por parte do 
usuário. 
Variáveis Constantes 
Pode haver a necessidade de se ter uma variável constante, que não mude durante a execução 
do programa, para isso basta fazer const in a =10; Desta forma o a permanecerá igual a 10 
durante todo o programa. A utilidade das variáveis constantes será verificada novamente 
quando falarmos de arrays. 
Nos próximos capítulos vamos-nos debruçar sobre os tipos de variáveis numéricas, só depois 
falando do char. 
Operações aritméticas com variáveis numéricas 
Este capítulo mostra como efetuar cálculos na Linguagem C++ com base num exemplo prático. 
A tabela seguinte mostra os operadores aritméticos do C++: 
operador exemplo descrição 
= a = b = c; o exemplo teria o seguinte resultado a = ( b = c ) 
+ a = b + c; guarda na variável a a soma de b e c 
- a = b - c; guarda na variável a a diferença entre b e c 
* a = b * c; guarda na variável a o produto de b e c 
/ a = b / c; guarda na variável a a divisão de b com c 
Desta maneira representam-se as operações aritméticas básicas. Contudo oC++ disponibiliza 
outros operadores (de conveniência): 
operador o mesmo que: 
a += b; a = a + b; 
a -= b; a = a -b; 
a /= b; a = a / b; 
a *= b; a = a *b; 
a %= b; a = a % b; 
a; a = a + 1; 
--a; a = a - 1; 
Para aquele que está a aprendendo, penso que a instrução a=a+b; poderá ser um pouco 
confusa. O que vai se passar é o seguinte: o a armazenará a soma do seu valor com b. Se a=2 
e b=3, (a=a+b) é o mesmo que (a=2+3). 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 10 de 27 
 
 
 
Para solidificar esta teoria, fica aqui um exemplo prático. O objetivo deste programa é pedir ao 
usuário 3 números e apresentar a sua média. 
 // média de 3 valores 
 #include <iostream.h> 
 
 int main() 
 { 
 // declarações das variáveis 
 int a, b, c; // o mesmo que int a; int b; int c; 
 double media; /* variável para armazenar o valor da média, double porque o resultado 
 pode não ser inteiro */ 
 
 
 cout<<"Introduza 3 números inteiros: "; 
 cin>> a >> b >> c; // o mesmo que cin>>a; cin>>b; cin>>c; 
 
 
 // calcular a média 
 media = (a+b+c) / 3; 
 
 
 // apresentar o resultado 
 cout<< endl<< "A média é: "<< media<< endl; 
 cout<<"Enter para terminar"; 
 cin.get(): 
 return 0; 
 } 
Operadores de Incremento e Decremento 
Existem dois tipos de operadores de incremento e decremento: exemplo: ++i; i++; No primeiro 
caso a variável é incrementada e retorna o seu valor. No segundo, primeiro é retornado o valor 
da variável i e só depois esta é incrementada. Exemplo prático: 
 #include <iostream.h> 
 
 int main() 
 { 
 int i = 2, j = 3; // declaração e inicialização das variáveis j e i 
 int a = 0; // para testes 
 
 
 a = ++i; // a=3, i=3 
 a = j++; // a=3, j=4 
 
 
 --i; // i = 2 
 j--; // j=3 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 11 de 27 
 return 0; 
 } 
 
 
Instruções de controle de execução com operadores lógicos 
Já aprendemos a usar variáveis, a fazer cálculos e apresentar resultados. Agora chega a parte 
de aprender a fazer com que o nosso programa tome decisões, decida entre fazer isto ou 
aquilo, fazer a mesma coisa um número pré-definido de vezes, ou simplesmente enquanto nós 
quisermos! 
Nos próximos capítulos falaremos do que são as instruções de Controle e Execução, porém, 
para as podermos utilizar convenientemente e com sabedoria, é necessário primeiro conhecer 
os operadores lógicos. 
Operadores Lógicos 
As seguintes tabelas definem todos os operadores lógicos do C++. Sejam a e b duas variáveis 
booleanas (do tipo bool): 
Operação AND (&&) 
a b a && b 
0 0 0 
0 1 0 
0 0 0 
1 1 1 
Operação OR ( || ) 
a b a | | b 
0 0 0 
0 1 1 
1 0 1 
1 1 1 
Operação IGUAL ( = = ) 
a b a b 
0 0 1 
0 1 0 
0 0 0 
1 1 1 
 
Lembre-se que um bool apenas permite os dois valores lógicos true e false. Tente fazer o 
seguinte exercício: 
 int main() 
 { 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 12 de 27 
 bool b = true, c = false; 
 bool a = 0; 
 /* embora se possa inicializar ou atribuir um bool com 0 ou 1 
 recomenda-se sempre que se use true ou false */ 
 
 
 // exemplo 
 b = !a; // b passou a false 
 c = a || b; // c continua a false 
 
 
 // tente encontrar o novo valor de a 
 a = (!b) || (a && c); 
 return 0; 
 } 
Operadores Relacionais 
operador descrição 
a > b retorna true se a maior que b 
a < b retorna true se a menor que b 
a <= b retorna true se a menor ou igual a b 
a >= b retorna true se a maior ou igual a b 
a == b retorna true se a igual a b 
a != b retorna true se a diferente de b 
 
Instrução if-else 
A instrução if-else tem a seguinte sintaxe: 
 if( <teste> ) 
 <instrução 1> 
 else 
 <instrução 2> 
ou simplesmente 
 if( <teste> ) 
 <instrução 1> 
No primeiro caso, se <teste> for true, então realizar-se-á a <instrução 1>, se for false passa 
para a <instrução 2>. 
No segundo caso apenas se <teste> for true se poderá efetuar a <instrução 1>. Vejamos o 
seguinte exemplo prático: 
 #include <iostream.h> 
 
 int main() 
 { 
 int a, b; 
 
 
 // pedir dois valores inteiros 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 13 de 27 
 cout<<"Introduza 2 valores inteiros: "<< endl; 
 cin>>a>>b; 
 
 
 if( a == b ) 
 cout<<"Os valores sao iguais!"; 
 else 
 cout<<"Os valores sao diferentes!"; 
 
 
 cin.get(); 
 return 0; 
 } 
No parâmetro de teste do if pode-se ter qualquer expressão, mas só será efetuada a instrução 
correspondente se o resultado dessa expressão for true. 
Talvez você se pergunte: Então e se eu quiser por mais que uma instrução? Aqui entra o 
conceito de scopo. Um scopo é sempre limitado por chaves, por exemplo, existe o scopo da 
função main. Penso que com o seguinte exemplo as coisas se tornarão mais claras: 
 #include <iostream.h> 
 
 int main() 
 { 
 int a, b; 
 
 
 // pedir dois valores inteiros 
 cout<<"Introduza 2 valores inteiros: "<<endl; 
 cin>>a>>b; 
 
 
 if( a == b ) { 
 cout<<"Os valores são iguais!"; 
 cout<<"Veja, foi usada outra instrução dentro deste if!"; 
 } 
 else{ 
 cout<<"Os valores são diferentes!"; 
 } 
 cin.get(); 
 } 
Se a condição do if for true, ele realiza a instrução seguinte, e um scopo é um conjunto de 
instruções (também pode ter só uma como se vê no else). 
Atenção que uma variável declarada dentro de um scopo deixa de existir fora dele! Exemplo: 
 #include <iostream.h> 
 
 int main() 
 { 
 bool b = true; 
 
 
 if(b){ // entrará sempre pois b = true 
 int a = 4; 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 14 de 27 
 cout<<"a= "<<4; 
 } 
 a = 3; // ERRO!!! 
 /* a variavel só existe dentro do scopo em que foi declarada! */ 
 } 
Operador Ternário 
O operador ternário é um caso especial de if e tem a seguinte sintaxe: 
 ( <teste> ) ? <instrução 1> : <instrução 2>; 
Programa exemplo em que o operador ternário recebe a variável a com o módulo da variável b. 
Para os mais esquecidos chama-se módulo de um número à sua versão positiva, exemplo: 
módulo de -1 é 1, módulo de 2 é 2, módulo de 0 é 0; 
 #include <iostream.h> 
 
 int main() 
 { 
 int a, b; 
 cout<<"Introduza um número inteiro diferente de zero:"; 
 cin>>b; 
 
 
 a = ( b>0) ? b : -b; 
 /* lê-se: o b é maior que 0? se sim retorna b : se não retorna -b */ 
 
 
 cout<<"O modulo de "<<b<<" é "<<a; 
 cin.get(); 
 } 
 
Instrução Switch 
Penso que o switch é fácil de compreender e penso também que a melhor maneira de explicar 
é através de um exemplo prático: 
 #include <iostream.h> 
 
 int main() 
 { 
 char c; 
 cout<<"Introduza uma vogal minúscula:"<<endl; 
 cin>>c; 
 
 
 switch(c) { 
 
 
 case 'a': 
 cout<<"Introduziu um a!"<<endl; 
 break; 
 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 15 de 27 
 case 'e': 
 cout<<"Introduziu um e!"<<endl; 
 break; 
 
 
 case 'i': 
 cout<<"Introduziuum i!"<<endl; 
 break; 
 
 
 case 'o': 
 cout<<"Introduziu um o!"<<endl; 
 break; 
 
 
 case 'u': 
 cout<<"Introduziu um u!"<<endl; 
 break; 
 
 
 default: // se a variável do switch não for nenhuma das anteriores 
 cout<<"Não introduziu uma vogal!"<<endl; 
 break; 
 } 
 cin.get(); 
 } 
O switch vai ver qual a variável, caso seja uma das opções de que dispõe, faz as instruções 
necessárias. O break faz com que se saia imediatamente do switch e não é obrigatório em cada 
case. 
 #include <iostream.h> 
 
 // programa que diz se um número introduzido é maior, igual ou menor que 3 
 int main() 
 { 
 int a; 
 cout<<"Introduza um número entre 0 e 5:"<<endl; 
 cin>>a; 
 
 
 switch(a) { 
 
 
 case 0: 
 case 1: 
 case 2: 
 cout<<"O número "<<a<<" é menor que 3!"; 
 break; 
 
 
 case 3: 
 cout<<"O número "<<a<<" é igual a 3!"; 
 break; 
 
 
 case 4: 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 16 de 27 
 case 5: 
 cout<<"O número "<<a<<" é maior que 3!"; 
 break; 
 
 
 default: 
 cout<<"Não introduziu um número entre 0 e 5..."; 
 break; 
 } 
 cin.get(); 
 } 
 
Instrução While 
A sintaxe do while é a seguinte: 
 while( <teste> ) 
 <instrução> 
Para este programa de exemplo, devo fazer uma introdução. O cin.get() que usávamos para 
esperar por um ENTER, na verdade lê qualquer caracter, e podemos inclusive fazer char 
a=cin.get(); 
Mais, há vários caracteres especiais (dos quais falaremos mais à frente). O que vamos usar no 
próximo programa é o '\n', que tem a função de mudar de linha. 
Fazer cout<<"Olá"<<endl; é o mesmo que fazer cout<<"Olá \n"; Quando o usuário aperta a 
tecla ENTER o cin.get() retorna o caractér '\n'. 
 #include <iostream.h> 
 
 // programa que pede que o usuário escreva uma linha de texto e conta os caracteres 
 int main() 
 { 
 unsigned charCount = 0; // inteiro sem sinal, >= 0 
 cout<<"Introduza uma linha de texto:"<<endl; 
 
 
 while( cin.get() != '\n' ) // enquanto o usuário não teclar ENTER 
 ++charCount; // conta o caractér 
 
 
 cout<<"\nDigitou "<< charCount <<" caracter" 
 << ( charCount != 1 ? "es." : "." ) <<endl; 
 
 
 cin.get(); 
 return 0; 
 } 
Este programa já é mais complicado, mas temos de começar a evoluir... 
Enquanto a condição de teste dentro do while for true, ou seja, enquanto o usuário não digitar 
ENTER, realizar-se-á a instrução charCount. 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 17 de 27 
Exemplo: 
 Tutorial de c++ <ENTER> 
 O programa irá ler todos os caracteres até encontrar <ENTER> e por cada caracter que 
 ler incrementará o charCount. 
Parece ser complicado entender isto, mas tem de testar o programa e ver como ele funciona, 
só assim compreenderá. 
Depois de contar o número de caracteres aparece um cout um pouco esquisito... Penso que 
ninguém tem dúvidas que o operador ternário está lá para completar a frase com "." ou com 
"ers.", consoante o número de caracteres. 
No cout, em vez de fazer 
 cout<<"Atirei o pau ao gato"<<endl; 
 cout<<"Mas o gato assustou-se..."<<endl; 
Pode-se fazer: 
 cout<<"Atirei o pau ao gato"<<endl 
 <<"Mas o gato assustou-se..."<<endl; 
Que é o mesmo que 
 cout<<"Atirei o pau ao gato"<<endl<<"Mas o gato assustou-se..."<<endl; 
Instrução do-while 
Na instrução while, primeiro testa-se a condição e somente depois se prossegue com as 
instruções. 
No entanto poderá haver casos em que se queira fazer primeiro a instrução e só depois testar a 
condição. 
 #include <iostreamh> 
 
 // programa que soma números até o usuário escolher -1 
 int main() 
 { 
 int soma = 0, num=0; 
 cout<<"Introduza vários números. -1 para acabar"<<endl; 
 
 
 do{ 
 soma += num; 
 cin>>num; 
 } while( num != -1 ); 
 
 
 cout<<"Soma: "<<soma; 
 cin.get(); 
 } 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 18 de 27 
Penso que é com exemplos que se aprende. Parece-me que é um bom método tentar descobrir 
o que cada programa faz sozinho! Lembre-se que acompanhando um programa que está 
explicado e percebê-lo, não tem nada a ver com saber programar! uma coisa é perceber 
quando explicam, outra é criar as coisas sozinho! 
Instrução For 
A sintaxe do for é a seguinte: 
 for( <inicialização> ; <teste> ; <incremento> ) 
 <instrução> 
Programa de exemplo: 
 #include <iostream.h> 
 
 // programa que escreve o alfabeto 
 int main() 
 { 
 for( char c = 'A'; c <= 'Z' ; ++c ) { 
 cout<<' '<< c; 
 if( (c - 'A' + 1) % 4 == 0 ) cout<<endl; /* esta parte serve para mudar de linha 
 de 4 em 4 caractéres */ 
 } 
 return 0; 
 } 
É claro que em vez de um char podia-se ter um utilizado um int, ou qualquer outra coisa. Usei o 
char neste exemplo para mostrar esta potencialidade do C++. 
O for funciona assim: 
1. Primeiro, faz o que se pede na iniciação: 
 char c = 'A'; 
2. faz o teste, se for true, realiza as instruções, se for false sai do for: 
 cout<<' '<< c; 
 if( (c - 'A' + 1) % 4 == 0 ) cout<<endl; 
3. Realiza o incremento: 
 ++c; 
4. Volta ao ponto 2 
Sublinho que só se sai do for quando o teste for false! Ou seja, quando a variável c for 'Z'. De 
seguida estão vários exemplos do for. 
 #include <iostream.h> 
 
 // programa que pede um caracter e um numero(n) e escreve esse caracter n vezes 
 int main() 
 { 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 19 de 27 
 int num; char c; 
 
 
 cout<<"introduza um numero:"; cin>>num; 
 cout<<"introduza um caracter:"; cin>>c; 
 cout<<endl; 
 
 
 int i; // não é obrigatório declarar a variável dentro do for 
 for( i = 0; i < num; ++i ) 
 cout<<c; 
 
 
 cout<<endl; 
 i = 2; num += 2; // não são obrigatórios os campos do for 
 for( ; i < num; ++i ) 
 cout<<c; 
 
 
 cin.get(); 
 } 
Por vezes utiliza-se mesmo um for forever: 
 // não experimentar este programa 
 int main() 
 { 
 for( ; ; ) // forever! 
 ; 
 /* pode-se dar o caso de se ter um for sem nenhuma instrução específica 
 nesse caso utiliza-se o ';' como se mostra no exemplo. Põe-se na linha seguinte 
 para mostrar que é mesmo essa a intenção do for */ 
 } 
Não sei que mais dizer sobre o for, penso que com o que foi escrito se pode apreender o 
conceito do for. 
Aproveito para deixar um pequeno reparo: 
 // programa de exemplo sobre o scopo do for 
 int main() 
 { 
 for( int a = 0 ; ... ; ... ) { // os pontos significam qualquer coisa 
 .... 
 } 
 a = 2; // já está fora do scopo do for, dará erro? 
 } 
Pois, isso irá depender do compilador. O Visual C++, por exemplo, faz com que aquela variável 
a esteja acessível no resto do scopo da função main, não dando erro a instrução a=2; 
Mas em compiladores como o gcc a coisa já não é assim... Nesses, o scopo da variável é o do 
for! O que por acaso até é standard C++... 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 20 de 27 
 
 
Arrays em C++ 
Para introduzir o conceito dearray, vou começar por apresentar um programa simples, que não 
contém nada de novo e depois, mostro a utilidade dos arrays. O seguinte exemplo pede 3 
números ao usuário e em seguida os mostra pela ordem inversa de inserção: 
 #include <iostream.h> 
 
 // programa que lê 3 números e os escreve de ordem inversa 
 void main() 
 { 
 // declarar as variáveis 
 int a, b, c; 
 
 
 // pedir as variáveis 
 cout<<"Introduza 3 inteiros:"<<endl; 
 cin >> a >> b >> c; 
 
 
 // escrever 
 cout<<"Os numeros de ordem inversa:"<<endl 
 <<c<<b<<a; 
 
 
 cin.get(); 
 } 
Este programa cumpre a sua função sem qualquer problema. Mas imaginemos que queríamos 
fazer o mesmo com... 100 números! Teríamos de declarar 100 variáveis distintas e para lê-las... 
imaginem o código! 
Um array é um gênero de uma tabela, e podem ser de qualquer tipo. A sintaxe de um array é a 
seguinte: tipo nome_variavel[n_elementos]; e cria uma tabela de 0 a n_elementos-1. Vejamos 
agora o programa utilizando arrays. 
 #include <iostream.h> 
 
 // programa que lê n números e os escreve de ordem inversa 
 void main() 
 { 
 // declarar as variáveis 
 const int n_elementos = 3; 
 int i; 
 int a[n_elementos]; /* a variável a fica com 3 "casas". a[0], a[1] e a[2] e podemos 
 trabalhar com cada uma delas como sendo variáveis distintas */ 
 
 
 // pedir as variáveis 
 for( i=0; i<n_elementos; ++i ) { 
 cout<<"introduza o "<< i <<" Numero: "; 
 cin>>a[ i ]; 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 21 de 27 
 cout<<endl; 
 } 
 
 
 // escrever 
 for( i=n_elementos-1; i>=0; --i ) 
 cout<<a[ i ]<<endl; 
 
 
 cin.get(); 
 } 
 
 
 /* na inicialização de um array também se pode fazer o seguinte: int a[2] = { 1,2 }; o que 
 faria com que a[0]=1 e a[1]=2 */ 
Em C++ não se pode inicializar arrays com variáveis comuns, só o é possível fazer com 
constantes. Mais à frente quando falar em apontadores veremos como ultrapassar esta 
"característica". 
Chamo à atenção que a0 é diferente de a[0]. São os colchetes que indicam que se trata de um 
array. a0 é uma variável como qualquer outra. 
Mais uma vez, a melhor maneira de apreender o conceito de array, é realizar o programa e 
testá-lo. Ver como funciona! 
 #include <iostream.h> 
; 
 // programa que encontra o maior de 10 números lidos 
 void main() 
 { 
 const int n_elementos = 10; 
 int i, e[n_elementos]; 
 
 
 cout<<"Introduza 10 números: "<<endl; 
 
 
 for( i = 0 ; i < n_elementos ; ++i ) 
 cin>> e[ i ]; 
 
 
 int max = 0; // variável que irá conter o índice do valor máximo 
 
 
 for( i = 0; i < n_elementos; ++i ) 
 if( e[ i ] > e[ max ] ) 
 max = i; 
 
 
 cout<<"O maior número foi o "<< e[ max ] <<" e foi o "<< max 
 <<"º Número a ser introduzido."; 
 
 
 cin.get(); 
 } 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 22 de 27 
 
 
Arrays de caracteres 
Até agora praticamente só tratamos números. Com arrays de caracteres temos a possibilidade 
de tratar também strings. Um array de caracteres é um array normal, só que tem letras em 
cada índice. 
 #include <iostream.h> 
 
 
 void main() 
 { 
 // maneiras de inicializar arrays de caracteres 
 char s1[ 5 ] = "Olá\0"; 
 char s2[ 6 ] = { 'A', 'd', 'e', 'u', 's', '\0' }; 
 char nome[10]; 
 
 
 cout<<"Introduza o seu nome: (max 10 letras)"<<endl; 
 cin >> nome; 
 
 
 cout<< s1 << nome << endl; 
 cout<< s2; 
 
 
 cin.get(); 
 } 
Este exemplo mostra como se pode pedir uma string ao usuário e depois escrevê-la na saída 
padrão novamente. Note que todas as strings que foram inicializadas têm '\0' como último 
caractér. Todas as cadeias de caracteres em C++ têm de terminar com '\0', o caractere 
terminador. 
Não se podem atribuir arrays; não se poderia fazer nome = "Pedro"; O que se teria de fazer era 
aribuir cada casa do array com a letra correspondente. Em princípio eu devia neste Tutorial 
mostrar uma série de algoritmos para tratamento de strings, como concatenar, substituir 
letras... etc. Não o faço porque o C++ fornece ao usuário um objeto string que já faz essas 
coisas todas e onde se pode fazer string p,r; p="Pedro"; p += r; 
Este objeto será tratado mais à frente. Seja como for aconselho aos interessados que procurem 
noutro lado toda essa matéria relacionada com arrays de caracteres. 
Tabela de Caracteres Especiais 
Caracter Descrição 
\a bell, emite um som 
\b retrocesso ( backspace ) 
\0 caractér terminador 
\f início de página 
\n mudança de linha 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 23 de 27 
\r início de linha 
\t tab horizontal 
\v tab vertical 
\\ backslash 
\' plica 
\" aspas 
\ooo caractér cujo código em octal é ooo 
\xhh caractér cujo código em hexadecimal é hh 
 
 
Funções em C++ 
Já tinha dito que a função main é a primeira a ser chamada, é como se fosse o corpo do 
programa. Mas o C++ não vive só da função main e podemos criar quantas funções quisermos 
como quisermos a fazer aquilo que quisermos! 
 #include <iostream.h> 
 
 // programa que introduz as funções 
 
 
 void ola_mundo() // declaração + definição 
 { 
 cout<<"OlA Mundo!"<<endl; 
 } 
 
 
 void f1() // declaração + definição 
 { 
 cout<<"Estou na funcao f1!"<<endl; 
 } 
 
 
 void main() 
 { 
 ola_mundo(); 
 f1(); 
 cin.get(); 
 } 
O programa entra em main(), quando chega à instrução ola_mundo(); vai à procura dessa 
função e faz tudo o que ela mandar antes de prosseguir. 
Sempre usamos a palavra chave void antes da função main. O que ela indicava é que a função 
não retornava nada. Estas funções são denominadas de procedimentos. 
Se quisermos que uma função retorne qualquer coisa, mudamos o tipo de retorno. O exemplo 
seguinte mostra uma função que retorna o maior de 2 valores. 
 #include <iostream.h> 
 
 // programa que introduz as funções 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 24 de 27 
 
 int max( int a, int b ); // declaração 
 
 
 void main() 
 { 
 int v1, v2; 
 cout<<"introduza dois inteiros: "<<endl; 
 cin>> v1>> v2; 
 
 
 cout<<endl<<"O maior é "<< max(v1,v2) << endl; 
 cin.get(); 
 } 
 
 
 int max( int a, int b ) // definição 
 { 
 return a>=b ? a : b; 
 } 
A função max recebe dois valores como parâmetro, o que se vai fazer é que o compilador irá 
criar duas variáveis a e b e irá atribui-las com os valores de v1 e v2 respectivamente. É como se 
fossem criadas cópias dos valores originais. 
Todas as funções que retornam alguma coisa têm obrigatoriamente de ter a palavra return. No 
caso da função max o operador ternário irá ver qual o maior e retorna esse valor. 
Sempre que o return é chamado a função acaba, e pode ser chamado em qualquer lugar do 
programa. 
Aproveito para lançar também o conceito de variável global. Se houvesse uma variável 
declarada fora da função main ela estaria acessível em todas as funções do programa. 
Exemplo: 
 #include <iostream.h> 
 
 //variável global 
 int v1; 
 
 
 int max( int a, int b ); // declaração 
 
 
 void main() 
 { 
 int a; 
 v1 = 2; // correcto, v1 está acessível pois é global 
 } 
 
 
 void f1() // definição 
 { 
 v1 = 5; // correto, v1 está acessível pois é global 
 a = 2; // ERRO! variável declaradana função main e portanto só está acessível em 
 // main! teria de haver também uma declaração int a; nesta função para que 
 // não desse erro 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 25 de 27 
 } 
Mais uma coisa, é standard C++ que o tipo de retorno da função main seja inteiro. Há mesmo 
compiladores que não aceitam void main(). Por norma usa-se int main() { /.. / return 0; } A 
partir de agora não usarei mais void main(). 
Para solidificar o conceito de função e fazer uma revisão em tudo o que já foi falado, vou deixar 
aqui um jogo simples. O objetivo será o usuário adivinhar uma palavra que só o programa 
saberá. Não passo aqui o código pois iria ocupar muito espaço. Todas as funções e variáveis 
estão comentadas e explicadas. Tente fazer uma evolução do jogo, incluir alguns temas, mais 
palavras, por mais opções! 
Enumerações e Estruturas 
As enumerações são uma alternativa a definir constantes e, visto que em C++ são mesmo um 
tipo, são mesmo muito úteis. Exemplo: enum { GREEN, YELLOW, RED }; era o mesmo que criar 
três constantes com os valores 0, 1 e 2. Por padrão o primeiro valor de uma enum é zero. 
Exemplos: 
 enum Mes { JAN = 1, FEV, MAR, ABR, MAI, JUN, JUL, AGO, SET, NOV, DEZ }; 
 // o valor de FEV = 2, MAR = 3... por ai adiante 
 
 
 Mes mes; 
 // ... 
 
 
 switch( mes ) 
 { 
 case JAN: //... 
 break; 
 
 
 case FEV: //... 
 break; 
 } 
As enums ajudam muito em termos de raciocínio pois podemos usar palavras para descrever o 
que quisermos. Por norma as constantes são escritas com letras maiúsculas. 
Estruturas 
Uma estrutura em C servia para agrupar diferentes variáveis. Em C++ é muito mais poderosa 
dando para incluir construtores e métodos, mas destes assuntos só falarei no capítulo das 
classes. Aqui veremos as estruturas como agrupamentos de variáveis. 
 #include <iostream.h> 
 
 enum Especialidade { VENDAS, PUBLICIDADE }; 
 
 
 struct Empregado { 
 int num; 
 int idade; 
 Especialidade esp; 
 }; 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 26 de 27 
 
 
 void main() 
 { 
 // diferentes maneiras de inicalizar estruturas 
 Empregado emp1 = { 1, 35, VENDAS }; 
 Empregado emp2; 
 
 
 // utiliza-se o ponto '.' para se referenciar a cada atributo da variavel emp2 
 emp2.num = 2; 
 emp2.idade = 19; 
 emp2.esp = PUBLICIDADE; 
 
 
 cout<<"Empregados:" 
 <<endl<< emp1.num <<", "<< emp1.idade <<" anos. Especialidade: "<< emp1.esp 
 <<endl<< emp2.num <<", "<< emp2.idade <<" anos. Especialidade: "<< emp2.esp; 
 
 
 cin.get(); 
 } 
Quando se faz cout<<emp1.esp; não aparecerá escrito VENDAS, mas sim 0, que é o valor da 
constante lógica. 
Objeto String 
Como já tinha referido, o tratamento de cadeias de caracteres exigia certos algoritmos e 
conhecimento de variadas funções. Em C++ foi criado um objeto string que facilita muito a 
tarefa do programador. Este já não precisa de se preocupar com os arrays dinâmicos de 
caracteres e ganha inclusive em eficiência. 
 #include <string.h> // necessário para se ter acesso ao objeto string 
 #include <iostream> 
 
 // demonstração do uso de strings 
 int main() 
 { 
 string nome, sobrenome; 
 
 
 cout<<"Introduza o seu nome:"<<endl; 
 cin >> nome; 
 
 
 cout<<"Então " + nome + ", que tal este Tutorial? :) "<<endl; 
 
 
 cout<<"Qual o seu último nome?"<<endl; 
 cin >> sobrenome; 
 
 
 sobrenome = " " + sobrenome; // para ficar " Sobrenome" 
 nome += sobrenome; // para ficar "Nome Sobrenome" 
 
 
Curso de Rede de Comutadores 
Algoritmo e Estrutura de Dados Apostila de C++ 
 
Página 27 de 27 
 cout<<"O seu nome completo é: "<< nome; 
 
 
 cin.get(); 
 return 0; 
 } 
Penso que este exemplo demonstra algumas das facilidades dadas pelo objeto string. De fato, 
tratar strings como um objeto em vez de como um array de caracteres é mesmo muito prático. 
Acesso Arquivos 
A sintaxe de escrita e leitura num Arquivo de texto é igual àquela usada no cout e no cin, só 
que desta vez somos nós que declaramos as variáveis, com o Arquivo pretendido. Para se ler de 
um Arquivo usa-se um objecto ifstream( de input file stream ) e para escrita usa-se o ofstream 
( de output file stream ). Vejamos o seguinte exemplo: 
 #include <fstream.h> // necessário para se ter acesso a Arquivos 
 #include <iostream.h> 
 
 // demonstração de escrita e leitura em Arquivos 
 int main() 
 { 
 char aux[10]; 
 
 
 // criar o Arquivo 
 ofstream out("output_file.txt"); 
 // agora irá escrever no Arquivo 
 out << "Arquivo criado recorrendo à biblioteca fstream do C++"<<endl; 
 // fechar o Arquivo 
 out.close(); 
 
 
 // abrir novamente o Arquivo,mas agora para leitura 
 ifstream in("output_file.txt"); 
 // ler e escrever no standard input 
 while( in >> aux ) // enquanto houver alguma coisa para ler 
 cout<<aux<<" "; 
 
 
 cout<<endl; 
 cin.get(); 
 return 0; 
 } 
Não é necessário fechar o Arquivo in porque ele é fechado automaticamente quando a função 
em que está acaba. Falando de acesso a Arquivos em modo texto, não há muito mais para 
dizer, mas deixo só mais um exemplo, que por ser um pouco grande, não passo aqui. Esse 
programa irá pedir um caractere ao usuário e irá mostrar o seu número de ocorrências num 
determinado Arquivo.

Outros materiais