Logo Passei Direto
Buscar

Algorítimos e Programação I

User badge image

Enviado por Luís Felipe em

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ALGORITIMOS E PROGRAMAÇÃO I
Algoritmos e programação I.indd 1Algoritmos e programação I.indd 1 7/8/2013 16:00:327/8/2013 16:00:32
Process BlackProcess Black
Obra organizada pela Universidade Luterana do Brasil. 
Informamos que é de inteira responsabilidade dos autores a 
emissão de conceitos.
Nenhuma parte desta publicação poderá ser reproduzida por 
qualquer meio ou forma sem a prévia autorização da Editora 
da ULBRA.
A violação dos direitos autorais é crime estabelecido na Lei nº .610/98 
e punido pelo Artigo 184 do Código Penal.
Conselho Editorial EAD
Dóris Cristina Gedrat
Thomas Heimman
Mara Salazar Machado
Andréa de Azevedo Eick
Astomiro Romais
Setor de Processamento Técnico da Biblioteca Martinho Lutero - ULBRA/Canoas
Dados Internacionais de Catalogação na Publicação (CIP)
I74a Isaia Filho, Eduardo.
 Algoritimos e programação I / Eduardo Isaia Filho, Vanessa Lindemann. – 
 Canoas: Ed. ULBRA, 2013.
 144p.
 1. Algoritmo. 2. Programação. 3. Computação. 4. Informática. 
I. Lindemann, Vanessa. II. Título. 
 
 CDU: 681.3.421.2
Editoração: Roseli Menzen
Dados técnicos do livro
Fontes: Palatino Linotype, Franklin Gothic Demi Cond
Papel: oě set 75g (miolo) e supremo 240g (capa)
Medidas: 15x22cm
ISBN 978-85-7528-510-7
Algoritmos e programação I.indd 2Algoritmos e programação I.indd 2 7/8/2013 16:00:547/8/2013 16:00:54
Process BlackProcess Black
APRESENTAÇÃO 
Prezado(a) aluno(a)
Seja bem-vindo(a) ao estudo da disciplina de Algoritmos e Programação I!
Esta disciplina introduz o aluno no universo da lógica de programação, de forma 
que no final do semestre você estará capacitado a construir algoritmos. Para isso, 
vamos estudar conceitos básicos como tipos de dados, variáveis, constantes, 
operadores e expressões, formas de representação de algoritmos e, por fim, 
estruturas de controle sequencial, de seleção e de repetição. A disciplina também 
prevê uma introdução à linguagem de programação C, possibilitando que você 
valide os algoritmos construídos durante o semestre. 
Um algoritmo pode ser definido como uma sequência de passos que visam atingir 
um objetivo. Algoritmos são comuns no nosso cotidiano como, por exemplo, uma 
receita de bolo. Nela temos uma lista de ingredientes e uma sequência de passos que 
devem ser seguidos para atingirmos o objetivo final: o bolo. Quando construímos 
um algoritmo, devemos especificar ações claras e precisas, que a partir de um estado 
inicial, após um período de tempo finito, produzem um estado final previsível e bem 
definido. Isso significa que um algoritmo define um padrão de comportamento a 
ser seguido visando resolver um problema, garantindo que sempre que executado, 
sob as mesmas condições, produza o mesmo resultado. 
O principal objetivo do estudo da lógica de programação é a construção de 
algoritmos. Um algoritmo representa o raciocínio envolvido na lógica de 
programação e, dessa forma, permite-nos abstrair detalhes computacionais 
atrelados às linguagens de programação que podem ser acrescentados mais 
tarde. Assim, podemos focar nossa atenção naquilo que é importante: a lógica 
da construção de algoritmos. Vale lembrar que: uma vez concebida uma solução 
algorítmica para um problema, esta pode ser traduzida para qualquer linguagem 
de programação (processo denominado codificação). 
O livro texto desta disciplina está organizado em dez capítulos, subdivididos 
em seções, para facilitar sua leitura e compreensão e favorecer a realização das 
atividades propostas ao final de cada capítulo. 
Algoritmos e programação I.indd 3Algoritmos e programação I.indd 3 7/8/2013 16:00:557/8/2013 16:00:55
Process BlackProcess Black
4
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Só é possível aprender a construir algoritmos, construindo algoritmos! Portanto, 
resolver os exercícios propostos no final de cada capítulo é fundamental para 
desenvolver o raciocínio lógico e atingir o objetivo desta disciplina. A disciplina 
possui conteúdos cumulativos, ou seja, no final do semestre ainda estaremos 
utilizando conceitos estudados nas primeiras semanas de aula. Sendo assim, é 
importante organizar o estudo, resolver os problemas propostos periodicamente 
e não deixar as dúvidas para depois.
As referências bibliográficas sugerem obras de autores que fundamentam os 
estudos realizados e oferecem a você possibilidades de aprofundamento com 
leituras complementares.
Um bom trabalho!
 
 Professora Vanessa Lindemann
Algoritmos e programação I.indd 4Algoritmos e programação I.indd 4 7/8/2013 16:00:557/8/2013 16:00:55
Process BlackProcess Black
SOBRE O AUTOR
Eduardo Isaia Filho
Mestre, Coordenador dos Cursos de Computação da ULBRA unidade Canoas. 
Professor titular da disciplina de Algoritmos e Programação I presencial.
Vanessa Lindemann
Mestre em Ciência da Computação - UFRGS - 2002; Doutora em Informática 
na Educação - UFRGS - 2008. Professora dos cursos de Computação da ULBRA 
Canoas. 
Algoritmos e programação I.indd 5Algoritmos e programação I.indd 5 7/8/2013 16:00:557/8/2013 16:00:55
Process BlackProcess Black
6
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 6Algoritmos e programação I.indd 6 7/8/2013 16:00:557/8/2013 16:00:55
Process BlackProcess Black
SUMÁRIO
1 INTRODUÇÃO ............................................................................................................9
 1.1 Conceito de algoritmo ..........................................................................................9
 1.2 Construção do algoritmo ....................................................................................10
 1.3 Formas de representação de algoritmos..............................................................11
 1.4 Estrutura básica de um algoritmo .......................................................................15
 Atividades .............................................................................................................17
2 CONCEITOS FUNDAMENTAIS ....................................................................................19
 2.1 Dados .............................................................................................................19
 2.2 Variáveis ..........................................................................................................20
 2.3 Constantes .......................................................................................................22
 2.4 Expressões .......................................................................................................22
 Atividades .............................................................................................................26
3 INSTRUÇÕES PRIMITIVAS ........................................................................................29
 3.1 Instrução primitiva de atribuição ......................................................................29
 3.2 Instrução primitiva de saída ..............................................................................32
 3.3 Instrução primitiva de entrada ...........................................................................34
 Atividades .............................................................................................................36
4 ESTRUTURA SEQUENCIAL ........................................................................................39
 4.1 Estrutura básica de um algoritmo sequencial ......................................................39
 4.2 Exemplo de um algoritmo com estrutura sequencial ............................................40
 4.3 Construção de algoritmos sequenciais ...............................................................42
4.4 Teste de mesa de algoritmos com estrutura sequencial .......................................46
 Atividades .............................................................................................................52
5 ESTRUTURA DE CONTROLE CONDICIONAL: SE ...........................................................53
 5.1 Estrutura condicional SE simples ........................................................................53
 5.2 Estrutura condicional SE composta ....................................................................55
 5.3 Estrutura condicional SE encadeada ..................................................................59
 5.4 Formatação da solução do algoritmo ..................................................................65
 Atividades .............................................................................................................66
Algoritmos e programação I.indd 7Algoritmos e programação I.indd 7 7/8/2013 16:00:557/8/2013 16:00:55
Process BlackProcess Black
8
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 6 ESTRUTURA DE CONTROLE CONDICIONAL: ESCOLHA .................................................73
 Atividades .............................................................................................................78
7 ESTRUTURA DE CONTROLE DE REPETIÇÃO: ENQUANTO ..............................................81
 Atividades .............................................................................................................94
8 ESTRUTURA DE CONTROLE DE REPETIÇÃO: REPITA ....................................................99
 Atividades ...........................................................................................................106
9 ESTRUTURA DE CONTROLE DE REPETIÇÃO: PARA .....................................................111
 Atividades ........................................................................................................... 117
10 INTRODUÇÃO À LINGUAGEM C ...............................................................................121
 10.1 Identifi cadores ..............................................................................................122
 10.2 Tipos de dados ..............................................................................................123
 10.3 Modeladores .................................................................................................123
 10.4 Declaração, inicialização e escopo de variáveis ...............................................124
 10.5 Defi nição de constantes ................................................................................124
 10.6 Códigos de formato .......................................................................................125
 10.7 Caracteres especiais ....................................................................................127
 10.8 Comando de atribuição .................................................................................127
 10.9 Operadores e funções ....................................................................................128
 10.10 Comentários................................................................................................130
 10.11 Funções de entrada e saída ..........................................................................130
 10.12 Estruturas de controle condicional ...............................................................131
 10.13 Estruturas de controle de repetição .............................................................133
 Atividades ...........................................................................................................137
Algoritmos e programação I.indd 8Algoritmos e programação I.indd 8 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
1 INTRODUÇÃO
 
Eduardo Isaia Filho
Um programa de computador é resultado da atividade intelectual de um 
programador. Para isso, são necessários alguns conhecimentos prévios em 
abstração, modelagem de problemas e lógica de programação. Todo programa 
de computador começa a partir de um algoritmo, ou seja, através da organização 
lógica das instruções que resolvem o problema. Neste capítulo, serão apresentados 
os conceitos introdutórios para a construção de algoritmos, suas formas de 
representação, seus métodos de construção e sua estrutura básica. Por fim, são 
propostos alguns exercícios de fixação. 
1.1 Conceito de algoritmo
Um algoritmo é uma sequência de passos finitos que visam solucionar um 
determinado problema. Estamos acostumados a resolver algoritmos todos os 
dias, mas os fazemos de forma tão automática que nem nos damos conta. Por 
exemplo: trocar uma lâmpada, fazer um bolo, preparar um café passado, escovar 
os dentes, trocar um pneu, entre outros. Todas as atividades do nosso dia a dia que 
possuem uma sequência de passos para serem resolvidas podem ser consideradas 
um algoritmo. 
Se utilizarmos o exemplo do preparo de um café passado, teremos os seguintes 
passos:
1° passo: reservar os utensílios fi ltro de café, chaleira e recipiente para colocar o 
café passado;
2° passo: reservar o pó de café e a água;
3° passo: aquecer a água;
Algoritmos e programação I.indd 9Algoritmos e programação I.indd 9 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
10
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 4° passo: colocar o pó de café no fi ltro;
5° passo: despejar a água aquecida no fi ltro.
Se você seguir estes passos, ao final, você provavelmente terá um café passado. 
O que pode ser observado é que alguns destes passos podem ser alterados em 
sua ordem. Por exemplo, se reservarmos os ingredientes antes dos utensílios, não 
teremos alteração no produto final. Porém, se colocássemos a água no filtro com 
café antes de aquecê-la, o resultado seria indesejado. 
Um algoritmo computacional pode ser definido como uma sequência lógica 
de instruções ou comandos, que devem ser seguidas para se obter a solução de 
um problema. Da mesma forma que um algoritmo do dia a dia, deve seguir 
uma sequência de passos lógicos, que devem ser ordenados de forma clara para 
solucionar o problema. 
1.2 Construção do algoritmo
Para construir um algoritmo, temos que saber claramente qual o problema que 
desejamos solucionar, ou seja, qual o objetivo do algoritmo. Para isso, precisamos 
analisar o problema identificando três elementos básicos: entrada, processamento 
e saída. 
A entrada são os elementos necessários para dar início à solução do problema, o 
processamento é a manipulação dos elementos de entrada para obtenção da saída 
e a saída é o resultado esperado. Se considerarmos o exemplo do café passado, 
apresentado anteriormente, podemos identificar:
• entrada: fi ltro de café, chaleira, recipiente para colocar o café passado, pó de 
café e água;
• processamento: aquecer a água, colocar o pó no fi ltro e despejar a água no 
fi ltro;
• saída: o café passado.
 Se considerarmos os algoritmos computacionais, podemos descrever estes 
elementos em:
• entrada de dados: são os dados que o algoritmo deverá receber;
• processamento de dados: são as fórmulas e a disposição lógica em que os dados 
de entrada serão organizados para obter-se a solução do problema;
• saída de dados: é a apresentação do objetivo, ou seja, o resultado esperado.
Algoritmos e programação I.indd 10Algoritmos e programação I.indd 10 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
11
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aPor exemplo, se desejamos fazer um algoritmo para fazer a soma de dois números 
quaisquer, podemos neste caso identificar:
• entrada de dados: perguntar ao usuário dois números quaisquer;
• processamento de dados: calcular a soma dos números informados;
• saída de dados: apresentar
o resultado da soma.
Sempre que formos construir um algoritmo, devemos nos concentrar nestes três 
elementos, eles sempre estarão envolvidos. Porém, nem sempre estarão nesta 
ordem, podendo variar de algoritmo para algoritmo. 
1.3 Formas de representação de algoritmos
Existem diversas formas de representarmos os algoritmos. Dentre elas, citamos 
algumas abaixo. 
• Linguagem natural: utiliza uma descrição narrativa para especifi car os passos 
a serem realizados para executar a tarefa. Por não possuir uma estrutura bem 
defi nida, pode dar margem para más interpretações e ambiguidades.
• Português estruturado: utiliza uma linguagem estruturada e se assemelha a um 
programa escrito em linguagem de programação. Também é denominado de 
pseudocódigo e é bastante utilizado como passo inicial antes de descrever um 
programa em uma linguagem de programação. Nesta disciplina, o português 
estruturado será a forma utilizada para representar os algoritmos no decorrer 
dos capítulos.
• Fluxograma: é uma forma universal de representação. Utiliza-se de fi guras 
geométricas para ilustrar os passos a serem seguidos para resolução de um 
problema.
• Diagrama de Chapin: é uma variação do fl uxograma permitindo ter-se uma 
visão hierárquica e estruturada da lógica do algoritmo. Esta representação é 
pouco utilizada nos dias de hoje.
1.3.1 Português estruturado
O português estruturado é um tipo de representação de algoritmo que utiliza 
uma linguagem flexível, intermediária entre a linguagem natural e linguagem de 
programação. Normalmente, é utilizado para organizar o raciocínio lógico antes 
de implementar o mesmo em uma linguagem de programação. Todo algoritmo 
representado em português estruturado deverá ter sua sintaxe pré-definida. O 
exemplo 1.1 propõe um problema que será resolvido utilizando um algoritmo em 
português estruturado. 
Algoritmos e programação I.indd 11Algoritmos e programação I.indd 11 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
12
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Exemplo 1.1. Faça um algoritmo que calcule e escreva a média final de um aluno 
considerando duas notas; emita a mensagem “Aluno aprovado” ou “Aluno 
reprovado”. Observação: um aluno é considerado aprovado se obtiver nota final 
maior ou igual a 6.
algoritmo exemplo_11
variáveis
 nota1, nota2, media: real
início
 escrever (“Informe a 1ª nota do aluno = “)
 ler (nota1)
 escrever (“Informe a 2ª nota do aluno = “)
 ler (nota2)
 media m (nota1 + nota2) / 2 
 se (media >= 6) então 
 escrever (“Média final = “, media, “Aluno aprovado”)
 senão 
 escrever (“Média final = “,media, “Aluno reprovado”)
fim
1.3.2 Fluxograma
O fluxograma, também chamado de diagrama de blocos, é uma representação de 
algoritmo que utiliza símbolos geométricos para representar as ações (comandos 
ou instruções) a serem seguidas. Assim como português estruturado, é utilizado 
para organizar o raciocínio lógico do problema antes de implementá-lo em uma 
linguagem de programação. Os símbolos utilizados para representar estas ações 
são apresentados na Tabela 1.1.
Algoritmos e programação I.indd 12Algoritmos e programação I.indd 12 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
13
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aTabela 1.1 – Símbolos geométricos
Símbolo Nome Descrição
Terminal Indica o início e o fim do fluxo do algoritmo.
Seta de fluxo de dados Indica o sentido do fluxo de dados e faz a conexão dos blocos existentes. 
Entrada de dados Indica que serão recebidas informações através do teclado.
Processamento
Indica a realização de cálculos, 
atribuições ou qualquer manipulação de 
dados. 
Saída de dados Indica que as informações serão exibidas na tela. 
Desvio condicional Indica a tomada de decisão, dividindo o fluxo do algoritmo em dois caminhos. 
Conector Serve para conectar dois fluxos.
Cabe destacar que é possível encontrar formas geométricas diferentes para 
representar determinados comandos e/ou instruções. Entretanto, isso é apenas 
uma convenção ou hábito de cada autor. O algoritmo do exemplo 1.1 representado 
através de um fluxograma pode ser visto a seguir. 
Algoritmos e programação I.indd 13Algoritmos e programação I.indd 13 7/8/2013 16:00:567/8/2013 16:00:56
Process BlackProcess Black
14
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
1.3.3 Diagrama de Chapin
Os diagramas de Chapin foram criados para substituir os diagramas de blocos 
(fluxograma) por um diagrama de quadros. A vantagem de se utilizar este tipo 
de diagrama é a clareza quanto ao fluxo de execução e sua desvantagem é que é 
Algoritmos e programação I.indd 14Algoritmos e programação I.indd 14 7/8/2013 16:00:577/8/2013 16:00:57
Process BlackProcess Black
15
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
amais trabalhoso fazer desenhos do que escrever texto. O algoritimo do exemplo 1.1 
representado através de um diagrama de Chapin pode ser visto a seguir. 
início
ler nota1, nota2
media Å (nota1 + nota2) / 2 
 S N
resultado Å “Aprovado” resultado Å “Reprovado”
 escrever media, resultado
fim
1.3.4 Formalização de um algoritmo
Construir um algoritmo consiste em detalhar os dados que serão processados 
e as instruções que vão operar sobre esses dados. Esta construção, como visto 
anteriormente, pode ser feita por diferentes formas de representações, mas é 
importante formalizarmos a descrição dos algoritmos segundo uma convenção 
pré-definida, para que todas as pessoas envolvidas no processo possam entendê-
la. Para isso, é necessário definir o conjunto de regras que regulam a escrita do 
algoritmo (sintaxe) e o conjunto de regras que definem a interpretação desta 
escrita (semântica). Nos capítulos seguintes, serão definidas a sintaxe e a semântica 
utilizadas nesta disciplina.
1.4 Estrutura básica de um algoritmo
Observe a receita de bolo de chocolate a seguir.
Bolo de chocolate
Ingredientes:
• 3 ovos
• 1 e 1/2 xícara de açúcar
• 2 xícaras farinha de trigo
• 1 xícara de chocolate em pó ou achocolatado
• 1/2 xícara de óleo
• 1 colher de fermento em pó
media >= 6
Algoritmos e programação I.indd 15Algoritmos e programação I.indd 15 7/8/2013 16:00:587/8/2013 16:00:58
Process BlackProcess Black
16
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a • 1 pitada de sal
• 1 xícara de água quente
 Modo de preparo:
1. Bata os ovos com o açúcar, o óleo, o achocolatado e a farinha, depois adicione a água 
quente e por último o fermento em pó. 
2. Asse em forno com temperatura média por 40 minutos, desenforme quente.
Se observarmos com atenção, veremos que esta receita possui uma estrutura 
básica: nome da receita, ingredientes e modo de preparo. Podemos verificar que 
esta estrutura facilita a localização da receita, permite verificar se possuímos todos 
os ingredientes, antes de começar o preparo.
Um algoritmo, representado em português estruturado, possui uma estrutura 
bastante semelhante a uma receita, organizada em três partes: identificação do 
algoritmo, declaração de constantes e/ou variáveis e o corpo do algoritmo. Observe 
o exemplo 1.1, reproduzido novamente a seguir.
Algoritmo exemplo_11 Identificador do algoritmo
variáveis
 nota1, nota2, media: real
