Buscar

Estacio_Introducao a Prog Estruturada em C

Prévia do material em texto

1 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
AULA 1 – FUNDAMENTOS DA LÓGICA 
 
Objetivos 
• Identificar raciocínio lógico e pensamento computacional; 
• Examinar fluxogramas e algoritmos escritos em portugol; 
• Praticar a estruturação de soluções com fluxogramas e algoritmos. 
 
Tecnologia 
 
A tecnologia avançou muito e a maioria das pessoas possui um smartphone ou um notebook. 
Vivemos em um mundo em que os computadores são encontrados em quase toda parte e a 
maioria dos objetos agora está conectada a eles. Os smartphones, por exemplo, são uma 
combinação de computadores e telefones; os smartwatches são a união de computadores com 
relógios de pulso. 
Esse panorama nos leva a acreditar que, em um futuro não muito distante, é possível que todos 
os objetos acabem sendo associados a computadores. Muitas empresas e nomes conhecidos já 
afirmaram que vivemos a era em que os objetos serão controlados por computadores; mas não 
podemos esquecer que é a programação que alimenta os computadores e os transforma em 
máquinas capazes de grandes feitos. 
Por causa do aumento rápido na demanda por computadores, a demanda cresce. 
Apesar disso, há uma falta de programadores em todo o mundo e não é raro assistir reportagens 
na televisão que dizem sobrar vagas na área de TI. Diante dessa situação, muitas pessoas 
perceberam a importância da programação e escolas ao redor do mundo começaram a incluir a 
disciplina em seu currículo desde o ensino fundamental. 
Em uma graduação da área de tecnologia, aprender a programar computadores faz total 
sentido. É a nós que a sociedade confia a tarefa de criar as muitas aplicações que fazem dos 
computadores essas máquinas tão úteis e essenciais. Então, começaremos a conversar sobre 
como você deve estruturar seu pensamento para conseguir solucionar, com a ajuda do 
computador, os diferentes problemas do cotidiano. 
 
“Ninguém nasce cientista da computação, mas com um pouco de trabalho 
duro e um pouco de matemática e ciências, praticamente qualquer um 
pode se tornar um. Não deixe ninguém te dizer ‘Você não pode’. Se você é 
um jovem ou uma jovem, quer viva em uma cidade ou em uma área rural, 
os computadores serão uma grande parte do seu futuro. Se você está 
disposto a trabalhar e estudar muito, esse futuro é seu para moldar.” 
(Barack Obama, ex-presidente dos Estados Unidos) 
 
2 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
O que é necessário para aprender programação? 
 
Neste momento, você pode estar se perguntando se possui as qualidades necessárias para 
aprender a programar computadores. Bom, tranquilize-se, pois tudo de “não tecnológico” de 
que você vai precisar é o seu raciocínio lógico. 
Na computação, o raciocínio lógico é o que nos ajuda a explicar por que as coisas acontecem da 
maneira como acontecem. 
Pense só: 
Se você configurar dois computadores da mesma maneira, fornecer as mesmas instruções e os 
mesmos dados de entrada, você pode praticamente garantir a mesma saída. 
Os computadores não fazem as coisas de forma diferente da informada e não dependem de 
como se sentem no momento. Isso significa que os computadores são previsíveis. Por causa 
desta característica, podemos usar o raciocínio lógico para descobrir exatamente o que um 
programa ou sistema de computador fará. 
A lógica é fundamental para o funcionamento dos computadores; tudo o que a máquina faz é 
controlado pela lógica e podemos usá-la para raciocinar sobre o comportamento dos programas. 
O raciocínio lógico nos ajuda a entender as coisas observando, coletando dados, pensando sobre 
os fatos que conhecemos e depois calculando as coisas com base no que já sabemos. Ele nos 
ajuda também a usar nosso conhecimento existente para estabelecer regras e checar fatos, e, 
por fim, contribui para o desenvolvimento de uma nova forma de pensar: o pensamento 
computacional. 
 
O pensamento computacional 
 
O pensamento computacional é um processo de solução de problemas que envolve os seguintes 
passos: 
• Identificação e descrição de um problema. 
• Verificação de detalhes importantes para a solução. 
• Decomposição do problema em partes menores. 
• Tratamento dos segmentos na criação de um processo de solução. 
• Aplicação e avaliação da solução proposta 
É importante ressaltar que, antes que um computador possa ser utilizado para resolver um 
problema, precisamos compreender o problema e as diferentes maneiras que podemos usar para 
solucioná-lo. 
O pensamento computacional envolve tomar esse problema e dividi-lo em uma série de 
problemas menores e mais gerenciáveis (decomposição). 
Cada um desses problemas menores pode ser examinado individualmente, considerando como 
problemas semelhantes foram resolvidos anteriormente. Existem quatro pilares para o 
pensamento computacional: 
3 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
• Decomposição: Envolve a decomposição do problema em partes menores e mais 
gerenciáveis. 
• Reconhecimento de padrões: Busca semelhanças entre o problema e outras soluções 
anteriores e dentro do próprio problema. 
• Abstração: Concentra-se nas informações relevantes para o problema, ignorando 
detalhes que não são importantes. 
• Algoritmos: Desenvolvem uma solução passo a passo para o problema, incluindo as 
regras a serem seguidas para tal. 
Esses pilares são como pernas de uma mesa: se uma estiver faltando, a mesa provavelmente 
não se manterá de pé. O esquema a seguir ilustra a relação dos quatro pilares para o 
pensamento computacional: 
 
 
 
 
 
 
 
Ter um raciocínio lógico apurado pode ajudar no trabalho, nos estudos e nas relações 
interpessoais. Para melhorar sua habilidade de pensar logicamente, envolva-se em atividades 
que estimulem o pensamento crítico, trabalhe na alteração de seus padrões de pensamento e 
participe de jogos que exijam habilidades de raciocínio. 
 
Algoritmos 
 
A discussão em torno do conceito e das etapas do pensamento computacional introduziu um 
termo muito presente no estudo de programação: algoritmos. Mas o que são algoritmos? 
Os algoritmos são séries de procedimentos definidos passo a passo que visam a solução de um 
problema. Algoritmos são independentes de linguagens de programação e, por isso, um 
algoritmo pode ser convertido em qualquer linguagem de programação. Exemplo: 
Joana é programadora e recebeu o desafio de criar algoritmos para descrever como jogar pedra-
papel-tesoura. Da maneira como está descrito, o jogador vencedor precisa ganhar duas rodadas 
em três: 
1. Ambas as pessoas escolhem entre pedra, papel ou tesoura. 
2. Se os dois jogadores escolherem as mesmas opções, refaça a etapa 1. 
3. Se os dois jogadores escolherem opções forem diferentes: 
3.1. Se o primeiro jogador escolheu tesoura e o segundo escolheu papel, então o primeiro 
jogador recebe um ponto. 
Decomposição 
Abstração 
Identificação de 
padrões 
Algoritmos 
Pensamento 
Computacional 
4 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
3.2. Se o primeiro jogador escolheu tesoura e o segundo escolheu pedra, então o segundo 
jogador recebe um ponto. 
3.3. Se o primeiro jogador escolheu papel e o segundo escolheu tesoura, então o segundo 
jogador recebe um ponto. 
3.4. Se o primeiro jogador escolheu papel e o segundo escolheu pedra, então o primeiro 
jogador recebe um ponto. 
3.5. Se o primeiro jogador escolheu pedra e o segundo escolheu tesoura, então o primeiro 
jogador recebe um ponto. 
3.6. Se o primeiro jogador escolheu pedra e o segundo escolheu papel, então o segundo 
jogador recebe um ponto. 
4. Repita os passos 1 a 3 até que um jogador tenha dois pontos. 
O exemplo de algoritmo anterior está escrito de forma livre e não segue nenhuma 
representação padrão. Os algoritmos que formulam soluções para problemas computacionais e 
que serão traduzidos em uma linguagem de programação normalmente estão descritos como 
fluxogramas ou escritos em pseudocódigo. 
 
Fluxogramas 
 
Os fluxogramas são a representaçãográfica dos algoritmos. Para desenhá-los, existe um 
conjunto de regras a ser seguido e é necessário utilizar uma simbologia específica. Veja, a seguir, 
os símbolos que podem ser usados: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Terminação Processo Dados Decisão 
Processo Definido Armazenamento 
interno 
Documento Fita Perfurada 
Somador Ou Agrupar Classificar 
Extrair Mesclar Vários documentos Preparação 
Entrada manual Operação manual Conector de 
mesma página 
Conector fora 
de página 
5 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
 
 
 
 
 
 
 
Para compreendermos de que maneira os símbolos do fluxograma são utilizados, observe os 
exemplos a seguir. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Disco magnético Armazenamento de 
acesso direto 
Exibir Processo 
alternativo 
Início 
Num1, Num2 
Soma = Num1 + Num2 
Soma 
Fim 
Soma: O usuário deve fornecer dois 
números quaisquer para que o 
computador calcule a soma dos 
mesmos e exiba o resultado. 
Média: O usuário deve fornecer as 
notas de um teste e uma prova para 
que seja calculada a média do aluno 
para informá-lo se ele está abaixo da 
média mínima. 
Início 
Teste, Prova 
Media = (Teste+Prova)/2 
Media 
Media<6 
“Você está abaixo 
da média!” 
Fim 
Verdadeiro 
Falso 
Cartão Dados 
armazenados 
Atraso Armazenamento de 
acesso sequencial 
6 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Pseudocódigo 
 
