Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Lógica de
Programação I
Universidade do Estado do Amazonas
Lógica de 
Programação I
E d i ç õ e s
2 0 0 7
Danielle Pompeu Noronha Pontes
Danielle Gordiano Valente
Marcos Fabiano P. Santiago
Tecnologia em Análise e Desenvolvimento de Sistemas
(Sistema Presencial Mediado)
Escola Superior de Tecnologia
Vicente de Paulo Queiroz Nogueira
Diretor
Ficha Técnica
Pontes, Danielle Pompeu Noronha.
Lógica de programação I / Danielle Pompeu Noronha Pontes – 
Manaus/AM: UEA Edições, 2007. – (Tecnologia em Análise e 
Desenvolvimento de Sistemas. 2. Período)
P814log
130 p.: il. ; 23 cm.
Inclui bibliografia e anexo.
ISBN
1. Programação - Informática. I. Valente, Danielle Gordiano. II. 
Santiago, Marcos Fabiano P. III. Série. IV. Título.
CDU (1997): 004.421
Governo do Estado do Amazonas
Carlos Eduardo de Souza Braga
Governador do Estado
Omar José Abdel Aziz
Vice-Governador do Estado
Universidade do Estado do Amazonas
Marilene Corrêa da Silva Freitas
Reitora
Carlos Eduardo de Souza Gonçalves
Vice-Reitor
Fares Franc Abinader Rodrigues
Pró-Reitor de Administração
Osail Medeiros de Souza
Pró-Reitor de Planejamento
Edinea Mascarenhas Dias
Pró-Reitora de Ensino de Graduação
José Luiz de Souza Pio
Pró-Reitor de Pós-Graduação e Pesquisa
Rogelio Casado Marinho Filho
Pró-Reitor de Extensão e Assuntos Comunitários
Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
(Sistema Presencial Mediado por Tecnologia)
Odwald Schreder
Coordenador Geral
Ângela Timótia Pereira Lima
Coordenadora Pedagógica
Ednaldo Coelho Pereira
Coordenador Técnico Administrativo
Projeto gráfico
Aurelino da Silva Bentes
Revisão 
Ângela Timótia Pereira Lima
Danielle Pompeu Noronha Pontes
Especialista em Informática
pela Universidade Federal do Ceará - UFC
Danielle Gordiano Valente
Professora da Escola Superior de Tecnologia (EST/UEA)
Mestre em Ciência da Computação
pela Universidade de Minas Gerais - UFMG
Marcus Fabiano Praciano Santiago
Professor da Escola Superior de Tecnologia (EST/UEA)
Mestre em Ciência da Computação
pela Universidade de Brasília - UnB
Professora da Escola Superior de Tecnologia (EST/UEA)
Perfil dos Autores
Palavra da Reitora
Nós últimos anos, o avanço da tecnologia da informática mudou os 
conceitos de ensino e de trabalho. A preocupação com o que se denominou de 
“inclusão digital” passou a ser um problema urgente a ser enfrentado pelos 
dirigentes do País, já que todos os processos de novas tecnologias deságuam 
no conhecimento de informática. No Amazonas, a dificuldade de locomoção 
na região, por falta de rodovias, por sua grande extensão territorial, pela 
baixa densidade demográfica e pelo subdesenvolvimento secular imposto à 
população ribeirinha, torna-se árduo o esforço do Governo para tornar 
realidade à inclusão digital.
A UEA, que já nasceu moderna, incorporando tecnologias educacionais 
de ponta, utilizando-se particularmente da informática pela massificação do 
uso de microcomputadores combinados com uma rede complexa de acesso à 
Internet, não poderia ficar alheia a essa necessidade premente. Por isso, 
propôs e realizou o primeiro vestibular para levar a 12 municípios um curso 
que formasse a mão-de-obra inicial que tornasse a inclusão digital uma 
realidade em nosso Estado.
A proposta do curso de Tecnologia em Análise e Desenvolvimento de 
Sistemas oferecido pela UEA vislumbra criar mão-de-obra qualificada em um 
número significativo de localidades do Estado, cabendo às pessoas 
beneficiadas com essa iniciativa a tarefa de irradiar o uso de tecnologias de 
informática, abrindo caminhos novos e suscitando novos empregos para a 
população local, consolidando, assim, o exercício da cidadania.
Professora Doutora Marilene Corrêa da Silva Freitas
Reitora da Universidade do Estado do Amazonas
09
Sumário
1. Introdução ao Estudo da Resolução de Problemas utilizando o 
Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1. Introdução à Resolução de Problemas . . . . . . . . . . . . 11
1.2. Descrevendo Soluções . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4. Lógica e Algoritmos . . . . . . . . . . . . . . . . . . . . . . . 20
1.5. Algoritmos e Processamento de Dados . . . . . . . . . . . . 24
1.6. Lógica de Programação . . . . . . . . . . . . . . . . . . . . . 28
2. Descrevendo Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1. Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2. 2. Fluxogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3. Português Estruturado ou Pseudocódigo . . . . . . . . . . . 36
3. O VisuAlg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1. Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2. A Tela Principal do VisuAlg 2.0 . . . . . . . . . . . . . . . . . 40
3.2.1 A barra de Tarefas do VisuAlg . . . . . . . . . . . . . . 41
3.2.2 Barra de Status . . . . . . . . . . . . . . . . . . . . . . 43
3.2.3 Quadro de Variáveis . . . . . . . . . . . . . . . . . . . 44
3.3. A Linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4. Tipos de Dados e Variáveis . . . . . . . . . . . . . . . . . . . . . . 46
4.1. Introdução: funcionamento do acesso à memória em um 
computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Constantes e Variáveis . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Conceitos Iniciais . . . . . . . . . . . . . . . . . . . . . 49
4.2.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.3. Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.4. Identificadores . . . . . . . . . . . . . . . . . . . . . . 52
4.3. Conceito de tipos de dados . . . . . . . . . . . . . . . . . . . 55
4.3.1 Tipos Primitivos . . . . . . . . . . . . . . . . . . . . . . 55
4.4. Declaração de Variáveis e Constantes. . . . . . . . . . . . . 61
4.5 Uso de Variáveis na Entrada e Saída de Dados . . . . . . . . 62
4.6 Palavras Reservadas . . . . . . . . . . . . . . . . . . . . . . . . 67
4.7 Revisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5. Expressões e Operadores . . . . . . . . . . . . . . . . . . . . . . . 69
5.1.Operador de Atribuição. . . . . . . . . . . . . . . . . . . . . . 69
5.2 Expressões Aritméticas: . . . . . . . . . . . . . . . . . . . . . 72
5.2.1. Operadores aritméticos . . . . . . . . . . . . . . . . . 72
5.3 Expressões Lógicas . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3.1. Operadores relacionais . . . . . . . . . . . . . . . . . . 75
5.3.2. Operadores lógicos . . . . . . . . . . . . . . . . . . . . 76
6. Estrutura de um algoritmo . . . . . . . . . . . . . . . . . . . . . . 81
6.1 Estruturas de controle . . . . . . . . . . . . . . . . . . . . . . 82
6.1.1 Estrutura Seqüencial. . . . . . . . . . . . . . . . . . . . 82
6.1.2 Estrutura de Seleção. . . . . . . . . . . . . . . . . . . . 87
6.1.3 Estrutura de repetição . . . . . . . . . . . . . . . . . . 102
6.2 Combinando as estruturas de controle . . . . . . . . . . . . 109
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Anexo - Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
11
Introdução ao Estudo
da Resolução
de Problemas 
Capítulo 1
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
No dia-a-dia rotineiramente encontramos e resolvemos 
problemas. Muitos deles nós mesmos criamos, outros somos 
obrigados a enfrentar. Para solucioná-los, temos que verificar de 
que recursos dispomos para então poder elaborar uma solução. 
Quando utilizamosa palavra problema, queremos 
significar as dificuldades que impedem que um objetivo seja 
atingido [MOURSUND07]. Alguns podem ser bastante simples. Por 
exemplo, ao calçar os sapatos você tem de atar os cadarços. 
Observe que da forma como definimos um “problema”, resolvê-
lo tem o mesmo significado de cumprir uma tarefa. 
Pense em algumas das tarefas que concluiu hoje – alguns 
dos problemas que resolveu. Tomou café da manhã? Se o fez, 
Utilizando o computador
1.1. Introdução à Resolução de Problemas
12
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
resolveu o problema de se alimentar. Pagou contas? Se o fez, 
resolveu um problema de pagamento. Discutiu com alguém? Se o 
fez, resolveu um problema interpessoal.
Vamos levar este exercício um pouco além. Para cada 
problema, vamos pensar nos recursos necessários para resolvê-
los. Talvez, você tenha resolvido os problemas apenas com o uso 
de sua mente e seu corpo. Para outros problemas talvez seja 
necessária a ajuda de amigos. Ou ainda, para outros, seja 
necessário o uso de ferramentas tais como um telefone, uma 
calculadora ou um carro. 
A tabela 1.1 (a seguir) apresenta um resumo de informações 
sobre problemas do dia-a-dia. Ela é útil para compreender dois 
fatos:
? Rotineiramente encontramos e resolvemos uma grande 
variedade de problemas;
? Na medida em que resolvemos problemas, utilizamos 
recursos tais como o raciocínio, nosso corpo, ferramentas 
ou dinheiro para adquirir outros recursos. 
Dor de cabeça
Problema Recurso
Fome de manhã (café da manhã) Frutas na geladeira
Transporte para o trabalho Carro
Aspirina, descanso
Pagamento de Contas Dinheiro
Tabela 1.1 : Problemas e recursos
Computadores são recursos que ajudam na resolução de 
certos tipos de problemas. Ele pode ser visto como uma ferra-
menta muito poderosa e versátil. Há várias formas para um 
computador ser utilizado para minimizar o tempo e o esforço 
13
necessários para encontrar uma solução. Assim, vale a pena se 
esforçar para aprender a utilizar esta importante ferramenta. 
1.1 Pense em 6 problemas que você resolveu e descreva os 
recursos que utilizou na solução, preenchendo a tabela 
abaixo.
ATIVIDADES
Descrição do Problema Recurso
1.2. Descrevendo Soluções
O que é necessário para se elaborar uma solução para um 
problema? Parece uma pergunta simples, mas envolve estabele-
cermos algumas definições formais.
 Para descobrir quais são, vamos fazer um pequeno exercí-
cio. Imagine que alguém lhe pede para descobrir um defeito 
mecânico em um carro utilizando apenas instruções fornecidas 
pelo telefone a uma pessoa inexperiente. Você poderia resolver 
este problema? 
A resposta seria dificilmente. Mesmo um mecânico hábil 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
14
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
não teria como obter todas as informações sobre o defeito do 
carro sem testá-lo ou visualizá-lo (o problema). 
Vamos fazer outro exercício. Imagine que alguém lhe 
informe que um quadro está “feio” e simplesmente lhe pede 
para torná-lo “bonito”, sem lhe fornecer maiores informações. 
Neste caso mesmo que você seja um às da pintura não poderá 
resolver o problema, pois não sabe o que tornaria o quadro 
“bonito” para seu cliente (a solução).
Com estes dois exemplos descobrimos algumas condições 
necessárias para se resolver um problema. A primeira é que a 
situação inicial em que o problema se desenvolve esteja bem 
definida (no exemplo do defeito no carro, não se sabia qual este 
era). A segunda é que o objetivo a ser alcançado com a solução 
também esteja (no exemplo do quadro, não se sabia o que era 
“bonito”). 
Uma terceira condição é ter a posse de recursos para 
resolver o problema. Os recursos podem ser, por exemplo, 
ferramentas ou mão-de-obra. Esta condição é bem fácil de ser 
visualizada. Por exemplo, se você estiver com dor de cabeça em 
um ambiente barulhento e sem remédio, não poderá resolver seu 
problema: não há os recursos (remédio ou local para descanso). 
Outro exemplo seria resolver o problema do pagamento de 
contas vencidas sem ter dinheiro: não há como resolver este 
problema por falta de recursos!
Como já comentamos, o computador, objeto de nosso 
estudo, é uma ferramenta a ser utilizada como recurso na solu-
ção de problemas. 
Por último é necessário o comprometimento de alguém 
 
15
para implementar a solução utilizando os recursos. Pode ser uma 
pessoa, uma empresa, o governo, em suma tem de haver uma 
parte interessada em resolver o problema. 
Colocando o que discutimos de uma maneira mais formal, 
resolver um problema significa mudar uma situação inicial para 
uma situação desejada (objetivo) [MOURSUND07]. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Figura 1.1: Processo de solução de problemas
Resumindo, você pode solucionar um problema se as 
seguintes condições são satisfeitas:
1. Você tem uma situação inicial claramente definida.
2. Você tem uma situação desejada (objetivo) claramente 
definida.
3. Você tem a posse dos recursos necessários para alterar a 
situação inicial para a final. 
4. Há comprometimento – existe alguém com o compromis-
so de solucionar o problema com seus atributos tais 
como energia, esforço físico ou conhecimento.
1.2. O dono de um restaurante considera que sua comida é boa. 
No entanto, um cliente lhe informa que sua comida é ruim, 
sem maiores detalhes. Ele pode resolver o problema de 
agradar ao cliente? Por que?
ATIVIDADES
 
Situação
Inicial
 
 
A
 
Situação
Desejada
(Objetivo) 
B 
Como ir de A para B?
 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
16
1.3.Seu chefe lhe diz simplesmente que seu relatório está muito 
ruim, sem fornecer motivos para tal, e que você precisa 
melhorá-lo. Você será capaz de resolver o problema (fazer 
com que seu relatório agrade ao chefe)? Por quê?
1.4.Uma pessoa lhe diz que suas roupas não são boas e que 
precisa melhorar seu vestuário, sem lhe fornecer maiores 
detalhes. Mesmo que você possua dinheiro e vá a uma loja 
de vestuário você poderia resolver o problema de “vestir-se 
melhor”? Por quê?
1.5. Escolha 3 dos problemas de seu dia-a-dia que citou anterior-
mente e descreva a situação inicial, a desejada (objetivo) e 
os recursos de que dispõe. 
1.3. Algoritmos
Computadores são extraordinárias ferramentas a serem 
utilizadas em soluções de problemas. No entanto, nem todas as 
soluções são passíveis de resolução utilizando o computador. 
Quais seriam as condições para a utilização de um computador 
como ferramenta?
Há duas condições necessárias. Elas decorrem do próprio 
funcionamento de um computador e foram descritas pelo mate-
mático inglês Alan Turing (responsável pela criação do primeiro 
computador eletrônico e pelo que é chamada a “Teoria da 
Computação”). 
A primeira é que a descrição da solução deve ser clara e 
precisa (em termos mais formais não deve ser ambígua). Em 
outras palavras, deve ser possível descrever cada parte (passo) 
17
da solução com tantos detalhes que qualquer um (mesmo uma 
máquina) possa executá-la. Isto requer não apenas saber exata-
mente como executar cada passo, mas muitas vezes também a 
ordem exata de sua execução. 
A segunda é a de que ao final da execução da descrição da 
solução, o problema deve ser resolvido. Em outras palavras, 
quem está encarregado da resolução do problema deve poder 
atingir seu objetivo em um tempo e um número de passos finito. 
Lembre-se que ter um objetivo definido/situação desejada é 
uma das condições para elaborar uma solução, como vimos na 
seção anterior. 
Uma descrição passo-a-passo de uma solução atendendo às 
condiçõesque acabamos de citar é comumente chamada de 
algoritmo. Deve-se ressaltar que há grandes divergências sobre 
a definição de algoritmo e os tipos de soluções que podem ser 
adequadas ao termo. A definição que utilizaremos é adequada 
para os problemas computacionais, atendendo às duas condições 
que descrevemos: “uma seqüência finita e ordenada de passos 
sem ambigüidade que leva à resolução de um problema” 
[BALDWIN04]. 
Apesar de o computador ser relativamente recente (os 
primeiros foram criados na década de 40), a utilização de 
algoritmos para resolver problemas é bem antiga. O algoritmo de 
Euclides, por exemplo, foi criado por volta de 300 anos antes de 
Cristo, sendo utilizado para descobrir o Máximo Divisor Comum 
(MDC) entre dois números inteiros conhecidos. 
A palavra algoritmo tem origem no sobrenome, 
Al-Khwarizmi, do matemático persa do século IX, Mohamed ben 
Musa, cujas obras foram traduzidas no ocidente cristão no século 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
18
XII, tendo uma delas recebido o nome "Algorithmi de numero 
indorum", sobre os algoritmos usando o sistema de numeração 
decimal (indiano). Outros autores, contudo, defendem a origem 
da palavra em Al-goreten. 
Os algoritmos são muito comuns para resolver problemas do 
nosso cotidiano. Para exemplificar descrevemos uma atividade 
bem conhecida: trocar uma lâmpada. Apesar de parecer óbvio 
demais, muitas vezes fazemos este tipo de atividade inconscien-
temente, sem percebermos os pequenos detalhes. Vejamos 
como seria descrevê-la passo a passo:
1. pegar uma escada;
2. posicionar a escada embaixo da lâmpada;
3. buscar uma lâmpada nova;
4. subir na escada;
5. retirar a lâmpada velha;
6. colocar a lâmpada nova.
Observe que a descrição que apresentamos é uma seqüên-
cia de passos que descrevem claramente (sem ambigüidades) o 
que deve ser feito e que leva à solução do problema (trocar a 
lâmpada). Portanto, é um algoritmo.
A forma como estamos descrendo os algoritmos é chamada 
de “Linguagem narrativa”, e é bastante próxima do linguajar que 
utilizamos em nosso cotidiano. Consiste apenas em especificar 
cada passo do algoritmo com um verbo e um complemento, 
representando a ação a ser realizada. Observe que numeramos 
cada passo para representar a seqüência da execução (a ordem). 
Infelizmente, esta forma de representar algoritmos é prolixa, 
imprecisa e freqüentemente pouco confiável como um veículo 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
19
de transferir informação. Como veremos, há maneiras melhores 
de descrever algoritmos. 
Há vários outros problemas de nosso dia-a-dia que podería-
mos descrever desta forma:
Consumir um chiclete:
1. pegar o chiclete;
2. retirar o papel;
3. mascar o chiclete;
4. jogar o papel no lixo;
5. jogar o chiclete no lixo.
 Escovar os dentes:
