Buscar

Guia de Estudos da Unidade 2 - Lógica de Programação Algorítmica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

2
Lógica de Programação Algorítmica
UNIDADE 2
1
UNINASSAU EAD –
LÓGICA DE PROGRAMAÇÃO
UNIDADE 2
Unidade 2: Estruturas de Repetição
Apresentação 
Olá! Seja bem-vindo(a) à UNINASSAU EAD. Estamos iniciando a segunda unidade 
da nossa disciplina de Lógica de Programação, cujo conteúdo já foi abordado no ví-
deo de apresentação da disciplina. Na unidade anterior, vimos o que são algoritmos, 
programas, exemplos e como construir um programa de computador. Vimos também 
a estrutura típica dos algoritmos, como declarar variáveis, como realizar entrada de 
dados e estruturas de seleção.
Nesta unidade, trataremos das estruturas de repetição determinadas e indetermina-
das, contadores, acumuladores e teremos um primeiro contato com os vetores, que 
serão abordados novamente na unidade 3.
Antes de prosseguir com esse texto, leia o capítulo 2 do livro-texto da disciplina. De-
pois disso, volte a este ponto para continuar o nosso estudo.
Agora que você já leu o segundo capítulo do nosso livro-texto, vamos iniciar os nos-
sos estudos.
2. 1 Estruturas de Repetição
Os computadores têm uma qualidade interessante: eles podem repetir um con-
junto de instruções várias vezes. Tanto pode fazer uma quantidade definida de 
vezes, que chamamos de “repetição determinada”, quanto fazer uma quantidade 
indefinida de vezes, que chamamos de “repetição indeterminada”, ou seja: você 
pode construir um algoritmo que realiza uma contagem definida, que você sabe 
onde começa e quando termina, e também pode fazer uma contagem indefinida, 
ou seja, você sabe quando começa, mas não prevê quando irá terminar. 
Cada uma dessas repetições (determinada ou indeterminada) tem uma aplicação 
específica, servindo para situações diferentes. Vamos estudar os dois tipos de re-
petição. Nesse estudo, faremos da mesma forma que antes: inseriremos progra-
mas no Visualg, testaremos e, juntamente com a nossa leitura e tirando dúvidas 
nos fóruns da disciplina, consolidaremos os nossos conhecimentos. 
É extremamente importante que você insira e teste todos os exemplos dados 
no Visualg, pois o aprendizado de Lógica de Programação só é efetivo com a 
realização de muitos exercícios.
 Vamos lá.
2
2.1.1 Estrutura de Repetição Determinada
Vamos iniciar conhecendo a estrutura de repetição determinada, ou seja, aque-
la que trabalha com uma quantidade definida de repetições. Com ela, podemos 
criar contagens que sabemos quando começam e quando terminam.
Para começar, insira o algoritmo abaixo no Visualg e depois execute usando F9:
 
ALGORITMO “REPETICAO DETERMINADA”
var
I : inteiro
INICIO
Para i:=1 ate 100 faca
 Escreval(i)
Fimpara
FIMALGORITMO
Vamos analisar cada ponto desse algoritmo? 
Na parte VAR, é declarada a variável “i”, inteira. Essa variável é utilizada na 
repetição determinada. Ela é chamada “variável de controle da repetição”, e no 
Visualg ela TEM que ser sempre do tipo INTEIRO, não pode ser Real nem Literal 
(Caracter).
Essa variável de controle pode ter qualquer nome, mas normalmente usamos o 
nome “i”. Lembramos mais uma vez que no caso do Visualg (e algumas outras 
linguagens, como o Pascal), essa variável tem que ser do tipo inteiro. Se você 
tentar usar uma variável REAL para controlar o PARA, o Visualg não aceitará – 
dará erro. 
A grande maioria das linguagens funciona dessa forma. Existem linguagens, con-
tudo, que admitem outras formas de indexação, mas esse assunto não será abor-
dado nesta disciplina. Por ora, vamos nos ater ao uso de inteiros nas variáveis de 
controle das estruturas de repetição.
No comando “escreval(i)”, é exibido o conteúdo da variável i. Esse conteúdo, de 
acordo com a repetição, vai de 1 até 100.
Por esse motivo, no algoritmo acima o computador executou o comando “escre-
val(i) “ cem vezes. A variável i mudou de valor variando de 1 até 100, de um em 
um (que é o passo de contagem padrão), ou seja, para cada valor que i assume, 
indo de 1 a 100, é feita uma exibição deste valor. 
Essa repetição é chamada “repetição determinada”, porque acontece um número 
fixo de vezes, que é conhecido previamente. Ou seja, se a variável i vai variar de 
3
1 até 100 pulando de um em um, tudo o que estiver dentro da repetição vai ser 
feito cem vezes. No caso da repetição determinada, é simples assim. Fácil, não 
é?
Vamos ver mais uma repetição determinada. Insira o algoritmo abaixo no visualg 
e execute.
ALGORITMO “REPETICAO DETERMINADA2”
var
I : inteiro
INICIO
Para i:=1 ate 100 passo 2 faca
 Escreval(i)
