Buscar

O QUE É C++ ALGORITMO

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 66 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 66 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 66 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

ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 1
O QUE É O C++ 
 (Apostila retirada do site: http://www.linhadecodigo.com.br/artigos.asp?id_ac=331) 
 
INTRODUÇÃO 
A linguagem de programação C++ é, na verdade um superconjunto da linguagem de 
programação C (seu primeiro nome foi "C com Classes"). A razão da linguagem C ter sido 
chamada de C é simplesmente porque ela foi sucessora de uma linguagem chamada B, 
desenvolvida por Ken Thompson em 1970 e que rodava em um DEC PDP-7, um computador 
muito menos potente do que um PC moderno. O sistema operacional UNIX original rodava 
naquela máquina, e foi ali também onde o B nasceu (o B em si foi o sucessor de uma 
linguagem chamada BCPL, escrita por Martin Richards). 
No entanto, o B era um tanto quanto restrito. Em 1972 Dennis Ritchie e Ken Thompson 
criaram a Linguagem C para aumentar o poder do B. O C não se tornou popular imediatamente 
após sua criação. Na verdade, ele permaneceu como um assunto quase esotérico pelos seis 
anos seguintes. Em 1978, Brian Kernighan e Dennis Ritchie escreveram o famoso "The C 
Programming Language", o qual tenho um exemplar original em Inglês da 1ª. Edição, 
obrigado. Este livro simplesmente mudou tudo. Com a divulgação do C houve uma explosão de 
interesse, e a linguagem foi implementada em computadores de 8 bits que rodavam o sistema 
operacional CP/M. Mas foi o lançamento do IBM PC, em 1981, que realmente deu impulso ao 
C. Quando a revolução do PC começou, o C estava em uma posição privilegiada para 
aproveitá-la. À medida que o número de PC's explodia, também explodia o número de usuários 
do C. 
O C libertou-se de seu ambiente UNIX original e tornou-se uma linguagem "popular" para 
microcomputadores. Vale a pena salientar que ele se tornou popular por uma razão muito boa: 
os programadores gostaram de usá-lo. Ao contrário de outras linguagens, o C dava ao 
programador grande controle sobre o computador, tal controle, no entanto, traz também a 
responsabilidade: há muitas coisas que você pode fazer em C que arruinarão seu programa ou 
travarão seu computador. Ou seja, você pode fazer em C coisas que outras linguagens jamais 
permitiriam. Os programadores gostaram disso, imagine quem não gostaria poder fazer 
praticamente tudo com um computador! O C tornou-se uma ferramenta e não um obstáculo. O 
C tornou-se a combinação perfeita entre o controle e poder de programação. 
À medida que a popularidade do C crescia, crescia também o número de aplicativos escritos 
em C. 
Depois de certo tempo, os programas em C ficavam cada vez maiores e algumas pessoas 
começaram a achar que as construções de programação padrão simplesmente não estavam à 
altura da tarefa. Uma solução seria tornar os programas mais modulares, através do uso de 
funções. No entanto algumas funções acabavam precisando compartilhar dados, outras 
precisavam coordenar seu trabalho com outras e, de novo, era possível acabar precisando ter 
de guardar na cabeça dúzias de coisas ao mesmo tempo. Aí então apareceu o Dr. Bjarne 
Stroustrup e desenvolveu o C++, inspirado em parte por outras linguagens, como o Simula67, 
Smalltalk, até hoje considerada uma das mais puras linguagens OO. 
O trecho de uma entrevista com o Dr. Bjarne Stroustrup: 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 2
"Inventei C++, escrevi suas definições preliminares e produzi sua primeira implementação. 
Escolhi e formulei os critérios de projeto para C++, projetei seus principais recursos e era 
responsável pelo processamento de propostas de extensão no comitê de padrões C++". 
Acho que ninguém melhor como referência na linguagem que o Dr. Bjarne. Mais detalhes 
sobre ele, acesse http://www.research.att.com/~bs/homepage.html 
O nome C++ foi criado por Rick Mascitti em 1983, o nome representa um incremento 
(operador ++ de incremento no C) na linguagem C. A linguagem não foi chamada de D porque 
é uma extensão da linguagem C. No início não havia documentação de projeto do C++, nem 
comitê para aprovação dos padrões C++. Em 1987 (ano que comecei a me dedicar em 
programação de computadores) com a explosão do C++ foi-se necessário que a padronização 
formal do C++ acontecesse. Após vários anos e várias propostas de padronizações, em 1995 
foi divulgado um projeto de padrão inicial para revisão pública e em 1998 um padrão 
internacional formalmente aprovado para C++. 
Bem pessoal, acho que agora todos conhecem um pouco da história do C++, vamos dar 
prosseguimento ao nosso estudo. 
Vamos agora abordar uma visão geral do C++, sem entrar em detalhes minuciosos de 
definição da linguagem. O objetivo é fornecer uma visão geral de C++ e as principais técnicas 
para usá-la. Logo nos próximos artigos da série "Iniciando em C++" vamos fornecer 
informações detalhadas sobre o que está descrito abaixo neste artigo. 
O que estamos passando daqui pra frente é uma visão geral do C++, ou seja, da linguagem de 
programação C++, e não de um pacote de desenvolvimento, seja ele, Visual C++, C++ 
Builder, C++.NET VS.NET, GCC (Unix). Estes próximos artigos descreverão o C++ ISO/ANSI. 
Depois após você estiver familiarizado com o C++, vamos tomar um outro rumo, que é o 
pacote da Microsoft VS.NET C++ e MS Visual C++ 6.0. 
No próximo tópico, iniciaremos nossa série propriamente dita, e é imprescindível que você que 
deseja aprender C++, tenha alguns conhecimentos de Orientação a Objeto, abstração de 
dados, etc. 
O que é o C++ 
O C++ é uma linguagem de uso geral, com uma tendência para a programação de sistemas e 
que: 
• É uma linguagem C melhorada; 
• Suporta abstração de dados; 
• Suporta programação orientada a objetos; 
• Suporta programação genérica; 
Como mencionei acima, não vamos tentar adivinhar qual é o sistema operacional que você 
está utilizando, vamos aprender o C++ ISO/ANSI padrão, que a partir de agora será chamado 
de C++. Nesta etapa não vamos fazer referências a janelas, listbox, textbox, gráficos, etc., ou 
seja, tudo o que depender de sistema operacional. Vamos utilizar nesta fase a 'saída padrão', 
ou seja, a console. 
Compilador e Editor 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 3
Como um grande fã da Microsoft, não poderia deixar de utilizar as ferramentas MS, então para 
a parte prática, vamos utilizar o VS.NET para isso. Quem não tiver o VS.NET, poderá também 
utilizar o Visual C++ 6.0 ou C++ Builder da Borland, ou quem sabe ainda, algum outro 
compilador Unix/Linux de sua preferência. 
Todos os projetos que vamos desenvolver agora serão baseados em uma console DOS, ou 
seja, uma Win32 Console Application. 
Começando um novo Projeto 
Acho que já está na hora de começar, vamos lá. Como estamos usando o VS.NET 2003, vamos 
iniciar um novo projeto. Selecione o menu File->New->Project e em seguida será apresentada 
a seguinte tela: 
 
Você deverá selecionar sempre Visual C++ Projects->Win32 Console Project 
ATENÇÃO: Se estiver utilizando o VS.NET 2003, atenção para a seleção de aplicações Win32 e 
não aplicações .NET. 
Você deverá estar perguntando agora, porque aplicações Win32 e não aplicações .NET??? 
Simples, porque as aplicações .NET utilizam as Managed Extensions, ou seja, extensões 
gerenciadas, que de uma certa forma encapsulam as funcionalidades do C++ padrão. E o 
nosso objetivo agora é o aprendizado do C++ padrão. 
Logo mais adiante no nosso curso, estarei explicando outros tipos de aplicações, mas por 
enquanto vamos utilizar Win32 Console Project ou para o Visual C++ 6.0 Win32 Console 
Application. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 4
Após selecionar o tipo de projeto, você deverá selecionar Project Empty. 
Obs.: No VC++.NET você deverá selecionar Project Settings para alterar esta opção. Caso não 
venha a selecionar Project Empty o VC++ criaráuma classe com uma aplicação Hello World já 
definida, que por enquanto não utilizaremos. 
Ciclo de Desenvolvimento 
Se todos os programas funcionassem logo na primeira vez que fosse testado, o ciclo de 
desenvolvimento completo seria o seguinte: escrever o programa, compilar o código fonte, 
vincular o programa e executá-lo. Infelizmente, quase todos os programas, 
independentemente do grau de complexidade que apresente, podem e conterão erros (Lei de 
Murphy), mais conhecidos como bugs. Alguns erros farão com que a compilação falhe, outros 
farão com que a vinculação ou linkedição não funcione e haverá aqueles que só darão 
problema quando o programa for executado. 
Independentemente do tipo de erro com o qual você se depare, corrija-o; sua correção 
envolve a edição do código-fonte, uma nova compilação, uma nova vinculação e por fim uma 
nova execução do programa. Atualmente com as novas versões do VC++ (.NET e VS 6.0) é 
perfeitamente possível editar o código enquanto se depura a aplicação, e uma compilação 
incremental é feita. Não recomendo esta prática, exceto casos particulares, pois algumas 
referências de ponteiros poderão ser perdidas e seu sistema ficará instável. 
Nosso primeiro Programa em C++ 
Não poderia deixar de ser, afinal todos os autores citam o exemplo seja em qualquer 
linguagem, o nosso tradicional "Alo Mundo" ou podemos utilizar "Hello World". Não vamos fugir 
à regra. 
Após criar o projeto vazio, selecione o menu File->New e selecione C++ Source File. (para 
VC++ 6.0) e selecione File->Add New Item e selecione C++ Source File (VC++.NET) Agora 
digite o código abaixo: 
#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
 cout << "Olá Mundo!\n"; 
 return 0; 
} 
Quando tiver digitado o texto acima, selecione a opção Salvar. 
Na C++ todos os caracteres, incluindo os sinais de pontuação, são de fundamental importância 
e devem ser digitados com absoluta precisão. Além disso, a C++ faz distinção entre letras 
maiúsculas e minúsculas; portanto, há diferença entre Return e return. 
Para compilar e executar o programa acima, tecle F5 ou CTRL-F5 (Visual Studio 6.0 ou .NET) 
para executar e esperar que o usuário tecle algo para continuar, permitindo ver a saída da 
console. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 5
Quanto às funcionalidades de cada ambiente de desenvolvimento, sugerimos você de dar uma 
breve leitura no manual do ambiente utilizado para verificar como se compila um programa, 
como se depura um programa, etc. 
DICA: No Visual Studio, a tecla F5 executa o programa, compilando-o se necessário e fazendo 
a linkedição do mesmo. Para Compilar um programa somente, selecione a opção Compile do 
menu Build. 
Erros de Compilação 
Os erros em tempo de compilação podem ocorrer por uma série de razões. Geralmente, eles 
são decorrentes de uma pequena inversão de letras em uma palavra ou outro pequeno erro 
cometido acidentalmente. Os bons compiladores não apenas lhe dirão o que aconteceu de 
errado, como também identificarão o local exato em que houve um erro de código. Os 
melhores compiladores do mercado chegarão até a sugerir uma solução para o problema! 
ATENÇÃO: Embora os compiladores modernos tentem localizar a linha em que está o erro, a 
ausência de um ponto-e-vírgula ou de uma chave de fechamento pode confundir o compilador 
e você pode achar que ele está apontando para uma linha que não apresenta problema. Tome 
muito cuidado com os erros de pontuação, cuja detecção pode ser mais difícil. 
Você pode testar este programa colocando intencionalmente um erro em seu programa. Se o 
Exemplo01.cpp for executado sem problema, edite-o agora e remova a chave de fechamento 
existente no final do código. Seu programa terá a seguinte aparência: 
#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
 cout << "Hello World!\n"; 
 return 0; 
} 
Recompile o seu programa a fim de ver um erro semelhante: 
Exemplo01.cpp(11): fatal error C1075: end of file found before the left brace '{' at 
Exemplo01.cpp(7)' was matched 
Esta mensagem de erro é do VC++.NET, no VC++ 6.0 é diferente, mas tem o mesmo 
significado. 
Algumas vezes, os erros apenas o aproximavam do problema. Se o compilador pudesse 
identificar todos os erros com exatidão, ele mesmo corrigiria o código. 
Neste artigo, você aprendeu a preparar o programa em C++, lembrando que este 
procedimento se aplica ao VC++ 6.0 e VC++.NET. Caso você tenha alguma dúvida sobre a 
utilização de outros ambientes de desenvolvimento, verifique na documentação do C++ do 
ambiente para saber como faze-lo, caso necessário entre em contato, que terei imenso prazer 
em ajudá-lo. 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 6
 