Os programas de computador são escritos em linguagens de programação. Essas linguagens 
possuem uma sintaxe muito particular que deve ser respeitada para que o programa seja 
executado corretamente. 
O pseudocódigo não é uma linguagem de programação e, por isso, não precisa seguir uma 
sintaxe específica. Ele é uma maneira simples de descrever um conjunto de instruções que 
deverão ser executadas pelo computador. O pseudocódigo é escrito na língua nativa de quem o 
utiliza – no nosso caso, o português – e sua intenção é garantir que qualquer pessoa compreenda 
o que está descrito. 
Em computação, o termo sintaxe faz referência às regras que especificam de que maneira 
devem ser utilizadas as instruções e declarações de uma linguagem de programação. 
Na Informática, os algoritmos costumam ser escritos em portugol. O portugol é uma 
pseudolinguagem, ou seja, é uma linguagem intermediária entre a linguagem natural e a 
linguagem de programação. Para fins de padronização e garantia de compreensão dos 
algoritmos, o portugol adota algumas regras. Vamos ver o exemplo a seguir, em que são 
recebidos dois números para que se calcule e exiba a subtração entre eles. 
Início 
Escreva(“Informe o 1° Número: “) 
Leia(N1) 
Escreva(“Informe o 2° Número: “) 
Leia(N2) 
Subtra <- N1 – N2 
Escreva(“A subtração entre os números é :”, Subtra) 
Fim 
A instrução escreva indica que a mensagem entre aspas deve ser mostrada na tela do 
computador. Há variações deste comando no portugol e, em alguns algoritmos, é possível que 
essa mesma instrução apareça como escrever, exibir ou exiba. 
O mesmo acontece com a instrução leia, que indica que o usuário deve informar um valor via 
teclado e que esse valor será armazenado na variável entre parênteses. 
Alguns algoritmos utilizam ler, receber ou receba. Apesar dessa pequena variação nas instruções 
e, algumas vezes, na estrutura dos algoritmos escritos em portugol, você não precisa preocupar, 
já que as instruções são praticamente sinônimas. 
No exemplo anterior, do fluxograma no qual o usuário devia fornecer as notas de um teste e 
uma prova para que fosse calculada a média do aluno para informá-lo se estava abaixo da média 
mínima, observe como ficariam as instruções quando escritas em portugol. 
Veja novamente o fluxograma e, a seu lado, as instruções em português estruturado: 
 
7 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Fluxograma: Algoritmo em Portugol 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O portugol não é uma linguagem de programação e, por isso, um algoritmo escrito em portugol 
não pode ser executado por um computador. 
Para garantir que os algoritmos pudessem ser testados antes que fossem traduzidos para uma 
linguagem de programação, diversos programas começaram a surgir: 
• Portugol Online 
• VisuAlg 
• Portugol Studio 
Todas essas alternativas são excelentes para quem está iniciando o estudo de programação, pois 
permitem que a proposta de solução seja executada e testada e, assim, sejam identificados pelo 
programador possíveis erros de lógica presentes na solução. 
Ao longo de nossas aulas, os algoritmos serão escritos conforme padrão do Portugol Studio. 
Sugerimos que você instale essa ferramenta em seu computador para que possa realizar os 
exercícios e vê-los funcionando. O portugol Studio é um projeto brasileiro desenvolvido pelo 
Laboratório de Inovação Tecnológica na Educação da Universidade do Vale do Itajaí (UNIVALI), 
é gratuito. 
 
Início 
Teste, Prova 
Media = (Teste+Prova)/2 
Media 
Media<6 
“Você está abaixo 
da média!” 
Fim 
Verdadeiro 
Falso 
Início 
Leia(Teste) 
Leia(Prova) 
Media <- (Teste+Prova)/2 
Escreva(Media) 
Se (Media<6) 
Escreva (“Você está abaixo da média”) 
Fim Se 
Fim 
1 
2 
3 
4 
5 
6 
7 
1 
2 
3 
4 
5 
6 
7 
5 
8 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Exercício 
 
Imagine que você está prestes a viajar para os Estados Unidos e deseja saber quantos dólares 
consegue comprar com uma determinada quantia em reais. 
1. Crie um fluxograma que pergunte a quantia em reais de que você dispõe e exiba quantos 
dólares será possível comprar com mesma quantia. Lembre-se de fazer com que o 
fluxograma pergunte também a cotação do dólar para o dia da conversão. 
2. Com base no fluxograma que você desenvolveu no exercício anterior, escreva o 
algoritmo que resolva o mesmo problema. 
1) 2) 
 
 
 
 
 
 
 
 
 
 
AULA 2 – CONCEITOS BÁSICOS DE PROGRAMAÇÃO 
 
A codificação desenvolve habilidades para a resolução de problemas e permite que você crie 
uma solução que funcione exatamente da maneira que deseja. Para isso, é necessário definir as 
etapas para usar os recursos a sua disposição de forma a executar a tarefa com eficiência. Nesta 
aula, veremos alguns dos recursos disponíveis para os programadores: as variáveis e as 
constantes, seus tipos e os operadores. 
As variáveis são essenciais e dificilmente você criará um programa ou algoritmo no qual não 
precise delas. Portanto, aprender a utilizá-las adequadamente é um requisito básico para os 
programadores. Os operadores também são muito importantes. Eles nos permitem criar 
expressões aritméticas, relacionais e lógicas e, assim como as variáveis, são muito utilizados nas 
soluções que desenvolveremos ao longo de nossos exercícios. Objetivos: 
• Apontar o conceito de variáveis e constantes; 
• Identificar os diferentes tipos de dados existentes; 
• Examinar os diferentes tipos de operadores e sua aplicação. 
 
Início 
Reais, Cotacao 
Dolares = (Reais/Cotacao) 
Dolares 
Fim 
Início 
Escreva(“Quantos reais você tem? ”) 
Leia(Reais) 
Escreva(“Qual a cotação do dólar hoje? ”) 
Leia(Cotacao) 
Dolares <- Reais/Cotacao 
Escreva(Dolares) 
Fim 
9 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Armazenamento de dados 
 
Já estudamos que o princípio básico do funcionamento dos computadores envolve as etapas de: 
entrada > processamento > saída 
Isso significa dizer que o computador recebe dados, faz o processamento necessário com eles e 
gera as informações necessárias para a saída. Na programação, trabalharemos diretamente com 
essas etapas. 
Observe o exemplo a seguir: 
Início 
Escreva(“Informe o 1o. número: ”) 
Leia(N1) 
Escreva(“Informe o 2o. número: ”) 
Leia(N2) 
Subtra <- N1 - N2 
Escreva(“A subtração entre os números é ”, Subtra) 
Fim 
Entrada de dados > Processamento > Saída de Informações 
Nesse exemplo, as cores destacam a etapa envolvida em cada momento. Veja que fica claroque 
ocorre a entrada de dois dados que servem para o cálculo da subtração, que é a etapa de 
processamento. Em seguida, o valor obtido com a realização do cálculo é mostrado para o 
usuário, o que configura a saída de informações. 
Os dados de entrada e as informações a serem exibidas como saídas ficam armazenados na 
memória principal do computador, conhecida como RAM – Random Access Memory ou 
Memória de Acesso Aleatório. 
Por isso, é preciso ter uma solução que permita armazenar os dados e recuperá-los sem 
dificuldade e sem que eles se misturem com todos os outros dados na memória. Essa solução 
existe: são as variáveis. 
 
Variáveis 
 
Uma variável é um espaço da memória principal dedicado ao armazenamento temporário de 
valores. Ela funciona como um recipiente em que colocamos os valores dos quais precisamos 
para o programa e retiramos de lá quando eles já não são mais necessários. É possível, também, 
alterar esses valores ao longo da execução do programa pois, como o nome diz, eles são 
variáveis. 
Quando criamos uma variável, precisamos dar a ela um identificador. Esse identificador 
funcionará como um rótulo para a área da memória onde a variável está armazenada. Toda as 
vezes que precisarmos recuperar o valor da variável ou armazenar um valor na mesma, faremos 
referência ao seu identificador. 
10 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
As regras para a criação desses identificadores variam em função da linguagem de programação 
utilizada, por isso precisamos conhecer essas regras quando estivermos programando em uma 
nova linguagem. 
Em nossas aulas, utilizaremos o Portugol Studio para testar os algoritmos. Para promover a 
familiarização com uma linguagem de programação, utilizaremos C++ e o ambiente de 
desenvolvimento Dev-C++. Este software é gratuito e portátil. 
Em geral, os identificadores de variáveis podem conter letras e números, não devem conter 
espaços em branco nem caracteres especiais, e não podem começar com números. O único 
caractere especial que costuma ser aceito em nomes de variáveis é o sublinhado (_). 
É importante, também, que o identificador seja capaz de nos fazer lembrar o dado que está 
armazenado na variável. Se você precisa armazenar o nome de um cliente, por exemplo, o ideal 
é identificar sua variável como nome ou nomeCliente. No C++, as regras para criação de 
identificadores de variáveis são as seguintes: 
Os identificadores podem começar com uma letra ou com o caractere “_” 
Após o primeiro caractere, o identificador pode ser composto por letras e números 
Caracteres especiais e espaços em branco não podem ser utilizados 
É importante ressaltar que algumas linguagens são case sensitive (ou sensíveis ao caractere). 
Isso significa que os caracteres maiúsculos são considerados diferentes dos seus equivalentes 
minúsculos. Assim, nesse tipo de linguagem, os identificadores telefone, Telefone e TELEFONE 
representariam três variáveis diferentes. 
Lembre-se: C++ é uma linguagem case sensitive. 
Outro aspecto importante a respeito das variáveis é que elas podem ser de diferentes tipos. Em 
geral, esses tipos pertencem à categoria dos numerais, dos literais ou dos lógicos. 
• Numerais: Agrupa tipos que identificam variáveis cuja intenção é armazenar valores 
numéricos. 
• Literais: Permitem a criação de variáveis para armazenamento de caracteres. 
• Lógicos: Permitem a criação de variáveis para armazenamento de valores do tipo 
verdadeiro ou falso. 
Observe a tabela a seguir e veja os tipos de variáveis existentes no Portugol Studio e seus tipos 
equivalentes no C++: 
Tipos de Variáveis 
Portugol Studio C++ 
inteiro: número sem casa decimal significativa int / long int 
real: número com casa decimal significativa float / double 
caractere: somente um caractere char 
cadeia: conjunto de caracteres char 
logico: verdadeiro ou falso bool 
 
No Portugol Studio, as palavras com o tipo de dado que define variáveis para armazenamento 
de valores lógicos são escritas sem os acentos. 
11 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Para que uma variável possa ser utilizada em um programa, ela precisa ser criada (ou declarada, 
que é o termo utilizado em programação). A forma como a declaração de variáveis é feita 
depende da sintaxe da linguagem de programação utilizada. 
A linguagem C++ é fortemente tipada, o que significa dizer que será necessário informar tipo e 
identificador da variável para que ela seja criada. O Portugol Studio segue o mesmo critério. Veja 
exemplos de definições de variáveis a seguir. 
Declaração de Variáveis 
Portugol Studio C++ 
inteiro idade = 42 int idade = 42; 
real saldo = 550.00 float saldo = 550.00; 
cadeia nome = “Luciana” char nome[] = “Luciana”; 
cadeia sexo = ‘F’ char sexo[] = “F”; 
logico trabalha = verdadeiro bool trabalha = true; 
 
