Você está na página 1de 20

Lógica de Programação Algorítmica

UNIDADE 2

2
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á.

1
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

2
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

3
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

4
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

5
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

6
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

7
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

8
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:

9
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.

10
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, da seguinte 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.

11
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.

12
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.

13
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

14
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, que sã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?

15
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.

16
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á!

17
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.

18
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ê.

19

Você também pode gostar