Fimpara
FIMALGORITMO
Você percebeu que ele funcionou de forma diferente do anterior? 
O uso da cláusula “passo 2” fez com que o algoritmo “pulasse” de 2 em 2, ou 
seja, a variável i assume os valores de 1,3,5,7,9 e assim por diante, indo até 99. 
A cláusula “passo”, portanto, faz com que a variável possa ser incrementada em 
valores diferentes de 1, que é o passo padrão. 
Legal, não é? Isso nos dá uma grande flexibilidade na hora de escrever os al-
goritmos que usam repetição determinada. Caso você se lembre das aulas de 
matemática do ensino médio, vai lembrar que é assim que criamos uma PA (pro-
gressão aritmética).
Agora vamos pensar um pouco: já que podemos contar para frente, ou seja, 
progressivamente, será que podemos contar para trás, ou seja, recuando de um 
número maior em direção a um número menor, de forma regressiva? Vamos ver 
isso acontecendo no algoritmo a seguir:
ALGORITMO “REPETICAO DETERMINADA3”
var
I : inteiro
INICIO
Para i:=100 ate 1 passo -1 faca
 Escreval(i)
Fimpara
FIMALGORITMO
4
Você percebeu que foi possível fazer uma contagem regressiva com a variável i 
variando de 100 até 1, recuando de -1 em -1? Ou seja: a repetição determinada é 
muito flexível, permitindo variar o passo de contagem para mais ou para menos. 
Não tem que ser necessariamente recuando de -1 em -1: pode ser qualquer va-
lor. É importante que para usar um passo negativo, o valor inicial deve ser maior 
do que o valor final. Se não for assim, não fará sentido usar um passo negativo. 
Vamos ver um exemplo disso. Insira o algoritmo abaixo no Visualg e execute com 
F9: 
ALGORITMO “REPETICAO NAOFUNCIONA”
VAR
I : inteiro
INICIO
Para i:=1 ate 10 passo -1 faca
 Escreval(i)
Fimpara
FIMALGORITMO
O que aconteceu? Não aconteceu! Executando esse algoritmo, você percebeu 
que o Visualg o executa e encerra, já que não faz sentido variar de 1 até 10 se 
cada elemento é igual ao anterior menos 1. Vai rodar, mas sem apresentar ne-
nhum resultado que valha a pena. Nesse caso, o passo acabou entrando em 
conflito com o objetivo do algoritmo.
Mas vamos trabalhar com repetição determinada da forma que nos interessa. Ela 
é extremamente útil, pois podemos fazer várias coisas usando a repetição deter-
minada.
Por exemplo, como faríamos para mostrar os valores das frações ½, ¼, 1⁄6, 1⁄8 e 
assim por diante até 1⁄20? Vamos ver um algoritmo que faz isso:
ALGORITMO “fracionando”
Var
i : inteiro
INICIO
Para i:= 2 ate 20 passo 2 faca
 Escreval (“ o valor de 1 /” , i , “ é “, 1/i)