1. Pegar a escova;
2. Colocar a pasta de dentes na escova;
3. Molhar a escova;
4. Escovar os dentes;
5. Enxaguar a boca;
6. Enxaguar a escova.
Figura 1.2: Visualização de formas para atingir um objetivo 
Deve-se frisar que assim como pode haver várias soluções 
para um mesmo problema, também pode haver vários algorit-
mos, mas sempre chegando ao resultado (objetivo) desejado de 
forma correta. Sendo assim, podem existir vários algoritmos que 
OBJETIVO
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
20
solucionem um problema, alguns mais rápidos, outros mais 
seguros, mas todos conseguem resolver o problema corretamen-
te, apesar das diferenças existentes no percurso de toda a lógica 
proposta como solução.
1.6 Crie um algoritmo para “tomar banho”.
1.7 Faça um algoritmo para somar dois números e multiplicar o 
resultado pelo primeiro número.
1.8 Descreva com detalhes o algoritmo para trocar um pneu de 
um carro.
1.9 Selecione dois dentre os problemas de seu dia-a-dia que você 
descreveu nos exercícios das seções anteriores e elabore 
algoritmos para solucioná-los. 
ATIVIDADES
1.4. Lógica e Algoritmos
Como vimos, para solucionar um problema utilizando um 
computador como ferramenta é necessário que a solução seja 
descrita por um algoritmo. No entanto, como devemos criá-lo?
Para elaborar um algoritmo é necessário encontrar uma 
solução e descrevê-la em uma seqüência finita de passos que 
levam ao objetivo desejado. Freqüentemente esta não é uma 
tarefa fácil, sendo necessário elaborar um raciocínio por vezes 
complexo para implementá-la. 
A lógica é o estudo do raciocínio correto, sendo uma ativi-
dade mental [Shapiro 06]. Ela é uma ferramenta importante para 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
21
a elaboração de algoritmos. Sempre que se quer pensar, falar ou 
escrever corretamente, deve-se colocar os pensamentos em 
ordem. A seguir é mostrado um exemplo de inferência utilizando 
a lógica:
- Todo mamífero é animal
- Todo cavalo é mamífero
- Portanto, todo cavalo é animal
A utilização da lógica deve ser considerada por todos, mas 
para alguns profissionais, como os da área de tecnologia de 
informação, ela requer sempre muita atenção e desempenho 
rápido do raciocínio sobre o conhecimento disponível. Outros 
exemplos abaixo:
a) A gaveta está fechada.
 A bala está na gaveta.
 Preciso primeiro abrir a gaveta, para depois pegar a bala.
b) Moramos em três pessoas.
 Nenhum de nós dois quebrou o vaso de porcelana.
 Quem quebrou o vaso?
Criar um raciocínio lógico coerente exige uma organização 
sobre os pensamentos a serem realizados por um indivíduo ou 
mesmo por cada indivíduo da equipe que busca a solução. A 
realização deste tipo de atividade demanda de tempo, compre-
ensão e cooperação dos envolvidos que precisam entender todas 
as informações envolvidas em tal processo. Sendo assim, é 
fundamental a organização clara e simples de todos os raciocíni-
os possíveis a serem elaborados e testados na busca da solução 
para um problema computacional. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
22
A seguir é apresentada uma solução para um problema de 
lógica bastante conhecido, chamado de “Torres de Hanói”. 
Considere o seguinte problema: 
Temos três hastes. Uma das hastes serve de suporte para 
três discos de tamanhos diferentes. Os discos menores são 
sempre colocados sobre os discos maiores. A figura abaixo mostra 
uma possível situação inicial das hastes e discos. 
Figura 1.3: Situação Inicial dos Discos no Problema das Torres de Hanói
Desejamos mover todos os discos para outra haste, porém 
só podemos movimentar um disco de cada vez e um disco maior 
nunca pode ser colocado sobre um disco de menor tamanho. 
Pense em uma solução. Você consegue resolver este proble-
ma? Basta apenas utilizar o raciocínio lógico.
A solução (em linguagem narrativa) é apresentada a seguir. 
Nomeamos as hastes como 1 2 e 3 e os discos como p, m e g. 
Considera-se que inicialmente os discos estão na haste 1. Os 
passos são: 
1. mover o disco p para a haste 2. 
2. mover o disco m para a haste 3. 
3. mover o disco p para a haste 3. 
4. mover o disco g para a haste 2. 
5. mover o disco p para a haste 1. 
6. mover o disco m para a haste 2. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
23
Figura 1.4: Solução do Problema das Torres de Hanói
7. mover o disco p para a haste 2. 
Podemos também representar a solução em forma gráfica, 
desenhando as hastes e a posição dos discos a cada momento (ou 
passo). 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
24
1.5. Algoritmos e Processamento de Dados
Até agora utilizamos exemplos de problemasdo cotidiano 
para a criação de algoritmos. Os computadores, em geral, não 
Crie algoritmos em linguagem narrativa utilizando o raciocínio 
lógico para resolver os seguintes problemas.
1.10. Temos três recipientes de tamanhos distintos: o primeiro 
com capacidade para 8 litros, outro para 5 litros e o tercei-
ro com capacidade para 3 litros. O recipiente de 8 litros 
está totalmente cheio. Deseja-se colocar 4 litros em dois 
recipientes. Considere que os recipientes não sejam 
graduados. 
1.11. Numa determinada noite, acontece uma queda de energia. 
Você sabia que poderia encontrar uma vela na gaveta da 
cozinha, um lampião embaixo da cama, fusíveis de reserva 
no armário da sala e fósforos na estante da cozinha. 
Descreva a seqüência de passos que poderia ser utilizada 
para diagnosticar e resolver o problema, o que pode ser 
previsto em duas possibilidades: 
a) o fusível queimou; 
b) a queda é na estação da companhia elétrica. 
1.12. Um homem quer atravessar um rio com um barco que pode 
carregar ele mesmo e apenas mais uma de suas três cargas: 
um lobo, um carneiro e um maço de alfafas. O que o 
homem deve fazer para atravessar o rio sem perder nenhu-
ma de suas cargas, sabendo-se que o carneiro não pode 
ficar sozinho com a alfafa e o lobo não pode ficar sozinho 
com o carneiro.
ATIVIDADES
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
25
são utilizados para tratar destes problemas. Os problemas que 
suportam tratamento computacional envolvem grandes quanti-
dades de dados ou são problemas de natureza complexa, exigin-
do a execução de um grande número de passos para alcançar a 
solução. Isto porque o computador, como ferramenta, é utilizado 
para transformar dados/informações em outros em uma ativida-
de conhecida como processamento de dados. 
Pode-se definir processamento de dados qualquer ativida-
de que, utilizando informações (ou dados), efetua transforma-
ções para obter novas informações (ou dados) como resultado. 
De forma geral, podemos compreender um sistema de processa-
mento de dados como um conjunto de três etapas fundamentais. 
Entrada de dados, Processamento e Saída de dados.
Entrada
Processamento
Saída
 Figura 1.5: Representação do Processamento de Dados