Declaração de variáveis 
início
 escrever ("Informe a 1ª nota do aluno = ")
 ler (nota1)
 escrever ("Informe a 2ª nota do aluno = ")
 ler (nota2)
 media m (nota1 + nota2) / 2 
 se (media >= 6) então 
 escrever ("Média final = ", media, "Aluno aprovado")
 senão 
 escrever ("Média
final = ",media, "Aluno reprovado")
fim
Corpo do algoritmo
Esta estrutura facilita a localização do algoritmo, permitindo saber quais variáveis 
e/ou constantes serão usadas e como elas serão manipuladas para obter o resultado 
esperado.
Glossário
• Programa: é uma sequência de instruções que podem ser executadas por 
um computador. É um conjunto de ordens dadas a um computador para a 
Algoritmos e programação I.indd 16Algoritmos e programação I.indd 16 7/8/2013 16:00:587/8/2013 16:00:58
Process BlackProcess Black
17
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
arealização de um determinado processo. É a implementação de um algoritmo 
em uma determinada linguagem de programação.
• Linguagens de programação: são ferramentas (soĞ wares) que permitem o 
desenvolvimento de programas. Possuem um poder de criação ilimitado, 
desde jogos, editores de texto, sistemas empresariais até sistemas operacionais. 
Existem várias linguagens de programação, cada uma com suas características 
próprias. Exemplos: Pascal, C, C++, C#, Java e outras. 
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Atividades
1. Vamos construir alguns algoritmos? Descreva os passos necessários para 
solucionar os seguintes desafi os. 
a. Descreva como você troca uma lâmpada.
b. Um camponês precisa atravessar um rio utilizando um barco com 
capacidade para carregar ele mesmo e mais uma de suas três cargas, 
que são: um lobo, uma ovelha e um maço de pasto. Quais os passos 
que o camponês deve seguir para atravessar o rio sem perder a sua 
carga? Sabendo que o lobo come a ovelha e a ovelha come o pasto, ou 
seja, em momento algum o lobo pode fi car sozinho com a ovelha e a 
ovelha fi car sozinha com o pasto. DICA: procure no Google (www.
google.com.br) as palavras “jogo camponês ovelha pasto” ou “jogo 
pastor ovelha feno” e teste sua solução de maneira online.
Algoritmos e programação I.indd 17Algoritmos e programação I.indd 17 7/8/2013 16:00:587/8/2013 16:00:58
Process BlackProcess Black
18
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
c. Três jesuítas e três canibais precisam atravessar um rio, para isso 
dispõem de um barco com capacidade para duas pessoas. Por medida 
de segurança, em nenhuma das margens do rio, o número de canibais 
pode ser maior que o número de jesuítas. Qual a solução para efetuar 
a travessia de forma segura? DICA: procure no Google (www.google.
com.br) as palavras “jogo jesuítas canibais” e teste sua solução de 
maneira online.
d. A Torre de Hanói consiste em uma base com três pinos, onde em 
um deles, estão dispostos três discos uns sobre os outros, em ordem 
crescente de diâmetro, de cima para baixo. Descreva como passar todos 
os discos de um pino para outro qualquer, usando um dos pinos como 
auxiliar, de maneira que um disco maior nunca fi que em cima de outro 
menor em nenhuma situação. DICA: procure no Google (www.google.
com.br) as palavras “jogo torre de hanói” e teste sua solução de maneira 
online.
e. Pedro possui dois baldes: um com capacidade para comportar 5 litros, 
e outro que comporta 3 litros. Ele não possui outros recipientes e os 
baldes não possuem marcações de volume. Como Pedro, utilizando 
os dois baldes, pode retirar exatamente sete litros de água de uma 
fonte?1
Resposta:
 Encha o balde de 5 litros e despeje a água no balde de 3 litros, enchendo-o. 
Agora, restaram 2 litros no balde de 5 litros. Jogue fora a água do balde de 3 
litros e coloque nele os 2 litros que estavam no balde de 5 litros. A seguir, encha 
o balde de 5 litros novamente e pronto! No balde de 3 litros estão, agora, 2 
litros de água, enquanto o balde de 5 litros está cheio, totalizando 7 litros!
Algoritmos e programação I.indd 18Algoritmos e programação I.indd 18 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
2 CONCEITOS FUNDAMENTAIS
Eduardo Isaia Filho
Neste capítulo, serão apresentados os conceitos de dados, variáveis e constantes; 
os tipos básicos de dados; os operadores aritméticos, relacionais e lógicos. Por fim, 
são propostos alguns exercícios de fixação. 
2.1 Dados
O objetivo da maioria dos algoritmos é manipular dados, transformando os dados 
de entrada em dados de saída (resultados). Um dado é um atributo que descreve 
entidades ou características, por exemplo: o nome de uma pessoa, sua idade, seu 
peso ou o número de páginas de um livro. 
Quando vamos desenvolver um algoritmo, precisamos previamente identificar o 
tipo do dado que está sendo manipulado. Isso é necessário, pois, quando formos 
converter o algoritmo para uma linguagem de programação, os dados serão 
armazenados na memória principal do computador e um espaço de memória 
específico (tamanho) deve ser reservado a cada tipo de dado. Os principais tipos 
de dados são: inteiro, real, caractere, cadeia e lógico.
2.1.1 Tipos básicos de dados
Os tipos de dados podem ser classificados de acordo com o tipo de informação 
contida neles: dados numéricos (inteiros e reais), dados literais (caractere e cadeia) 
e dados lógicos. 
• Inteiro: os dados do tipo inteiro pertencem ao conjunto de números inteiros 
relativos, ou seja, são aqueles que não possuem componentes decimais ou 
fracionários, podendo ser positivos, nulos ou negativos. Exemplos: quantidade 
Algoritmos e programação I.indd 19Algoritmos e programação I.indd 19 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
20
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a de alunos em uma turma (alunos = 24); idade de uma pessoa (anos = 25); o ano 
(ano = 2013); outros.
• Real: os dados do tipo real pertencem ao conjunto dos números reais. Portanto, 
podem ter componentes decimais ou fracionários e ser positivos, nulos ou 
negativos. Exemplos: o salário de uma pessoa (salário = 3.450,34); a temperatura 
(temperatura = 12); a altura de um prédio (altura = 120,50); outros.
• Caractere: os dados do tipo caractere são compostos por um único caractere 
alfanumérico (0..9, A..Z, a..z) ou caractere especial (#, $, %, *, ?, >, ...). Os dados 
do tipo caractere são delimitados por aspas. Exemplos: código de acesso a um 
sistema (código = “#”); resposta a uma pergunta (resposta = “S”); seleção entre 
alternativas (alternativa = “a”); o sexo de uma pessoa (sexo = “M”). 
• Cadeia: os dados do tipo cadeia são formados por um conjunto de caracteres 
alfanuméricos (0..9, A..Z, a..z) e/ou caracteres especiais (#, $, %, *, ?, >, ...). 
Os dados do tipo cadeia são delimitados por aspas. Exemplos: nome de um 
funcionário (nome = “Alberto Malazowski”); endereço de um cliente (rua = “Av. 
Julio de Castilhos, 990”); senha de acesso a um sistema (senha = “9125ax”); 
outros. 
• Lógico: um dado do tipo lógico só pode assumir dois estados: verdadeiro ou 
falso. Exemplos: resposta = verdadeiro (ou, simplesmente resposta = v); teste 
= falso (ou, simplesmente teste = f).
2.2 Variáveis 
Uma variável pode ser definida como um local, na memória principal, utilizado 
para armazenar o conteúdo de um determinado dado, podendo receber muitos 
valores diferentes durante a execução do algoritmo, mas em um dado instante ela 
só pode apresentar um
valor único.
O conceito de variável foi criado para permitir, que através do nome (identificador), 
os algoritmos possam armazenar, localizar e manipular as informações na 
memória dos computadores. São, portanto, formadas por três atributos: um nome 
(identificador), um tipo de dado, e um valor.
Toda variável possui um nome único que a diferencia das demais. A escolha do 
nome de uma variável cabe ao programador, porém algumas regras devem ser 
observadas. São elas:
• devem sempre começar com uma letra; 
• podendo ser seguida de letras e/ou números;
Algoritmos e programação I.indd 20Algoritmos e programação I.indd 20 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
21
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a• não é permitido espaços em branco, caso haja necessidade de separador o 
sublinhado baixo (underscore) pode ser utilizado, exemplo: nome_aluno;
• não é permitido utilizar símbolos, operadores, acentos e caracteres especiais, 
por exemplo: &, %, #, +, /, ?, @;
• não é permitido utilizar uma palavra reservada, ou seja, uma palavra que é 
um comando do algoritmo.
 Exemplos de nomes de variáveis:
• Salario : correto;
• 1ANO : errado, pois não começou com uma letra;
• ANO1 : correto;
• a casa : errado, pois contém o espaço em branco;
• SAL/HORA : errado, pois contém o caracter “/”;
• SAL_HORA : correto;
• _DESCONTO : errado, pois não começou com uma letra.
Uma consideração importante quanto ao nome das variáveis é que este deve ser 
um nome representativo, de forma que ao ler o nome da variável seja possível 
lembrar o que ela armazena.
2.2.1 Sintaxe da declaração de variáveis
Todas as variáveis utilizadas em um algoritmo devem ser declaradas antes de 
serem utilizadas, através da definição de um nome (identificador) e do tipo de 
dado que será armazenado nela. A seguir veja como é a sintaxe da declaração de 
uma variável: 
 variáveis
 <nome da variável ou lista de nomes> : <tipo de dado>
 
Exemplo
variáveis 
nome, endereco: cadeia
idade: inteiro
peso, altura: real 
Algoritmos e programação I.indd 21Algoritmos e programação I.indd 21 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
22
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 2.3 Constantes
Ao contrário das variáveis, o conteúdo armazenado em uma constante não é 
alterado durante a execução de um algoritmo. 
2.3.1 Sintaxe da declaração de constantes
As constantes também são definidas antes de serem utilizadas e seus nomes 
(identificadores) seguem as mesmas regras das variáveis. A seguir veja como é a 
sintaxe da declaração de uma constante.
 constantes
 <nome da constante> = <conteúdo>
Exemplo 
 constantes
 pi = 3.1416
2.4 Expressões
Operadores são elementos fundamentais que, quando relacionados com operandos, 
produzem uma expressão. Por exemplo, a expressão 3 + 2 relaciona dois operandos 
(os números 3 e 2) por meio do operador (+) que representa a operação de adição. 
Os operandos dividem-se em aritméticos, relacionais e lógicos. Esta divisão está 
diretamente relacionada com o tipo de expressão onde aparecem os operadores.
2.4.1 Expressões aritméticas
As expressões aritméticas são formadas por variáveis numéricas e operadores 
aritméticos, cujo resultado da avaliação é do tipo numérico (inteiro ou real). Os 
operadores aritméticos e sua ordem de prioridade são apresentados na Tabela 2.1.
Tabela 2.1 – Operadores aritméticos
Operador Operação Prioridade Exemplo
** Exponenciação 1 3 ** 2 = 9
// Radiciação 1 25 // 2 = 5
* Multiplicação 2 7 * 2 = 14
/ Divisão 2 20 / 4 = 5
div Quociente da divisão inteira 2 20 div 6 = 3 
mod Resto da divisão inteira 2 20 mod 6 = 2
+ Adição 3 3 + 8 = 11
- Subtração 3 30 – 12 = 18
Algoritmos e programação I.indd 22Algoritmos e programação I.indd 22 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
23
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aComo pode ser observado, nos algoritmos podemos utilizar três operadores 
relacionados à divisão, são eles: /, div e mod. Vamos entender qual a diferença de 
cada um deles, relembrando alguns conceitos:
 14 4
-12 3,5 m quociente
 20
- 20
 0 m resto da divisão
Observe que a divisão de 14 por 4 é a divisão tradicional, onde fracionamos o 
quociente até obtermos um resultado nulo ou uma dízima periódica. Ao utilizarmos 
os operadores div e mod, estamos fazendo a divisão inteira, ou seja, devemos 
encerrar o processo de divisão quando o quociente necessitar ser fracionado. Veja 
o exemplo da divisão inteira:
 14 4
 - 8 3 m quoiente inteiro (div)
 2 m resto da divisão inteira (mod)
Outros exemplos são apresentados na Tabela 2.2.
Tabela 2.2 – Exemplos de divisão, div e mod
10 / 2 = 5
10 div 2 = 5
10 mod 2 = 0
20 / 3 = 6,666...
20 div 3 = 6
20 mod 3 = 2
105 / 10 = 10,5
105 div 10 = 10
105 mod 10 = 5
32 / 6 = 5, 333...
32 div 6 = 5
32 mod 6 = 2
A prioridade entre os operadores define a ordem em que os mesmos devem ser 
executados dentro de uma mesma expressão. Quando há dois ou mais operadores 
de mesma prioridade em uma expressão, a execução se dá da esquerda para 
direita. Para alterar a ordem em que os operadores são executados, pode-se utilizar 
parênteses, por exemplo: 
(2 + 3) * 2 =
5 * 2 =
10
2 + 3 * 2 = 
2 + 6 = 
8 
Temos que ter um cuidado especial quando convertemos uma expressão matemática 
para utilizá-la em um algoritmo. Considere a expressão a seguir.
3 + 5
2
Algoritmos e programação I.indd 23Algoritmos e programação I.indd 23 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
24
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Podemos observar que o resultado desta expressão é 4, pois primeiro somamos 3 
e 5 e depois dividimos por 2. Quando convertemos a expressão para utilizarmos 
em um algoritmo, temos que ter cuidado com a prioridade dos operadores, um 
programador desatento poderia muito bem, converter a expressão matemática para 
3 + 5 / 2. Observe que agora o resultado é 5,5 diferente da expressão original, pois 
o operador prioritário é a divisão e não a soma, ou seja, primeiro iríamos dividir 
5 por 2, para somente depois somarmos a 3. Quando convertemos uma expressão 
matemática, para utilizarmos nos algoritmos, normalmente, teremos que adicionar 
parênteses para determinar a prioridade de execução. A conversão correta para 
expressão é (3 + 5) / 2.
2.4.2 Expressões lógicas
As expressões lógicas têm como resultado um valor lógico (verdadeiro/V ou 
falso/F). Elas podem ser formadas por operadores relacionais, operadores lógicos 
ou pela combinação de ambos.
2.4.2.1 Operadores relacionais
Estes operadores, listados na Tabela 2.3, são utilizados quando se deseja efetuar 
comparações entre objetos de mesma natureza (variáveis do mesmo tipo de dado). 
O resultado de uma comparação é sempre um valor lógico (verdadeiro ou falso). 
Tabela 2.3 – Operadores relacionais
Operador Comparação Exemplo
= Igual 3 = 2 o falso
< > Diferente 10 <> 20 o verdadeiro
< Menor 4 < 18 o verdadeiro
> Maior 10 > 20 o falso 
<= Menor ou igual 4 <= 7 o verdadeiro
>= Maior um igual 7 >= 7 o verdadeiro
2.4.2.2 Operadores lógicos
Os operadores lógicos ou booleanos também resultam em valores lógicos e, 
normalmente, são usados para combinar expressões relacionais. Os operadores 
lógicos e suas relações de precedência são mostrados na Tabela 2.4.
Algoritmos e programação I.indd 24Algoritmos e programação I.indd 24 7/8/2013 16:00:597/8/2013 16:00:59
Process BlackProcess Black
25
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aTabela 2.4 – Operadores lógicos
Operador Operação Prioridade Exemplo
NÃO Negação 1 não(2>7) o não(F) o V
E Conjunção 2 (2=2)
e (3<7) o (V) e (V) o V
OU Disjunção 3 (2<5) ou (9<20) o(F) ou (V) o V
Se considerarmos duas variáveis, representadas por variável1 e variável2, podemos 
descrever as três operações lógicas a seguir:
• variável1 E variável2: o operador E resulta em verdadeiro somente se ambas 
variáveis forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a 
operação E também será falsa.
• variável1 OU variável2: o operador OU resulta em verdadeiro se pelo menos 
uma das variáveis for verdadeira. Só resultam em valores falsos se ambas 
variáveis forem falsas. 
• NÃO variável1: o operador NÃO é unário, ou seja, só se aplica a uma variável. 
É avaliado verdadeiro se a variável for falsa; de modo contrário, o operador 
NÃO resultará em falso, se a variável for verdadeira.
A Tabela 2.5, chamada de tabela-verdade, exemplifica o uso dos operadores lógicos, 
considerando duas variáveis lógicas (A e B). Uma vez que uma variável lógica só 
pode assumir dois valores (verdadeiro ou falso), há exatamente quatro combinações 
possíveis entre A e B. As colunas contêm os resultados das operações lógicas sobre 
as combinações de A e B. 
Tabela 2.5 – Tabela-verdade dos operadores lógicos
A B Não A Não B A e B A ou B
V V F F V V
V F F V F V
F V V F F V
F F V V F F
Algoritmos e programação I.indd 25Algoritmos e programação I.indd 25 7/8/2013 16:01:007/8/2013 16:01:00
Process BlackProcess Black
26
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Atividades
1) Marque com um (X) somente os identifi cadores válidos.
a) ( ) nome b) ( ) endereço c) ( ) 3x4
d) ( ) soma e) ( ) salário_líquido f) ( ) a
g) ( ) nomedaempresa h) ( ) ah! i) ( ) salario total
 j) ( ) média k) ( ) x2 l) ( ) data
2) Observe os dados listados a seguir e identifi que o seu tipo, marcando com “I” 
os inteiros, “R” os reais e “C” as cadeias.
a) ( ) nome de uma pessoa b) ( ) o tamanho de uma mesa
c) ( ) preço de um produto d) ( ) o número de cadeiras de uma mesa
e) ( ) um dia do mês f) ( ) o código de um produto
3) Assinale com um (X) a resposta certa. Ao convertermos a expressão 3 yx � para 
utilizarmos em um algoritmo, como fi ca a expressão? 
a) ( ) x//3 + y//3; b) ( ) x + y //3; c) ( ) (x + y) // 3; d) ( ) 3 // x+y.
4) Qual o resultado da expressão 9 + 4 / 2 + 3?
a) 9,5; b) 2,6; c) 14; d) 9,8; e) 9.
Algoritmos e programação I.indd 26Algoritmos e programação I.indd 26 7/8/2013 16:01:007/8/2013 16:01:00
Process BlackProcess Black
27
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a5) Considere as expressões lógicas e assinale (V) quando o resultado for 
“Verdadeiro” e (F) quando o resultado for “Falso”.
 a) ( ) V e F ou V b) ( ) não (V e V) c) ( ) (V ou F ) e V d) ( ) não F e não F
Gabarito:
1. As respostas corretas são: a, d, f, g, k e l.
2. a) C; b) R; c) R; d) I; e) I; f) C
3. b
4. c
5. a) V; b) F; c) V; d) V
Algoritmos e programação I.indd 27Algoritmos e programação I.indd 27 7/8/2013 16:01:017/8/2013 16:01:01
Process BlackProcess Black
28
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 28Algoritmos e programação I.indd 28 7/8/2013 16:01:027/8/2013 16:01:02
Process BlackProcess Black
3 INSTRUÇÕES PRIMITIVAS
Vanessa Lindemann
Instruções primitivas são comandos básicos utilizados para efetuar a entrada e a 
saída de dados e sua movimentação na memória. Estes comandos, presentes na 
maioria absoluta dos algoritmos, garantem a comunicação do algoritmo com o 
mundo exterior. Neste capítulo, serão apresentadas as instruções primitivas de 
atribuição, de entrada de dados (comando LER) e de saída de dados (comando 
ESCREVER). 
3.1 Instrução primitiva de atribuição
A sintaxe do comando de atribuição, representado pelo símbolo Å, é apresentada 
a seguir e exemplificada nos Quadros 3.1 e 3.2.
<variável> Å <expressão>
<variável> Å <variável>
<variável> Å <constante>
Seu funcionamento consiste em avaliar a expressão (variável ou constante) que 
está à direita do comando e armazenar o valor resultante desta expressão (variável 
ou constante) na posição de memória correspondente à variável que aparece à 
esquerda do comando. Para isso, é necessário que o tipo de dado resultante da 
expressão (variável ou constante) avaliada e o tipo de dado da variável sejam 
compatíveis. No exemplo media Å 6.8 (lê-se “média recebe seis e oito”), o valor 
6,8 é armazenado na posição de memória reservada à variável media, que deverá 
ser do tipo real. Outros exemplos da instrução primitiva de atribuição podem ser 
observados no Quadro 3.1. 
Algoritmos e programação I.indd 29Algoritmos e programação I.indd 29 7/8/2013 16:01:027/8/2013 16:01:02
Process BlackProcess Black
30
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 3.1 î Exemplos da instrução primitiva de atribuição
Declaração de variáveis Exemplos de comandos de atribuição
x, y: lógico
codigo, qtde: inteiro
desconto, total: real
nome, telefone: cadeia
resposta1: caractere
resposta2: caractere
01 x Å verdadeiro
02 y Å x
03 codigo Å 2089 
04 qtde Å 3
05 total Å qtde * 5
06 desconto Å total * 0.1
07 nome Å "Ana Lu"
08 telefone Å "(99)3333-0123"
09 resposta1 Å "S" 
10 resposta2 Å resposta1 
As variáveis x e y foram declaradas do tipo lógico, então podem armazenar 
os valores lógicos verdadeiro ou falso. No exemplo 01, x recebe o valor lógico 
verdadeiro. No exemplo 02, y recebe o valor armazenado na variável x, ou seja, o 
valor lógico verdadeiro. 
As variáveis codigo e qtde, declaradas como inteiro, só podem armazenar valores 
do tipo inteiro, como ilustram os exemplos 03 e 04 do Quadro 3.1. No caso de uma 
variável do tipo real, esta poderá armazenar tanto valores reais (como ilustra o 
exemplo 06), quanto valores inteiros. Esta situação pode ser observada no exemplo 
05, onde a variável total que é do tipo real, recebe o resultado da expressão 
qtde*5 que, neste exemplo, resulta em 15.
Os últimos exemplos do Quadro 3.1 ilustram a atribuição de valores a variáveis 
declaradas como literais. É importante observar que quando as variáveis forem 
do tipo cadeia ou caractere, a expressão a ser atribuída à variável deve estar entre 
aspas, como nos exemplos 07, 08 e 09. No exemplo 10, a variável resposta2 recebe 
o valor armazenado na variável resposta1, ou seja, um S. 
Retomando a questão da compatibilidade de tipo, destaca-se que: (a) o resultado 
de uma expressão com operadores de divisão e/ou radiciação sempre deverá ser 
armazenado em uma variável do tipo real, como ilustram os exemplos 03, 04 e 05 
do Quadro 3.2; (b) os operadores mod e div só podem ser utilizados com operandos 
do tipo inteiro, conforme exemplos 06 e 07 do Quadro 3.2; (c) o resultado de uma 
expressão com operadores mod e/ou div deve ser armazenado em uma variável do 
tipo inteiro ƺ situações também observáveis nos exemplos 06 e 07 do Quadro 3.2. 
Algoritmos e programação I.indd 30Algoritmos e programação I.indd 30 7/8/2013 16:01:027/8/2013
16:01:02
Process BlackProcess Black
31
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 3.2 î Exemplos da instrução primitiva de atribuição
Declaração de variáveis Exemplos de comandos de atribuição
op1, op2: inteiro
r1, r2, r3: real
r4, r5: inteiro
01 op1 Å 10 
02 op2 Å 2
03 r1 Å op1 / op2 
04 r2 Å 18 / 4
05 r3 Å 25 // 2
06 r4 Å 8 mod 3
07 r5 Å op1 div 3 
Nos exemplos 01 e 02 do Quadro 3.2, as variáveis op1 e op2 recebem, 
respectivamente, 10 e 2. Em seguida, a variável r1 recebe o resultado da divisão de 
op1 por op2 que, neste caso, é 5. Como foi explicado anteriormente, independente 
do resultado da expressão ser inteiro ou não, a variável r1 foi declarada do tipo real 
e irá armazenar este resultado como real. O mesmo ocorre nos exemplos 04 e 05, em 
que as variáveis r2 e r3 armazenam, respectivamente, os valores 4,5 (resultado de 
uma divisão) e 5 (resultado de uma radiciação). O Quadro 3.3 ilustra os resultados 
dos exemplos 06 e 07, em que as variáveis r4 e r5 recebem, respectivamente, 2 
(resto da divisão) e 3 (quociente inteiro). 
Quadro 3.3 î Exemplo dos operadores mod e div
r4 Å 8 mod 3
 8 3 
 - 6 2
 2 ĸ resto da divisão
r5 Å op1 div 3
 10 3 
 - 9 3
 1 ĸ quociente inteiro
(a) Exemplo 06 - Quadro 3.2 (b) Exemplo 07 - Quadro 3.2
Por fim, vale lembrar que uma sequência de atribuições modifica o conteúdo da 
variável armazenada na memória, como ilustra o exemplo do Quadro 3.4. 
Quadro 3.4 î Exemplo de uma sequência de atribuições
Comandos de atribuição Memória
 01 x Å 10
 02 x Å x + 1
 03 x Å 20
x
10
11
20
Algoritmos e programação I.indd 31Algoritmos e programação I.indd 31 7/8/2013 16:01:027/8/2013 16:01:02
Process BlackProcess Black
32
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a No exemplo 01 do Quadro 3.4 a variável x é inicializada com o valor 10 e, 
consequentemente, a representação da variável x na memória armazenava 10; em 
seguida, é atribuído à variável x o valor resultante da expressão x + 1, que é 11, 
substituindo o valor anterior na memória; finalmente, no exemplo 03, a variável 
x recebe o valor 20, que substituiu o valor anterior na memória como ilustra o 
Quadro 3.4. 
O Quadro 3.5 apresenta um algoritmo que exemplifica o uso da instrução 
primitiva de atribuição. Este algoritmo tem por objetivo calcular a média final 
de um aluno, considerando duas notas. Para isso, foram realizadas as seguintes 
atribuições: a variável nota1 recebe 7, a variável nota2 recebe 9 e o resultado 
da expressão que calcula a média, (nota1+nota2)/2, é armazenado na 
variável media. 
Quadro 3.5 î Exemplo da aplicação do comando de atribuição
Exemplo 3.1 - Calcula a média de um aluno, considerando duas notas. 
01 algoritmo exemplo31
02 variáveis
03 nota1, nota2, media: real
04 início
05 nota1 Å 7
06 nota2 Å 9
07 media Å (nota1 + nota2) / 2 
08 fim
A solução do exemplo 3.1 apresenta duas limitações significativas: (a) a média do 
aluno é calculada e armazenada na memória, porém não é exibida para o usuário 
do programa; (b) se o programa for executado mais de uma vez, o resultado será 
sempre o mesmo, pois os valores armazenados nas variáveis nota1 e nota2 
permanecem inalterados. Estas limitações serão resolvidas com o uso das instruções 
primitivas de saída e de entrada, respectivamente, conforme descrevem as seções 
3.2 e 3.3. 
3.2 Instrução primitiva de saída
A instrução primitiva de saída de dados tem por objetivo prover a interação entre o 
programa e o usuário (ou outros dispositivos), emitindo mensagens e/ou exibindo 
valores armazenados em variáveis na memória do computador. 
A sintaxe do comando de saída de dados é apresentada a seguir e exemplificada 
no Quadro 3.6. Como pode ser observado, o argumento da instrução primitiva 
Algoritmos e programação I.indd 32Algoritmos e programação I.indd 32 7/8/2013 16:01:027/8/2013 16:01:02
Process BlackProcess Black
33
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
ade saída pode ser uma única variável, uma lista de variáveis, um literal ou uma 
mistura de ambos.
escrever(<variável>)
escrever(<lista de variáveis>) 
escrever(<literal>)
escrever(<literal>,<variável>)
Quadro 3.6 î Exemplos da sintaxe do comando de saída
Variáveis Exemplos de comandos de saída
media: real
nome: cadeia
01 escrever(media)
02 escrever("Digite o nome do aluno: ")
03 escrever("Média final = ",media)
04 escrever(nome," obteve média final = ",media) 
No exemplo 01 do Quadro 3.6, o comando de saída exibirá apenas o valor 
armazenado na variável media (considerando a variável media do exemplo 3.1, 
o valor exibido seria 8). No segundo exemplo, o comando de saída contém apenas 
um literal, que será reproduzido no dispositivo de saída. O exemplo 03 contém um 
literal (“Média final = “) e uma variável (media), separados por vírgula, resultando 
em Média final = 8. Supondo que a variável nome armazene Joana e a variável media 
armazene 8, a saída do exemplo 04 seria Joana obteve média final = 8. 
A aplicação do comando de saída pode ser observada no exemplo 3.2, que reescreve 
a solução do exemplo 3.1 resolvendo uma das limitações citadas anteriormente. 
Nesta solução, descrita no Quadro 3.7, a média do aluno é calculada e armazenada 
na memória (linha 07) e, por fim, exibida ao usuário (linha 08). 
Quadro 3.7 î Exemplo da aplicação de comandos de atribuição e saída de dados
Exemplo 3.2 - Calcula a média de um aluno, considerando duas notas. 
01 algoritmo exemplo32
02 variáveis
03 nota1, nota2, media: real
04 início
05 nota1 Å 7
06 nota2 Å 9
07 media Å (nota1 + nota2) / 2
08 escrever ("Média do aluno = ", media) 
09 fim
Algoritmos e programação I.indd 33Algoritmos e programação I.indd 33 7/8/2013 16:01:027/8/2013 16:01:02
Process BlackProcess Black
34
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 3.3 Instrução primitiva de entrada
A instrução primitiva de entrada permite que dados fornecidos pelo usuário via 
teclado (ou por outros dispositivos) sejam armazenados em variáveis na memória 
do computador. 
A sintaxe do comando de entrada de dados é exibida a seguir e exemplificada no 
Quadro 3.8. 
ler(<variável>)
ler(<lista de variáveis>)
Quadro 3.8 î Exemplos da sintaxe do comando de entrada
Variáveis Exemplos de comandos de saída
nota1: real
nota2: real
nome: cadeia
01 ler(nome,nota1,nota2)
02 escrever("Digite o nome do aluno: ")
 ler(nome)
 escrever("Digite a primeira nota do aluno: ")
 ler(nota1)
 escrever("Digite a segunda nota do aluno: ")
 ler(nota2) 
No primeiro exemplo do Quadro 3.8, as três variáveis são lidas em um único 
comando de entrada, sem nenhuma informação prévia ao usuário sobre o que ele 
deverá digitar. Ao contrário, o exemplo 02 lê uma variável de cada vez e, antes 
de cada comando de entrada, emite uma mensagem ao usuário indicando o que 
deve ser informado ao programa. Esta solução facilita a interação do usuário com 
o programa, garantindo que as informações sejam fornecidas na ordem correta. 
Retomando o exemplo que calcula a média do aluno, proposto na seção 3.1, o 
Quadro 3.9 apresenta a solução ideal para o problema, incluindo o comando de 
entrada para resolver a segunda limitação mencionada anteriormente, com relação 
às variáveis nota1 e nota2 que permaneciam inalteradas, resultando sempre o 
mesmo valor para média. Este algoritmo inicia solicitando que o usuário digite a 
primeira nota do aluno (linha 05) e, em seguida, lê o valor digitado e armazena na 
variável nota1 (linha 06). O mesmo acontece com a segunda nota (linhas 07 e 08). 
A média do aluno é calculada e armazenada na variável media (linha 09) e, por 
fim,
exibida ao usuário (linha 10). 
Algoritmos e programação I.indd 34Algoritmos e programação I.indd 34 7/8/2013 16:01:037/8/2013 16:01:03
Process BlackProcess Black
35
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 3.9 î Exemplo da aplicação de comandos de atribuição, entrada e saída 
Exemplo 3.3 - Calcula a média de um aluno, considerando duas notas. 
01 algoritmo exemplo33
02 variáveis
03 nota1, nota2, media: real
04 início
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media ĸ (nota1 + nota2) / 2
10 escrever ("Média do aluno = ", media) 
11 fim
Um programador deve se preocupar em facilitar a interação do usuário com o 
programa. Então, é importante utilizar o comando de saída antes do comando 
de entrada, para indicar o que o usuário deve digitar (como nas linhas 05 e 07 
do exemplo 3.3). Outro detalhe importante a ser observado é a apresentação dos 
resultados que deve conter, além do resultado em si, mensagens explicando seu 
significado (como acontece na linha 10 do exemplo 3.3). 
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Algoritmos e programação I.indd 35Algoritmos e programação I.indd 35 7/8/2013 16:01:037/8/2013 16:01:03
Process BlackProcess Black
36
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Atividades 
1) Assinale (V) para as assertivas Verdadeiras e (F) para as Falsas.
(a) ( ) Instruções primitivas são comandos básicos utilizados para 
efetuar a entrada e a saída de dados e sua movimentação na 
memória, presentes apenas em alguns algoritmos.
(b) ( ) São instruções primitivas: o comando de atribuição, o comando 
de entrada de dados e o comando de saída de dados.
(c) ( ) O funcionamento do comando de atribuição consiste em avaliar 
a expressão, variável ou constante que está à esquerda do 
comando e armazenar o valor resultante na posição de memória 
correspondente à variável que aparece à direita do comando.
(d) ( ) A instrução primitiva de saída de dados tem por objetivo 
prover a interação entre o programa e o usuário (ou outros 
dispositivos). 
(e) ( ) A instrução primitiva de entrada permite que dados fornecidos 
pelo usuário via teclado (ou por outros dispositivos) sejam 
armazenados em variáveis na memória do computador. 
 