Fimpara
FIMALGORITMO
5
A saída, ou seja, o que o algoritmo vai exibir na tela serão, sucessivamente, os 
valores equivalentes a ½, ¼, 1/6, 1/8, 1/10, 1/12, 1/14, 1/16, 1/18 e 1/20. 
Como podemos ver, a flexibilidade da estrutura de repetição determinada nos 
permite trabalhar de várias formas, com progressões numéricas diversas. 
Suponha que você quisesse listar todos os números múltiplos de 3 entre 1 e 
1000, como você faria ? 
Primeiro, vamos pensar em qual seria o primeiro múltiplo de 3 entre 1 e 100: é o 
próprio número 3. Portanto, podemos começar a repetição a partir dele.
Sabemos, ainda, que para achar o próximo múltiplo de 3, basta somar 3 ao ante-
rior. Assim, descobrimos que o passo é 3. Para encerrar a repetição, o último nú-
mero é 100. Podemos inclusive terminar antes, já que o último múltiplo de 3 entre 
1 e 100 é 99. 
Com essas informações, podemos tranquilamente construir o algoritmo, que ve-
mos abaixo:
ALGORITMO “MULTIPLOSDE3”
Var
i : inteiro
INICIO
Para i:=3 ate 99 passo 3 faca
 Escreval (i , “ é múltiplo de 3”)
Fimpara
FIMALGORITMO
Da mesma forma que podemos listar números usando estruturas de repetição, 
também podemos ler diversos números inseridos via teclado pelo nosso usuário, 
já que o visualg, como diversas outras linguagens de programação, aceita entra-
da de dados dessa forma.
Vamos ver um exemplo disso no algoritmo abaixo, que lê cinco números 
digitados via teclado pelo usuário (que no caso será você):
ALGORITMO “LENDO5NUMEROS”
Var
i : inteiro
numero : real
6
INICIO
Para i:= 1 ate 5 faca
 Escreval (“informe o “, i , ”º número”)
Leia(numero)
Fimpara
FIMALGORITMO
Da mesma forma que podemos ler números usando estruturas de repetição, tam-
bém podemos ler nomes inseridos via teclado. Vamos ver um exemplo disso no 
algoritmo abaixo, que lê cinco nomes digitados via teclado.
ALGORITMO “LENDONOMES”
Var
i : inteiro
nome : literal
INICIO
Para i:= 1 ate 3 faca
 Escreval (“informe o “, i ,”o nome”)
 Leia(nome)
Fimpara
FIMALGORITMO
Também podemos combinar esse recebimento de dados. Que tal um algoritmo 
que permite ler o nome e a idade de dez pessoas? 
ALGORITMO “LENDO_NOMES_E_IDADES”
Var
i : inteiro
nome : literal
idade : inteiro
INICIO
Para i:= 1 ate 10 faca
 Escreval (“informe o “, i, ”º nome”)
 Leia(nome)
 Escreval (“informe a idade de”, nome)
 Leia(idade)
Fimpara
FIMALGORITMO
7
Para construir repetições determinadas, você viu que usamos um comando PARA.
No link http://www.youtube.com/watch?v=eZ0m6_cee5Y você pode ver alguns exem-
plos do uso do comando PARA no Visualg. Esse comando é utilizado para repeti-
ções determinadas. O vídeo tem 20 minutos. Assista e depois volte para este ponto 
do texto.
Assistiu ao vídeo?
Então vamos continuar nosso trabalho. Depois que você viu esses exemplos, vamos 
estudar mais detalhadamente as estruturas de repetição determinada.
Conforme você pode ver no pseudocódigo 2.4 do nosso livro-texto, a estrutura do 
comando PARA é conforme vemos abaixo:
Var
I: inteiro
Valor_inicial, Valor_final: inteiro
INICIO
PARA I DE Valor_inicial ATE Valor_final [PASSO n] FACA 
comando1
comando2
...
comandoN
Fimpara
FIMALGORITMO
Nos exemplos que realizamos, sempre construímos o comando PARA conforme 
a estrutura acima. 
Agora, vamos voltar ao algoritmo no qual estávamos trabalhando:
ALGORITMO “LENDO_NOMES_E_IDADES”
Var
i : inteiro
nome : literal
idade : inteiro
INICIO
Para i:= 1 ate 10 faca
 Escreval (“informe o “, i , “º nome”)
 Leia(nome)
 Escreval (“informe a idade de” , nome”)
 Leia(idade)