?Entrada de dados: é o ato de fornecer dados ao computa-
dor que os manipulará de acordo com o que foi elaborado 
no algoritmo. 
?Processamento: consiste na manipulação dos dados 
armazenados de forma a gerar os resultados desejados. É 
neste ponto que os algoritmos são executados. O proces-
samento é relacionado diretamente com os dispositivos 
de armazenamento de dados (memórias), pois estão neles 
armazenados os dados que serão acessados e manipulados 
para efetivação do processamento desejado, que possi-
velmente também armazenará os resultados obtidos 
neste mesmo recurso. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
26
?Saída de dados: é a ação, ou processamento, que o com-
putador realiza para disponibilizar ao usuário os resulta-
dos obtidos no processamento. 
Normalmente, os dados brutos informados e processados 
geram os dados informativos desejados pelo usuário que possui 
algumas necessidades. Estes dados processados e contextualiza-
dos para um fim ou momento específico são chamados de infor-
mação.
Para que o computador realize alguma tarefa é necessário 
que nos comuniquemos com ele. O que nos permite este tipo de 
comunicação são os dispositivos de entrada e os dispositivos de 
saída acoplados ao computador (periféricos).
O termo dispositivo de entrada representa o grupo de 
componentes que podem ser ligados (ou conectados) ao compu-
tador para permitir que o mundo externo (mundo real) envie 
dados a ele. Por exemplo, o teclado, que permite ao usuário se 
comunicar com o computador, fornecendo dados a serem usados 
no processamento de alguma informação, o mouse. 
O termo dispositivo de saída representa o grupo de compo-
nentes que podem ser ligados (ou conectados) ao computador, 
permitindo o envie de dados dele ao mundo externo (mundo 
real). Por exemplo, o monitor, que permite ao computador 
comunicar o resultado de uma operação ao usuário que precisa 
de tal informação. Outro exemplo de dispositivo de saída seria a 
impressora.
Alguns dispositivos podem ser tanto entrada como saída de 
dados.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
27
Exemplos são o pen drive, o disquete, o CD. 
Como o processamento só ocorre com dados que estejam 
armazenados em memória, então os processos relacionados ao 
armazenamento e recuperação de dados são de fundamental 
importância ao funcionamento do computador.
Como exemplo de um algoritmo computacional, imagine o 
seguinte problema. Calcular a média final dos alunos da 6ª Série. 
Os alunos realizarão quatro provas: P1, P2, P3 e P4. A Média 
Final é calculada por: 
(P1 + P2 + P3 + P4) / 4. 
Para montar o algoritmo proposto, faremos três perguntas: 
a) Quais são os dados de entrada? 
R: Os dados de entrada são P1, P2, P3 e P4 
b) Qual será o processamento a ser utilizado? 
R: O procedimento será somar todos os dados de entrada e 
dividi-los por 4 (quatro) (P1 + P2 + P3 + P4)/4 
c) Quais serão os dados de saída? 
R: O dado de saída será a média final.
pen drive disquete CD
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
28
Identifique as entradas, o processamento e as saídas de dados e 
descreva em linguagem narrativa os seguintes algoritmos com-
putacionais. 
1.13 Algoritmo que a partir de dois números N1 e N2 retorna o 
produto entre esses números.
1.14 Algoritmo que a partir de um valor fornecido em real e da 
cotação do real para o dólar informe ao usuário o valor 
equivalente em dólar americano.
1.15 Algoritmo que a partir de um número inteiro N que repre-
senta a quantidade de metros, retorna a quantos quilôme-
tros e centímetros ele corresponde.
ATIVIDADES
1.6.Lógica de Programação
A implementação das lógicas, elaboradas e representadas 
em um algoritmo, é realizada sobre o computador, por meio da 
transcrição, representada no algoritmo, para uma linguagem de 
programação, que também possibilitará a compreensão e execu-
ção das instruções pelo computador. Essa transcrição também 
pode ser chamada de tradução, pois somente efetuará mudança 
na forma de descrever o raciocínio a ser implementado no com-
putador. O resultado da transcrição é o programa. De acordo com 
O algoritmo computacional proposto poderia ser descrito 
da seguinte forma:
1. Receber as Notas P1, P2, P3, P4 (Entrada de Dados)
2. Calcular a média final (P1 + P2 + P3 + P4)/4
3. Retornar a média final ao usuário (saída de dados).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
29
Niklaus Wirth [WIRTH 86], "Programas são formulações comple-
tas de algoritmos abstratos, baseados em representações espe-
cíficas de dados.”. 
Antes da transcrição de um programa é necessário que os 
algoritmos que serão utilizados na solução do problema estejam 
definidos e elaborados. Poderíamos então, de maneira simplifi-
cada, dividir a tarefa de programação em duas etapas: 
?Modelização (ou Resolução) do Problema: determinação 
do modelo de solução para o problema proposto na forma 
de um algoritmo computacional. Assim, a elaboração de 
um algoritmo é o primeiro passo para a preparação de um 
programa de computador. Este algoritmo deve ser inde-
pendente da linguagem de programação que será utiliza-
da. 
?Implementação: é a transformação (ou codificação) do 
algoritmo em alguma Linguagem de Programação adequa-
da ao modelo elaborado. 
Figura 1.6: Representação do processo de “transcrição”
A
lg
or
it
m
o
Linguagem de
Programação
Pr
og
ra
m
a
Tradução
?? ??? ?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
30
Problema
Solução
na forma de 
Algoritmo
Solução como um
programa de computador
Fase de
Resolução
do Problema
1
Fase de Implementação
(Codificação do Algoritmo
em alguma Ling. de Programação
2
Figura 1.7: Representação simplificada da Programação
?? ??
? ?
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
31
Descrevendo Algoritmos
Capítulo 2
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
2.1. Introdução
Até agora representamos algoritmos utilizando a linguagem 
narrativa com a especificação verbal do algoritmo em linguagem 
natural. Como citamos, esta é uma forma prolixa e imprecisa, 
porém de fácil aprendizagem. 
Para entender os motivos que tornam a linguagem narrativa 
ineficaz para a representação de algoritmos, vamos descrever, 
na tabela 2.1, duas maneiras diferentes de fazer um algoritmo 
de uma tarefa corriqueira: escovar os dentes:
Ordem Algoritmo 1 Algoritmo 2 
1 Pegar a escova Colocar a pasta na escova
2 Pegar o creme dental Molhar a escova
3 Colocar o creme
dental da escova
Escovar
4 Molhar a escova Enxaguar a boca
5 Escovar Enxaguar a escova
6 Enxaguar a boca
7 Limpar a escova
Tabela 2.1: Algoritmo para escovar os dentes
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
32
Observe que as duas descrições são algoritmos similares 
para a mesma tarefa. No entanto, por estarem em linguagem 
narrativa, possuem diferenças de representação: o algoritmo 1 
divide o passo “colocar a pasta na escova” do algoritmo 2 em três 
outros diferentes e o último passo “limpar a escova” em um é 
descrito como “enxaguar a escova” em outro. No entanto, ambos 
estão corretos por representar soluções para o problema de 
“escovar os dentes”. 
Duas pessoas que executem os algoritmos podem compre-
endê-los de maneiras diferentes. “Pasta” e “creme dental” são a 
mesma coisa? “Limpar” e “enxaguar” também? Pode-se passar a 
pasta na escova sem pegá-la primeiro? Há uma imprecisão nos 
algoritmos que pode levar a diversas interpretações. Observe 
que, mesmo neste caso simples, os resultados podem ser dife-
rentes: a escova pode não ficar limpa ao final dependendo da 
interpretação de “enxaguar”. 
Este problema acontece devido ao fato de que na lingua-
gem narrativa, pode-se utilizar diversos termos para representar 
uma mesma ação. No exemplo, utilizou-se “limpar” e “enxa-
guar”. Ao mesmo tempo, não há uma definição sobre o que pode 
e o que não pode ser considerado um “passo” do algoritmo: 
enquanto em um uma ação é representada por um único passo 
(“colocar a pasta na escova”) no outro é dividido em três. 
Há diversas técnicas para a descrição de algoritmos que 
resolvem os problemas da linguagem narrativa. A seguir, serão 
mostradas duas muito utilizadas para a representação de algorit-
mos computacionais: fluxogramas e pseudocódigo. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
33
Tabela 2.2: Figuras utilizadas em Fluxograma
2.1 Crie algoritmos para solucionar os seguintes problemas em 
linguagem narrativa.
? Trocar um pneu.
? Tomar banho.
A seguir compare seu algoritmo com o de colegas e verifique as 
diferenças. 
ATIVIDADES
2.2. Fluxogramas
O fluxograma utiliza figuras geométricas predefinidas para 
descrever as ações (ou instruções) a serem realizadas na resolu-
ção de um problema. Um fluxograma mostra, de forma gráfica, a 
lógica de um algoritmo, enfatizando passos individuais e o fluxo 
de execução. 
As principais figuras usadas em fluxogramas são relaciona-
das na tabela 2.2, apresentadas a seguir:
FIGURA SIGNIFICADO 
Figura para definir início e fim do algoritmo.
Figura usada no processamento de cálculo, 
atribuições e processamento de dados em geral.
Figura utilizada na representação de entrada de 
dados.
Figura utilizada para representação da saída de 
dados.
Figura que indica o processamento seletivo ou 
condicional, possibilitando o desvio no caminho 
do processamento.
Símbolo geométrico usado como conector.
Símbolo que identifica o sentido do fluxo de 
dados, permitindo a conexão entre as outras 
figuras existentes.
Para a representação de um algoritmo em fluxograma 
temos algumas regras básicas:
? o início e o fim de um algoritmo devem ser representados 
em separado com a figura ;
? cada “passo” da execução do algoritmo deve ser repre-
sentado em separado e descrito dentro de uma figura. Por 
enquanto, a principal figura que utilizaremos é o retângu-
lo, que representa na maior parte das vezes a execução 
de um “passo”. As outras serão apresentadas no decorrer 
do curso à medida que novos conceitos forem sendo 
apresentados;
Início
Colocar a pasta na escova
Molhar a escova
Escovar
Enxaguar a boca
Enxaguar a escova
Fim
Figura 2.1: Fluxograma do
Algoritmo de “Escovar os Dentes”
?as figuras devem ser conectadas 
por setas que indicam a seqüên-
cia de execução do algoritmo.
Utilizando como exemplo o algo-
ritmo de “escovar os dentes” apresen-
tado no item anterior, teríamos que sua 
descrição seria descrita pelo fluxogra-
ma abaixo.
Observe, na Figura 2.1, que a 
seqüência é criada utilizando-se setas 
ligando as figuras. Observe também que 34
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
35
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
o início e o fim do algoritmo são marca-
dos por figuras específicas e que cada 
“passo” é descrito em uma figura em 
separado.
Outro exemplo é o algoritmo de 
“trocar uma lâmpada” descrito anteri-
ormente e representado pelo fluxogra-
ma mostrado a seguir. 
Como último exemplo, vamos 
utilizar um algoritmo computacional 
que calcula a média de dois números. 
Observe que iremos utilizar figuras 
para representar as operações compu-
tacionais de entrada e saída de dados 
(verifique as figuras na tabela 2.2). 
 
A principal vantagem do uso do 
fluxograma é que muitas vezes o 
entendimento de sua representação 
gráfica é mais fácil e simples que 
utilizando apenas a escrita. Como 
veremos também diversas das estrutu-
ras utilizadas em algoritmos computa-
cionais são representadas em fluxogra-
mas por meio de figuras específicas, 
evitando a imprecisão característica da 
linguagem narrativa.
Início
Pegar uma escada
Posicionar a escada
embaixo da lâmpada
Buscar uma lâmpada nova
Subir na escada
Retirar a lâmpada velha
Fim
Colocar a lâmpada nova
Figura 2.2: Algoritmo para
“trocar uma lâmpada”
Início 
N1
 
N2
 
Média = (N1 + N2)/2
 
Fim
Média
 
Figura 2.3: Algoritmo para 
calcular a soma de 
dois números
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
36 
2.2 Crie fluxogramas para executar os seguintes algoritmos. 
? trocar um pneu;
? tomar banho;
? fazer o produto de dois números: N1 e N2 (utilize a figura 
para entrada de dados de cada um dos números);
ATIVIDADES
2.3. Português Estruturado ou Pseudocódigo
Essa forma de representação, também chamada de “portu-
gol” ou pseudocódigo, consiste na descrição estruturada, por 
meio de regras predefinidas, de passos (ou instruções) a serem 
realizados para a resolução do problema. O português estrutu-
rado utiliza a linguagem natural para representar o raciocínio. 
No caso brasileiro, a linguagem natural é o Português, que será 
utilizado na representação. Para a Espanha ou França, por 
exemplo, seriam utilizados o Espanhol e o Francês respectiva-
mente. 
Suponha o exemplo de calcular a soma de dois números e 
observe as características descritivas existentes no português 
estruturado a seguir:Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
37
Algoritmo 2.1 – Soma de dois número
Observe as seguintes características:
? há regras sobre como o algoritmo deve ser descrito. 
Observe que N1, N2 e Soma são “declarados” no início do 
algoritmo;
? o início e o fim do algoritmo são claramente representa-
dos
? os “passos” que podem ser realizados são descritos em 
uma linguagem única e padronizada.
Enquanto a linguagem narrativa ou de comunicação é 
prolixa e imprecisa, o português estruturado agrega regras e 
normas que permitem a representação organizada e eficiente da 
solução algorítmica. No entanto, faz-se necessário aprender as 
regras utilizadas na representação dos algoritmos. 
Assim não se preocupe se você não entendeu completa-
mente o exemplo mostrado. A partir de agora nos dedicaremos a 
estudar esta forma de representar algoritmos!
Entre as duas formas de representação apresentadas 
algoritmo "Soma de dois números"
var
N1,N2,Soma: inteiro
inicio
escreva ("Entre com o primeiro número (N1)")
leia (N1)
escreva ("Entre com o segundo número (N2)")
leia (N2)
Soma <- (N1+N2)
escreva ("A soma dos números é")
escreva (Soma)
fimalgoritmo
38
(fluxograma e português estruturado), o português estruturado 
será o mais relevante no desenvolvimento deste estudo, porque 
através dele se conseguirá: 
? facilitar o desenvolvimento dos algoritmos; 
? facilitar o seu entendimento pelo ser humano; 
? antecipar à depuração (localização de erros) em sua 
lógica; 
? facilitar a sua manutenção e modificação; 
? facilitar e agilizar a sua codificação (escrita do progra-
ma); 
? permitir o desenvolvimento simultâneo de vários profissi-
onais (trabalho em equipe). 
 Por meio dessa última representação de raciocínio (portu-
guês estruturado), alia-se a facilidade de uso da linguagem 
natural do indivíduo, com a técnica de desenvolvimento estrutu-
rado. Apesar disso, essa junção, por si só, ainda não atinge 
automaticamente os objetivos visados, ela apenas preconiza 
uma ajuda sistemática para o alcance deste objetivo. Sua 
aplicação ainda conta com o esforço e a disciplina incessante na 
busca da simplicidade e da clareza, que fornecerão facilidades 
inestimáveis à manutenção e modificação evolutiva do algorit-
mo. 
É importante ter a consciência de que: 
O algoritmo é a parte mais importante no desenvolvi-
mento de um programa, pois é nele que está a lógica do 
programa. 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
39
2.3 Crie algoritmos em portugol para executar os seguintes 
algoritmos. 
? trocar um pneu;
? tomar banho;
ATIVIDADES
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
40
O VisuAlg
Capítulo 3
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
O Visualg(VisuAlg) é um programa que edita, interpreta e 
executa algoritmos como um programa normal de computador 
em pseudocódigo ou “Português Estruturado”. É um ótimo 
recurso para quem está iniciando no aprendizado de algoritmos, 
não só para praticar a sua criação, mas também para melhor 
entender a sua execução através de seus múltiplos recursos.
 O Visualg atualmente se encontra na versão 2.0 e possui 
recursos como simulação da "tela" do computador, visualização 
de variáveis, "breakpoints", ajuda on-line, impressão dos fontes 
e outras características que auxiliam o aprendizado das técnicas 
de programação.
Esta ferramenta será utilizada no restante deste curso para 
o ensino de algoritmos estruturados. 
3.1. Introdução
3.2. A Tela Principal do VisuAlg 2.0
A tela do VisuAlg compõe-se da barra de tarefas, do editor 
de textos (que toma toda a sua metade superior), do quadro de 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
41
variáveis (no lado esquerdo da metade inferior), do simulador de 
saída (no correspondente lado direito) e da barra de status. 
Quando o programa é carregado, já apresenta no editor um 
"esqueleto" de pseudocódigo, com a intenção de poupar trabalho 
ao usuário e de mostrar o formato básico que deve ser seguido. 
Explicaremos a seguir cada componente da interface do VisuAlg, 
mostrado na figura 3.1.
3.2.1 A barra de Tarefas do VisuAlg
A barra de tarefas, visto na figura 3.2, contém os comandos 
mais utilizados no VisuAlg (estes comandos também podem ser 
acessados pelo menu ou por atalhos no teclado). 
Figura 3.1: Tela Inicial do VisualG 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
42
A seguir é apresentada uma descrição sucinta dos comandos 
relacionados com a edição de arquivos. Os outros serão apresen-
tados mais tarde, à medida que aprendermos a escrever algorit-
mos.
? Abrir (Ctrl-A): Abre um arquivo anteriormente gravado, 
substituindo o texto presente no editor. Se este tiver sido 
modificado, o VisuAlg pedirá sua confirmação para salvá-
lo antes que seja sobreposto.
? Novo (Ctrl-N): Cria um novo "esqueleto" de pseudocódigo, 
substituindo o texto presente no editor. Se este tiver sido 
modificado, o VisuAlg pedirá sua confirmação para salvá-
lo antes que seja sobreposto.
? Salvar (Ctrl-S): Grava imediatamente o texto presente no 
editor. Na primeira vez que um novo texto é gravado, o 
VisuAlg pede seu nome e localização.
? Imprimir: Imprime imediatamente na impressora padrão 
o texto presente no editor. Para configurar a impressão, 
use o comando Imprimir do menu Arquivo (acessível 
também pelo atalho Ctrl-P).
? Cortar (Ctrl-X): Apaga texto selecionado, armazenando-o 
em uma área de transferência.
? Copiar (Ctrl-C): Copia o texto selecionado para a área de 
transferência.
Figura 3.2: Barra de Tarefas do VisuAlg
 
43
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
? Colar (Ctrl-V): Copia texto da área de transferência para 
o local em que está o cursor.
? Gravar bloco de texto: Permite a gravação em arquivo de 
um texto selecionado no editor. A extensão sugerida para 
o nome do arquivo é .inc.
? Inserir bloco de texto: Permite a inserção do conteúdo de 
um arquivo. A extensão sugerida para o nome do arquivo é 
.inc.
?Desfazer (Ctrl-Z): Desfaz último comando efetuado.
?Refazer (Shift-Ctrl-Z): Refaz último comando desfeito.
?Localizar (Ctrl-L): Localiza no texto presente no editor 
determinada palavra especificada.
?Substituir (Ctrl-U): Localiza no texto presente no editor 
determinada palavra especificada, substituindo-a por 
outra.
? Corrigir Indentação (Ctrl-G): Corrige automaticamente a 
indentação (ou tabulação) do pseudocódigo, tabulando 
cada comando interno com espaços à esquerda.
? Numerar linhas: Ativa ou desativa a exibição dos números 
das linhas na área à esquerda do editor. A linha e a coluna 
do editor em que o cursor está em um determinado 
momento também são mostradas na barra de status 
(parte inferior da tela). Por motivos técnicos, esta opção 
é automaticamente desativada durante a execução do 
pseudocódigo, mas volta a ser ativada logo em seguida.
3.2.2 Barra de Status
Situada na parte inferior da tela, esta barra contém dois 
painéis: o primeiro mostra a linha e a coluna onde o cursor está, e 
Figura 3.3: Barra de Status do VisuAlg
o segundo mostra a palavra “modificado” no caso em que o 
pseudocódigo tenha sido alterado desde que foi carregado ou 
salvo pela última vez. A barra de status pode ser vista na figura 
3.3.
44
3.2.3. Quadro de Variáveis
O quadro de variáveis (figura 3.4), é formado por uma grade 
na qual são mostrados o escopo de cada variável, seus nomes e o 
seu valor corrente. Será mostrado em maiores detalhes quando 
for apresentado o conceito de variáveis.Figura 3.4: Quadro de Variáveis
3.3.A Linguagem
A linguagem que o VisuAlg interpreta é bem simples: é uma 
versão de um pseudocódigo em Português largamente utilizado 
e, como nós vimos, também conhecido como "Portugol".
Para facilitar a digitação e evitar confusões, todas as 
palavras-chave do VisuAlg foram implementadas sem acentos e 
caracteres especiais como o cedilha. Portanto, para a palavra 
lógico ser escrita em um algoritmo, deve ser escrita como logico. 
Do mesmo modo as palavras se..então..senão devem ser escri-
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
45
tas como se..entao..senao, e assim por diante. O VisuAlg tam-
bém não distingue maiúsculas e minúsculas no reconhecimento 
de palavras (case insensitive).
Formato Básico do Pseudocódigo e Inclusão de 
Comentários
O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "semnome"
// Função :
// Autor :
// Data :
inicio
 // Seção de Comandos
fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo 
seguida do seu nome delimitado por aspas duplas. Este nome 
será usado como título nas janelas de leitura de dados. A seção 
que se segue é a de declaração de variáveis, que termina com a 
linha que contém a palavra-chave inicio. Deste ponto em diante 
está a seção de comandos, que continua até a linha em que se 
encontre a palavra-chave fimalgoritmo. Esta última linha marca 
o final do pseudocódigo: todo texto existente a partir dela é 
ignorado pelo interpretador.
O VisuAlg permite a inclusão de comentários: qualquer 
texto precedido de "//" é ignorado, até se atingir o final da sua 
linha.
Figura 4.1: Elementos do computador
Processador
UCP
Dispositivo
de Entrada
(Teclado mouse,
etc.)
Dispositivo
de Saída
(Impressora
vídeo, disco, etc.)
Memória
(Endereço e conteúdo)
Leitura Escrita
Entrada Saída
Dados
Controle
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
46
Tipos de Dados
e Variáveis
Capítulo 4
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
4.1. Introdução: funcionamento do acesso
 à memória em um computador
A tecnologia atual de computadores envolve vários disposi-
tivos eletrônicos, que são interligados coerentemente (figura 
4.1). Estes circuitos eletrônicos fazem a distinção entre dois 
tipos de sinais elétricos, caracterizados pela passagem de cor-
rente elétrica em um ou dois sentido. Desta forma, os computa-
dores representam dados e operações por meio de dois símbolos, 
constituindo a linguagem binária, usualmente descrita com 0 e 1 
(zero e um). 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
47
A Unidade Central de Processamento (Figura 4.1) de um 
computador utiliza uma memória de alta velocidade para arma-
zenar, temporariamente, dados e programas que estão sendo 
processados, uma vez que um programa para ser executado tem 
que estar na memória. Esta memória e denominada “memória 
principal”, “memória de trabalho” ou “memória temporária”.
EXEMPLO DA VIDA REAL
Para entender melhor o que significa a memória no 
aspecto computacional, imagine a seguinte situação do 
mundo real:
Imagine um armário repleto de gavetas, onde seriam 
armazenados fisicamente os objetos. Esses objetos podem ser 
substituídos. Os objetos seriam os dados e as gavetas as 
variáveis
A memória é semelhante, pois na memória (armário) 
existem inúmeras variáveis (gavetas). Cada variável (gave-
ta) pode guardar apenas um dado (objeto) de cada vez, sendo 
de um mesmo tipo (tipo primitivo).
Figura 4.2: Armários e gavetas
A B C
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
48
MEMÓRIA RAM (Random Access Memory): Ela também é 
chamada “memória principal”,” memória de trabalho” ou 
“memória temporária” (Random Access Memory - RAM), consis-
tindo de uma seqüência finita de unidades de armazenamento de 
dados identificadas por um endereço único, descrito por um 
número inteiro não negativo;
Vamos entender alguns conceitos importantes:
BIT:
? É o menor item da informação binária. 
? A palavra bit é uma contração de Binary digit (dígito 
binário). Significa que um dígito pode assumir um dos dois 
valores ou estados diferentes 0 ou 1. 
? Os bits quando são agrupados podem representar dados e 
programas.
BYTE:
? É um conjunto de bits. (figura 4.3).
? Um byte é formado por 8 bits.
PALAVRA:
? É um conjunto de bytes. 
? Uma palavra e formada por bytes, a quantidade de bytes 
que formará uma palavra depende da máquina considera-
da.
Figura 4.3: Bit e Byte
1 0 1 1 0 1 0 1 0 1 0 0 0 0
bit
byte
A memória de um computador é constituída por um conjun-
to de bits, sendo que o byte, ou palavra, recebe um endereço a 
fim de que os programas possam fazer referência aos seus dados.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
49
A capacidade de um computador é medida pelo tamanho de 
sua memória e a unidade utilizada para fazer essa medida é o 
byte.
Cada 1024 Bytes representam 1 Kbyte (quilobyte).
Cada 1024 Kbytes representam 1 Mbyte (megabyte)
4.2 Constantes e Variáveis
Para entendermos melhor o uso da memória dentro dos 
programas vamos introduzir o conceito de variável, constante e 
identificadores.
4.2.1 Conceitos Iniciais
Variáveis e constantes são locais na memória principal, 
com endereços que armazenam conteúdos. Em linguagens de 
programação de alto nível, nos é permitido dar nomes a esses 
endereços da memória para facilitar a programação, é o que 
chamamos de Identificadores das constantes ou das variáveis do 
programa.
4.2.2 Constantes
Uma constante é um determinado valor fixo que não se 
modifica ao longo do tempo [FARRER89]. A constante é um dado 
que pode ser criado pelo programador para armazenar um único 
valor de um tipo definido. Este dado não sofre variações no seu 
valor armazenado, ou seja:
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
50
O valor guardado em uma constante não sofre altera-
ção, se mantendo sempre o mesmo após a sua criação. 
Este valor é constante do início até o fim da execução do 
algoritmo, assim como é constante para as diferentes execuções 
no tempo.
O nome dado a uma constante é um identificador. Quando 
esta constante, descrita no algoritmo é traduzida para um 
programa no computador, ela ocupará uma área da memória que 
poderá ser acessada por meio de seu nome (identificador), mas o 
valor armazenado nela nunca poderá ser alterado enquanto o 
programa estiver em execução.
USANDO O VISUALG
O VisuAlg tem três tipos de constantes:
? Numéricos: Podem ser inteiros ou reais. O separador de 
decimais é o ponto e não a vírgula. O VisuAlg também não 
suporta separadores de milhares. 
? Caracteres: qualquer cadeia de caracteres delimitada 
por aspas duplas ("). 
? Lógicos: admite os valores VERDADEIRO ou FALSO. 
4.2.3. Variáveis
LEMBRE-SE: Não é possível modificar o conteúdo da constante.
Uma variável fornece o nome a uma área de memória que 
pode armazenar um ou vários valores de um mesmo tipo de dado. 
51
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.1 - Exemplos de variáveis
Figura 4.4: Variáveis
Uma variável é identificada e acionada por um nome (iden-
tificador). Cada variável corresponde a uma posição de memó-
ria, cujo conteúdo pode ser alterado ao longo do tempo durante 
a execução de um programa. Embora uma variável possa assumir 
diferentes valores, ela só pode armazenar um valor a cada 
instante.
No intuito de consolidar o conceito e a utilização das variá-
veis, considere o exemplo a seguir:EXEMPLO DA VIDA REAL
Você acabou de comprar um par de sapatos e é óbvio que 
eles lhe foram entregues dentro de uma caixa. Esta caixa era 
resistente e bela e você resolveu reutilizá-la para guardar 
alguns documentos profissionais seus. Assim, sempre que 
você desejava encontrar um documento deste tipo, sabia 
exatamente onde eles estavam guardados. Com o passar do 
tempo você trocou o conteúdo armazenado na caixa, passan-
do a guardar as suas caixas de CD. Com o desgaste da caixa 
você, finalmente, resolveu jogá-la fora. 
Variável
Conteúdo
da variável
Nome = “José”
Idade = 50
Variáveis
Total = Produto Quantidadex
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
52
4.2.4. Identificadores
Vamos conhecer melhor este conceito.
Identificador é o nome fornecido a um recurso computacio-
nal que o identifica. Um exemplo são os nomes próprios de 
pessoas. Para identificar alguém você a chama pelo nome, pois 
este a identifica como uma pessoa única. Quando alguém precisa 
falar com você, simplesmente chama o seu nome.
EXEMPLO DA VIDA REAL
Continuando o exemplo do armário com várias gavetas 
apresentado anteriormente. Observe que se no armário 
(memória) existem inúmeras gavetas (variáveis), se faz 
necessário diferenciá-las, o que é feito por meio de etiquetas 
ou rótulos (Identificadores). 
Da mesma forma que as gavetas do exemplo, em um algo-
ritmo todos os recursos de armazenamento e manipulação de 
dados devem possuir nomes únicos que os identifiquem. Desta 
Na situação anterior pode-se observar a variação do conte-
údo armazenado pela mesma caixa de sapatos. Esta variação 
aconteceu de acordo com a sua necessidade no armazenamento 
de coisas ao longo do tempo. 
Uma variável funciona de forma similar a caixa de sapatos, 
sendo que, como já vimos, ela é um espaço de memória que o 
computador reserva para utilização de um programa. Quando o 
programa termina, a variável é destruída, assim como a caixa de 
sapatos foi jogada fora. 
53
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.2:
Alpha , X , XYZ , FGTS 
? Devem começar por um caractere alfabético, ou seja, por 
uma letra; 
EXEMPLO 4.3:
Notas J Salário J 98_notas L 5x L
? Não devem ser usados caracteres especiais (!@#$%&*/-
+<>?), ou seja no identificador só pode ter, após o primei-
ro caractere, letras, números e sublinhada ( _ ); 
EXEMPLO 4.4:
A:B ou a:b L x-y ou X-Y L nota 2 J 
a98_notas J a_5x L
? Podem ser seguidos por mais caracteres alfabéticos ou 
numéricos;
EXEMPLO 4.5:
A23 J abc123 J
? Não podem conter espaços em branco; 
JJJJ
forma, quando um recurso for ser usado, ele será acionado pelo 
seu nome para participar do processamento desejado dentro do 
algoritmo.
Os identificadores são conjuntos de caracteres, que repre-
sentam constantes, variáveis, tipos, procedimentos, unidades, 
programas e campos de um registro. A formação deste conjunto 
de caracteres segue regras pré-determinadas, que são: 
? Podem ter qualquer tamanho, mas no VisuAlg são conside-
rados apenas os 30 primeiros caracteres.
54
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.6:
Nome próprio abc 123 
? Devem ser únicos; 
? Não podem ter o mesmo nome de uma palavra reservada. 
USANDO O VISUALG [HELPVISUALG]
Nomes de Variáveis e sua Declaração
Os nomes das variáveis devem começar por uma letra e 
depois conter letras, números ou underline, até um limite de 
30 caracteres. As variáveis podem ser simples ou estruturadas 
(na versão atual, os vetores podem ser de uma ou duas dimen-
sões). Não pode haver duas variáveis com o mesmo nome, 
com a natural exceção dos elementos de um mesmo vetor.
L L
4.1 – Marque (C) para correto e (I) para incorreto dentre os 
identificadores abaixo; justificar os Incorretos. 
a. W2YZ; 
b. B10PQ; 
c. AB,3Y; 
d. 432mudar;
e. Lápis.cor; 
f. Dia noite; 
g. And; 
4.2 – Assinale os identificadores válidos.
a) (w)
ATIVIDADES
55
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.3. Conceito de tipos de dados
Enquanto apresentávamos os conceitos de constantes e 
variáveis diversas vezes citamos os tipos de dados. Vamos agora 
apresentar este conceito.
Um tipo de dado é a identificação de como um dado poderá 
se apresentar, qual a sua simbologia e quais operações podem ser 
realizadas sobre o mesmo. Os tipos de dados escalares ou primi-
tivos são: inteiro, real, caractere e lógico.
Veja a seguir uma especificação mais detalhada dos tipos 
de dados primitivos que um computador pode processar.
 4.3.1 Tipos Primitivos
Antes de falar de tipos primitivos, vamos entender um 
conceito muito importante: a informação. A informação é a 
matéria-prima que faz com que seja necessária a existência dos 
computadores, pois eles são capazes de manipular e armazenar 
um grande volume de dados com alta performance, liberando o 
homem para outras tarefas nas quais seu conhecimento é indis-
pensável [FORBELONE]. 
b) AwA
c) UHHi?
d) “maria”
e) *10
f) cm/G
g) P{0}
h) ASDRUBAL
i) DIAMÊS/ANO
j) TELEFONE
56
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Pode não parecer, mas existe uma diferença entre dado e 
informação. Por exemplo, ao citarmos uma data, como “24 de 
outubro”, estamos apresentando um dado; ao dizermos que esta 
data é o dia do aniversário da cidade de Manaus, estamos agre-
gando valor ao dado, apresentando uma informação.
Como vimos anteriormente o computador gera informação 
através da manipulação dos dados que são armazenados nas 
variáveis do programa. Este dado armazenado na variável do 
programa pode ser de vários tipos primitivos: inteiro, real, 
caractere, lógico entre outros [Lopes 02]. Quando ensinamos 
algoritmos, trabalhamos com os quatro tipos citados.
Podemos agrupar estes tipos em: Numéricas, String, 
Lógicas
4.3.1.1 Numéricas
São as variáveis e constantes que armazenam dados numé-
ricos representados por valores inteiros ou reais. 
INTEIRO: 
- Toda e qualquer informação numérica que pertença ao 
conjunto dos números inteiros relativos (negativa, nula 
ou positiva) [FORBELONE].
- Os números inteiros são aqueles que não possuem 
componentes decimais ou fracionários, podendo ser 
positivos ou negativos. [LOPES 02]
EXEMPLO 4.7
Vejamos algumas proposições declarativas comuns em que 
é usado o tipo inteiro:
57
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
REAL:
Toda e qualquer informação numérica que pertença ao 
conjunto dos números reais (negativa, nula ou positiva), 
corresponde ao conjunto matemático dos valores numé-
ricos reais. 
EXEMPLO 4.8
Vejamos algumas proposições declarativas comuns em que 
é usado o tipo real:
a) Ela tem 1,73 metros de altura.
b) Meu saldo bancário e de 1000,00 reais.
c) No momento a bebê pesa 10 kilos.
Também conhecida como caractere, alfanumérica ou 
literal. Formadas por um caractere ou uma seqüência de carac-
teres aceitos na simbologia da linguagem (símbolos especiais, 
letras e números). Elas são representadas pelos caracteres 
correspondentes colocados entre aspas (" "). 
4.3.1.2 String
a) Ele tem 15 irmãos.
- Observe que 15 é um dado do tipo inteiro e a informação 
surge quando associamos que 15 é o numero de irmãos
b) A escada possui 8 degraus.
- Observe que 8 é um dado do tipo inteiro e a informação 
surge quando associamos que 8 é o numero de degraus
c) Meu vizinho comprou 2 carros novos.
- Observe que 2 é um dado do tipo inteiro e a informação 
surge quando associamos que 2 é o número de carros 
novos
58
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
CARACTER: 
Toda e qualquer informaçãocomposta de um conjunto 
de caracteres alfanuméricos: numéricos(0..9), 
alfabéticos (A..Z,a..z) e especiais (por exemplo *, &, ^, 
%, #, $), estando sempre descritos entre aspas (“”). O 
conjunto de caracteres também é chamado de cadeia de 
caracteres ou string. 
EXEMPLO 4.9
Vejamos algumas proposições declarativas comuns em que 
é usado o tipo caractere:
a) Constava no aviso “Não entre.”.
b) O parque municipal estava repleto de placas: “Não pise 
na grama”.
c) O nome do santo é “São Jorge”.
4.3.1.3 Lógicas
Também conhecido como Booleano. É representada no 
algoritmo pelos dois únicos valores lógicos possíveis: 
VERDADEIRO/ FALSO ou SIM/NÃO ou TRUE/FALSE ou 1/0. 
LÓGICO:
Toda e qualquer informação que pode assumir apenas 
duas situações (biestáveis). Conjunto de valores possíve-
is na lógica convencional (booleana) - FALSO ou 
VERDADEIRO. Esse tipo só apresenta um desses dois 
valores, sendo eles mutuamente exclusivos. 
59
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.3 – Escreva o tipo de dado ideal par se representar as seguintes 
informações. 
a. O número de telefone; 
b. Número de alunos de uma classe
c. Se uma pessoa gosta de bolo ou não. 
d. O valor de um carro. 
e. A cor de uma casa. 
f. Resultado de uma divisão.
g. Total de jogadores de um time.
4.4 – Identificar os tipos dos seguintes dados. 
a) “Mariana”
b) 0.10; 
c) “11.9E10”;
d) False;
e) “!”;
f) “ ”;
g) 30 
ATIVIDADES
EXEMPLO 4.10
Vejamos algumas proposições declarativas comuns em que 
é usado o tipo lógico:
a) A porta está aberta ou fechada.
b) A lâmpada pode estar acesa ou apagada.
IMPORTANTE:
Uma vez definidos o nome (identificador) e 
o tipo de uma variável ou constante, não é 
possível alterá-los no decorrer de um algo-
ritmo.
60
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.5 – Declare corretamente as variáveis e os respectivos tipos 
primitivos para:
a) NOME DO ALUNO:
b) NOTA DO ALUNO:
c) NÚMERO DA MATRÍCULA:
d) SEXO:
4.6 – Identifique os erros nas declarações de variáveis apresenta-
das a seguir:
a) Inteiro: NOTA, RUA
b) Caracter: PESO,NOME,ENDERECO
c) Real: MENSALIDADE, PESO
d) Lógico: NOTA, APROVADO
4.7 – Determine qual o tipo primitivo de informação presente nas 
sentenças a seguir:
a) Na placa esta escrito “Não pise na grama”.
b) O preço das 5 maçãs era 4,50 reais.
c) A altura do prédio era de 20 metros.
d) Nos jogos do Pan Xuxa ganhou 3 medalhas e alcançou o record 
de 40,2 segundos
4.8 – Determine qual o tipo primitivos dos seguintes dados:
a) 10
b) 10.0
c) -10
d) “10”
e) -30.025x 10 13
f) “fim de questão”
61
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO DA VIDA REAL
Na caixa de sapatos, vista anteriormente, provavel-
mente não caberiam todos os seus livros da estante, e seria 
no mínimo impróprio se tentar guardar água dentro dela. É 
por isso que uma variável deve ter o seu tipo de dado defini-
do, identificando por meio dele, exatamente, quais as 
informações que poderão ser armazenadas nesta variável.
Como pôde ser observado, a declaração de variáveis é bem 
parecida com a de constantes, devendo ser informado qual o tipo 
4.4. Declaração de Variáveis e Constantes
Como citamos anteriormente, as variáveis e as constantes 
podem ser basicamente de quatro tipos: numéricas, caracteres, 
alfanuméricas ou lógicas.
A especificação do tipo de dados correto é fundamental 
para o computador, pois ele reconhecerá quais dados podem ou 
não sofrer determinadas manipulações e quais as necessidades 
de espaços para a efetivação do armazenamento de cada dado 
ou informação a ser processada.
No caso das variáveis, elas só podem armazenar valores de 
um mesmo tipo. Veja a seguir uma especificação mais detalhada 
dos tipos de dados primitivos que um computador pode proces-
sar.
Mas agora surge uma pergunta: Qual o tamanho do espaço 
de memória que o computador reserva para meu programa? Isso 
é você, programador, quem decide.
62
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
de seu conteúdo e qual o seu nome. A principal diferença entre 
estes recursos ou objetos consiste na possibilidade de modifica-
ção do conteúdo armazenado na variável, sendo ele alterado 
quantas vezes forem necessárias para o correto funcionamento 
do algoritmo e conseqüentemente do programa.
USANDO O VISUALG [HELPVISUALG]
A seção de declaração de variáveis começa com a palavra-
chave var, e continua com as seguintes sintaxes:
<lista-de-variáveis> : <tipo-de-dado>
<lista-de-variáveis> : vetor "["<lista-de-
intervalos>"]" de <tipo-de-dado>
Na <lista-de-variáveis>, os nomes das variáveis estão separa-
dos por vírgulas.
4.5 Uso de Variáveis na Entrada e Saída de Dados
Para fazer uma comida precisamos seguir uma receita. Na 
receita encontramos a declaração dos ingredientes necessários 
para sua execução e temos uma saída que e o produto resultante 
deste processo que será a comida.
Entrada Processamento Saída
Percepção das
impressões
sensoriais
Saída do resultado
dos processos
de pensamento
Processo de Pensamento
Com o auxílio da nossa memória,
executamos diversos processos,
como controlar, comparar
combinar, deduzir, etc.
Figura 4.5 - Representação do Processamento
?? ??
?
63
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Preparo:
Numa panela, aqueça o azeite de oliva e refogue a 
cebola até murchar. Acrescente a carne e refogue 
por mais 3 minutos. Junte a mandioca e a cenoura 
picada e 1 xícara (chá) de água.
Cozinhe, mexendo de vez em quando, por 25 
minutos ou até os legumes ficarem macios. Então, 
adicione o macarrão e uma pitada de sal e cozinhe 
até ficar macio e com um pouco de caldo. Coloque 
a preparação em um prato e amasse.
Algoritmo
Saída
No processo de execução da receita inserimos os diversos 
ingredientes declarados, realizando assim uma entrada de 
substâncias, executamos os passos descritos para então termos 
como saída deste processo a comida pronta.
Analogamente podemos dizer que:
Papa de carne, cenoura e mandioca
 Ingredientes:
110g de mandioca
100g de cenoura pequena
1 colher (sopa) de cebola ralada
2 colheres (chá) de azeite de oliva
100g de carne moída
5 colheres (sopa) de macarrão conchinha
Declaração das
variáveis de entrada
Figura 4.6 - Receita
Fonte: www.cybercook.com.br
64
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Os ingredientes declarados na receita correspondem à 
declaração das variáveis de entrada
A receita corresponde ao algoritmo 
A comida pronta corresponde à saída.
O Comando de Entrada de Dados que utilizaremos nos 
algoritmos apresentados será:
leia (<lista-de-variáveis>)
Através deste comando é possível receber os valores digita-
dos pelos usuários e atribui-los às variáveis cujos nomes estão em 
<lista-de-variáveis> (é respeitada a ordem especificada nesta 
lista).
USANDO O VISUALG [HELPVISUALG]
Veja no exemplo abaixo o resultado:
algoritmo "exemplo 1”
 var x: inteiro;
inicio
 leia (x)
 escreva (x)
fimalgoritmo
O comando de leitura acima irá exibir uma janela com a 
mensagem padrão:
 "Entre com o valor de <nome-de-variável>”
O Comando de Saída que utilizaremos nos algoritmos 
apresentados será:
escreva (<lista-de-expressões>)
Este comando escreve no dispositivo de saída padrão o 
conteúdo de cada uma das expressões que compõem <lista-de-
65
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
expressões>. De acordo com a sintaxe do VisuAlg, as expressões 
dentro desta lista devem estar separadas por vírgulas; depois de 
serem avaliadas, seus resultados são impressos na ordem indica-
da.
USANDO O VISUALG[HELPVISUALG]
Exemplos:
algoritmo "exemplo”
 var x: real
 y: inteiro
 a: caractere
 l: logico
inicio
 x <- 2.5
 y <- 6
 a <- "teste”
 l <- VERDADEIRO
 escreval ("x", x:4:1, y+3:4) // Escreve: x 2.5 9
 escreval (a, "ok") // Escreve: teste ok (e depois pula 
linha)
 escreval (a, " ok") // Escreve: teste ok (e depois 
pula linha)
 escreval (a + " ok") // Escreve: teste ok (e depois 
pula linha)
 escreva (l) // Escreve: VERDADEIRO
fimalgoritmo
66
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 4.11
PROBLEMA:
Imprimir a mensagem: “O ALUNO DEVE EXERCITAR PARA 
APRENDER”
RESOLUÇÃO:
O Algoritmo 4.1 mostra uma solução que utiliza apenas 
uma seqüência simples.
algoritmo "imprimindo frase"
var
 num : inteiro
 
inicio
 escreval "O ALUNO DEVE EXERCITAR PARA APRENDER”)
fimalgoritmo
Algoritmo 4.1: Imprime frase.
4.9 Imprimir seu nome
4.10 Ler um número inteiro e imprima-o
4.11 Criar um algoritmo que imprima a media aritmética entre os 
números 10, 15 e 20.
4.12 Ler um número inteiro e imprimir seu sucessor e seu ante-
cessor
4.13 Ler dois números inteiros. Antes do resultado deve aparecer 
a palavra “Resultado:”
4.14 Ler o Nome, Endereço e Telefone e imprimí-los.
ATIVIDADES
67
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
4.6 Palavras Reservadas 
Os identificadores devem ser únicos dentro do programa, 
ou seja, não pode haver duas variáveis ou constantes com o 
mesmo nome. Nesta regra inclui-se as palavras reservadas. 
Palavras reservadas são identificadores que já foram usados pela 
linguagem de programação, ou seja, se caso o programador 
utilizar uma palavra reservada para declarar uma variável ou 
constante no programa, estará infringindo a regra de que não se 
pode repetir o nome dos identificadores em um mesmo algorit-
mo. 
Segue abaixo uma tabela de palavras que geralmente são 
reservadas, ou seja, que já foram destinadas pelas linguagens de 
programação (seja portugol, ou linguagens de programação 
comerciais ou acadêmicas) para identificar outros elementos 
dentro dos algoritmos. 
Estas palavras apresentadas na tabela 4.1 fazem parte da 
lista de palavras reservadas do VisuAlg.
aleatorio
algoritmo
arquivo
ate
caractere
caso
cronometro
debug
e
eco
enquanto
entao
escolha
escreva
escreval
faca
falso
fimalgoritmo
fimenquanto
fimescolha
fimfuncao
fimpara
fimprocedimento
fimrepita
fimse
funcao
inicio
int
inteiro
interrompa
leia
limpatela 
logico
mod
nao
ou
outrocaso
para
passo
pausa 
real
procedimento
repita
retorne
se
senao
timer
var 
vetor
verdadeiro
xou
Tabela 4.1 - Lista de palavras reservadas
68
4.7 Revisão
Variáveis e constantes são os elementos básicos que um 
programa manipula, é um espaço reservado na memória do 
computador para armazenar um tipo de dado determinado. 
Variáveis e constantes devem receber nomes para poderem ser 
referenciadas e no caso das variáveis, para poderem ser 
modificadas quando necessário. Um programa deve conter 
declarações que especificam de que tipo são as variáveis e as 
constantes que ele utilizará e um valor inicial, não obrigatório no 
caso das variáveis. Esses tipos podem ser derivados dos tipos 
primitivos como, por exemplo: inteiros, reais, caracteres, etc. 
As expressões combinam variáveis e constantes para calcular 
novos valores. 
A seguir estão detalhados esses conceitos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
69
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Expressões e operadores
Capítulo 5
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
Os operadores têm grande utilidade no desenvolvimento de 
algoritmos, com eles é possível comparar e efetuar cálculos 
entre constantes e variáveis. Comandos utilizando operadores 
serão muito utilizados em nossos algoritmos.
A identificação das operações que podem ser executadas 
sobre determinados tipos de dados são descritas por símbolos, ou 
caracteres específicos, onde as operações aritméticas, relacio-
nais e lógicas são empregadas sobre os dados.
5.1. Operador de Atribuição
 A operação de atribuição é uma forma muito natural para 