2) Sobre a instrução primitiva de atribuição...
(I) O resultado de uma operação de divisão sempre deve ser armazenado 
em uma variável declarada do tipo real, pois mesmo que o resultado 
desta operação seja um valor inteiro (exemplo: 10 / 5, cujo resultado 
será 2), este será armazenado como real.
(II) Os operandos de uma expressão com operadores mod e/ou div podem 
ser do tipo real, mas o resultado da expressão deve ser armazenado 
em uma variável do tipo inteiro.
(III) No comando de atribuição, o literal atribuído a uma variável do tipo 
cadeia ou caractere deve estar entre aspas conforme o exemplo: nome 
Å “Luciene”. 
Quais assertivas são VERDADEIRAS?
(a) Apenas I e II
(b) Apenas II.
(c) Apenas I e III.
(d) I, II e III.
(e) Nenhuma das respostas anteriores.
Algoritmos e programação I.indd 36Algoritmos e programação I.indd 36 7/8/2013 16:01:037/8/2013 16:01:03
Process BlackProcess Black
37
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a3) Considerando a declaração de variáveis a seguir, assinale os comandos de 
atribuição considerados INVÁLIDOS. 
variáveis
 nome, aluno: cadeia
 resp: caractere
 a, b, c: inteiro
 total, preco, resto: real
 teste, fl ag: lógico
(a) ( ) resp Å "sim" (f) ( ) total Å resto mod 5
(b) ( ) a Å b / 5 (g) ( ) a Å b + c
(c) ( ) teste Å "verdadeiro" (h) ( ) preco Å qtde * 5.00
(d) ( ) nome Å "Roberto" (i) ( ) fl ag Å teste
(e) ( ) b Å b + 1 (j) ( ) preco Å total - c
4) Assinale a opção em que uma ou mais das instruções primitivas está(ão) 
INCORRETA(s), considerando a declaração de variáveis a seguir.
variáveis
 nome: cadeia
 idade: inteiro
 peso, altura, imc: real
(a) escrever(“Informe o nome, o peso e a altura do paciente: “)
ler(nome, peso, altura)
imc Å peso / (altura * altura)
escrever(“IMC do paciente “,nome,” = “, imc)
(b) idade Å 10
nome Å “Solano Só”
escrever(nome,” tem “, idade, “ anos”)
(c) escrever(Informe o nome do paciente: )
ler(nome)
escrever(Informe a idade do paciente: )
ler(idade)
(d) ler(nome, peso, altura)
imc Å peso / (altura * altura)
escrever(imc)
(e) Nenhuma das respostas anteriores.
Algoritmos e programação I.indd 37Algoritmos e programação I.indd 37 7/8/2013 16:01:037/8/2013 16:01:03
Process BlackProcess Black
38
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 5) Considerando os comandos de atribuição a seguir, marque a opção que 
contenha a declaração de variáveis CORRETA. 
a Å 10 
b Å 2 
c Å a mod b
teste Å "S" 
desconto Å 500 * 0.1
x Å 50
y Å 10
z Å x / y
(a) variáveis
 a, b, x, y: inteiro
 c, desconto, z: real
teste: caractere
(b) variáveis
 teste: caractere 
 a, b, c, x, y: inteiro
 desconto, z: real
(c) variáveis
 teste: cadeia 
 a, b, c, x, y: inteiro
 desconto, z: real
(d) variáveis
 teste: caractere 
 a, b, x, y: inteiro
 c, desconto, z: real
(e) Nenhuma das respostas anteriores.
Respostas
 1) a = F; b = V; c = F; d = V; e = V.
 2) c.
 3) a, b, c, f, h.
 4) c.
 5) b
Algoritmos e programação I.indd 38Algoritmos e programação I.indd 38 7/8/2013 16:01:047/8/2013 16:01:04
Process BlackProcess Black
4 ESTRUTURA SEQUENCIAL
Vanessa Lindemann
Ao criar um algoritmo, tem-se como objetivo a solução de um determinado 
problema. Para que este problema seja resolvido, os conceitos básicos e as instruções 
primitivas estudados nos capítulos anteriores, devem estar organizados de forma a 
representar um conjunto de ações, que seguirá um fluxo de execução determinado 
por três estruturas básicas de controle: sequencial, condicional e repetitiva. 
Este capítulo é dedicado à estrutura sequencial, que contém um conjunto de 
instruções que serão executadas de forma linear, de cima para baixo, da esquerda 
para a direita, sem nenhum desvio entre as diretivas de início e fim do algoritmo. 
As estruturas de controle condicional e repetitiva serão estudadas nos capítulos 
subsequentes. 
4.1 Estrutura básica de um algoritmo sequencial
A estrutura básica de um algoritmo sequencial é apresentada no Quadro 4.1. Na 
linha 01, tem-se a identificação do algoritmo, seguida da declaração de variáveis 
(linhas 02 e 03) e, por fim, entre as diretivas de início e fim encontra-se o corpo do 
algoritmo (linhas 04 a 08). 
Quadro 4.1 î Estrutura básica de um algoritmo sequencial 
01 algoritmo <nome>
02 variáveis
03 <lista de variáveis>: <tipo>
04 início
05 <instrução 1>
06 <instrução 2>
07 <instrução n>
08 fim
Algoritmos e programação I.indd 39Algoritmos e programação I.indd 39 7/8/2013 16:01:047/8/2013 16:01:04
Process BlackProcess Black
40
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Como pode ser observado na estrutura apresentada no Quadro 4.1, o fluxo de 
execução de um algoritmo sequencial é linear. 
4.2 Exemplo de um algoritmo com estrutura sequencial 
O algoritmo apresentado no capítulo 3, que calcula a média de um aluno a partir 
de duas notas fornecidas pelo usuário, é um exemplo da aplicação da estrutura 
sequencial. Este exemplo, escrito em português estruturado, foi reproduzido 
novamente no Quadro 4.2. 
Quadro 4.2 î Exemplo de algoritmo sequencial em português estruturado 
Exemplo 3.3. Calcula a média de um aluno, considerando duas notas. 
01 algoritmo exemplo33
02 variáveis
03 nota1, nota2, media: real
04 início
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media Å (nota1 + nota2) / 2
10 escrever ("Média do aluno = ", media) 
11 fi m
As instruções que compõem o corpo do algoritmo serão executadas uma após a 
outra, na mesma ordem em que foram escritas, sem qualquer tipo de desvio. Através 
da instrução primitiva de saída na linha 05, o usuário receberá uma mensagem 
solicitando que a primeira nota do aluno seja digitada. O valor digitado pelo 
usuário será lido e armazenado na variável nota1 (linha 06). Os mesmos passos 
são repetidos para a segunda nota (linhas 07 e 08), que é lida e armazenada na 
variável nota2. Em seguida, a variável media recebe a média do aluno, calculada 
na linha 09 a partir da expressão (nota1+nota2)/2. 
A solução do algoritmo, apresentada no Quadro 4.2, foi escrita em português 
estruturado, mas também é possível utilizar outras formas de representação, como 
ilustra o fluxograma da Figura 4.1. O fluxograma de um algoritmo sequencial 
permite, a partir do símbolo de início, a execução das instruções contidas nos 
símbolos subsequentes sem nenhum desvio, até alcançar o símbolo de fim. 
 
Algoritmos e programação I.indd 40Algoritmos e programação I.indd 40 7/8/2013 16:01:047/8/2013 16:01:04
Process BlackProcess Black
41
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aFigura 4.1 î Exemplo de algoritmo sequencial em fluxograma
Algoritmos e programação I.indd 41Algoritmos e programação I.indd 41 7/8/2013 16:01:047/8/2013 16:01:04
Process BlackProcess Black
42
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 4.3 Construção de algoritmos sequenciais
O primeiro passo, para chegar à solução de um problema, é identificar no seu 
enunciado quais são os dados de entrada e de saída e, a partir daí, definir o 
processamento necessário para gerar o resultado esperado. 
No exemplo apresentado na seção anterior, os dados de entrada são as notas do 
aluno e a saída esperada é a sua média. Para chegar a esse resultado, foi realizado o 
cálculo da média aritmética entre as duas notas fornecidas pelo usuário, conforme 
pode ser observado no esquema da Figura 4.2.
Figura 4.2 î Elementos básicos para construção do algoritmo de cálculo da média
Entrada Processamento Saída
Notas do aluno
nota1 nota2 o Calcular a médiamedia Å(nota1+nota2)/2 o
Média do aluno
media
A prévia identificação dos elementos básicos, ilustrados na Figura 4.2, é importante 
para a construção da solução do problema. Outros exemplos são apresentados 
a seguir com o objetivo de ilustrar passo a passo como construir soluções para 
algoritmos sequenciais. A partir do enunciado de cada problema são identificados os 
elementos básicos para a construção do algoritmo (entrada / processamento / saída) 
e, em seguida, apresenta-se a solução do problema em português estruturado. 
Exemplo 4.1
Descrição do problema: construa um algoritmo que: (a) leia o nome de um 
funcionário, a quantidade de horas por ele trabalhadas e o valor que ele recebe por 
hora; (b) calcule o salário bruto, o valor do INSS (8% sobre o salário bruto) e o salário 
líquido do funcionário; (c) escreva o nome do funcionário e os valores calculados.
A partir deste enunciado, monta-se o esquema da Figura 4.3 que contém os 
elementos básicos para a construção da solução. 
Figura 4.3 î Elementos básicos para construção do algoritmo do exemplo 4.1
Entrada Processamento Saída
nome
ht
vh o
Calcular salário bruto
sbÅht*vh
Calcular INSS
inssÅsb*0.08
Calcular salário líquido
slÅsb-inss
o
nome
sb
inss
sl
Algoritmos e programação I.indd 42Algoritmos e programação I.indd 42 7/8/2013 16:01:047/8/2013 16:01:04
Process BlackProcess Black
43
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aForam identificados, a partir do enunciado do problema (exemplo 4.1), três dados de 
entrada: nome do funcionário, horas trabalhadas e valor da hora (representados na 
Figura 4.3 pelas variáveis nome,ht e vh, respectivamente). Como saída, espera-se: 
nome do funcionário, salário bruto, inss e salário líquido (o nome do funcionário 
será informado pelo usuário e os outros dados serão calculados). No processamento, 
é necessário definir como, a partir dos dados de entrada, gerar o resultado esperado. 
Neste exemplo, foram criadas as variáveis sb, inss e sl para armazenar os 
valores calculados para o salário bruto, o INSS e o salário líquido. O salário bruto 
é calculado multiplicando a quantidade de horas trabalhadas pelo valor da hora 
(ht*vh), o valor do INSS representa 8% do salário bruto (sb*0.08) e, por fim, o 
salário líquido é o salário bruto menos o valor do INSS (sb-inss).
Com o esquema da Figura 4.3, portanto, é possível construir a solução para o 
problema, descrita em português estruturado no Quadro 4.3. 
Quadro 4.3 î Solução do exemplo 4.1 em português estruturado 
Exemplo 4.1 - Calcula o salário de um funcionário. 
01 algoritmo exemplo41
02 variáveis
03 nome: cadeia
04 ht: inteiro
05 vh,sb,inss,sl: real
06 início
07 escrever("Nome do funcionário: ")
08 ler(nome)
09 escrever("Quantidade de horas trabalhadas: ")
10 ler(ht)
11 escrever("Valor da hora: ")
12 ler(vh)
13 sb Å ht * vh
14 inss Å sb * 0.08
15 sl Å sb - inss
16 escrever ("Funcionário: ", nome)
17 escrever ("Salário bruto: R$", sb) 
18 escrever ("INSS: R$", inss) 
19 escrever ("Salário líquido: R$", sl) 
20 fim
O algoritmo inicia com a definição de um identificador (linha 01), que deve seguir 
as mesmas regras usadas para definir nomes de variáveis - como não é permitido o 
uso de espaço em branco e caracteres especiais, o exemplo 4.1 é identificado como 
exemplo41. Entre as linhas 02 e 05, consta a declaração de variáveis: o nome do 
funcionário é do tipo cadeia, a quantidade de horas trabalhadas foi declarada do 
Algoritmos e programação I.indd 43Algoritmos e programação I.indd 43 7/8/2013 16:01:057/8/2013 16:01:05
Process BlackProcess Black
44
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a tipo inteiro e as demais variáveis são do tipo real (valor da hora, salário bruto, inss 
e salário líquido). O corpo do algoritmo está entre as linhas 06 e 20, onde estão 
organizados os elementos básicos de entrada/processamento/saída do esquema 
apresentado na Figura 4.3. Os comandos que representam a entrada de dados 
estão entre as linhas 07 e 12 - antes de cada instrução primitiva de entrada (linhas 
08, 10 e 12), e será emitida uma mensagem para o usuário, indicando os dados a 
serem digitados (linhas 07, 09 e 11). Os cálculos do processamento aparecem entre 
as linhas 13 e 15, cujos resultados serão escritos entre as linhas 16 e 19 - comandos 
que representam a saída de dados. 
Exemplo 4.2
Descrição do problema: sabe-se que na cidade X o índice de natalidade anual é 
30% maior do que na cidade Y. Construa um algoritmo que, a partir do índice de 
natalidade anual da cidade Y, calcule e escreva
o valor estimado da natalidade 
anual na cidade X.
O esquema da Figura 4.4 contém os elementos básicos para a construção da solução 
deste problema. 
Figura 4.4 î Elementos básicos para construção do algoritmo do exemplo 4.2
Entrada Processamento Saída
Índice de 
natalidade anual 
da cidade Y
y
o
Calcular o índice de 
natalidade da cidade X, 
que é 30% superior ao da 
cidade Y
x Å y*1.3
o
Índice de 
natalidade anual 
da cidade X
x
A entrada é o índice de natalidade da cidade Y (representada pela variável y). 
O objetivo do algoritmo é calcular e escrever o índice de natalidade da cidade X 
(representada pela variável x), que é 30% superior ao da cidade Y. A solução para 
o problema está descrita em português estruturado no Quadro 4.4.
Algoritmos e programação I.indd 44Algoritmos e programação I.indd 44 7/8/2013 16:01:057/8/2013 16:01:05
Process BlackProcess Black
45
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 4.4 î Solução do exemplo 4.2 em português estruturado 
Exemplo 4.2 - Calcula o índice de natalidade de uma cidade. 
01 algoritmo exemplo42
02 variáveis
03 x, y: real
04 início
05 escrever("Índice de natalidade da cidade Y: ")
06 ler(y)
07 x Å y * 1.3
08 escrever ("Índice de natalidade da cidade X: ", x)
09 fim
Exemplo 4.3
Descrição do problema: faça um algoritmo que converta uma temperatura de graus 
Centígrados para graus Fahrenheit. A fórmula de conversão é F=(9*C+160)/5, onde 
F é a temperatura em Fahrenheit e C é a temperatura em Centígrados. 
Os dados de entrada e saída, bem como o processamento necessário para resolver 
o problema, podem ser observados na Figura 4.5. A partir destes dados, chega-se à 
solução para o problema, apresentada em português estruturado no Quadro 4.5.
Figura 4.5 î Elementos básicos para construção do algoritmo do exemplo 4.3
Entrada Processamento Saída
Temperatura em 
graus Centígrados
C o
Converter a temperatura 
de graus Centígrados para 
Fahrenheit
F Å(9*C+160)/5
o
Temperatura em 
graus Fahrenheit
F
Quadro 4.5 î Solução do exemplo 4.3 em português estruturado 
Exemplo 4.3 - Conversão de graus Centígrados para graus Fahrenheit. 
01 algoritmo exemplo43
02 variáveis
03 C, F: real
04 início
05 escrever("Temperatura em graus Centígrados: ")
06 ler(C)
07 F Å(9*C+160)/5
08 escrever ("Temperatura em graus Fahrenheit: ", F)
09 fim
Algoritmos e programação I.indd 45Algoritmos e programação I.indd 45 7/8/2013 16:01:057/8/2013 16:01:05
Process BlackProcess Black
46
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 4.4 Teste de mesa de algoritmos com estrutura sequencial 
O teste de mesa tem por objetivo detectar, caso existam, erros semânticos na 
solução do algoritmo (ou seja, erros de lógica). Para realizar o teste de mesa, as 
variáveis utilizadas no algoritmo devem ser listadas, uma simulação da execução do 
algoritmo é realizada e todos os valores assumidos pelas variáveis são registrados. 
No final, compara-se a resposta obtida com a resposta esperada. Caso não haja 
coincidência entre estas respostas, detectou-se um erro de lógica. 
Os exemplos descritos a seguir apresentam o algoritmo e seu teste de mesa. 
Exemplo 4.4
Descrição do problema: faça um algoritmo para calcular a área de um triângulo.
Figura 4.6 î Elementos básicos para construção do algoritmo do exemplo 4.4
Entrada Processamento Saída
Base e altura 
b h o
Calcular a área do triângulo
area Å (b*h)/2 o
Área do triângulo
area
Mesmo que não esteja explícito na descrição do problema, os dados de entrada podem 
ser identificados a partir da fórmula usada para calcular a área de um triângulo. 
Assim, como ilustra a Figura 4.6, os dados necessários para calcular esta área são a 
base e a altura do triângulo. No processamento, simplesmente, aplica-se a fórmula 
e, por fim, o resultado deverá ser exibido ao usuário. O algoritmo que resolve este 
problema é descrito no Quadro 4.6 e seu teste de mesa é explicado na sequência. 
Quadro 4.6 î Solução do exemplo 4.4 em português estruturado 
Exemplo 4.4 - Cálculo da área de um triângulo. 
01 algoritmo exemplo44
02 variáveis
03 b, h, area: real
04 início
05 escrever("Base: ")
06 ler(b)
07 escrever("Altura: ")
08 ler(h)
09 area Å(b*h)/2
10 escrever ("Área = ", area)
11 fim
Algoritmos e programação I.indd 46Algoritmos e programação I.indd 46 7/8/2013 16:01:057/8/2013 16:01:05
Process BlackProcess Black
47
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
linha b h area
 06 12
Para testar a solução apresentada, é preciso definir valores para os dados de entrada. 
Neste caso, a base e a altura do triângulo (no teste apresentado a seguir definiu-se 
b = 12 e h = 5, que resultará em uma área de 30). Em seguida, é necessário montar a 
tabela onde devem constar todas as variáveis utilizadas na solução e o registro dos 
valores assumidos por elas na simulação da execução do algoritmo. Esta etapa do 
teste pode ser observada no Quadro 4.7. À esquerda, aparecem os valores definidos 
como dados de entrada; no centro, a tabela do teste de mesa que será preenchida 
durante a simulação de execução do algoritmo; e à direita, um espaço onde será 
registrada a saída do algoritmo. 
Quadro 4.7 – Teste de mesa do exemplo 4.4 î etapa 1
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
b = 12 
h = 5
 
Feito isto, a simulação de execução deve ser iniciada, passando linha a linha do 
algoritmo e registrando os valores assumidos pelas variáveis. Na linha 05 do 
algoritmo (Quadro 4.6), primeira instrução a ser executada, será emitida uma 
mensagem ao usuário para que ele informe a base do triângulo. Esta instrução não 
altera o valor de nenhuma das variáveis, portanto, não gera registro na tabela do 
teste de mesa. Na linha 06 (Quadro 4.6), o valor digitado pelo usuário será lido e 
armazenado na variável b, gerando um registro no teste de mesa, conforme ilustra 
o Quadro 4.8. Este registro contém o número da linha da instrução executada no 
algoritmo e o valor de entrada da variável b, definido como 12 neste teste. 
Quadro 4.8 – Teste de mesa do exemplo 4.4 î etapa 2, passo 1
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
b = 12 variáveis 
h = 5
linha b h area
variáveis
Algoritmos e programação I.indd 47Algoritmos e programação I.indd 47 7/8/2013 16:01:067/8/2013 16:01:06
Process BlackProcess Black
48
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Na linha 07 (Quadro 4.6), uma mensagem será emitida ao usuário solicitando que 
ele digite a altura do triângulo, valor que será lido e armazenado na variável h 
(linha 08 - Quadro 4.6), gerando um novo registro na tabela do teste de mesa, que 
pode ser observado no Quadro 4.9. 
Quadro 4.9 – Teste de mesa do exemplo 4.4 î etapa 2, passo 2
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
b = 12
h = 5
A área do triângulo é calculada na linha 09 (Quadro 4.6). Considerando os valores 
armazenados nas variáveis b e h, tem-se (12*5)/2, que resulta em 30. Este valor 
é armazenado na variável area, devendo, portanto, ser registrado na tabela do 
teste de mesa. 
Quadro 4.10
– Teste de mesa do exemplo 4.4 î etapa 2, passo 3
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
b = 12
h = 5 
Por fim, na linha 10 (Quadro 4.6), consta a instrução primitiva de saída que irá 
exibir ao usuário o valor da área do triângulo, calculado no algoritmo. O Quadro 
4.11 apresenta, à direita, a saída do algoritmo. 
linha b h area
 06 12
 08 5
variáveis
linha b h area
 06 12
 08 5
 09 30
variáveis
Algoritmos e programação I.indd 48Algoritmos e programação I.indd 48 7/8/2013 16:01:067/8/2013 16:01:06
Process BlackProcess Black
49
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 4.11 – Teste de mesa do exemplo 4.4 î etapa 2, passo 4
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
b = 12
h = 5 Área = 30
Encerrada a simulação de execução, verifica-se que a resposta obtida coincide com 
a resposta esperada (área = 30). Portanto, o algoritmo está correto. 
Exemplo 4.5
Descrição do problema: escreva um algoritmo para calcular a quantidade de 
combustível necessária para um automóvel percorrer determinada distância. 
Considerar um consumo médio de um litro de combustível para cada 12 km 
rodados. 
Para calcular a quantidade de combustível necessária para um automóvel percorrer 
uma distância qualquer, é necessário saber a distância a ser percorrida e o consumo 
médio do veículo. No enunciado do problema, consta apenas o consumo médio do 
veículo. Portanto, a distância a ser percorrida deverá ser informada pelo usuário. 
A Figura 4.7 apresenta os elementos básicos para a construção deste algoritmo.
Figura 4.7 î Elementos básicos para construção do algoritmo do exemplo 4.5
Entrada Processamento Saída
Distância a ser 
percorrida 
distancia
o
Calcular a quantidade de 
combustível
litros Å distancia/12
o
Quantidade de 
combustível
litros
A partir destes dados, constrói-se o algoritmo com a solução para o problema 
(Quadro 4.12) e, em seguida, realiza-se o teste de mesa (Quadros 4.13 e 4.14). 
linha b h area
 06 12
 08 5
 09 30
variáveis
Algoritmos e programação I.indd 49Algoritmos e programação I.indd 49 7/8/2013 16:01:067/8/2013 16:01:06
Process BlackProcess Black
50
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 4.12 î Solução do exemplo 4.5 em português estruturado 
Exemplo 4.4 - Cálculo da área de um triângulo. 
01 algoritmo exemplo45
02 variáveis
03 distancia, litros: real
04 início
05 escrever("Informe a distância a ser percorrida: ")
06 ler(distancia)
07 litros Å distancia/12
08 escrever ("Serão necessários ",litros," de combustível.")
09 fim
Para testar a solução apresentada, definiu-se que a distância a ser percorrida é de 
200 km. Assim, o valor esperado como resultado é de 16,7 litros de combustível 
(200/12=16,7). O Quadro 4.13 apresenta a primeira etapa do teste de mesa, que 
consiste em montar o esquema para registrar os valores assumidos pelas variáveis 
durante a simulação da execução do algoritmo. 
Quadro 4.13 – Teste de mesa do exemplo 4.5 î etapa 1
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
distancia = 200
A simulação de execução é iniciada na linha 05 (Quadro 4.12), que exibirá uma 
mensagem ao usuário, para que ele digite a distância a ser percorrida com o veículo. 
Na sequência (linha 06 - Quadro 4.12), este valor será lido e armazenado na variável 
distancia, gerando um registro na tabela do teste de mesa, conforme pode ser 
observado no Quadro 4.14. 
linha
 distância litros
variáveis
Algoritmos e programação I.indd 50Algoritmos e programação I.indd 50 7/8/2013 16:01:067/8/2013 16:01:06
Process BlackProcess Black
51
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 4.14 – Teste de mesa do exemplo 4.5 î etapa 2, passo 1
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
distancia = 200
Na linha 07 (Quadro 4.12), a quantidade de litros necessária para percorrer a 
distância informada pelo usuário é calculada e o resultado é armazenado na variável 
litros. O registro desta execução aparece na tabela do teste de mesa do Quadro 
4.15, onde também consta a saída de dados executada na linha 08 (Quadro 4.12), 
considerando o resultado obtido. 
Quadro 4.15 – Teste de mesa do exemplo 4.5 î etapa 2, passo 2
Exemplo 4.4 - Cálculo da área de um triângulo. 
Entrada Teste de mesa Saída
distancia = 200 Serão necessários 16,7
 litros de combustível.
Encerrada a simulação de execução do algoritmo, verifica-se que a resposta obtida 
coincide com a resposta esperada (16,7 litros). Portanto, o algoritmo está correto. 
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: algoritmos, 
Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
linha
 distância litros
 06 200
variáveis
linha
 distância litros
 06 200
 07 16,7
variáveis
Algoritmos e programação I.indd 51Algoritmos e programação I.indd 51 7/8/2013 16:01:067/8/2013 16:01:06
Process BlackProcess Black
52
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Atividades 
 Para cada um dos exercícios a seguir, monte o esquema com os elementos 