Fimpara
FIMALGORITMO
http://www.youtube.com/watch?v=eZ0m6_cee5Y
8
Analisando detalhadamente o algoritmo acima, vemos que com ele podemos re-
ceber o nome e idade de um conjunto de pessoas. 
Claro que algoritmos que apenas recebem dados e não fazem nada são de pou-
ca utilidade, tem pouca serventia. Seria muito mais interessante, por exemplo, se 
pudéssemos contar quantas pessoas são consideradas por lei maiores de idade, 
ou seja, têm idade maior ou igual a 18 anos, já que no Brasil, a maioridade é atin-
gida aos 18 anos. Portanto, se a pessoa tem idade maior ou igual a 18 anos, ela 
pode ser considerada adulta. 
No algoritmo abaixo, vamos contar quantas pessoas têm idade acima de 18 
anos. Sempre lembrando que a melhor forma de entender e aprender são INSE-
RINDO o algoritmo no visualg e testando. Vamos fazer isso agora?
ALGORITMO “LENDO_NOMES_E_CONTANDO _ IDADES”
Var
i : inteiro
nome : literal
idade : inteiro
qtdmaior : inteiro
INICIO
Para i:= 1 ate 5 faca
 Escreval (“informe o “, i, ”º nome”)
 Leia(nome)
 Escreval (“informe a idade de”, nome”)
 Leia(idade)
 Se idade >= 18 entao 
 qtdmaior := qtdmaior +1
 Fimse
Fimpara
Escreval(“ a quantidade de pessoas de maior foi “, qtdmaior)
FIMALGORITMO
Vamos analisar esse algoritmo? 
 A parte inicial já é a tradicional, ou seja, a declaração das variáveis com a qual já 
estamos acostumados. A seguir, começamos a repetição determinada, ou seja, 
usamos o comando “PARA” com a finalidade de fazer com que um conjunto de 
comandos seja executado cinco vezes. 
O conjunto de instruções vai do “Escreval“ até o último comando antes do FIM-
PARA.
Neste código que acabamos de executar, temos uma novidade: uma variável 
contadora. As variáveis contadoras são extremamente úteis e são usadas em 
9
praticamente todas as situações do dia a dia. Vamos falar nesse assunto no pró-
ximo item.
2.1.2 Contadores e Acumuladores
Suponha que você está no supermercado. Estando lá, normalmente contamos 
quantas pessoas estão na fila para decidir se vale a pena entrar nela ou não. 
Da mesma forma, se você faz uma compra nesse mesmo supermercado, normal-
mente, no final da nota de pagamento tem a quantidade de itens. Esse tipo de 
variável, chamada tecnicamente de CONTADOR, serve para isso. No algoritmo 
acima, a variável Qtdmaior tem esse papel. 
Vamos continuar e melhorar esse algoritmo? No primeiro contamos quantas pes-
soas são maiores de idade. Agora vamos contar também quantas pessoas são 
menores de idade? 
ALGORITMO “LENDO_NOMES_E_CONTANDO _ IDADES”
Var
i : inteiro
idade : inteiro
nome : literal
qtdmaior, qtdmenor : inteiro
INICIO
Para i:= 1 ate 5 faca
 Escreval (“informe o “, i”º nome”)
 Leia(nome)
 Escreval (“informe a idade de”, nome”)
 Leia(idade)
 Se idade >= 18 entao 
 qtdmaior := qtdmaior +1
senao
 qtdmenor := qtdmenor +1 
 Fimse
Fimpara
Escreval(“ a quantidade de pessoas de maior foi “, qtdmaior)
Escreval(“ a quantidade de pessoas de menor foi “, qtdmenor)
FIMALGORITMO
Não é interessante? Vamos fazer algo semelhante, agora contando quantas pes-
soas foram aprovadas e quantas foram reprovadas em uma turma:
10
ALGORITMO “LENDO_NOMES_E_CONTANDO APROVADOS”
Var
i : inteiro
nome : literal
media : inteiro
qtdap, qtdrep : inteiro
INICIO
Para i:= 1 ate 5 faca
 Escreval (“informe o “, i, ”º nome”)
 Leia(nome)
 Escreval (“informe a média de”, nome”)
 Leia(media)
 Se media >= 18 entao 
 qtdap := qtdap +1
senao
 qtdrep := qtdrep +1 
 Fimse