No C++, as variáveis lógicas são declaradas como do tipo bool e podem receber true (verdadeiro) 
ou false (falso). 
Nas linguagens de programação fortemente tipadas, o tipo de dado a ser armazenado na 
variável deve ser explicitamente definido. 
Outro aspecto importante é que a variável somente armazenará valores do tipo definido em sua 
declaração e a tentativa de armazenar valores de tipos distintos, acarretará erro. Observe um 
exemplo de operação que gerará um erro: 
soma = 2 + “2”; 
A operação tenta somar um tipo caractere com um tipo inteiro; o que não é permitido em 
linguagens fortemente tipadas. Alguns exemplos de linguagens fortemente tipadas são C e Java. 
Existem também as linguagens de programação fracamente tipadas, nas quais o tipo de dado 
não é uma prioridade. Por conta disso, podemos especificar um tipo para um dado, mas usá-lo 
como outro tipo. Nesse caso, a conversão de tipos é realizado automaticamente. Observe, por 
exemplo, o código a seguir: 
soma = 2 + “2”; 
O resultado a ser armazenado na variável soma é 22. Isso acontece porque o número 2 é tratado 
como sendo do tipo caractere e é concatenado com o caractere 2". O mesmo código teria gerado 
um erro em uma linguagem fortemente tipada. 
Os programadores acham mais fácil escrever programas em linguagens de tipagem fraca. 
Alguns exemplos de linguagens fracamente tipadas são Python e JavaScript. 
Nos dois exemplos seguimos basicamente o mesmo padrão: primeiro informamos o tipo da 
variável, seguido de seu identificador e de seu valor inicial. Perceba, entretanto, que, em C++, 
as declarações terminam com “;”. Outro aspecto distinto diz respeito ao uso de aspas simples e 
duplas. 
 
12 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
No Portugol Studio, as aspas simples são 
usadas para delimitar um único caractere 
(como em sexo), e as aspas duplas 
delimitam cadeias de caracteres (como 
em nome). 
 No C++ isso não acontece e as aspas 
duplas são utilizadas em ambos os casos. 
 
Constantes 
 
Um valor constante é um valor que não se altera. Ao contrário das variáveis, que podem ter seu 
valor modificado ao longo do programa, as constantes têm um valor predefinido que não pode 
ser alterado. Assim como as variáveis, entretanto, as constantes precisam ser declaradas e 
devem ter seu tipo e identificador definidos. Observe como declarar uma constante no Portugol 
Studio e no C++: 
Declaração de Variáveis 
Portugol Studio C++ 
const inteiro MESES = 12 const int MESES = 12; 
const real PI = 3.14 const float PI = 3.14; 
A declaração de constantes é muito parecida no Portugol Studio e no C++. Nos dois casos, a 
primeira palavra a ser escrita é const, seguida do tipo da constante, seu identificador e seu valor. 
Por uma questão de convenção, os identificadores de constantes costumam ser escritos em caixa 
alta, mas essa não é uma obrigatoriedade. 
 
Operadores 
 
Os operadores são símbolos que, combinados às variáveis e constantes, nos permitem construir 
expressões aritméticas, relacionais e lógicas. 
 
Quanto ao número 
 
Quanto ao número de operandos sobre os quais atuam, os operadores podemser unários ou 
binários. Operadores unários atuam sobre um único operando, e operadores binários precisam 
de dois operandos para que possam ser utilizados. 
 
Quanto ao tipo 
 
Os operadores podem ser aritméticos, relacionais, lógicos, de atribuição, de incremento e de 
decremento. 
Observe, a seguir, os operadores pertencentes a cada uma dessas categorias. 
 
13 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Operadores Matemáticos Tipo Operadores Relacionais Tipo 
+ Soma Binário > Maior que Binário 
- Subtração Binário < Menor que Binário 
/ Divisão Binário >= Maior ou igual a Binário 
* Multiplicação Binário <= Menor ou igual a Binário 
% Resto da divisão Binário == Igual a Binário 
 != Diferente de Binário 
 
Operadores Lógicos Tipo Operadores Especiais de Atribuição Tipo 
! Não Unário += Soma e atribui. Ex.: res+=2 Binário 
&& E Binário -= Subtrai e atribui. Ex.: res-=2 Binário 
|| Ou Binário /= Divide e atribui. Ex.: res/=5 Binário 
 *= Multiplica e atribui. Ex.: res*=5 Binário 
 
Operadores de Atribuição Tipo Operadores de Incremento/Decremento Tipo 
= Atribuição de valor a variáveis ou constantes Binário ++ Incremento Unário 
 -- Decremento Unário 
 
Na próxima aula, veremos de que maneira os operadores se combinam às variáveis e constantes 
para construção de expressões. 
 
Exercício 
 
Você se lembra do exercício da aula 1, no qual escreveu um algoritmo para converter uma 
quantia em reais para uma quantia em dólares? Você precisou perguntar a quantia em reais e a 
cotação do dólar do dia e calculou quantos dólares seria possível comprar. 
1. Imagine que você vai escrever esse algoritmo no Portugol Studio. Como ficaria a 
declaração de variáveis para esta situação? 
2. Agora imagine que você vai escrever o algoritmo anterior na linguagem de programação 
C++. Como seria a declaração de variáveis? 
3. A aceleração da gravidade (ag) na Terra possui um valor constante aproximado de 9,8 
m/s2. Imagine que um corpo é abandonado em queda livre de uma determinada altura 
e leva um número de segundos (seg) para chegar ao solo. Considere que a velocidade 
(vel) da queda pode ser calculada multiplicando-se a aceleração da gravidade pelo 
tempo. Se você precisasse criar um algoritmo para resolver esse problema no Portugol 
Studio, como seria a declaração de variáveis e constantes? 
4. Considerando o problema anterior, como ficaria a declaração de variáveis e constantes 
caso a solução fosse escrita em C++? 
 
1. Será necessário criar três variáveis do tipo real, conforme declaração a seguir: 
real quantia_reais = 0 
real quantia_dolares = 0 
real cotacao = 0 
14 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
2. No C++, as variáveis seriam declaradas da seguinte maneira: 
float quantia_reais = 0; 
float quantia_dolares = 0; 
float cotacao = 0; 
3. Para este algoritmo, será necessário criar duas variáveis e uma constante: 
const real ag = 9.8 
real seg = 0 
real vel = 0 
4. No C++, a declaração seria feita da seguinte maneira: 
const float AG = 9.8; 
float seg = 0; 
float vel = 0; 
 
AULA 3 - EXPRESSÕES E TABELA DA VERDADE 
 
Na a aula anterior, falamos brevemente sobre os operadores. Nesta aula, veremos de que forma 
utilizamos esses operadores na criação de expressões que utilizam não somente números, mas 
também variáveis. Como já estudamos, as variáveis são essenciais na programação. As 
expressões também são muito utilizadas para cálculos e para tomada de decisões. Para finalizar, 
abordaremos as tabelas da verdade, ou tabelas-verdade, que são uma ferramenta muito 
utilizada para verificar todos os resultados possíveis para uma expressão lógica. Compreender 
as expressões lógicas e os possíveis resultados que elas podem retornar é muito importante para 
que, no futuro, você consiga construir os testes lógicos a serem avaliados por estruturas mais 
complexas utilizadas na programação de computadores. Objetivos desta aula: 
• Identificar os diferentes tipos de expressão; 
• Analisar a forma como são escritas as expressões; 
• Avaliar expressões lógicas para construção de tabelas da verdade. 
 
Operadores 
 
Na aula anterior, conhecemos os operadores que nos permitirão realizar atribuições e construir 
expressões aritméticas, relacionais e lógicas. Vimos que esses operadores podem ser unários 
(quando atuam sobre somente um operando) ou binários (quando atuam sobre dois 
operandos), e aprendemos, também, que eles podem ser do tipo aritmético, relacional, lógico, 
de atribuição, de incremento e de decremento. Vamos, agora, ver de que maneira eles são 
utilizados nos programas e algoritmos que iremos construir. 
 
 
15 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Expressões matemáticas 
 
Para que exista uma expressão matemática, ou operação algébrica, é necessário que existam, 
no mínimo, dois valores ou variáveis e um operador. Observe os exemplos a seguir, que 
representam expressões matemáticas: 
12 - 7 14 / 2 35 x 3 14 + 2 
Para que sejam usadas em um programa ou algoritmo, essas expressões precisam sofrer 
algumas adaptações. Vejamos: 
O sinal de multiplicação: Conforme vimos 
anteriormente, em programação não é 
possível usar o “.” ou o “x” para representar 
essa operação. No lugar deles, devemos 
utilizar o sinal de “*” (asterisco) 
Quando o computador resolver uma 
expressão matemática, por mais simples que 
ela seja, ele chegará a um resultado. Esse 
resultado precisa ser armazenado em uma 
variável ou constante. 
Para que as expressões matemáticas nos exemplos possam ser utilizadas em um algoritmo ou 
programa, precisam ser escritas conforme a seguir: 
Subtra = 12 - 7 Divide = 14 / 2 Mult = 35 * 3 Soma = 14 + 2 
Veja que, agora, os resultados das expressões já têm um local para serem armazenados: nas 
variáveis “Subtra”, “Divide”, “Mult” e “Soma”, respectivamente. 
Um operador que está disponível em diversas linguagens de programação é o módulo, 
representado pelo sinal “%”. A operação de módulo é responsável por retornar o resto de uma 
divisão. Observe os exemplos: 
Resto1 = 120 % 2 Resto2 = 310 % 3 
A operação de módulo é responsável por retornar o resto de uma divisão. Desse modo, a variável 
“Resto1” armazenará o valor 0, e a variável “Resto2” armazenará o valor “10”. 
Lembre-se de que os operadores têm o que chamamos de precedência — responsável por 
definir a ordem em que as operações serão executadas, quando uma expressão combina várias 
delas. Observe a tabela de precedência a seguir: 
Precedência dos operadores matemáticos 
1° Multiplicação, divisão, módulo 
2° Adição, subtração 
Assim como são usados na Matemática, os parênteses também podem ser utilizados em 
algoritmos e programas. Quando eles estiverem presentes, resolva primeiro o conteúdo dentro 
dos parênteses. 
 