básicos (entrada / processamento / saída), construa o algoritmo com a solução 
para o problema e, por fi m, realize o teste de mesa, para assegurar que a resposta 
esteja correta. 
(1) O custo fi nal de um carro novo para o consumidor é a soma do 
custo de fábrica, dos impostos e da porcentagem do distribuidor. 
Supondo que os impostos totalizam 45% sobre o custo de fábrica e a 
porcentagem do distribuidor seja de 20% sobre o valor total, escreva 
um algoritmo que leia o custo de fábrica de um carro, calcule e escreva 
o custo fi nal ao consumidor.
(2) Sabe-se que, para iluminar de maneira correta os cômodos de uma 
casa, para cada m2, deve-se usar 18W de potência. Faça um algoritmo 
que receba as duas dimensões de um cômodo (em metros), calcule
e 
apresente a sua área (em m2) e a potência de iluminação que deverá 
ser utilizada.
(3) Uma empresa que promove espetáculos teatrais precisa de um 
programa para defi nir o valor mínimo para o convite, considerando 
o custo total do espetáculo e o número de lugares disponíveis para 
o público no local da apresentação. 
(4) Sabe-se que
1 pé = 12 polegadas;
1 jarda = 3 pés;
1 milha = 1760 jardas.
Faça um algoritmo que receba uma medida em pés, faça as conversões 
conforme a descrição acima e mostre os resultados em polegadas, 
jardas e milhas.
(5) Considerando uma aplicação de P reais à taxa de juros i constante 
por um período de N meses, calcule e escreva qual será o montante 
M após o término da aplicação, sendo M = P * (1 + i) N.
Algoritmos e programação I.indd 52Algoritmos e programação I.indd 52 7/8/2013 16:01:077/8/2013 16:01:07
Process BlackProcess Black
5 ESTRUTURA DE CONTROLE CONDICIONAL: SE
Vanessa Lindemann
Como foi explicado anteriormente, os algoritmos seguem um fluxo de execução 
determinado por três estruturas básicas de controle: sequencial (tema do capítulo 
4), condicional e repetitiva. 
A estrutura condicional é utilizada para desviar o fluxo de execução do algoritmo 
para diferentes partes da solução. Ela divide-se em estrutura SE e estrutura 
ESCOLHA - a primeira delas abordada neste capítulo. A estrutura SE é mais flexível, 
podendo utilizar na sua condição todos os operadores relacionais (<, >, <=, >=, =, <>) 
e, quando forem necessárias, mais de uma condição com os operadores lógicos (E 
e OU) entre elas. Esta estrutura também é classificada como estrutura condicional 
SE simples, composta ou encadeada, como descrevem as próximas seções. 
5.1 Estrutura condicional SE simples
A sintaxe da estrutura condicional SE simples é apresentada a seguir. 
se(<condição ou lista de condições>)então
 <instrução ou bloco de instruções>
A condição é testada e resultará verdadeiro ou falso. Quando resultar verdadeiro, a 
instrução da cláusula então é executada. Esta estrutura pode conter mais de uma 
condição com operadores lógicos entre elas e, também, pode conter um bloco de 
instruções a ser executado, ao invés de uma instrução única. Vale lembrar que um 
bloco é composto por duas ou mais instruções, delimitado pelas diretivas de início e 
fim. O Quadro 5.1 apresenta três exemplos da estrutura condicional SE simples. 
Algoritmos e programação I.indd 53Algoritmos e programação I.indd 53 7/8/2013 16:01:077/8/2013 16:01:07
Process BlackProcess Black
54
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 5.1 î Exemplos da sintaxe da estrutura condicional SE simples
Com instrução única Com bloco de instruções Mais de uma condição e bloco de 
instruções
se(a>b)então
 escrever(a)
se(a>b)então
início 
 a Åa-b
 escrever(a)
fim
se(a>b)e(a<>0)e(b<>0)então
início 
 a Åa/b
 escrever(a)
fim 
No primeiro exemplo do Quadro 5.1, a estrutura condicional SE possui apenas 
uma condição (a>b) e, quando esta resultar verdadeiro, uma única instrução a ser 
executada (escrever(a)). O segundo exemplo também testa uma única condição. 
Entretanto, quando esta resultar verdadeiro, um bloco de instruções será executado. 
E, por fim, o terceiro exemplo apresenta uma situação em que três condições 
deverão ser verdadeiras para que o bloco de comandos seja executado. 
Para exemplificar a aplicação desta estrutura condicional, propõe-se a ampliação 
do exemplo que calcula a média de um aluno, cuja solução foi apresentada nos 
capítulos anteriores. Além de calcular e exibir a média do aluno, o algoritmo deverá 
emitir a mensagem “Aluno aprovado” sempre que a média for igual ou superior 
a 6.0 (seis). A solução para este problema, denominado exemplo 5.1, pode ser 
observada no Quadro 5.2. 
Quadro 5.2 î Exemplo de algoritmo com estrutura condicional SE simples 
Exemplo 5.1. Calcula a média de um aluno e emite mensagem “Aluno aprovado”. 
01 algoritmo exemplo51
02 variáveis
03 nota1, nota2, media: real
04 início
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media Å (nota1 + nota2) / 2
10 escrever ("Média do aluno = ", media)
11 se(media>=6)então
12 escrever("Aluno aprovado!")
13 fim
As instruções das linhas 11 e 12 foram acrescentadas à solução inicial e, sempre 
que a condição (media>=6) for verdadeira, a mensagem Aluno aprovado! será 
exibida ao usuário. 
Algoritmos e programação I.indd 54Algoritmos e programação I.indd 54 7/8/2013 16:01:077/8/2013 16:01:07
Process BlackProcess Black
55
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aNa solução apresentada, entretanto, quando o aluno obtiver média inferior a 
6.0 (seis), nenhuma mensagem será exibida ao usuário informando sobre sua 
reprovação. Esta limitação pode ser resolvida utilizando a estrutura condicional 
SE composta, descrita na próxima seção. 
5.2 Estrutura condicional SE composta
A sintaxe da estrutura condicional SE composta pode ser observada a seguir. 
se(<condição ou lista de condições>)então
 <instrução ou bloco de instruções>
senão
 <instrução ou bloco de instruções>
Quando a condição avaliada resultar verdadeiro, a instrução da cláusula então 
será executada; caso contrário, quando resultar falso, é a instrução da cláusula 
senão que será executada. 
Com esta estrutura é possível acrescentar à solução do exemplo anterior, a emissão 
da mensagem “Aluno reprovado.” quando a média for menor que 6.0 (seis). A 
solução para este problema, denominado exemplo 5.2, pode ser observada no 
Quadro 5.3. 
Quadro 5.3 î Exemplo de algoritmo com estrutura condicional SE composta 
Exemplo 5.2. Calcula a média de um aluno e emite mensagem “Aluno aprovado” ou 
“Aluno reprovado”.
01 algoritmo exemplo52
02 variáveis
03 nota1, nota2, media: real
04 início
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media Å (nota1 + nota2) / 2
10 escrever("Média do aluno = ", media)
11 se(media>=6)então
12 escrever("Aluno aprovado!")
13 senão
14 escrever("Aluno reprovado!")
15 fim
Algoritmos e programação I.indd 55Algoritmos e programação I.indd 55 7/8/2013 16:01:077/8/2013 16:01:07
Process BlackProcess Black
56
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a As instruções das linhas 13 e 14 foram acrescentadas à solução anterior. Desta forma, 
quando a condição (media>=6) for verdadeira, a mensagem Aluno aprovado! 
será exibida; e quando a condição resultar falso, o algoritmo emitirá a mensagem 
Aluno reprovado. 
Na sequência, mais um problema será resolvido para exemplificar a aplicação da 
estrutura SE composta e destacar a necessidade da estrutura SE encadeada. 
Exemplo 5.3
Descrição do problema: escreva um algoritmo que verifique se um valor qualquer 
digitado pelo usuário é positivo ou negativo. 
Figura 5.1 î Elementos básicos para construção do algoritmo do exemplo 5.3
Entrada Processamento Saída
valor
o
Comparar o valor com zero para 
verificar se é positivo ou negativo
se(valor<0)então
 escrever("Negativo")
senão
 escrever("Positivo")
o
Imprimir uma 
das mensagens:
 
Negativo
ou 
Positivo
Quadro 5.4 î Solução do exemplo 5.3 
Exemplo 5.3 - Verifica se um valor é negativo ou positivo. 
01 algoritmo exemplo53
02 variáveis
03 valor: real
04 início
05 escrever("Informe um valor qualquer: ")
06 ler(valor)
07 se(valor<0)então
08 escrever("Negativo")
09 senão
10 escrever("Positivo")
11 fim
Antes de iniciar o teste de mesa, vale lembrar que a escolha dos dados de testes é 
muito importante na simulação. Os
dados escolhidos devem garantir a execução 
Algoritmos e programação I.indd 56Algoritmos e programação I.indd 56 7/8/2013 16:01:077/8/2013 16:01:07
Process BlackProcess Black
57
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
ade todas as instruções do algoritmo, testando todas as possibilidades de saída. 
Neste exemplo, duas possibilidades serão testadas: um valor negativo e um valor 
positivo. 
No primeiro teste realizado, definiu-se como dado de entrada ƺ80. Assim, o 
resultado esperado é “Negativo”. O Quadro 5.5 apresenta a primeira etapa do teste 
de mesa, que consiste em montar o esquema para registrar os valores assumidos 
pelas variáveis durante a simulação da execução do algoritmo. 
Quadro 5.5 – Teste de mesa do exemplo 5.3
Exemplo 5.3 - Verifica se um valor é negativo ou positivo.
Entrada Teste de mesa Saída 
valor = ƺ80
A simulação de execução é iniciada na linha 05 (Quadro 5.4), que exibirá uma 
mensagem ao usuário solicitando que ele digite um valor qualquer. Na sequência 
(linha 06 ƺ Quadro 5.4), este valor será lido e armazenado na variável valor, 
gerando um registro na tabela do teste de mesa, conforme pode ser observado 
no Quadro 5.6. 
Quadro 5.6 – Teste de mesa do exemplo 5.3 î com valor negativo
Exemplo 5.3 - Verifica se um valor é negativo ou positivo.
Entrada Teste de mesa Saída 
valor = ƺ80 Negativo
 
Na linha 07 (Quadro 5.4), a condição (valor<0) é testada. Como ƺ80 é menor do 
que zero, esse teste resulta verdadeiro e, consequentemente, a instrução da cláusula 
então será executada, emitindo a mensagem “Negativo”. A saída gerada, portanto, 
coincide com a resposta esperada. 
Ao testar um valor positivo como 22, por exemplo, a condição da linha 07 (Quadro 
5.4) não será satisfeita, resultando falso. Neste caso, a instrução da cláusula senão 
será executada, emitindo a mensagem “Positivo”. Neste caso, o resultado obtido 
linha
 valor
 
variáveis
linha
 valor
 06 - 80
variáveis
Algoritmos e programação I.indd 57Algoritmos e programação I.indd 57 7/8/2013 16:01:087/8/2013 16:01:08
Process BlackProcess Black
58
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a também coincide com o resultado esperado. Os dados deste teste podem ser 
observados no Quadro 5.7.
Quadro 5.7 – Teste de mesa do exemplo 5.3 î com valor positivo
Exemplo 5.3 - Verifica se um valor é negativo ou positivo.
Entrada Teste de mesa Saída 
valor = 22 Positivo
Os testes de mesa realizados demonstram que os resultados obtidos através da 
simulação de execução do algoritmo, com valores negativos e positivos, coincidem 
com os resultados esperados. Mas o que aconteceria se o valor digitado pelo usuário 
fosse um 0 (zero)? Neste caso, o algoritmo emitiria a mensagem “Positivo”, que 
não condiz com o resultado esperado já que o zero é neutro. Para corrigir este 
problema, será necessário usar a estrutura condicional SE encadeada, descrita na 
próxima seção.
5.3 Estrutura condicional SE encadeada
A aplicação da estrutura condicional SE encadeada, cuja sintaxe é apresentada 
a seguir, pode ser observada no Quadro 5.8 que reescreve a solução do exemplo 
anterior e nos exemplos apresentados na sequência. 
 se(<condição ou lista de condições>)então
 <instrução ou bloco de instruções>
 senão
 se(<condição ou lista de condições>)então
 <instrução ou bloco de instruções>
 senão
 <instrução ou bloco de instruções> 
A solução do exemplo anterior, que verifica se um valor é positivo ou negativo, 
foi reescrita no Quadro 5.8, utilizando a estrutura SE encadeada (linhas 07 a 13). 
As modificações realizadas aparecem entre as linhas 10 e 13, onde mais um teste 
foi incluído para garantir que quando o dado de entrada for 0 (zero), o algoritmo 
emita uma mensagem “Zero é neutro”. 
linha
 valor
 06 22
variáveis
Algoritmos e programação I.indd 58Algoritmos e programação I.indd 58 7/8/2013 16:01:087/8/2013 16:01:08
Process BlackProcess Black
59
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 5.8 î Solução do exemplo 5.3 
Exemplo 5.3 - Verifica se um valor é negativo ou positivo. 
01 algoritmo exemplo53
02 variáveis
03 valor: real
04 início
05 escrever("Informe um valor qualquer: ")
06 ler(valor)
07 se(valor<0)então
08 escrever("Negativo")
09 senão
10 se(valor>0)então
11 escrever("Positivo")
12 senão
13 escrever("Zero é neutro")
14 fim
Para testar todas as possibilidades de saída desta solução, o teste de mesa deve ser 
realizado considerando três valores: um positivo, um negativo e o zero.
Exemplo 5.4
Descrição do problema: escreva um algoritmo para encontrar o maior entre dois 
valores quaisquer digitados pelo usuário. 
Figura 5.2 î Elementos básicos para construção do algoritmo do exemplo 5.3
Entrada Processamento Saída
valor1
valor2 o
Comparar os valores para 
encontrar o maior entre eles o
maior
ou mensagem: 
valores iguais
O algoritmo do Quadro 5.9 foi construído a partir dos dados do esquema da Figura 
5.2. Em seguida, apresenta-se o teste de mesa realizado (Quadros 5.5 e 5.6). 
Algoritmos e programação I.indd 59Algoritmos e programação I.indd 59 7/8/2013 16:01:087/8/2013 16:01:08
Process BlackProcess Black
60
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 5.9 î Solução do exemplo 5.4 
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer. 
01 algoritmo exemplo54
02 variáveis
03 valor1,valor2:real
04 início
05 escrever("Informe o primeiro valor: ")
06 ler(valor1)
07 escrever("Informe o segundo valor: ")
08 ler(valor2)
09 se(valor1>valor2)então
10 escrever("Maior = ", valor1)
11 senão
12 se(valor2>valor1)então
13 escrever("Maior = ", valor2)
14 senão
15 escrever("Valores iguais!")
16 fim
Neste exemplo, três possibilidades devem ser testadas: valor1 maior; valor2 
maior; valor1 e valor2 iguais. 
No teste realizado, descrito a seguir, definiu-se como dados de entrada 8 e 5. 
Assim, o resultado esperado é “Maior = 8”. O Quadro 5.10 apresenta a primeira 
etapa do teste de mesa, que consiste em montar o esquema para registrar os valores 
assumidos pelas variáveis durante a simulação da execução do algoritmo. 
Quadro 5.10 – Teste de mesa do exemplo 5.4 î etapa 1
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada Teste de mesa Saída 
valor1 = 8
valor2 = 5
A simulação de execução é iniciada na linha 05 (Quadro 5.9), que exibirá uma 
mensagem ao usuário solicitando que ele digite o primeiro valor. Na sequência 
(linha 06 ƺ Quadro 5.9), este valor será lido e armazenado na variável valor1, 
gerando um registro na tabela do teste de mesa, conforme pode ser observado no 
Quadro 5.11. 
linha
 valor1 valor2
variáveis
Algoritmos e programação I.indd 60Algoritmos e programação I.indd 60 7/8/2013 16:01:087/8/2013 16:01:08
Process BlackProcess Black
61
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro
5.11 – Teste de mesa do exemplo 5.4 î etapa 2, passo1
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada Teste de mesa Saída 
valor1 = 8
valor2 = 5
A execução da linha 07 (Quadro 5.9) exibe uma mensagem solicitando que o 
usuário digite o segundo valor, que é lido e armazenado na variável valor2 
(linha 08 ƺ Quadro 5.9). O registro desta execução aparece na tabela do teste de 
mesa do Quadro 5.12. 
Quadro 5.12 – Teste de mesa do exemplo 5.4 î etapa 2, passo2
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada Teste de mesa Saída 
valor1 = 8 Maior = 8
valor2 = 5
Na linha 09 (Quadro 5.9) acontece a comparação entre os dois valores armazenados 
na memória, 8 e 5. A condição testada verifica se o primeiro valor é maior que o 
segundo. Neste caso, a condição testada é 8>5, que resulta em verdadeiro e permite 
a execução da instrução da cláusula então. A saída gerada, portanto, é “Maior = 
8”, que coincide com a resposta esperada. 
Exemplo 5.5
Descrição do problema: tendo como dados de entrada a altura e o gênero de uma 
pessoa, escreva um algoritmo para calcular seu peso ideal, utilizando as seguintes 
fórmulas: para homens (72,7 x altura)ƺ58; para mulheres (62,1 x altura)ƺ44.7.
 
linha
 valor1 valor2
 06 8 
variáveis
 
linha
 valor1 valor2
 06 8
 08 5
variáveis
Algoritmos e programação I.indd 61Algoritmos e programação I.indd 61 7/8/2013 16:01:087/8/2013 16:01:08
Process BlackProcess Black
62
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 5.13 î Solução do exemplo 5.5 
Exemplo 5.5 - Calcula o peso ideal de uma pessoa. 
01 algoritmo exemplo55
02 variáveis
03 genero: caractere
04 altura, peso_ideal: real
05 início
06 escrever("Qual o seu gênero(M ou F)? ")
07 ler(genero)
08 escrever("Qual a sua altura? ")
09 ler(altura)
10 se(genero="M")então
11 peso_ideal Å (72.7*altura)-58
12 senão
13 se(genero="F")então
14 peso_ideal Å (62.1*altura)-44.7
15 senão
16 início
17 peso_ideal Å 0
18 escrever("Gênero inválido.")
19 fim
20 escrever("Peso ideal = ", peso_ideal)
21 fim
A solução deste exemplo será usada para relembrar alguns fundamentos já 
estudados: (a) a variável genero foi declara do tipo caractere (linha 03), por isso, 
ao compará-la com M ou com F, estes devem estar entre aspas, como pode ser 
observado nas linhas 10 e 13; (b) a cláusula senão da linha 15 possui um bloco de 
instruções a ser executado, delimitado pelas diretivas de início (linha 16) e fim (linha 
19); (c) o texto do algoritmo está indentado, facilitando a sua leitura e compreensão 
ƺ a instrução primitiva de saída da linha 20 está alinhada às instruções anteriores à 
estrutura SE, ou seja, ela não faz parte desta estrutura e será executada sempre.
Exemplo 5.6
Descrição do problema: leia um valor inteiro e verifique se ele é par ou ímpar.
Algoritmos e programação I.indd 62Algoritmos e programação I.indd 62 7/8/2013 16:01:097/8/2013 16:01:09
Process BlackProcess Black
63
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 5.14 î Solução do exemplo 5.6 
Exemplo 5.6 - Verifica se um valor é par ou ímpar. 
01 algoritmo exemplo56
02 variáveis
03 valor: inteiro
04 início
05 escrever("Digite um valor inteiro: ")
06 ler(valor)
07 se(valor mod 2 = 0)então
08 escrever(valor, " é par.")
09 senão
10 escrever(valor, " é ímpar.")
11 fim
Neste caso, a variável valor deve ser do tipo inteiro para ser utilizada com o 
operador mod, que retorna o resto de uma divisão.
Exemplo 5.7
Descrição do problema: um banco concederá um crédito especial aos seus clientes, 
variável conforme o saldo médio no último ano. Construa um algoritmo que leia 
o saldo médio de um cliente, calcule e escreva o valor do crédito de acordo com 
a tabela a seguir.
Saldo médio Crédito
Até R$ 500,00 sem crédito
Entre R$ 501,00 e 1.000,00 20% sobre o valor do saldo médio
Entre R$ 1.000,00 e 3.000,00 30% sobre o valor do saldo médio
Acima de R$ 3.000,00 40% sobre o valor do saldo médio
Algoritmos e programação I.indd 63Algoritmos e programação I.indd 63 7/8/2013 16:01:097/8/2013 16:01:09
Process BlackProcess Black
64
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 5.15 î Solução do exemplo 5.7 
Exemplo 5.7 - Calcula o valor de crédito disponível para um cliente. 
01 algoritmo exemplo57
02 variáveis
03 saldo_medio, credito: real
04 início
05 escrever("Digite o saldo médio do cliente no último ano: ")
06 ler(saldo_medio)
07 se(saldo_medio<=500)então
08 credito Å 0
09 senão
10 se(saldo_medio>500)e(saldo_medio<=1000)então
11 credito Å saldo_medio*0.2
12 senão
13 se(saldo_medio>1000)e(saldo_medio<=3000)então
14 credito Å saldo_medio*0.3
15 senão
16 credito Å saldo_medio*0.4
17 escrever ("O cliente tem R$", credito," de crédito.")
18 fim
Neste exemplo, as estruturas SE das linhas 10 e 13 possuem duas condições com o 
operador lógico E entre elas. Desta forma, para que a instrução da cláusula então 
seja executada, as duas condições devem resultar verdadeiro. 
Exemplo 5.8
Descrição do problema: faça um algoritmo que execute as operações básicas de uma 
calculadora. Leia dois valores numéricos e um símbolo; caso o símbolo seja um dos 
relacionados a seguir efetue a operação correspondente com os valores digitados 
pelo usuário; caso contrário, digite a mensagem “Operador inválido!”. Símbolos: 
+ soma, - subtração, * multiplicação, / divisão. Atenção para a divisão por 0! 
Algoritmos e programação I.indd 64Algoritmos e programação I.indd 64 7/8/2013 16:01:097/8/2013 16:01:09
Process BlackProcess Black
65
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 5.16 î Solução do exemplo 5.8 
Exemplo 5.8 - Executa as operações básicas de uma calculadora. 
01 algoritmo exemplo58
02 variáveis
03 valor1, valor2: real
04 op: caractere
05 início
06 escrever("Valor 1: ")
07 ler(valor1)
08 escrever("Operador (+ - * /): ")
09 ler(op)
10 escrever("Valor 2: ")
11 ler(valor2)
12 se(op="+")então
13 escrever("Resultado = ", valor1+valor2)
14 senão
15 se(op="-")então
16 escrever("Resultado = ", valor1-valor2)
17 senão
18 se(op="*")então
19 escrever("Resultado = ", valor1*valor2)
20 senão
21 se(op="/")então
22 se(valor2<>0)então
23 escrever("Resultado = ", valor1/valor2)
24 senão
25 escrever("Não é possível dividir por 0.")
26 senão
27 escrever("Operador inválido!")
28 fim
A solução apresentada neste exemplo possui várias estruturas SE encadeadas, onde 
a variável op foi comparada a quatro operadores diferentes (linhas 12, 15, 18 e 21). 
Nesta situação, quando a variável é do tipo inteiro lógico, ou caractere e precisa ser 
comparada com vários valores, também é possível resolver o problema utilizando 
a estrutura condicional ESCOLHA, tema do próximo capítulo. 
5.4 Formatação da solução do algoritmo
Como pode ser observado nos exemplos apresentados até agora, as soluções têm 
seu texto indentado (indentar significa
inserir determinado espaço entre a margem 
da página e o início do texto de um parágrafo). Recomenda-se o uso de indentação 
no texto do algoritmo para facilitar a sua leitura. O Quadro 5.17 apresenta o mesmo 
trecho de um algoritmo sem e com indentação, ilustrando o quanto a segunda 
opção deixa o algoritmo mais legível. 
Algoritmos e programação I.indd 65Algoritmos e programação I.indd 65 7/8/2013 16:01:097/8/2013 16:01:09
Process BlackProcess Black
66
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 5.17 î Formatação do texto do algoritmo
Sem indentação Com indentação
se(valor1>valor2)então 
escrever(valor1)
senão
se(valor2>valor1)então
escrever(valor2)
senão
escrever("Valores iguais!")
se(valor1>valor2)então 
 escrever(valor1)
senão
 se(valor2>valor1)então
 escrever(valor2)
 senão
 escrever("Valores iguais!")
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Atividades 
Parte I - Questões objetivas e testes de mesa
1) Após executar o teste a seguir:
x Å 0
se (a <= b) e (c > b) então 
 x Å 5
senão 
 x Å 10
 x estará armazenando 10 se:
 (a) a = b < c;
 (b) a > b <= c;
 (c) a <= b < c;
 (d) a < b < c;
 (e) Nenhuma das alternativas anteriores.
Algoritmos e programação I.indd 66Algoritmos e programação I.indd 66 7/8/2013 16:01:097/8/2013 16:01:09
Process BlackProcess Black
67
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a2) Após executar o teste a seguir:
w Å 10
se (g <= m) ou (h < m) então 
 w Å w * 5
senão 
 w Å w / 5
 W estará armazenando 2 se:
 (a) h <= m < g;
 (b) h = m < g;
 (c) g < m < h;
 (d) h < m <= g;
 (e) Nenhuma das alternativas anteriores.
3) Considerando o algoritmo apresentado a seguir...
algoritmo teste_de_mesa 
variáveis 
 x, y, z: lógico
início
 ler(x,y,z)
 se(x=V)então 
 se(y=V)então
 início
 comando 1
 se(z=F)então 
 comando 2
 senão 
 comando 3
 comando 4 
 fi m
 senão 
 comando 5
 comando 6
 fim 
Algoritmos e programação I.indd 67Algoritmos e programação I.indd 67 7/8/2013 16:01:107/8/2013 16:01:10
Process BlackProcess Black
68
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a (a) Se x = V, y = F e z = V, quais os comandos serão executados?
 (b) Se x = V, y = V e z = V, quais os comandos serão executados?
 (c) Quais os valores de x, y e z para que somente o comando 5 seja 
executado?
 (d) Quais os valores de x, y e z para que somente o comando 6 seja 
executado?
 (e) Nenhuma das alternativas anteriores.
 
4) Indique a saída dos trechos de algoritmo apresentados a seguir, 
considerando 
 A = 20, B = 5, C = 5 e D = 5.
(a) se NÃO(D > 5) então
 XÅ(A+B)*D
senão
 XÅ(A–B)/C
escreva X
Saída: 
(b) se(A>2)E(B<7)então
 XÅ(A+2)*(B–2)
senão
 XÅ(A+B)/D*(C+D)
escreva X
Saída:
(c) se(A=2)OU(B>7)então
 XÅ(A+2)*(B–2)
senão
 XÅ(A+B)/D*(C+D)
escreva X
Saída:
(d) se NÃO(A>3)E NÃO(B<7)então
 XÅA+B
senão
 XÅA/B
escreva X
Saída:
Algoritmos e programação I.indd 68Algoritmos e programação I.indd 68 7/8/2013 16:01:107/8/2013 16:01:10
Process BlackProcess Black
69
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a5) O algoritmo apresentado a seguir calcula a quantidade de latas de tinta 
necessárias e o custo para pintar tanques cilíndricos de combustível. Os dados 
de entrada são a altura (h) e o raio (r) do cilindro. A lata de tinta custa R$ 24,00, 
cada lata contém 5 litros e cada litro pinta 3 metros quadrados. 
 algoritmo exercicio5
 variáveis 
 h, r, c, qtde, area, litro: real
 início 
 ler (h, r) 
 area Å (3.14*r**2)+(2*3.14*r*h)
 litro Å area/3
 qtde Å litro/5
 c Å qtde*24
 escrever ("Custo = R$ ", c)
 escrever ("Quantidade de latas de tinta = ", qtde)
 fi m
 Qual a saída do algoritmo, considerando h = 6 e r = 2? Considere duas casas 