Fimpara
Escreval(“ a quantidade de pessoas aprovadas foi “,qtdap)
Escreval(“ a quantidade de pessoas reprovadas foi “,qtdrep)
FIMALGORITMO
Nesse algoritmo, as variáveis qtap e qtdrep contam quantas pessoas foram apro-
vadas e quantas foram reprovadas, respectivamente. A variável “media” recebe 
via teclado o valor da média de cada aluno.
Como vimos acima, podemos colocar vários contadores num programa. Existe 
outro tipo de variável, bastante útil, que chamamos de acumuladores. Veremos 
agora um exemplo do uso deles: 
Suponha que você foi a um supermercado e fez uma compra com vários itens, 
cada um com nome e preço. Suponha que comprou uma unidade de cada item. 
Ao final da compra, você pagará um valor total, que corresponde à soma daque-
les itens. 
Portanto, nessa compra cada produto tem:
§	Nome : literal
§	Preço : real
Vamos contar quantos produtos foram comprados, usando uma variável qtd do tipo 
inteiro, e somar os valores pagos, com uma variável soma do tipo Real. Suponha 
ainda que você comprou cinco itens dessa vez.
11
O algoritmo fica assim (insira ele no Visualg e teste – lembre que a variável “preço” 
deve ser declarada como “preco”, ou seja, sem cedilha (ç), pois o visualg não aceita 
caracteres especiais no nome de variáveis):
ALGORITMO “somavalores”
Var
i : inteiro
nome : literal
preco, soma : real
INICIO
Para i:= 1 ate 5 faca
 Escreval (“informe o “, i”º nome do produto”)
 Leia(nome)
 Escreval (“informe o preço do produto ”, nome”)
 Leia(preco)
 Soma:= soma + preco