INSTRUÇÕES 
 
INTRODUÇÃO 
Neste artigo da série Iniciando em C++ você aprenderá o que são instruções e expressões e 
como se trabalha com operadores. 
INSTRUÇÕES 
Na verdade, um programa nada mais é do que um conjunto de comandos executados em 
seqüência. Uma instrução controla a seqüência de execução, avalia uma expressão ou não faz 
nada (a instrução null). Todas as instruções em C++ terminam com um ponto-e-vírgula. 
Uma instrução simples e comum é uma atribuição: 
x = a + b; 
Ao contrário da álgebra, essa instrução não significa que x é igual a a+b. Na verdade, ela é 
lida da seguinte maneira: "Atribua o valor da soma de a e b a x." ou "atribua a x, a + b". Muito 
embora essa instrução faça duas coisas, ela é uma instrução e, portanto, tem um ponto-e-
vírgula. O operador de atribuição atribui qualquer coisa que esteja à direita de qualquer coisa 
que esteja à esquerda. 
ESPAÇO EM BRANCO 
Os espaços, juntamente com as tabulações e as novas linhas, são chamados de espaços em 
branco. Em geral, o espaço em branco extra é ignorado pelo compilador; qualquer lugar no 
qual você veja um espaço pode colocar uma tabulação ou uma nova linha sem maiores 
problemas. A única finalidade de se incluir um espaço em branco é tornar o programa mais 
legível para os humanos; o compilador não perceberá a sua existência. 
A instrução de atribuição poderia ter sido digitada como 
x=a+b; 
ou como 
x = a+ b; 
DICA: Use espaços em branco para tornar o código mais legível. Embora essa última variação 
seja aceita sem o menor problema, ela também é uma grande tolice. O espaço em branco 
deve ser usado para tornar os programas mais legíveis e fáceis de manter, mas também pode 
ser usado para criar um código indecifrável. Nesse caso, como em tudo o mais, a C++ fornece 
o poder; o julgamento é você quem faz. 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 7
INSTRUÇÕES COMPOSTAS 
Qualquer que seja o lugar no qual você coloque uma instrução simples, coloca também uma 
instrução composta. Instrução composta é uma instrução que comece com uma chave de 
abertura ({) e termine com uma chave de fechamento (}). 
Embora todas as instruções em uma instrução composta devam terminar com um ponto e 
vírgula, a instrução composta em si não termina com um ponto-e-vírgula. Por exemplo: 
{ 
 temp = a; 
 a = b; 
 b = temp; 
} 
Essa instrução composta alterna os valores nas variáveis a e b. 
Expressões 
Qualquer coisa que retorne um valor é uma expressão em C++. 
Operadores 
Um operador é um símbolo que faz com que o compilador execute uma ação. 
Operador de atribuição 
O operador de atribuição (=) faz o operando à esquerda do operador de atribuição ter seu 
valor alterado para o valor à direita do operador de atribuição. A expressão 
x = a + b; 
atribui o valor que resulta da adição de a e b ao operando x. 
Um operando que pode estar legalmente à esquerda de um operador de atribuição é chamado 
de um valor e (esquerda). O que pode estar à direita é chamado(como pode imaginar) de 
valor d. 
As constantes são valores d; elas não podem ser valores e. Dessa maneira, você pode digitar 
x = 35; // OK 
mas não pode digitar 
35 = x; // erro, isso não é um valor e! 
Valores E e valores D - Um valor E é um operando que pode estar à esquerda de uma 
expressão. Um valor D é um operando que pode estar à direita de uma expressão. Observe 
que todos os valores E são valores D, mas nem todos os valores D são valores E. Um exemplo 
de valor D que não é um valor E é uma literal. Desse modo, você pode digitar x = 5;, mas não 
pode digitar 5 = x; 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 8
Operadores matemáticos 
Existem cinco operadores matemáticos: adição (+), subtração (-), multiplicação (*), divisão 
(/) e módulo (%). Adição, subtração e multiplicação agem como você está acostumado. O 
mesmo não acontece com a divisão. 
A divisão de um inteiro apresenta algumas diferenças em relação à divisão cotidiana. Quando 
você divide 21 por 4, o resultado é um número real (um número com fração). Os inteiros não 
aceitam frações e, por essa razão, o 'resto' é descartado. O valor retornado por 21 / 4 é 5. 
O operador de módulo (%) retorna o valor do resto da divisão do inteiro. 
Portanto, 21 % 4 é 1, pois 21/4 é 5 com um resto de 1. 
Surpreendentemente, a descoberta do módulo tem lá sua utilidade. Por exemplo, pode ser que 
você deseje imprimir uma instrução a cada dez ações. 
Sabe-se, no entanto, que qualquer número % 10 retornará 0 se o número for um múltiplo de 
10. Assim, 20 % 10 é zero. 30 % 10 é zero. 
Instruções 
 
Combinando os operadores de atribuição e matemáticos 
Não é raro querer adicionar um valor a uma variável e, em seguida, atribuir o resultado à 
variável. Em C++, você pode digitar 
minhaIdade += 2; 
Essa instrução aumenta o valor em minhaIdade por 2. 
Incremento e decremento 
O valor mais comum a ser adicionado (ou subtraído) e, em seguida, retribuído a uma variável 
é 1. Em C++, a adição de 1 a um valor é chamada de incrementação e a subtração de 1 é 
chamada de decrementação. Há operadores especiais para executar essas ações. 
O operador de incremento (++) acrescenta 1 ao valor da variável e o operador de decremento 
(--) subtrai 1. Dessa forma, se você tem uma variável C, e deseja incrementa-la, tem que usar 
esta instrução: 
C++; // começa com C e a incrementa em 1 
Prefixo e sufixo 
Tanto o operador de incremento (++) como o operador de decremento (--) têm duas versões: 
prefixo e sufixo. Prefixo - O operador é digitado antes do nome da variável (++minhaIdade). 
Sufixo - O operador é digitado depois do nome da variável (minhaIdade++). 
Em uma instrução simples, faz pouca diferença usar um ou outro, mas, em uma instrução 
complexa, quando você incrementa (ou decrementa) uma variável e em seguida atribui o 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 9
resultado a outra variável, tal ordem é de grande importância. O operador de prefixo é 
avaliado antes da atribuição e o sufixo é avaliado depois. 
A semântica do prefixo é esta: incrementa o valor e, em seguida, o recupera. A semântica do 
sufixo é diferente: recupera o valor e, em seguida incrementa o original. 
Isso em princípio pode parecer confuso, mas se X for um inteiro cujo valor é 5 e você digitar 
int a = ++x; 
estará instruindo o compilador a incrementar X (tornando-o 6) e, em seguida, recuperar o 
valor e atribuí-lo a A. Sendo assim, A agora é 6 e X agora é 6. 
 
Se, depois disso, você digitar: 
int b = x++; 
estará instruindo o compilador a recuperar o valor de X (6) e atribuí-lo a B, e em seguida, 
retornar e incrementar X. Assim, B agora é 6, mas X agora é 7. O código abaixo demonstra o 
uso e as implicações de ambos os tipos. 
 