decimais para fazer os cálculos.
Parte II - Resolução de problemas
Para cada um dos exercícios a seguir, monte o esquema com os elementos básicos 
(entrada / processamento / saída), construa o algoritmo com a solução para o 
problema e, por fim, realize o teste de mesa para assegurar que a resposta esteja 
correta. 
1) Construa um algoritmo que verifi que se o nome e a senha informados pelo 
usuário são válidos considerando a tabela a seguir. Emita uma das mensagens 
“Acesso liberado” ou “Acesso negado”. 
Usuário Senha
analuisa 990123
luciano 714460
josue 134895
Algoritmos e programação I.indd 69Algoritmos e programação I.indd 69 7/8/2013 16:01:107/8/2013 16:01:10
Process BlackProcess Black
70
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 2) A empresa “1001 Utilidades” precisa de um algoritmo para calcular o salário de 
seus funcionários. O salário bruto de cada funcionário é calculado com base 
no nº de horas por ele trabalhadas no mês e o valor que ele recebe por hora. 
O salário líquido deve considerar a comissão de 2% sobre o total das vendas 
realizadas pelo funcionário no mês, o bônus por tempo de serviço (conforme a 
tabela abaixo) e, fi nalmente, o desconto de INSS (8% sobre o total a receber). 
Para a empresa, é importante ter os seguintes valores disponíveis em R$: 
salário fi xo, total de adicionais (comissão + bônus), desconto INSS e salário 
líquido. 
Tempo de serviço Bônus
Entre 2 e 4 anos 2%
Entre 5 e 10 anos 5%
Maior que 10 anos 10%
3) Faça um algoritmo que, tendo como dados de entrada um ponto qualquer, 
determine e escreva o seu quadrante. 
2 1 
3 4
X
Y
Algoritmos e programação I.indd 70Algoritmos e programação I.indd 70 7/8/2013 16:01:107/8/2013 16:01:10
Process BlackProcess Black
71
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a4) João Papo-de-Pescador, homem de bem, comprou um microcomputador 
para controlar o rendimento diário de seu trabalho. Toda vez que ele volta de 
um dia de pescaria e traz um peso de peixes maior que o estabelecido pelo 
regulamento de pesca do estado Rio Grande do Sul (100 quilos) deve pagar 
uma multa por quilo excedente, que varia de acordo com a tabela abaixo.
Peso em excesso (E) Valor da multa p/ quilo excedente
1 <= E < 28 R$ 2,50
28 <= E < 50 R$ 7,80
E >= 50 R$ 13,00
 
 Faça um algoritmo que leia a variável P (peso de peixes) e verifi que se há 
excesso. Se houver, armazene o excesso de peso na variável E e o valor da multa 
que João deverá pagar na variável M, caso contrário tais variáveis deverão 
receber 0 (zero). Apresente o peso em excesso e o valor da multa.
5) Faça um algoritmo que leia três valores (A, B e C) e verifi que se eles formam 
ou não um triângulo. Se for um triângulo, indique de que tipo é: equilátero, 
escaleno ou isósceles. 
 Triângulo: forma geométrica composta por três lados, sendo que cada lado 
é menor que a soma dos outros dois lados (isto é uma regra, ou seja, uma 
condição). Logo, é triângulo quando A<
B+C, B<A+C e C<A+B.
 Isósceles: dois lados iguais (A=B) ou (A=C) ou (B=C).
 Escaleno: todos os lados diferentes (A<>B) e (B<>C).
 Equilátero: todos os lados iguais (A=B) e (B=C).
Respostas dos exercícios da Parte I
 1 - b
 2 - b 
 3 (a) Comandos 5 e 6; 
 3 (b) Comandos 1, 3, 4 e 6; 
 3 (c) x = V, y = F, z = não é testado; 
 3 (d) Impossível executar apenas o comando 6. 
 
Algoritmos e programação I.indd 71Algoritmos e programação I.indd 71 7/8/2013 16:01:107/8/2013 16:01:10
Process BlackProcess Black
72
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 4 (a) 3
 4 (b) 66
 4 (c) 50
 4 (d) 4
 
 5 - Custo = R$ 140,64
 Quantidade de latas de tinta = 5,86
Algoritmos e programação I.indd 72Algoritmos e programação I.indd 72 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
6 ESTRUTURA DE CONTROLE CONDICIONAL: ESCOLHA
Vanessa Lindemann
O capítulo anterior apresentou a estrutura condicional SE, que avalia uma expressão 
lógica que resulta verdadeiro ou falso. Se o resultado desta expressão for verdadeiro, 
as instruções da cláusula então são executadas. Caso contrário, o fluxo é desviado 
para executar as instruções da cláusula senão. Tem-se, portanto, dois caminhos 
possíveis a serem seguidos. Em situações de igualdade para uma mesma variável, 
em que é necessário comparar a variável com vários valores, utiliza-se a estrutura 
condicional SE encandeada (como ilustrou o exemplo 5.8). Neste caso, tem-se uma 
seleção de múltipla escolha. 
O uso da estrutura condicional ESCOLHA, tema deste capítulo, pode simplificar 
bastante a “cascata” de estruturas SE, necessária em situações de seleção de múltipla 
escolha. A estrutura ESCOLHA pode ser utilizada, portanto, em situações de 
igualdade para uma mesma variável, desde que esta variável seja do tipo inteiro, 
caractere ou lógico. 
A sintaxe da estrutura condicional ESCOLHA é apresentada a seguir.
 escolha(<variável>)
 caso <1>: <instrução ou bloco de instruções>
 caso <2>: <instrução ou bloco de instruções>
 caso <n>: <instrução ou bloco de instruções>
 senão
 <instrução ou bloco de instruções>
 fim
Algoritmos e programação I.indd 73Algoritmos e programação I.indd 73 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
74
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Se a variável avaliada tiver um dos valores listados nas opções, a instrução (ou 
bloco de instruções) correspondente ao caso será executada. Quando a variável 
for diferente de todas as opções listadas, a instrução (ou bloco de instruções) da 
cláusula senão será executada. A cláusula senão é opcional nesta estrutura. 
Para demonstrar a aplicação da estrutura condicional ESCOLHA, a solução do 
exemplo 5.8 (descrita no capítulo 5), que executa as operações básicas de uma 
calculadora, foi reescrita no Quadro 6.1 substituindo a estrutura SE encadeada 
pela estrutura ESCOLHA. 
Quadro 6.1 î Solução do exemplo 5.8 com estrutura ESCOLHA
Exemplo 5.8 - Executa as operações básicas de uma calculadora. 
01 algoritmo exemplo58
02 variáveis
03 valor1, valor2: real
04 op: caractere
05 início
06 escrever("Valor 1: ")
07 ler(valor1)
08 escrever("Operador (+ - * /): ")
09 ler(op)
10 escrever("Valor 2: ")
11 ler(valor2)
12 escolha(op)
13 caso "+": escrever("Resultado = ", valor1+valor2)
14 caso "-": escrever("Resultado = ", valor1-valor2)
15 caso "*": escrever("Resultado = ", valor1*valor2)
16 caso "/": se(valor2<>0)então
17 escrever("Resultado = ", valor1/valor2)
18 senão
19 escrever("Não é possível dividir por 0.")
20 senão
21 escrever("Operador inválido!")
22 fim
23 fim
Comparando esta solução à apresentada no capítulo 5, que utilizou estrutura 
SE encadeada, é possível observar o quanto a estrutura condicional ESCOLHA 
simplifica a leitura e a compreensão do algoritmo. 
Na sequência, são apresentados mais alguns exemplos para demonstrar a aplicação 
da estrutura condicional ESCOLHA.
Algoritmos e programação I.indd 74Algoritmos e programação I.indd 74 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
75
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo 6.1
Descrição do problema: faça um algoritmo que leia um valor inteiro entre 0 e 10 
e escreva o valor por extenso.
Quadro 6.2 î Solução do exemplo 6.1 
Exemplo 6.1 - Escreve um valor entre 0 e 10 por extenso. 
01 algoritmo exemplo61
02 variáveis
03 valor: inteiro
04 início
05 escrever("Digite um valor entre 0 e 10: ")
06 ler(valor)
07 escolha(valor)
08 caso 0: escrever("Zero")
09 caso 1: escrever("Um")
10 caso 2: escrever("Dois")
11 caso 3: escrever("Três")
12 caso 4: escrever("Quatro")
13 caso 5: escrever("Cinco")
14 caso 6: escrever("Seis")
15 caso 7: escrever("Sete")
16 caso 8: escrever("Oito")
17 caso 9: escrever("Nove")
18 caso 10: escrever("Dez")
19 senão
20 escrever("Valor inválido!")
21 fim 
22 fim
Exemplo 6.2
Descrição do problema: faça um algoritmo que leia um código (COD) e duas 
variáveis (X e Y). Quando o código for A: teste e informe se X é par ou ímpar; B: 
teste e informe qual o menor valor (X ou Y); C: verifique e informe se os valores 
são múltiplos.
Algoritmos e programação I.indd 75Algoritmos e programação I.indd 75 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
76
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 6.3 î Solução do exemplo 6.2 
Exemplo 6.2 - Executa instruções conforme um código (A, B ou C). 
01 algoritmo exemplo62
02 variáveis
03 codigo: caractere x, y: inteiro 
04 início
05 escrever("Qual o código (A, B ou C)? ") ler(codigo) 
06 escrever("Qual o valor de x? ") ler(x)
07 escrever("Qual o valor de y? ") ler(y)
08 escolha(codigo)
09 caso "A": se(x mod 2 = 0)então
10 escrever(x, " é par.")
11 senão
12 escrever(x, " é ímpar.")
13 caso "B": se(x<y)então
14 escrever("x=",x," é menor do que y=",y)
15 senão
16 se(x>y)então
17 escrever("y=",y," é menor do que x=",x)
18 senão
19 escrever(x," e ",y," são iguais")
20 caso "C": se(x mod y = 0)ou(y mod x = 0)então
21 escrever(x," e ",y," são múltiplos)
22 senão
23 escrever(x," e ",y," não são múltiplos)
24 senão
25 escrever("Código inválido! Digite A, B ou C.")
26 fim 
27 fim
Como foi explicado anteriormente, o algoritmo é executado de cima para baixo e 
da esquerda para a direita, então é possível escrever mais de uma instrução por 
linha como ilustram as linhas 03, 05, 06 e 07. 
Exemplo 6.3
Descrição do problema: considerando o cardápio de uma lanchonete, apresentado 
a seguir, construa um algoritmo que calcule e informe o valor a ser pago por um 
Algoritmos e programação I.indd 76Algoritmos e programação I.indd 76 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
77
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
adeterminado cliente. O algoritmo deve ler o código do produto e a quantidade 
adquirida, calcular e escrever o total a pagar. 
Código Descrição Preço
001 Cachorro-quente 8,00
002 Torrada 6,00
003 Xis 12,00
004 Refrigerante 3,00
005 Suco 3,00
006 Água mineral 2,00
Quadro 6.4 î Solução do exemplo 6.3 
Exemplo 6.3 - Calcula o total a pagar em uma lanchonete. 
01 algoritmo
exemplo63
02 variáveis
03 codigo, qtde: inteiro 
04 início
05 escrever("Digite o código do produto: ") 
06 ler(codigo)
07 escrever("Digite a quantidade: ")
06 ler(qtde)
08 escolha(codigo)
09 caso 001: escrever("Total a pagar = R$",qtde*8)
09 caso 002: escrever("Total a pagar = R$",qtde*6)
09 caso 003: escrever("Total a pagar = R$",qtde*12)
09 caso 004: escrever("Total a pagar = R$",qtde*3)
09 caso 005: escrever("Total a pagar = R$",qtde*3)
09 caso 006: escrever("Total a pagar = R$",qtde*2)
24 senão
25 escrever("Código inválido!")
26 fim 
27 fim
A solução apresentada está correta. Entretanto, possui limitações, pois só é possível 
registrar a compra de um produto a cada execução do algoritmo. Para resolver 
este problema, permitindo o registro de vários produtos em uma mesma compra, 
é necessário utilizar as estruturas de repetição, tema dos próximos capítulos. 
Algoritmos e programação I.indd 77Algoritmos e programação I.indd 77 7/8/2013 16:01:117/8/2013 16:01:11
Process BlackProcess Black
78
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Atividades 
Para cada um dos exercícios a seguir, monte o esquema com os elementos básicos 
(entrada / processamento / saída), construa o algoritmo com a solução para o problema 
e, por fim, realize o teste de mesa para assegurar que a resposta esteja correta. 
1) Construa um algoritmo que leia o código de um produto e imprima sua descrição 
e seu preço, conforme a tabela a seguir. O algoritmo deverá emitir uma mensagem 
de alerta, caso o código do produto digitado não esteja cadastrado.
Código Descrição Preço
1485 Camiseta 35,00
2395 Camisa 70,40
3400 Calça 120,00
4197 Jaqueta 190,00
5266 Moletom 90,00
2 ) Uma empresa concederá um aumento de salário aos seus funcionários, variáveis 
de acordo com o cargo, conforme a tabela abaixo. Escreva um algoritmo que leia o 
salário e o código do cargo de um funcionário, calcule o valor do novo salário. Se 
o cargo do funcionário não estiver na tabela, ele deverá receber 40% de aumento. 
Imprima a descrição do cargo, o salário antigo, o novo salário e a diferença.
Código Cargo % de aumento
101 Gerente 10%
102 Engenheiro 20%
103 Técnico 30%
Algoritmos e programação I.indd 78Algoritmos e programação I.indd 78 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
79
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a3) Escrever um algoritmo que leia os seguintes dados:
 - o código do estado de origem da carga de um caminhão (conforme a Tabela 1);
 - o peso da carga do caminhão em toneladas;
 - o código da carga (conforme a Tabela 2).
 Com base nestas informações, o algoritmo deve calcular e escrever: 
 - o peso da carga convertido em quilos;
 - o preço da carga do caminhão;
 - o valor do imposto, considerando o preço da carga e o estado de origem;
 - o valor total transportado pelo caminhão (valor da carga + imposto). 
 Tabela 1 Tabela 2
Código do Estado Imposto Código da Carga Preço por quilo
1 35% 10 50,00
2 25% 20 100,00
3 15% 30 200,00
4 5%
5 isento
4) Escreva um algoritmo que calcule o que deve ser pago por um produto, 
considerando como dados de entrada o preço normal de etiqueta e a escolha 
da condição de pagamento. Utilize os códigos da tabela a seguir para efetuar 
o cálculo do valor a ser pago dependendo da condição de pagamento.
Código Condição de pagamento
1 A vista, em dinheiro ou cheque, recebe 10% de desconto
2 A vista, no cartão de crédito, recebe 5% de desconto
3 Em 2 vezes, preço normal de etiqueta, sem juros
4 Em 3 vezes, preço de etiqueta mais juros de 10%
5) Faça um algoritmo que leia um número entre 1 e 7 e informe o dia da semana 
correspondente, sendo domingo o número 1. Caso o número não corresponda 
a um dia da semana, o algoritmo deverá emitir mensagem de erro.
Algoritmos e programação I.indd 79Algoritmos e programação I.indd 79 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
80
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 80Algoritmos e programação I.indd 80 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
7 ESTRUTURA DE CONTROLE DE REPETIÇÃO: ENQUANTO
Vanessa Lindemann
Este capítulo dá continuidade à discussão a respeito de estruturas de controle 
do fluxo de execução dos algoritmos. Enquanto as estruturas condicionais, 
estudadas nos capítulos anteriores, têm como objetivo escolher entre diferentes 
fluxos de execução, a partir da avaliação de uma expressão, as estruturas de 
repetição possibilitam que uma ou mais instruções sejam executadas mais de 
uma vez no algoritmo, enquanto uma condição de interrupção for satisfeita. 
Como foi destacado no último exemplo do capítulo anterior (exemplo 6.3), em 
determinadas situações, é necessário que um conjunto de instruções possa ser 
repetido várias vezes. O exemplo mencionado deveria calcular o total gasto 
por um cliente em uma lanchonete. Entretanto, na solução apresentada, só é 
possível registrar a compra de um tipo de produto cada vez que o algoritmo é 
executado. Não é possível, por exemplo, registrar a compra de uma torrada e 
um refrigerante. Para resolver essa limitação, faz-se necessário o uso de uma das 
estruturas de controle de repetição, como pode ser observado mais adiante. 
As estruturas de controle de repetição dividem-se em ENQUANTO, REPITA 
e PARA. Elas diferenciam-se em relação ao momento em que a condição de 
interrupção será avaliada, que pode ser antes ou depois da primeira iteração. 
Outro fator a ser considerado na escolha da estrutura de repetição a ser 
usada refere-se ao conhecimento prévio sobre o número de iterações a serem 
realizadas. 
A estrutura de controle de repetição ENQUANTO é o objeto de estudo do presente 
capítulo, as outras duas estruturas serão abordadas nos capítulos subsequentes. A 
estrutura ENQUANTO permite executar uma ou mais instruções repetidamente 
Algoritmos e programação I.indd 81Algoritmos e programação I.indd 81 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
82
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a enquanto sua condição de interrupção resultar verdadeiro. A sintaxe da estrutura 
de repetição ENQUANTO é apresentada a seguir.
 enquanto(<condição>)faça
 <instrução ou bloco de instruções>
Como pode ser observado, a condição de interrupção é verificada antes da execução 
da instrução ou bloco de instruções a ser repetido. Se o resultado desta condição 
for verdadeiro, a instrução ou bloco de instruções é executado e, logo após esta 
iteração, o fluxo de execução retorna para o início da estrutura ENQUANTO e a 
condição é avaliada novamente. Este processo é repetido até que a condição de 
interrupção resulte falso. Neste caso, o fluxo de execução do algoritmo continuará 
a partir da instrução imediatamente após à estrutura ENQUANTO. Vale destacar 
que, como a condição de interrupção é avaliada no início da estrutura
de controle, 
quando esta resultar falso na primeira vez em que for verificada, a instrução ou 
bloco de instruções da estrutura não será executado nenhuma vez. 
Para exemplificar a aplicação da estrutura ENQUANTO, o problema descrito 
no exemplo 6.3 será resolvido novamente a seguir ƺ neste capítulo denominado 
exemplo 7.1. 
 
Exemplo 7.1
Descrição do problema: considerando o cardápio de uma lanchonete, apresentado 
a seguir, construa um algoritmo que calcule e informe o valor a ser pago por um 
determinado cliente. O algoritmo deve ler o código do produto e a quantidade 
adquirida, calcular e escrever o total a pagar. 
Código Descrição Preço
001 Cachorro-quente 8,00
002 Torrada 6,00
003 Xis 12,00
004 Refrigerante 3,00
005 Suco 3,00
006 Água mineral 2,00
Algoritmos e programação I.indd 82Algoritmos e programação I.indd 82 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
83
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 7.1 î Solução do exemplo 7.1 
Exemplo 7.1 - Calcula o total a ser pago por um cliente em uma lanchonete. 
01 algoritmo exemplo71
02 variáveis
03 codigo, qtde: inteiro 
04 total: real
05 resp: caractere 
06 início
07 total Å 0
08 resp Å "S"
09 enquanto(resp="S")faça
10 início 
11 escrever("Digite o código do produto: ") 
12 ler(codigo)
13 escrever("Digite a quantidade adquirida: ")
14 ler(qtde)
15 escolha(codigo)
16 caso 001: total Å total + (qtde*8.00)
17 caso 002: total Å total + (qtde*6.00)
18 caso 003: total Å total + (qtde*12.00)
19 caso 004: total Å total + (qtde*3.00)
20 caso 005: total Å total + (qtde*3.00)
21 caso 006: total Å total + (qtde*2.00)
22 senão
23 escrever("Código inválido!")
24 fim 
25 escrever("Continuar o registro de produtos? S/N ")
26 ler(resp)
27 fim
28 escrever("Total a pagar = R$",total)
29 fim
Antes de iniciar a solução do algoritmo, é necessário ler com atenção o seu 
enunciado para identificar os dados de entrada e saída e definir como processá-
los para resolver o problema. Neste caso, por exemplo, a partir da descrição 
do problema não é possível saber previamente o número de iterações a serem 
realizadas. Um cliente pode comprar dois itens diferentes (torrada + refrigerante), 
outro cliente pode comprar quatro itens (torrada + refrigerante + xis + suco). Diante 
deste contexto, após cada iteração, o usuário irá informar se deseja continuar o 
registro de produtos ou totalizar a compra. A resposta do usuário é testada na 
condição de interrupção (linha 09), de forma que enquanto sua resposta for S 
(sim), o bloco de instruções (entre as linhas 10 e 27) que permite o registro de 
Algoritmos e programação I.indd 83Algoritmos e programação I.indd 83 7/8/2013 16:01:127/8/2013 16:01:12
Process BlackProcess Black
84
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a uma compra será repetido. Quando o usuário responder N (não), a condição de 
interrupção não será satisfeita e o fluxo de execução continuará a partir da instrução 
imediatamente após o bloco da estrutura ENQUANTO, ou seja, na linha 28, que 
exibirá uma mensagem ao usuário com o valor total a ser pago. 
Considerando que as estruturas de controle de repetição permitirão a criação 
de algoritmos mais complexos, para os quais a necessidade de testes se faz mais 
presente, propõe-se a realização do teste de mesa deste algoritmo, cujo resultado 
pode ser observado no Quadro 7.2. Para simular a execução deste algoritmo foi 
considerada a compra dos seguintes produtos: duas torradas, um xis e três sucos 
- dados de entrada, listados à esquerda no Quadro 7.2. 
Quadro 7.2 – Teste de mesa do exemplo 7.1
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada Teste de mesa Saída 
2 torradas Total a pagar = R$ 33,00
1 xis
3 sucos
A simulação de execução é iniciada na linha 07 (Quadro 7.1), onde a variável 
total é inicializada com 0 (zero), gerando o primeiro registro na tabela do teste 
de mesa (Quadro 7.2). Na sequência (linha 08), a variável resp é inicializada com o 
caractere S. Esta variável irá armazenar a resposta do usuário referente a continuar 
linha
variável
resp cod qtde total
07 0
08 S
12 002
14 2
17 12.00
26 S
12 003
14 1
18 24.00
26 S
12 005
14 3
20 33.00
26 N
Algoritmos e programação I.indd 84Algoritmos e programação I.indd 84 7/8/2013 16:01:137/8/2013 16:01:13
Process BlackProcess Black
85
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aou não o registro de produtos (linha 26) que, consequentemente, será a condição 
de interrupção da estrutura ENQUANTO (linha 09). Entretanto, na primeira 
verificação da condição de interrupção (linha 09), o usuário ainda não respondeu 
se deseja continuar ou não e, por isso, a variável resp está vazia. Para que o bloco 
de instruções da estrutura seja executado, a condição de interrupção da estrutura 
deverá resultar verdadeiro, ou seja, a variável resp deve ser inicializada com S. 
A condição de interrupção da linha 09 (Quadro 7.1) é avaliada e resulta verdadeiro 
porque, neste momento, a variável resp está armazenando S, como pode ser 
observado na segunda linha da tabela do teste de mesa, no Quadro 7.2. Na 
sequência, o usuário irá informar o código do produto escolhido pelo cliente 
(valor lido na linha 12 do Quadro 7.1 e armazenado na variável codigo) e a 
quantidade adquirida (valor lido na linha 14 do Quadro 7.1 e armazenado na 
variável qtde). A estrutura de seleção ESCOLHA é usada para desviar o fluxo 
de execução para o caso 002, que representa a torrada comprada pelo cliente. 
Neste momento, na linha 17 (Quadro 7.1), total m total + (qtde*6.00), 
ou seja, a variável total recebe o que ela já tinha armazenado (zero), mais o valor 
resultante de (qtde*6.00) (ou seja, 2 torradas x 6,00 = 12,00), funcionando 
como um acumulador (as variáveis usadas com a função de acumular valores 
sempre devem ser inicializadas). 
A execução terá continuidade na linha 25 (Quadro 7.1), na instrução imediatamente 
após a estrutura ESCOLHA, quando o usuário será questionado se deseja continuar 
o registro de produtos. Considerando os dados de entrada escolhidos para esta 
simulação, a resposta do usuário deverá ser S pois ainda faltam registrar dois tipos 
de produtos: xis e suco. Esta resposta é lida na linha 26 (Quadro 7.1) e armazenada 
na variável resp, como pode ser observado no primeiro registro da linha 26 na 
tabela do teste de mesa (Quadro 7.2). Encerra-se, portanto, a primeira iteração 
desta simulação. 
Ao encontrar o final do bloco de instruções da estrutura ENQUANTO (linha 
27 ƺ Quadro 7.1), o fluxo de execução retorna para a linha 09, onde sua condição 
de interrupção é testada novamente. Como a variável resp está armazenando S 
neste momento, a condição resultará verdadeiro e, consequentemente, o bloco de 
instruções da estrutura ENQUANTO será executado novamente ƺ nesta segunda 
iteração será registrada a compra do produto de código 003 (xis). Uma terceira 
iteração será executada para registrar a compra do produto de código 005 (suco). 
Depois de registrar os sucos, o usuário deverá responder que não quer continuar 
registrando produtos e a variável resp estará armazenando N, como mostra 
a última linha da tabela do teste de mesa (Quadro 7.2). Logo, a condição de 
interrupção não será satisfeita, ou seja, resp não é mais igual a S. O total a pagar 
(R$ 33,00) é exibido ao usuário através da instrução da linha 28 (Quadro 7.1) e a 
simulação do algoritmo é
encerrada (linha 29 ƺ Quadro 7.1). 
Algoritmos e programação I.indd 85Algoritmos e programação I.indd 85 7/8/2013 16:01:137/8/2013 16:01:13
Process BlackProcess Black
86
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Na sequência, outros exemplos da aplicação da estrutura de controle ENQUANTO 
são apresentados. Serão encontradas, a partir da descrição dos problemas, três 
situações diferentes em relação ao número de iterações a serem executadas: situação 
01, quando o número de iterações é conhecido; situação 02, quando o número 
de iterações não é conhecido, mas a descrição do problema define a condição de 
interrupção; situação 03, quando nem o número de iterações, nem a condição de 
interrupção são conhecidos. 
Na construção de algoritmos não existe “receita de bolo” para resolver um 
problema. Um mesmo problema pode ser resolvido de n formas diferentes e todas 
as soluções estarem igualmente corretas. Entretanto, considerando as três situações 
descritas acima, referentes ao número de iterações e à condição de interrupção 
estarem ou não previamente definidos no enunciado do problema, algumas dicas 
podem auxiliar na resolução dos problemas. Visando contribuir neste sentido, as 
soluções apresentadas a seguir são classificadas conforme as situações descritas e 
as instruções do algoritmo referentes a elas aparecem em negrito. 
Exemplo 7.2 
Descrição do problema: construa um algoritmo que leia 10 valores do tipo inteiro, 
calcule e escreva a média dos valores lidos. 
Este é um exemplo da primeira situação, ou seja, o número de iterações está 
especificado na descrição do problema ƺ o bloco de instruções da estrutura de 
repetição deverá ser executado 10 vezes. Nesta situação, cria-se uma variável 
do tipo contador para controlar o fluxo da estrutura de repetição. Esta variável, 
denominada cont, deverá: (a) ser inicializada no início do algoritmo (cont m 0); 
(b) ser validada na condição de interrupção para que sejam executadas 10 iterações 
(cont <10); (c) para cada valor lido, contar um (cont m cont + 1). Estas 
instruções aparecem em negrito na solução em português estruturado apresentada 
no Quadro 7.3. Na sequência, a Figura 7.1 ilustra esta mesma solução representada 
em fluxograma. 
Algoritmos e programação I.indd 86Algoritmos e programação I.indd 86 7/8/2013 16:01:137/8/2013 16:01:13
Process BlackProcess Black
87
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
SITUAÇÃO 01
N° de iterações determinado.
Quadro 7.3 î Solução do exemplo 7.2
Exemplo 7.1 - Calcula a média de 10 valores lidos. 
01 algoritmo exemplo72
02 variáveis 
03 valor, soma, cont: inteiro
04 media: real 
05 início 
06 cont m 0
07 soma m 0
08 enquanto(cont<10)faça
09 início 
10 escrever(“Digite um valor: “)
11 ler(valor)
12 cont m cont + 1
13 soma m soma + valor
14 fim
15 media m soma / 10
16 escrever(“Média = “, media)
17 fim
Figura 7.1 î Solução do exemplo 7.2 representada em fluxograma
Algoritmos e programação I.indd 87Algoritmos e programação I.indd 87 7/8/2013 16:01:137/8/2013 16:01:13
Process BlackProcess Black
88
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a A Situação 02, em que o número de iterações não é conhecido mas a descrição do 
problema define a condição de interrupção, pode ser observada no Quadro 7.4. 
Neste exemplo, a entrada de dados deverá ser encerrada quando o usuário digitar 
0 (zero). Portanto, a condição de interrupção irá testar a variável de entrada. A 
variável valor é lida no início do algoritmo (linha 09 ƺ Quadro 7.4) e avaliada na 
condição da linha 10 ƺ Quadro 7.4. Se a condição resultar verdadeiro, o bloco de 
instruções da estrutura ENQUANTO será executado. Este bloco possui um contador 
e um acumulador (linhas 12 e 13 ƺ Quadro 7.4), que serão usados para calcular a 
média no final do algoritmo (linha 17 ƺ Quadro 7.4), além da instrução primitiva 
de entrada (linha 15 ƺ Quadro 7.4) que irá ler um valor para cada nova iteração. 
 Exemplo 7.3
