Prévia do material em texto
ALGORITMOS E PROGRAMAÇÃO I
Mário Roberto Klein Junior
SUMÁRIO
Esta é uma obra coletiva organizada por iniciativa e direção do CENTRO SU-
PERIOR DE TECNOLOGIA TECBRASIL LTDA – Faculdades Ftec que, na for-
ma do art. 5º, VIII, h, da Lei nº 9.610/98, a publica sob sua marca e detém os
direitos de exploração comercial e todos os demais previstos em contrato. É
proibida a reprodução parcial ou integral sem autorização expressa e escrita.
CENTRO UNIVERSITÁRIO UNIFTEC
Rua Gustavo Ramos Sehbe n.º 107. Caxias do Sul/ RS
REITOR
Claudino José Meneguzzi Júnior
PRÓ-REITORA ACADÊMICA
Débora Frizzo
PRÓ-REITOR ADMINISTRATIVO
Altair Ruzzarin
DIRETOR DE ENSINO A DISTÂNCIA (EAD)
Rafael Giovanella
Desenvolvido pela equipe de Criações para o Ensino a Distância (CREAD)
Coordenadora e Designer Instrucional
Sabrina Maciel
Diagramação, Ilustração e Alteração de Imagem
Igor Zattera, Thaís Munhoz
Revisora
Luana dos Reis
ALGORITMO 5
FRITANDO UM OVO 7
CONSTRUINDO UM ALGORITMO 9
RESUMINDO O CAPÍTULO 18
VARIÁVEIS: TIPOS DE DADOS E OPERADORES 19
TIPOS DE DADOS 20
OPERADORES 23
TABELA VERDADE 25
PRECEDÊNCIA DE OPERADORES 26
COLOCANDO EM PRÁTICA 27
RESUMINDO O CAPÍTULO 30
VISUALG 31
DOWNLOAD 32
INTERFACE DO VISUALG 32
UTILIZANDO O VISUALG PARA CRIAR E EXECUTAR ALGORITMOS 35
EXECUTANDO O ALGORITMO 36
EXECUTANDO O ALGORITMO PASSO A PASSO 37
ESTRUTURAS CONDICIONAIS 39
ESTRUTURA SE-ENTÃO 40
ESTRUTURA SE-ENTÃO-SENÃO 41
EXPRESSÕES CONDICIONAIS COMPOSTAS 43
ESTRUTURA DE SELEÇÃO ANINHADA 44
ESTRUTURA DE SELEÇÃO MÚLTIPLA ESCOLHA 47
RESUMINDO O CAPÍTULO 52
ESTRUTURAS DE REPETIÇÃO 53
ESTRUTURA DE REPETIÇÃO DE NÚMEROS DEFINIDOS 54
ESTRUTURAS DE REPETIÇÕES DE NÚMEROS INDEFINIDOS 60
RESUMINDO O CAPÍTULO 64
3ALGORITMOS E PROGRAMAÇÃO I
APRESENTAÇÃO
Prezado, aluno! Seja bem-vindo à disciplina de Algoritmo e programação I!
Levando em conta que você está realizando um curso superior voltado a área
de tecnologia, a minha pergunta é óbvia, mas não custa fazê-la.
Quão importante o computador é na sua vida?
Se você respondeu: “muito”, estamos pensando da mesma maneira. Ago-
ra, o motivo pelo qual eu fiz essa pergunta? Porque ela me leva a uma próxima
pergunta. Você já parou para pensar em como o seu computador funciona? Aqui,
quando eu falo computador, não estou me referindo somente aos dispositivos que,
comumente, aprendemos a chamar de computador. O nosso velho desktop ou o
não tão novo notebook ou laptop. Hoje em dia, temos computadores nos nossos
bolsos (smartphones), na nossa parede da sala (smart TV’s) ou até nos nossos
pulsos (relógios). Entretanto, vamos voltar
a pergunta. Você já parou para pensar em
como esses dispositivos fazem o que dese-
jamos que façam? Como que, quan-
do pegamos nosso celular e abrimos
o WhatsApp, podemos em poucos
segundos enviar uma mensagem
para alguém que está do
outro lado do mundo?
Então, vou lhe contar um segredo, são programas que realizam as seguintes funções; é por
causa deles que conseguimos fazer o que desejamos com nossos computadores. Também é por causa
deles que estamos aqui, para começar a aprender um pouco sobre como eles funcionam.
Nossos computadores executam uma função simples e bem definida: PROCESSAR DADOS.
Você deve estar se perguntando, mas que dados são esses e que tipo de processamento é esse?
Vamos por partes, desde o momento em que ligamos o computador, a principal função dele é
processar dados de maneira pela qual ele foi programado. Esses dados podem vir de diversas fon-
tes, desde nosso mouse, teclado ou HD, até de fontes mais “distantes”, como a internet. Tudo para o
computador se trata de dados, desde a tela que está sendo exibida no monitor, até quando o navega-
dor da internet retorna alguma busca realizada.
Vamos levar em conta esse exemplo da busca realizada no navegador. O navegador é um aplica-
tivo ou programa (como você preferir). Esse aplicativo é responsável por pegar seus dados de entrada
do teclado (quando você digita o que quer buscar), enviá-los através da internet para outro compu-
tador, receber os dados retornados por este outro computador e mostrá-los na tela para você.
Se você não conhece o Whatsapp, sugiro que abra o seu buscador preferido na
internet e dê uma rápida lida e volte aqui para continuarmos.
4ALGORITMOS E PROGRAMAÇÃO I
APRESENTAÇÃO
Todo esse processo é realizado através de uma programação que foi
realizada para que funcionasse da maneira que nós esperamos.
Essa programação é o que aprenderemos daqui para frente (não so-
mente nessa disciplina). Vamos começar a entender que tudo começa com a
lógica necessária para darmos as instruções para que o computador realize
o processamento dos dados. Depois, aprenderemos como estruturar essa ló-
gica em uma linguagem específica que está mais perto da linguagem que o
computador entende, e começaremos a criar nossos primeiros programas,
utilizando uma linguagem de programação real, que é possível ser utilizada
para criar diversos programas.
No entanto, vamos começar com um passo de cada vez. E esse passo co-
meça por entendermos o que é, como funciona e como se cria um Algoritmo.
5
ALGORITMO
Do ponto de vista da informática, um algoritmo é o conjunto das regras e
procedimentos lógicos, perfeitamente definidos, que levam à solução de
um problema em um número finito de etapas.
6ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Suponha que você receba as seguintes instruções:
1. Vá até o supermercado.
2. Encontre o corredor dos cafés.
3. Busque pelo café mais barato.
4. Pegue 3 unidades.
5. Dirija-se ao caixa.
6. Pague em dinheiro.
7. Volte para casa.
8. Prepare um café quente e saboroso.
Você é capaz de executar essas instruções perfeitamente?
Se você consegue seguir essas instruções, saiba que é exatamente assim que um computa-
dor trabalha, o tempo todo.
Deixando um pouco de lado a sátira dessa lista de instruções, é importante en-
tender que ela respeita uma sequência lógica (se mudarmos a ordem de alguma delas
o resultado poderá não ser o mesmo) e tem um objetivo bem definido para a resolução
do problema da falta de café em casa.
O que muda dessa lista de instruções para um programa de computador que você
está acostumado a utilizar, é que os programas possuem uma linguagem específica e
são um pouco mais complexos. Quero dizer, muito mais complexos. Mas não se assus-
te, com o tempo você aprenderá que a complexidade para desenvolver a solução de um
problema está, diretamente, ligada ao seu conhecimento sobre o problema e as ferra-
mentas que você tem disponível para resolvê-lo.
Pronto! Agora que você já entendeu o que é um algoritmo, você está pronto para
programar um aplicativo em seu computador. Bem-vindo ao maravilhoso mundo da
programação! Você já é um programador profissional!
Brincadeiras a parte, vamos começar a modelar os nossos problemas em sequên-
cias lógicas de instruções.
Importante: caso você ainda não saiba, aprenderá,
empiricamente, que “programadores são ferramentas projetadas
para converter cafeína em código”.
7ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
FRITANDO UM OVO
Agora, que você já teve o primeiro contato com
uma sequência de instruções, comece a criar uma outra
para direcionar o processo para fritar um ovo.
Primeiramente vamos definir algumas regras:
• Crie o máximo possível de instruções. Tenha em
mente que quem executará estas instruções não
possui nenhum conhecimento prévio de como fun-
ciona uma cozinha, aonde as coisas estão e como
elas funcionam.
• Leve em conta que quem executará tais instruções
já se encontra dentro da cozinha.
• Apesar de não conhecer nada da cozinha, o exe-
cutor sabe identificar as coisas. Se uma instrução
for, por exemplo, “Abrir a geladeira”, ele saberá
como fazer isso.
Agora pare de ler um pouco e faça esse exercício,
escrevendo em um papel todas as instruções.
VALIDANDO A SOLUÇÃO
Vou agora descrever a minha solução para o problema dado:
1. Abra a porta da geladeira.
2. Na porta dageladeira, encontre a bandeja de ovos.
3. Pegue um ovo.
4. Feche a porta da geladeira.
5. Coloque os ovos sobre a pia.
6. Abra a porta do armário.
7. Junto às panelas, encontre uma frigideira.
8. Pegue a frigideira.
9. Coloque sobre uma boca vazia do fogão.
10. Junto aos temperos, encontre o azeite.
11. Pegue o azeite.
12. Coloque a quantia necessária de azeite para cobrir o fundo da frigideira.
13. Guarde novamente o azeite.
14. Próximo aos talheres, encontre uma escumadeira.
15. Coloque sobre a pia.
8ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
16. Feche o armário.
17. Ligue a boca do fogão cuja panela encontra-se sobre.
18. Bata suavemente a casca do ovo (mais ou menos no
meio) contra a pia.
19. Com as duas mãos abra o ovo sobre a frigideira.
20. Abra o armário.
21. Próximo aos temperos, localize o pote com sal.
22. Pegue o pote.
23. Feche o armário.
24. Abra o pote.
25. Coloque uma pitada de sal sobre o ovo que se encon-
tra na frigideira.
26. Tampe o sal e coloque-o em cima da pia.
27. Quando a clara estiver branca e a gema estiver leve-
mente mole, desligue o fogo.
28. Abra o armário.
29. Localize um prato.
30. Pegue e segure-o consigo.
31. Feche o armário.
32. Pegue a escumadeira que está sobre a pia.
33. Com cuidado para não estourar a gema, retire o ovo da frigideira.
34. Coloque-o no prato.
35. FIM!!!
Ufa! Essa foi a receita para fazer um ovo frito mais extensa que eu já
vi no mundo.
E A SUA RECEITA? FICOU IGUAL?
Aposto que não. Assim como nas receitas de culinária de verdade,
não existe uma única forma de se criar uma sequência de instruções para
a resolução de um problema. Isso também acontece com os programas de
computador. Dependendo de quem for o programador, o algoritmo utili-
zado pode ser completamente diferente, porém, ambos podem chegar ao
mesmo resultado final.
Isso também acontecerá com os exemplos de algoritmos que iremos
produzir durante toda a disciplina. Procure não se preocupar muito com a so-
lução dada por mim e com a solução que você produzir. Procure sempre iden-
tificar se você conseguiu atingir o objetivo, que é a resolução do problema.
IMPORTANTE, NÃO SE
PREOCUPE MUITO COM
ISSO, AGORA!
As soluções costumam
ser diferentes, porém, a
resolução do problema
deve ser sempre o principal
objetivo; ele deve ser
efetivo.
Quando você estiver
escrevendo um algoritmo,
saiba também, que às
vezes temos que produzir o
melhor algoritmo; ele deve
ser, também, eficaz.
9ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora que já estamos entendidos sobre o que é um algoritmo, qual a sua função e como ele fun-
ciona, precisamos entender como se constrói um “algoritmo de verdade”.
CONSTRUINDO UM ALGORITMO
Para construir um algoritmo, precisamos seguir alguns passos importantes para que ele faça
corretamente o que precisamos que faça. Vamos a eles:
1. Estudar e entender tudo sobre o problema a ser resolvido, para que nenhuma informação seja
desconsiderada enquanto estivermos escrevendo nosso algoritmo.
2. Estruturar quais são os dados que são necessários informar para que o nosso algoritmo tenha
um bom funcionamento. Chamamos esses de dados de entrada.
3. De forma lógica, pensar como esses dados devem ser processados para que o algoritmo re-
solva o problema.
4. Estruturar quais são os dados que representam a solução do problema. Estes, chamamos de
dados de saída.
5. Finalmente, construiremos o algoritmo utilizando o formato necessário para que ele funcione.
Note no passo 5, que eu falei sobre formato necessário. Isso quer dizer que existe mais de um
tipo de se representar um algoritmo. Vamos entender alguns tipos que nos servirão de base para
criarmos nossos algoritmos:
TIPOS DE REPRESENTAÇÃO DE ALGORITMOS
Conforme comentei anteriormente, existe mais de um tipo para represen-
tarmos nossos algoritmos. Cada um com a sua característica e sua função no pro-
cessamento, representação e entendimento do nosso problema.
DESCRIÇÃO NARRATIVA
Essa é a forma que acabamos de ver. Sim, a lista de instruções é uma ma-
neira de representação de algoritmos. Ela é ótima para entendermos o problema
e quais são os passos necessários para resolvê-lo. E você não precisou aprender
nada de diferente. Mas ela não é perfeita. Vamos supor o passo 18 do nosso exem-
plo de como fritar um ovo.
Bata suavemente a casca do ovo (mais ou menos no meio) contra a pia.
Essa instrução está sujeita a interpretações diferentes, considerando quem
irá executá-la. Certo? Suavemente, para mim pode ser diferente do que é para
você. Isso quer dizer que esse formato pode não ser tão eficaz, visto que, ele está
sujeito à interpretação de quem o executa.
Vamos ao próximo formato:
10ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
FLUXOGRAMA
Você sabe o que é um fluxograma e como se monta um? Vou te
dar um exemplo de fluxograma:
Quando olhamos um desenho como esse, uma coisa fica ób-
via: a sequência dos passos a serem seguidos. Mas. por outro lado,
ele exige que conheçamos quais os símbolos que foram utilizados
para representar cada um dos passos. Isso não é necessariamente
um problema, pois, formalmente, é definida a linguagem utilizada.
O que pode ser sim, um problema, quando utilizamos esse
formato, e quando estamos representando os passos para a so-
lução de um problema muito complexo, que pode ficar muito ex-
tenso, impossibilitando uma visão clara de todo o processo.
Isso não quer dizer que ele não é utilizado, só pode não ser a
melhor forma para que representemos os nossos problemas, pre-
tendendo que o computador os resolva.
Um pouco mais próximo do que é utilizado para a programa-
ção dos nossos computadores, temos o nosso próximo formato:
PSEUDOCÓDIGO – PORTUGUÊS ESTRUTURADO
Esse é o formato que trabalharemos nossos primeiros al-
goritmos daqui para frente. Ele é chamado de pseudocódigo,
porque não é uma linguagem de programação propriamente
dita, todavia ele se aproxima bastante, pois é construído utili-
zando a Língua Portuguesa.
Vamos entender como representar o nosso algoritmo utili-
zando um exemplo real, mas para isso, precisamos seguir nossos
5 passos para a construção de um algoritmo.
Importante: não é um requisito para
o aprendizado da programação, mas
é muito importante que você tenha
algum certo conhecimento da língua
inglesa, pois a maioria das linguagens
de programação utilizam essa língua
como base.
11ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Definição do problema:
Faça um algoritmo que leia do usuário 3 números e calcule a média entre
eles, escrevendo-a.
1. Problema: o problema a ser resolvido pelo nosso algoritmo é o cálculo da mé-
dia aritmética entre três números quaisquer, que serão informados durante a
execução do algoritmo. Sabemos, da Matemática, que para realizar o cálculo
da média aritmética de 3 números devemos somá-los e dividi-los por 3.
2. Definir dados de entrada: conforme a nossa definição do problema, os 3 nú-
meros, cuja média será calculada, serão informados durante a execução do
algoritmo, logo, esses são os nossos dados de entrada.
3. Processamento: os passos são:
a. Leitura dos dados
b. Cálculo da média – (N1 + N2 + N3) / 3
c. Escrita da média
4. Definir dados de saída: nesse problema, o que desejamos é que a média cal-
culada seja escrita, nesse caso, nosso dado de saída é a própria média.
5. Criar o algoritmo: para criar nosso algoritmo em português estruturado, precisamos primeiro
entender como se estrutura um algoritmo nesse formato.
ESTRUTURA DE UM ALGORITMO EM PORTUGUÊS ESTRUTURADO
Um algoritmo em português estruturado possui um formato bem definido com comandos igual-
mente bem definidos.
Vamos entender como é o formato básico de um algoritmo?
Agora, aprenderemos o significado de cada linha.
Linha 1 – a palavra reservada “algoritmo” indica que estamos iniciando um novo algoritmo e
que o nome desse algoritmo está na sequência entre aspas.
Importante: durante o decorrer deste material, sempre que forexibido um
algoritmo, seja ele em português estruturado ou em linguagem de programação
(mais adiante iniciaremos com linguagens reais que nos permitam criar
programas) será utilizada uma fonte monoespaçada e no formato utilizado abaixo.
12ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Linha 2 – a palavra reservada “var” indica que estamos iniciando a sessão do
nosso algoritmo responsável pela declaração das variáveis. Variáveis, como na Mate-
mática, são responsáveis por guardar um determinado valor, porém, o algoritmo não
armazena valores numéricos.
Linha 3 – as duas barras indicam que está sendo iniciado um comentário, ou seja,
tudo o que vem após as barras não será considerado parte do algoritmo e só está ali para
servir de comentário. Nesse caso, está indicando que estamos dentro da seção de decla-
ração de variáveis, que aprenderemos mais adiante.
Linha 4 – quando, após a seção de declaração de variáveis, for encontrada a pala-
vra reservada “inicio” (note que não tem acento, assim como em todo o algoritmo não
se utiliza acentos, espaços e caracteres especiais com exceção do “_” – underline – que
pode ser utilizado para separação de palavras) indica que terminamos a seção de decla-
ração de variáveis e iniciamos o processamento do nosso algoritmo.
Linha 5 – igualmente à linha 3, é o comentário, informando que estamos dentro da
seção de processamento do algoritmo, ou seja, o corpo do nosso algoritmo. É no corpo
que passos para a resolução do nosso problema serão listados em ordem.
Linha 6 – quando, após os comandos do corpo do nosso algoritmo, forem encon-
tradas as palavras reservadas “fimalgoritmo”, sem espaço, estaremos informando que
nosso algoritmo terminou. Nada virá após.
Importante: palavras reservadas são palavras que não podem ser utilizadas
como variáveis para a construção do nosso algoritmo. Existem mais
palavras reservadas que estaremos conhecendo no decorrer do material.
Vamos entender um pouco mais das duas sessões que utilizamos para a criação do nosso
algoritmo. As declarações de variáveis e corpo do nosso algoritmo.
DECLARAÇÃO DE VARIÁVEIS
A seção de declaração de variáveis serve para que indiquemos todas as variáveis que
serão utilizadas no decorrer do nosso algoritmo. Uma variável, conforme comentado ante-
riormente, serve para armazenarmos alguma informação que pode, ou não, ser modificada
durante a execução do algoritmo.
Esse processo também existe em qualquer programa que utilizamos. Do ponto de vista
do processamento realizado por um computador, a declaração de uma variável serve para que
o computador possa reservar um espaço na memória, que permanecerá durante toda a execu-
ção daquele algoritmo.
Como o português estruturado representa o pseudocódigo de um programa de computa-
dor, também devemos declarar as variáveis que utilizaremos no decorrer do nosso algoritmo.
13ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Para declararmos uma variável, devemos utilizar a seguinte sintaxe:
Onde <var1> deve ser substituído por uma ou outra lista separada por
vírgula, de nomes de variáveis. Para facilitar o entendimento, deve-se no-
mear as variáveis de acordo com o dado que nela é armazenado. Após a lis-
ta de variáveis, deve vir um símbolo de dois pontos, e, na sequência, o tipo
de dados que todas as variáveis daquela linha possuirão.
Isso quer dizer que podemos, não sendo obrigatório, agrupar a de-
claração de variáveis, desde que todas armazenem o mesmo tipo de dados.
Posteriormente, veremos quais são os tipos de dados possíveis de se utili-
zar em um algoritmo.
Importante: quando, no contexto de algoritmos, ou até no
contexto de programação, falamos sobre “sintaxe”, estamos
tratando da estrutura que deve ser utilizada. Quando
estamos programando no computador, caso a sintaxe
do nosso algoritmo não esteja correta, o algoritmo não
funcionará, ou seja, ele não está sintaticamente correto.
Cabe a você entender a sintaxe correta para escrever o
algoritmo e utilizá-la.
CORPO DO ALGORITMO
É nessa seção que ocorre o algoritmo propriamente dito.
Aqui são descritos os comandos que serão executados para
que o problema inicial seja resolvido. Também, escreveremos
comandos para a leitura dos dados (entrada de dados), pro-
cessamento e escrita dos dados processados (saída de dados).
No decorrer de toda a disciplina, estaremos aprendendo
novos comandos que nos auxiliam em uma função específica.
Esses comandos são a grande diferença entre um al-
goritmo representado em descrição narrativa e em pseu-
docódigo, pois temos comandos bem definidos que não
estão sujeitos a diferentes tipos de interpretação. É o que
o computador precisa para executar nossos programas e
comandos bem definidos.
Importante: todo o comando que é
representado por uma palavra, esta palavra
deve ser reservada, ou seja, não pode ser
utilizada para representar uma variável.
14ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
RETOMANDO NOSSO ALGORITMO
Agora que conhecemos como é a estrutura básica de um algoritmo, vamos retomar ao nosso
problema da média e ver como é um algoritmo que resolve esse problema.
Vamos analisar o que foi feito nas seções de declaração de variáveis (linha 3 e 4) e corpo do
algoritmo (linhas 6 a 10).
Declaração das variáveis:
Linha 3 – estamos declarando três variáveis com nomes “num1”, “num2”, “num3” com tipo
inteiro (número sem casas decimais). Estas variáveis servem para armazenar a entrada de dados.
Linha 4 – estamos declarando uma variável com nome “media” (sem acento - lembre-se
dos caracteres especiais que não podem ser utilizados) com o tipo de dado real (número com vír-
gula). Como o resultado de uma divisão pode ser um número com vírgulas, não podemos declará-
-la junto com as demais que são do tipo inteiro. Essa variável, como o nome indica, armazenará o
resultado do cálculo da média que realizaremos no corpo do nosso algoritmo.
Corpo do algoritmo:
Linhas 6 a 8 - estamos indicando que devem ser lidos valores de entrada e estes
serão armazenados nas respectivas variáveis.
Linha 9 – esta linha deve ser analisada em duas partes. A primeira parte até o
símbolo de atribuição “<-”, que indica que o resultado da expressão que está à direita
do símbolo que será armazenado na variável que está à esquerda do símbolo. Agora,
vamos analisar a expressão que está à direita. Trata-se de uma expressão matemática,
onde os valores lidos anteriormente, representados por suas variáveis, serão somados
(assim como na matemática, os parênteses indicam a precedência) e, posteriormente,
o valor dessa soma será dividido por 3.
Linha 10 – por último, estamos realizando a saída de dados, ou seja, estamos
dando o comando de escrita da média.
Importante: essa vai ser a última dica referente às palavras reservadas que
teremos em nosso material. A lógica das palavras reservadas será a mesma
para todo o decorrer do material e também no decorrer da sua vida,
enquanto estiver programando. Uma palavra que representa algo fora do
contexto do problema, não pode ser utilizada como nome de variável.
Nesse algoritmo, temos mais 4 palavras reservadas (“inteiro”, “real”, “leia” e
“escreva”). Novamente, devemos lembrar que não podemos utilizar essas
palavras como nome de alguma variável.
15ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora que temos o nosso algoritmo pronto, o que fazemos com ele. Lembre-se
que falamos sobre o que é um algoritmo e o que ele representa. Então, se o nosso al-
goritmo representa os passos para a solução de um problema, precisamos validar se o
nosso problema inicial foi solucionado.
Para fazer isso, vamos testar o nosso algoritmo, ou seja, iremos segui-lo passo
a passo para ver se no seu final, todas as premissas de que nosso problema nos im-
pôs foram satisfeitas.
TESTANDO O ALGORITMO – TESTE DE MESA
Assim como, para a construção do algoritmo, temos uma técnica a ser seguida,
para testá-lo temos também uma técnica. Chamamos essa técnica de teste demesa.
Um teste de mesa é a simulação de cada um dos comandos referente ao corpo do
nosso algoritmo. Aí você me pergunta, como fazemos para conferir se tudo está certo?
Para problemas simples como este, podemos fazer isso “de cabeça”, guardando a
cada passo os valores das variáveis em nossa memória, mas conforme os problemas vão
ficando mais complexos e extensos, não podemos confiar somente na nossa memória
para saber quais os valores armazenados em cada uma das variáveis do nosso algorit-
mo, conforme vamos executando os passos. Porém, temos uma ferramenta bem simples
para fazer isso. Vamos fazer como um computador faz, vamos armazenar os dados.
Considerando que, até o momento estamos escrevendo nosso algoritmo no papel, simu-
laremos a execução deste também no papel.
Quando analisamos um algoritmo, a primeira coisa a se fazer é analisar a declaração das
variáveis. Para cada uma das linhas de declaração de variáveis, criaremos uma tabela com o
nome da variável e o tipo dela. Essa tabela será nossa memória no decorrer da execução.
Para criá-la, colocamos cada uma das variáveis em uma coluna com nome da variável e o
tipo de dados referentes. Vamos à tabela de dados do nosso algoritmo:
Agora que temos o cabeçalho da nossa tabela montada, as linhas serão os valores de cada
uma delas após a execução de cada comando do nosso algoritmo. Consideraremos os valores da
entrada de dados para as variáveis num1, num2 e num3, que são respectivamente 3, 6 e 9.
Para entender os valores desse teste de mesa, tenha o algoritmo ao seu lado e simularemos
ele juntos. Vamos executar cada instrução (linhas 6 a 10) e atualizarmos a nossa tabela de dados.
Na linha 6, o algoritmo pede para ler um valor que será armazenado na variável num1.
Como a variável num1 é do tipo inteiro, devemos utilizar somente valores desse tipo. Consi-
deramos o valor 3. Como essa é a primeira instrução executada, criamos a primeira linha da
tabela com o valor 3 na coluna referente a variável num1 e deixamos todas as outras com zero
(uma variável numérica sem valor, e que possui o valor zero).
num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real)
16ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora, na linha 7, o algoritmo pede novamente para lermos um valor e armazená-
-lo na variável num2. Consideramos o 6 como valor lido. Criaremos uma nova linha e na
coluna do num2 colocaremos o valor lido. Nas demais colunas, como os valores das va-
riáveis não sofreram alterações, repetimos o valor anterior.
Agora, na linha 8, segue a mesma lógica, porém, para a variável num3, com valor
9, o resultado é o seguinte:
Agora, na linha 9, temos uma diferença. Temos o nosso cálculo da média, que deve
ser feito somando as variáveis num1, num2 e num3, e depois dividido por 3. E é nesse
tipo de instrução que a tabela de dados do nosso teste de mesa comprova sua eficiência.
num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real)
3 0 0 0,0
Para saber qual o valor de cada uma das variáveis utilizadas, devemos consultar a última
linha, até o momento, para saber qual é. No nosso caso, 3, 6 e 9. Fazemos a soma “de
cabeça” (18) e dividimos por 3. Para o resultado, 6, criamos uma nova linha na tabela e
o colocamos na coluna referente a média. Novamente, as demais variáveis não sofreram
alterações, portanto, os valores são repetidos.
Por último, na linha 10, a instrução é de saída. Nesse caso, não precisamos atua-
lizar nossa tabela de dados, porém, podemos simular a saída, escrevendo-a à parte da
nossa tabela, como se fosse em um monitor do computador. Infelizmente, não é pos-
sível demonstrar esse passo aqui, mas é importante que saibamos que ele existe, pois é
ele que representa todo o processamento realizado.
Se pensássemos nesse algoritmo como um programa de computador, sem esse
passo, o usuário teria digitado os valores, mas nunca veria o resultado, ou seja, para ele,
o programa não executou nada.
num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real)
3 0 0 0,0
3 6 0 0,0
num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real)
3 0 0 0,0
3 6 0 0,0
3 6 9 0,0
num 1 (inteiro) num2 (inteiro) num3 (inteiro) media (real)
3 0 0 0,0
3 6 0 0,0
3 6 9 0,0
3 6 9 6,0
17ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
Agora chegou a sua vez de escrever alguns algoritmos para resolução de pro-
blemas. Vou descrever os problemas e você deverá criar o algoritmo e testá-lo, uti-
lizando a técnica do teste de mesa que foi vista anteriormente:
1. Escreva um algoritmo que leia dois valores numéricos que representem as
medidas de base e altura de um triângulo. Tendo estas medidas, calcule a área
desse triângulo escrevendo o seu resultado.
OBS: se você não lembra como se calcula a área de um triângulo, digite no Goo-
gle “cálculo área do triângulo”, você encontrará facilmente a fórmula desejada.
2. Escreva um algoritmo que leia o número de horas trabalhadas por um profis-
sional autônomo e também o valor hora e o percentual de imposto que ele deve
pagar. Calcule o valor do imposto a ser descontado desse profissional e o valor
líquido que ele tem por receber. Escreva, primeiramente, o valor do imposto e,
na sequência, o valor líquido.
OBS: O percentual do imposto informado será em base 100, ou seja, para um
imposto de 15% será informado o valor 15. Lembre-se que você deve realizar um
cálculo intermediário com esse número para calcular o valor do imposto.
18ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Aprendemos, através de instruções, como fritar um ovo, porém, a lista de
instruções pode ser diferente para resolução de um mesmo problema.
2. Aprendemos quais são os passos necessários para construção de qualquer
algoritmo e que precisamos internalizar esses passos para criação de um
pensamento lógico para solução dos problemas que serão resolvidos pe-
los nossos algoritmos.
3. Vimos que não existe uma única forma de se representar um algoritmo. As
três formas de representação que conhecemos foram: descrição narrativa,
fluxograma e português estruturado – pseudocódigo. Este último é o que
utilizaremos por sua semelhança com os programas de computador.
4. Aprendemos como é a estrutura de um algoritmo representado em português estruturado, ten-
do como estrutura básica as seguintes sessões: inicialização e declaração do nome do algoritmo,
declaração das variáveis, início, corpo e fim do algoritmo. Analisamos também o exemplo do
algoritmo, que calcula a média aritmética de três números quaisquer informados pelo usuário.
5. Finalizando, aprendemos como testar e validar o nosso algoritmo, utilizando como ferra-
menta o teste de mesa e a tabela de dados para acompanhamento dos valores das variáveis no
decorrer da execução.
6. Espero que você tenha conseguido criar os algoritmos que foram propostos para exercitar. Qual-
quer dúvida, utilize o ambiente virtual para esclarecimentos. Nos vemos no próximo capítulo.
RESUMINDO O CAPÍTULO
19
VARIÁVEIS: TIPOS
DE DADOS E
OPERADORES
Ao falarmos sobre variáveis, para uma compreensão dos algoritmos,
precisamos entender como elas funcionam em um programa que é
executado em um computador.
20ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Em um programa de computador, que você está acostumado a
utilizar, existem muitas variáveis declaradas. Essas, armazenam os
dados úteis durante a execução do programa. Um exemplo seria a va-
riável que armazena as coordenadas da posição da janela em relação à
tela. Sempre que arrastamos a janela, os valores da coordenada mu-
dam, ou seja, o valor que está armazenado na variável será modificado
pelo nosso programa.
Se as variáveis são responsáveis por armazenar nossos dados,
onde é que esses dados são armazenados?
Você já deve ter ouvido falar sobre memória RAM, aquela memó-
ria que nossos computadores utilizam para armazenar as informações
que são necessárias somente durante a execução dos programas.
Toda a declaração de variável feita nos programas, ou,em nosso
caso, nos algoritmos, fazem com que o computador reserve um de-
terminado espaço na memória, para que aquela informação seja salva,
novamente, durante a execução do programa.
Quais informações podemos armazenar
dentro das variáveis?
No capítulo anterior, quando analisamos a estrutura de um
algoritmo, vimos que existe uma seção específica destinada a de-
claração de variáveis (abaixo, novamente a sintaxe das linhas de
declaração de variáveis). Sabendo que todas as variáveis declara-
das possuem um tipo de dado bem definido, sejam elas agrupadas
por tipo (mais de uma variável por linha), ou declaradas individu-
almente (linha a linha), aprenderemos quais são os tipos de dados
que podemos dar as nossas variáveis.
TIPOS DE DADOS
No capítulo anterior, em nosso primeiro algoritmo completo,
declaramos variáveis de dois tipos de dados. Um tipo foi o “inteiro”,
que representa os números inteiros, positivo ou negativo, e o ou-
tro foi o “real”, que representa os números que podem ter, ou não,
casas decimais. Esse é o tipo de dados numéricos, que possui essas
duas divisões.
Porém, existem outros tipos de dados destinados a outras fun-
cionalidades. Vamos a todos eles:
21ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
• Numérico: conforme já comentado, esse tipo de dado serve para declarar variáveis que
armazenam números. Porém, sintaticamente, “numérico” não é um tipo de dado váli-
do, pois precisamos especificar qual o tipo de número que nossa variável armazenará.
Devemos declarar nossas variáveis numéricas utilizando o tipo específico de número
armazenado, ou seja, “inteiro” ou “real”.
Importante salientar que, no corpo do algoritmo, quando queremos colocar um nú-
mero com separador decimal, devemos utilizar o símbolo de ponto para essa função, e não
vírgula, como estamos acostumados no sistema brasileiro. No caso da separação de milha-
res, que no sistema brasileiro utilizamos o ponto como símbolo, não precisamos fazê-la.
Exemplo de declaração:
• Lógico: quando uma variável possui esse tipo de dado, ela pode ter somente um dos
dois valores válidos: Verdadeiro ou Falso. Esse tipo de dado servirá para que possamos
realizar testes lógicos com nossas variáveis.
Exemplo de declaração:
• Caractere: variáveis declaradas com esse tipo de dado servem para armazenar ex-
pressões literais que não são interpretadas pelo nosso algoritmo (podemos, inclusive,
utilizar caracteres especiais em nossas expressões literais). Um exemplo de variável
que pode ser declarada utilizando esse tipo de dado, é uma variável que armazena o
nome de uma pessoa.
Exemplo de declaração:
Após aprendermos como utilizar esses dados, vamos observar um exemplo:
Na legislação trabalhista brasileira, sempre que um funcionário gozará de seu período
de férias, ele deve receber, adiantado, uma bonificação no valor de 1/3 de seu salário bruto
como “Adicional de Férias”. Considerando essa definição, escreva um algoritmo que leia o
Importante: para que possamos, no corpo do algoritmo, atribuir um valor
literal em uma variável, ou também utilizá-lo em chamadas de funções
(como por exemplo, na função de saída “escreva”), precisamos colocar a
expressão literal a ser atribuída entre aspas.
Ex:
Nome <- “joão da silva”
22ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
nome de um funcionário e o seu salário bruto e calcule o valor
a ser recebido por esse funcionário como acréscimo de férias,
escrevendo ao final o nome do funcionário, o valor do salário
bruto, o valor do adicional de férias e o valor total, conforme
exemplo de saída abaixo:
RESOLUÇÃO DO ALGORITMO PARA CÁLCULO DE FÉRIAS
Antes de verificar a resolução e análise da solução abaixo,
tente criar esse algoritmo por conta própria. A prática é que te
levará cada vez mais próximo da perfeição.
Importante: Sempre Que, No Decorrer Deste
Material, For Mostrado Um Exemplo De Saída
De Dados (Escrita) De Um Algoritmo, Cada
Expressão De Escrita Gera Uma Nova Linha E
Esta Sempre Irá Iniciar Com O Caractere “>”. Na
Sequência, A Informação De Saída.
Lembrando que não existe uma única, vamos analisar a solução acima.
Linhas 3 e 4: declaração das variáveis, conforme já vimos anteriormente,
porém, utilizando o tipo de dados “caractere”.
Linhas 6 e 7: aqui estamos vendo um adendo na forma de ler o nome do
funcionário para a variável “nome”. Estamos primeiro escrevendo qual dado
será lido, para depois realizar a leitura. Podemos utilizar o comando escreval,
que vai escrever a frase “Digite o nome do funcionário”, em uma nova linha, na
tela do usuário. Pensando no monitor do usuário, temos a seguinte situação:
23ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Onde teremos, na segunda linha, o cursor piscando e aguardando que o usuário digite a in-
formação e pressione “ENTER” para prosseguir. Utilizamos, primeiramente, a escrita, para que o
usuário não veja somente o cursor piscando sem saber o que ele deve fazer. Quando simularmos
nossos algoritmos em um programa, você conseguirá ter uma visualização melhor desta “técnica”.
Linhas 8 e 9: similar às linhas 6 e 7, porém, dessa vez, para a leitura do salário bruto.
Linha 10: cálculo do adicional de férias através da divisão do valor do salário por 3, repre-
sentando nosso 1/3 de férias. Após o cálculo, o valor é armazenado na variável “ferias”.
Linha 11: Similar à linha 10, porém, o cálculo é do valor total que se dá através da soma do
valor do salário bruto com o valor do adicional de férias, calculado anteriormente. A variável to-
tal vai receber o valor do resultado da soma do “salario” com as “ferias”.
Linha 12: novamente, uma forma diferente para realizar uma função já conhecida. Nes-
se caso, estamos escrevendo uma expressão literal explicativa antes da informação propria-
mente dita. Podemos escrever várias informações (variáveis ou expressões) na mesma linha,
separando-as por vírgula.
Linhas 13, 14 e 15: similar à linha 12, estamos escrevendo as demais informações solicitadas.
Agora que já conhecemos os tipos de dados, vamos entender um pouco mais o que pode-
mos fazer com cada um desses tipos de dados. Vamos conhecer os operadores que podem ser
utilizados para manipulação dos dados.
OPERADORES
Mesmo sem nos darmos conta, nos exemplos e exercícios realizados até agora, já
utilizamos alguns tipos de operadores. Por mais que alguns sejam simples, como por
exemplo, o operador de atribuição, “<–”, e não precisam maiores explicações, vamos
analisar uma lista com todos os operadores que podemos utilizar em nossos algoritmos.
Operador de atribuição: conforme comentado acima, este é um dos primeiros
operadores que utilizamos. Sua sintaxe é bastante simples: primeiramente, é avaliado
o resultado da expressão que está à direita do operador e o resultado é armazenado na
variável que está à esquerda do operador.
Operadores aritméticos: os operadores aritméticos permitem a realização de cálcu-
los matemáticos, utilizando valores armazenados em variáveis, ou ainda, valores escritos
diretamente no código. Até agora, já vimos os operadores referentes às quatro operações
matemáticas básicas. Vamos ver os demais, inclusive repassando novamente por estes:
Operador Representação no algoritmo Exemplo
Soma + valor1 + valor2
Subtração – valor1 – valor2
Multiplicação * valor1 * valor2
Divisão / valor1 / valor2
Exponenciação ^ valor1 ^ valor2
Módulo (resto inteiro da divisão) mod valor1 mod valor2
Operadores aritméticos
24ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Operadores relacionais: os operadores relacionais são utilizados para comparação de dois valo-
res conforme o tipo de operador utilizado. O resultado de uma expressão que utiliza um operador rela-
cional é sempre um resultado lógico, ou seja, verdadeiro ou falso. Vamos ver quais são:
Operadores lógicos: Os operadores lógicos são utilizados para associar expressões ou variáveis
lógicas. O resultado destas expressões também é um resultado do tipo lógico.
Operador Representaçãono algoritmo Exemplo
Maior > valor1 > valor2
Maior ou igual ≥ valor1 ≥ valor2
Menor < valor1 < valor2
Menor ou igual ≤ valor1 ≤ valor2
Igual = valor1 = valor2
Diferente <> valor1 <> valor2
Operadores relacionais
Operador Representação no algoritmo Exemplo
e
(conjunção)
E – este operador retorna verdadeiro se somente os dois lados da
expressão forem verdadeiros.
<expressão 1> E
<expressão 2>
ou
(disjunção)
OU – este operador retorna verdadeiro se ao menos um dos lados
da expressão forem verdadeiro.
<expressão 1> OU
<expressão 2>
não
(negação)
NAO – este operador inverte o valor da expressão adjacente, ou
seja, retorna verdadeiro para uma expressão com valor falso ou
retorna falso para uma expressão com valor verdadeiro.
NÃO <expressão>
Operadores lógicos
25ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Você deve estar se perguntando, de que forma os operadores relacionais e lógicos são
utilizados dentro de um algoritmo? Antes de lhe mostrar como iremos utilizá-los, primeiro
preciso que você entenda bem como eles funcionam, pensando somente nos valores lógicos
que eles retornam. Para isso, vamos analisar uma ferramenta que chamamos de tabela ver-
dade. Ela nos auxiliará no entendimento destes operadores.
TABELA VERDADE
Para a análise da tabela verdade, vamos considerar duas variáveis, A e B, analisan-
do os resultados possíveis dos operadores relacionais e o resultado da combinação com
operadores lógicos.
Analisando a primeira linha, na primeira coluna temos a suposição de que A = 3 (A é
igual a 3) seja verdadeiro e, na segunda coluna, a suposição de que B <> 20 (B é diferente de
20) seja verdadeiro também. Dessa forma, temos para cada um dos operadores lógicos (“E”,
“OU” e “NÃO”) o valor de uma operação, considerando as duas primeiras suposições. Ainda
analisando a primeira linha, para “A = 3 E B <> 20” temos um retorno verdadeiro, da mesma
forma que para “A = 3 OU B <> 20” temos um retorno verdadeiro, porém, para o operador
“NÃO” na expressão “NÃO A = 3”, como “A = 3” é verdadeiro e a função do operador é in-
verter o valor, o resultado final será falso.
Lembre-se! O resultado de uma expressão contendo um operador relacional ou lógico,
sempre resultará em um valor lógico. Por ora, você deve atribuir o resultado dessas expres-
sões sempre em uma variável do tipo lógico.
OPERADOR
E
OPERADOR
OU
OPERADOR
NAO
Expressão no
Algoritmo
A = 3 B <> 20 A = 3 E B <> 20 A = 3 OU B <> 20 NAO A = 3
RESULTADOS
V V V V F
V F F V F
F V F V V
F F F F V
Tabela verdade
26ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
PRECEDÊNCIA DE OPERADORES
Assim como na Matemática, em algoritmos temos operadores
que possuem precedência sobre outros. Você deve estar lembrado que
quando temos uma expressão matemática composta, por exemplo,
de operadores de adição e multiplicação, primeiramente devemos
resolver a operação de multiplicação, para só, então, resolvermos a
operação de adição.
Um pequeno exemplo para recordarmos. Resolva a expressão:
2 + 5 × 3 + 4 = ?
Se você chegou ao resultado 21, você resolveu essa expressão
corretamente.
Em algoritmos, também temos regras de precedência de ope-
radores. Considerando os operadores aritméticos, a precedência é
a mesma utilizada nas expressões matemáticas. Primeiro, temos a
precedência dos parênteses, que vem depois da operação de expo-
nenciação, que após as operações de multiplicação, divisão e por úl-
timo as operações de adição e subtração.
Importante: nas expressões
matemáticas temos os separadores
de expressões, os parênteses,
chaves e colchetes. Em algoritmos,
temos somente os parênteses.
Quando se deseja separar mais de
uma operação, que na matemática
utilizaríamos as chaves e colchetes,
em algoritmos utilizamos
parênteses aninhados. Vamos a um
exemplo:
Considere a seguinte expressão
matemática:
{5 + (2 + 5) × (3 + 4)} × 2
Nesse caso, em algoritmos teríamos
a seguinte expressão:
(5 + (2 + 5) * (3 + 4)) * 2
27ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Considerando que em algoritmos temos ainda os operadores lógicos e relacionais, temos
uma lista de precedência um pouco maior. Para melhor compreensão, podemos montar uma pi-
râmide de precedência, onde no topo da pirâmide estará a maior precedência, e a base da pirâmi-
de representa a menor precedência:
Levando em conta essa pirâmide de precedência, temos que considerar a utili-
zação de parênteses sempre que temos expressões que mesclam operadores de maior
e menor precedência, para que, assim, tenhamos certeza do resultado esperado.
Se, em uma expressão, os operadores possuem a mesma precedência, ela será
executada da esquerda para a direita.
COLOCANDO EM PRÁTICA
Agora é hora de exercitarmos para fixarmos um pouco mais sobre o que aca-
bamos de aprender.
Considerando o exercício anterior de cálculo das férias, modifique o algorit-
mo criado para que seja deduzido o INSS (desconto de 11%), escrevendo o valor de
INSS e também: “O funcionário deve descontar IRRF: <VERDADEIRO/FALSO>”,
onde a expressão, após os dois pontos, indica se o usuário deve descontar o im-
posto de renda na fonte. Considerando que na tabela do imposto de renda de 2016,
diz que, deve ser descontado o imposto na fonte para todos que obtiveram ganhos
superiores a 1.903,98 (lembre-se que no corpo do algoritmo, o símbolo de separa-
dor decimal é o ponto e a vírgula, não sendo necessário a utilização do separador
de milhar), já descontado o valor do INSS.
28ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
RESOLUÇÃO DO ALGORITMO PARA CALCULO DE FÉRIAS
Antes de verificar a resolução e análise da solução a seguir, tente criar esse algoritmo por conta própria. A prática é que
te levará cada vez mais próximo da perfeição. Não me cansarei de escrever isso, pois tenho a certeza de que é uma verdade.
Para a solução, primeiro devemos lembrar que não temos o operador de percentual nos operadores matemáticos, po-
rém, sabemos que 11% pode ser realizada através da operação matemática, 11 dividido por 100. Ou seja, a expressão mate-
mática para esse cálculo pode ser representada da seguinte forma:
inss = total × 11 ÷ 100
Tendo isso em mente, vamos ao nosso algoritmo:
29ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
Da mesma forma que no capítulo anterior, e também em todos os demais que
teremos nesse material, chegou a sua vez de exercitar:
1. Considerando que em uma escola existe média para aprovação em uma disci-
plina, a média ponderada do ano deve ser superior a 6, escreva um algoritmo
que leia o nome do aluno que se deseja calcular a média, as notas dos 4 bimes-
tres, calculando a média. A média ponderada deve ser calculada levando em
conta que o primeiro bimestre tem peso 1, o segundo peso 2, e assim susceti-
velmente. No final, escreva o nome do aluno, a média atingida e VERDADEIRO
OU FALSO para o caso do aluno ser aprovado ou não.
DICA: Se você não lembra como se calcula uma média ponderada, realize uma
pesquisa rápida para entender esse cálculo.
2. Escreva um algoritmo que leia um número inteiro e escreva VERDADEIRO se o
número for par ou FALSO se o número for ímpar.
DICA: Você deverá utilizar o operador módulo.
3. Escreva um algoritmo que leia dois números reais, o primeiro representando o
raio da base de um cilindro, e o segundo, a altura deste cilindro, logo, calcule o
volume do mesmo.
DICA: A mesma do primeiro exercício.
30ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Aprendemos os tipos de dados que podemos utilizar em nossos algorit-
mos: numéricos (inteiro e real), lógico e caractere.
2. Aprendemos quais são os operadores que podem ser utilizados para a
realização de expressões aritméticas. Soma, subtração, multiplicação,
divisão, exponenciação e módulo.
3. Da mesma forma, aprendemos que existem operadores relacionais que
podem montar expressões sobre os mesmos valores numéricos, porém,
o resultado das expressões sempre será um valor lógico. São eles: maior,
maior ou igual, menor,menor ou igual, igual e diferente.
4. Como último grupo de operadores, vimos os operadores lógicos, que nos
permitem trabalhar com valores lógicos para compor expressões entre
2 valores (operadores “E” e “OU” e, também, o operador “NAO”, que
realiza a inversão de um valor lógico.
RESUMINDO O CAPÍTULO
31
VISUALG
Até este momento, nossos algoritmos foram construídos somente papel.
Vamos dar um passo adiante!?
32ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Conforme vimos, superficialmente, no capítulo de Introdução, quando quere-
mos desenvolver um programa, utilizamos uma linguagem de computador. Isso não
quer dizer que teremos que, até o final dessa disciplina, ficarmos praticando somen-
te no papel. Apesar desse tipo de prática ser bastante eficiente para o aprendizado,
uma vez que o único fator envolvido é a solução do problema, utilizando uma pseu-
dolinguagem, temos disponível, gratuitamente, uma ferramenta que nos permite
construir e testar nossos algoritmos, utilizando essa mesma pseudolinguagem.
A ferramenta, chamada de Visualg, foi criada por um professor universi-
tário que viu a importância dos alunos das disciplinas de Algoritmo, praticarem
a criação e testes dos algoritmos propostos, tendo uma ideia mais real de como
seria esse mesmo processo caso estivessem utilizando uma linguagem de pro-
gramação já difundida.
A ideia é que, daqui para frente, possamos utilizar essa ferramenta para a cons-
trução dos nossos algoritmos.
DOWNLOAD
Primeiramente, é necessário realizar o download através do link:
https://sourceforge.net/projects/visualg30/files/latest/download
Após o término do download, tem-se disponível um arquivo em formato RAR que deve ser
descompactado, utilizando algum software adequado para essa função. Logo, à descompactação,
temos acesso ao aplicativo visualg30, conforme imagem ao lado.
INTERFACE DO VISUALG
Abrindo esse aplicativo, tem-se acesso à interface que permite a criação e os testes do nosso
algoritmo. próxima imagem, você visualizará a interface e todos os componentes que serão utili-
zados daqui para frente.
Instalação Visualg
33ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
34ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Editor que utilizaremos para a criação do nosso algoritmo. Nele, digitamos
os códigos que permitem que nosso algoritmo funcione.
2. Quando estamos executando nosso algoritmo, nesta listagem aparecerão
todas as variáveis declaradas, o tipo e o valor da variável até o momento
da execução. A utilização deste quadro só representa uma funcionalidade
quando o algoritmo está sendo executado com breakpoints ou através da op-
ção passo a passo. Mais adiante, veremos como executá-lo dessa forma.
3. Nesse painel, poderemos executar a saída do nosso aplicativo, ou seja, é
nele que todos os resultados dos comandos de escrita aparecerão após te-
rem sido executados.
4. Após ter concluído a construção do algoritmo, utilizamos esse botão para
executá-lo de forma contínua, ou seja, as únicas paradas na execução, ocor-
rerão quando for executado um comando de leitura (comando “leia”).
5. Com esse botão, nosso algoritmo é executado passo a passo, ou seja, nós é
que decidimos quando deve ser executado o próximo comando (a próxima
linha). Para a execução passo a passo, devemos utilizar esse botão para cada
linha a ser executada.
Agora que já conhecemos a interface da ferramenta, vamos entender algumas
pequenas diferenças que temos com relação a linguagem que utilizamos até agora.
1. As palavras reservadas Algoritmo (primeira linha), Var, Inicio e Fimalgoritmo tem a primeira
letra maiúscula, sendo que a palavra reservada que indica o final do algoritmo é uma só, sem o
espaço de separação, ficando Fimalgoritmo.
2. A indentação padrão (espaços em branco que nos auxiliam de forma visual a ver os blocos - até
o momento, temos o bloco de declaração de variáveis e o bloco do corpo do algoritmo) é reali-
zada através de 3 espaços.
3. Verifique corretamente as aspas a serem utilizadas para a criação de expressões literais, do tipo
caractere. De forma escrita é difícil de exemplificar, mas cuide para utilizar aspas duplas sem indi-
cação de direção (não se deve utilizar o caractere aspas que aponta à direita quando está iniciando
e à esquerda quando está finalizando). Desconfie das aspas quando, ao executar um algoritmo, for
mostrado um erro em uma linha que tenha expressões literais, como no exemplo que segue:
Tirando esses detalhes, tudo o que aprendemos até o momento pode ser executado nessa ferra-
menta. É isso que faremos agora.
Aviso
35ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
UTILIZANDO O VISUALG PARA CRIAR E EXECUTAR ALGORITMOS
Primeiramente, quero que saiba que entendo que pode passar algumas dificul-
dades durante o processo até que consiga pegar a prática. Como não estamos em uma
disciplina presencial, quero que lembre que pode sempre recorrer ao nosso ambiente
virtual para sanar suas dúvidas. Porém, esse atendimento pode não ser on-line e não
quero que interrompa seus estudos até que obtenha um retorno. Dessa forma, vou
lhe apresentar uma estratégia para tentar resolver os problemas que venham surgir.
Você pode utilizar a opção ajuda que a ferramenta oferece. Nessa opção será
aberto o navegador contendo toda a documentação de ajuda provida pela ferramenta.
Entretanto, não quero que você se apavore com os problemas que podem surgir.
Normalmente, eles são de fácil resolução, bastando que tenhamos atenção a toda in-
formação que a ferramenta nos dá, comparando com o algoritmo que escrevemos nela.
Agora, deixamos de perder tempo e vamos começar com um algoritmo que já
desenvolvemos.
Digite o algoritmo de cálculo de férias com desconto no INSS que criamos em
conjunto no capítulo anterior, fazendo as adaptações necessárias. Na próxima ima-
gem, você consegue visualizar como ficou o algoritmo, antes da execução:
Exemplo
36ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
EXECUTANDO O ALGORITMO
Após digitá-lo, vamos executar pelo botão “Executar” (número 4 da tela explicativa).
Nesse momento, a ferramenta começará a execução de cada uma das instruções que coloca-
mos. Primeiramente, todas as variáveis serão declaradas. Depois, no primeiro comando do corpo
do algoritmo, será escrita a mensagem. Porém, o que você vê logo após clicar no botão executar,
é uma janela preta do prompt de comando, similar a imagem:
Executando algoritmo
Arrastando a janela do prompt sobre o algoritmo, conseguimos ver os dois pai-
néis direitos, o superior que mostra todas as variáveis declaradas com seus respecti-
vos valores, e o inferior que mostra o resultado de saída até o momento. Conforme co-
mentei anteriormente, quando utilizamos a opção de “Executar”, a única parada que é
feita para interação acontece quando se executa a instrução leia. É isso que a janela do
prompt de comando está aguardando. Que seja digitado algum valor que será armaze-
nado na variável “nome”, conforme o comando da linha 9 do nosso algoritmo.
Digite um nome qualquer e pressione Enter. Nesse momento, o que você vê na
tela deve ser algo semelhante a imagem:
Executando algoritmo
37ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Antes de digitar o salário, note que no painel das variáveis, a variá-
vel nome já mudou de valor, tendo agora, exatamente, o que foi digitado
no comando leia.
Nesse momento, você pode digitar o salário e, novamente, pressionar
Enter. Agora você deve estar vendo no prompt de comando algo semelhante
ao que se vê na imagem abaixo:
Eu sei que não é exatamente o que esperávamos, isso porque não houve
quebra de linhas entre cada um dos comandos “escreva”. Quando desejamos
que o Visualg quebre a linha após escrever alguma sentença na tela, devemos
utilizar o comando “escreval”. Faça a mudança e teste novamente se desejar.
Executando algoritmo
Voltando a nossa análise do que temos em tela, repare no painel superior direito, o das variáveis, o que
ele representa. Se você leu e sededicou até aqui no material, notará que ele é bem semelhante à tabela que pro-
duzimos quando executamos nosso teste de mesa manualmente. A única diferença aqui é que não temos, linha
a linha, a evolução dos valores das variáveis conforme a execução dos comandos. Esse painel, quando chega-
mos no final da execução do algoritmo, representa a última linha da tabela produzida em nosso teste de mesa.
Para fechar o prompt de comando, basta pressionar ESC.
EXECUTANDO O ALGORITMO PASSO A PASSO
A execução passo a passo se aproxima muito do teste de mesa que executamos quando estamos testan-
do nosso algoritmo “no papel”. Quando expliquei para você o funcionamento do teste de mesa, à primeira
vista não deve ter sido um processo simples, imagino eu.
Explicar esse mesmo processo utilizando o Visualg, parece-me um tanto quanto mais complicado, sen-
do passível a problemas na interpretação com minhas palavras, levando em conta a informação que eu pre-
tendo passar. Por isso, preparei um vídeo, especialmente, para explicar como funciona a execução passo a
passo através do Visualg.
Quando você tiver visto a facilidade que esse processo lhe proporciona, saiba que quase todas as gran-
des linguagens de programação, através de alguma ferramenta de desenvolvimento, permite esse tipo de
execução. Isso pode lhe salvar horas no futuro quando os algoritmos se tornarem cada vez mais complexos.
Busque sempre saber as facilidades de desenvolvimento disponíveis para cada linguagem de programação
que você utilizará para desenvolver seus programas.
38ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
Vamos aproveitar as novas ferramentas para praticar um pouco mais o desenvolvimento de al-
goritmos. Crie os algoritmos conforme os enunciados abaixo.
Dica geral: se não lembrar das fórmulas para os cálculos, realize uma breve pesquisa para relembrar.
1. Criar um algoritmo que leia um valor que representará o diâmetro de um círculo e calcule e im-
prima a área deste círculo.
Exemplo para validação: para entrada = 10, o valor esperado de saída = 78,53975.
2. Criar um algoritmo que leia um valor que representará uma temperatura em graus Célsius. Cal-
cule e imprima esta temperatura convertida para Fahrenheit e Kelvin.
Exemplo para validação: para entrada = 30 o valor esperado de saída para Fahrenheit = 86, e
saída para Kelvin = 303,15
3. Criar um algoritmo para calcular e imprimir o valor de uma prestação em atraso, considerando a
seguinte fórmula: prestação = valor + (juros_dia × dias_atraso) onde juros_dia = valor + %juros.
Importante: lembre que em algoritmos não temos um operador pronto para o cálculo de percentual.
Exemplo para validação: para entrada valor = 30, dias_atraso = 10 e %juros = 1 o valor esperado
de saída = 33
39
ESTRUTURAS
CONDICIONAIS
Neste capítulo, aprenderemos sobre operadores lógicos e relacionais.
Acompanhe-me!
40ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Em alguns exemplos, até verificamos que podemos atribuir valores a variáveis
lógicas utilizando esses operadores, mas essa é somente uma pequena funcionalidade
que esses operadores nos provêm nos algoritmos que construímos.
Uma situação que diversos algoritmos precisam lidar é com condições. No con-
texto de um algoritmo, uma condição representa um ponto decisório em que a execução
do algoritmo seguirá fluxos diferentes conforme o retorno da expressão condicional.
Isso quer dizer que poderemos escrever trechos de códigos diferentes que serão execu-
tados somente quando o valor de uma ou mais variáveis respeitar a condição proposta.
Fazendo uma analogia com a vida real, podemos exemplificar uma estrutura
condicional com a seguinte frase: “Se o tempo será de chuva vou sair de casa com o
guarda-chuva, caso contrário sairei de manga curta”. Nessa frase, podemos avaliar
exatamente a estrutura condicional que teremos em nossos algoritmos.
Vamos analisar primeiramente a condição: “Se o tempo será de chuva”. Nessa
expressão, a variável que terá seu valor avaliado é o “tempo” como previsão do tem-
po e chuva é o nosso valor de comparação. Agora, analisaremos as hipóteses. Caso a
expressão seja verdadeira, a ação será “vou sair de casa com o guarda-chuva”. Caso a
expressão seja falsa, a ação será “sairei de manga curta”.
Começaremos a realizar condições em nossos algoritmos, iniciaremos com con-
dições simples do tipo “se-então”.
ESTRUTURA SE-ENTÃO
A sintaxe para utilizarmos essas estruturas em nossos algoritmos é a seguinte:
Na primeira linha, temos a palavra reservada “se”, que indica o início da estrutura condi-
cional. Após, temos entre parênteses, a nossa expressão condicional que pode ser uma expressão
simples (uma condição utilizando somente um operador relacional) ou composta (mais de uma
condição, cada qual separada por um operador lógico). Por último, temos a palavra reservada
“entao”, que indica que está iniciando o conjunto de instruções que serão executadas quando a
condição for verdadeira.
Na segunda linha, podemos ter uma ou mais instruções (chamamos também de bloco de
instruções) que serão executadas até que se finalize a estrutura condicional através da palavra
reservada “fimse”, que pode ser vista na terceira linha.
Importante: se você notar no exemplo da sintaxe, na linha 2 temos um espaço
extra à esquerda. Conforme comentado anteriormente, esse espaço representa a
indentação do nosso bloco de instruções.
Não é obrigatório indentar os blocos de código, pois não mudará em nada a
execução do seu algoritmo. Porém, a indentação é um artifício visual para que
saibamos que aquele bloco de código está dependendo de uma determinada
situação para ser executado.
41ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Vamos a um exemplo simples, conforme o seguinte enunciado:
Escreva um algoritmo que leia um número que representa uma temperatura e
escreva “quente” se a temperatura for maior que 30.
Considerando essa instrução, nosso algoritmo pode ser construído assim (esse,
e os próximos algoritmos daqui em diante, já está na estrutura do Visualg, ou seja,
você pode digitá-lo, como aqui se encontra, retirando somente o número das linhas):
Vamos analisar a nova estrutura, das linhas 7 à 9.
Na linha 7, iniciamos nossa estrutura com a palavra reservada “se”, depois te-
mos na nossa condição que é a temperatura maior do que 30 e, no final da linha, a pa-
lavra reservada “entao”, que indica que dali em diante teremos o bloco condicional.
Na linha 8, a nossa instrução condicional (devidamente indentada), represen-
tada pelo comando “escreval”.
E por último, na linha 9, finalizamos a estrutura condicional com a palavra reservada, “fimse”.
Faça diversos testes no Visualg, colocando valores menores, maiores e iguais a 30 e execute
em modo Passo a Passo. Note que a palavra “quente” só será escrita quando o valor digitado for
realmente maior que 30.
Agora que você já testou bastante esse algoritmo e entendeu o seu funcionamento, escreva
e teste um algoritmo, utilizando o Visualg, considerando o seguinte enunciado:
Escreva um algoritmo que leia dois números e escreva, “são iguais”, caso estes números
sejam realmente iguais.
Não colocarei a solução desse algoritmo aqui, pois quero que você pratique os seus co-
nhecimentos. Se você está com dúvida de como criar o algoritmo para o enunciado dado, leia
novamente o material.
ESTRUTURA SE-ENTÃO-SENÃO
Além da estrutura “se-então”, que nos permite executar um bloco de instruções, caso a ex-
pressão condicional seja verdadeira, temos também a estrutura “se-então-senão”, que permite
também a execução de um bloco de instruções quando a expressão condicional for falsa.
A sintaxe é bem semelhante. Vamos a ela:
42ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Analisando a sintaxe, podemos notar que foi incluída, na linha 3, a palavra reservada
“senao”, a qual indica o final das instruções, caso a condição seja verdadeira e, o início das
instruções, caso a condição seja falsa.
Agora, vamos modificar umpouco o enunciado que vimos anteriormente.
Escreva um algoritmo que leia um número que represente uma temperatura e escreva
“quente”, se a temperatura for maior que 30 e escreva “frio” caso contrário.
Note agora, que na linha 9 temos a palavra reservada “senao”, que indica o final dos
comandos, caso a temperatura seja maior que 30 e o início dos comandos caso, seja menor ou
igual a 30. Na linha 10 temos a nossa instrução de escrita para quando a condição retornar um
valor falso. Na linha 11, temos a finalização de toda a estrutura condicional.
Novamente, sugiro que você execute esse algoritmo no Visualg, em formato passo a pas-
so, digitando valores maiores, menores e igual a 30.
Agora, praticaremos um algoritmo para um enunciado (esse algoritmo também não es-
tará com a solução):
Escreva um algoritmo que leia dois números. Se os números forem diferentes, calcule
a subtração do primeiro pelo segundo número e escreva o resultado. Caso eles sejam iguais,
calcule a soma e escreva o resultado.
43ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
EXPRESSÕES CONDICIONAIS COMPOSTAS
Até o momento, tanto os exemplos dados, quanto os algoritmos que você deve ter criado para
praticar, utilizam expressões condicionais simples, ou seja, possuem somente uma condição.
Se você voltar um pouco no conteúdo, verá que temos os operadores lógicos que nos permi-
tem realizar expressões que possuem mais de uma condição.
Do ponto de vista das estruturas condicionais, a sintaxe é a mesma, mudando somente a ex-
pressão presente dentro dos parênteses, mas vamos ver alguns exemplos para que você coloque
em prática os operadores lógicos que vimos lá atrás.
Vamos considerar um novo enunciado:
Escreva um algoritmo que leia 3 números. Escreva “igual”, caso os 3 números sejam iguais
ou escreva “diferente”, caso algum deles seja diferente dos demais.
Solução:
Importante: para analisar esse algoritmo, devemos acionar um
pensamento lógico. O enunciado do algoritmo solicitava que fosse
feita a comparação entre os três números para verificar se os três são
iguais, porém, temos somente dois testes (n1 = n2 e n2 = n3).
Podemos construir o algoritmo somente com dois testes, porque
no caso de n1 ser igual a n2 e n2 ser igual a n3, podemos assumir
implicitamente que n1 é igual a n3.
Vamos praticar mais um pouco, considerando o seguinte enunciado:
Escreva um algoritmo que leia dois números e escreva “você digitou um nú-
mero maior do que 20” caso algum dos números digitados seja realmente maior do
que 20. No caso, se nenhum dos números for maior que 20 escreva “os dois números
são menores que 20”.
44ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
ESTRUTURA DE SELEÇÃO ANINHADA
Nem sempre, ao escrevermos nossos algoritmos, temos regras simples do tipo “se-en-
tão” ou “se-então-senão”. Às vezes, temos várias regras condicionais que não podem ser
traduzidas para algoritmos somente com as estruturas, “se-então-senão”.
Suponha que você tenha um problema para resolver, que tenha um enunciado assim:
Escreva um algoritmo que leia um número que escreva “positivo”, caso o número di-
gitado seja maior que zero, “negativo” caso o número seja menor que zero ou “neutro” se o
número for igual a zero.
Desse modo, com uma estrutura “se-então-senão”, conseguimos facilmente atender
os dois primeiros requisitos, porém, o último (do neutro) ficará sem atendimento, a não
ser, é claro, que utilizássemos três estruturas diferentes do tipo “se-então”, uma para cada
requisito. Vamos ver como ficaria nesse caso:
Se você rodar esse algoritmo através do Visualg, verá que ele funciona, perfeitamente,
atendendo todos os requisitos do problema. Porém, executando-o em modo passo a passo,
notará que, mesmo que você digite um número maior do que zero, a execução do algoritmo
realizará os outros dois testes. E isso pode ser um problema.
Vamos supor que, no enunciado do algoritmo tenha um outro requisito que diga assim:
Escreva um algoritmo que leia um número que escreva “correto”, caso o número
digitado for igual a 10. Se não for, o algoritmo deve escrever “positivo”, caso o número
digitado seja maior que zero, “negativo” caso o número seja menor que zero ou “neutro”
caso o número seja igual a zero.
45ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Dessa maneira, não basta somente adicionar uma nova estrutura para testar se o
número é igual a 10. Supondo que nossa ideia seja adicionar uma nova estrutura para o
teste igual a 10, anterior as demais, como o algoritmo executará também os próximos
testes, no resultado final seria escrito, caso digitado o número 10, primeiro “correto”
e na sequência “positivo”, pois os demais testes também seriam executados.
Faça o teste no Visualg, digitando o número 10:
Para solucionar esse problema, temos ao nosso dispor uma técnica de aninha-
mento de condições.
Primeiramente, temos que entender o que significa uma estrutura estar aninha-
da. No nosso contexto, a melhor definição quando falamos que algo está aninhado é
dizer que está envolto. Vamos pensar na nossa estrutura “se-então-senão”. Porque
não podemos aninhar, dentro do bloco do “senão” uma nova estrutura “se-então-senão”? Na ver-
dade, é isso mesmo que temos que fazer para resolver esse tipo de problema. Vamos aninhar as es-
truturas condicionais, tantas quantas forem necessárias para atender aos nossos requisitos.
Agora que já entendemos o que podemos fazer, o mais importante é: Como fazer? Seguindo o
mesmo enunciado, analise como não é nada de outro mundo:
Podemos notar que o que foi feito não é a aplicação de um novo conceito, mas sim uma nova
técnica. A ideia aqui é utilizar o bloco “senão” para uma nova estrutura condicional. Isso faz com que
essa estrutura só seja executada se o primeiro teste retornar um valor falso.
Importante: note o quão importante é a utilização da técnica de indentação, nesses
casos. Faça o teste retirando os espaços em branco do início da linha e veja como,
“visualmente”, fica mais complicado de entender o fluxo do algoritmo.
46ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora que já entendemos o funcionamento das estruturas condicionais “se-então” e “se-
-então-senão” e também as técnicas de expressões condicionais compostas e de estruturas con-
dicionais aninhadas, vamos ver em um enunciado mais prático, como podemos aplicá-las.
Escreva um algoritmo que leia três números inteiros que representam as dimensões de um
possível triângulo. Esse algoritmo deve verificar primeiramente se as dimensões formam um tri-
ângulo, escrevendo “não é um triângulo” quando não formar. Caso forme um triângulo, o algo-
ritmo deve classificá-lo como equilátero, isósceles ou escaleno. Seguem as regras:
• Para formar um triângulo, nenhum dos lados pode ter comprimento igual a zero e nenhum
dos lados pode ter comprimento igual a soma dos demais lados.
• Para ser um triângulo equilátero, todos os lados devem ter o mesmo comprimento.
• Para ser um triângulo isósceles, dois lados devem possuir o mesmo comprimento.
• Para ser um triângulo escaleno, todos os lados devem possuir comprimentos diferentes.
Minha primeira dica para esse algoritmo é não olhar a solução que virá na sequência. Lem-
bre-se: é muito importante a prática para o desenvolvimento do raciocínio lógico.
Vamos aprender as dicas para construção do algoritmo? Primeiramente, tente compreen-
der, do ponto de vista prático, as restrições que o enunciado nos impõe. Entenda como elas cor-
relacionam para que você possa organizar a construção do seu algoritmo.
Quando começar a escrever o algoritmo, tenha em mente que você deve tentar
quebrá-lo em partes, para que fique mais simples. Dessa forma, vamos tentar aplicar
uma regra do enunciado de cada vez. Sabendo que essa regra funciona (fazendo pe-
quenos testes de mesa direcionados), aí sim, passamos à próxima regra.
Agora é a hora de pegar o papel e a caneta, para escrevê-lo ou iniciar um novo algo-
ritmo no Visualg, caso você se sinta mais confortável. Lembre-se:só pule para a solução
quando você tiver concluído ou se você não conseguiu desenvolver por conta própria.
47ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Ao analisar a solução, atente para os comentários (frase que vem após a sequência de duas
barras “//”). Quando estiver criando um algoritmo que possua um nível de complexidade maior,
utilize a técnica de comentar os trechos que são mais importantes para o seu entendimento.
Se você chegou até aqui e ficou um pouco confuso, volte um pouco no material e releia
com calma o funcionamento das estruturas condicionais. No final do capítulo, você encon-
trará alguns exercícios para praticar. Se desejar, neste momento, você pode tentar resolver
algum destes exercícios antes de seguir adiante para o último tipo de estrutura condicional,
que pode ser utilizada na construção dos algoritmos.
ESTRUTURA DE SELEÇÃO MÚLTIPLA ESCOLHA
Antes de entendermos como funciona esse tipo de seleção, vamos deixar claro que ela
não é uma estrutura essencial. Isso quer dizer, que os problemas que podemos solucionar
com esse tipo de estrutura, também podem ser solucionados com uma estrutura do tipo
“se-então-senão” aninhadas.
Iniciaremos por um exemplo de problema e solução, utilizando uma estrutura “se-en-
tão-senão”. Posteriormente, solucionaremos o mesmo problema, porém, utilizando uma
estrutura de seleção múltipla escolha.
Suponha o seguinte problema:
Escreva um algoritmo que calculará o valor a ser pago como IPTU (Imposto Predial e
Territorial Urbano). Para isso, o algoritmo deverá ler dois números. O primeiro representa
o código de um tipo de imóvel e o segundo representa a área do imóvel, cujo IPTU será cal-
culado. O cálculo é realizado, multiplicando-se a área do imóvel pelo fator referente ao tipo
do imóvel, conforme tabela. Caso o código do tipo do imóvel digitado não esteja presente
na tabela, apresente uma mensagem de erro informando: “Tipo do imóvel inválido”. Se o
código digitado for válido, realize o cálculo e escreva a área digitada, a descrição do tipo do
imóvel e o valor do IPTU calculado.
Lembre-se! Primeiro tente solucionar por conta própria, após verá a solução.
Obs: a área do imóvel não é necessariamente um número inteiro.
Código Tipo Imóvel Fator IPTU
1 Residencial – Casa R$ 200,00
2 Residencial – Prédio R$ 180,00
3 Comercial – Casa R$ 300,00
4 Comercial – Prédio R$ 280,00
5 Industrial R$ 400,00
Executando algoritmo
48ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Espero que você tenha chegado até aqui com um
algoritmo que solucione o problema proposto. Não
tenho a pretensão que o algoritmo seja igual ao pro-
posto, mas acredito que o seu também venha estar
bem estruturado para solução do problema. Agora,
analisaremos a solução dada.
Primeiramente, quero falar de uma técnica que
foi usada. Conforme o enunciado do algoritmo, o
cálculo do IPTU é o mesmo, independente do tipo do
imóvel, o que muda é somente o fator e a descrição
do tipo do imóvel. Tendo isso em mente, criamos es-
truturas condicionais que somente preenchem vari-
áveis para cada tipo de imóvel. No final do algoritmo,
na linha 37, uma outra estrutura condicional testa se
o fator de multiplicação é igual a zero, informando
que, caso esse teste retorne verdadeiro, o código do
imóvel digitado é um código inválido. Esse teste se
torna verdadeiro no caso de um código inválido, pois
na linha 12, a variável fator foi inicializada com va-
lor zero. A aplicação dessa técnica permite que não
repitamos as linhas 40 à 43 em cada um dos testes
realizados pelas estruturas condicionais.
49ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora, analisaremos as estruturas condicionais. Note, entre as linhas 13 e 36, não passam de
estruturas condicionais “se-então-senão” aninhadas. Cada uma das estruturas verifica se o código
digitado corresponde ao da estrutura, para, em caso verdadeiro, atribuir os valores corresponden-
tes às variáveis “fator” e “tipo imóvel”. Caso a expressão de seleção seja avaliada como falsa, passa
para o próximo teste a ser realizado dentro do bloco “senão”, até que atinja o último teste (“código
= 5”), onde não é necessário ter uma estrutura “senão”, pois a mensagem de código inválido está
sendo validada com o teste simples, realizado na linha 37. Construir o algoritmo, isolando os testes
lógicos de seleção do teste lógico de saída, facilitará uma alteração do algoritmo para, por exemplo,
colocarmos mais códigos de tipos de imóveis. Nesse caso, bastaria complementarmos o último teste
de validação (linha 29) para incluirmos uma estrutura senão e continuaremos conforme a quanti-
dade de novos testes que forem necessários.
Caso não tenha ficado claro o funcionamento desse algoritmo, sugiro digitá-lo no Visualg, as-
sim como está, e executá-lo passo a passo para entender como o mesmo será executado. Siga adian-
te somente após entendermos a lógica aplicada. Isso é essencial para compreensão da estrutura de
seleção múltipla escolha.
Agora que já está bem entendido o funcionamento desse algoritmo, vamos iniciar a análise de uma
situação que acontece nele. Especificamente, entre as linhas 13 e 36, como vimos anteriormente, estamos
somente verificando o código digitado para atribuirmos o valor às variáveis referentes ao código digitado.
Note que a estrutura aninhada já começa a se tornar visualmente complicada para o entendimen-
to do algoritmo. Imagina se tivéssemos nas regras do enunciado uma tabela com 10 códigos de tipo de
imóveis. Imagine o quão complicado seria essa estrutura condicional.
É justamente para resolver esse problema que a estrutura de seleção múl-
tipla escolha existe. Com essa nova estrutura não precisamos ficar aninhando
estruturas do tipo “se-senão-então”. Modificaremos esse algoritmo para en-
tender como funciona essa estrutura.
50ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
A mudança ocorreu entre as linhas 13 a 36 do primeiro algoritmo,
que foram substituídas pelas linhas 13 a 29 desse novo algoritmo.
Na linha 13, iniciamos pela palavra reservada, “escolha”, segui-
da da variável “código”. Essa instrução indica que está sendo iniciada
uma estrutura múltipla escolha que avaliará o valor da variável “códi-
go”. Nas linhas 14, 17, 20, 23 e 26, temos a palavra reservada “caso” e
os possíveis valores à variável. Isso quer dizer que será testado o valor
da variável e a execução pulará à linha do valor correspondente. Ao en-
contrarmos o valor correspondente, a execução seguirá pelas linhas de
código posteriores até que seja encontrada uma instrução com a palavra
reservada “caso”, “fim escolha” e uma outra palavra reservada que ve-
remos na sequência. Encontrar uma dessas palavras reservadas indica o
final do bloco de instruções do caso.
Não ficou claro? Não se preocupe! Analisaremos a estrutura de for-
ma isolada e fora do contexto do problema.
Agora, com a estrutura isolada, fica mais fácil entendermos como ela funciona. Note na primeira linha a
palavra reservada “escolha”, seguida da variável que será testada.
Das linhas 2 a 8 temos sempre um caso testado com a palavra reservada homônima, seguido de um bloco
de instruções referente ao caso.
Agora, na linha 9, surgiu uma nova palavra reservada, chamada “outrocaso”. Conforme havíamos co-
mentado anteriormente, três palavras reservadas encerram um bloco de instruções de um caso. São elas
“caso”, que indica que um novo teste está inciando; “fimescolha” que indica o final de toda a estrutura de
seleção de múltipla escolha, e, agora, a palavra reservada “outrocaso”.
Essa palavra “reservada” indica que iniciou um bloco de instruções, que será executado sempre que não
for encontrado um caso correspondente para o valor da variável que acompanha o início da estrutura.
Dentro da estrutura de seleção de múltipla escolha, podemos ter quantos casos desejarmos, porém, só po-
deremos ter um bloco final do tipo “outrocaso”, dentro da estrutura representada pela palavra “fimescolha”.
É importante salientarque não é obrigatória a utilização do bloco “outrocaso” dentro da estrutura. Note,
no exemplo do cálculo do IPTU, que essa estrutura não foi utilizada, já que o teste para o código inválido é feito
através da estrutura “se-então-senão”, que testa a variável, “fator”, para saber se o código informado é válido.
A ideia de utilizarmos essa estrutura para realização de testes é não aninharmos muitas estruturas do
tipo “se-então-senão” quando todas elas testam um valor de uma determinada variável.
Vamos praticar um pouco para fixarmos todo o conteúdo visto no capítulo?
51ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
Alguns enunciados pedirão, explicitamente, para que seja utilizada uma determinada estrutura de seleção. Aqueles
que não o fizerem, você pode optar por utilizar qualquer estrutura que atenda as necessidades para a solução do algoritmo.
Lembre que você pode utilizar tanto o Visualg, quanto o papel e caneta para escrever os algoritmos. Sugiro que ten-
te as duas abordagens para sempre estar ciente que o funcionamento do algoritmo é o mais importante.
1. Escreva um algoritmo que leia um número, identifique e escreva se ele é divisível por 10, 5, 3 e 2, escrevendo por
quais outros ele é divisível. Se ele não for divisível por nenhum, escreva “não é divisível”. Obs.: ele pode ser divisí-
vel por mais de um dos números solicitados.
2. Escreva um algoritmo que leia 5 números - o maior e o menor dos 5 números.
3. Escreva um algoritmo que calcule a quantidade de combustível para percorrer
uma distância que será informada. Para identificar o consumo de combustível
do veículo, será lido um código que representa o tipo do veículo e o consumo
que cada tipo está especificado na tabela. Caso o tipo informado não estiver na
tabela, informe que o tipo de veículo informado é inválido. Obs.: deve ser utili-
zada uma estrutura de múltipla escolha.
4. Uma loja de óculos de grau criou uma promoção que fornece descontos aos clientes conforme a sua idade. O valor
do desconto é calculado da seguinte forma: a idade da pessoa é igual ao valor do desconto aplicado ao produto, po-
rém, o desconto não pode ser superior à metade do valor original do produto. Considerando essa regra, a loja so-
licitou que você criasse um programa (algoritmo) que lerá o valor do produto e a idade do cliente e, considerando
tais dados, informará o valor do desconto e o valor a pagar pelo produto, já com o desconto aplicado.
Código Consumo
1 14Km/l
2 12Km/l
3 10Km/l
4 6Km/l
5 5Km/l
52ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Nesse capítulo, aprendemos que é possível controlar o fluxo de execução do algoritmo
através das estruturas condicionais, que através da avaliação de uma expressão lógica,
determina aonde seguirá a execução.
2. Foi visto que a estrutura condicional mais simples é a do tipo “se-então” que, com
base na expressão lógica, determina se o trecho de código do bloco “então” será ou
não executado.
3. A partir da estrutura “se-então”, evoluímos para a estrutura “se-então-senão”, que
possibilitará a execução de diferentes blocos, um quando a expressão condicional é
avaliada como verdadeira (bloco “então”) e outra quando falsa (bloco “senão”).
RESUMINDO O CAPÍTULO
4. Aprendemos a construir algumas expressões lógicas mais complexas através dos ope-
radores lógicos.
5. Novamente, evoluímos as estruturas condicionais, porém, sem um novo conceito. Foi
visto que podemos aninhar as estruturas condicionais para formar uma “cascata” de
validações.
6. Por último, mas não menos importante, vimos que as expressões condicionais ani-
nhadas podem ser transformadas em uma estrutura de seleção múltipla, quando todas
elas validam diferentes possibilidades de valores sobre uma mesma variável.
53
ESTRUTURAS DE
REPETIÇÃO
O nome “estrutura de repetição” já deve ter despertado um certo
interesse, porém, não sei se ele é autoexplicativo com relação a sua
funcionalidade. Compreenderemos sua funcionalidade através da
necessidade de sua existência.
54ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Vamos supor o seguinte enunciado:
Escreva um algoritmo que imprima os números pares no intervalo entre 1 e 10, inclusive.
Suponho que a criação desse algoritmo não seria nenhum problema para você, afi-
nal, bastariam 5 comandos “escreval” para atender ao requisito do problema.
Agora, vamos modificar o problema para, ao invés do intervalo de 1 a 10, o intervalo
de -100 a 100. Acredito que você deva estar achando que isso é loucura. Imagina escrever-
mos 200 vezes o comando “escreval”. Para que isso?
Na verdade, esse é um exemplo conceitual, mas alguns problemas práticos do mes-
mo estilo existem e podem ser solucionados sem que seja necessário, por exemplo, de 200
linhas com o mesmo comando.
Aqui, ocorrem as estruturas de repetição, similares ao controle de fluxo da execução
exercido pelas estruturas condicionais, controlam o fluxo para executar um número finito,
ou não, de vezes em um determinado trecho do algoritmo, chamado de bloco de repetição.
Da mesma forma que temos mais de um tipo de estrutura condicional, também temos
mais de um tipo de estruturas de repetição, cada uma com sua característica e funcionalidade.
Vamos aprender passo a passo, desde suas características, sintaxe e funcionamento.
ESTRUTURA DE REPETIÇÃO DE NÚMEROS DEFINIDOS
Como comentado na introdução do capítulo, a estrutura de repetição permite que um blo-
co de comandos seja executado mais de uma vez. No caso da estrutura de repetição de números
definidos, o próprio nome já nos indica quantas vezes o bloco de repetição será executado.
Por números definidos, não se engane e ache que se trata de uma quantidade definida e
conhecida de vezes. O que isso quer dizer? Quer dizer que a quantidades de vezes pode ser de-
finida através do valor digitado pelo usuário e que está armazenado em uma variável.
Bom, vamos deixar de ficar imaginando como funciona e aprenderemos de uma vez como
realmente acontece. E para isso, nada melhor do que um problema para ser solucionado.
Escreva um algoritmo que, primeiramente, solicite ao usuário que digite a quantidade de
números que serão, posteriormente, lidos para o cálculo da média aritmética entre eles.
Tendo em vista esse enunciado, acredito que agora ficou claro que não seria possível
construir esse algoritmo com o conhecimento sobre a construção que tínhamos até agora.
Certo? Não temos como prever qual número o usuário digitará para realizarmos todas as
leituras necessárias.
Agora, analisando o problema proposto, aprenderemos o que precisamos fazer.
55ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Vamos solicitar que o usuário digite um número N.
2. Depois, vamos solicitar que ele digite por N vezes números através de um bloco
de repetição. Cada número digitado deve ser somado em uma variável para cal-
cular a média posteriormente (lembre que, anteriormente, já vimos como se re-
aliza o cálculo da média aritmética – se não lembra, corre à internet pesquisar).
3. Após o término das leituras, vamos calcular a média, utilizando a soma realizada
no bloco de repetição e a quantidade de números N.
4. Por fim, mostraremos o resultado para o usuário.
Agora, vamos traduzir isso para um algoritmo:
Vamos compreender o que foi criado nesse algoritmo para o funcionamento dessa estrutura!?
Na linha 3 foram declaradas as variáveis do tipo inteiro, que utilizaremos no decorrer do
algoritmo. A variável “quantidade” armazenará a quantia de números que o usuário quer calcu-
lar em média. A variável “numero” servirá para ler cada um dos números que o usuário digitar
para calcular a média. O valor dessa variável sempre armazenará o último número lido, por isso
precisamos da variável “soma”, que servirá para irmos somando cada um desses números. Por
último, temos a variável “incremento”, que até agora pode não estar fazendo muito sentido.
Essa variável tem a função de servir de controle para que a estrutura de repetição saiba por ondecomeçar e até aonde deve ir até parar. Essa variável será incrementada cada vez que o bloco de
repetição for executado por inteiro.
Na linha 4, temos somente a declaração da variável média que, como o nome já sugere, ar-
mazenará a média calculada. O tipo dela é real, pois nem sempre a divisão da soma pela quantidade
retornará um número inteiro.
Importante: até o momento foi utilizado o termo “estrutura de repetição”,
porém, é muito comum encontrarmos na literatura, ou até conversando
com outras pessoas ligadas ao contexto de desenvolvimento de sistemas, a
expressão “laço de repetição”. No decorrer do material, você poderá encontrar
as duas expressões, que serão utilizadas conforme se encaixar melhor nas
frases, mas elas representarão exatamente a mesma coisa.
56ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Agora, vamos pular para a linha 10 (acredito que as anteriores você sabe bem o que
fazem). Nessa linha, começa a estrutura de repetição. Esse comando, no português estrutu-
rado, que estamos utilizando, é quase uma frase comum. Mas vamos analisar em partes. A
estrutura inicia com a palavra reservada “para” seguida da variável que controlará a quan-
tidade de repetições, no nosso caso, a variável incremento. Após, temos a palavra reservada
“de” seguida de um número que indica o valor inicial, que será atribuído à variável de con-
trole. Na sequência, mais uma palavra reservada, agora a palavra é “ate”, que está seguida
de outro número que indica o valor final, que a variável incremento deve ser maior, para que
o laço de repetição se encerre. E, por último, nessa linha, a palavra reservada “faca”, que
indica, que dali em diante, inicia o bloco de repetição.
Por ora, vou desconsiderar a análise do bloco de repetição que está entre as linhas 11 a 13.
Vamos continuar a análise na linha 14. Essa linha está nos indicando que ali é o fim da
estrutura de repetição, ou seja, demarcando o final do bloco de repetição.
Ainda, antes de analisar o bloco de repetição, vamos entender como funciona a estru-
tura. Concentre-se para ler exatamente as palavras, com calma, e para auxiliar o entendi-
mento, uma tabela verdade somente da variável “incremento” e “quantidade”.
Suponha que o usuário digitou 3 na leitura realizada na linha 7. Vamos agora à linha
10, onde inicia-se a estrutura de repetição. Ao executar essa linha, por ser a entrada no
laço de repetição, será atribuído o valor inicial à variável “incremento”, no caso 1, e será
realizada a validação de uma expressão lógica “incremento > quantidade”. Como a ex-
pressão retorna falso (variável quantidade possui valor 3), dizemos que o fluxo de execu-
ção “entra” na estrutura de repetição.
Serão executados os comandos das linhas 11 a 13 até que a execução chegue à pa-
lavra reservada “fimpara” na linha 14. Conforme visto anteriormente, essa palavra re-
servada indica o final do bloco de repetição e, também, que o fluxo deve retornar para o
início da estrutura de repetição.
57ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Como agora não estamos mais na entrada da estrutura de repetição, esse comando
incrementará em uma unidade a variável “incremento”, para 2, e validará se o valor dela é
maior que o valor da variável quantidade. A validação é falsa (2 não é maior que 3), então a
execução seguirá novamente para o bloco de repetição, atingindo o “fimpara” e retornando
novamente para linha 10.
Novamente, será incrementada a variável “incremento” e testada para validar se é
maior que o valor final. E mais uma vez a validação é falsa (3 não é maior que 3), então o flu-
xo seguirá da linha 11 até a linha 14, retornando mais uma vez para linha 10.
A variável “incremento” sofre mais um incremento, passando para o valor 4. Mais
uma vez é feita a validação, porém, a expressão retorna verdadeiro. Nesse momento, o fluxo
da execução pulará à linha, imediatamente após a palavra “fimpara”. No nosso caso, essa
linha é um comentário, então o próximo comando a ser executado é o da linha 16.
Pronto! A estrutura de repetição finalizou sua execução e agora o fluxo seguirá seu
curso normal.
Agora que estamos entendidos como funciona a estrutura de repetição, podemos vol-
tar e analisar o bloco de repetição, das linhas 11 a 13.
Na verdade, não precisamos de uma análise mais detalhada, pois trata-se de um bloco
simples, onde é informado para o usuário que ele deve digitar o enésimo número (lembra o
que está armazenado na variável “incremento”), através do comando “escreval”, onde será
feita a leitura desse número, através do comando leia, e o valor é acumulado na variável soma.
Aqui cabe um comentário importante. Lembra que na linha 8 a variável “soma” rece-
beu o valor 0. Isso é feito, porque a forma de acumular um valor com os demais anteriores
acontece, somando-se o valor da própria variável com o valor que se deseja acumular. Por
isso, o comando da linha 13 é “soma = soma + número”.
Na linha 16 e 17 também não temos nenhuma novidade. A primeira realiza o cálculo da
média, dividindo o valor acumulado na variável soma pela quantidade de números lidos. A
segunda escreverá o valor final da variável média para o usuário.
Ficou confuso? Minha sugestão é a mesma dos capítulos anteriores. Digite o código
no Visualg, execute-o em modo passo a passo e leia atentamente a análise que acabamos de
fazer. Isso é muito importante antes de seguirmos adiante no conteúdo.
Isolaremos a estrutura de repetição de número definidos e analisaremos a sua sintaxe.
Analisando somente a sintaxe.
Linha 1, começa pela palavra que indica o início da estrutura, seguida da variável de
controle. Na sequência, a palavra reservada “de”, seguida do valor inicial, que pode ser um
número explícito ou implícito através de uma variável. Após, temos a palavra “ate”, que
vem seguida do valor final, assim como o valor inicial pode ser explicito ou implícito. Por
último, a palavra reservada “faca” indicando o início do bloco de repetição.
58ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
O bloco de repetição pode conter quantos comandos forem
necessários para resolução do problema, sendo permitido a utili-
zação de qualquer tipo de comando que foi utilizado até agora no
corpo dos algoritmos.
Por fim, na linha 3, temos a palavra reservada “fimpara” que
tem duas funções. Indicar o final da estrutura de repetição, mo-
vendo o fluxo da execução para o início da estrutura sempre que
a execução chegar nela, e demarcar para aonde o fluxo deve ser
movido quando a estrutura de repetição finalizar, no caso, para o
próximo comando válido, posterior a ela.
Chegados aqui, estamos aprendidos sobre o funcionamento
dessa estrutura de repetição. Agora nos falta algo muito impor-
tante. PRATICAR!!!
Diferente dos outros capítulos, vou propor alguns exercícios
específicos para cada uma das estruturas de repetição, não dei-
xando para praticar somente no final do capítulo.
Vamos ver o quão interessante pode ser tornar os nossos
problemas, e, por consequência, nossos algoritmos.
59ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
1. Produza um algoritmo que escreva os primeiros 500 números pares.
2. Escreva um algoritmo que leia um número e verifique se esse número
é ou não primo, escrevendo o resultado na saída.
3. Escreva um algoritmo que leia o valor inicial, o quociente e os núme-
ros de termos que deverão ser calculados para produzir como saída
uma progressão geométrica, resultante dos dados lidos.
Obs.: da mesma forma que nos exercícios anteriores, conforme mi-
nha sugestão para problemas matemáticos, quando você não lembra como
se realiza o cálculo, neste caso a sugestão segue sendo a mesma: pesquisar.
Isso fará com que você entenda, primeiramente, o problema, para depois
tentar solucioná-lo através de um algoritmo.
60ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
ESTRUTURAS DE REPETIÇÕES DE NÚMEROS INDEFINIDOS
Você notou que o título está no plural? Pois é, para o caso de estrutura de repetições de
númerosindefinidos, temos como construí-las de duas formas na linguagem algorítmica.
Antes de vermos como construímos estas estruturas, vamos entender para que elas
servem. Nas estruturas de números definidos, lembrem que sempre tínhamos um número
definido de repetições, que é determinado pelos valores iniciais e finais que são definidos
no comando “PARA”. Acontece que este tipo de estrutura não permite que resolvamos este
problema, por exemplo:
Escreva um algoritmo que leia as notas de uma turma da escola e calcule a média da
turma. Interrompa as leituras quando o usuário digitar a nota “-1”.
Com o comando “para”, que vimos anteriormente, não temos um número definido
de alunos, cujas notas serão lidas para que possamos interromper as leituras. É justamen-
te para permitir a solução desse tipo de problema que servem as estruturas de repetição de
número indefinido, onde não se sabe previamente quantas repetições devem ser realizadas.
Agora que já entendemos que tipo de problema as estruturas de repetição de número
não definido resolvem, vamos entender o porquê temos mais de um tipo. Na verdade, os
dois tipos são bastante idênticos com relação a estrutura, o que difere um do outro, basica-
mente, é o momento em que a condição de interrupção da estrutura de repetição é realizada.
Para que um laço de repetição de número indefinido suspenda a sua repetição, faz-se
necessária uma expressão condicional (a mesma que é utilizada nas estruturas condicio-
nais), que será avaliada para determinar qual o fluxo de execução será realizado. É justa-
mente o local onde essa expressão condicional deve se encontrar, determinará qual estru-
tura de repetição será usada.
Para isso, temos dois momentos, um no início do laço de repetição e outro no final do
laço. A diferença entre um e outro, com relação ao tipo de problema que resolvem, é que no
caso da expressão condicional estar no início, caso ela já retorne um valor falso na primeira
execução, os comandos que compõem o corpo do laço não serão executados nenhuma vez. Já,
quando optamos pela estrutura, cuja a expressão condicional está no final, os comandos do
corpo serão executados ao menos uma vez.
Vamos compreender como são essas estruturas na prática?!
ESTRUTURA DE REPETIÇÃO “ENQUANTO-FAÇA”
Essa estrutura de repetição realiza o teste condicional no início da estrutura. Confor-
me comentado, isso pode fazer com que os comandos do corpo da estrutura não sejam exe-
cutados nenhuma vez.
Vamos ver qual é a sintaxe, analisando linha a linha.
61ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Na linha 1, inicia a estrutura com a palavra reservada, “enquanto”, seguida de uma
expressão condicional e, por fim, a palavra reservada, “faca”. Na linha 2, temos os coman-
dos do bloco de repetição que podem ser um único ou mais de um. Por fim, na linha 3, temos
a palavra reservada “fimenquanto”, que indica o final da estrutura.
Com relação ao fluxo de execução, o funcionamento é o seguinte: ao chegar no início
dessa estrutura, será avaliada a expressão condicional. Caso ela retorne um valor verdadeiro,
o fluxo segue para os comandos do bloco de repetição até que chegue ao final do bloco, no
comando representado pela palavra reservada “fimenquato”. Ao chegar nesse ponto, o fluxo
é conduzido novamente para o início do bloco, onde a expressão condicional será validada
para determinar se continua ou não a execução dos comandos do bloco de repetição. Uma vez
que a expressão condicional retornar um valor falso, o fluxo da execução será conduzido para
a linha imediatamente após a palavra reservada “fimenquanto”. Lembrando que, na primei-
ra validação, caso a expressão condicional retorne falso, o fluxo já é movido para a linha pos-
terior ao final da estrutura, sem que nenhum comando do bloco de repetição seja executado.
ESTRUTURA DE REPETIÇÃO “REPITA-ATÉ”
Nesse tipo de estrutura, temos a posição inversa da estrutura condicional. Ela está po-
sicionada no final da estrutura, fazendo com que os comandos do bloco de repetição sejam
executados ao menos uma vez.
Vamos analisar a sintaxe linha a linha:
Na linha 1, inicia a estrutura com a palavra reservada “repita”. Na linha 2, temos o
bloco de repetição. Segue a mesma ideia dos anteriores. Por fim, na linha 3, temos a palavra
reservada “ate”, seguida da expressão condicional.
Nesse tipo de estrutura, podemos notar facilmente que o fluxo de execução seguirá,
primeiramente, pelo bloco de repetição para encontrar o final da estrutura, representado
pela palavra reservada “ate”, onde a expressão condicional será avaliada. Entretanto, dife-
rente da estrutura “enquanto-faça”, onde a expressão deve retornar um valor verdadeiro,
para que o bloco de repetição seja executado, na estrutura “repita-até”, é um valor falso que
determinará se o fluxo deve ser retornado ao início da estrutura. Então, caso a expressão
retorne falso, o fluxo é direcionado ao início da estrutura e caso retorne verdadeiro, o fluxo
segue para a próxima linha, interrompendo o laço de repetição.
62ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
Vamos analisar um exemplo de algoritmo utilizando cada uma das estruturas:
1. Escreva um algoritmo que leia as notas de uma turma da escola e calcule a média da tur-
ma. Interrompa as leituras quando o usuário digitar “-1”. Caso a média final dos alunos
ainda não tenha sido calculada, também será digitado “-1” para indicar essa situação.
O entendimento desse algoritmo, gostaria muito que você fizesse sozinho, com auxí-
lio do Visualg, na execução passo a passo. Vou explicar somente uma característica: como
o enunciado do problema indicou que “caso a média final dos alunos ainda não tenha sido
calculada, também será digitado -1”, estamos realizando uma primeira leitura fora do cor-
po da estrutura de repetição (linha 9). Ao chegar na linha 10, caso o valor digitado na linha
9 (ou posteriormente na linha 14) seja “-1”, a repetição é interrompida.
2. Escreva um algoritmo que leia um valor no intervalo de [10 a 100]. A leitura encerra
quando o usuário digitar um valor correto, dentro do intervalo. Se o valor digitado pelo
usuário estiver fora do intervalo [10 a 100], deverá imprimir a frase “O número lido
está fora do intervalo. Redigite!”.
Este algoritmo, eu também gostaria que você fizesse sozinho, com auxílio do Vi-
sualg, na execução passo a passo. O laço de repetição “repita” possui uma característi-
ca diferente dos outros laços estudados. O teste do valor lido é realizado no final, após a
leitura ser realizada. No problema apresentado, o corpo da estrutura de repetição inicia
na linha 5. Dentro da estrutura (linha 5 a 11), é realizada a leitura do “numero” (linha7)
e, após, realiza um teste condicional (linha 8 a 10) para verificar se o número digitado é
menor que 10 ou maior que 100.
Caso seja verdadeiro o teste condicional, será impresso a frase “O número lido está fora
do intervalo! Redigite!”. A estrutura de repetição encerra quando o usuário digitar um valor
(linha 7) para a variável “numero” maior ou igual a 10, ou, menor ou igual a 100. Assim, o laço
será interrompido quando o usuário digitar um valor correto, dentro do intervalo [10 a 100].
63ALGORITMOS E PROGRAMAÇÃO I
EXERCÍCIOS SUMÁRIO
1. Miguel tem hoje 2 anos e 0,88m de altura. Joana tem 4 anos e mede
1m. Sabe-se que a taxa de crescimento de meninos e meninas é dife-
rente no decorrer do tempo. Tendo em vista essa situação, escreva um
algoritmo que leia a idade inicial e altura de um menino e uma me-
nina e realize leituras consecutivas do crescimento anual de cada um
deles, até que o menino esteja maior que a menina ou até que ambos
deixem de crescer. Escreva a idade de cada um, a altura e qual deles é
o mais alto (o menino ou a menina).
2. Escreva um algoritmo que leia dois valores, um de hora e um de mi-
nuto, informando quantos minutos se passaram desde o início do dia.
3. Escreva um algoritmo que leia números inteiros e apresente ofato-
rial de cada número. Encerre o algoritmo quando o usuário digitar
um número negativo.
64ALGORITMOS E PROGRAMAÇÃO I
SUMÁRIO
1. Nesse capítulo, aprendemos as estruturas de repetição que nos permitem controlar o
fluxo de execução, para que um trecho possa ser executado mais de uma vez, conforme
a nossa necessidade.
2. Comentamos que podemos encontrar o termo “laço de repetição”, que representa
igualmente as estruturas de repetição.
3. Vimos que as estruturas de repetição podem ter dois tipos: estruturas de repetição de
número determinado e de número indeterminado, e dizer que um número é determi-
nado não, necessariamente, quer dizer que ele é conhecido.
RESUMINDO O CAPÍTULO
4. Aprendemos que podemos construir algoritmos utilizando estrutura de repetição de
números definidos através do comando: “para-de-ate-faca”.
5. Já, para uma estrutura de repetição de números indefinidos, temos duas alternativas:
“enquanto-faca”, onde o teste de controle é executado antes do fluxo de execução
“entrar” no bloco de repetição, ou seja, dependendo do valor da expressão lógica, o
fluxo da execução pode ignorar totalmente o código do bloco de repetição; “repita-a-
te”, onde o teste de controle é executado após a primeira execução do bloco de repeti-
ção, ou seja, o código será executado ao menos uma vez.
ALGORITMO
FRITANDO UM OVO
CONSTRUINDO UM ALGORITMO
RESUMINDO O CAPÍTULO
VARIÁVEIS: TIPOS DE DADOS E OPERADORES
TIPOS DE DADOS
OPERADORES
TABELA VERDADE
PRECEDÊNCIA DE OPERADORES
COLOCANDO EM PRÁTICA
RESUMINDO O CAPÍTULO
VISUALG
DOWNLOAD
INTERFACE DO VISUALG
UTILIZANDO O VISUALG PARA CRIAR E EXECUTAR ALGORITMOS
EXECUTANDO O ALGORITMO
EXECUTANDO O ALGORITMO PASSO A PASSO
ESTRUTURAS CONDICIONAIS
ESTRUTURA SE-ENTÃO
ESTRUTURA SE-ENTÃO-SENÃO
EXPRESSÕES CONDICIONAIS COMPOSTAS
ESTRUTURA DE SELEÇÃO ANINHADA
ESTRUTURA DE SELEÇÃO MÚLTIPLA ESCOLHA
RESUMINDO O CAPÍTULO
ESTRUTURAS de repetição
ESTRUTURA DE REPETIÇÃO DE NÚMEROS DEFINIDOS
ESTRUTURAS DE REPETIÇÕES DE NÚMEROS INDEFINIDOS
RESUMINDO O CAPÍTULO