Fimpara
Escreval(“ a quantidade total de produtos é 5”)
Escreval(“ o valor total a pagar é R$ “, soma)
FIMALGORITMO
A variável soma é utilizada para guardar (armazenar) o valor total a ser pago, ou 
seja, somou os valores das pessoas. Esse tipo de variável é chamada “acumulado-
ra”.
Esse tipo de variável é muito útil, além de guardar a soma, para permitir saber a mé-
dia de preço, daseguinte forma: sabemos que a média de preço é igual à soma total 
dividida pela quantidade de itens. No algoritmo acima, sabemos que a quantidade de 
itens é igual a cinco. Portanto, se colocarmos o comando abaixo (antes de FIMAL-
GORITMO), poderá exibir essa média. 
Insira a linha abaixo no código, rode (execute) o programa e verifique como funcio-
na.
Escreval(“a média de preço é”, soma/5)
Legal, não é? Com esse tipo de variáveis, o céu é o limite, ou seja, podemos tratar 
um conjunto muito grande de situações que vivenciamos no dia a dia. 
No vídeo abaixo, que tem a duração de 7 minutos e 35 segundos, você pode ver um 
exemplo do uso de contadores.
O link é https://www.youtube.com/watch?v=oWqE1ir8Kbo 
Assista a esse vídeo e depois volte a este ponto do texto.
https://www.youtube.com/watch?v=oWqE1ir8Kbo
12
Agora, que tal colocar em prática o que você aprendeu? Com base no programa aci-
ma, construa um algoritmo (programa no Visualg) que recebe o nome, sexo, idade e 
salário de um grupo de cinco pessoas. Receba esses dados usando uma repetição 
determinada.
Dentro da repetição, calcule os seguintes dados utilizando as variáveis apropriadas:
§	Quantidade de pessoas do sexo masculino.
§	Quantidade de pessoas do sexo feminino.
§	Soma total de salários.
§	Média de salários.
§	Quantas pessoas ganham mais de 1000 (mil) reais.
Caso tenha dúvida na elaboração desse algoritmo, peça ajuda ao seu professor tutor 
no fórum da disciplina.
Agora que você já realizou o exercício acima, você viu que é possível contabilizar 
dados sobre um conjunto determinado de pessoas. Não é extremamente útil? 
Então vamos em frente. Agora vamos falar de um tipo de repetição que não tem 
uma quantidade definida previamente. 
2.1.3 Repetição Indeterminada
Sabemos, observando o nosso dia a dia, que normalmente em algum lugar que 
atende pessoas, como uma loja, não se sabe inicialmente quantas pessoas serão 
atendidas, ou quantas pessoas chegarão àquela loja num dado dia. O mesmo pode-
mos dizer sobre hospitais, ruas, enfim, qualquer situação que receba pessoas. 
Nesse caso, dizemos que estamos numa situação INDETERMINADA. 
Como podemos fazer isso em uma linguagem de programação? Usando a estrutura 
que aprenderemos a seguir: a estrutura de repetição INDETERMINADA.
O uso de repetição indeterminada acontece normalmente quando não é possível sa-
ber com antecedência quantas vezes a repetição acontecerá. Isso é comum no dia 
a dia, pois se tomarmos um cinema como exemplo, provavelmente os proprietários 
não saberão quantos clientes atenderão naquele dia, ou seja, quantos clientes irão 
assistir a cada filme, mesmo considerando que as salas têm lotação máxima. Só vão 
saber após encerrar o expediente do dia, ou seja, nesse momento saberão quantos 
clientes atenderam durante todo o dia. Sabemos que existem dias onde superlota, 
mas existem vários outros dias onde a lotação máxima não é atingida. Na prática, 
não tem como saber com antecedência quantos clientes comparecerão. Não só em 
cinemas, mas em praticamente todo lugar é assim.
Da mesma forma acontece o atendimento em uma lanchonete. Poderíamos citar 
vários exemplos, mas nos deteremos apenas nos casos mais comuns. Para iniciar, 
vamos ver um exemplo de repetição indeterminada. 
13
Insira o código abaixo no visualg e execute para experimentar. Nesse algoritmo, su-
ponha que você está num supermercado onde compra um conjunto de produtos (1 
unidade de cada). 
No algoritmo a compra encerra quando se digita “FIM” (em maiúsculo) no nome do 
produto. Caso não seja digitado “FIM”, significa que você está comprando mais um 
produto e, em seguida, informará o preço dele. Note que, nesse caso, estamos em 
uma situação muito diferente da anterior, ou seja, ao invés de sabermos de antemão 
quantos itens serão comprados, nós só saberemos isso após finalizarmos a compra, 
digitando “FIM” no momento de informar o nome do produto. 
Vamos ao algoritmo (insira no visualg e teste executando com F9)
ALGORITMO “comprasupermercado”
VAR
produto : literal
preco :real
soma : real
qtdcomprados : inteiro
INICIO
Escreval(“informe nome do produto ou FIM para encerrar”)
leia(produto)
enquanto produto <> “FIM” FACA
 qtdcomprados := qtdcomprados +1
 escreval(“informe preço do produto”)
 leia(preco)
 soma:= soma + preco
Escreval(“informe nome do produto ou FIM para encerrar”)
leia(produto)
fimenquanto
escreval(“ a quantidade de produtos comprados foi “, qtdcomprados)
escreval(“você vai pagar “, soma)
escreval(“o valor médio foi “, soma / qtdcomprados)
FIMALGORITMO
Vamos analisar o algoritmo acima? Vamos começar pelas variáveis. As variáveis 
declaradas são:
produto : literal, ou seja, o nome do produto. 
preco : real é o preço daquele produto.
14
soma : real , ou seja, vai acumular os preços de todos os produtos numa única 
soma exibida no final do programa. Por fim, temos a variável qtd comprados : in-
teiro , que conta quantos produtos foram comprados.
Logo após a declaração de variáveis, o programa inicia lendo o nome de um pro-
duto. Nesse ponto, se o usuário digitar “FIM” (em maiúsculo), o programa termi-
nará. Caso digite QUALQUER outro nome, o programa entrará na repetição inde-
terminada, e dentro dela a primeira coisa que fará é contar aquele produto com a 
expressão qtdcomprados := qtdcomprados +1 . 
Esse é um contador que serve para contar a quantidade de produtos comprados. 
A seguir, o algoritmo pede para informar o preço do produto, com os comandos 
“escreval(“informe preço do produto”) “ e a seguir “ leia(preco)”. Lido esse pre-
ço, o programa somará o valor desse produto ao total geral, usando o comando 
“soma:= soma + preco”. Com esse comando, a variável “soma” guardará esse 
total. 
A seguir, o programa vai ler o nome do próximo produto. Nesse ponto, se o 
usuário digitar “FIM” (em maiúsculo), o programa terminará a repetição e mostra-
rá as mensagens finais, que são: 
escreval(“ a quantidade de produtos comprados foi “, qtdcomprados)
escreval(“você vai pagar “, soma)
escreval(“o valor médio foi “, soma / qtdcomprados)
Qtdcomprados mostrará a quantidade de produtos. Soma mostrará o total pago. 
E o comando “escreval(“o valor médio foi “, soma / qtdcomprados)” mostrará a 
média.
Legal, não é? 
Os programas de repetição indeterminada têm essa estrutura geral. É claro que 
podemos sofisticar colocando diversos outros contadores, como podemos ver no 
algoritmo a seguir: 
ALGORITMO “estatisticaalunos”
VAR
nome, sexo : literal
idade :inteiro
soma : real
qtdalunos, qtdf, qtdm : inteiro
INICIO
Escreval(“informe nome do aluno ou FIM para encerrar”)
leia(nome)
enquanto nome <> “FIM” FACA
15
 qtdalunos := qtdalunos +1
 escreval(“informe idade do aluno”)
 leia(idade)
 soma:= soma + idade
 escreval(“informe sexo do aluno m ou f”)
 leia(sexo)