Descrição do problema: construa um algoritmo que leia vários valores do tipo 
inteiro (0 encerra a entrada de dados), calcule e escreva a média dos valores 
lidos. 
Quadro 7.4 î Solução do exemplo 7.3
Exemplo 7.3 - Calcula a média de vários valores lidos. 
01 algoritmo exemplo73
02 variáveis 
03 valor, soma, cont: inteiro
04 media: real 
05 início 
06 cont m 0
07 soma m 0
08 escrever("Digite um valor: ")
09 ler(valor)
10 enquanto(valor<>0)faça
11 início 
12 cont m cont + 1
13 soma m soma + valor
14 escrever("Digite um valor: ")
15 ler(valor)
16 fim
17 media m soma / cont
18 escrever("Média = ", media)
19 fim
SITUAÇÃO 02
N° de iterações determinado, com 
condição de interrupção definida.
Algoritmos e programação I.indd 88Algoritmos e programação I.indd 88 7/8/2013 16:01:147/8/2013 16:01:14
Process BlackProcess Black
89
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aO Quadro 7.5 ilustra a Situação 03, quando nem o número de iterações, nem a 
condição de interrupção, são conhecidos. Como foi visto no exemplo 7.1, nestes 
casos, é necessário criar uma variável auxiliar para controlar o fluxo de execução 
ƺ nos exemplos deste capítulo usou-se a variável resp para tal função.
Exemplo 7.4
Descrição do problema: construa um algoritmo que leia vários valores do tipo 
inteiro, calcule e escreva a média dos valores lidos. 
Quadro 7.5 î Solução do exemplo 7.4
Exemplo 7.4 - Calcula a média de vários valores lidos. 
01 algoritmo exemplo74
02 variáveis 
03 valor, soma, cont: inteiro
04 media: real 
05 resp: caractere 
06 início 
07 cont m 0
08 soma m 0
09 resp m "S"
10 enquanto(resp="S")faça
11 início 
12 escrever("Digite um valor: ")
13 ler(valor)
14 cont m cont + 1
15 soma m soma + valor
16 escrever("Continuar? S/N ")
17 ler(resp)
18 fim
19 media m soma / cont
20 escrever("Média = ", media)
21 fim
SITUAÇÃO 03
N° de iterações indeterminado, sem 
condição de interrupção definida.
Algoritmos e programação I.indd 89Algoritmos e programação I.indd 89 7/8/2013 16:01:147/8/2013 16:01:14
Process BlackProcess Black
90
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Exemplo 7.5 
Descrição do problema: construa um algoritmo que leia 10 valores do tipo inteiro 
e verifique quantos são múltiplos de três. 
Quadro 7.6 î Solução do exemplo 7.5
Exemplo 7.5 - Verifica quantos valores são múltiplos de três. 
01 algoritmo exemplo75
02 variáveis 
03 valor, cont, mult: inteiro 
04 início 
05 cont m 0
06 mult m 0
07 enquanto(cont<10)faça
08 início 
09 cont m cont + 1
10 escrever("Digite o ",cont,"° valor: ")
11 ler(valor)
12 Se(valor mod 3 = 0) então
13 mult m mult + 1
14 fim
15 escrever(mult, " valores são múltiplos de 3.")
16 fim
Exemplo 7.6
Descrição do problema: escreva um algoritmo que leia um número não 
determinado de valores (qualquer valor negativo encerra a entrada de dados), 
encontre e escreva o menor entre eles. 
Quadro 7.7 î Solução do exemplo 7.6
Exemplo 7.6 - Encontra o menor entre os valores digitados pelo usuário. 
01 algoritmo exemplo76
02 variáveis 
03 valor, menor: real 
04 início 
05 escrever("Digite um valor: ")
06 ler(valor)
07 menor m valor
08 enquanto(valor>=0)faça
09 início 
10 se(valor<menor)então
11 menor m valor
12 escrever("Digite um valor: ")
13 ler(valor)
14 fim
15 escrever("Menor valor = ", menor)
16
fim
SITUAÇÃO 01
N° de iterações determinado.
SITUAÇÃO 02
N° de iterações indeterminado, com 
condição de interrupção definida.
Algoritmos e programação I.indd 90Algoritmos e programação I.indd 90 7/8/2013 16:01:147/8/2013 16:01:14
Process BlackProcess Black
91
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo 7.7
Descrição do problema: uma empresa deseja aumentar o preço de seus produtos 
em 20%. Faça um algoritmo que leia o código e o preço atual de cada produto 
da empresa, calcule e escreva o preço novo; calcule e escreva a média dos preços 
com o aumento. 
Quadro 7.8 î Solução do exemplo 7.7
Exemplo 7.7 - Calcula o preço novo dos produtos e a média destes valores. 
01 algoritmo exemplo77
02 variáveis 
03 cod, cont: inteiro
04 preco,preconovo,soma,media:real 
05 resp: caractere 
06 início 
07 cont m 0
08 soma m 0
09 resp m "S"
10 enquanto(resp="S")faça
11 início 
12 escrever("Digite o código e o preço atual: ")
13 ler(cod, preco)
14 preconovo m preco * 1.2
15 escrever("Preço com 20% de aumento = R$ ",preconovo)
16 soma m soma + preconovo
17 cont m cont + 1
18 escrever("Continuar? S/N ")
19 ler(resp)
20 fim
21 media m soma / cont
22 escrever("Média dos preços com aumento = ", media)
23 fim
Exemplo 7.8
Descrição do problema: escreva um algoritmo para calcular a média final de cada 
um dos alunos de uma turma de Algoritmos, considerando 03 notas: trabalho A 
com peso 3, trabalho B com peso 2 e a prova com peso 5. Além disso, é importante 
saber a média geral da turma. 
SITUAÇÃO 03
N° de iterações indeterminado, sem 
condição de interrupção definida.
Algoritmos e programação I.indd 91Algoritmos e programação I.indd 91 7/8/2013 16:01:147/8/2013 16:01:14
Process BlackProcess Black
92
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 7.9 î Solução do exemplo 7.8
Exemplo 7.8 - Calcula a nota final dos alunos de uma turma e a média geral da turma. 
01 algoritmo exemplo78
02 variáveis 
03 cont: inteiro
04 n1, n2, n3, soma, media: real 
05 resp: caractere 
06 início 
07 cont m 0
08 soma m 0
09 resp m "S"
10 enquanto(resp="S")faça
11 início 
12 escrever("Digite as três notas do aluno: ")
13 ler(n1, n2, n3)
14 media m (n1*3 + n2*2 + n3*5)/10
15 escrever("Média do aluno = ",media)
16 soma m soma + media
17 cont m cont + 1
18 escrever("Continuar? S/N ")
19 ler(resp)
20 fim
21 media m soma / cont
22 escrever("Média geral da turma = ", media)
23 fim
Exemplo 7.9
Descrição do problema: Chico tem 1,5m e cresce 2cm por ano, enquanto Zé tem 
1,1m e cresce 3cm ao ano. Construa um algoritmo que calcule e mostre quantos 
anos serão necessários para que Zé seja maior que Chico. 
SITUAÇÃO 03
N° de iterações indeterminado, sem 
condição de interrupção definida.
Algoritmos e programação I.indd 92Algoritmos e programação I.indd 92 7/8/2013 16:01:147/8/2013 16:01:14
Process BlackProcess Black
93
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 7.10 î Solução do exemplo 7.9
Exemplo 7.9 - Calcula quantos anos são necessários para que Zé seja maior que 
Chico. 
01 algoritmo exemplo79
02 variáveis 
03 cont: inteiro
04 chico, ze: real 
06 início 
07 cont m 0
08 chico m 1.5
08 ze m 1.1
10 enquanto(ze<chico)faça
11 início 
12 chico m chico + 0.02
13 ze m ze + 0.03
14 cont m cont + 1
20 fim
22 escrever("São necessários", cont," anos para Zé > Chico.")
23 fim
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Algoritmos e programação I.indd 93Algoritmos e programação I.indd 93 7/8/2013 16:01:157/8/2013 16:01:15
Process BlackProcess Black
94
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Atividades 
Parte I - Questões objetivas 
1) O algoritmo a seguir imprime os números pares entre 1 e 20.
( ) Certo 
( ) Errado 
algoritmo exerc1
variáveis 
 i,x,y: inteiro
início
 i m 10 x m 20 y m 1
 se(i>=y)então
 início 
 i m y 
 y m x
 fim
 enquanto(i<y)faça
 início
 i m i + 1
 escrever(i)
 i m i + 1
 fim
fim
2) Simulando a execução do algoritmo a seguir, 
algoritmo exerc2
variáveis 
 a: inteiro
início
 ler(a)
 enquanto(a<=100)faça
 início
 se(a > -10)então
 escrever(a)
 ler(a)
 fim
fim
Algoritmos e programação I.indd 94Algoritmos e programação I.indd 94 7/8/2013 16:01:157/8/2013 16:01:15
Process BlackProcess Black
95
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a tendo como dados de entrada 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14, 
114, 13, quantos números serão impressos? 
(a) 8;
(b) 9;
(c) 7;
(d) 15;
(e) 6.
3) Qual a saída do algoritmo a seguir, se as entradas forem 1 e 9 e, depois, 5 e 3? 
algoritmo exerc3
variáveis 
 i,v1,v2: inteiro
início
 ler(v1,v2)
 se(v1>v2)então
 escrever(“O primeiro valor deve ser menor que o 
segundo.”)
 senão 
 início
 i m v1
 enquanto(i<=v2)faça
 início
 se(i mod 2 <> 0)então
 escrever(i,”, “)
 i m i + 1
 fim
 fim
fim
Algoritmos e programação I.indd 95Algoritmos e programação I.indd 95 7/8/2013 16:01:157/8/2013 16:01:15
Process BlackProcess Black
96
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a (a) 1, 3, 5, 7, 9,
 O primeiro valor deve ser menor que o segundo.
 (b) 1, 3, 5, 7, 9
 O primeiro valor deve ser menor que o segundo.
 (c) 1, 3, 5, 7, 9,
 3, 5 
 (d) 2, 4, 6, 8,
 O primeiro valor deve ser menor que o segundo. 
 (e) 1, 3, 5, 7, 9,
 4,
4) Quantos valores serão lidos no algoritmo a seguir?
algoritmo exerc4
variáveis 
 valor: inteiro
início
 valor m 0
 enquanto(valor<>0)faça
 início
 escrever(“Digite um valor inteiro: “)
 ler(valor)
 fim
fim
 (a) Tantos quantos forem digitados.
 (b) Tantos quantos forem digitados, até ser digitado 0 (zero).
 (c) Tantos quantos forem digitados, até ser digitado um valor negativo.
 (d) Tantos quantos forem digitados, até ser digitado um valor que não é 
inteiro. 
 (e) Nenhum.
Algoritmos e programação I.indd 96Algoritmos e programação I.indd 96 7/8/2013 16:01:157/8/2013 16:01:15
Process BlackProcess Black
97
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a5) Considerando que X e Y são números inteiros positivos, assinale a alternativa 
CORRETA que descreve a tarefa executada pelo algoritmo abaixo. 
algoritmo exerc5
variáveis 
x,y,z,w: inteiro
início
escrever(“Digite os valores de x e y: “)
ler(x,y)
z m�1
enquanto(z*y<=x)faça
z m�z+1
z m�z-1
w m�x-z*y
escrever(z,w)
fim
 (a) Exibe, respectivamente, o quociente e o resto da variável x pela variável y.
 (b) Exibe, respectivamente, os dois primeiros números primos menores
que x e y.
 (c) Exibe, respectivamente, o resto e o quociente da variável x pela variável y.
 (d) Exibe, respectivamente, o valor correspondente às variáveis y e x. 
 (e) Exibe, respectivamente, o valor correspondente às variáveis x e y.
Parte II - Resolução de problemas
 Para cada um dos exercícios a seguir, construa o algoritmo com a solução 
para o problema e realize o teste-de-mesa para assegurar que a resposta esteja 
correta.
(1) Escreva um algoritmo que leia vários valores, conte e informe quantos 
são positivos e quantos são negativos. A entrada de dados deve encerrar 
quando o usuário digitar 0 (zero). 
(2) Escreva um algoritmo que leia 20 valores, encontre e escreva o maior 
entre eles. 
Algoritmos e programação I.indd 97Algoritmos e programação I.indd 97 7/8/2013 16:01:157/8/2013 16:01:15
Process BlackProcess Black
98
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a (3) Escreva um algoritmo que calcule a média dos números pares digitados 
pelo usuário. A entrada de dados deve encerrar quando o usuário 
digitar um valor menor ou igual a 0 (zero).
(4) Faça um algoritmo que lei um valor inteiro e positivo, calcule e escreva 
o seu fatorial. 
 Exemplos: !4 = 1 x 2 x 3 x 4 = 24 
 !5 = 1 x 2 x 3 x 4 x 5 = 120 
 Por defi nição, !0 = 1
(5) Em uma eleição presidencial existem 4 candidatos. Os votos são 
informados através de códigos, que obedecem a seguinte regra: 1, 2, 3, 
4 = voto para os respectivos candidatos; 5 = voto nulo; 6 = voto branco. 
Elabore um algoritmo que leia o voto de cada um dos eleitores, calcule 
e escreva: total de votos para cada candidato; total de votos nulos; total 
de votos em branco. Como fi nalizador do conjunto de dados tem-se o 
valor 0 (zero).
Respostas dos exercícios da Parte I
 1 - Certo
 2 - a
 3 - a
 4 - e
 5 - a
Algoritmos e programação I.indd 98Algoritmos e programação I.indd 98 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
8 ESTRUTURA DE CONTROLE DE REPETIÇÃO: REPITA
Vanessa Lindemann
Ao contrário da estrutura ENQUANTO, estudada no capítulo anterior, a condição 
de interrupção da estrutura REPITA é verificada no final de cada iteração, como 
pode ser observado na sua sintaxe, apresentada a seguir. 
 repita
 <instrução ou bloco de instruções>
 até(<condição>)
Uma ou mais instruções serão executadas repetidamente até que sua condição 
resulte verdadeiro. Como a condição só é avaliada no final de cada iteração, a 
instrução ou bloco de instruções a ser repetido será executado pelo menos uma vez, 
independente do valor inicial da condição de interrupção. Depois de cada iteração, 
se o resultado da condição for falso, o fluxo de execução retorna para o início da 
estrutura REPITA. Este processo é repetido até que a condição de interrupção resulte 
verdadeiro. Neste caso, o fluxo de execução do algoritmo continuará a partir da 
instrução imediatamente após à estrutura REPITA. 
Como a estrutura de repetição REPITA é delimitada pela diretiva ATÉ, as diretivas 
de início e fim não são utilizadas para delimitar seu bloco de instruções como nas 
estruturas estudadas nos capítulos anteriores. 
Para exemplificar a aplicação da estrutura REPITA, são apresentados na sequência 
seis exemplos. Os três primeiros têm o mesmo objetivo, calcular e escrever o 
percentual de valores negativos digitados pelo usuário. Entretanto, cada um 
representa uma situação diferente em relação ao número de iterações ou à condição 
de interrupção ser ou não previamente conhecido. 
Algoritmos e programação I.indd 99Algoritmos e programação I.indd 99 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
100
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a No exemplo 8.1, a descrição do problema indica que deverão ser lidos 25 valores, 
ou seja, o número de iterações é previamente conhecido ƺ cenário denominado 
Situação 01. No exemplo 8.2, não é possível prever quantos valores serão digitados, 
mas a condição de interrupção está definida (o valor zero deverá encerrar a entrada 
de dados) ƺ cenário denominado Situação 02. Por fim, a descrição do problema do 
exemplo 8.3 não contempla nenhuma destas informações, ou seja, não é possível 
prever o número de iterações necessárias, nem a condição para encerrar o laço de 
repetição ƺ cenário denominado Situação 03. 
Como no capítulo anterior, os problemas são classificados em uma destas situações 
e as instruções referentes a como prover o fluxo de repetição em tal situação 
aparecem em negrito.
Exemplo 8.1 
Descrição do problema: construa um algoritmo que leia 25 valores, calcule e escreva 
o percentual de valores negativos. 
Quadro 8.1 î Solução do exemplo 8.1
Exemplo 8.1 - Calcula o percentual de valores negativos. 
01 algoritmo exemplo81
02 variáveis 
03 cont, negativo: inteiro
04 valor, perc: real 
05 início 
06 cont m 0
07 negativo m 0
08 repita 
09 escrever("Digite um valor: ")
10 ler(valor)
11 cont m cont + 1
12 se(valor < 0)então
13 negativo m negativo + 1
14 até(cont=25)
15 perc m (negativo*100)/25
16 escrever("% de negativos = ",perc)
17 fim
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 100Algoritmos e programação I.indd 100 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
101
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo 8.2
Descrição do problema: construa um algoritmo que leia vários valores do tipo 
inteiro (0 encerra a entrada de dados), calcule e escreva o percentual de valores 
negativos. 
Quadro 8.2 î Solução do exemplo 8.2
Exemplo 8.2 - Calcula o percentual de valores negativos.
01 algoritmo exemplo82
02 variáveis 
03 cont, negativo: inteiro
04 valor, perc: real 
05 início 
06 cont m 0
07 negativo m 0
08 repita 
09 escrever("Digite um valor: ")
10 ler(valor)
11 cont m cont + 1
12 se(valor < 0)então
13 negativo m negativo + 1
14 até(valor=0)
15 perc m (negativo*100)/cont
16 escrever("% de negativos = ",perc)
17 fim
SITUAÇÃO 02
N° de iterações indeterminado, com 
condição de interrupção definida.
Algoritmos e programação I.indd 101Algoritmos e programação I.indd 101 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
102
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Exemplo 8.3
Descrição do problema: construa um algoritmo que leia vários valores do tipo 
inteiro, calcule e escreva o percentual de valores negativos. 
Quadro 8.3 î Solução do exemplo 8.3
Exemplo 8.3 - Calcula o percentual de valores negativos.
01 algoritmo exemplo83
02 variáveis 
03 cont, negativo: inteiro
04 valor, perc: real 
05 resp: caractere
06 início 
07 cont m 0
08 negativo m 0
09 repita 
10 escrever("Digite um valor: ")
11 ler(valor)
12 cont m cont + 1
13 se(valor < 0)então
14 negativo m negativo + 1
15 escrever("Continuar? S/N ")
16 ler(resp)
17 até(resp="N")
18 perc m (negativo*100)/cont
19 escrever("% de negativos = ",perc)
20 fim
SITUAÇÃO 03
N° de iterações indeterminado, sem 
condição de interrupção definida.
Algoritmos e programação I.indd 102Algoritmos e programação I.indd 102 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
103
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo 8.4 
Descrição do problema: uma pesquisa realizada em um clube coletou informações 
sobre as características físicas de 40 atletas, quais sejam: gênero (F- feminino, M - 
masculino), idade, peso e altura. Escreva um algoritmo para identificar: a maior
idade entre os atletas; a porcentagem de mulheres e de homens; o nº de homens 
com menos de 1,70m; o peso médio das mulheres. 
Quadro 8.4 î Solução do exemplo 8.4
Exemplo 8.4 - Pesquisa sobre as características físicas de atletas. 
01 algoritmo exemplo84
02 variáveis 
03 genero: caractere 
04 peso, altura, soma, media: real 
05 cont, idade, maior, fem, masc, alt: inteiro
06 início 
07 cont m 0 
08 maior m 0 fem m 0 masc m 0 soma m 0 alt m 0
09 repita 
10 escrever("Digite gênero, idade, peso e altura: ")
11 ler(genero, idade, peso, altura)
12 se(idade>maior)então
13 maior m idade
14 se(genero="F")então
15 início 
16 fem m fem + 1
17 soma m soma + peso
18 fim 
19 senão
20 se(genero="M")então
21 início 
22 masc m masc + 1
23 se(altura<1.70)então
24 alt m alt + 1
25 fim 
26 cont m cont + 1
27 até(cont=40)
28 fem m (fem*100)/40
29 masc m (masc*100)/40
30 media m soma/fem
31 escrever("Maior idade = ", maior)
32 escrever(fem,"% são mulheres e ", masc, "% homens")
33 escrever("Peso médio das mulheres = ", media)
34 escrever(alt, " homens medem menos que 1,70m")
35 fim
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 103Algoritmos e programação I.indd 103 7/8/2013 16:01:167/8/2013 16:01:16
Process BlackProcess Black
104
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Exemplo 8.5
Descrição do problema: construa um algoritmo que repita a leitura de uma senha 
até que ela seja válida. Para cada senha incorreta escrever a mensagem “SENHA 
INVÁLIDA”. Quando a senha for informada corretamente deve ser impressa a 
mensagem “ACESSO PERMITIDO” e o algoritmo encerrado. Considere que a 
senha correta é a76dk09. 
Quadro 8.5 î Solução do exemplo 8.5
Exemplo 8.5 - Valida senha.
01 algoritmo exemplo85
02 variáveis 
03 senha: cadeia
05 início 
08 repita 
09 escrever("Digite a senha: ")
10 ler(senha)
12 se(senha<>"a76dk09")então
13 escrever("Senha inválida")
14 até(senha="a76dk09")
16 escrever("Acesso permitido")
17 fim
SITUAÇÃO 02
N° de iterações indeterminado, com 
condição de interrupção definida.
Algoritmos e programação I.indd 104Algoritmos e programação I.indd 104 7/8/2013 16:01:177/8/2013 16:01:17
Process BlackProcess Black
105
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo 8.6
Descrição do problema: realizou-se uma pesquisa com professores de uma 
universidade. Foram coletados os seguintes dados de cada professor: idade, tempo 
de serviço na universidade (em anos) e quantidade de disciplinas que ministra. 
Faça um programa que, a partir desses dados, calcule e informe: o percentual de 
professores com idade entre 30 e 50 anos, a quantidade de professores com mais 
de 10 anos de serviço e a média de disciplinas ministrada por professor. 
Quadro 8.6 î Solução do exemplo 8.6
Exemplo 8.6 - Pesquisa com professores de uma universidade.
01 algoritmo exemplo86
02 variáveis 
03 resp: caractere 
04 perc, media: real 
05 idade, ts, disc, qtde, cont, soma: inteiro
06 início 
07 perc m 0 qtde m 0 soma m 0 cont m 0 
08 repita 
09 escrever("Digite idade: ")
10 ler(idade)
11 escrever("Digite tempo de serviço: ")
12 ler(ts)
13 escrever("Digite qtde de disciplinas que ministra: ")
14 ler(disc)
15 se(idade>=30)e(idade<=50)então
16 perc m perc + 1
17 se(ts>10)então
18 qtde m qtde + 1
19 soma m soma + disc
20 cont m cont + 1
21 escrever("Continuar? S/N ")
22 ler(resp)
23 até(resp="N")
24 perc m (perc*100)/cont
25 media m soma/cont
26 escrever(perc,"% dos professores têm entre 30 e 50 anos")
27 escrever(qtde," prof. com tempo de serviço superior a 10")
28 escrever("Média de disciplinas por professor = , media")
29 fim
SITUAÇÃO 03
N° de iterações indeterminado, sem 
condição de interrupção definida.
Algoritmos e programação I.indd 105Algoritmos e programação I.indd 105 7/8/2013 16:01:177/8/2013 16:01:17
Process BlackProcess Black
106
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
Atividades 
Parte I - Questões objetivas 
1) O algoritmo a seguir imprime a sequência de pares entre 1 e 100.
( ) Certo 
( ) Errado 
algoritmo exerc1
variáveis 
 n: inteiro
início
 n m 1 
 repita 
 escrever(i)
 i m i + 2
 até(i=100)
fim
2) Simulando a execução do algoritmo a seguir, 
algoritmo exerc2
variáveis 
 a: inteiro
início
 repita
 ler(a)
 se(a > -10)então
 escrever(a)
 até(a>100)