Nas linhas 8 e 9, duas variáveis de inteiro são declaradas e cada uma delas é inicializada com 
o valor 39. O valor delas é impresso nas linhas 11 e 12. 
Na linha 14, minhaIdade é incrementada usando o operador de incremento de sufixo, e na 
linha 15, suaIdade é incrementada usando o operador de incremento de prefixo. Os resultados 
são impressos nas linhas 18 e 19 e são idênticos (ambos são 40). 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 10
Na linha 21, minhaIdade é incrementada como parte da instrução de impressão, usando o 
operador de incremento de sufixo. Como é o sufixo, o incremento acontece depois da 
impressão e, portanto, o valor 40 é impresso novamente. Por outro lado, na linha 22, 
suaIdade é incrementada por meio do uso do operador de incremento de prefixo. Portanto, ele 
é incrementado antes de ser impresso e o valor é exibido como 41. 
Finalmente, nas linhs 24 e 25, os valores são impressos novamente. Como a instrução de 
incremento foi concluída, o valor em minhaIdade agora é 41, pois esse é o valor em suaIdade. 
E este valor não é a minha idade real. J 
Precedência 
Na instrução complexa, 
x = 5 + 3 * 8; 
o que é executado primeiro, a adição ou a multiplicação? Se a adição for executada primeiro, a 
resposta será 8 * 8, ou seja, 64. Se a multiplicação for executada primeiro, a resposta será 5 
+ 24, ou seja, 29. 
A multiplicação tem uma precedência maior do que a adição e, portanto, o valor da expressão 
acima é 29. 
Quando dois operadores matemáticos têm a mesma precedência, eles são executados da 
esquerda para a direita. Dessa forma, em: 
x = 5 + 3 + 8 * 9 + 6 * 4; 
a multiplicação é a primeira operação a ser avaliada, da esquerda para a direita. Assim, 8*9 = 
72, e 6*4 = 24. Agora a expressão é esta: 
x = 5 + 3 + 72 + 24; 
Agora a adição, da esquerda para a direita, é 5 + 3 = 8; 8 + 72 = 80; 80 + 24 = 104. 
Tome cuidado com isso. Alguns operadores, como o de atribuição, são avaliados da direita 
para a esquerda! Em qualquer caso, e se a ordem de procedência não atender a suas 
necessidades? Considere a expressão 
TotalSegundos = NumMinutosEsperar + NumMinutosTipo * 60; 
Nessa expressão, você não deseja multiplicar a variável NumMinutosdoTipo por 60 e, em 
seguida adiciona-la a NumMinutosEsperar. Você deseja incluir as duas variáveis de modo a 
obter o número total de minutos e, em seguida, multiplicar esse número por 60 para obter o 
total de segundos. 
Nesse caso, você usa parênteses para alterar a ordem de precedência. Os itens entre 
parênteses são avaliados como tendo uma precedência maior do que qualquer outro operador 
matemático. Dessa forma, 
TotalSegundos = (NumMinutosEsperar + NumMinutosTipo) * 60; 
apresentará o resultado desejado. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 11
Aninhando parênteses 
Em operações complexas, você precisará aninhar parênteses um dentro do outro. Por 
exemplo, pode necessitar computar o total de segundos e, em seguida, computar o número 
total de pessoas que estão envolvidas antes de multiplicar os segundos pelas pessoas: 
TotalPessoasSegundos = (((NumMinutosEsperar + NumMinutosdoTipo) * 60) * 
(PessoasNoTrabalho + PessoasDeFerias)); 
Essa complicada expressão é lida de dentro para fora. Primeiro, NumMinutosEsperar é 
adicionado a NumMinutosdoTipo, pois esses são os parênteses mais internos. Em seguida, 
essa soma é multiplicada por 60; PessoasNoTrabalho é adicionado a PessoasDeFerias. 
Finalmente, o número total de pessoas encontrado é multiplicado pelo número total de 
segundos. 
Esse exemplo suscita uma questão importante. Essa expressão é fácil de o computador 
entender, mas muito difícil de uma pessoa ler, entender ou modificar. Veja a seguir a mesma 
expressão digitada de uma outra maneira, usando algumas variáveis de inteiro temporárias: 
TotalMinutos = NumMinutosEsperar + NumMinutosDoTipo; 
TotalSegundos = TotalMinutos * 60; 
TotalPessoas = PessoasNoTrabalho + PessoasDeFerias;TotalPessoasSegundos = TotalPessoa * TotalSegundos; 
Esse exemplo demanda mais tempo para ser digitado e usa mais variáveis temporárias do que 
o exemplo anterior, mas é bem mais fácil de entender. Preceda-o com um comentário para 
explicar o que o código faz e mude o 60 para uma constante simbólica. Assim terá um código 
que é fácil de entender e manter. 
A natureza da verdade 
Nas versões anteriores de C++, todas as verdades e falsidades eram representadas por 
inteiros, mas o novo padrão ISO/ANSI introduziu um novo tipo: bool. Esse novo tipo tem dois 
valores possíveis, false ou true. 
Todas as expressões podem ser avaliadas conforme sua verdade ou falsidade. As expressões 
que matematicamente são avaliadas como zero retornarão false e todas as outras retornarão 
true. 
Operadores relacionais 
Os operadores relacionais são usados para determinar se dois números são iguais ou se um é 
maior ou menor que o outro. Todas as expressões relacionais retornam true ou false. 
Existem seis operadores relacionais: igualdade (==), menor que (<), maior que (>), maior ou 
igual a (>=), menor ou igual a (<=) e diferente (!=). 
Nesta lição você aprendeu o que são instruções, expressões e como se trabalha com 
operadores. O código acima pode ser baixado clicando aqui. 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 12
Variáveis 
 