se sexo = “m” entao
 qtdm:=qtdm +1
senao
 qtdf:= qtdf +1
fimse
Escreval(“informe nome do aluno ou FIM para encerrar”)
leia(nome)
fimenquanto
escreval(“ a quantidade de alunos “, qtdalunos)
escreval(“a média de idades é“, soma/qtdalunos)
escreval(“ a quantidade de mulheres “, qtdf)
escreval(“ a quantidade de homens é “, qtdm)
FIMALGORITMO
Muito interessante, não é? Com esse tipo de estrutura, você consegue tratar a 
maior parte dos casos que encontramos no dia a dia das empresas. Tente criar 
variações desse algoritmo e teste. É testando que se aprende!
Tendo feito esses exemplos e exercícios, concluímos a parte principal de repe-
tições determinadas (usando PARA) e repetições indeterminadas (usando EN-
QUANTO).
Existe uma estrutura de repetição indeterminada do tipo REPITA-ATÈ, semelhan-
te ao “Enquanto”, que você encontra na página 49 do nosso livro-texto. Abra no-
vamente o seu livro texto e leia aquela parte, que vai da página 49 até 61. 
Depois volte para este texto para continuarmos nosso assunto, vendo uma estru-
tura extremamente interessante chamada VETOR. Vamos em frente!
2.2 Vetores.
Vamos a partir de agora falar de um assunto extremamente interessante, quesão os 
Vetores. Porém, antes de continuar, dê uma lida no nosso livro-texto da página 55 
até 69. Depois, volte exatamente para esse ponto do texto.
Agora que você já leu o material, vamos continuar.
A primeira pergunta é: Por qual motivo você deveria usar vetores? 
16
Você deve ter percebido que o uso de variáveis simples, numa repetição, não permi-
te que você recupere dados inseridos anteriormente. Vamos ver isso na prática?
Suponha que você queira ler, via teclado, cinco nomes e depois listá-los na ordem 
em que foram lidos.
Seria natural pensar em um algoritmo parecido com o que listamos a seguir: 
ALGORITMO “LENDONOMES”
VAR
I : inteiro
nome : literal
INICIO
Para i:=1 ate 5 faca
 Escreval(“informe nome”)
leia(nome)
Fimpara
FIMALGORITMO
Para listar os nomes, alteraríamos o algoritmo para o que vemos abaixo: 
ALGORITMO “LENDOELISTANDONOMES”
VAR
I : inteiro
nome : literal
INICIO
Para i:=1 ate 5 faca
 Escreval(“informe nome”)
leia(nome)
Fimpara
Para i:=1 ate 5 faca
 Escreval(nome)