fim
Algoritmos e programação I.indd 106Algoritmos e programação I.indd 106 7/8/2013 16:01:177/8/2013 16:01:17
Process BlackProcess Black
107
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a tendo como dados de entrada 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14, 
114, 13, quantos números serão impressos? 
(a) 8
(b) 9
(c) 7
(d) 15 
(e) 6
3) O algoritmo a seguir tem como objetivo calcular a média dos valores lidos. 
Entretanto, isto não acontece corretamente devido a um erro. 
01 algoritmo exerc3
02 variáveis 
03 n,s,m: real
04 i: inteiro
05 início
06 s m 0
07 i m 0
08 repita 
09 ler(n)
10 s m s + n
11 i m i + 1
12 até(i=10)
13 m m s/2
14 escrever(m)
15 fim
 O erro está na linha:
(a) 3
(b) 10
(c) 13
(d) 9 
(e) 12
Algoritmos e programação I.indd 107Algoritmos e programação I.indd 107 7/8/2013 16:01:177/8/2013 16:01:17
Process BlackProcess Black
108
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 4) Quantos valores serão lidos no algoritmo a seguir?
algoritmo exerc4
variáveis 
 valor: inteiro
início
 valor m 0
 repita
 escrever(“Digite um valor inteiro: “)
 ler(valor)
 até(valor=0)
fim
 (a) Tantos quantos forem digitados.
 (b) Tantos quantos forem digitados, até ser digitado 0 (zero).
 (c) Tantos quantos forem digitados, até ser digitado um valor negativo.
 (d) Tantos quantos forem digitados, até ser digitado um valor que não é 
inteiro. 
 (e) Nenhum.
5) Assinale a assertiva INCORRETA.
(a) Estruturas de repetição são necessárias para repetir uma instrução (ou 
bloco de instruções), que represente um comportamento padrão, várias 
vezes.
(b) Utilizando a estrutura de repetição REPITA, escreve-se uma instrução 
uma única vez e ela pode ser executada várias vezes.
(c) Na estrutura REPITA o fluxo de repetição é controlado por um 
contador.
(d) É imprescindível que haja uma instrução dentro do bloco de instruções 
da estrutura REPITA que permita alterar o valor lógico da condição. 
(e) A diferença entre as estruturas
ENQUANTO e REPITA é que na segunda 
as instruções são executadas no mínimo uma vez porque sua condição 
só é verifi cada ao fi nal de cada iteração.
Algoritmos e programação I.indd 108Algoritmos e programação I.indd 108 7/8/2013 16:01:177/8/2013 16:01:17
Process BlackProcess Black
109
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aParte II - Resolução de problemas
 Para cada um dos exercícios a seguir, construa o algoritmo com a solução 
para o problema e realize o teste de mesa para assegurar que a resposta esteja 
correta. 
(1) Escreva um algoritmo que leia uma série não determinada de dois 
valores. O primeiro valor é um código que signifi ca: (1) débito, (2) 
crédito e (0) fi m. O segundo valor é uma quantia numérica real. O 
programa deve calcular o total de débito e crédito e, ao fi nal, mostrar 
o saldo (crédito – débito). 
(2) Durante uma pesquisa realizada entre os habitantes de uma região, 
foram coletados os seguintes dados: idade, gênero e salário. Faça um 
algoritmo que calcule e informe: a média salarial do grupo; a maior 
idade do grupo; quantidade de mulheres com salário superior a R$ 
5.000,00.
(3) Um hotel cobra R$ 360,00 a diária e mais uma taxa de serviços. A taxa 
é de: R$ 5,50 por diária, se o número de diárias for maior que 15; R$ 
6,00 por diária, se o número de diárias for igual a 15; R$ 8,00 por diária, 
se o número de diárias for menor que 15. Construa um algoritmo que 
imprima o nome e a conta (total das diárias, total da taxa e total a pagar) 
de cada um dos clientes com reserva no hotel.
(4) Em um laboratório, usam-se dois tipos de cobaias: ratos e coelhos. O 
código para ratos é 1, e para coelhos é 2. Foram feitas 30 experiências 
que usaram essas cobaias. Faça um algoritmo que leia, para cada uma 
das experiências, o código e a quantidade de cobaias utilizadas. Deseja-
se saber: o total de cobaias utilizadas e o percentual de cada tipo de 
cobaia. 
(5) Elabore um algoritmo que repita a leitura de uma data até que ela 
seja válida. Para cada data incorreta escrever a mensagem “DATA 
INVÁLIDA”. Quando a data for informada corretamente deve ser 
impressa a mensagem “ACESSO DATA VÁLIDA” e o algoritmo 
encerrado. Para resolver este problema, use três variáveis para 
representar a data: dia, mês e ano; não esqueça de considerar ano 
bissexto, quando o mês de fevereiro tem 29 dias.
 
Algoritmos e programação I.indd 109Algoritmos e programação I.indd 109 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
110
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Respostas dos exercícios da Parte I
 1 - Errado
 2 - b
 3 - c
 4 - b
 5 - c
Algoritmos e programação I.indd 110Algoritmos e programação I.indd 110 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
9 ESTRUTURA DE CONTROLE DE REPETIÇÃO: PARA
Vanessa Lindemann
A estrutura de repetição PARA, diferente das outras duas já estudadas, é controlada 
por uma variável de controle, como pode ser observado na sintaxe apresentada 
a seguir. 
 para <v> de <vi> até <vf> passo <p> faça
 <instrução ou bloco de instruções>
Onde:
• v representa a variável de controle;
• vi indica o valor inicial da variável de controle;
• vf indica o valor fi nal da variável de controle;
• p defi ne o incremento ou decremento da variável de controle.
A variável de controle assumirá, a cada iteração, um dos valores da faixa que inicia 
com o valor vi e encerra no valor vf. O p corresponde ao incremento ou decremento 
dado à variável de controle. O padrão é incrementar 1 a cada iteração, caso em que 
a diretiva passo p pode ser omitida. 
Nos capítulos anteriores, foram identificados três cenários onde são utilizadas as 
estruturas de repetição: Situação 01, quando o número de iterações é previamente 
conhecido; Situação 02, quando o número de iterações é indeterminado, mas tem-
se uma condição de interrupção definida; Situação 03, quando nem o número de 
iterações, nem a condição de interrupção são previamente conhecidos - caso em 
que é necessário usar uma variável auxiliar na condição de parada do laço de 
repetição. Em português estruturado, a estrutura PARA só pode ser usada para 
Algoritmos e programação I.indd 111Algoritmos e programação I.indd 111 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
112
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a resolver problemas em que o número de iterações é conhecido, ou seja, na Situação 
01. Algumas linguagens de programação, entretanto, possibilitam a implementação 
das outras situações.
Na Situação 01, o processo de repetição é denominado “laço contado” e, como 
foi visto nos capítulos anteriores, este pode ser resolvido utilizando as estruturas 
ENQUANTO e REPITA. Para isso, utiliza-se uma variável do tipo contador, que 
tem seu conteúdo alterado a cada iteração como ilustram os trechos de algoritmos 
apresentados no Quadro 9.1. 
Quadro 9.1 î Laço contado utilizando ENQUANTO e REPITA
ENQUANTO REPITA
01 cont m 0
02 enquanto(cont<25)faça
03 início
04 <demais instruções>
05 cont m cont + 1
06 fim
01 cont m 0
02 repita 
03 <demais instruções>
04 cont m� cont + 1
05 até(cont=25)
Como pode ser observado, nos dois exemplos do Quadro 9.1 a variável cont 
é inicializada (linha 01), incrementada (linha 05 no exemplo com a estrutura 
ENQUANTO e linha 04 com a estrutura REPITA) e testada para controlar o final 
do laço de repetição (linha 02 na estrutura ENQUANTO, linha 05 na estrutura 
REPITA). A estrutura PARA é a mais adequada para esta situação, pois há uma 
economia de instruções, a própria estrutura se encarrega de inicializar, incrementar 
e encerrar a variável de controle, como ilustra o Quadro 9.2. Estes três processos 
ocorrem na linha 01. 
Quadro 9.2 î Laço contado utilizando PARA
PARA
01 para cont de 1 até 25 faça
02 início
03 <instruções>
04 fim
O valor inicial da variável de controle é definido como 1; em seguida, verifica-
se se a condição de interrupção foi atingida (ou seja, se a variável de controle já 
chegou ao seu limite final que, neste caso, é 25): se a condição de interrupção foi 
Algoritmos e programação I.indd 112Algoritmos e programação I.indd 112 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
113
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aatingida, a repetição se encerra e o algoritmo continuará sua execução na instrução 
imediatamente seguinte à estrutura PARA; se a condição de interrupção não foi 
atingida, o bloco de instruções da estrutura será executado e a variável de controle 
é incrementada. Este processo será repetido até que a variável de controle atinja o 
valor definido como limite final (25). 
Para exemplificar a aplicação da estrutura de repetição PARA, os quadros a 
seguir apresentam a solução de cinco problemas que utilizam esta estrutura na 
sua solução. 
Exemplo 9.1 
Descrição do problema: construa um algoritmo que leia 10 valores, um de cada 
vez, conte e escreva quantos estão no intervalo [10,20] e quantos estão fora deste 
intervalo. 
Quadro 9.3 î Solução do exemplo 9.1
Exemplo 9.1 - Verifica quantos valores pertencem a um intervalo. 
01 algoritmo exemplo91
02 variáveis 
03 valor, cont, dentro, fora: inteiro
04 início 
05 dentro m 0 fora m 0
06 para cont de 1 até 10 faça 
07 início 
08 escrever("Digite um valor: ")
09 ler(valor)
10 se(valor>=10)e(valor<=20)então
11 dentro m dentro + 1
12 senão
13 fora m fora + 1
14 fim 
15 escrever(dentro, " números dentro do intervalo")
16 escrever(fora, " números fora do intervalo")
17 fim
Exemplo 9.2 
Descrição do problema:
construa um algoritmo que escreva os números pares 
entre 1 e 100. 
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 113Algoritmos e programação I.indd 113 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
114
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 9.4 î Solução do exemplo 9.2
Exemplo 9.2 - Soma os número ímpares de um intervalo. 
01 algoritmo exemplo92
02 variáveis 
03 cont: inteiro
04 início 
05 para cont de 2 até 100 passo 2 faça 
06 escrever(cont)
07 fim
Exemplo 9.3 
Descrição do problema: construa um algoritmo que escreva a soma dos números 
ímpares entre dois valores quaisquer informados pelo usuário. 
Quadro 9.5 î Solução do exemplo 9.3
Exemplo 9.3 - Soma os número ímpares de um intervalo. 
01 algoritmo exemplo93
02 variáveis 
03 cont, vi, vf, soma: inteiro
04 início 
05 soma m 0 
06 escrever("Digite o valor inicial: ")
07 ler(vi) 
08 escrever("Digite o valor final: ")
09 ler(vf) 
10 para cont de vi até vf faça 
11 início 
12 se(cont mod 2 = 1)então
13 soma m soma + cont
14 fim 
15 escrever("Soma dos ímpares do intervalo = ", soma)
16 fim
Exemplo 9.4 
Descrição do problema: construa um algoritmo que leia um valor inteiro, entre 1 
e 10, e escreva a sua tabuada. 
SITUAÇÃO 01
N° de iterações determinado.
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 114Algoritmos e programação I.indd 114 7/8/2013 16:01:187/8/2013 16:01:18
Process BlackProcess Black
115
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aExemplo: 5
 1 x 5 = 5
 2 x 5 = 10
 3 x 5 = 15
 4 x 5 = 20
 5 x 5 = 25
 6 x 5 = 30
 ...
 10 x 5 = 50
Quadro 9.6 î Solução do exemplo 9.4
Exemplo 9.4 - Escreve a tabuada de um valor. 
01 algoritmo exemplo94
02 variáveis 
03 valor, cont: inteiro
04 início 
05 escrever("Digite um valor inteiro entre 1 e 10: ")
06 ler(valor)
07 se(valor>=1)e(valor<=10)então 
08 para cont de 1 até 10 faça 
09 escrever(cont,"x",valor,"=",cont*valor)
10 senão
11 escrever("Valor inválido. Digite valore entre 1 e 10.") 
12 fim
Exemplo 9.5 
Descrição do problema: em uma pesquisa realizada com 1000 habitantes de 
uma região, foram coletados os seguintes dados: idade, gênero e salário. Faça 
um algoritmo que calcule e informe: a idade média do grupo, o percentual de 
mulheres e de homens e, também, a quantidade de pessoas com salário superior 
a R$ 5.000,00. 
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 115Algoritmos e programação I.indd 115 7/8/2013 16:01:197/8/2013 16:01:19
Process BlackProcess Black
116
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 9.7 î Solução do exemplo 9.5
Exemplo 9.5 - Soma os número ímpares de um intervalo. 
01 algoritmo exemplo95
02 variáveis 
03 cont, idade, soma, pessoa: inteiro
04 salario, media, fem, masc: real
05 genero: caractere
06 início 
07 soma m 0 fem m 0 masc m 0 pessoa m 0 
08 para cont de 1 até 1000 faça 
09 início 
10 escrever("Digite idade, gênero (M ou F) e salário: ")
11 ler(idade, genero, salario) 
12 soma m soma + idade
13 se(genero="F")então
14 fem m fem + 1
15 senão
16 se(genero="M")então
17 masc m masc + 1
18 se(salario>5000)então
19 pessoa m pessoa + 1
20 fim 
21 media m soma/1000
22 fem m (fem *100)/1000
23 masc m (masc *100)/1000
24 escrever("Idade média = ", media)
25 escrever("Feminino = ", fem,"%")
26 escrever("Masculo = ", masc,"%")
27 escrever(pessoa, " pessoas possuem salário > 5.000,00")
28 fim
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
SITUAÇÃO 01
N° de iterações determinado.
Algoritmos e programação I.indd 116Algoritmos e programação I.indd 116 7/8/2013 16:01:197/8/2013 16:01:19
Process BlackProcess Black
117
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aAtividades 
Parte I - Questões objetivas 
1) Considerando o algoritmo a seguir,
algoritmo exerc1
variáveis 
 num, cont, aux, e: inteiro
início
 aux m 1 e m 1
 repita 
 escrever("Digite um número inteiro positivo: ")
 ler(num)
 até(num>0)
 para cont de 1 até num faça
 início
 aux m aux * cont
 e m e + aux
 fim
 escrever(e)
fim
 qual a saída se a entrada for 3 e depois 5?
 (a) 3 e 5;
 (b) 10 e 154;
 (c) 9 e 153;
 (d) 11 e 155; 
 (e) 4 e 34.
2) Considerando o algoritmo a seguir,
algoritmo exerc2
variáveis 
 v1, v2, s, x: inteiro
início
 s m 0
 ler(v1, v2)
 para x de v1 até v2 faça
 s m s + 2
 escrever(s)
fim
Algoritmos e programação I.indd 117Algoritmos e programação I.indd 117 7/8/2013 16:01:197/8/2013 16:01:19
Process BlackProcess Black
118
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a qual a saída, tendo como entrada 3 e 8?
 (a) 7;
 (b) 8;
 (c) 6;
 (d) 10; 
 (e) 12.
3) O algoritmo a seguir...
algoritmo exerc3
variáveis 
 i: inteiro
início
 para i de 100 até 1 passo -2 faça
 escrever(i)
fim
 (a) imprime os números de 1 a 100 em ordem decrescente;
 (b) imprime os números pares entre 100 e 1 em ordem crescente;
 (c) imprime os números ímpares entre 1 e 100 em ordem crescente;
 (d) imprime os números entre 1 e 100; 
 (e) imprime os números pares entre 1 e 100 em ordem decrescente.
4) Considerando o trecho de algoritmo a seguir,
k m 0
escrever(“Digite o valor de n: “)
ler(n)
para z de 1 até n faça
 para i de 1 até n faça
 para j de i até n faça 
 k m k + 1
 pode-se afi rmar que o valor de k para qualquer valor de n, ao fi nal da execução será:
 (a) n3 ;
 (b) n2 ;
Algoritmos e programação I.indd 118Algoritmos e programação I.indd 118 7/8/2013 16:01:197/8/2013 16:01:19
Process BlackProcess Black
119
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a (c) n2 + log n; 
 (d) n2(n+1)/2; 
 (e) (n3-n)/3.
5) No fi nal da execução do trecho de algoritmo a seguir,
k m 0
para i de 1 até n faça
 para j de i até n faça 
 k m k + 1
 quanto vale k?
 (a) n3 ;
 (b) (n2–n)/2;
 (c) n(n+1)/2;
 (d) n-1;
 (e) n.
Parte II - Resolução de problemas
 Para cada um dos exercícios a seguir, construa o algoritmo com a solução 
para o problema e realize o teste-de-mesa para assegurar que a resposta esteja 
correta. 
1) Escrever um algoritmo que gere números entre 1000 e 1999 e escreva 
aqueles que divididos por 11 dão resto 5.
2) Foi feita uma pesquisa em 20 cidades brasileiras para coletar dados 
sobre os acidentes de trânsito ocorridos no ano de 2012. Em cada 
cidade, foram obtidos os seguintes dados referentes a 2012: código da 
cidade, número de veículos de passeio, número de acidentes de trânsito 
com vítimas e número de acidentes de trânsito sem vítimas. Deseja-se 
saber:
(a) o total de acidentes de trânsito nas 20 cidades que participaram da 
pesquisa; 
Algoritmos e programação I.indd 119Algoritmos e programação I.indd 119 7/8/2013 16:01:197/8/2013 16:01:19
Process BlackProcess Black
120
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a (b) o maior e o menor número de acidentes de trânsito com vítimas e 
a que cidades pertencem; 
 (c) o percentual de acidentes de trânsito sem vítimas em cada uma das 
20 cidades que participaram da pesquisa; 
 (d) a média de veículos nas 20 cidades juntas.
3) Faça um algoritmo que leia um valor inteiro e positivo, calcule e escreva 
o seu fatorial. 
 Exemplos: !4 = 1 x 2 x 3 x 4 = 24 
 !5 = 1 x 2 x 3 x 4 x 5 = 120 
 Por defi nição, !0 = 1
4) Elabore um algoritmo que leia um valor inteiro, verifi que e informe se 
ele é primo. 
5) Faça um algoritmo para calcular e escrever o valor de R.
 R = 5 x 610 + 
6 x 5
9 + 
5 x 6
8 + 
6 x 5
7 + 
...
... + 
5 x 6
2 + 
6 x 5
1
Respostas dos exercícios da Parte I
 1 - b
 2 - e
 3 - e
 4 - e
 5 - b
Algoritmos e programação I.indd 120Algoritmos e programação I.indd 120 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
10 INTRODUÇÃO À LINGUAGEM C
Vanessa Lindemann
A linguagem C, criada por Dennis Ritchie na década de 70, resultou de um processo 
evolutivo de linguagens e, durante alguns anos, teve seu padrão baseado na versão 
5 do sistema operacional UNIX. Com a popularização dos microcomputadores, 
várias versões de C foram criadas, gerando muitas discrepâncias entre elas. Para 
resolver essa situação, em 1983, o ANSI (American National Standards Institute) 
estabeleceu um comitê para definir um padrão que guiasse todas as implementações 
da linguagem C. 
A popularização da linguagem C deve-se a vários fatores, dentre os quais 
destacam-se: (a) o poderoso conjunto de operadores e tipos de dados disponíveis; 
(b) a portabilidade, podendo ser usada em máquinas de portes e de sistemas 
operacionais diferentes; (c) as características de linguagens de alto nível 
(comandos com sintaxe próxima à linguagem humana e tipos de dados inteiro, 
real e caractere) como, por exemplo, as linguagens Pascal, Delphi e Visual Basic, 
aliadas às características de linguagens de baixo nível (também conhecidas como 
linguagem de máquina, manipulam bits, bytes e endereços) como a linguagem 
Assembler, por exemplo.
C é uma linguagem de propósitos gerais, estruturada e compilada (o compilador 
lê o código-fonte do programa inteiro e converte-o em um código executável). 
Ela é utilizada para a construção de sistemas operacionais (UNIX e LINUX, por 
exemplo), compiladores, interpretadores, editores de textos, planilhas eletrônicas, 
aplicativos para dispositivos móveis, etc. 
Algoritmos e programação I.indd 121Algoritmos e programação I.indd 121 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
122
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Um programa em linguagem C consiste em uma ou mais funções. A função 
principal, denominada main, indica onde o programa inicia. A estrutura básica 
de um programa em C é apresentada a seguir. 
#inlcude <nome da biblioteca>
void main( ) {
 // bloco de comandos
}
Bibliotecas são arquivos contendo várias funções que podem ser incorporadas aos 
programas escritos em C. A diretiva #include faz com que as funções inseridas na 
biblioteca especificada possam ser utilizadas no programa. As bibliotecas stdio.h 
e conio.h permitem a utilização de diversos comandos de entrada e saída e de 
funções de tela, respectivamente. São exemplos de funções de tela, os comandos 
usados para limpar a tela, posicionar o cursor em uma determinada posição na 
tela, trocar a cor da fonte e/ou do fundo. 
Os parênteses ao lado da palavra main indicam que ela é uma função, o tipo void 
indica que ela não retornará nenhum valor, enquanto as chaves delimitam o seu 
início e o seu fim. O bloco de comandos que estiver entre as chaves é executado 
sequencialmente quando a função for chamada. 
É importante salientar que a linguagem C é case sensitive, ou seja, é sensível a letras 
maiúsculas e minúsculas (por exemplo, a é diferente de A) e todos os programas 
devem, obrigatoriamente, ser escritos em letras minúsculas. Outro detalhe 
importante é que cada comando é finalizado com um ponto-e-vírgula. 
As seções a seguir são dedicadas à apresentação de conceitos e definições 
importantes e necessárias para o início da programação em linguagem C. 
10.1 Identificadores
Em linguagem C, os nomes utilizados para referenciar variáveis, constantes e 
funções definidas pelo usuário são chamados de identificadores. 
A criação de um identificador deve seguir as seguintes regras: podem ser formados 
por letras, números e sublinhado; devem iniciar com uma letra; letras minúsculas 
e maiúsculas são consideradas caracteres distintos; não podem ser palavras 
reservadas; podem conter qualquer tamanho, porém apenas os 32 primeiros 
caracteres são significativos. 
Além disso, é importante criar identificadores considerando a sua aplicação 
para facilitar a leitura do código-fonte e, consequentemente, o trabalho do 
programador. A quantidade de horas trabalhadas por uma pessoa durante uma 
Algoritmos e programação I.indd 122Algoritmos e programação I.indd 122 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
123
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
asemana de trabalho pode ser armazenada em uma variável chamada qtde_horas; 
enquanto uma função que irá verificar se uma data é válida ou não pode ter como 
indentificador valida_data.
10.2 Tipos de dados 
Os tipos de dados mais utilizados em linguagem C são: int (número inteiro), 
float (número real) e char (caractere). A linguagem C não possui tipo de dado 
lógico (que pode assumir verdadeiro ou falso), pois considera qualquer valor 
diferente de 0 (zero) como verdadeiro; e também não possui um tipo especial para 
armazenar cadeias de caracteres (string), estas são armazenadas em um vetor de 
caracteres. A Tabela 10.1 apresenta a lista de tipos básicos utilizados em C. 
Tabela 10.1 î Tipos de dados mais utilizados em Linguagem C
Tipo Faixa de valores Tamanho (aproximado)
char -127 a 127 8 bits
int -32.767 a 32.767 16 bits
float 3.4 E-38 a 3.4 E+38 32 bits
double 1.7 E-308 a 1.7 E+308 64 bits
void sem valor 0
A faixa de valores apresentada está de acordo com o padrão ANSI e é considerada 
a faixa mínima. Dependendo do processador e do compilador C que estiver sendo 
utilizado, o tamanho e a faixa de valores podem variar. 
10.3 Modeladores
É possível forçar que o resultado de uma expressão seja de um tipo específico 
usando o conceito de modelador. A forma geral de um modelador é 
(tipo)expressão 
onde tipo é um dos tipos padrão da linguagem C. 
Sendo r uma variável declarada do tipo float, as expressões a seguir resultam 
em valores diferentes. 
r=9/2; // essa expressão resulta 4
r=(float)9/2; // com o uso do modelador, resulta 4.5
Algoritmos e programação I.indd 123Algoritmos e programação I.indd 123 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
124
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 10.4 Declaração, inicialização e escopo de variáveis
Variável é uma posição de memória, identificada por um nome (identificador), 
usada para armazenar um dado de um determinado tipo por vez. As variáveis 
são declaradas após a especificação de seus tipos, como pode ser observado nos 
exemplos a seguir. 
float total;
int idade, cont;
char resposta;
A primeira linha da declaração de variáveis do exemplo cria uma variável chamada 
total, que pode armazenar valores do tipo real; na segunda linha, são
criadas 
duas variáveis para armazenar valores do tipo inteiro, idade e cont; por último, 
resposta é criada para armazenar caracteres (um por vez). Cada variável 
armazenará um único valor por vez. 
As variáveis podem ser inicializadas no momento da sua declaração, colocando o 
sinal de atribuição seguido da informação desejada, como no exemplo apresentado 
a seguir, em que cont é inicializada com 0 e resposta com S. É importante 
destacar que os dados atribuídos a variáveis do tipo caractere são envolvidos por 
apóstrofes. 
int cont=0;
char resposta=’S’;
O local em que as variáveis são declaradas definem o seu escopo, que pode ser 
global ou local. As variáveis de escopo global, denominadas variáveis globais, são 
declaradas fora de qualquer função, inicializadas automaticamente com 0 (zero) 
e podem ser usadas em qualquer ponto do programa. As variáveis locais são 
declaradas dentro de uma função, não são inicializadas automaticamente e valem 
enquanto esta função estiver ativa. As variáveis de escopo local têm preferência 
em relação às de escopo global. 
10.5 Definição de constantes 
Uma constante irá representar um valor fixo, previamente definido pelo 
programador e inalterável no programa. Uma das formas de definir constantes 
em C é através da diretiva #define, seguida do nome da constante e do valor que 
esta representará no programa. No exemplo a seguir, apresenta-se a declaração 
da constante pi cujo valor é definido como 3.141516. Observe que na definição de 
uma constante não se usa o ponto-e-vírgula no final. 
#define pi 3.141516
Desta forma, o programador usará pi no programa ao invés de usar 3.141516. 
Algoritmos e programação I.indd 124Algoritmos e programação I.indd 124 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
125
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a10.6 Códigos de formato 
Os códigos de formato, apresentados na Tabela 10.2, são constantes que definem 
o formato dos dados a serem lidos e exibidos na tela. 
Tabela 10.2 î Códigos de formatação
Código Formato
%c Caractere
%i Inteiro
%l Inteiro longo
%d Inteiro em formato decimal
%ld Decimal longo
%u Decimal sem sinal
%f Ponto flutuante em formato decimal
%lf Ponto flutuante longo (double)
%s Cadeia de caracteres (string)
%e Valor em notação científica
%o Valor em notação octaldecimal
%x Valor em notação hexadecimal
%p Ponteiro
%% Símbolo %
Eles são usados em funções de entrada e de saída de dados (descritas na seção 10.11). 
A função de entrada scanf, por exemplo, possui dois parâmetros: o código de 
formato e uma variável. Neste caso, o valor digitado pelo usuário será armazenado 
na variável denominada peso, declarada e formatada como float. 
scanf(“%f”,&peso);
A função printf, exemplificada a seguir, também contém dois parâmetros: o 
primeiro é uma constante, apresentada entre aspas; o segundo é uma variável, 
denominada dias. O valor armazenado na variável dias será exibido na posição 
em que aparece o código de formato usado na mensagem, neste caso o %i.
printf(“Sua idade em dias e: %i”, dias);
Algoritmos e programação I.indd 125Algoritmos e programação I.indd 125 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
126
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Os códigos de formato podem ter modificadores que especifiquem o tamanho do 
campo, o número de casas decimais e um indicador de justificação à esquerda. 
Especificador de largura mínima do campo: um valor entre o símbolo % e o 
caractere de formato indica a largura mínima do campo, preenchendo a saída com 
brancos (padrão) ou com zeros (coloca-se um 0 antes do especificador de tamanho). 
Quando um valor é maior que o mínimo definido, este será impresso por completo. 
Exemplos: %05d preencherá um número com menos de cinco dígitos com zeros à 
esquerda, de maneira que seu tamanho total seja cinco. 
Especificador do número de casas decimais: para definir o número de casas 
decimais a serem exibidas em um ponto flutuante, usa-se um ponto entre o 
especificador de tamanho e o número de casas decimais desejadas. Por exemplo: 
%6.2f exibirá um valor com, no mínimo, seis dígitos de comprimento e duas 
casas decimais. 
Especificador para justificar informação à esquerda: por definição, toda saída é 
justificada à direita. O uso do sinal – depois do % faz com que a saída seja justificada 
à esquerda. Exemplo: %-6.2f justificará à esquerda um valor de ponto flutuante, 
com no mínimo seis dígitos e duas casas decimais. 
A Tabela 10.3 apresenta exemplos da utilização dos especificadores de tipos. O 
caractere especial \n, usado nos exemplos, é explicado na próxima seção. 
Tabela 10.3 î Exemplo da utilização dos especificadores de tipos
Código Resultado
float valor=136.472;
printf(“\n %f”,valor);
printf(“\n %8.1f”,valor);
printf(“\n %08.1f”,valor);
printf(“\n %-8.1f”,valor);
136.472000
 136.5