Introdução 
Neste artigo da série Iniciando em C++ você aprenderá a declarar e definir variáveis e 
constantes, a atribuir e manipular valores às variáveis, e a remeter o valor de uma variável 
para a tela. 
O que é uma variável? 
Os programas precisam de uma maneira para armazenar os dados que usam. As variáveis e 
constantes oferecem uma variedade de formas para se trabalhar com números e outros 
valores. 
Do ponto de vista de um programador, uma variável é um local na memória do computador no 
qual você pode armazenar um valor e a partir do qual você posteriormente pode recuperá-lo. 
Para entender esse conceito, você necessita de uma noção básica da maneira como a memória 
do computador funciona. A memória do computador pode ser entendida como uma série de 
cubículos, todos eles alocados lado a lado em uma longa fileira. Cada cubículo - ou localização 
da memória - é numerado sequencialmente. Esses números são chamados de endereços de 
memória. 
As variáveis têm, além de endereços, nomes. Por exemplo, você pode criar uma variável 
chamada minhaIdade. Sua variável é um rótulo aplicado a um desses cubículos, cuja finalidade 
é permitir que sejam localizados facilmente, sem saber o seu real endereço de memória. 
Reservando memória 
Quando você define uma variável em C++, deve informar ao compilador não apenas o seu 
nome, mas também o tipo de informação que ela contém: inteiro, caractere, entre outros. Nós 
chamamos isso de tipo da variável. O tipo da variável informa ao compilador o espaço que a 
memória dispõe para armazenar o valor da variável. 
Cada cubículo tem 1 byte. Se o tipo de variável que você quer criar tiver 2 bytes, ela precisará 
de 2 bytes de memória, ou dois cubículos. O tipo da variável (por exemplo, INT) informa ao 
compilador o espaço em memória (quantos cubículos) reservado para a variável. 
Como os computadores usam bits e bytes para representar valores, e como a memória é 
medida em bytes, é importante que você entenda e se sinta familiarizado com esses conceitos. 
Tamanho dos inteiros 
Uma variável char (usada para armazenar caracteres) costuma ter 1 byte. Um short int tem 2 
bytes na maioria dos computadores, um long int geralmente tem 4 bytes e um int (sem a 
palavra short ou long) pode ser de 2 ou 4 bytes. Se você estiver executando o Windows 95, 
Windows 98, NT, 2000 ou XP, pode levar em consideração que sua int tem 4 bytes desde que 
esteja usando um compilador moderno. 
Abaixo, o código o ajudará a determinar o tamanho exato desses tipos no seu computador 
usando seu próprio compilador. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 13
#include <iostream> 
int main() 
{ 
 cout << "O tamanho de um int e:\t\t" << sizeof(int) << "bytes.\n"; 
 cout << "O tamanho de um um short int e:\t" << sizeof(short) <<"bytes.\n"; 
 cout << "O tamanho de um long int e:\t" << sizeof(long) <<"bytes.\n"; 
 cout << "O tamanho de um char e:\t\t" << sizeof(char) <<"bytes.\n"; 
 cout << "O tamanho de um bool e:\t\t" << sizeof(bool) <<"bytes.\n"; 
 cout << "O tamanho de um float e:\t\t" << sizeof(float) <<"bytes.\n"; 
 cout << "O tamanho de um double e:\t" << sizeof(double) <<"bytes.\n"; 
return 0; 
} 
signed e unsigned 
Além disso, a maioria desses tipos vem em duas variedades: signed e unsigned. A idéia aqui é 
que algumas vezes você precisa de números negativos e algumas vezes não. Os inteiros (short 
e long) sem a palavra unsigned são tidos como signed. Os inteiros signed são negativos ou 
positivos. Os inteiros unsigned são sempre positivos. 
DICA: Use int em variáveis numéricas. Na maioria dos programas, na maioria das vezes, basta 
que você afirme que as variáveis numéricas são int - que são inteiros signed. 
Tipos de variávies fundamentais 
Diversos outros tipos de variáveis são construídos na C++. Eles podem ser divididos em 
variáveis de inteiro (o tipo discutido até agora), variáveis de ponto flutuante e variáveis de 
caractere. 
Variávies de ponto flutuante e de caractere - As variáveis de ponto flutuante têm valores 
que podem ser expressos como frações, ou seja, que são números reais. As variáveis de 
caractere armazenam um byte e são usadas para armazenar 256 caracteres e símbolos dos 
conjuntos de caracteres ASCII e ASCII estendidos. 
O conjunto de caracteres ASCII - O conjunto de caracteres padrão usado em 
computadores. ASCII é o acrônimo de American Standard Code for Information Interchange. 
Quase todos os sistemas operacionais suportam ASCII, embora muitos também sejam 
compatíveis com outros conjuntos de caracteres como, por exemplo, o EBCDIC. 
Os tipos de variáveis usadas em programas C++, são descritos na Tabela abaixo, Essa tabela 
mostra o tipo de variável, o espaço que ele ocupa na memória e os tipos de valores que 
podem ser armazenados nessas variáveis. Os valores que podem ser armazenados são 
determinados pelo tamanho dos tipos de variáveis, e consequentemente pelo tipo de 
computador que está sendo utilizada a aplicação. Lembrando que estes são alguns dos tipos 
padrões do C++ ANSI. 
Tipo Tamanho Valores 
unsigned short int 2 bytes 0 a 65.535 
short int 2 bytes - 32.768 a 32.767 
unsigned short int 4 bytes 0 a 4.294.967.295 
long int 4 bytes -2.147.483.648 a 2.147.483.647 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 14
char 1 byte 256 valores de caractere 
bool 1 byte Verdadeiro ou falso 
float 4 bytes 1,2e-38 a 3,4e38 
double 8 bytes 2,2e-308 a 1,8e308 
DICA: Use apenas int . Se você estiver criando um int , não se preocupe com short versus 
long; use apenas int. Com um compilador moderno, isso criará um long int que será 
satisfatório em 99% das situações. 
Definindo uma variável 
Você cria, ou define, uma variável instruindo o seu tipo, seguido por um ou mais espaços, pelo 
nome da variável e um ponto-e-vírgula. O nome da variável pode ser virtualmente qualquer 
combinação de letras, mas não pode conter espaços. Bons nomes de variáveis mostram a você 
a finalidade delas; o uso de bons nomes facilita a compreensão do fluxo do seu programa. 
Distinção entre maiúsculas e minúsculas 
A C++ faz distinção entre letras maiúsculas e minúsculas. Em outras palavras, letras 
minúsculas e maiúsculas são consideradas diferentes. Uma variável cujo nome é idade é 
diferente de Idade que é diferente de IDADE. 
Palavras chave 
Algumas palavras são reservadas pela C++ e você não pode usá-las como nomes de variável.Essas são as palavras-chave usadas pelo compilador para controlar o seu programa. As 
palavras chaves incluem if, while, for e main. O manual do seu compilador deve fornecer uma 
lista completa, mas geralmente qualquer nome razoável para uma variável quase certamente 
não é uma palavra-chave. 
Criando mais de uma variável de cada vez 
Você pode criar mais de uma variável ao mesmo tempo em uma instrução digitando o tipo e, 
em seguida, os nomes de variável, separados por vírgulas. Por exemplo: 
unsigned int minhaIdade, meuPeso; 
// duas variáveis unsigned int 
long area, largura, tamanho; 
// três longs 
Atribuindo valores a suas variáveis 
Você atribui um valor a uma variável usando o operador de atribuição (=). Portanto, você 
atribuiria 5 como largura se digitasse: 
unsigned short largura; 
largura = 5; 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 15
Ou você poderia combinar essas etapas e inicializar largura quando defini-la por meio da 
seguinte instrução: 
unsigned short largura = 5 
Constantes 
Como as variáveis, as constantes são locais de armazenamento de dados. Mas as variáveis 
mudam; as constantes, por outro lado, como você deve ter imaginado, não mudam. 
Você deve inicializar uma constante quando ela é criada e não pode atribuir-lhe um novo valor 
posteriormente; depois que uma constante é inicializada, seu valor é, em uma palavra, 
constante. 
Constantes literais 
A C++ tem dois tipos de constantes: literais e simbólicas. 
Uma constante literal é um valor digitado diretamente em seu programa sempre que ele se 
fizer necessário. Por exemplo: 
int minhaIdade = 39; 
minhaIdade é uma variável do tipo int; 39 é uma constante literal. Você não pode atribuir um 
valor a 39 e seu valor não pode ser alterado; 
Constantes simbólicas 
Uma constante simbólica é uma constante que é representada por um nome, assim como uma 
variável também é. Ao contrário de uma variável, no entanto, depois que uma constante é 
inicializada, seu valor não pode ser alterado. 
Se o seu programa tem uma variável inteira cujo nome é estudantes e outra cujo nome é 
classes, você pode computar o número de estudantes que possui com base em um número 
conhecido de classes; se você soubesse que há 15 estudantes por classe: 
estudantes = classes * 15; 
Nesse exemplo, 15 é somente uma constante literal. Seu código seria mais fácil de ler, e mais 
fácil de manter, se você substutuísse uma constante simbólica por este valor: 
estudantes = classes * estudantesPorClasses; 
Se você decidisse mudar o número de estudantes em cada classe, poderia fazê-lo onde a 
constante estudantesPorClasses é definida sem ter que fazer uma mudança em todos os locais 
em que usou este valor; 
Definindo constantes com #define 
Para definir uma constante à forma antiga, odiável e politicamente incorreta, você digitaria a 
seguinte instrução: 
#define estudantesPorClasses 15 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 16
Observe que, como estudantesPorClasses não pertence a um tipo específico (int ou char por 
exemplo), #define faz uma simples substituição de texto. Todas as vezes que o processador 
localizar a palavra estudantesPorClasses, ele colocará 15 no texto. Como o pré-processador é 
executado antes do compilador, seu compilador jamais vê a constante, ele vê o número 15; 
Definindo constantes com const 
Embora #define funcione a contento, existe uma maneira nova, melhor, menos gordurosa e 
mais saborosa, para definir constantes no C++. 
const unsigned short int estudantesPorClasses = 15; 
Esse exemplo também declara uma constante simbólica cujo nome é estudantesPorClasses, 
mas desta vez estudantesPorClasses é digitado com um unsigned short int. 
Dessa forma, você digita mais texto, mas tem suas vantagens. A maior diferença é que essa 
constante tem um tipo, e o compilador pode garantir que ele seja usado de modo compatível 
com ele. 
Constantes enumeradas 
As constantes enumeradas criam um conjunto de constantes com uma faixa de valores. Por 
exemplo, você pode declarar COR como uma enumeração e pode definir que há cinco valores 
para COR: Vermelho, Azul, Verde, Branco e Preto. 
A sintaxe de constantes enumeradas é escrever a palavra-chave enum seguida pelo nome do 
tipo, uma chave de abertura, cada um dos valores aceitos separados por uma vírgula e 
finalmente uma chave de fechamento e um ponto-e-vírgula. Veja um exemplo: 
enum COR {Vermelho, Azul, Verde, Branco, Preto}; 
Essa instrução executa duas tarefas: 
1. Torna COR o nome de uma enumeração, ou seja, um novo tipo. 
2. Torna Vermelho uma constante simbólica com o valor 0, Azul com valor 1, e assim por 
diante. 
Todas as constantes enumeradas têm um valor inteiro. Se você não especificar de outra 
maneira, a primeira constante terá o valor de 0 e os demais itens serão contados na ordem 
crescente a partir daí. No entanto, qualquer uma das constantes por ser inicializada com um 
determinado valor, e as que ainda não tiverem sido inicializadas serão incrementadas com 
base no valor que o anteceder. Desse modo, se você digitar: 
enum COR {Vermelho=100, Azul, Verde=500, Branco, Preto=700}; 
então Vermelho terá o valor 100; Azul, o valor 101; Verde, o valor 500; Branco, o valor 501; e 
Preto, o valor 700. 
Neste artigo você aprendeu a declarar e a definir variáveis e constantes e a atribuir-lhes 
valores. Nos próximos artigos estaremos utilizando os conhecimentos adquiridos na construção 
de outros módulos interessantes. 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 17
O que é um programa em C++ 
Introdução 
As partes de um programa simples 
Antes de nos aprofundarmos nos detalhes da C++, como classes e variáveis, vamos reservar 
um tempinho para termos uma noção do processo de montagem de um programa. 
O programa simples apresentado no primeiro artigo, Hello.cpp, tem muitas partes 
interessantes. Agora vamos ver o programa em detalhes. A listagem abaixo reproduz a versão 
original do Hello.cpp. 
1: #include <iostream> 
2: 
3: using namespace std; 
4: 
5: int main() 
6: { 
7: cout << "Hello World!\n"; 
8: return 0; 
9: } 
Output: 
Hello World! 
Na linha 1, o arquivo iostream é incluído no arquivo. Para o compilador é como se você tivesse 
digitado todo o conteúdo do arquivo iostream na abertura do Hello.cpp. 
Examinando o #include caractere por caractere 
O primeiro caractere é o símbolo "#", que é um sinal para o pré-processador. O pré-
processador tem como função ler o código-fonte à procura de linhas que comecem com o 
símbolo # e, quando o localiza, modifica o código de acordo com a instrução do pré-
processador. 
Include é uma instrução do pré-processador que diz o seguinte: "O que vem a seguir é um 
nome de arquivo. Localize o arquivo e leia-o agora mesmo". Os sinais <> em torno do nome 
do arquivo dizem a seguinte informação para o pré-processador: "Procure este arquivo nos 
lugares de sempre". Se o seu compilador estiver devidamente configurado, os <> farão com 
que o pré-processador procure o arquivo iostream no diretório que armazena todos os 
arquivos de cabeçalho do seu compilador. O arquivo iostream (Input-Output-STREAM) é usado 
pelo cout, que remete o texto para a tela. 
Na prática, a linha 1 incluir o arquivo iostream no programa, como se você mesmo o tivesse 
digitado. 
DICA 1: Porque no código tem <iostream> e não <iostream>? Bem no C++ atual, o arquivo 
de cabeçalho não contêm a extensão .H. Eram utilizados na versão do C++ antigo. 
DICA 2: Porque utilizar "<>" e ""? Bem caso você utilize "" o compilador buscará somente no 
path onde está o seu código. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 18
 