especificar que uma variável irá receber um valor. 
O comando de atribuição permite que seja fornecido um 
valor a certa variável, porém, a natureza deste valor tem que ser 
compatível com o tipo da variável na qual está sendo armazena-
do.
A operação de atribuição consiste na possibilidade de um 
recurso ou objeto poder receber (ou armazenar) um dado 
(ou valor).
70
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
OPERAÇÃO SÍMBOLO 
ATRIBUIÇÃO 
A representação geral do comando de atribuição é:
IDENTIFICADOR EXPRESSÃO
Onde:
IDENTIFICADOR é o nome da variável a qual esta sendo atribuído o valor;
ßÉ o símbolo de atribuição
EXPRESSÃO
 pode ser uma expressão aritmética, expressão lógica 
ou expressão literal de cuja avaliação é obtido o valor 
a ser atribuído a variável.
Sua sintaxe sempre atribui ao recurso identificado à 
esquerda do símbolo de atribuição o valor ou resultado da opera-
ção existente a direita do mesmo símbolo.
EXEMPLO 5.1
 
? X 10
? Indica que a variável x irá receber o valor 10. Portanto a 
variável X á do tipo NUMÉRICO INTEIRO
? Y 5.2 + 3.0 
? Indica que a variável Y ira receber o RESULTADO da 
EXPRESSÃO 5.2+3.0 que é 8.2, logo a variável Y é do tipo 
NUMÉRICO REAL
Após a execução do comando a variável conterá o valor 
atribuído e uma vez que uma palavra na memória pode conter 
71
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
somente um valor por vez, o valor atual substitui qualquer valor 
armazenado anteriormente na palavra. Assim pode-se dizer que 
esta é uma operação destrutiva, pois qualquer valor que a variá-
vel possuía antes do processamento da operação de atribuição se 
perdeu, sendo substituído pelo novo valor.
Observe esta seqüência de operações de atribuições:
X 500
X 1000
X 200
Ao final da seqüência o valor da variável X será 200. Os 
valores 500 e 1000 forma destruídos (substituídos).
ß 
ß 
ß 
USANDO O VISUALG [HELPVISUALG]
A atribuição de valores as variáveis é feita com o operador 
<-. Do seu lado esquerdo fica a variável à qual está sendo 
atribuído o valor, e à sua direita pode-se colocar qualquer 
expressão (constantes, variáveis, expressões numéricas), 
desde que seu resultado tenha tipo igual ao da variável.
Alguns exemplos de atribuições, usando as variáveis 
declaradas acima:
a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + a
vet[1] <- vet[1] + (a * 3)
matriz[3,9] <- a/4 – 5
nome_do_aluno <- "José da Silva"
sinalizador <- FALSO
72
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
5.2 Expressões Aritméticas:
EXPRESSÕES ARITMÉTICAS: Expressões cujos operadores 
são aritméticos e cujos operandos são constantes ou variáveis do 
tipo numérico (inteiro ou real)
As expressões aritméticas são realizadas através dos opera-
dores aritméticos.
5.2.1. Operadores aritméticos
Os operadores aritméticos são os utilizados para obter 
resultados numéricos. São conjuntos de símbolos que represen-
tam as operações básicas da matemática como: adição, subtra-
ção, multiplicação, divisão, e exponenciação. 
As operações aritméticas mais comuns são representadas 
pelos símbolos descritos na tabela 5.1.
FUNCÃO OPERADOR OPERANDOS RESULTADOS EXEMPLOS 
Adição + Inteiro, Real Inteiro, Real 4+4, a+b 
Subtração -
 
Inteiro, Real
 
Inteiro, Real
 
4-5, a-b
 
Multiplicação *
 
Inteiro, Real
 
Inteiro, Real4*5, A*B
 Divisão /
 
Inteiro, Real
 
Real
 
4/5, a/b
 Divisão inteira
 
DIV
 
Inteiro
 
Inteiro
 Resto da divisão MOD Inteiro Inteiro
Tabela 5.1 - Operações Aritméticas
Na resolução das expressões aritméticas, as operações 
guardam uma hierarquia entre si, como mostra a tabela 5.2.
PRIORIDADE OPERADORES 
1 º ( ) Parênteses 
2 º Exponenciação 
3 º Multiplicação, divisão (o que aparecer primeiro) 
4 º + ou – (o que aparecer primeiro) 
Tabela 5.2 - Hierarquia das Operações Aritméticas
73
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 5.2
TOTAL = PREÇO * QUANTIDADE
3 * (1—2) + 4 * 2 = 5
EXEMPLO 5.3 [SALVETTI98]
PROBLEMA :
Calcular a soma de dois números inteiros.
RESOLUÇÃO: 
O primeiro passo é obter os dados do problema que são dois 
números, em seguida somar esses dois valores e, finalmente, 
fornecer o valor de saída, que é o resultado da operação efetua-
da. Vamos ver a seqüência das operações:
- leitura dos dados.
- soma dos valores e
- saída do resultado.
A obtenção dos dados consiste no armazenamento dos 
mesmos em localizações da memória do computador, identifica-
das por um endereço. Um endereço pode ser representado por 
meio de um nome qualquer, que chamamos de identificador que 
compõem as variáveis.
Neste problema a entrada consiste de dois números inteiros 
nomeados de A e B. A saída será identificada pela variável SOMA. 
A adição é representada por A+B.
74
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
O fornecimento de valores às variáveis A e B é indicado pela 
instrução:
leia (A,B)
A atribuição de um valor a uma variável é indicado pelo 
símbolo <-:
soma <-(A+B)
Finalmente, para representar a saída de informações, 
utilizamos a instrução de saída:
 escreva(soma)
O Algoritmo 4.2 mostra uma solução em pseudocódigo.
algoritmo "soma de 2 números"
var
 A : inteiro
 B : inteiro
 soma : inteiro
inicio
 leia(A,B)
 soma <- (A+B)
 escreva(soma)
 
fimalgoritmo
Algoritmo 5.1: Soma de 2 números.
5.3 Expressões Lógicas
É comum nos algoritmos surgirem situações em que a 
execução de uma ação ou seqüência de sub-ações, está sujeita a 
certa condição. Esta condição é representada no texto do algo-
ritmo por meio de uma expressão lógica.
EXPRESSÕES LÓGICAS: Expressões cujos operadores são 
lógicos ou relacionais e cujos operandos são relações, constantes 
ou variáveis do tipo lógico.
 
75
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
As expressões lógicas sempre retornaram True (Verdadeiro) 
e False (Falso). Para se montar expressões lógicas são utilizados 
operadores relacionais e operadores lógicos. A seguir você 
entenderá o que são e como funciona cada um destes operado-
res. Observe que a utilização das expressões lógicas somente 
será aplicada em termos com o mesmo tipo de dados.
5.3.1. Operadores relacionais 
Os operadores relacionais são utilizados para comparar 
duas expressões ou variáveis e retornar se a comparação é 
verdadeira ou falsa (valor lógico). Os valores comparados são 
representados por constantes, variáveis ou expressões aritméti-
cas.
Os operadores relacionais são:
Os símbolos utili-
zados para comparação 
entre expressões são:
Variável com variável Variável com Constante
Numérica
Código = Codant
Sim
Não
Código = 1000 Sim
Não
Variável com Constante
Alfanumérica
Nome: “JOSÉ”
Sim
Não
OPERADOR OPERAÇÃO EXEMPLO RESULTADO 
= Igual 1 = 2 FALSE 
> Maior 5 > 2 TRUE 
< Menor 11 < 4 FALSE 
>= Maior ou Igual 3 >= 3 TRUE 
<= Menor ou igual TRUE <= FALSE FALSE 
<> Diferente 2 + 3 <> 5 FALSE 
Tabela 5.3 - Operadores relacionais
Figura 5.1 - Variáveis
76
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 5.4
Tendo duas variáveis A = 5 e B = 3, os resultados das expres-
sões seriam:
5.3.2. Operadores lógicos 
É possível identificar as operações lógicas por meio dos 
símbolos apresentados na tabela 5.4 a seguir. As características 
existentes nestas operações são empregadas na elaboração dos 
algoritmos e conseqüentemente nos programas que deles resul-
tarão. Os operadores lógicos servem para combinar resultados 
de expressões, retornando se o resultado final é verdadeiro ou 
falso. Os operadores lógicos são:
OPERAÇÃO
 
SÍMBOLO
 
DESCRICÃO
 
CONJUNÇÃO
 
E – AND Uma expressão AND (E) é verdadeira se todas as 
condições forem verdadeiras
 
DISJUNÇÃO
 
OU – OR 
 
Uma expressão OR (OU) é verdadeira se pelo menos 
uma condição for verdadeira 
NEGAÇÃO NÃO – NOT Uma expressão NOT (NÃO) inverte o valor da expressão 
ou condição, se verdadeira inverte para falsa e vice-
versa. 
Tabela 5.4: Operações lógicas
A tabela 5.5 mostra todos os valores possíveis criados pelos 
três operadores lógicos (AND, OR e NOT):
Expressão Resultado
A = B
A <> B
A > B
A < B
A > = B
A < = B
Falso
Verdadeiro
Verdadeiro
Falso
Verdadeiro
Falso
77
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
A ordem de prioridade em que uma expressão lógica obede-
ce, esta apresentada na tabela 5.6
EXEMPLO 5.5
 Considere três variáveis A = 15, B =18 e C =11. Os resultados 
das expressões seriam:
USANDO O VISUALG [HELPVISUALG]
Operadores Aritméticos
+,- Operadores unários, isto é, são aplicados a um único 
operando. São os operadores aritméticos de maior 
O1 Valor
T
T
F
F
T
T
F
F
T
F
Operador
AND
AND
AND
AND
OR
OR
OR
OR
NOT
NOT
2 Valor
T
F
T
F
T
F
T
F
O Resultado
T
F
F
F
T
T
T
F
F
T
Prioridade Operadores 
1ª Not 
2ª And 
3ª Or 
4ª = > < >= <= <> 
Tabela 5.5 - Valores dos Operadores Lógicos
Tabela 5.6 - Prioridades
Expressões
AND
OR
NOT
AND
OR
NOT
B > C
B < C
B > C
B = C
Resultado
Falso 
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
A = B
A <> B
A > B
A < B
A >= B
A <= B
78
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
+,-,*,/ 
Operadores aritméticos tradicionais de adição, subtração, 
multiplicação e divisão. Por convenção, * e / têm 
precedência sobre + e - . Para modificar a ordem de 
avaliação das operações, é necessário usar parênteses 
como em qualquer expressão aritmética.
MOD 
ou %
Operador de módulo (isto é, resto da divisão inteira). Por 
exemplo, 8 MOD 3 = 2. Tem a mesma precedência do 
operador de divisão tradicional.
^ 
Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a 
maior precedência entre os operadores aritméticos binários 
(aqueles que têm dois operandos).
Operadores de Caracteres
Operador de concatenação de strings (isto é, cadeias de
caracteres), quando usado com dois valores (variáveis ou
constantes) do tipo "caractere". Por exemplo: "Rio " + " 
de Janeiro" = "Rio de Janeiro".
+
Operadores Relacionais
=, <, >,
<=, >=,
 <>
Respectivamente: igual, menor que, maior que, menor ou igual
 a, maior ou igual a, diferente de. São utilizados em expressões
lógicas para se testar a relação entre dois valores do mesmo tipo.
Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em VERDADEIRO; 
"A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta
em FALSO.
Importante: No VisuAlg, as comparações entre strings não 
diferenciam as letras maiúsculas das minúsculas. Assim, "ABC" é 
igual a "abc". Valores lógicos obedecem à seguinte ordem: FALSO 
< VERDADEIRO.
\ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional.
precedência. Exemplos: -3, +x. Enquanto o operador 
unário -inverte o sinal do seu operando, o operador + não 
altera o valor em nada o seu valor.79
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
nao
Operador unário de negação. não VERDADEIRO = 
FALSO, e não FALSO = VERDADEIRO. Tem a maior 
precedência entre os operadores lógicos. Equivale ao 
NOT do Pascal.
Operadores Lógicos
Operador que resulta VERDADEIRO quando um dos seus 
operandos lógicos for verdadeiro. Equivale ao OR do 
Pascal.
ou
Operador que resulta VERDADEIRO somente se seus 
dois operandos lógicos forem verdadeiros. Equivale ao 
AND do Pascal.
Operador que resulta VERDADEIRO se seus dois 
operandos lógicos forem diferentes, e FALSO se forem 
iguais. Equivale ao XOR do Pascal.
E
xou
5.1- Considerando que X = 1, Y = 2 e Z = 5, desenvolva. 
a. Z mod Y div Y
b. X + Y + Z / 3 
c. FRAC (X / Z) + ROUND (Z / Y) * TRUNC (Z / Y)
d. SQRT (Z div Y + X * Y) 
e. Z – ABS (X – SQR(Y)) 
5.2- Dadas as comparações abaixo, escreva os resultados. 
a. 3 = 3.0 
b. a' <= “A” 
c. “=”
d. CASA <> “casa” 
e. FALSE = FALSE 
f. JOAQUIM' < “JOSE” 
g. 22' > “200” 
ATIVIDADES
80
5.3- Sendo A = TRUE e B = FALSE. Qual o resultado das expressões 
abaixo?
a. not A and B or A and not B 
b. not (not (A or B) and (A or B)) 
c. A or B and not A or not B 
d. (A or B) and (not A or not B) 
5.4 - Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os 
valores abaixo. Informe se as expressões são verdadeiras ou 
falsas.
5.5 - Sabendo que A=3, B=7 e C=4, informe se as expressões 
abaixo são verdadeiras ou falsas.
a. (A+C) > B ( )
b. B >= (A + 2) ( )
c. C = (B –A) ( )
d. (B + A) <= C ( )
e. (C+A) > B ( )
5.6 - Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões 
abaixo são verdadeiras ou falsas.
a. (A > C) AND (C <= D) ( )
b. (A+B) > 10 OR (A+B) = (C+D) ( )
c. (A>=C) AND (D >= C) ( )
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
100,00
200,00
300,00
0,00
10,00
15,00
100
190,00
285,00
(SALLIQ > = 100,00)
(SALLIQ < = 190,00)
SALLIQ = SALÁRIO - IR
SALÁRIO IR SALLIQ EXPRESSÃO V ou F
81
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Estrutura de um
algoritmo
Capítulo 6
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
A partir deste capítulo, os algoritmos serão construídos em 
uma estrutura em “pseudocódigo” ou “português estruturado” 
como mostrado no Algoritmo 6.1.
 
algoritmo "<nome do algoritmo>" 
 var 
 <lista de variáveis> : <tipo>
 
 inicio
 
 
<comando 1>
 <comando 2>
 <comando 3>
 
.
 
.
 
.
 
<comando n>
 fimalgoritmo // isto é um comentário
Declaração do 
algoritmo 
 
Seção de declaração 
de variáveis
 
Bloco de 
comandos
 
 Comentário