000136.5
136.5
int valor=790;
printf(“\n %i”,valor);
printf(“\n %5i”,valor);
printf(“\n %05i”,valor);
printf(“\n %-5i”,valor);
790
 790
00790
790
printf(“\n O valor total é %2d.”,350);
printf(“\n O valor total é %4d.”,350);
printf(“\n O valor total é %5d.”,350);
O valor total é 350.
O valor total é 350.
O valor total é 350.
Algoritmos e programação I.indd 126Algoritmos e programação I.indd 126 7/8/2013 16:01:207/8/2013 16:01:20
Process BlackProcess Black
127
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a10.7 Caracteres especiais 
Os caracteres especiais são usados para representar alguma formatação em 
particular e caracteres especiais que seriam impossíveis de usar diretamente no 
código-fonte. Esses caracteres devem ser precedidos da barra invertida, como 
o \n que representa nova linha. A Tabela 10.4 apresenta os caracteres e seus 
significados. 
Tabela 10.4 î Códigos de caracteres de escape
Código Significado Código Significado
\a alerta (beep) \v tab vertical
\b retrocesso (backspace) \\ exibe barra invertida
\f avanço de página \’ exibe aspa única
\n nova linha \“ exibe aspas duplas
\r retorna ao início da linha \? exibe ponto de interrogação
\t tab horizontal \0 nulo 
10.8 Comando de atribuição 
O comando de atribuição, representado por = (sinal de igualdade), é utilizado para 
atribuir valores a variáveis. É importante lembrar que os valores atribuídos a uma 
variável devem ser compatíveis com o seu tipo. Alguns exemplos de atribuição 
podem ser observados a seguir. 
total=345.60; 
idade=20; 
resp=’s’;
cont=cont+1;
Os caracteres são representados entre apóstrofos ( ‘ ) e as cadeias de caracteres 
entre aspas ( “ ). 
É possível atribuir um valor a duas ou mais variáveis através de um único comando, 
como no exemplo a seguir, em que as variáveis x e y recebem 10.
x=y=10;
Caso seja necessário atribuir uma cadeia de caracteres a uma variável, utiliza-se 
a função strcpy.
strcpy(nome,“Ana Paula Rocha”);
Algoritmos e programação I.indd 127Algoritmos e programação I.indd 127 7/8/2013 16:01:217/8/2013 16:01:21
Process BlackProcess Black
128
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Para utilizar strcpy (abreviação de string copy) é preciso inserir no programa, 
através da diretiva include, a biblioteca string.h.
10.9 Operadores e funções
A linguagem C possui operadores e funções predefinidas destinadas a cálculos 
matemáticos e à manipulação de caracteres. Alguns deles são apresentados nas 
Tabelas 10.5 e 10.6. Para utilizar as funções matemáticas, a biblioteca math.h deve 
ser incluída no programa através da diretiva include. Os operadores lógicos são 
apresentados na Tabela 10.7.
Tabela 10.5 î Operadores aritméticos
Operadores Matemáticos
Operador Exemplo Comentário
+ a + b Soma o conteúdo de a e de b.
- a – b Subtrai o conteúdo
de b do conteúdo de a.
* a * b Multiplica o conteúdo de a pelo conteúdo de b.
/ a / b Divide o conteúdo de a pelo conteúdo de b.
% a % b Obtém o resto da divisão de a por b.*
* O operador % só pode ser utilizado com operandos do tipo inteiro. 
Tabela 10.6 î Operadores relacionais
Operadores Relacionais
Operador Exemplo Comentário
== a == b Testa se o conteúdo de a é igual ao conteúdo de b.
!= a != b Testa se o conteúdo de a é diferente do conteúdo de b.
<= a <= b Testa se o conteúdo de a é menor ou igual que o conteúdo de b.
>= a >= b Testa se o conteúdo de a é maior ou igual que o conteúdo de b.
< a < b Testa se o conteúdo de a é menor que o conteúdo de b.
> a > b Testa se o conteúdo de a é maior que o conteúdo de b.
Algoritmos e programação I.indd 128Algoritmos e programação I.indd 128 7/8/2013 16:01:217/8/2013 16:01:21
Process BlackProcess Black
129
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aTabela 10.7 î Operadores lógicos
Operador Símbolo Descrição
e && Conjunção
ou || Disjunção
não ! Negação
Em C, também pode-se utilizar operadores reduzidos, exemplificados na Tabela 10.8.
Tabela 10.8 î Operadores reduzidos
Expressão Equivalente com operadores reduzidos
total=total+valor; total+=valor;
num=num*5; num*=5;
d=d-valor; d-=valor;
x=x/5; x/=5;
Além dos operadores apresentados anteriormente, a linguagem C disponibiliza 
operadores de pré e pós incremento e decremento, descritos na Tabela 10.9. O 
operador ++ incrementa 1 ao valor do seu operando, enquanto –- decrementa 1. 
Estes operadores podem ser usados antes (pré-fixados) ou depois (pós-fixados) do 
nome da variável. Em ambos os casos a variável é incrementada ou decrementada. 
Entretanto, ++n incrementa o valor da variável n antes que n seja usada e n++ 
usa o valor de n e depois o incrementa. 
Tabela 10.9 î Operadores pré e pós-fixados
Operador Descrição Pré-fixado Pós-fixado
++ Incrementa ++n n++
-- Decrementa --n n--
Algoritmos e programação I.indd 129Algoritmos e programação I.indd 129 7/8/2013 16:01:217/8/2013 16:01:21
Process BlackProcess Black
130
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Resumindo:
++i o incrementa o valor de i em 1 e depois o utiliza; 
i++ o utiliza o valor de i e depois incrementa-o em 1. 
Logo, conclui-se que: 
z=a; a=a+1; é equivalente a z=a++; 
z=a; a=a-1; é equivalente a z=a--;
a=a+1; z=a; é equivalente a z=++a; 
a=a-1; z=a; é equivalente a z=--a; 
10.10 Comentários
Os comentários são textos que podem ser inseridos no programa com o objetivo de 
documentá-lo e não são analisados pelo compilador. Os comentários de uma linha 
são precedidos do símbolo //, enquanto o comentário de várias linhas é envolvido 
por /* e */, conforme pode ser observado nos exemplos a seguir. 
// Este é um comentário de uma linha.
/* Este é um comentário
 de mais de uma linha. */
10.11 Funções de entrada e saída
As funções de entrada de dados são utilizadas para receber dados digitados pelo 
usuário. Os dados recebidos são armazenados em variáveis já declaradas no início 
do programa. As funções de entrada mais utilizados em C são scanf, fgets 
e getche.
A função scanf é utilizada para ler dados dos tipos numérico e caractere, enquanto 
a função fgets é utilizada para ler uma cadeia de caracteres e a função getche 
pode ser utilizada para ler um caractere por vez. 
O trecho de código a seguir apresenta um exemplo da utilização das funções scanf 
e getche. Os dois valores do tipo float são lidos com a função scanf (linhas 2 
e 6) e o dado do tipo caractere é lido com getche (linha 4). 
1 printf(“Digite o primeiro valor: “); 
2 scanf(“%f”,&valor1); 
3 printf(“Digite o operador: “); 
4 operador = getche(); 
5 printf(“Digite o segundo valor: “); 
6 scanf(“%f”,&valor2); 
Algoritmos e programação I.indd 130Algoritmos e programação I.indd 130 7/8/2013 16:01:217/8/2013 16:01:21
Process BlackProcess Black
131
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aA sintaxe das duas funções é diferente. A função scanf tem dois parâmetros: o 
primeiro indica o tipo do dado a ser lido (Tabela 10.2 – códigos de formatação), 
especificado por uma letra depois do símbolo % entre as aspas; e o nome da 
variável, antecedido do símbolo & (sem espaço) que referencia um endereço de 
memória. A função getche lê um caractere pressionado no teclado pelo usuário 
e o escreve na tela. Na linha 4, a variável operador recebe o valor lido através da 
função getche. 
Um exemplo da utilização da função fgets pode ser observado nas linhas de 
código apresentadas a seguir. A função fgets possui três parâmetros – o nome 
da variável, o tamanho máximo da variável e a entrada de dados padrão (stdin 
= standard input) – e antes de utilizá-la é preciso liberar o buffer do dispositivo de 
entrada de dados, o que é feito através da função fflush.
1 printf(“Nome do aluno...: “);
2 fflush(stdin); 
3 fgets(nome,60,stdin); 
A função de saída é utilizada para apresentar dados na tela, seja uma mensagem, o 
resultado de uma expressão ou o conteúdo armazenado em uma variável. A função 
de saída mais utilizada em C é o printf, que pode ser observado nos dois trechos 
de códigos apresentados anteriormente e na linha de código a seguir. 
 printf(“Sua idade em dias e: %i”, dias);
 Nesse exemplo, o comando printf tem dois parâmetros: a mensagem e a variável. 
O valor armazenado na variável dias será apresentado na tela no lugar em que 
está o %i na mensagem (o %i é a formatação do dado a ser exibido, que neste caso 
é um inteiro). 
10.12 Estruturas de controle condicional 
A seguir, são apresentados dois exemplos que utilizam estruturas de controle 
condicional - o exemplo 10.1 exemplifica a aplicação da estrutura SE (em C, if) e 
o exemplo 10.2 da estrutura ESCOLHA (em C, switch). Na coluna da esquerda 
dos Quadros 10.1 e 10.2, aparece a solução em português estruturado, enquanto a 
coluna da direita apresenta a mesma solução em linguagem C. 
Algoritmos e programação I.indd 131Algoritmos e programação I.indd 131 7/8/2013 16:01:217/8/2013 16:01:21
Process BlackProcess Black
132
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
 
Qu
ad
ro
 1
0.
1 
î E
xe
m
pl
o d
a 
es
tru
tu
ra
 d
e c
on
tro
le
 co
nd
ic
io
na
l S
E
Ex
em
pl
o 
10
.1
 - 
Le
r u
m
 v
al
or
 d
o 
tip
o 
in
te
ir
o 
e 
ve
ri
fi
ca
r s
e 
el
e 
é 
pa
r o
u 
ím
pa
r.
Po
rt
ug
uê
s 
es
tr
ut
ur
ad
o 
– 
SE
 
Li
ng
ua
ge
m
 C
 - 
if
al
go
ri
tm
o 
ex
em
pl
o1
01
va
ri
áv
ei
s 
 
 v
al
or
: 
in
te
ir
o
in
íc
io
 
 
es
cr
ev
er
("
Di
gi
te
 u
m 
va
lo
r:
 "
)
 
le
r(
va
lo
r)
 
se
(v
al
or
 m
od
 2
 =
 0
)e
nt
ão
 
 
es
cr
ev
er
(v
al
or
,"
 é
 p
ar
."
)
 
se
nã
o
 
 
es
cr
ev
er
(v
al
or
,"
 é
 í
mp
ar
."
)
fi
m 
 
#i
nc
lu
de
 <
st
di
o.
h>
 
 
 
 
//
bi
bl
io
te
ca
s
#i
nc
lu
de
 <
co
ni
o.
h>
vo
id
 m
ai
n(
) 
{ 
 
 
 
 
 
 
 
 
 
 
in
t 
va
lo
r;
cl
rs
cr
()
; 
 
 
 
 
 /
/l
im
pa
 a
 t
el
a
go
to
xy
(1
0,
10
);
 
 
 /
/p
os
ic
io
na
 o
 c
ur
so
r 
pr
in
tf
("
Di
gi
te
 u
m 
va
lo
r:
 "
);
 
 
sc
an
f(
"%
i"
,&
va
lo
r)
;
go
to
xy
(1
0,
14
);
 
 
 
if
(v
al
or
%2
==
0)
 
 
pr
in
tf
("
%i
 é
 p
ar
."
, 
va
lo
r)
;
 
el
se
 
 
 
 
 
pr
in
tf
("
%i
 é
 í
mp
ar
."
, 
va
lo
r)
;
 
ge
tc
h(
);
 
 
 
 
 
 
//
pa
us
a 
 
 
 
 
 
 
 
 
 
 
 
}
Algoritmos e programação I.indd 132Algoritmos e programação I.indd 132 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
133
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 10.2 î Exemplo da estrutura de controle condicional ESCOLHA
Exemplo 10.2 - Construir uma calculadora que contenha as operações: +, - , * e /.
Português estruturado - ESCOLHA Linguagem C - switch
algoritmo exemplo102
variáveis
 valor1,valor2,r: real 
 operador: caractere
início
 escrever("Digite o 1º valor: ")
 ler(valor1)
 escrever("Digite o operador: ")
 ler(operador)
 escrever("Digite o 2º valor: ")
 ler(valor2)
 escolha(operador)
 caso "+": r m valor1 + valor2
 caso "-": r m valor1 - valor2
 caso "*": r m valor1 * valor2
 caso "/": se(valor2<>0)então
 r m valor1/valor2
 senão 
 r m 0 
 senão 
 
 escrever("Operador inválido!") 
 
 fim
 escrever ("Resultado = ", r)
fim 
#include <stdio.h> //bibliotecas
#include <conio.h>
void main(){
 float valor1,valor2, r;
 char operador;
 clrscr(); //limpa a tela
 gotoxy(10,5); //posiciona o cursor 
 printf("Digite o primeiro valor: "); 
 scanf("%f",&valor1); 
 gotoxy(10,8); 
 printf("Digite o operador: "); 
 operador = getche(); 
 gotoxy(10,11); 
 printf("Digite o segundo valor: "); 
 scanf("%f",&valor2); 
 switch(operador){ 
 case'+': r = valor1 + valor2; break;
 case'-': r = valor1 - valor2; break;
 case'*': r = valor1 * valor2; break;
 case'/': if(valor2!=0)
 r = valor1 / valor2;
 else
 r = 0;
 break;
 else{
 gotoxy(10,20);
 printf("Operador inválido!");
 }
 }
 gotoxy(10,24);
 printf("Resultado = %3.2f", r);
 getch(); //pausa
}
10.13 Estruturas de controle de repetição 
As estruturas de controle de repetição são exemplificadas nos quadros a seguir. 
Para facilitar o entendimento, a coluna da esquerda dos Quadros 10.3, 10.4 e 10.5 
apresenta a solução em português estruturado e a da direita em linguagem C. 
Algoritmos e programação I.indd 133Algoritmos e programação I.indd 133 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
134
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 10.3 î Exemplo da estrutura de controle de repetição ENQUANTO
Exemplo 10.3 - Ler 10 valores do tipo inteiro, calcular e escrever a média dos valores 
lidos.
Português estruturado – ENQUANTO Linguagem C – while 
algoritmo exemplo103
variáveis 
 valor,soma,cont: inteiro
 media: real 
início 
 cont ĸ 0
 soma ĸ 0
 enquanto(cont<10)faça
 início 
 
 escrever("Digite um 
valor: ")
 ler(valor)
 cont ĸ cont + 1
 soma ĸ soma + valor
 fim
 media ĸ soma / 10
 escrever("Média = ", media)
fim 
#include <stdio.h> //bibliotecas
#include <conio.h>
void main() { 
 int valor, soma, cont;
 float media;
 cont = 0;
 soma = 0;
 while(cont<10)
 {
clrscr(); //limpa a tela
gotoxy(10,10); //posiciona cursor
printf("Digite um valor: "); 
scanf("%i",&valor); 
cont = cont + 1;
soma = soma + valor;
}
media = soma / 10;
gotoxy(10,14); 
printf("Media = %.2f", media); 
getch(); //pausa 
}
Algoritmos e programação I.indd 134Algoritmos e programação I.indd 134 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
135
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aQuadro 10.4 î Exemplo da estrutura de controle de repetição REPITA
Exemplo 10.4 - Ler 25 valores, calcular e escrever o percentual de valores negativos.
Português estruturado – REPITA Linguagem C – do while 
algoritmo exemplo104
variáveis 
 cont: inteiro
 valor, negativo, perc: real 
início 
 cont m 0
 negativo m 0
 repita 
 
 
 escrever("Digite um valor: ")
 ler(valor)
 cont m cont + 1
 se (valor < 0) então
 negativo m negativo + 1
 até(cont=25)
 perc m (negativo*100)/25
 escrever("% negativos = ",perc)
fim
#include <stdio.h> //bibliotecas
#include <conio.h>
void main() { 
 int cont;
 float valor, negativo, perc;
 cont = 0;
 negativo = 0;
 do{
clrscr(); 
gotoxy(10,10); 
printf("Digite um valor: "); 
scanf("%f",&valor); 
cont = cont + 1;
if(valor < 0)
 negativo = negativo + 1;
} while(cont<25);
perc = (negativo*100)/25;
gotoxy(10,14); 
printf("%% de negativos = %.2f", perc); 
 getch(); //pausa 
}
Algoritmos e programação I.indd 135Algoritmos e programação I.indd 135 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
136
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a Quadro 10.5 î Exemplo da estrutura de controle de repetição PARA
Exemplo 10.5 - Ler 10 valores do tipo inteiro, calcular e escrever a média dos valores lidos.
Português estruturado – PARA Linguagem C – for
algoritmo exemplo105
variáveis 
 valor,soma,cont: inteiro
 media: real 
início 
 soma ĸ 0
 para cont de 1 até 10 faça
 início 
 
 escrever("Digite um valor: ")
 ler(valor)
 soma ĸ soma + valor
 fim
 media ĸ soma / 10
 escrever("Média = ", media)
fim 
#include <stdio.h> //bibliotecas
#include <conio.h>
void main() { 
 int valor, soma, cont;
 float media;
 soma = 0;
 for(cont=1;cont<=10;cont++)
 {
 clrscr(); //limpa a tela
 gotoxy(10,10);//posiciona cursor
 printf("Digite o %i valor: ",cont); 
 scanf("%i",&valor); 
 soma = soma + valor;
 }
 media = soma / 10;
 gotoxy(10,14); 
 printf("Media = %.2f", media); 
 getch(); //pausa 
}
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programação de Computadores: 
algoritmos, Pascal, C/C++ (padrão ANSI) e Java. 3.ed. São Paulo: Pearson Education do 
Brasil, 2012. 
BERG, A. C.; FIGUEIRÓ, J. P.. Lógica de Programação. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F.. Lógica de Programação: a construção de 
algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson/Prentice Hall, 2005. 
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MATTOS, Patrícia Noll de. Linguagem de Programação II (Caderno Universitário 027). 2.ed. 
Canoas: Ed. ULBRA, 2001.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. São Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lógica de Programação e Estruturas de Dados. São Paulo: Pearson/
Prentice Hall, 2003.
SCHILDT, Herbert. C Completo e Total. 3. ed. São Paulo: Makron Books, 1997.
Algoritmos e programação I.indd 136Algoritmos e programação I.indd 136 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
137
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aAtividades 
Parte I - Questões objetivas 
1) A sintaxe das declarações de variáveis em C inclui o nome da variável seguido 
de um tipo.
( ) Certo 
( ) Errado 
2) São nomes válidos para variáveis na linguagem C:
(a) if, a*b_2, H789, &ya;
(b) A, b, Y, count;
(c) 9xy, a36, x*y, --j;
(d) 2_ou_1, \fi m, h, j; 
(e) i, j, int, obs.
3) Em C, os nomes cont e Cont não podem ser empregados
para representar a 
mesma variável ao longo de um programa.
( ) Certo 
( ) Errado 
4) Uma string é uma sequência de caracteres armazenada em um vetor de 
caracteres.
( ) Certo 
( ) Errado 
Algoritmos e programação I.indd 137Algoritmos e programação I.indd 137 7/8/2013 16:01:227/8/2013 16:01:22
Process BlackProcess Black
138
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 5) O que faz o seguinte programa em C ? 
#include <stdio.h> 
void main( ){ 
 int i =2; 
 printf (“O valor de i = %i \n”, i); 
}
(a) Imprime: O valor de i = 2 e pula para a próxima linha;
(b) Imprime: O valor de i = 2 \n;
(c) Pula para a próxima linha e imprime: O valor de i = 2 ;
(d) Imprime: O valor de i = 2 ;
(e) Nenhuma das alternativas anteriores.
6) Qual o resultado das variáveis j, k e l depois da seguinte sequência de 
operações?
int j,k,l; j=k=10; l=++j; j=-j; k++; j=j+k-l--; 
(a) j = -10, k = 10, l = 10; 
(b) j = -11, k = 11, l = 10; 
(c) j = -10, k = 11, l = 10; 
(d) j = 11, k= 11, l = 11; 
(e) Nenhuma das alternativas anteriores.
7) if(var) é equivalente a if(var!=0).
( ) Certo 
( ) Errado 
Algoritmos e programação I.indd 138Algoritmos e programação I.indd 138 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
139
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a8) Considerando o conceito de variáveis em Linguagem C, leia as afi rmações a 
seguir e indique a afi rmativa correta.
I. As variáveis de um programa em C estão associadas a posições de 
memória, previamente identifi cadas, que armazenam informações
II. O primeiro caractere de um identifi cador deve ser uma letra e o 
restante do nome pode conter letras, números e sublinhado. Além 
disto, palavras-chaves não podem ser usadas como identifi cadores.
III. As variáveis são classifi cadas, quanto ao seu escopo, como globais 
ou locais. As globais são declaradas fora de qualquer função e são 
reconhecidas em todo o programa; as locais são declaradas dentro da 
função em que serão utilizadas e valem enquanto esta estiver ativa.
IV. O tipo de uma variável defi ne os valores que ela pode assumir e as 
operações que podem ser realizadas com ela.
V. A linguagem C não faz distinção entre as variáveis Cont, cont e 
CONT. 
 (a) II e III estão incorretas.
 (b) I, II e IV estão corretas. 
 (c) V está incorreta.
 (d) I, II e III estão corretas.
 (e) Todas estão corretas.
9) Na Linguagem C, os códigos de formação de tipo de dados NÃO estão 
corretamente associados na alternativa:
(a) int - %i;
(b) double - %d;
(c) fl oat - %f;
(d) char - %c;
(e) Nenhuma das respostas anteriores.
Algoritmos e programação I.indd 139Algoritmos e programação I.indd 139 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
140
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a 10) Na expressão condicional A>=P||P>A , está correto afi rmar que a mesma
(a) nunca será verdadeira. 
(b) somente será verdadeira quando P for menor ou igual a A.
(c) somente será verdadeira quando P for maior que A. 
(d) nunca será falsa.
(e) Nenhuma das respostas anteriores.
11) Considerando os especifi cadores de tipo usados nos comandos de saída 
apresentados a seguir, assinale a alternativa INCORRETA.
(a) printf(“Total = %05i”,794);
T o t a l = 0 0 7 9 4
(b) printf(“Total = %-5i”,469);
T o t a l = 4 6 9
(c) printf(“Total = %.2f”,280.338);
T o t a l = 2 8 0 . 3 4
(d) printf(“Total = %4i”,258);
T o t a l = 2 5 8
(e) printf(“Total = %4.2f”,587.222);
T o t a l = 5 8 7 . 2 2
12) Para que faixa de valores da variável x o seguinte segmento de código imprime 
a letra C? (Questão da prova do POSCOMP 2003)
if(x<=200)
 if(x<100)
 if(x<0) printf(“A”)
 else printf(“B”)
 else printf(“C”)
 else printf(“D”)
(a) 0<x<100;
(b) x<=100; 
(c) 100<x<=200;
(d) x>200;
(e) 100<=x<=200.
Algoritmos e programação I.indd 140Algoritmos e programação I.indd 140 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
141
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
aParte II - Resolução de problemas
Escolha um exercício de cada um dos capítulos anteriores e reescreva sua solução 
em Linguagem C (utilize um compilador de Linguagem C para executar os 
programas resolvidos).
Respostas dos exercícios da Parte I
 1 - Errado
 2 - b
 3 - Certo
 4 - Certo
 5 - a
 6 - b
 7 - Certo
 8 - c
 9 - b
 10 - d
 11 - d
 12 - e
Algoritmos e programação I.indd 141Algoritmos e programação I.indd 141 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
142
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 142Algoritmos e programação I.indd 142 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
143
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 143Algoritmos e programação I.indd 143 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black
144
UL
BR
A 
– E
du
ca
çã
o a
 D
ist
ân
ci
a
Algoritmos e programação I.indd 144Algoritmos e programação I.indd 144 7/8/2013 16:01:237/8/2013 16:01:23
Process BlackProcess Black

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?