Expressões relacionais 
 
As expressões relacionais são construídas de modo a avaliar a relação entre os termos da 
expressão. Uma expressão desse tipo é composta por termos de um mesmo tipo e por 
operadores relacionais. O resultado de uma expressão relacional será sempre um valor lógico: 
Verdadeiro ou Falso 
16 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Considere as variáveis N1=15 e N2=29: 
• Maior = (N1 > N2) Maior armazena falso 
• Menor = (N1 < N2) Menor armazena verdadeiro. 
• Diferente = (N1 != N2) Diferente armazena verdadeiro. 
As expressões relacionais são muito utilizadas na programação, pois elas nos ajudam a avaliar 
condições. 
• Se você precisa escrever um algoritmo que, a partir da idade do usuário, informe se ele 
pode ou não votar, é necessário avaliar se a idade é maior ou igual a 16 (idade>=16). 
• Se o algoritmo precisa informar se um aluno foi aprovado ou reprovado em uma 
instituição de ensino em que a média mínima é 7, você precisa avaliar se a média é maior 
ou igual a 7 (Media>=7). 
 
Expressões lógicas 
 
As expressões lógicas, também conhecidas como expressões booleanas, são construídas com o 
auxílio dos operadoreslógicos e são responsáveis por avaliar uma ou mais condições. O 
resultado de uma expressão lógica será sempre um valor lógico. Para avaliar uma expressão 
lógica, é preciso conhecer o que retornam os operadores lógicos quando avaliam uma relação. 
Vejamos um exemplo: 
Imagine que você precisa escrever um algoritmo que avalie se um número armazenado na 
variável “Num” é positivo e par. 
• Para ser positivo, o número precisa ser maior que zero 
• Para ser par, o resto da divisão do número por dois, precisa ser zero 
Uma solução para esse problema é mostrada a seguir: 
• se (Num>0) && (Num%2==0) EXPRESSÃO LÓGICA 
• escreva (“O número é par e positivo!”) 
Veja que, na situação proposta, precisamos avaliar duas condições relacionais: (Num>0) e 
(Num%2==0). Para fazer com que as duas sejam avaliadas, precisamos construir uma expressão 
lógica com o auxílio do operador “e” (&&). 
Agora vamos avaliar duas situações diferentes. 
1. Considere que a variável “Num” está armazenando o valor 10. Ao avaliarmos a 
expressão lógica para esse caso, veremos que ambas expressões relacionais retornam 
verdadeiro. 
• Num = 10 
• (Num>0) Esta expressão relacional retorna verdadeiro. 
• (Num%2==0) Esta expressão relacional retorna verdadeiro. 
(Num>0) && (Num%2==0) 
Verdadeiro && Verdadeiro -> Verdadeiro 
17 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
2. Agora imagine que a variável “Num” está armazenado o valor 15. Neste caso, uma 
expressão relacional é verdadeira, mas a outra é falsa. Observe: 
• Num = 15 
• (Num>0) Esta expressão relacional retorna verdadeiro. 
• (Num%2==0) Esta expressão relacional retorna falso. 
(Num>0) && (Num%2==0) 
Verdadeiro && Falso -> Falso 
Observe que: 
• Quando as duas expressões avaliadas pelo operador lógico “&&” são verdadeiras, o 
resultado da expressão lógica é verdadeiro. 
• Quando um valor é verdadeiro e o outro é falso, a expressão lógica retorna falso. 
Isso acontece porque há regras para que os operadores lógicos definam o valor a retornar. Agora 
observe as tabelas a seguir. 
Operador && (E) 
A B A && B 
Verdadeiro Verdadeiro Verdadeiro 
Verdadeiro Falso Falso 
Falso Verdadeiro Falso 
Falso Falso Falso 
 
Operador || (OU) 
A B A || B 
Verdadeiro Verdadeiro Verdadeiro 
Verdadeiro Falso Verdadeiro 
Falso Verdadeiro Verdadeiro 
Falso Falso Falso 
 
Operador ! (NÃO) 
A !A 
Verdadeiro Falso 
Falso Verdadeiro 
Essas tabelas apresentam todas os resultados possíveis para quando os operadores avaliam dois 
valores lógicos. 
• O operador “E” precisa que os dois valores avaliados sejam verdadeiros para que o 
resultado também seja verdadeiro. 
• O operador “OU” precisa que os dois operadores avaliados sejam falsos para que o 
resultado também seja falso 
Assim como no caso dos operadores matemáticos, os operadores lógicos também possuem 
precedência, conforme a tabela a seguir: 
 
18 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Precedência dos operadores lógicos 
1° Não (!) 
2° E (&&) 
3° Ou (||) 
Conhecer a precedência dos operadores é essencial quando é necessário resolver uma 
expressão na qual vários operadores são combinados. Vejamos uma situação: 
 
Considere as variáveis: A = verdadeiro, B = verdadeiro, C = falso. 
E a expressão lógica: A && B || !C. 
Observe as etapas a serem seguidas na resolução: 
1. Substituímos as variáveis por seus valores equivalentes. 
Verdadeiro && Verdadeiro || !Falso 
2. Respeitando a precedência, resolvemos !C. 
Verdadeiro && Verdadeiro || Verdadeiro 
3. Em seguida, resolvemos A && B. 
Verdadeiro || Verdadeiro 
4. Por fim, resolvemos a relação “ou” entre o resultado de A && B com !C. 
Verdadeiro 
Nesse exemplo, resolvemos a expressão lógica para o caso das variáveis A = verdadeiro, B = 
verdadeiro e C = falso. Há situações, entretanto, em que desejamos descobrir todos os 
resultados possíveis para os diferentes valores das variáveis. Nesse caso, é necessário montar 
uma tabela da verdade. 
 
Tabela da verdade 
 
Uma tabela da verdade, ou tabela-verdade, é uma tabela matemática capaz de apresentar todos 
os resultados possíveis para uma expressão lógica, a partir das diferentes combinações de 
valores para as variáveis avaliadas. Observe a tabela da verdade para a expressão A && B || !C, 
utilizada no exemplo anterior. 
A B C !C A && B A && B || !C 
V V V F V V 
V V F V V V 
V F V F F F 
V F F V F V 
F V V F F F 
F V F V F V 
F F V F F F 
F F F V F V 
19 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
As colunas da tabela são definidas segundo as variáveis da expressão lógica e os passos para 
resolução dela. Cada linha da tabela apresenta uma possibilidade de combinação para as 
variáveis e os passos para a solução da expressão até que se chegue a um resultado. Vejamos: 
Na primeira linha 
Quando A 
= 
Verdadeiro 
Quando B 
= 
Verdadeiro 
Quando C 
= 
Verdadeiro 
O resultado da expressão será 
Verdadeiro 
 
Na segunda linha 
Quando A 
= 
Verdadeiro 
Quando B 
= 
Verdadeiro 
Quando C 
= 
Falso 
O resultado da expressão será 
Verdadeiro 
 
Na terceira linha 
Quando A 
= 
Verdadeiro 
Quando B 
= 
Falso 
Quando C 
= 
Verdadeiro 
O resultado da expressão será 
Falso 
 
Para descobrir quantos resultados possíveis existem para uma expressão lógica, é preciso 
identificar a quantidade de variáveis que compõem essa expressão e descobrir quantas 
possibilidades diferentes de combinação de verdadeiro e falso elas geram. A quantidade de 
variáveis será expoente de uma base 2 e o resultado dessa potenciação dirá quantos resultados 
diferentes existem para a expressão. Observe: 
1. Identificar a quantidade de variáveis. 
A && B || !C Três variáveis: A, B e C 
2. Utilizar a quantidade de variáveis como expoente de uma base 2. 
23 Quantidade de variáveis da expressão 
3. Resolver a potenciação para descobrir a quantidade de combinações possíveis. 
23 = 8 Quantidade de combinações possíveis 
A quantidade de combinações possíveis nos ajudará a definir quantas linhas irão compor a 
tabela da verdade. 
 
20 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Operadores de atribuição 
 
Os operadores de atribuição são responsáveis por armazenar valores em constantes e variáveis. 
Observe: 
• Resultado = 0 Atribui 0 à variável “Resultado” 
• Pi = 3.14 Atribui 3.14 à constante “Pi” 
• Nome = “Thomás” Atribui “Thomás” à variável “Nome” 
• Soma = N1 + N2 Atribui a soma de N1+N2 à variável “Soma” 
Nos exemplos anteriores, vimos exemplos utilizando o operador de atribuição simples, que é o 
sinal de igualdade (“=”). O padrão para atribuição é o seguinte: 
Nome da variável ou da constante = 
Valor ou expressão (que será resolvida 
para que o resultado seja atribuído) 
Existem ainda outros operadores de atribuição que são combinados aos operadores 
matemáticos para efetuarem um cálculo e armazenarem o resultado em uma variável: 
+= -= 
Operador de adição e atribuição Operador de subtração e atribuição 
Soma += 5 (Equivale à expressão Soma = Soma + 5) Subtra –= 10 (Equivale à expressão Subtra = Subtra – 10) 
 
/= *= 
Operador de divisão e atribuição Operador de multiplicação e atribuição 
Divide /= 2 (Equivale à expressão Divide = Divide / 2) Multiplica *= 3 (Equivale à expressão Multiplica = Multiplica * 3) 
 
Operadores de incremento e decremento 
 
Em programação, incrementar e decrementar significam, respectivamente, aumentar e diminuir 
o valor de uma variável. 
• O operador de incremento aumenta em uma unidade o valor da variável. 
• O operador de decremento diminui em uma unidade o valor da variável. 
++ -- 
Operador de incremento Operador de decremento 
Total ++ (Equivale à expressão Total = Total + 1) Total –- (Equivale à expressão Total = Total – 1) 
 
AULA 4: COMANDOS DE ENTRADA E SAÍDA 
 