Algoritmo 6.1. Estrutura de um algoritmo.
No Algoritmo 6.1, encontramos inicialmente a declaração 
do nome do algoritmo, em seguida, vem a seção de declaração 
de variáveis e finalmente o corpo do algoritmo, delimitado por 
uma estrutura seqüencial como será visto na seção a seguir. 
82
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Comentários feitos dentro dos algoritmos são bem vindos, e são 
precedidos de //.
6.1 Estruturas de controle
O fluxo de execução de um algoritmo deve ser tal que 
execute as ações necessárias para realizar a tarefa a que se 
propõe. Para que isto aconteça, é necessário o uso das estruturas 
básicas de controle do fluxo de execução:
? Seqüenciação
? Seleção (Decisão)
? Repetição (Iteração, Loop)
Estas estruturas devem ser combinadas, como um mosaico, 
a fim de refletir a solução que se deseja, de acordo com o proble-
ma enunciado.
Nas próximas seções serão descritas as estruturas de con-
trole básicas que serão utilizadas no decorrer deste curso e que 
também podem ser encontradas na maioria das linguagens de 
programação.
6.1.1 Estrutura Seqüencial
Também conhecida como bloco de comandos, esta é a 
estrutura básica mais simples. Trata-se apenas da reunião de 
diversos comandos que serão executados de cima para baixo, em 
seqüência [FORBELLONE05].
Normalmente cada linha corresponde a um comando para 
facilitar a leitura e a compreensão do algoritmo.
Estruturas seqüenciais são definidas quando se deseja 
83
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
agrupar diversos comandos relacionados. A estrutura seqüencial 
mais comum é aquela que define o início e o fim do algoritmo 
como vemos no Algoritmo 6.1.
DICAS: 
Nas linguagens de programação, os comandos são geral-
mente separados por ponto-e-vírgula. Isto possibilita que 
mais de um comando seja escrito por linha.
Neste curso de lógica, você deve colocar apenas um 
comando por linha, o ponto-e-vírgula não é necessário. Com 
esta estratégia, os algoritmos ficam mais legíveis
Outra estratégia muito usada é a de indentar os blocos de 
comandos. Indentar significa afastar (use a tecla tab ou 4 
espaços) todos os comandos do bloco, de modo que facilite a 
leitura do algoritmo.
inicio //identificação do início do bloco de comandos do 
algoritmo
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimalgoritmo // término do bloco de comandos.
A seguir serão mostrados exemplos de algoritmos que 
utilizam apenas comandos agrupados em uma estrutura seqüen-
cial.
EXEMPLO 6.1
PROBLEMA:
Ler 4 notas de um aluno, calcular e escrever a sua média.
Algoritmo 6.2. Modelo geral da estrutura seqüencial de um algoritmo.
84
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
RESOLUÇÃO (Algoritmo 6.3):
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável 
media (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
algoritmo "Media de 4 notas"
var
 n1, n2, n3, n4, media : real
inicio
leia (n1, n2, n3, n4)
media <- (n1 + n2 + n3 + n4) / 4
escreva ("A media é:", media)
fimalgoritmo
Algoritmo 6.3. Cálculo da média de 4 notas de um aluno.
EXEMPLO 6.2
PROBLEMA:
Ler 3 notas de um aluno, calcular e escrever a sua média 
ponderada segundo o critério de pesos de 2, 3 e 5, respectiva-
mente.
RESOLUÇÃO (Algoritmo 6.4):
? Ler as 3 notas, n1, n2, n3 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável 
mediaFinal (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
algoritmo "Conversão de graus Fahrenheit para Celsius"
var
 celsius, fahrenheit : real
inicio
 leia(fahrenheit)
 celsius <- (9/5) * (fahrenheit - 32)
 escreva (celsius)
fimalgoritmo
Algoritmo 6.5. Conversão de graus Celsius para Fahrenheit. 85
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Média Ponderada"
var
 n1, n2, n3, mediaFinal : real
 
inicio
 leia (n1, n2, n3)
 mediaFinal <- ((2 * n1) + (3 * n2) + (5 * n3)) / 10
 
 escreva (mediaFinal)
Algoritmo 6.4. Cálculo da média ponderada de 3 notas de um aluno.
EXEMPLO 6.3
PROBLEMA:
Ler uma temperatura em graus Fahrenheit e transformá-la 
em Celsius segundo a fórmula: C = 5/9(F-32).
RESOLUÇÃO (Algoritmo 6.5):
? Ler a temperatura em graus para uma variável fahrenheit 
(variável do tipo real)
? Converter a temperatura e armazenar em uma variável 
celsius. (Note que a temperatura em Celsius não é lida, 
pois será calculada).
? Escrever o resultado da conversão.
86
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.4
PROBLEMA:
Ler as coordenadas de dois pontos:
? Ponto 1 (P) em x1, y1 e 
? Ponto 2 (Q) em x2, y2.
Calcular a distância (d) entre os dois pontos segundo a 
fórmula:
RESOLUÇÃO (Algoritmo 6.6):
? Ler as coordenadas dos dois pontos: x1, y1, x2,y2 (variá-
veis do tipo real)
? Calcular a distância segundo a fórmula descrita acima 
(verificar a sintaxe no algoritmo). Note que a raiz quadra-
da de um número é equivalente a elevar este número a ½.
? Escrever o resultado do cálculo.
algoritmo "Distância entre dois pontos"
var
 x1, y1, x2, y2, distancia : real
 
inicio
 leia (x1, y1)
 leia (x2, y2)
 
 distancia <- (((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) ^ 0.5
 
 escreva (distancia)
 
fimalgoritmo
Algoritmo 6.6. Calcula a distância entre 2 pontos lidos.
d(P,Q) = (x — x )² + (y — y )²1 2 1 2
87
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
6.1.2 Estrutura de Seleção
Às vezes é necessário decidir por um ou por outro fluxo de 
execução dentro de um algoritmo. Acontece que, dependendo 
das circunstâncias (valores lidos, cálculos efetuados, condições 
de erro), é preciso realizar ações diferentes dentro de um algo-
ritmo. A seguir, vemos alguns exemplos:
? Verificar se um divisor é diferente de zero a fim de realizar 
uma operação de divisão;
? O usuário digitou um valor inválido? Dê uma mensagem de 
erro.
? Caso o resultado seja negativo, transformar em positivo.
A estrutura de seleção, também conhecida por decisão, é 
responsável por testar uma condição e desviar o fluxo de execu-
ção de acordo com a avaliação realizada [FORBELLONE05].
Uma condição é representada por expressões lógicas ou 
relacionais e, ao serem avaliadas, podem ser satisfeitas, ou não. 
Dizemos que o resultado é verdadeiro se a condição é satisfeita. 
Quando a condição não é satisfeita, o resultado é falso.
Existem dois tipos de seleção: a seleção simples e a seleção 
composta. Na seleção simples, se uma condição for verdadeira, 
um bloco de comandos (BLOCO VERDADE) é executado como é 
mostrado no Algoritmo 6.7. A seleção composta é responsável 
por executar um bloco de comandos caso a condição seja verda-
deira (BLOCO VERDADE) e outro bloco de comandos caso a condi-
ção seja falsa (BLOCO FALSO). A seleção composta é mostrada no 
Algoritmo 6.8.
Um bloco verdade é o conjunto de comandos entre as 
cláusulas entao e fimse no caso de seleção simples. Em uma 
Algoritmo 6.8. Estrutura de uma seleção composta.
88
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
seleção composta, o bloco verdade fica entre as cláusulas entao 
e senao.
Um bloco falso existe apenas se a seleção é composta e está 
definido entre as cláusulas senao e fimse.
Algoritmo 6.7. Estrutura de uma seleção simples
 se <condição> entao 
 
 <comando 1> 
<comando 2> 
<comando 3> 
. 
. 
. 
<comando n> 
fimse 
Bloco 
verdade
 se <condição> entao 
 <comando 1> 
<comando 2> 
. 
. 
. 
<comando n> 
senao 
 <comando 1> 
<comando 2> 
. 
. 
. 
<comando n> 
fimse 
Bloco 
verdade 
Bloco
falso
A seguir serão mostrados exemplos de algoritmos que 
fazem uso da estrutura de seleção para solucionar os problemas 
propostos.
89
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.5
PROBLEMA: 
Lê quatro notas de um aluno e calcula a sua média, infor-
mando se o aluno está aprovado (média >= 6,0) ou reprovado 
(média < 6,0).
RESOLUÇÃO (Algoritmo 6.9):
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável 
media (note que um valor calculado não é lido)
? Escrever o resultado do cálculo contido em media.
? Escrever se o aluno está aprovado ou reprovado de acordo 
com a média calculada. Se a média é maior ou igual a 6,0, 
o aluno estará aprovado; caso contrário, estará reprova-
do.
algoritmo "Situação Aluno"
var
 n1, n2, n3, n4, media : real
inicio
 leia (n1, n2, n3, n4)
 media <- (n1 + n2 + n3 + n4) / 4
 escreva ("A media é:", media)
 
 se media >= 6 entao
 escreva ("O aluno está aprovado")
 senao
 escreva ("O aluno está reprovado")
fimse
fimalgoritmo
Algoritmo 6.9. Algoritmo Situação do Aluno.
EXEMPLO 6.6
PROBLEMA: 
Ler 2 valores inteiros e escrever o resultado da divisão do 
primeiro pelo segundo.
90
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
RESOLUÇÃO (Algoritmo 6.10):
? Ler dois valores inteiros v1, v2 (variáveis do tipo inteiro)
? Verificar se o segundo número é diferente de zero (não 
existe divisão por zero).
? Realizar a divisão caso a condição acima seja satisfeita e 
armazenar em uma variável divisao (variável do tipo real)
? Escrever o resultado deste cálculo.
algoritmo "Divisão de dois números lidos"
var
 v1, v2 : inteiro
 divisao : real
inicio
 leia (v1, v2)
 se v2 <> 0 entao
 divisao <- v1 / v2
 escreva (divisao)
 fimse
fimalgoritmo
Algoritmo 6.10. Algoritmo divisão de dois números lidos.
EXEMPLO 6.7
PROBLEMA:
Ler 2 valores inteiros e escrever o resultado da divisão do 
primeiro pelo segundo.
RESOLUÇÃO (Algoritmo 6.11): 
? Ler dois valores inteiros v1, v2 (variáveis do tipo inteiro)
? Verificar se o segundo número é diferente de zero (não 
existe divisão por zero).
? Realizar a divisão caso a condição acima seja satisfeita e 
armazenar em uma variável divisao (variável do tipo real)
91
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
? Escrever o resultado deste cálculo.
? Exibir uma mensagem de erro no caso da condição não ser 
satisfeita.
algoritmo "Divisão de dois números lidos com mensagem de 
erro"
var
 v1, v2 : inteiro
 divisao : real
inicio
 leia (v1, v2)
 se v2 <> 0 entao
 divisao <- v1 / v2
 escreva (divisao)
 senao
 escreva ("Não é possível dividir por zero!")
 fimse
fimalgoritmo
Algoritmo 6.11. Divisão de dois números inteiros com mensagem de erro.
EXEMPLO 6.8
PROBLEMA: 
Ler 2 valores inteiros e informar se o segundo é divisor do 
primeiro. Considere que o segundo valor nunca é zero.
RESOLUÇÃO (Algoritmo 6.12):
? Ler dois valores inteiros n1, n2 (variáveis do tipo inteiro)
? Verificar se o segundo número é divisor do primeiro (para 
isto, basta testar se o resto da divisão inteira do primeiro 
pelo segundo é igual a zero). O operador de resto é o %.
? Escrever o resultado do teste.
92
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Algoritmo 6.12. Algoritmo divisor de um número.
EXEMPLO 6.9
PROBLEMA:
Ler um número inteiro e escrever se este é par ou ímpar.
RESOLUÇÃO (Algoritmo 6.13):
· Ler um número num (variável do tipo inteiro)
· Verificar se o valor lido é par ou ímpar (para isto, basta 
testar se o resto da divisão inteira do número por dois é 
igual a zero). O operador de resto é o %.
· Escrever o resultado do teste.
algoritmo "Par ou ímpar"
var
 num : inteiro
inicio
 leia (num)
 se (num % 2) = 0 entao
 escreval ("Número Par")
 senao
 escreval ("Número Ímpar")
 fimse
fimalgoritmo
Algoritmo 6.13. Algoritmo Par ou Ímpar.
algoritmo "Divisores"
var
n1, n2 : inteiro
inicio
 leia (n1, n2)
 se (n1 % n2) = 0 entao
 escreval (n2, " é divisor de", n1)
 senao
 escreval (n2, " não é divisor de", n1)
 fimse
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
93
algoritmo "Ordem crescente"
var
 n1, n2 : inteiro
inicio
 leia (n1, n2)
 se n1 > n2 entao
 escreval(n2, n1)
 senao
 escreval(n1, n2)
 fimse
fimalgoritmo
Algoritmo 6.14. Algoritmo dois número em ordem crescente.
EXEMPLO 6.11
PROBLEMA: 
Ler um raio não negativo para uma esfera e calcular seu 
volume.
RESOLUÇÃO (Algoritmo 6.15):
? Ler o raio da esfera (variável do tipo real)
? Calcular o seu volume apenas se o raio é válido, ou seja, 
não negativo. A fórmulado volume da esfera é dada por 
? Volume = (4/3) ð R³
? Escrever o resultado do cálculo.
EXEMPLO 6.10
PROBLEMA:
Ler 2 valores inteiros e escrevê-los em ordem crescente.
RESOLUÇÃO (Algoritmo 6.14):
? Ler dois valores inteiros n1, n2 (variáveis do tipo inteiro)
? Escrever em ordem crescente, ou seja, o menor deve ser 
escrito primeiro.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
94
Algoritmo 6.15. Algoritmo Volume da Esfera.
6.1.2.1Seleção encadeada
Devido à complexidade do problema a ser resolvido por um 
algoritmo, é comum serem utilizadas várias estruturas de sele-
ção [FORBELLONE05]. Quando existe uma ou mais seleções 
dentro de outra seleção, chamamos esta estrutura de seleção 
encadeada ou seleção aninhada. O Algoritmo 6.8 mostra uma 
seleção encadeada.
EXEMPLO 6.12
PROBLEMA: 
Lê uma idade e informa se a pessoa já alcançou a maiorida-
de ou não. Não se deve aceitar valores de idade inválidos.
RESOLUÇÃO (Algoritmo 6.16): 
? Ler um valor inteiro idade (variável do tipo inteiro)
? Verificar se a idade está entre 0 e 17 anos. Neste caso, a 
pessoa é menor de idade.
? Verificar se a idade está entre 18 e 130 anos. Neste caso, a 
pessoa é maior de idade.
algoritmo "Volume da Esfera"
var
 raio, volume : real
inicio
 escreva("Raio da Esfera: ")
 leia(raio)
 
 se raio < 0 entao
 escreval("O raio não pode ser negativo!")
 senao
 volume <- (4/3) * 3.14 * (raio ^ 3)
 escreval("O volume da esfera é: ", volume)
 fimse
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
95
algoritmo "Maioridade"
var
 idade : inteiro
inicio
 leia (idade)
 se (idade >=0) e (idade < 18) entao
 escreva ("Indivíduo Menor de Idade")
 senao
 se (idade >= 18) e (idade <= 130) entao
 escreva ("Individuo Maior de Idade")
 senao
 escreva ("Erro: Idade inválida!")
 fimse
 fimse
fimalgoritmo
Algoritmo 6.16. Maioridade.
EXEMPLO 6.13
PROBLEMA: 
Ler um valor inteiro, determinar e escrever se o valor lido é 
positivo, negativo ou zero.
RESOLUÇÃO (Algoritmo 6.17): 
? Ler um valor inteiro num (variável do tipo inteiro)
? Verificar se o valor lido é maior que zero. Neste caso, 
escrever “positivo”.
? Verificar se o valor lido é menor que zero. Neste caso, 
escrever “negativo”.
? Se não for negativo, nem positivo, só resta escrever 
“zero”.
? Deve-se exibir uma mensagem de erro para idades inváli-
das, tais como valores negativos e maiores de 130.
Algoritmo 6.17. Algoritmo Positivo, Negativo ou Zero.
EXEMPLO 6.14
PROBLEMA:
Ler uma nota quantitativa e escrever a nota qualitativa 
segundo os critérios abaixo:
[0..2] Sem rendimento [7..8] Bom
[3..4] Insuficiente [9..10] Excelente
[5..6] Regular 
RESOLUÇÃO (Algoritmo 6.18): 
? Ler uma nota (variável do tipo real)
? Verificar a classificação de qualidade da nota de acordo 
com as regras dadas e escrever o conceito apropriado.
algoritmo "Positivo, Negativo ou Zero"
var
 num : inteiro
inicio
 leia(num)
 se num > 0 entao
 escreval("Número positivo!")
 senao
 se num < 0 entao
 escreval("Número Negativo!")
 senao
 escreval("Zero!")
 fimse
 fimse 
fimalgoritmo
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
96
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
97
algoritmo "Nota Qualitativa"
var
 nota : real
 
inicio
 leia (nota)
 se (nota >= 0) e (nota <=2) entao
 escreva ("Sem Rendimento")
 senao
 se (nota = 3) ou (nota = 4) entao
 escreva ("Rendimento Insuficiente")
 senao
 se (nota = 5) ou (nota = 6) entao
 escreva ("Rendimento Regular")
 senao
 se (nota = 7) ou (nota = 8) entao
 escreva ("Rendimento Bom")
 senao
 se (nota = 9) ou (nota = 10) entao
 escreva ("Rendimento Excelente")
 fimse
 fimse
 fimse
 fimse
 fimse
 
fimalgoritmo
Algoritmo 6.18. Algoritmo nota qualitativa.
EXEMPLO 6.15
PROBLEMA: 
Lê uma idade e informa se a pessoa é um eleitor obrigatório 
(entre 18 e 69 anos), facultativo (entre 16 e 17 anos e acima de 
70) ou não é eleitor (menos de 16 anos).
RESOLUÇÃO (Algoritmo 6.19): 
? Ler uma idade (variável do tipo inteiro)
? Verificar se a idade está entre 0 e 17 anos. Neste caso, a 
pessoa não é um eleitor.
? Verificar se a idade está entre 18 e 69 anos. Neste caso, a 
pessoa é um eleitor obrigatório.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
98
Algoritmo 6.19. Eleitores.
EXEMPLO 6.16
PROBLEMA:
Calcula as raízes de uma equação o segundo grau (se houve-
rem) dados os coeficientes (a, b, c) da equação.
RESOLUÇÃO (Algoritmo 6.20): 
? Ler os coeficientes da equação do segundo grau a , b, c.
? Calcular o delta e armazenar em uma variável.
? Se o delta for negativo, informar que não existem raízes 
reais.
? Se o delta for zero, calcular e informar a única raiz real.
? Se o delta for positivo, calcular e informar as duas raízes 
reais.
algoritmo "Eleitores"
var
 idade: inteiro
inicio
 leia (idade)
 se (idade = 16) ou (idade = 17) ou ((idade >= 70) e (idade 
<= 130)) entao
 escreva ("Eleitor Facultativo")
 senao
 se (idade >= 18) e (idade < 70) entao
 escreva ("Eleitor Obrigatório")
 senao
 se (idade >= 0) e (idade < 16) entao
 escreva("Não é Eleitor")
 senao
 escreva ("Erro: Idade inválida!")
 fimse
 fimse
 fimse
fimalgoritmo
? Verificar se a idade é 16 ou 17 anos ou acima de 70 anos. 
Neste caso a pessoa é um eleitor facultativo.
99
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Raízes da equação do 2o. Grau"
var
 a, b, c, delta, x1, x2 : real
inicio
 leia (a, b, c)
 
 delta <- (b * b) - (4 * a * c)
 
 se delta < 0 entao
 escreval ("Não existem raízes reais")
 senao
 se delta = 0 entao
 x1 <- (-b) / (2 * a)
 escreval ("Apenas uma raiz real: ", x1)
 senao
 x1 <- ((-b) + (delta ^ 0.5)) / (2 * a)
 x2 <- ((-b) - (delta ^ 0.5)) / (2 * a)
 escreval ("Raiz 1: ", x1)
 escreval ("Raiz 2: ", x2)
 fimse
 fimse
fimalgoritmo
Algoritmo 6.20. Raízes de uma equação do 2º grau.
6.1.2.2 Seleção de múltipla escolha
Este tipo de seleção é utilizado quando se necessita testar 
um conjunto de valores discretos para uma mesma variá-
vel[FORBELLONE05]. Esta seleção também é conhecida como 
seleção múltipla. A sua sintaxe é diferente da sintaxe dos outros 
tipos de seleção. 
Além dos valores discretos a serem testados, é possível 
definir uma situação de exceção, quando nenhuma das alternati-
vas é válida. Para tanto, deve ser utilizada a cláusula outrocaso 
como no exemplo do algotimo 6.22.
O algoritmo 6.21 mostra o modelo geral para uma estrutu-
ra de seleção de múltipla escolha.
 escolha <variável>
 caso <expressão constante 1>
 <comando 1>
 caso <expressão constante 2>
 <comando 2>
...
 caso <expressão constante n>
 <comando n>
 outrocaso
 <este comando será executado se o valor testado 
 não corresponder a nenhuma opcao>
 fimescolha
Algoritmo 6.21. Modelo geral da seleção de múltipla escolha.
EXEMPLO 6.17
PROBLEMA:
Ler um código que representa uma escolha de um cardápio. 
Escrever o nome do prato correspondente. De acordo com os 
valores abaixo:
1: Peixe frito
2: Frango à milanesa
3: Churrasco
4: Pizza
5: Hamburguer com fritas
6: Feijoada
RESOLUÇÃO (Algoritmo 6.22):? Ler um código numérico:
? De acordo com o valor lido para o código, escrever o nome 
do prato correspondente.
100
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
EXEMPLO 6.18
PROBLEMA: 
Ler o nome de um time de futebol e informar se é um dos 
times cariocas, paulistas ou de outro estado.
RESOLUÇÃO (Algoritmo 6.23):
? Ler um nome de time (variável do tipo caractere)
? De acordo com nome, escrever a naturalidade do time.
algoritmo "Pratos de um cardápio"
var
 codPrato : inteiro
inicio
 escreva ("Entre com o código do prato: ")
 leia (codPrato)
 escolha codPrato
 caso 1
 escreval ("Peixe frito")
 caso 2
 escreval ("Frango à milanesa")
 caso 3
 escreval ("Churrasco")
 caso 4
 escreval ("Pizza")
 caso 5
 escreval ("Hamburguer com fritas")
 caso 6
 escreval ("Feijoada")
 outrocaso
 escreval ("Código inválido")
 fimescolha
 
fimalgoritmo
Algoritmo 6.22. Opções do cardápio de um restaurante.
101
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
102
algoritmo "Naturalidade de um time lido"
var
 time: caractere
inicio
 escreva ("Entre com o nome de um time de futebol: ")
 leia (time)
 escolha time
 caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
 escreval ("É um time carioca.")
 caso "São Paulo", "Palmeiras", "Santos", "Corinthians"
 escreval ("É um time paulista.")
 outrocaso
 escreval ("É de outro estado.")
 fimescolha
 
fimalgoritmo
Algoritmo 6.23. Naturalidade dos times.
6.1.3 Estrutura de repetição
Normalmente as tarefas realizadas por um algoritmo 
devem ser refeitas para muitos valores de entrada ou para 
diversos usuários. 
Por exemplo, um algoritmo que realiza vendas em um 
supermercado deve poder receber o código e o preço de vários 
produtos em uma única venda. Mas como saber quantos itens 
serão comprados por cada cliente? Ao efetuar a entrada de 
dados, não é possível colocar um comando de leitura para cada 
item de venda. Imagine um algoritmo que leia 100 itens de uma 
venda. 
Para resolver problemas com repetição de atividades, 
existem as estruturas de repetição (laço de repetição, loop) 
[FORBELLONE05]. Com estas estruturas de controle especiais, é 
possível realizar facilmente a mesma tarefa quantas vezes forem 
necessárias. Veja alguns exemplos de problemas que devem 
fazer uso de estruturas de repetição.
? Calcule a média anual de 40 alunos de uma turma;
? Calcule o total a pagar de n itens vendidos para um clien-
te;
? Verifique todos os brasileiros que não declararam o impos-
to de renda;
? Exiba os emails da caixa de entrada de um usuário.
Um detalhe essencial sobre estrutura de repetição é que o 
número de iterações (repetições) deve ser, necessariamente, 
finito. Caso isto não ocorra, o algoritmo não terá fim, ocasionan-
do erro.
É possível utilizar o comando “interrompa” para terminar 
um laço (repetição) dentro do bloco de comandos. Isto será visto 
no exemplo do algoritmo 6.33.
Existem várias estruturas conhecidas para realizar repeti-
ção. Neste curso de lógica de programação, serão vistas as 
estruturas de repetição:
? Com teste no início;
? Com variável de controle.
6.1.3.1 Estrutura de repetição com teste
Neste tipo de repetição, um conjunto ou bloco de coman-
dos é repetido enquanto uma condição é verdadeira. Esta verifi-
cação é feita no início da estrutura de repetição. A implicação 
disto é que o bloco de comandos pode não ser executado nenhu-
ma vez caso a condição seja falsa já de início [FORBELLONE05].
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
103
enquanto <condição> faça // executa os comandos se condição é 
verdadeira
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimenquanto // término do bloco de comandos do enquanto.
Algoritmo 6.24. Modelo geral do enquanto.
Quando o resultado da avaliação da <condição> é falso, a 
estrutura de repetição enquanto é abandonada.
O exemplo do Algoritmo 6.25 mostra um enquanto cuja 
<condição> utiliza um contador para realizar um determinado 
número de repetições. 
EXEMPLO 6.19
PROBLEMA:
Ler 4 notas de 40 alunos, calcular e escrever cada média.
RESOLUÇÃO (Algoritmo 6.25):
? Realizar 40 vezes os comandos a seguir:
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável 
media (note que um valor calulado não é lido)
? Escrever o resultado do cálculo contido em media.
Neste exemplo, o algoritmo de cálculo da média das 4 notas 
de um aluno é modificado para realizar este cálculo para 40 
alunos. Note que o bloco de comandos do enquanto é repetido 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
104
A estrutura utilizada é o enquanto. A estrutura geral do 
enquanto é vista no Algoritmo 6.24.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
105
algoritmo "Media de 4 notas para 40 alunos"
var
 n1, n2, n3, n4, media : real
 cont : inteiro
inicio
 cont <- 1
 enquanto cont <= 40 faca
 
 leia (n1, n2, n3, n4)
 media <- (n1 + n2 + n3 + n4) / 4
 escreva ("A media é:", media)
 cont <- cont + 1
 fimenquanto
 
fimalgoritmo
Algoritmo 6.25. Média de 4 notas para 40 alunos.
Os passos necessários para utilizar um contador para 
controle de uma repetição são:
?Inicializar o contador: cont <- 1
?Isto é necessário pois a variável precisa ter um valor 
inicial para a primeira comparação e para o incremento
?Testar o contador: cont <= 40 ?
?Quando o valor da variável cont for maior que n, o 
enquanto termina.
?Incrementar o contador (dentro do bloco de comandos) 
cont <- cont + 1
?Isto permite que o valor de cont mude; inicialmente 
possui o valor zero, depois é incrementado de um em um 
(1, 2, 3, ..., 40).
?O último valor que cont recebe antes que o enquanto 
seja abandonado é 41, pois, visto 41 ser maior que 40, a 
<condição> torna-se falsa.
DICA:
Um contador é uma variável cujo conteúdo é incre-
mentado de uma constante. Exemplo: cont <- cont + 1
até que a condição se torne falsa, ou seja, o bloco será executa-
do enquanto cont for menor ou igual a 40 (condição verdadeira).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
106
O exemplo do algoritmo 6.13 mostra uma repetição onde 
não se sabe, a priori, o número de vezes que o bloco de comandos 
será executado.
EXEMPLO 6.20
PROBLEMA: Ler 4 notas de n alunos, calcular e escrever 
cada média.
RESOLUÇÃO (Algoritmo 6.26):
? Ler o número de alunos em uma variável n
? Realizar n vezes os comandos a seguir:
? Ler as 4 notas, n1, n2, n3, n4 (variáveis do tipo real)
? Calcular a média e armazenar ou atribuir a uma variável 
media (note que um valor calulado não é lido)
? Escrever o resultado do cálculo contido em media.
Neste exemplo, o valor de controle do fim da repetição é 
trocado para uma variável. A condição agora testa o valor de cont 
em relação ao conteúdo da variável n.
algoritmo "Media de 4 notas para n alunos"
var
 n1, n2, n3, n4, media : real
 cont, n : inteiro
inicio
 cont <- 1
 leia (n)
 enquanto cont <= n faca
 
 leia (n1, n2, n3, n4)
 media <- (n1 + n2 + n3 + n4) / 4
 escreva ("A media é:", media)
 cont <- cont + 1
 fimenquanto
Algoritmo 6.26. Média de 4 notas para n alunos.
107
6.1.3.2 Estrutura de Repetição
 com variável de controle
Uma maneira mais fácil de realizar uma repetição quando 
se sabe os valores inicial e final da variável de controle (conta-
dor) é utilizar a estrutura para. Nesta estruturade repetição, a 
variável de controle é inicializada, testada e incrementada em 
apenas uma linha, na declaração do para [FORBELLONE05]. 
A primeira parte do para é a inicialização da variável de 
controle:
? para <variável_controle> de <valor_inicial>
A segunda parte é o teste de fim da repetição, ou seja o 
último valor válido:
? até <valor_final>
A última parte é o incremento da variável de controle:
? passo <incremento>
Se o incremento é de 1, pode ficar implícito como valor 
padrão. No Algoritmo 6.27 é mostrada a estrutura geral desta 
estrutura de repetição.
para <variável_controle> de <valor_inicial> até <valor_final> 
[passo <incremento>] faça
<comando 1>
<comando 2>
<comando 3>
.
.
.
<comando n>
fimpara // término do bloco de comandos do para.
Algoritmo 6.27. Modelo geral da estrutura de repetição para.
No exemplo do Algoritmo 6.26, o problema das médias para 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
108
n alunos está escrito utilizando a estrutura de repetição para. 
Note os passos equivalentes ao enquanto:
? variável de controle cont é inicializada com 1 (para cont 
de 1) 
? teste da variável de controle (até n)
? incremento implícito
algoritmo "Media de 4 notas para n alunos"
var
 n1, n2, n3, n4, media : real
 cont, n : inteiro
inicio
 leia (n)
 para cont de 1 ate n faca
 
 leia (n1, n2, n3, n4)
 media <- (n1 + n2 + n3 + n4) / 4
 escreva ("A media é:", media)
 fimpara
 
fimalgoritmo
Algoritmo 6.28. Média de 4 notas para n alunos utilizando PARA.
EXEMPLO 6.21
PROBLEMA:
Mostrar a tabuada de multiplicação de um número lido.
RESOLUÇÃO (Algoritmo 6.29):
· Ler o número num.
· Escrever a tabuada de num como segue:
? num x 1 = ?
? num x 2 = ?
? num x 3 = ?
? num x 4 = ?
? num x 5 = ?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
109
? num x 6 = ?
? num x 7 = ?
? num x 8 = ?
? num x 9 = ?
? num x 10 = ?
A estrutura para é adequada porque se sabe a priori o 
número de repetições que serão feitas (10).
algoritmo "Tabuada de Multiplicação"
var
 num, i : inteiro
inicio
 escreva("Entre com um numero inteiro: ")
 leia (num)
 
 escreval("Tabuada de Multiplicação do ", num)
 para i de 1 ate 10 faca
 escreval(i, " * ", num, " = ", i * num)
 fimpara
fimalgoritmo
Algoritmo 6.29. Tabuada de Multiplicação de um número.
6.2 Combinando as estruturas de controle
Como já foi dito, as estruturas devem ser combinadas a fim 
de resolver quaisquer problemas de lógica de programação. 
Nesta seção serão mostrados exemplos de algoritmos que combi-
nam as estruturas vistas neste curso: seleção (se-então-[senão], 
escolha) e repetição (enquanto, para). Estas, juntamente com os 
comandos de entrada (leia) e saída (escreva) e com as expres-
sões lógicas e relacionais, são as ferramentas básicas para a 
construção de algoritmos que atendam às necessidades dos 
problemas a serem solucionados.
 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
110
Nos exemplos a seguir, temos os algoritmos do “Maior” e do 
“Menor” nas suas variações mais comuns.
Nos último exemplo vemos condições elaboradas de manei-
ra mais complexa para resolver problema envolvendo triângulos.
EXEMPLO 6.22
PROBLEMA: 
Ler 10 número 3 e verificar qual é o maior dentre eles.
RESOLUÇÃO (Algoritmo 6.30):
? Ler um número 10 vezes.
? Armazenar a primeira leitura em uma variável maior.
? A cada nova leitura, testar se o valor é maior que o valor da 
variável maior. Neste caso, este é o maior valor até então, 
portanto, maior recebe o valor lido.
Escrever o conteúdo de maior.
algoritmo "Maior de 10 números"
var
 num, maior, i : inteiro
 
inicio
 escreva("Numero 1: ")
 leia(num)
 maior <- num
 para i de 2 ate 10 faca
 escreva("Numero ", i, ": ")
 leia(num)
 
 se num > maior entao
 maior <- num
 fimse
 fimpara
 escreva("O maior numero lido foi: ", maior)
fimalgoritmo
Algoritmo 6.30. Maior de 10 números.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
111
EXEMPLO 6.23
PROBLEMA: 
Ler N números e verificar qual é o menor dentre eles.
RESOLUÇÃO (Algoritmo 6.31):
? Ler N (total de repetições).
? Ler um número N vezes (apenas se N é positivo).
? Armazenar a primeira leitura em uma variável menor.
? A cada nova leitura, testar se o valor é menor que o valor 
da variável menor. Neste caso, este é o menor valor até 
então, portanto, menor recebe o valor lido.
? Escrever o conteúdo de menor.
algoritmo "Menor de N numeros"
var
 N, num, menor, i : inteiro
 
inicio
 leia (N)
 se (n > 0) entao
 escreva("Numero 1: ")
 leia(num)
 menor <- num
 para i de 2 ate N faca
 escreva("Numero ", i, ": ")
 leia(num)
 
 se num < menor entao
 menor <- num
 fimse
 fimpara
 escreva("O menor numero lido foi: ", menor)
 fimse
 
fimalgoritmo
Algoritmo 6.31. Menor de N valores lidos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
112
EXEMPLO 6.24
PROBLEMA: 
Ler uma seqüência de números que termina com um sinali-
zador (flag) igual a –999 que deve ser desprezado.
RESOLUÇÃO (Algoritmo 6.32):
· Ler um número até que seja lido o flag = -999
? Armazenar a primeira leitura em menor e em maior.
? A cada nova leitura, testar se o valor é menor que o valor 
da variável menor (novo menor, trocar) ou maior que a 
variável maior (novo maior, trocar).
· Escrever o conteúdo de menor e de maior.
algoritmo "Menor e Maior de uma seqüência de números"
var
 N, num, maior, menor, i : inteiro
 
inicio
a
 i <- 1
 escreva("Numero 1: ")
 leia(num)
 menor <- num
 maior <- num
 enquanto num <> -999 faca
 se num < menor entao
 menor <- num
 senao
 se num > maior entao
 maior <- num
 fimse
 fimse
 i <- i + 1
 escreva("Numero ", i, ": ")
 leia(num)
 fimenquanto
 se (maior <> -999) entao
 escreval("O menor numero lido foi: ", menor)
 escreval("O maior numero lido foi: ", maior)
 fimse
fimalgoritmo
Algoritmo 6.32. Maior e Menor de uma seqüência de valores lidos.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
113
EXEMPLO 6.25
PROBLEMA: 
Ler 3 valores e verificar se podem ser lados de um triângulo. 
Em caso afirmativo, informar o tipo de triângulo: eqüilátero, 
isósceles ou escaleno.
RESOLUÇÃO (Algoritmo 6.34):
? Ler os 3 lados.
? Verificar se podem formar um triângulo (a soma de dois 
lados quaisquer não pode ser menor que o lado restante).
algoritmo "Menor e Maior de uma seqüência de números (com 
interrompa)"
var
 num, maior, menor, i : inteiro
inicio
 maior <- -9999;
 menor <- 9999;
 i<- 1;
 enquanto num <> -999 faca
 escreva("Numero ", i, ": ")
 leia(num)
 se num = -999 entao
 interrompa
 fimse
 se num < menor entao
 menor <- num
 senao
 se num > maior entao
 maior <- num
 fimse
 fimse
 i <- i + 1
 fimenquanto
 se (maior <> -9999) entao
 escreval("O menor numero lido foi: ", menor)
 escreval("O maior numero lido foi: ", maior)
 fimse
fimalgoritmo
Algoritmo 6.33. Menor e Maior de uma seqüência de números (com interrompa)
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
114
EXEMPLO 6.26
PROBLEMA: 
Ler 3 valores e verificar se podem ser lados de um triângulo. 
Em casoafirmativo, informar se é triângulo retângulo.
RESOLUÇÃO (Algoritmo 6.35):
? Ler os 3 lados e verificar se podem formar um triângulo (a 
soma de dois lados quaisquer não pode ser menor que o 
lado restante)
? Verificar e escrever se é triângulo retângulo (hip² = cat1² + 
cat²)
 
 
algoritmo "Triângulos"
var
 l1, l2, l3 : real
inicio
 leia (l1, l2, l3)
 se ((l1 + l2) < l3) ou ((l1 + l3) < l2) ou ((l2 + l3) < 
l1) entao
 escreval ("Estes valores não podem ser lados de um 
triângulo")
 senao
 se (l1 = l2) e (l2 = l3) entao
 escreval ("Triângulo Equilátero")
 senao
 se (l1 = l2) ou (l2 = l3) ou (l1 = l3) entao
 escreval ("Triângulo Isósceles")
 senao
 escreval ("Triângulo Escaleno")
 fimse
 fimse
 fimse
fimalgoritmo
Algoritmo 6.34. Triângulos.
? Verificar e escrever o tipo de triângulo.
? Eqüilátero se todos os lados forem iguais.
? Isósceles se apenas dois lados forem iguais.
? Escaleno caso contrário (todos os lados são diferentes).
115
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
algoritmo "Triangulo Retangulo"
var
 l1, l2, l3: inteiro
inicio
 escreval("Lados do Triangulo")
 leia(l1)
 leia(l2)
 leia(l3)
 
 se (l1 > l2) e (l1 > l3) 
 se (l1^2) = ((l2^2) + (l3^2)) entao
 escreval("É Triangulo Retangulo!")
 senao
 escreval("Não é Triangulo Retangulo!")
 fimse
 senao
 se (l2 > l1) e (l2 > l3) 
 se (l2^2) = ((l1^2) + (l3^2)) entao
 escreval("É Triangulo Retangulo!")
 senao
 escreval("Não é Triangulo Retangulo!")
 fimse
 senao 
 se (l3^2) = ((l1^2) + (l2^2)) entao
 escreval("É Triangulo Retangulo!")
 senao
 escreval("Não é Triangulo Retangulo!")
 fimse
 fimse
 fimse
fimalgoritmo
Algoritmo 6.35. Triângulos
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
116
6.1. Faça um algoritmo que leia a idade de uma pessoa expressa 
em anos, meses e dias e mostre-a expressa apenas em dias. 
6.2. Faça um algoritmo que leia a idade de uma pessoa expressa 
em dias e mostre-a expressa em anos, meses e dias. 
6.3. Um sistema de equações lineares do tipo: 
ATIVIDADES
 
feydx
cbyax
=+
=+
, pode ser resolvido assim:
 
bdae
bfcex
−
−
=
 
bdae
cdafy
−
−
=e
Escreva um algoritmo que lê os coeficientes a, b, c, d, e, f, 
e calcula e mostra os valores de x e y.
6.4. Elaborar um algoritmo que lê 2 valores a e b e os escreve com 
a mensagem: “São múltiplos” ou “Não são múltiplos”.
6.5. Faça um algoritmo que leia um nº inteiro e mostre uma 
mensagem indicando se este número é par ou ímpar, e se é 
positivo ou negativo.
6.6. Fazer um programa para imprimir o conceito de um aluno, 
dada a sua nota. Supor notas inteiras somente. O critério 
para conceitos é o seguinte: 
notas inferiores a 3 - conceito E 
nota de 3 a 5 - conceito D 
notas 6 e 7 - conceito C 
notas 8 e 9 - conceito B 
nota 10 - conceito A 
117
6.7. Elabore um algoritmo que dada a idade de um nadador, 
classifique-o em uma das seguintes categorias:
· infantil A = 5-7 anos;
· infantil B = 8-10 anos;
· juvenil A = 11-13 anos;
· juvenil B = 14-17 anos;
· sênior = mais de 18 anos.
6.8. Para cada uma das mercadorias diferentes vendidas em um 
armazém, dispõe-se dos seguintes dados:
a. Código da mercadoria
b. Preço de compra
c. Preço de venda
d. Quantidade vendida no mês.
6.9. Fazer um algoritmo que leia os dados disponíveis e calcule e 
dê saída no total faturado no mês e no lucro total.
10. Num frigorífico existem 100 bois. Cada um traz no pescoço 
um placa com o seu número e seu peso. Pede-se um algorit-
mo que leia o número e o peso de cada boi e escreva o 
número e o peso do boi mais gordo e do mais magro.No 
algoritmo que você desenvolveu, se houver mais de um boi 
com o mesmo peso e que seja esse o mais gordo ou o mais 
magro, qual o número será escrito?
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
118
Introdução à Informática
Tecnologia em Análise e
Desenvolvimento de Sistemas
Bibliografia
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
[MOURSUND07] MOURSUND, David. Increasing your expertise as 
a problem solver: Some roles of computers. Disponível em: < 
h t t p : / / w w w. u o r e g o n . e d u / ~ m o u r s u n d / B o o k s / P S -
Expertise/index.htm>. Acesso em 05/06/2007
[BALDWIN04] BALDWIN,Douglas, SCRAGG,Greg. Algorithms and 
Data Structures: The Science of Computing. 1st edition,Charles 
River Media. 2004
[Shapiro 06] Shapiro, Stewart, "Classical Logic". The Stanford 
Encyclopedia of Philosophy (Winter 2006 Edition).Disponível em: 
<http://plato.stanford.edu/archives/win2006 /entries/logic-
classical/>. Acesso em 10/06/2007
[WIRTH 86] WIRTH, Niklaus, Algoritmos e Estruturas de Dados. 
Editora PHB. 1986. 
[TREMBLAY39] Tremblay, Jean-Paul, 1939 – Ciência dos computa-
dores: uma abordagem algorítmica/ Jean-Paul Tremblay, 
Richard B. Bunt; Traducai Moacir de Souza Prado; revisão técnica 
João Pedro Perotti. – São Paulo: McGraw-Hill do Brasil 1983
[FARRER89] FARRER, HARRY; Cristiano Gloncalves Becker; 
119
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Eduardo Faria, Helton Matos, Marcos Santos, Miriam Maia – 
Algoritmos Estruturados – LTC 2ª Edição - Rio de Janeiro, 1989.
[SALVETTI98] SALVETTI, Direceu Douglas , 1933 – Algoritmos 
/Dirceu Douglas Salvetti, Lisbete Madsen Barbosa. – São Paulo : 
Makron Books, 1998
[FORBELLONE05] Forbellone, André e Eberspacher, Henri. Lógica 
de Programação. 3a. Edição. Makron Books. 2005.
[HELPVISUALG] Help Visualg
[LOPES 02] LOPES, Anita. Introdução à Programação/ Anita 
Lopes, Guto Garcia – Rio De Janeiro: Elsevier, 2002 – 7ª 
Reimpressão.
120
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Anexo
Exercícios
Lógica de Programação I
Tecnologia em Análise e Desenvolvimento de Sistemas
1. Ler 6 notas de um aluno e calcular sua média.
2. Ler um valor da cotação do dólar de um determinado dia 
e calcular o valor em dólares para um valor lido em reais.
Ex: Cotação: R$ 2,15
 Valor em reais para cálculo: R$10,00
 Total em Dólares: R$ 21,50
3. Leia 2 valores, no caso variáveis A e B.
? Efetue a soma das variáveis A e B atribuindo o seu resulta-
do na variável X.
? Apresente o valor da variável X após a soma dos dois 
valores indicados.
4. A fórmula para calcular a área de uma circunferência é: 
A = pi * (Raio)^2. Sendo que o valor de pi = 3.14159 crie o seguinte 
algoritmo:
? Leia um valor para o raio, no caso a variável R.
Estruturas Seqüenciais
? Efetue o cálculo da área, elevando o valor de R ao quadra-
do e multiplicando por pi.
? Apresente o valor da área (variável A).
5. Escreva um algoritmo para calcular e exibir o compri-
mento de uma circunferência, sendo dado o valor de seu raio. 
C = 2 * Pi * raio.
6. Escrever um algoritmo que leia a idade de uma pessoa 
em dias e informe-a em anos, meses e dias.
7. Faça um algoritmo que leia a idade de uma pessoa 
expressa em anos, meses e dias e mostre-a expressa apenas em 
dias (considere que os meses possuem 30 dias).
8. Escreva um algoritmo que leia duas variáveis inteiras e 
troque o conteúdo entre elas.
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Estruturas de Seleção
9. Ler um número e escrever o seu valor negativo.
10. Ler dois números reais e informar se o segundo é o 
quadrado do primeiro.
11. Escreva um algoritmo que leia dois números e exiba-osem ordem crescente.
12. Escreva um algoritmo que leia as notas da 1a. e da 2a. 
avaliações de um aluno. A seguir, calcule a média aritmética 
simples e escreva uma mensagem que diga se o aluno foi ou não 
121
122
aprovado (considerar que nota igual ou maior que 6 o aluno é 
aprovado). Escrever também a média calculada. 
13. Escreva um algoritmo que leia o nome de 2 times e o 
número de gols marcados em uma partida. Escrever o nome do 
vencedor. Caso não haja vencedor deverá ser impressa a palavra 
EMPATE. 
14. Em um supermercado as maçãs custam R$ 1,30 cada se 
forem compradas menos de uma dúzia, e R$ 1,00 se forem 
compradas pelo menos 12. Escreva um algoritmo que leia o 
número de maçãs compradas, calcule e escreva o custo total da 
compra. 
15. Escreva um algoritmo que determine o grau de obesida-
de de uma pessoa, sendo fornecido seu peso e sua altura. O grau 
de obesidade é determinado pelo índice da massa corpórea 
(Massa = Peso (em kg) / Altura (em cm)) através da tabela abaixo:
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Índice de Massa 
Corpórea 
Grau de 
Obesidade 
< 0,52 Normal 
Entre 0,52 e 0,68 
 
Obeso
 Maior que 0,68 Obeso Mórbido
16. Faça um algoritmo para calcular a conta final de um 
hóspede de um hotel, considerando que:
a) serão lidos: o nome do hóspede, o tipo do apartamento 
utilizado (A, B, C ou D), o número de diárias utilizadas 
pelo hóspede e o valor do consumo interno do hóspede;
b) o valor da diária é determinado pela seguinte tabela:
Tipo de 
Apartamento 
Valor da Diária 
(R$) 
A 150,00 
B 100,00 
C 75,00 
D 50,00
123
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
c) o valor total das diárias é calculado pela multiplicação do 
número de diárias utilizadas pelo valor da diária do 
apartamento;
d) o subtotal é calculado pela soma do valor total das 
diárias e o valor do consumo interno;
e) o valor da taxa de serviço equivale a 10% do subtotal;
f) o total geral resulta da soma do subtotal com a taxa de 
serviço. 
g) escreva a conta final contendo: o nome do hóspede, o 
tipo do apartamento, o número de diárias utilizadas, o 
valor unitário da diária, o valor total das diárias, o valor 
do consumo interno, o subtotal, o valor da taxa de 
serviço e o total geral.
17. Construa um algoritmo que receba o código de um 
produto e o classifique de acordo com a tabela abaixo:
Código Classificação 
1 Alimento Não-Perecível2 a 4
 