Análise linha a linha 
A linha 3 indica queestamos utilizando o namespace STD. Um namespace permite dividir um 
programa em regiões que mantêm suas próprias tabelas de símbolos, estas regiões são 
chamadas de regiões declarativas. A idéia por trás dos namespaces é evitar que nomes 
declarados em um programa entrem em conflito com outros nomes definidos no mesmo 
programa, uma vez que os nomes de um namespace são independentes daqueles de outros. 
O que estamos realmente fazendo na linha 3 é importar os símbolos do namespace STD para o 
espaço de nomes global. Quando importamos um símbolo para o espaço de nomes global ele 
fica disponível a todo o código do programa. Se não importarmos um símbolo e outro 
namespace, para referenciá-lo precisaremos qualifica-lo com seu namespace da seguinte 
maneira: namespace::nome. Por exemplo: std::cout. 
A linha 5 inicia o programa propriamente dito com uma função cujo nome é main(). Todos os 
programas em C++ têm uma função main(). Em geral, uma função é um bloco de código que 
executa uma ou mais ações. As funções são invocadas (alguns programadores preferem dizer 
que são chamadas) por outras funções, mas main() é especial. Quando o seu programa é 
iniciado, main() é chamada automaticamente. 
main(), como todas as outras funções deve afirmar o tipo de valor que retornará. Mais uma 
vez, main() é especial, pois retornará sempre int . Todas as funções começam com uma chave 
de abertura ({) e terminam com uma chave de fechamento (}). As chaves da função main() 
encontram-se nas linhas 6 e 9. Tudo o que estiver entre as chaves de abertura e de 
fechamento será considerado como parte integrante da função. 
cout é utilizado para imprimir uma mensagem na tela. 
Os dois caracteres finais, "\n", fazem com que cout coloque uma nova linha depois das 
palavras "Hello World!". Na linha 8 chamamos o return 0. Ela retorna o controle para o sistema 
operacional. 
A função main() termina na linha 9, com a chave de fechamento. 
Comentários 
Um comentário é um texto adicionado para explicar (para você ou outros programadores) o 
que está acontecendo com seu código. O comentário não tem efeito; serve apenas como 
documentação. 
Há dois tipos de comentários em C++. O comentário de barra dupla (//), que chamaremos de 
comentário no estilo C++, manda o compilador ignorar tudo que vem depois das barras até o 
final da linha. 
O comentário de barra-asterisco (/*), no estilo C, manda o compilador ignorar tudo o que vem 
depois até que uma marca de comentário de asterisco-barra (*/) seja detectada. 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 19
Funções 
Embora main() seja uma função incomum, pois é chamada automaticamente quando seu 
programa é inicializado. Todas as outras funções são chamadas pelo seu próprio código à 
medida que o programa é executado. 
Um programa é executado linha a linha na ordem em que aparece no código-fonte, até uma 
função ser chamada. Em seguida, o programa desvia para executar a função. Quando termina 
a função, ele retorna o controle para a linha posterior à função chamadora. 
Quando um programa precisa executar um serviço, ele chama uma função para executa-lo e, 
quando a função retorna, o programa volta para o ponto imediatamente anterior à função 
chamada. 
As funções retornam um valor ou retornam um void, o que significa que não retornam nada. 
Observe que main() sempre retorna um int. 
Uma função que inclui dois inteiros deve retornar a soma e, dessa forma, seria definida para 
retornar um valor inteiro. Uma função que se restringe a imprimir uma mensagem não tem 
nada a retornar e, portanto, seria declarada para retornar nula. 
As funções consistem em um cabeçalho e um corpo. O cabeçalho consiste, por sua vez, no tipo 
de retorno, no nome da função e nos parâmetros dessa função. O cabeçalho também é 
definido como protótipo da função. Os parâmetros de uma função permitem que os valores 
sejam passados para a função. Assim, se a função fosse adicionar dois números, os números 
seriam os parâmetros da função. Veja um exemplo abaixo: 
int Sum(int a, int b) 
Um parâmetro é uma declaração do tipo de valor que será passado; o verdadeiro valor 
passado pelo função chamadora é chamada de argumento. Muitos programadores usam esses 
dois termos, parâmetros e argumentos, com sinônimos. 
O nome da função e seus parâmetros (que é o cabeçalho sem valor de retorno) é chamado de 
assinatura da função. 
O corpo de uma função consiste em uma chave de abertura, nenhuma ou alguma(s) 
instrução(ões) e uma chave de fechamento. As instruções constituem o trabalho da função. 
Uma função pode retornar um valor usando uma instrução return. Essa instrução fará com que 
a função seja fechada. Se você não colocar uma instrução return na sua função, ela 
automaticamente retornará um void no final da função. O valor retornado deve ser do tipo 
declarado no cabeçalho da função. Abaixo segue um exemplo que demonstra uma função que 
utiliza dois parâmetros inteiros e retorna um valor inteiro. Por enquanto não vamos nos 
preocupar com a sintaxe ou o modo como os valores inteiros funcionam. 
//Listagem 2.2 Func.cpp demonstra uma função simples. 
#include <iostream> 
using namespace std; 
int Add (int x, int y) 
{ 
 cout << "Em Add(), recebeu " << x << " e " << y << "\n"; 
 return (x+y); 
} 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 20
int main() 
{ 
 cout << "Estou em main()!\n"; 
 int a, b, c; 
 cout << "Digite dois números: "; 
 cin >> a; 
 cin >> b; 
 cout << "\nChamando Add()\n"; 
 c=Add(a,b); 
 cout << "\nDe volta para main().\n"; 
 cout << "c foi definido como "<< c; 
 cout << "\nSaindo...\n\n"; 
 return 0; 
} 
A função Add() é definida na linha 3. O programa em si começa na linha 12, na qual ele 
imprime uma mensagem. O programa solicita dois números para o usuário (linhas 14 e 15). O 
usuário digita cada número, separado por um espaço, e em seguida pressiona <Enter>. Main() 
passa os dois números digitados pelo usuário como argumentos para a função Add() na linha 
18. 
O processamento desvia para a função Add(), que começa na linha 3. Os parâmetros a e b são 
impressos e, em seguida, adicionados. O resultado é retornado na linha 7 e a função retorna. 
Nas linhas 15 e 16, o objeto cin é usado para obter um número para as variáveis A e B, e cout 
é usado para remeter os valores para a tela. As variáveis e outros aspectos desse programa 
serão depurados nos próximos artigos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 21
Estrutura de um programa em C++ 
 
Provavelmente a melhor maneira de começar a aprender uma linguagem de programação é 
com um programa. Então aqui está nosso primeiro programa: 
// meu primeiro programa em C++ 
 
#include <iostream> 
 
int main () 
{
 cout << "Ola Mundo!\n"; 
 return 0; 
}
Ola Mundo! 
O lado esquerdo mostra o código-fonte de nosso primeiro programa, no qual podemos nomeá-
lo, por exemplo, como hiworld.cpp. O lado direito mostra o resultado do programa depois de 
compilado e executado. A maneira de editar e compilar um programa depende do compilador 
que você estiver usando. Dependendo se tem ou não uma interface de desenvolvimento e da 
versão. Consulte o manual ou a ajuda inclusa no seu compilador se tiver dúvidas em como 
compilar um programa de console em C++. 
O programa anterior é o primeiro programa que a maioria dos aprendizes codificam, e o 
resultado é a impressão da frase "Ola Mundo!" na tela. É um dos programas mais simples que 
pode ser codificado em C++, mas já inclui os componentes básicos que todos os programas 
em C++ possuem. Nós iremos analisá-los um por um: 
// meu primeiro programa em C++
Essa é uma linha de comentário. Todas as linhas que iniciarem com duasbarras (//) são 
consideradas comentários e não tem nenhum efeito no comportamento do programa. Elas 
podem ser usadas pelo programador para incluir explicações ou observações curtas dentro 
do próprio código. Nesse caso, essa linha é uma breve descrição do que o nosso programa 
faz. 
#include <iostream>
Comandos que começam um sinal de numeração (#) são diretivas do pré-processador. Elas 
não são linhas de código executáveis, mas indicações para o compilador. Nesse caso, o 
comando #include <iostream> diz ao pré-processador do compilador para incluir o 
arquivo de cabeçalho padrão iostream. Esse arquivo específico inclui as declarações da 
biblioteca básica de entrada-saída do C++, e está sendo usado porque suas funcionalidades 
serão usadas mais tarde nesse programa. 
int main()
Essa linha corresponde ao início da declaração da função main. A função main é o ponto 
pelo qual todos os programas em C++ iniciam a execução. Não faz diferença se estiver no 
início, no fim, ou no meio do código – seu conteúdo é sempre o primeiro a ser executado 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 22
quando um programa inicia. Além disso, pelo mesmo motivo, é obrigatório que todos os 
programas em C++ tenham uma função main. 
Depois de main há um par de parênteses () porque é uma função. Em C++ todas as 
funções são seguidas por um par de parênteses () que, opcionalmente, podem incluir 
argumento dentro deles. O conteúdo da função main segue imediatamente após sua 
declaração formal e é coberto entre chaves ({}), como em nosso exemplo. 
cout << "Ola Mundo!";
Essa instrução faz a coisa mais importante nesse programa. cout é o dispositivo de saída 
padrão no C++ (geralmente o monitor), e a frase completa insere uma sequência de 
caracteres ("Ola Mundo!" nesse caso) no dispositivo de saída (o monitor). cout é declarado 
no arquivo de cabeçalho iostream, então pra que seja possível utiliza-lo, esse arquivo 
precisa ser incluso. 
Note que a frase termina com um caractere ponto-e-vírgula (;). Esse caractere significa 
o fim da instrução e precisa ser incluído após toda instrução em qualquer programa em 
C++ (um dos erros mais comuns dos programadores de C++ é devido ao fato de 
esquecerem de incluir um ponto-e-vírgula ; no final de cada instrução). 
return 0;
A instrução return faz com que a função main() termine e retorne o código que segue a 
instrução, nesse caso o 0. Essa é a maneira mais comum de terminar um programa que não 
encontrou nenhum erro durante sua execução. Como você verá em exemplos seguintes, 
todos os programas em C++ terminam com um comando parecido com esse. 
Sendo assim, você deve ter notado que nem todas as linhas desse programa realizaram uma 
ação. Havia linhas contendo apenas comentários (aquelas iniciadas por //), linhas com 
instruções para o pré-processador do compilador (aquelas iniciadas por #), também haviam 
linhas que iniciavam a declaração de uma função (nesse caso, a função main) e, finalmente 
linhas com instruções (como a chamada à cout <<), todas essas últimas foram incluídas 
dentro do bloco delimitado pelas chaves ({}) da função main. 
O programa foi estruturado em linhas diferentes para que seja mais fácil lê-lo, mas isso não é 
obrigatório. Por exemplo, ao invés de: 
 
int main () 
{
 cout << " Ola Mundo! "; 
 return 0; 
}
poderíamos ter escrito: 
int main () { cout << " Ola Mundo! "; return 0; } 
em apenas uma linha e isso teria exatamente o mesmo significado. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 23
Em C++, a separação entre instruções é especificada com um ponto-e-vírgula (;) no final de 
cada instrução. A divisão do código em linhas diferentes serve somente para torná-lo mais 
legível e esquemático para seres humanos. 
Aqui está um programa com mais instruções: 
// meu segundo programa em C++ 
 
#include <iostream> 
 
int main () 
{
 cout << "Ola Mundo! "; 
 cout << "Eu sou um programa em C++"; 
 return 0; 
}
Ola Mundo! Eu sou um programa em C++ 
Nesse caso nós usamos o método cout << duas vezes em duas instruções diferentes. Mais 
uma vez, a separação do código em linhas diferentes só foi feita para dar maior legibilidade ao 
programa, já que main poderia ter sido definida perfeitamente assim: 
int main () { cout << " Ola Mundo! "; cout << " Eu sou um programa em C++ "; 
return 0; } 
Nós também poderíamos dividir o código em mais linhas se considerássemos conveniente: 
 
int main () 
{ 
 cout << 
 "Ola Mundo!";
 cout
 << "Eu sou um programa em C++"; 
 return 0; 
}
E o resultado teria sido exatamente o mesmo dos exemplos anteriores. 
As diretivas de pré-processador (aquelas que começam por #) estão fora dessa regra já que 
elas não são instruções verdadeiras. Elas são linhas lidas e descartadas pelo pré-processador e 
não produzem nenhum código. Essas precisam ser especificadas em suas próprias linhas e não 
requerem a inclusão de um ponto-e-vírgula (;) no final. 
Comentários. 
Comentários são pedaços de código-fonte descartados do código pelo compilador. Eles não fazem 
nada. O objetivo deles é somente permitir que o programador insira notas ou descrições dentro do 
código-fonte. 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 24
 
O C++ suporta duas maneiras para inserir comentários: 
// comentário de linha 
/* comentário de bloco */ 
O primeiro deles, o comentário de linha, descarta tudo desde onde o par de barras (//) é achado até 
o final daquela mesma linha. O segundo deles, o comentário de bloco, descarta tudo entre os 
caracteres /* e a próxima aparição dos caracteres */, com a possibilidade de incluir diversas linhas. 
Nós iremos adicionar comentários ao nosso segundo programa: 
 
/* meu segundo programa em C++ 
 com mais comentários */ 
 
#include <iostream> 
 
int main () 
{ 
 cout << "Ola Mundo! "; //diz Ola Mundo!
 cout << "Sou programa em C++"; //diz Sou 
programa em C++ 
 return 0; 
}
Ola Mundo! Sou programa em C++ 
Se você incluir comentários dentro do código-fonte de seus programas sem usar as 
combinações de caracteres //, ou /* e */, o compilador ira entendê-los como se fossem 
instruções C++ e, na maioria das vezes, irá causar um ou mais mensagens de erro. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 25
Operadores. 
 
Agora que você já conhece a existência de variáveis e constantes, podemos começar a utilizá-
las. Para isso, C++ provê os operadores, no qual nessa linguagem é um conjunto de palavras-
chave e símbolos que não fazem parte do alfabeto, mas estão disponíveis em todos os 
teclados. É importante conhecê-los já que eles formam a base da linguagem C++. 
Você não precisa memorizar todo o conteúdo dessa página, pois os detalhes são dados 
somente para servirem como uma futura referência caso você precise. 
Atribuição (=). 
O operador de atribuição serve para atribuir um valor a uma variável. 
a = 5;
atribui o valor inteiro 5 para a variável a. A parte da esquerda do operador = é conhecida 
como lvalue (left value – valor da esquerda) e a da direita como rvalue (right value – valor 
da direita). lvalue precisa sempre ser uma variável, enquanto o lado direito pode ser uma 
constante, uma variável, o resultado de uma operação ou qualquer combinação entre eles. 
É preciso enfatizar que a operação de atribuição sempre funciona da direita para a 
esquerda e nunca o oposto. 
a = b;
atribui para a variável a (lvalue) o valor contido na variável b (rvalue) independentemente 
do valor que estiver guardado em a nesse momento. Considere também que estamos apenas 
atribuindo o valor de b para a e que uma mudança futura em b não afetará o valor de a. 
Por exemplo,se usarmos esse código (com a evolução das variáveis em cor verde): 
 
int a, b; // a:? b:? 
a = 10; // a:10 b:? 
b = 4; // a:10 b:4 
a = b; // a:4 b:4 
b = 7; // a:4 b:7 
isso nos dará o resultado que o valor contido em a é 4 e o valor contido em b é 7. A 
modificação final de b não afetou a, mesmo sabendo que havíamos declarado a = b; (regra 
da direita-para-esquerda). 
Uma propriedade que C++ tem sobre outras linguagens de programação é que a 
operação de atribuição pode ser usada como rvalue (ou parte de um rvalue) para outra 
atribuição. Por exemplo: 
a = 2 + (b = 5);
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 26
é equivalente a: 
b = 5; 
a = 2 + b;
isso significa: primeiro atribui 5 para a variável b e então atribui para a o valor 2 mais o 
resultado a atribuição anterior de b (que é 5), deixando a com um valor final de 7. Assim, a 
seguinte expressão também é válida em C++: 
a = b = c = 5;
atribui 5 às três variáveis: a, b e c. 
Operadores aritméticos ( +, -, *, /, % ) 
As cinco operações aritméticas suportadas pela linguagem são: 
+ Adição 
- Subtração 
* Multiplicação 
/ Divisão 
% Módulo 
Operações de adição, subtração, multiplicação, e divisão não é um desafio de entendimento 
para você, já que elas correspondem literalmente com seus respectivos operadores 
matemáticos. 
O único que pode não ser conhecido por você é o módulo, especificado com o sinal de 
porcentagem (%). Módulo é a operação que dá o resto de uma divisão de dois valores 
inteiros. Por exemplo, se escrevermos a = 11 % 3; a variável a irá conter 2 como 
resultado já que 2 é o resto da divisão de 11 por 3. 
Operadores de atribuição compostos (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=) 
Uma característica de atribuição em C++ que contribui para sua fama de boa escrita de 
linguagem são os operadores de atribuição compostos (+=, -=, *= e /= entre outros), que 
permitem modificar o valor de uma variável com um dos operadores básicos: 
value += increase; é equivalente a value = value + increase; 
a -= 5; é equivalente a a = a - 5; 
a /= b; é equivalente a a = a / b; 
price *= units + 1; é equivalente a price = price * (units + 1); 
e o mesmo para todas as outra operações. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 27
 
INCREMENTO E DECREMENTO. 
Outro exemplo de linguagem econômica ao digitar código são os operadores de incremento 
(++) e os operadores de decremento (--). Eles aumentam ou reduzem 1 ao valor guardado na 
variável. São equivalentes a +=1 e a -=1, respectivamente. Assim: 
a++; 
a+=1; 
a=a+1; 
são todos equivalentes e suas funcionalidades são incrementar 1 no valor de a. 
Sua existência é devido ao fato de que nos primeiros compiladores de C, os três 
exemplos anteriores produziam código executável diferente de acordo com qual deles 
fosse usado. Hoje em dia esse tipo de otimização de código é geralmente feito 
automaticamente pelo compilador. 
Uma característica desse operador é que pode ser usado tanto como prefixo ou como 
sufixo. Isso significa que pode ser escrito antes do identificador da variável (++a) ou 
depois (a++). Embora em expressões simples, como a++ ou ++a, eles tenham 
exatamente o mesmo significado, em outras operações no qual o resultado da operação 
de incremento ou decremento é avaliado como outra expressão eles podem ter uma 
diferença importante em seus significados: em caso do operador de incremento ser 
usado como prefixo (++a), o valor é incrementado antes de a expressão ser avaliada e, 
sendo assim, o valor incrementado é considerado na expressão; em caso de ser usado 
como sufixo (a++), o valor guardado em a é incrementado depois de ter sido avaliada e, 
sendo assim, o valor guardado antes da operação de incremento é avaliada na 
expressão. Note a diferença: 
Exemplo 1 Exemplo 2
B=3; 
A=++B; 
// A é 4, B é 4 
B=3; 
A=B++; 
// A é 3, B é 4 
No Exemplo 1, B é incrementado antes que seu valor seja copiado para A. Enquanto no 
Exemplo 2, o valor de B é copiado para A e B é incrementado depois. 
Operadores relacionais ( ==, !=, >, <, >=, <= ) 
Para que seja possível avaliar uma comparação entre duas expressões, podemos usar os 
operadores relacionais. Conforme especificado no padrão ANSI-C++, o resultado de uma 
operação relacional é um valor bool que pode ser somente true ou false, de acordo com o 
resultado da comparação. 
Nós podemos querer comparar duas expressões, por exemplo, para saber se elas são 
iguais ou se uma delas é maior que a outra. Aqui está uma lista com os operadores 
relacionais que podem ser utilizados no C++: 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 28
 
== Igual a 
!= Diferente de 
> Maior que 
< Menor que 
>= Maior ou igual a 
<= Menor ou igual a 
Aqui você tem alguns exemplos: 
(7 == 5) Retornaria false. 
(5 > 4) Retornaria true. 
(3 != 2) Retornaria true. 
(6 >= 6) Retornaria true. 
(5 < 5) Retornaria false. 
é claro que, ao invés de usar somente constantes numéricas, podemos usar qualquer 
expressão válida, incluindo variáveis. Suponha que a=2, b=3 e c=6, 
(a == 5) Retornaria false. 
(a*b >= c) Retornaria true já que (2*3 >= 6) é verdadeiro.
(b+4 > a*c) Retornaria false já que (3+4 > 2*6) é falso. 
((b=2) == a) Retornaria true. 
Fique atento: o operador = (um sinal de igual) não é o mesmo que o operador == (dois sinais 
de igual), o primeiro é um operador de atribuição (atribui o lado direito da expressão à 
variável da esquerda) e o outro (==) é um operador relacional de igualdade que compara se 
as duas expressões nos dois lados do operador são iguais entre si. Assim, na última 
expressão ((b=2) == a), nós atribuímos primeiramente o valor 2 a b e então o 
comparamos com a, que também guarda o valor 2, então o resultado da operação é true. 
Em muitos compiladores feitos antes da publicação do padrão ANSI-C++, assim como na 
linguagem C, as operações relacionais não retornavam um valor bool true ou false, ao invés 
disso, retornavam um int como resultado com um valor 0 para representar "false" e um valor 
diferente de 0 (geralmente 1) para representar "true". 
Operadores lógicos ( !, &&, || ). 
O operador ! é equivalente à operação boleana NOT, possui somente um operando 
localizado à direita, e a única coisa que faz é inverter o valor desse operando, gerando false 
se o operando for true e true se o operando for false. É o mesmo que dizer que retorna o 
resultado oposto da avaliação do operando. Por exemplo: 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 29
 
 
!(5 == 5) Retorna false porque a expressão à direita (5 == 5) seria true. 
!(6 <= 4) Retorna true porque (6 <= 4) seria false. 
!true Retorna false. 
!false Retorna true. 
Os operadores lógicos && e || são usados ao avaliar duas expressões para obter um 
resultado único. Eles correspondem às operações lógicas boleanas AND e OR 
respectivamente. Seus resultados dependem da relação entre seus dois operandos: 
Primeiro 
Operando 
a 
Segundo 
Operando 
b 
resultado
a && b 
resultado
a || b 
true true true true
true false false true
false true false true
false false false false
Por exemplo: 
( (5 == 5) && (3 > 6) ) retorna false ( true && false ). 
( (5 == 5) || (3 > 6)) retorna true ( true || false ). 
Operador condicional ( ? ). 
O operador condicional avalia uma expressão e retorna um valor diferente de acordo com a 
expressão avaliada, dependendo se for true ou false. Seu formato é: 
condição ? result1 : result2 
se condição for true a expressão retornará result1, caso contrário retornará result2. 
7==5 ? 4 : 3 retorna 3 pois 7 não é igual a 5.
7==5+2 ? 4 : 3 retorna 4 pois 7 é igual a 5+2. 
5>3 ? a : b retorna a, pois 5 é maior que 3.
a>b? a : b retorna o maior deles, a ou b. 
Operadores de Bits ( &, |, ^, ~, <<, >> ). 
Operadores de Bits modificam as variáveis considerando os bits que representam os valores 
que elas guardam, ou seja, suas representações binárias. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 30
 
op asm Descrição 
& AND AND lógico 
| OR OR lógico 
^ XOR eXclusive OR lógico 
~ NOT Complemento de um (inversão de bit)
<< SHL Deslizar à esquerda 
>> SHR Deslizar à direita 
 
Operadores de conversão de tipos explícita 
Operadores de conversão de tipos nos permitem converter um dado de um determinado tipo 
para outro. Há diversas maneiras para se fazer isso em C++, e a mais popular e compatível 
com a linguagem C, é preceder a expressão a ser convertida pelo novo tipo colocado entre 
parênteses (): 
int i; 
float f = 3.14; 
i = (int) f; 
O código anterior converte um número real 3.14 para um valor inteiro (3). Aqui, o operador 
de conversão de tipos foi (int). Outra maneira de se fazer isso em C++ é usar a forma de 
construtor: precedendo a expressão a ser convertida pelo tipo e colocando a expressão entre 
parênteses: 
i = int ( f ); 
As duas maneiras de conversão de tipos são válidas em C++. Além disso, o ANSI-C++ 
adicionou novos operadores de conversão de tipos mais específicos para programação 
orientada a objetos. 
sizeof() 
Esse operador aceita um parâmetro, que pode ser tanto um tipo de variável como uma 
própria variável, e retorna o tamanho daquele tipo ou objeto em bytes: 
a = sizeof (char); 
Isso irá retornar 1 a a porque char é um tipo com tamanho de 1 byte. 
O valor retornado por sizeof é uma constante, então é sempre determinado antes da 
execução do programa. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 31
Outros operadores 
Mais a frente nesse tutorial iremos ver mais alguns operadores, como os que se referenciam 
a ponteiros ou os específicos para programação orientada a objetos. Cada um é tratado em 
sua seção respectiva. 
Prioridade de operadores 
Ao se fazer expressões complexas com diversos operandos, podemos ter algumas dúvidas sobre 
qual operando é avaliado antes e qual é avaliado depois. Por exemplo, nessa expressão: 
a = 5 + 7 % 2 
podemos questionar se realmente significa: 
a = 5 + (7 % 2) com resultado 6, ou a = (5 + 7) % 2 com resultado 0 
A resposta correta é a primeira das duas expressões, com resultado 6. Há uma ordem estabelecida 
com a prioridade de cada operador, e não somente os aritméticos (aqueles cuja preferência 
possamos já saber devido a matemática) mas para todos os operadores que possam aparecer em 
C++. Da prioridade maior para a menor, a ordem é a seguinte: 
Prioridade Operador Descrição Associatividade
1 :: Escopo Esquerda 
2 () [ ] -> . sizeof Esquerda 
++ -- Incremento/Decremento 
~ Complemento de um (bit) 
! NOT unário
& * Referência e Apontamento (ponteiros)
(type) Conversão de tipo 
3 
+ - Sinal de menos unário
Direita 
4 * / % Operações aritméticas Esquerda 
5 + - Operações aritméticas Esquerda 
6 << >> Deslizamento de bits Esquerda 
7 < <= > >= Operadores relacionais Esquerda 
8 == != Operadores relacionais Esquerda 
9 & ^ | Operadores de bits Esquerda 
10 && || Operadores lógicos Esquerda 
11 ?: Condicional Direita 
12 = += -= *= /= %= >>= <<= &= ^= |= Atribuição Direita 
13 , Vírgula, Separador Esquerda 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 32
 
Associativdade define –caso haja diversos operadores do mesmo nível de prioridade- qual será 
avaliado primeiro, o que está mais à direita ou o que está mais à esquerda. 
Todos esses níveis de precedência para operadores podem ser manipulados ou se tornarem 
mais legíveis com o uso de parênteses ( e ), como nesse exemplo: 
a = 5 + 7 % 2; 
pode ser escrito como: 
a = 5 + (7 % 2); ou 
a = (5 + 7) % 2; 
de acordo com a operação que queremos realizar. 
Então caso você queira escrever uma expressão complicada e não tem certeza dos níveis de 
precedência, sempre inclua parênteses. Provavelmente também será um código mais legível. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 33
 
Estruturas de controle. 
 
Um programa geralmente não é limitado a uma sequência linear de instruções. Durante o 
processo, pode bifurcar, repetir código, ou tomar decisões. Por esse motivo, C++ provê 
estruturas de controle que servem para especificar o que precisa ser feito para executar nosso 
programa. 
Com a introdução das sequências de controle, teremos que introduzir um novo conceito: o 
bloco de instruções. Um bloco de instruções é um grupo de instruções separado por pontos-
e-vírgulas (;), mas agrupados em um bloco delimitado por sinais de chaves: { e }. 
A maioria das estruturas de controle que veremos nessa seção permite um conteúdo genérico 
como parâmetro, isso se refere a uma única instrução ou a um bloco de instruções, como 
quisermos. Se quisermos que o conteúdo seja uma única instrução, não precisamos colocá-la 
entre chaves ({}). Se quisermos que o conteúdo seja mais que uma única instrução, 
precisamos colocá-la entre chaves ({}) formando um bloco de instruções. 
Estrutura condicional: if e else
É usada para executar uma instrução ou bloco de instruções somente se uma condição for satisfeita. 
Sua forma é: 
if (condição) conteúdo 
onde condição é a expressão que está sendo avaliada. Se a condição for true, o conteúdo é 
executado. Se for false, o conteúdo é ignorado (não é executado) e o programa continua na 
próxima instrução depois da estrutura condicional. 
Por exemplo, o seguinte fragmento de código imprime x e 100 somente se o valor guardado 
na variável x for igual a 100: 
if (x == 100) 
 cout << "x e 100"; 
Se quisermos que mais de uma única instrução seja executada no caso da condição ser true, 
precisamos especificar um bloco de instruções usando chaves { }: 
if (x == 100) 
 { 
 cout << "x e "; 
 cout << x; 
 } 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 34
 
Podemos especificar também o que queremos que aconteça caso a condição não seja satisfeita 
usando a palavra-chave else. Sua forma usada em conjunto com if é: 
if (condição) conteúdo1 else conteúdo2 
Por exemplo: 
if (x == 100) 
 cout << "x e 100"; 
else 
 cout << "x nao e 100"; 
imprime na tela x e 100 se x for igual a 100, mas se não for –e somente se não for- imprime x não 
e 100. 
As estruturas if + else podem ser concatenadas com a intenção de verificar um intervalo de 
valores. O seguinte exemplo mostra seu uso dizendo se o valor presente guardado em x é 
positivo, negativo ou nenhum dos anteriores, ou seja, igual a zero. 
if (x > 0) 
 
 cout << "x e positivo"; 
else if (x < 0) 
 cout << "x e negativo"; 
else 
 cout << "x e 0"; 
Lembre-se que caso queiramos que mais de uma única instrução seja executada, precisamos agrupá-
las em um bloco de instruções usando chaves { }. 
 
 
 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 35
Estruturas repetitivas ou loops
 
Loops tem como objetivo repetir um conteúdo um certo número de vezes ou enquanto uma 
condição seja satisfeita. 
O LOOP WHILE. 
Seu formato é: 
while (expressão) conteúdo 
e sua função é simplesmente repetir o conteúdo enquanto a expressão for verdadeira. 
Por exemplo, iremos fazer um programa que faz uma contagem regressiva usando um 
loop while: 
// contagem regressiva customizada usando 
while
#include <iostream> 
int main () 
{
 int n; 
 cout << "Entre com o numero inicial "; 
 cin >> n; 
 while (n>0) { 
 cout << n << ", "; 
 --n;}
 cout << "FOGO!"; 
 return 0; 
}
Entre com o numero inicial > 
8 
8, 7, 6, 5, 4, 3, 2, 1, 
FOGO! 
Quando o programa inicia, é pedido ao usuário que insira um número inicial para a 
contagem regressiva. Então quando o loop while inicia, se o valor entrado pelo usuário 
satisfizer a condição n>0 (de que n é maior que 0 ), o bloco de instruções seguinte será 
executado um número indefinido de vezes enquanto a condição (n>0) permanecer 
verdadeira. 
Todo o processo no programa acima pode ser interpretado de acordo com o seguinte 
script: iniciando em main: 
• 1. O usuário atribui um valor para n. 
• 2. A instrução while checa se (n>0). Nesse ponto há duas possibilidades: 
o true: executa o conteúdo (passo 3,) 
o false: pula o conteúdo. O programa segue para o passo 5.. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 36
• 3. Executa o conteúdo: 
 cout << n << ", "; 
 --n; 
(imprime n na tela e decrementa 1 de n). 
• 4. Fim do bloco. Retorna automaticamente ao passo 2. 
• 5. Continua o programa depois do bloco: imprime FOGO! e termina o programa. 
Precisamos considerar que o loop precisa terminar alguma hora, sendo assim, dentro 
do bloco de instruções (o conteúdo do loop) precisamos prover algum método que 
força a condição a se tornar falsa em algum momento, ou em caso contrário, o loop 
continuará se repetindo para sempre. Nesse caso nós incluímos --n; que faz com que a 
condição se torne false depois de algumas repetições de loop: quando n se torna 0, 
que é quando nossa contagem regressiva termina. 
É claro que essa é uma ação bastante simples para nosso computador que toda a 
contagem regressiva é feita de maneira instantânea sem um atraso prático entre os 
números. 
O LOOP DO-WHILE. 
Formato: 
do conteúdo while (condição); 
Sua funcionalidade é exatamente a mesma que a do loop while, com exceção que a 
condição do do-while é avaliada depois da execução da conteúdo ao invés de antes, 
garantindo pelo menos uma execução do conteúdo mesmo se a condição nunca for 
satisfeita. Por exemplo, o seguinte programa repete qualquer número que você entre, até que 
você entre 0. 
// repetidor de número 
#include <iostream> 
int main () 
{ 
 unsigned long n; 
 do { 
 cout << "Entre com um numero (0 para 
sair): "; 
 cin >> n; 
 cout << "Você entrou o numero: " << n 
<< "\n"; 
 } while (n != 0); 
 return 0; 
} 
Entre com um numero (0 para 
sair): 12345 
Você entrou o numero: 12345 
Entre com um numero (0 para 
sair): 160277 
Você entrou o numero: 160277
Entre com um numero (0 para 
sair): 0 
Você entrou o numero: 0 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 37
O loop do-while geralmente é usado quando a condição que determina se chegou ao 
fim está dentro do conteúdo do loop, como no caso anterior, no qual a entrada do 
usuário dentro do bloco de instruções é o que determinar o fim do loop. Se você nunca 
entrar com o valor 0 no exemplo anterior, o loop não terminará nunca. 
O LOOP FOR. 
Seu formato és: 
for (inicialização; condição; incremento) conteúdo; 
e sua principal função é repetir o conteúdo enquanto a condição permanecer verdadeira, 
como no loop while. Mas, além disso, o for provê lugares para especificar a instrução de 
inicialização e a instrução de incremento. Então esse loop é projetado especialmente 
para realizar uma ação repetitiva com um contador. 
Funciona da seguinte maneira: 
1, a inicialização é executada. Geralmente é a configuração de um valor inicial para um 
contador. É executado somente uma vez. 
2, a condição é checada, se for true o loop continua, caso contrário o loop termina e o 
conteúdo é pulado. 
3, o conteúdo é executado. Como sempre, pode ser tanto uma única instrução ou um bloco 
de instruções colocadas entre chaves { }. 
4, finalmente, o que quer que seja que estiver especificado no campo de incremento, é 
executado e o loop volta ao passo 2. 
Aqui está um exemplo de contagem regressiva usando o loop for. 
// ccontagem regressiva usando um loop
for 
#include <iostream> 
int main () 
{ 
 for (int n=10; n>0; n--) { 
 cout << n << ", "; 
 } 
 cout << "FOGO!"; 
 return 0; 
} 
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
FOGO! 
Os campos de inicialização e de incremento são opcionais. Eles podem ser evitados, 
mas não os pontos-e-vírgulas dentre eles. Por exemplo, poderíamos escrever: for 
(;n<10;) se não quiséssemos especificar nenhuma inicialização nem incremento; 
ou for (;n<10;n++) se quiséssemos incluir um campo de incremento, mas não uma 
inicialização. 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 38
Opcionalmente, usando uma vírgula (,), podemos especificar mais de uma instrução 
em qualquer dos campos inclusos em um loop for, como na inicialização, por 
exemplo. A vírgula (,) é um separador de instrução, e serve para separar mais de uma 
instrução quando somente uma instrução é esperada. Por exemplo, suponha que 
queiramos inicializar mais de uma variável em nosso loop: 
 
for ( n=0, i=100 ; n!=i ; n++, i-- ) 
{ 
 // qualquer coisa aqui... 
} 
O loop irá executar 50 vezes caso nenhuma das variáveis n ou i sejam modificadas dentro 
do loop: 
 
n começa com 0 e i com 100, a condição é (n!=i) (que n não seja igual a i). Devido ao 
fato de n ser incrementado por um e i decrementado por um, a condição do loop se tornará 
false depois do 50° loop, quando ambas n e i forem iguais a 50. 
Bifurcação de controles e pulos. 
A INSTRUÇÃO BREAK. 
Usando break, podemos deixar um loop mesmo que a condição para o fim não seja 
satisfeita. Pode ser usado para terminar um loop infinito, ou forçá-lo a terminar antes de seu 
término natural. Por exemplo, iremos terminar a contagem regressiva antes que termine 
naturalmente (uma falha no mecanismo talvez): 
// exemplo de loop com break
#include <iostream> 
int main () 
{ 
 int n; 
 for (n=10; n>0; n--) { 
 cout << n << ", "; 
 if (n==3) 
 { 
 cout<<"contagem regressiva 
 abortada!"; 
 
 break; 
 } 
 } 
 return 0; 
} 
10, 9, 8, 7, 6, 5, 4, 3, 
contagem regressiva abortada! 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 39
 
A INSTRUÇÃO CONTINUE. 
A instrução continue faz com que o programa ignore o resto do loop na iteração presente 
como se o final do bloco de conteúdo tivesse sido alcançado, fazendo com que vá para a 
próxima iteração. Por exemplo, iremos ignorar o número 5 em nossa contagem regressiva: 
// exemplo de loop com continue 
#include <iostream> 
int main () 
{ 
 for (int n=10; n>0; n--) { 
 if (n==5) continue; 
 cout << n << ", "; 
 } 
 cout << "FOGO!"; 
 return 0; 
} 
10, 9, 8, 7, 6, 4, 3, 2, 1, FOGO! 
A INSTRUÇÃO GOTO. 
Permite fazer um pulo absoluto para outro ponto do programa. Você deve usar essa 
característica com cuidado há que sua execução ignora qualquer tipo de limitação de 
aninhamento. 
O ponto de destino é identificado por uma etiqueta, no qual é usado como argumento 
para a instrução goto. Uma etiqueta é feita de um identificador válido seguido por dois 
pontos (:). 
Essa instrução não tem uma utilidade concreta em programação estruturada ou 
orientada a objetos além das que o fãs de programação de baixo nível possam 
encontrar para ela. Por exemplo, aqui está nosso loop de contagem regressiva usando 
goto: 
// exemplo de loop com goto
#include <iostream> 
int main () 
{ 
 int n=10; 
 loop: 
 cout << n << ", "; 
 n--; 
 if (n>0) goto loop; 
 cout << "FOGO!"; 
 return 0; 
} 
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 
FOGO! 
 
 
 
ALGORITMOS E PROGRAMAÇÃO 
Professora: GELLARS TAVARES 
 
 40
A FUNÇÃO EXIT. 
exit é uma função definida

Outros materiais