Nesta aula, estudaremos os primeiros comandos para a comunicação entre o usuário e o 
computador. São os comandos de entrada e saída que permitem que os usuários forneçam 
dados para o computador(comandos de entrada) e o computador exiba informações para os 
usuários (comandos de saída). 
21 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Os comandos de entrada e saída estarão presentes em todos os outros programas e algoritmos 
que escreveremos em nossas aulas. Por isso, você precisa dominá-los com segurança para que 
não sinta dificuldades mais adiante. Fique atento aos exemplos e realize todos os exercícios para 
conseguir compreender a forma como esses comandos são utilizados e a maneira como se 
comportam quando os programas são executados. Objetivos: 
• Identificar os comandos de entrada e saída 
• Analisar problemas simples que possam ser resolvidos com programas 
• Aplicar algoritmos e programas para solução dos problemas apresentados 
 
Comandos de entrada e saída em Portugol Studio 
 
Uma característica interessante da programação é que ela permite a interação entre a máquina 
– no nosso caso, o computador – e seus usuários. Essa interação ocorre por meio dos comandos 
de entrada e saída (ou comandos de I/O, pois o termo vem das palavras em inglês input e 
output). 
Nesta disciplina, trabalharemos apenas com os comandos de entrada de dados via teclado, mas 
um input pode vir de outras origens, como o clique em um botão do mouse ou um sinal detectado 
por um sensor de movimentos, por exemplo. Os comandos de saída podem direcionar a 
informação para uma impressora ou um dispositivo de áudio, por exemplo, mas o destino padrão 
das saídas de nossos programas e algoritmos será o monitor de vídeo. 
Para termos uma ideia de como são utilizados esses comandos, imagine que você deseja criar 
um algoritmo que, a partir do ano atual e do ano de nascimento, informe a idade aproximada 
de uma pessoa. Veja uma solução possível, escrita no Portugol Studio: 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro anoNasc, anoAtual, idade 
6 escreva("Ano atual: ") 
7 leia(anoAtual) 
8 escreva("Ano de nascimento: ") 
9 leia(anoNasc) 
10 idade=anoAtual-anoNasc 
11 escreva("Você tem ou fará ", idade, " anos") 
12 } 
13 } 
 
22 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Vamos ver o que fazem as outras linhas: 
Linha 5 Cria as variáveis anoNasc, anoAtual e idade e as declara como sendo tipo inteiro. Essas variáveis servirão 
para o armazenamento do ano de nascimento do usuário, do ano atual e da idade (que será calculada pelo 
algoritmo). 
Linha 6 O comando escreva é o responsável por exibir em tela mensagens e conteúdo de variáveis e constantes. 
Neste exemplo, ele exibe a mensagem entre aspas na tela. 
Linha 7 O comando leia é o responsável por receber valores informados pelo usuário via teclado e armazená-los em 
variáveis. Aqui, o valor numérico informado pelo usuário será armazenado na variável anoAtual. 
Linha 8 Esta linha exibirá em tela a mensagem entre aspas. 
Linha 9 Receberá o valor numérico informado pelo usuário e armazenará na variável anoNasc. 
Linha 10 Esta expressão fará a subtração definida à direita do sinal de atribuição (“=”) e armazenará o resultado dela 
na variável idade. 
Linha 11 Esta linha exibirá em tela a mensagem “Você tem ou fará XX anos”, em que XX será o valor armazenado na 
variável idade. Veja que combinamos, em um mesmo comando escreva, a exibição de mensagens e do 
conteúdo de uma variável. Para isso, usamos as aspas duplas para delimitar as mensagens e usamos a vírgula 
para separar mensagens de variáveis. 
Imagine que você viajou para os Estados Unidos e está muito confuso com o modo que os 
americanos usam para medir a temperatura, em Fahrenheit. Para facilitar, você decide criar um 
algoritmo que, dada uma temperatura em Fahrenheit, exiba seu equivalente em graus Celsius. 
Uma solução possível seria: 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 real tempF, tempC 
6 escreva("Temperatura em Fahrenheit: ") 
7 leia(tempF) 
8 tempC=(tempF-32)/1.8 
9 escreva("Temperatura em graus Celsius: ", tempC) 
10 } 
11 } 
Vamos ver o que fazem as linhas de código? 
Linha 5 Cria as variáveis tempF e tempC, e as declara como sendo do tipo real. Essas variáveis irão armazenar, 
respectivamente, a temperatura em graus Fahrenheit e a temperatura em graus Celsius. 
Linha 6 Esta linha faz com que seja exibida em tela a mensagem entre aspas. 
Linha 7 Permite que o usuário informe um valor via teclado e faz com que esse valor seja armazenado na variável 
tempF. 
Linha 8 Esta expressão fará a conversão do valor em graus Fahrenheit para graus Celsius. O resultado é armazenado 
na variável tempC. 
Linha 9 Esta linha é responsável por mostrar, em tela, a mensagem entre aspas seguida do valor armazenado na 
variável tempC. Combinamos, em um mesmo comando escreva, a exibição de mensagens e do conteúdo de 
uma variável. Perceba o uso da vírgula separando os itens. 
 
Arredondando valores reais no Portugol Studio 
 
Ao testar o algoritmo de conversão de temperaturas, é possível que você tenha obtido um valor 
com várias casas decimais como resultado. Nem sempre é uma boa opção informar ao usuário 
esse tipo de valor. O ideal é que o número seja arredondado para mostrar menos casas decimais 
– uma ou duas – e, assim, facilitar sua compreensão. Para arredondarmos valores no Portugol 
Studio e configurar o número de casas decimais que desejamos exibir, é preciso utilizar a função 
arredondar, da biblioteca Matematica-->mat. Veja como fazer: 
23 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
real pi_Longo = 3.14159265358979323846 
real pi_Curto 
// Arredonda o valor de pi_Longo para 2 casas decimais 
pi_Curto = mat.arredondar(pi_Longo,2) 
Para que seja utilizada a função arredondar, precisamos incluir a biblioteca Matematica-->mat. 
Veja como fazer: 
programa 
{ 
inclua biblioteca Matematica --> mat 
funcao inicio() 
{ 
... 
} 
} 
Se você quiser utilizar a formatação de casas decimais no problema de conversão de 
temperaturas, insira a linha de inclusão da biblioteca no início do algoritmo e altere a linha de 
exibição da temperatura em Celsius para que fique assim: 
escreva("Temperatura em graus Celsius: ", mat.arredondar(tempC,2)) 
Você percebeu, no exemplo da função arredondar, que uma linha do algoritmo começa com os 
caracteres “//”? Trata-se de uma linha de comentário. 
Linhas de comentário são muito úteis, pois nos permitem escrever informações que nos ajudam 
a compreender melhor o código. Elas não serão executadas pelo computador e servem somente 
para fins de documentação. 
 
Comandos de entrada e saída em C++ 
 
Na linguagem de programação C++, os comandos cin e cout são os que utilizaremos para entrada 
e saída de dados, respectivamente. Antes de falarmos mais sobre eles, é preciso saber que os 
programas que escreveremos em C++ terão uma estrutura básica que estará presente em todas 
as soluções: 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 $ 
6 } 
O código será escrito entre as chaves, que marcam o início e o fim do bloco de comandos 
pertencentes ao seu programa (a partir da linha 5). Na linha 1, temos a diretiva include, que 
informa quais bibliotecas de comandos serão necessárias no programa. Para o exemplo anterior, 
somente utilizaremos a biblioteca iostream, que contém os recursos básicos para entrada e 
saída e nos permitirá utilizar os comandos cin e cout. Você se lembra do algoritmo que fizemos 
no início desta aula, para cálculo da idade do usuário a partir do ano atual e do ano de 
nascimento? Vamos ver como ele ficaria escrito em C++? 
24 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int anoAtual, anoNasc, idade; 
6 cout <<"Ano atual: "; 
7 cin >> anoAtual; 
8 cout <<"Ano de nascimento:"; 
9 cin >> anoNasc; 
10 idade=anoAtual-anoNasc; 
11 cout <<"Você tem ou fará " << idade << " anos."; 
12 } 
Quando terminar de digitar seu programa, compile-o e execute-o pressionando a tecla F11. 
C++ é uma linguagemde programação compilada. O compilador é responsável por verificar erros 
de sintaxe no programa e, quando o programa está sintaticamente correto, produzir outro 
programa em linguagem de máquina. 
Vamos ver o que fazem as linhas do programa? 
Linha 1 Sinaliza a inclusão da biblioteca iostream, que permite o uso dos comandos cin e cout, entre outros. 
Linha 2 Um namespace é uma região declarativa que fornece um escopo para os identificadores (nomes dos tipos, 
função, variáveis etc.) dentro dele. Todas as declarações dentro desses blocos são declaradas no escopo 
nomeado. Utilizar esta linha no início do programa faz com que não precisemos escrever std::cout <<"Ano 
atual: ". 
Linha 3 Os programas em C são organizados em forma de função. A função principal é denominada main, esta linha 
marca a abertura da função principal do programa. 
Linha 4 Marca o início do programa. 
Linha 5 Declara as variáveis anoAtual, anoNasc e idade, e as declara como sendo do tipo inteiro. Essas variáveis irão 
armazenar, respectivamente, o ano atual, o ano de nascimento do usuário e a idade a ser calculada pelo 
programa 
Linha 6 Exibe, em tela, a mensagem entre aspas. 
Linha 7 Recebe, via teclado, um valor e o armazena na variável anoAtual. 
Linha 8 Exibe, em tela, a mensagem entre aspas. 
Linha 9 Recebe, via teclado, um valor e o armazena na variável anoNasc. 
Linha 10 Calcula a idade do usuário realizando a subtração entre o ano atual e ano de nascimento e armazena na 
variável idade. 
Linha 11 Exibe, em tela, as mensagens entre aspas combinadas com o valor armazenado na variável idade. 
Linha 12 Marca o fim do programa. 
Vamos ver como ficaria, em C++, o algoritmo para conversão de temperaturas? 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float tempF, tempC; 
6 cout << "Temperatura em Fahrenheit: "; 
7 cin >> tempF; 
8 tempC=(tempF-32)/1.8; 
9 cout << "Temperatura em graus Celsius: " << tempC; 
10 } 
Linha 5 Cria as variáveis tempF e tempC, e as declara como sendo do tipo real. Essas variáveis irão armazenar, 
respectivamente, a temperatura em graus Fahrenheit e a temperatura em graus Celsius. 
Linha 6 Esta linha faz com que seja exibida em tela a mensagem entre aspas. 
25 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Linha 7 Permite que o usuário informe um valor via teclado e faz com que esse valor seja armazenado na variável 
tempF. 
Linha 8 Esta expressão fará a conversão do valor em graus Fahrenheit para graus Celsius. O resultado é armazenado 
na variável tempC. 
Linha 9 Esta linha é responsável por mostrar, em tela, a mensagem entre aspas seguida do valor armazenado na 
variável tempC. Combinamos, em um mesmo comando escreva, a exibição de mensagens e do conteúdo de 
uma variável. Perceba o uso da vírgula separando os itens. 
 