Alimento Perecível
 5 e 6
 
Vestuário
 7
 
Higiene Pessoal
 8 a 15 Limpeza e Utilidades Domésticas
Outros Códigos Inválido
18. Calcular a média final para um aluno dadas as notas de 
3 provas e produzir uma saída com a média e a situação do aluno 
de acordo com o seguinte critério:
média >= 7, aprovado; 5 < média < 7, recuperação; 
média < 5, reprovado.
19. Crie um algoritmo que leia a velocidade máxima permi-
tida em uma avenida e a velocidade com que o motorista estava 
dirigindo nela e calcule a multa que uma pessoa vai receber, 
sabendo que são pagos: 
a) 50 reais se o motorista ultrapassar em até 10km/h a 
velocidade permitida.
(ex.: velocidade máxima: 50km/h; motorista a 60km/h 
ou a 56km/h); 
b) 100 reais, se o motorista ultrapassar de 11 a 30 km/h a 
velocidade permitida. 
c) 200 reais, se estiver acima de 31km/h da velocidade 
permitida.
20. O cardápio de uma lanchonete é o seguinte: 
124
Especificação Código Preço
Cachorro quente 100 1,20
Bauru simples
 
101
 
1,30
Bauru com ovo
 
102
 
1,50
Hambúrger
 