Fimpara
FIMALGORITMO
Insira esse algoritmo acima no Visualg e depois execute. O que aconteceu?
Você perceberá que o nome é exibido cinco vezes, ou seja, a variável “nome’ 
guardou apenas o último nome.
17
Isso acontece porque essa variável guarda apenas um nome por vez. E se pu-
déssemos usar uma estrutura que permitisse guardar nela tudo o que digitamos? 
Essa estrutura existe. É o Vetor!
Vamos começar a trabalhar com eles?
Para ter um primeiro contato com vetores, insira o algoritmo abaixo no Visualg e 
o execute.
ALGORITMO “PRIMEIROVETOR”
VAR
I : inteiro
nomes: vetor [1..5] de literal
INICIO
Para i:=1 ate 5 faca
 Escreval(“informe nome ” , i)
leia(nomes[i])
Fimpara
Para i:=1 ate 5 faca
 Escreval(nomes[i])
Fimpara
FIMALGORITMO
O que aconteceu? Dessa vez os dados foram armazenados. 
Essa é uma das maiores vantagens em usar vetores. É importante salientar que 
os dados são armazenados na memória RAM, ou seja, não estão guardados em 
disco. 
Esse armazenamento permanente você aprenderá na disciplina de Banco de Da-
dos. No nosso caso, os dados desaparecem depois da execução do programa.
O uso de vetores é bastante amplo e você pode usar mais de um vetor em cada 
programa. Vamos ver mais um exemplo abaixo, adaptado do programa que aca-
bamos de fazer. Lembramos novamente da importância de você inserir esse al-
goritmo no Visualg e testar.
Vamos lá!
18
ALGORITMO “DOISVETORES”
VAR
I : inteiro
nomes: vetor [1..5] de literal
idades : vetor[1..5] de literal
INICIO
Para i:=1 ate 5 faca
Escreval(“informe nome ” , i)
leia(nomes[i])
Escreval(“informe idade de ” , nomes[i])
leia(idades[i])
Fimpara
Para i:=1 ate 5 faca
 Escreval(nomes[i], “tem “ , idades[i] , “anos”)
Fimpara
FIMALGORITMO
Viu como é interessante? 
No exemplo acima,l vimos que podemos inserir em vetores os mesmos tipos de 
dados que já utilizamos antes. A diferença é que enquanto usávamos variáveis 
simples, agora usaremos os vetores, permitindo guardar os dados inseridos.
A declaração formal de vetor é como vemos abaixo: 
VAR
vet1 : VETOR [inicio..fim] de tipo 
Onde “inicio” é a primeira posição daquele vetor e “fim” é a posição final. Normal-
mente começamos com 1 e finalizamos em algum número desejado.
Por exemplo: 
nomes: vetor [1..5] de literal
A declaração acima diz que o vetor “nomes” tem cinco áreas de armazenamento 
para guardar textos (literais). Diz que essas áreas vão de 1 até 5. 
Vamos ver um exemplo com vetores guardando valores, que é o pseudocódigo 
2.25, da página 61 do nosso livro-texto. Nesse algoritmo, após receber os dados 
emitiremos uma listagem com o que foi armazenado. Depois disso, exibiremos os 
dados de valor total e médio.
19
PSEUDOCÓDIGO 2.25
Algoritmo “Vetor_Média”
Var
Valores : vetor [1..10] de reais
Soma, media : real
i : inteiro
INICIO
soma:= 0
Para i de 0 ate 9 Faça
 Leia (Valores [i])
 Soma := Soma + Valores [i]
Fimpara
Media := Soma/10
Escreva(“O valor da média é: “, Media)
FIMALGORITMO
Da mesma forma que nas variáveis comuns, temos duas formas de inserir valo-
res em um vetor: pelo comando LEIA ou pela atribuição, que pode ser da forma 
← ou usando “:=” 
Ok? 
RESUMO
Terminamos aqui a nossa segunda unidade. Nela vimos:
§	Estruturas de repetição determinadas e indeterminadas. 
§	Contadores, acumuladores e médias.
§	Vetores, que serão abordados novamente na unidade 3.
Aproveite para realizar os exercícios de fixação do livro. Insira suas dúvidas nos 
fóruns da disciplina. 
Para consolidar os seus conhecimentos, releia a unidade 2 do nosso livro-texto e 
depois responda aos exercícios no ambiente EAD. Terminando os exercícios, segui-
remos para a unidade 3. Desejamos bons estudos a você.

Continue navegando