Exibindo a acentuação gráfica no C++ 
 
Se você usou acentuação gráfica nos programas que escreveu em C++, percebeu que, quando 
executado, o programa substitui os caracteres acentuados por alguns símbolos. Para que isso 
não aconteça, é preciso que você inclua a biblioteca locale e configure o idioma para português 
do Brasil. Observe como ficaria o início de um programa que realiza essa configuração: 
1 #include <iostream> 
2 #include <locale> 
3 using namespace std; 
4 int main() 
5 { 
6 setlocale(LC_ALL, "ptb"); 
7 … 
8 } 
 
Exercício 
 
1. Leia os enunciados a seguir e crie os algoritmos que solucionam os problemas 
propostos. 
• Exiba o quadrado e o cubo de um número inteiro qualquer informado pelo usuário. 
• Receba a quantidade de dias que uma pessoa já viveu e informe quantos anos ela tem. 
Desconsidere os anos bissextos. 
• Sabendo que o dono de uma loja aplica 20% sobre o valor de compra de um produto, 
informe o valor sugerido para venda com base no valor pago na compra do produto. 
Algoritmo 1 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num, quadrado, cubo 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 quadrado = num * num 
9 cubo = num * num * num 
10 escreva(num, " ao quadrado é: ", quadrado) 
11 escreva(num, " ao cubo é: ", cubo) 
12 } 
26 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
13 } 
Se você escreveu o algoritmo como no exemplo, percebeu, quando executou, que as linhas que 
exibem o quadrado e o cubo do número mostram as mensagens na mesma linha. Para que cada 
resultado fique em uma linha, e a leitura deles seja facilitada, inclua “\n” ao final da linha que 
mostra o quadrado do número: 
escreva(num, " ao quadrado é: ", quadrado, "\n") 
Essa formatação fará com que o algoritmo exiba a mensagem e quebre a linha antes de executar 
o próximo comando. 
Algoritmo 2 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 real dias, anos 
6 escreva("Quantos dias você já viveu? ") 
7 leia(dias) 
8 anos = dias / 365 
9 escreva("Você já viveu ", anos, " anos.") 
10 } 
11 } 
Algoritmo 3 
1 { 
2 funcao inicio() 
3 { 
4 real preCompra, preVenda 
5 escreva("Preço de compra do produto: R$ ") 
6 leia(preCompra) 
7 preVenda = preCompra + (preCompra * 20/100) 
8 escreva("Preço sugerido para venda R$ ", preVenda) 
9 } 
10 } 
 
2. Com base nos algoritmos escritos na atividade anterior, escreva os programas em C++. 
Abaixo estão os enunciados. 
• Exiba o quadrado e o cubo de um número inteiro qualquer informado pelo usuário. 
• Receba a quantidade de dias que uma pessoa já viveu e informe quantos anos ela tem. 
Desconsidere os anos bissextos. 
• Sabendo que o dono de uma loja aplica 20% sobre o valor de compra de um produto, 
informe o valor sugerido para venda com base no valor de compra do produto. 
Programa 1 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
27 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
4 { 
5 int num, quadrado, cubo; 
6 cout << "Informe um número qualquer: "; 
7 cin >> num; 
8 quadrado = num * num; 
9 cubo = num * num * num; 
10 cout << num << "ao quadrado é: " << quadrado; 
11 cout << num << "ao cubo é: " << cubo; 
12 } 
Programa 2 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float dias, anos; 
6 cout << "Quantos dias você já viveu? "; 
7 cin >> dias; 
8 anos = dias / 365; 
9 cout << "Você já viveu " << anos << "anos."; 
10 } 
Programa 3 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float preCompra, preVenda; 
6 cout << "Preço de compra do produto: R$ "; 
7 cin >> preCompra; 
8 preVenda = preCompra + (preCompra * 20/100); 
9 cout << "Preço sugerido para venda R$ " << preVenda; 
10 } 
 
3. Observe o algoritmo a seguir e responda: Sabendo que o valor do litro do combustível é 
R$ 3,90 e que você dispõe de R$ 200,00 para abastecer, qual mensagem seria exibida 
pelo computador na linha 12? 
1 programa 
2 { 
3 inclua biblioteca Matematica --> mat 
4 funcao inicio() 
5 { 
6 real qtdeDin, valComb, qtdeLitros 
7 escreva("Quanto custa o litro do combustível? R$ ") 
8 leia(valComb) 
9 escreva("Quantos reais você tem? R$ ") 
28 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
10 leia(qtdeDin) 
11 qtdeLitros=qtdeDin/valComb 
12 escreva("Com R$ ", qtdeDin, " você consegue abastecer ", 
13 mat.arredondar(qtdeLitros,2)," litros de combustível.") 
14 } 
15 } 
O computador exibiria a mensagem "Com R$ 200.00 você consegue abastecer 51.28 litros de 
combustível." Lembre-se de que o separador de casas decimais é o ponto e não a vírgula! 
 
AULA 5: ESTRUTURA DE SELEÇÃO SIMPLES E COMPOSTA 
 
Na aula anterior, começamos a escrever códigos simples utilizando os comandos de entrada e 
saída. Você deve ter percebido que os algoritmos e os programas que vimos como exemplos são 
executados sequencialmente, ou seja, da primeira linha à ultima, sem nenhum desvio. 
Nesta aula, veremos que existem muitas situações em que o fluxo de execução não pode ser 
sequencial. Há muitos casos em que a solução somente pode passarpor determinado trecho do 
código quando uma condição é satisfeita. 
Para criar testes que determinam o caminho a ser seguido na execução do programa ou 
algoritmo, você precisará recorrer às estruturas de seleção, ou estruturas seletivas. Essas 
estruturas são responsáveis por avaliar expressões relacionais ou lógicas denominadas 
condições e, assim, criar uma restrição para que uma parte do programa possa ser executada. 
Os programas ficam mais interessantes à medida que novas estruturas são conhecidas. Ao 
aprender um novo conceito, certifique-se de que não tem dúvidas antes de seguir adiante. 
Objetivos: 
• Identificar as estruturas seletivas 
• Aplicar as estruturas de seleção para escrever algoritmos e programas 
• Analisar os resultados produzidos por códigos que empreguem estruturas seletivas 
 
Estrutura Seletiva 
 
Você se lembra do código que escrevemos na aula anterior para calcular a idade de um 
indivíduo? Imagine que, além de informar a idade, você deseje dizer ao usuário se ele já pode 
votar. 
Para ser um eleitor, é preciso ter a idade mínima de 16 anos. Isso significa que você precisar 
verificar se o usuário tem 16 anos ou mais para poder informar que ele pode votar. Para que 
isso seja possível, será preciso fazer uso de uma estrutura seletiva, conhecida também como 
estrutura de seleção. 
Uma estrutura seletiva restringe a execução de um trecho do código à veracidade, ou não, de 
uma ou mais condições. No seu formato mais simples, uma estrutura seletiva, no Portugol Studio 
e no C++, tem a seguinte sintaxe: 
29 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Portugol Studio 
se (condição) 
{ 
// Comandos a serem executados se a condição for verdadeira. 
} 
 
C++ 
if (condição) 
{ 
// Comandos a serem executados se a condição for verdadeira. 
} 
 
Você se lembra de quando falamos das expressões relacionais e lógicas? 
Uma condição será sempre uma expressão desse tipo. Retomando a situação proposta no início 
desta aula, na qual desejamos informar ao usuário se ele pode votar, poderíamos ter uma 
estrutura seletiva escrita conforme vemos a seguir: 
Portugol Studio 
se (idade>=16) 
{ 
escreva("Você já pode votar!") 
} 
Observe que estamos avaliando a condição (idade>=16) – que é uma expressão relacional – e, 
se ela for verdadeira, exibimos a mensagem informando ao usuário que ele já pode votar. Em 
C++, o trecho seria escrito da seguinte maneira: 
C++ 
if (idade>=16) 
{ 
cout <<"Você já pode votar!"; 
} 
 
Observe como ficaria, então, a solução completa no Portugol Studio: 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro anoNasc, anoAtual, idade 
6 escreva("Ano atual: ") 
7 leia(anoAtual) 
8 escreva("Ano de nascimento: ") 
9 leia(anoNasc) 
10 idade=anoAtual-anoNasc 
30 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
11 escreva("Você tem ou fará ", idade, " anos") 
12 se (idade>=16) 
13 { 
14 escreva("Você já pode votar!") 
15 } 
16 } 
17 } 
 
Agora veja o programa completo em C++: 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int anoAtual, anoNasc, idade; 
6 cout <<"Ano atual: "; 
7 cin >> anoAtual; 
8 cout <<"Ano de nascimento:"; 
9 cin >> anoNasc; 
10 idade=anoAtual-anoNasc; 
11 cout <<"Você tem ou fará " << idade << " anos."; 
12 if (idade>=16) 
13 { 
14 cout <<"Você já pode votar!"; 
15 } 
16 } 
Vamos ver mais um exemplo? 
Imagine que você deseja verificar se um número qualquer informado pelo usuário é múltiplo de 
2. Para que seja múltiplo de 2, o resto da divisão do número por 2 precisa ser igual a 0. Observe: 
25 / 2 = 12 (Resto = 1) Significa que 25 não é múltiplo de 2 
12 / 2 = 6 (Resto = 0) Significa que 12 é múltiplo de 2 
Precisamos, então, receber o número informado pelo usuário, efetuar sua divisão por 2 e 
descobrir qual é o resto. Para isso, utilizaremos a função módulo, expressa pelo caractere %. 
Estudamos esse operador na aula 2, você se lembra? Veja como ficaria o algoritmo para esse 
problema: 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num, resto 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 resto=num%2 
9 se (resto==0) 
31 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
10 { 
11 escreva("Este número é múltiplo de 2!") 
12 } 
13 } 
14 } 
 
Agora veja a solução em C++ 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int num, resto; 
6 cout <<"Informe um número qualquer: "; 
7 cin >> num; 
8 resto=num%2; 
9 if (resto==0) 
10 { 
11 cout <<"Este número é múltiplo de 2!"; 
12 } 
13 } 
 