103
 
1,20
Cheeseburguer
 
104
 
1,30
Refrigerante 105 1,00
21. Escreva um algoritmo que leia o código do item pedido, 
a quantidade e calcule o valor a ser pago por aquele lanche. 
Considere que a cada execução somente será calculado um item.
22. Ler uma hora do dia (0-23) e escrever a saudação corre-
ta: bom dia(0-12); boa tarde (13-18) ou boa noite(19-23)
23. lê 2 valores a e b e os escreva com a mensagem: 
“São múltiplos” ou “Não são múltiplos”.; 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
125
24. leia um nº inteiro e mostre uma mensagem indicando se 
este número é par ou ímpar, e se é positivo ou negativo. 
25. Conceito de um aluno A-B-C-D-E.
26. Crie um algoritmo que informe se um dado ano é ou não 
bissexto. Obs: um ano é bissexto se ele for divisível por 400 ou se 
ele for divisível por 4 e não por 100.
27. Dada uma abreviação (SEG-TER-QUA-QUI-SEX-SAB-
DOM), escrever por extenso ; ler n letras e informar o total de 
ocorrências de cada uma das letras do alfabeto (a..z).
28. Escolha: ler um código de letra para o estado civil de 
uma pessoa (S/C/D/V) e escrever o seu equivalente por extenso.
29. Escrever o número de dias de um determinado mês 
(lido); ler um valor numérico e um código (H:horas/M: minutos/ 
S:segundos). Escrever o valor lido em segundos.
30. Um vendedor necessita de um algoritmo que calcule o 
preço total devido por um cliente. O algoritmo deve receber o 
código de um produto e a quantidade comprada e calcular o 
preço total, usando a tabela abaixo: 
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
Código do Produto Preço unitário
1001 5,32
 
1324
 
6,45
 
6548
 
2,37
 
0987 5,32 
7623 6,45 
Estruturas de Repetição
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
31. Faça um algoritmo que mostre todos os números intei-
ros pares de 2 a 100.
32. Faça um algoritmo para gerar e exibir os números 
inteiros de 20 até 10, decrescendo de 1 em 1.
33. ler 3 valores e escrever em ordem crescente.
34. Faça um algoritmo que leia uma lista de números intei-
ros positivos terminada pelo número 0 (zero). Ao final, o algorit-
mo deve mostrar a média aritmética de todos os números lidos 
(excluindo o zero).
35. Escrever n (lido) asteriscos na tela.
36. Ler 20 números e escrever quantos dos valores lidos são 
múltiplos de 3.
37. Ler x e y e calcular x * y utilizando somas sucessivas.
38. Ler x e y e calcular x^y utilizando multiplicações 
sucessivas.
39. Função do 2o grau. Ler a, b, c e calcular x1, x2 verificar 
se o delta é válido.
40. Ler a carga horária de uma disciplina e a freqüência de 126
127
40 alunos. Informar para cada um se está aprovado ou não (+ de 
75% de presença).
41. Calcular a média salarial de 1000 funcionários de uma 
empresa.
42. Ler n vezes o total de quilos de peixe vendidos a um 
frigorífico e o seu preço por quilo. Calcular o total a receber.
43. Média de vários (flag = 0) números usar interrompa; ler 
1000 salários dos funcionários de uma empresa e informar quan-
tos são maiores que R$5.000,00.
44. Ler o mês de aniversário dos alunos de uma turma e 
informar o total de alunos que fazem aniversário no mês de 
Agosto.
45. Calcular a média das temperaturas de uma região nos 
últimos 10 dias.
46. No exemplo anterior, não aceitar valores de temperatu-
ras abaixo de -100 ou acima de 60. Calcular também quantos dias 
a temperatura ficou acima da média.
47. Para N embarcações, ler a lotação de passageiros e o 
total de passageiros embarcados, informando se a embarcação 
pode seguir viagem (total de passageiros dentro dos limites de 
lotação).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
128
48. Contar e escrever o total de ocorrências de números 
negativos entre 10 números lidos.
49. Faça um algoritmo que leia um valor para M. Se este 
valor for positivo, calcule e mostre o seu fatorial, sabendo-se 
que:
N ! = 1 x 2 x 3 x ... x N-1 x N
0 ! = 1
49. Num frigorífico existem 90 bois. Cada boi traz preso em 
seu pescoço um cartão contendo seu número de identificação e 
seupeso. Faça um algoritmo que escreva o número e o peso do 
boi mais gordo e do boi mais magro (supondo que não haja empa-
tes).
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
129
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
130
Lógica de Programação I
Tecnologia em Análise e
Desenvolvimento de Sistemas
	Página 1
	Página 2
	Página 3
	Página 4
	Página 5
	Página 6
	Página 7
	Página 8
	Página 9
	Página 10
	Página 11
	Página 12
	Página 13
	Página 14
	Página 15
	Página 16
	Página 17
	Página 18
	Página 19
	Página 20
	Página 21
	Página 22
	Página 23
	Página 24
	Página 25
	Página 26
	Página 27
	Página 28
	Página 29
	Página 30
	Página 31
	Página 32
	Página 33
	Página 34
	Página 35
	Página 36
	Página 37
	Página 38
	Página 39
	Página 40
	Página 41
	Página 42
	Página 43
	Página 44
	Página 45
	Página 46
	Página 47
	Página 48
	Página 49
	Página 50
	Página 51
	Página 52
	Página 53
	Página 54
	Página 55
	Página 56
	Página 57
	Página 58
	Página 59
	Página 60
	Página 61
	Página 62
	Página 63
	Página 64
	Página 65
	Página 66
	Página 67
	Página 68
	Página 69
	Página 70
	Página 71
	Página 72
	Página 73
	Página 74
	Página 75
	Página 76
	Página 77
	Página 78
	Página 79
	Página 80
	Página 81
	Página 82
	Página 83
	Página 84
	Página 85
	Página 86
	Página 87
	Página 88
	Página 89
	Página 90
	Página 91
	Página 92
	Página 93
	Página 94
	Página 95
	Página 96
	Página 97
	Página 98
	Página 99
	Página 100
	Página 101
	Página 102
	Página 103
	Página 104
	Página 105
	Página 106
	Página 107
	Página 108
	Página 109
	Página 110
	Página 111
	Página 112
	Página 113
	Página 114
	Página 115
	Página 116
	Página 117
	Página 118
	Página 119
	Página 120
	Página 121
	Página 122
	Página 123
	Página 124
	Página 125
	Página 126
	Página 127
	Página 128
	Página 129
	Página 130

Mais conteúdos dessa disciplina