Exercício 
 
1. Leia os enunciados a seguir e crie os algoritmos e os programas em C++ que solucionem 
os problemas propostos. 
• Exiba o quadrado de um número inteiro qualquer informado pelo usuário e diga se ele 
é maior do que 25. 
• Receba a quantidade de dias que uma pessoa já viveu e informe quantos anos ela tem. 
Desconsidere os anos bissextos. Informe se a pessoa já é maior de idade. 
Algoritmo 1 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num, quadrado 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 quadrado = num * num 
9 escreva(num, " ao quadrado é: ", quadrado) 
10 se (quadrado>25) 
11 { 
12 escreva("O quadrado de ", num, " é maior do que 25.") 
13 } 
32 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
14 } 
15 } 
Algoritmo 2 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 real dias, anos 
6 escreva("Quantos dias você já viveu? ") 
7 leia(dias) 
8 anos = dias / 365 
9 escreva("Você já viveu ", anos, " anos.") 
10 se (anos>=18) 
11 { 
12 escreva("Você é maior de idade.") 
13 } 
14 } 
15 } 
Programa 1 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int num, quadrado; 
6 cout << "Informe um número qualquer: "; 
7 cin >> num; 
8 quadrado = num * num; 
9 cout << num << "ao quadrado é: " << quadrado; 
10 if (quadrado>25) 
11 { 
12 cout << "O quadrado de " << num << " é maior do que 25." 
13 } 
14 } 
Programa 2 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float dias, anos; 
6 cout << "Quantos dias você já viveu? "; 
7 cin >> dias; 
8 anos = dias / 365; 
9 cout << "Você já viveu " << anos << "anos."; 
10 if (anos>=18) 
11 { 
33 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
12 cout << "Você é maior de idade." 
13 } 
14 } 
 
Nos dois exemplos que vimos – o primeiro que informa se o usuário pode votar e o segundo que 
diz se o número informado é múltiplo de 2 – a mensagem somente é exibida quando a condição 
avaliada é verdadeira. 
• No primeiro exemplo, se o usuário ainda não tiver 16 anos e, por isso, não puder votar, 
nada será exibido depois da idade dele. 
• No segundo exemplo, nenhuma mensagem é exibida quando o número não é múltiplo 
de 2, mas seria interessante que algo fosse dito ao usuário quando esse for o caso, ou 
ele vai informar um número e nada acontecerá. 
Para casos assim, nos quais desejamos que um bloco de comandos seja executado quando a 
condição for verdadeira e outro bloco seja executado quando a condição for falsa, precisamos 
complementar a estrutura seletiva conforme vemos a seguir: 
Portugol Studio 
se (condição) 
{ 
// Comandos a serem executados se a condição for verdadeira. 
} 
senao 
{ 
// Comandos a serem executados se a condição for falsa. 
} 
 
C++ 
if (condição) 
{ 
// Comandos a serem executados se a condição for verdadeira. 
} 
else 
{ 
// Comandos a serem executados se a condição for falsa. 
} 
 
Revendo as estruturas de seleção utilizadas no primeiro exemplo e adaptando-as com a nova 
possibilidade apresentada, ou seja, de definir o que será feito quando a condição for falsa, 
temos: 
Portugol Studio 
se (idade>=16) 
{ 
escreva("Você já pode votar!") 
34 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
} 
senao 
{ 
escreva("Você ainda não pode votar!")} 
 
C++ 
if (idade>=16) 
{ 
cout <<"Você já pode votar!"; 
} 
else 
{ 
cout <<"Você ainda não pode votar!"; 
} 
Que tal vermos como ficaria a solução que verifica se o número é múltiplo de 2? Observe a 
seguir: 
Portugol Studio 
se (resto==0) 
{ 
escreva("Este número é múltiplo de 2!") 
} 
senao 
{ 
escreva("Este número não é múltiplo de 2!") 
} 
 
C++ 
if (resto==0) 
{ 
cout <<"Este número é múltiplo de 2!"; 
} 
else 
{ 
cout <<"Este número não é múltiplo de 2!"; 
} 
 
2. Escreva os algoritmos e os programas em C++ para os enunciados a seguir. 
• Receba um número qualquer e informe se ele é par ou ímpar. 
• Receba um número qualquer e informe se ele é positivo ou negativo. 
• Receba o valor de um salário e informe se ele é maior ou menor do que o salário mínimo. 
Considere o valor de 1000,00 como sendo o mínimo. 
35 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
Algoritmo 1 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num, resto 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 resto=num%2 
9 se (resto==0) 
10 { 
11 escreva("Este número é par!") 
12 } 
13 senao 
14 { 
15 escreva("Este número é ímpar!") 
16 } 
17 } 
18 } 
Algoritmo 2 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 se (num>0) 
9 { 
10 escreva("Este número é positivo!") 
11 } 
12 senao 
13 { 
14 escreva("Este número é negativo!") 
15 } 
16 } 
17 } 
Algoritmo 3 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 real salario 
6 escreva("Informe o seu salário: R$ ") 
7 leia(salario) 
36 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
8 se (salario>1000) 
9 { 
10 escreva("Seu salário é maior do que o salário mínimo!") 
11 } 
12 senao 
13 { 
14 escreva("Seu salário é menor do que o salário mínimo!") 
15 } 
16 } 
17 } 
 
Programa 1 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int num, resto; 
6 cout <<"Informe um número qualquer: "; 
7 cin >> num; 
8 resto=num%2; 
9 if (resto==0) 
10 { 
11 cout <<"Este número é par!"; 
12 } 
13 else 
14 { 
15 cout <<"Este número é ímpar!"; 
16 } 
17 } 
Programa 2 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int num; 
6 cout <<"Informe um número qualquer: "; 
7 cin >> num; 
8 if (num>0) 
9 { 
10 cout <<"Este número é positivo!"; 
11 } 
12 else 
13 { 
14 cout <<"Este número é negativo!"; 
15 } 
37 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
16 } 
Programa 3 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float salario; 
6 cout <<"Informe o seu salário: R$ "; 
7 cin >> salario; 
8 if (salario>1000) 
9 { 
10 cout <<"Seu salário é maior do que o salário mínimo!"; 
11 } 
12 else 
13 { 
14 cout <<"Seu salário é menor do que o salário mínimo!"; 
15 } 
16 } 
Em todos os exemplos vistos até agora, analisamos somente uma condição nas estruturas de 
condição. O que fazer quando precisarmos avaliar duas ou mais condições? 
Imagine que você deseja receber um número do usuário e informar se o número é par e positivo. 
Para que seja par, o número precisa ser divisível por 2; e para ser positivo, o número precisa ser 
maior do que 0. Veja que temos, então, duas situações distintas para avaliar; o que nos deixa 
com duas condições a serem testadas. Como faríamos neste caso? 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro num, resto 
6 escreva("Informe um número qualquer: ") 
7 leia(num) 
8 resto=num%2 
9 se (resto==0 e num>0) 
10 { 
11 escreva("Este número é par e positivo!") 
12 } 
13 } 
14 } 
 
Agora veja a solução em C++ 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
38 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
5 int num, resto; 
6 cout <<"Informe um número qualquer: "; 
7 cin >> num; 
8 resto=num%2; 
9 if (resto==0 && num>0) 
10 { 
11 cout <<"Este número é par e positivo!"; 
12 } 
13 } 
Observe que, na linha inicial da estrutura seletiva, onde incluímos o teste condicional, vemos 
não só uma, mas duas condições unidas pelo operador lógico E. 
Você deve se lembrar que o resultado de uma expressão lógica utilizando esse operador 
somente será verdadeira quando todos os termos avaliados forem verdadeiros. 
Isso significa que, para que a mensagem Este número é par e positivo! seja impressa, o número 
precisa ser par e o número precisa ser positivo. Se uma dessas condições for falsa, a mensagem 
não será impressa. 
3. Escreva um algoritmo e seu equivalente em C++ que receba uma hora qualquer (sem os 
minutos e os zeros) e informe se é dia ou noite. Será dia se a hora estiver entre 6 e 18. 
Algoritmo 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro hora 
6 escreva("Informe a hora: ") 
7 leia(hora) 
8 se (hora>=6 e hora<=18) 
9 { 
10 escreva("É dia!") 
11 } 
12 senao 
13 { 
14 escreva("É noite!") 
15 } 
16 } 
17 } 
 
Programa 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 int hora; 
39 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
6 cout <<"Informe a hora: "; 
7 cin >> hora; 
8 if (hora>=6 && hora<=18) 
9 { 
10 cout <<"É dia!"; 
11 } 
12 else 
13 { 
14 cout <<"É noite!"; 
15 } 
16 } 
Esta foi a primeira vez que falamos sobre estruturas seletivas, mas continuaremos falando sobre 
elas na próxima aula, quando você vai ver que, muitas vezes, precisamos avaliar não somente 
uma ou duas condições, mas várias delas. 
Imagine quantas opções existem em uma calculadora, por exemplo. Você pode somar, subtrair, 
multiplicar, dividir, calcular potências, guardar o número na memória de cálculo e várias outras 
coisas mais! 
Como será que um programa faz para dar conta de tantas alternativas? 
 
AULA 6: ESTRUTURA DE SELEÇÃO COM MÚLTIPLAS ALTERNATIVAS 
 
Na aula anterior, vimos que existem muitas situações nas quais o fluxo de execução do algoritmo 
ou do programa não pode ser sequencial. Para solucionar essa dificuldade, precisamos recorrer 
às estruturas de seleção, ou estruturas seletivas. Da forma como estudamos até o momento, 
aprendemos que essas estruturas são responsáveis por avaliar condições e decidir o que 
acontecerá quando a condição for verdadeira e o que acontecerá quando a condição for falsa. 
Há situações, entretanto, em que não existem somente duas possibilidades a serem 
consideradas, mas várias delas. Nesses casos, precisaremos aninhar as estruturas seletivas, ou 
seja, escrever várias estruturas de seleção uma dentro da outra. Algumas vezes, essa prática vai 
gerar estruturas seletivas muito complexas e difíceis de serem lidas e compreendidas; e é aí que 
vamos recorrer a outra estrutura que nos permite analisar um número maior de condições de 
forma mais inteligível. Objetivos: 
• Aplicar as estruturas seletivas aninhadas; 
• Identificar uma alternativa à estrutura “se..então..senão”; 
• Estabelecer a estrutura de seleção adequada para escrever algoritmos e programas. 
 
Estrutura seletiva aninhada 
 
Você se lembra do exercício que fizemos, no qual recebíamos um número e informávamos se 
ele era positivo ou negativo? Sabemos que: 
40 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
• Um número será negativo se for menor que zero 
• Um número será positivo se for maior que zero 
Mas e se pedirmos ao usuário para informar um número e ele digitar o número 0? 
Da forma como fizemos a solução, avaliamos somente duas condições para o número – positivo 
ou negativo, mas está claro que temos que considerar uma terceira possibilidade: a de o número 
ser nulo. Para dar conta das três possibilidades e ser capaz de dar uma mensagem correta seja 
qual for a situação – número nulo, número positivo ou número negativo – precisamos adequar 
o código, mais especificamente o trecho que avalia as condições. Observe:Portugol Studio 
se (num>0) 
{ 
escreva("Este número é positivo!") 
} 
senao se (num<0) 
{ 
escreva("Este número é negativo!") 
} 
senao 
{ 
escreva("Este número é nulo!") 
} 
 
C++ 
if (num>0) 
{ 
cout <<"Este número é positivo!"; 
} 
else if (num<0) 
{ 
cout <<"Este número é negativo!"; 
} 
else 
{ 
cout <<"Este número é nulo!"; 
} 
 
Logo após o comando senao ou else, inserimos outro teste de condição, iniciado pelo comando 
se ou if. Com a reformulação da estrutura de seleção, passamos às seguintes análises: 
• Avaliamos a possibilidade de o número ser positivo 
• Se ele não for positivo, avaliamos a possibilidade de o número ser negativo 
41 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
• Caso o número não seja nem positivo nem negativo, sabemos que ele será nulo, pois 
não há nenhuma outra possibilidade a ser avaliada; portanto, a última possibilidade é 
tratada somente por um comando senao ou else. 
É importante que você saiba que não há um limite para aninhamento de estruturas seletivas. 
Agora imagine que você deseja criar uma calculadora básica, capaz de realizar as operações 
matemáticas básicas entre dois números. Veja como poderia ser o algoritmo para solucionar 
esse problema: 
Portugol Studio 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 real num1, num2, resultado, op 
6 escreva("Informe o 1o. número: ") 
7 leia(num1) 
8 escreva("Informe o 2o. número: ") 
9 leia(num2) 
10 escreva("------------------------------------\n") 
11 escreva("Escolha a operação matemática: \n") 
12 escreva("1 - Adição\n") 
13 escreva("2 - Subtração\n") 
14 escreva("3 - Divisão\n") 
15 escreva("4 - Multiplicação\n") 
16 escreva("Opção: ") 
17 leia(op) 
18 se (op==1) 
19 { 
20 resultado=num1+num2 
21 escreva(num1, " + ", num2, " = ", resultado) 
22 } 
23 senao se (op==2) 
24 { 
25 resultado=num1-num2 
26 escreva(num1, " - ", num2, " = ", resultado) 
27 } 
28 senao se (op==3) 
29 { 
30 resultado=num1/num2 
31 escreva(num1, " / ", num2, " = ", resultado) 
32 } 
33 senao se (op==4) 
34 { 
35 resultado=num1*num2 
36 escreva(num1, " * ", num2, " = ", resultado) 
37 } 
42 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
38 senao 
39 { 
40 escreva("Opção inválida!!!") 
41 } 
42 } 
43 } 
No exemplo anterior, avaliamos cinco possibilidades de escolha de opção: 1, 2, 3, 4 ou qualquer 
outro número diferente desses. Dessa forma, se o usuário escolher: 
• Opção 1: Efetuamos a soma entre os números informados 
• Opção 2: O resultado será a subtração entre o primeiro e o segundo números 
• Opção 3: O algoritmo calculará a divisão entre o primeiro e o segundo números 
• Opção 4: A operação de multiplicação será efetuada entre os números 
• Um número diferente: O algoritmo exibirá a mensagem de erro “Opção inválida!!!” 
Vamos ver como fica o programa em C++? 
C++ 
1 #include <iostream> 
2 using namespace std; 
3 int main() 
4 { 
5 float num1, num2, resultado; 
6 int op; 
7 cout <<"Informe o 1o. número: "; 
8 cin >>num1; 
9 cout <<"Informe o 2o. número: "; 
10 cin >>num2; 
11 cout <<"------------------------------------\n"; 
12 cout <<"Escolha a operação matemática: \n"; 
13 cout <<"1 - Adição\n"; 
14 cout <<"2 - Subtração\n"; 
15 cout <<"3 - Divisão\n"; 
16 cout <<"4 - Multiplicação\n"; 
17 cout <<"Opção: "; 
18 cin >>op; 
19 if (op==1) 
20 { 
21 resultado=num1+num2; 
22 cout <<num1 << " + " << num2 << " = " << resultado; 
23 } 
24 else if (op==2) 
25 { 
26 resultado=num1-num2; 
27 cout <<num1 << " - " << num2 << " = " << resultado; 
28 } 
29 else if (op==3) 
43 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
30 { 
31 resultado=num1/num2; 
32 cout <<num1 << " / " << num2 << " = " << resultado; 
33 } 
34 else if (op==4) 
35 { 
36 resultado=num1*num2; 
37 cout <<num1 << " * " << num2 << " = " << resultado; 
38 } 
39 else 
40 { 
41 cout <<"Opção inválida!!!"; 
42 } 
43 } 
Imagine que você precisa criar um algoritmo que, a partir de um número de mês, escreva o 
nome do mês por extenso. Utilizando estruturas de condição aninhadas, teríamos algo assim: 
Portugol Studio 
1 programa 
2 { 
3 funcao inicio() 
4 { 
5 inteiro numMes 
6 cadeia mesExtenso="" 
7 escreva("Informe o número do mês: ") 
8 leia(numMes) 
9 se (numMes==1) 
10 { 
11 mesExtenso="janeiro" 
12 } 
13 senao se (numMes==2) 
14 { 
15 mesExtenso="fevereiro" 
16 } 
17 senao se (numMes==3) 
18 { 
19 mesExtenso="março" 
20 } 
21 senao se (numMes==4) 
22 { 
23 mesExtenso="abril" 
24 } 
25 senao se (numMes==5) 
26 { 
27 mesExtenso="maio" 
28 } 
44 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
29 senao se (numMes==6) 
30 { 
31 mesExtenso="junho" 
32 } 
33 senao se (numMes==7) 
34 { 
35 mesExtenso="julho" 
36 } 
37 senao se (numMes==8) 
38 { 
39 mesExtenso="agosto" 
40 } 
41 senao se (numMes==9) 
42 { 
43 mesExtenso="setembro" 
44 } 
45 senao se (numMes==10) 
46 { 
47 mesExtenso="outubro" 
48 } 
49 senao se (numMes==11) 
50 { 
51 mesExtenso="novembro" 
52 } 
53 senao se (numMes==12) 
54 { 
55 mesExtenso="dezembro" 
56 } 
57 senao 
58 { 
59 escreva("Mês inválido!!!") 
60 } 
61 escreva("O número ", numMes, " equivale ao mês de ", mesExtenso) 
62 } 
63 } 
Um algoritmo imenso, não é mesmo? 
Tudo porque temos doze possibilidades de meses, mais o caso de o usuário digitar um número 
de mês inválido. Em situações nas quais existem muitas condições a serem avaliadas, temos a 
alternativa de utilizar outra estrutura condicional, conforme veremos a seguir. 
 
Exercício 
 
Antes de seguir para o próximo tópico, execute o algoritmo anterior e informe um número de 
mês inválido, como 15, por exemplo. Observe que o algoritmo exibe a mensagem “Mês 
45 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
inválido!!!”, mas exibe também “O número 15 equivale ao mês de”. Isso acontece porque a linha 
responsável por exibir esta última mensagem está fora das condições e será executada 
independentemente do número de mês digitado. Vamos resolver esse problema? 
1. Crie uma variável lógica chamada invalido e inicialize-a com o valor falso. Caso o mês 
digitado seja inválido, troque o valor dessa variável para verdadeiro. Agora, crie um 
teste de condição capaz de avaliar o valor da variável invalido e exibir a mensagem do 
mês por extenso somente quando ele não for inválido. 
Algoritmo 
1 { 
2 funcao inicio() 
3 { 
4 inteiro numMes 
5 cadeia mesExtenso="" 
6 logico invalido=falso 
7 escreva("Informe o número do mês: ") 
8 leia(numMes) 
9 se (numMes==1) 
10 { 
11 mesExtenso="janeiro" 
12 } 
13 ... 
14 senao 
15 { 
16 escreva("Mês inválido!!!") 
17 invalido=verdadeiro 
18 } 
19 se (nao invalido) 
20 { 
21 escreva("O número ", numMes, " equivale ao mês de ", mesExtenso) 
22 } 
23 } 
24 } 
 
2. Leia os enunciados a seguir e crie os algoritmos e os programas em C++ que solucionem 
os problemas propostos. 
a) Peça ao usuário que informe a medida de cada um dos três lados de um triângulo e 
informe se ele é equilátero, escaleno ou isósceles. Veja como é a classificação dos 
triângulos: 
• Equilátero: Três lados com a mesma medida; 
• Escaleno: Dois lados quaisquer com a mesma medida; 
• Isósceles: Três lados com medidas diferentes. 
Algoritmo 
1 programa 
2 { 
46 
 
INTRODUÇÃO À PROGRAMAÇÃO ESTRUTURADA EM C 
3 funcao inicio() 
4 { 
5 real lado1, lado2, lado3 
6 escreva("Medida do primeiro lado: ") 
7 leia(lado1) 
8 escreva("Medida do segundo lado: ") 
9 leia(lado2) 
10 escreva("Medida do terceiro lado: ") 
11 leia(lado3) 
12 se (lado1==lado2 e lado2==lado3) 
13 { 
14 escreva("Este é um triângulo equilátero!") 
15 } 
16 senao se (lado1==lado2 ou lado2==lado3 ou lado3==lado1) 
17 { 
18 escreva("Este é um triângulo escaleno!") 
19 } 
20 senao 
21

Continue navegando