Buscar

Guia de Estudos da Unidade 3 - Programação de Computadores

Prévia do material em texto

Programação de Computadores
UNIDADE 3
1
 PROGRAMAÇÃO DE COMPUTADORES COM VBA E C 
UNIDADE 3
 Para início de conversa!
 
Olá, aluno! Estamos iniciando a terceira unidade da nossa disciplina de Programação de Computadores 
com VBA e C, lembrando que o conteúdo já abordamos no vídeo de apresentação. Na unidade anterior, 
vimos os tipos de dados no VBA, operadores e principais funções matemáticas, usando macros no VBA e 
interface com o usuário e formulários. Vamos a VBA – parte 2. 
Antes de prosseguir com esse estudo, leia os capítulos 3 e 4 do livro texto da disciplina. Depois disso, 
volte a este ponto para continuar o estudo.
Orientações da Disciplina
Nesta unidade vamos aprender a usar estruturas de seleção e desenvolver instruções de 
múltipla escolha. Também vamos conhecer as estruturas de repetição com testes no início e no final do 
looping. Vamos aprender a utilizar os Loops DO-WHILE e DO-UNTIL no VBA e as estruturas de repetição 
com a variável de controle FOR NEXT, que equivalem às estruturas de repetição “Enquanto” e “Para “ do 
Visualg, que aprenderemos aqui.
Vamos lá ?
2
ESTRUTURAS DE SELEÇÃO
 
 Guarde essa ideia!
As estruturas de seleção permitem aos computadores tomarem decisões a partir de determinadas 
informações. É com estruturas de decisão que os computadores “pensam”, ou seja, decidem de acordo com 
alguma condição. Essa é uma característica que diferencia os computadores, por exemplo, das máquinas 
de calcular. Com essas estruturas, podemos agregar inteligência aos nossos programas de computadores.
Sem dúvida, é absolutamente fundamental, extremamente importante entender as estruturas de seleção 
(ou estruturas de decisão). Para entender o que é uma estrutura de seleção, vamos fazer o seguinte: 
veremos na prática como funciona, inserindo código no Visualg. Mais à frente checaremos código no 
VBA. 
 Exemplo!
Vamos aprender da forma que já estamos fazendo: através de testes feitos com exemplos práticos.
Para testar uma estrutura de seleção, insira o código abaixo no Visualg.
algoritmo “estrutura seleção”
var
idade : inteiro
inicio
escreval(“informe a sua idade”)
leia(idade)
se idade >= 18 entao
 escreval(“é de maior”)
senao
 escreval(“é de menor”)
fimse
fimalgoritmo
3
Atenção para os seguintes detalhes: 
Não use “ENTÃO”. Use “ENTAO”. O Visualg não permite o uso de acentos nos comandos, apenas 
entre aspas.
Execute o algoritmo acima duas vezes. Na primeira, coloque a idade igual a 15. Na segunda, coloque 
a idade igual a 30.
O que você percebeu? Que dependendo do valor que é inserido, o programa se comporta de uma 
forma ou de outra. É essa a essência da estrutura de seleção. 
Uma estrutura de seleção faz com que o computador “pense”, ou seja, ele se comporta realizando 
operações dependendo da informação que recebe, e toma decisões a partir dos dados que foram 
inseridos pelo usuário. 
 Exemplo!
Vamos agora ver mais um exemplo!
ALGORITMO “ESTRUTURA SELEÇÃO2”
var
sexo : literal
inicio
escreval(“informe sexo m ou f”)
leia(sexo)
se sexo = “m” entao
 escreval(“masculino”)
senao
 escreval(“feminino”)
fimse
fimalgoritmo
4
Toda estrutura de seleção trata de possíveis condições. Não há limite para essa quantidade de decisões, 
ou possibilidades. Se você tem 50 possibilidades, utilizará uma estrutura com 50 “SE”. Na vida real 
existem vários casos assim. Suponhamos o caso em que temos 3 possibilidades:
Por exemplo, suponha que você possa usar os códigos “x”, “y” ou “z”, e qualquer código fora disso resulte 
em mensagem “código incorreto”. O algoritmo seria assim:
ALGORITMO “ESTRUT.SELEÇÃO3”
var
codigo : literal
inicio
escreval(“informe codigo x, y ou z”)
leia(codigo)
se codigo = “x” entao
 escreval(“você informou o código X”)
senao
 se codigo = “y” entao
 escreval(“você informou o código Y”)
 senao
 se codigo = “z” entao
 escreval(“você informou o código Z”)
 senao
 escreval(“código incorreto”)
 fimse
 fimse
fimse
fimalgoritmo
Dica!
Ou seja: com a estrutura de seleção, é possível testar várias condições, fazendo com que 
o computador responda de acordo com o dado que recebeu.
Essas condições precisam ser bem especificadas, pois qualquer erro em uma delas fará com que o 
programa realize o que foi mandado, mesmo se a condição foi escrita com erro de lógica. Por isso é 
importante ter muito cuidado na hora de escrever as suas condições.
Vimos, portanto, que nas estruturas de seleção sempre é possível escolher entre várias opções. 
5
É assim que os programas funcionam. Nas estruturas de seleção você pode também usar estruturas 
encadeadas que tratam de assuntos diferentes. 
No algoritmo acima, tratamos sempre dos valores possíveis dos códigos, ou seja, várias possibilidades, 
mas sobre o mesmo assunto. Vamos ver agora outra forma de usar as estruturas de seleção, também 
baseada em exemplos comuns do dia a dia.
Suponha que um algoritmo receba o nome, sexo e média de uma pessoa. Se ela for do sexo feminino, e 
tirar uma média acima de 7, o programa deve dizer que ela foi aprovada. Se a média for menor que 7, o 
programa deve dizer que foi reprovada. Se for do sexo masculino, deve dizer que foi aprovado se a média 
foi maior ou igual a 7 e reprovado se for menor. Ou seja, temos quatro possibilidades: aprovado, reprovado, 
aprovada e reprovada. Precisamos criar uma estrutura de seleção que reflita isso. Esse comportamento é 
assumido pelo programa abaixo, que você deve inserir no Visualg e testar :
ALGORITMO “RESULTADO”
VAR 
Nome, sexo: literal
Media : real
INICIO
Escreval(“informe nome”)
Leia(nome)
Escreval(“informe sexo m ou f”)
Leia(sexo)
Escreval(“informe média entre zero ou 10”)
Leia(media)
Se sexo = “m” entao
 Se media >=7 entao
 Escreval(nome, “foi aprovado”)
 Senao
 Escreval(nome, “foi reprovado”)
 Fimse
Senao
 Se media >=7 entao
 Escreval(nome, “foi aprovada”)
 Senao
 Escreval(nome, “foi reprovada”)
 Fimse
Fimse
FIMALGORITMO
6
Vamos analisar cada ponto do algoritmo acima!
Primeiro, a parte de criação das variáveis: a variável NOME recebe letras, portanto é literal. A variável 
sexo também recebe letra, portanto também é literal. Como é do mesmo tipo que nome, essa variável 
pode ser declarada na mesma linha. 
Já a variável média recebe números reais, portanto é do tipo real.
Já que sempre usamos a estrutura de entrada/processamento/saída, inicialmente vamos solicitar ao 
usuário que informe nome, depois informe sexo e por fim a média. Sempre usamos o comando “escreval” 
com uma mensagem antes do dado a ser recebido, pois assim o nosso usuário saberá qual dado está 
sendo solicitado. 
Depois dos dados terem sido recebidos, o programa tomará decisões e emitirá respostas dependendo dos 
dados que foram inseridos.
No caso específico, a primeira pergunta é: qual a informação de sexo? Se sexo = “m”, então o programa 
fará a pergunta seguinte: “a média é maior ou igual a 7 ? “ se sim, o programa emitirá o nome da pessoa 
com a expressão “aprovado”. Se foi menor que 7, o programa emitirá o nome da pessoa seguido da 
expressão “reprovado”. Perceba que, em qualquer caso, como sexo é masculino então a expressão que o 
sistema emite também é masculina, ou seja, “aprovado” ou “reprovado’”. 
No outro caso, se sexo for igual a “f”, então o programa fará a pergunta seguinte: “a média é maior ou 
igual a 7? “se sim, o programa emitirá o nome da pessoa com a expressão “aprovada”. Se foi menor que 
7, o programa emitirá o nome da pessoa seguido da expressão “reprovada”.
Existe uma forma equivalente de fazer isso, apenas modificando a variável que será testada primeiro. 
No exemplo acima, testamos antes a informação de sexo. Dessa vez, testaremos antes a informação de 
média. Veja como fica o algoritmo abaixo após alterarmos a ordem dos comandos “SE”:
ALGORITMO “RESULTADO”
VAR 
Nome, sexo: literal
Media : real
INICIOEscreval(“informe nome”)
Leia(nome)
Escreval(“informe sexo m ou f”)
Leia(sexo)
Escreval(“informe média entre zero ou 10”)
Leia(media)
7
 Se media >=7 entao
 Se sexo = “m” entao
 Escreval(nome, “foi aprovado”)
 Senao
 Escreval(nome, “foi aprovada”)
 Fimse
Senao
 Se sexo = “m” entao
 Escreval(nome, “foi reprovado”)
 Senao
 Escreval(nome, “foi reprovada”)
 Fimse
Fimse
FIMALGORITMO
Execute esse programa no visualg e constate que, mesmo sendo escrito de forma diferente, ele faz a 
mesma coisa que o anterior. As respostas, para as entradas dadas pelo usuário, são rigorosamente as 
mesmas.
Isso decorre do fato de que existem várias formas de escrever o mesmo algoritmo, obtendo resultados 
iguais. 
Podemos ver, com os exemplos acima, que o programa se comporta como queremos, emitindo a mensagem 
apropriada de acordo com os dados que recebeu. É muito importante salientar que somos nós que criamos 
os comandos dos programas, portanto, se houver um erro a responsabilidade não é do sistema, é nossa. 
Você, como bom programador, deve ter cuidado para utilizar a estrutura de seleção SE de forma adequada. 
Qualquer erro nessa construção pode gerar sérios problemas.
Praticamente todas as linguagens de programação têm a sua estrutura SE...Então...Senão...Fimse. Com 
o VBA não é diferente, ou seja, também existe essa estrutura, que veremos mais adiante.
Mas não é apenas utilizando SE que você pode utilizar estruturas de seleção.
Também existe a estrutura “CASO”,
Vamos ver isso agora!
Já vimos que podemos utilizar o SE com várias opções, mas o trabalhando sobre o mesmo código. Esse 
tipo de SE é estrutura de seleção encadeada homogênea, do tipo se-senão-se. 
No caso que vamos tratar agora, como estamos falando de uma situação que envolve alternativas, existe 
uma estrutura específica e mais prática para estas situações: a seleção de múltipla escolha. 
8
 Exemplo!
Como exemplo da escrita de uma seleção de múltipla escolha na linguagem, observe as instruções a 
seguir:
escolha <expressão-de-seleção> 
caso <exp11>, <exp12>, ..., <exp1n> 
   <sequência-de-comandos-1> 
caso <exp21>, <exp22>, ..., <exp2n> 
   <sequência-de-comandos-2> 
... 
outrocaso 
   <sequência-de-comandos-extra> 
fimescolha
 Exemplo!
Veja o exemplo a seguir, que ilustra bem o que faz este comando:
algoritmo “Times” 
var time: caractere 
inicio 
escreva (“Entre com o nome de um time de futebol: “) 
leia (time) 
escolha time 
caso “Flamengo”, “Fluminense”, “Vasco”, “Botafogo” 
   escreval (“É um time carioca.”) 
caso “São Paulo”, “Palmeiras”, “Santos”, “Corínthians” 
   escreval (“É um time paulista.”) 
outrocaso 
   escreval (“É de outro estado.”) 
fimescolha
 
fimalgoritmo
É interessante verificar que a opção “outrocaso” trata exatamente os casos onde a entrada do dado não satisfez 
as opções anteriores. No caso acima, se o time não for “Flamengo”, “Fluminense”, “Vasco”, “Botafogo”, 
“São Paulo”, “Palmeiras”, “Santos” ou “Corínthians”, o sistema emitirá a mensagem “é de outro estado”. 
9
Vamos ver agora como isso é feito em VBA (tanto as estruturas “SE” quanto a estrutura “Caso”).
ESTRUTURAS DE SELEÇÃO NO VBA
 
 Veja o vídeo!
Antes de iniciarmos, sugiro a você que assista um vídeo no youtube sobre esse assunto. No 
link citado temos uma gravação sobre as estruturas de seleção em VBA. O material tem 11 
minutos e 35 segundos, e é bem útil para entender como funcionam as estruturas de seleção no VBA: 
https://www.youtube.com/watch?v=dI537faJdVk
 Assista a esse vídeo e depois retorne a este ponto do texto!
Seguindo, as estruturas fundamentais do VBA são as seguintes: 
If -Then - Else
Funciona da mesma forma que o “SE... ENTAO...
SENAO...FIMSE”. É uma estrutura de seleção que 
permite definir a forma com que o programa reage de 
acordo com uma dada condição.
Select - Case 
Serve para selecionar qual parte do código será 
executada de acordo com o dado avaliado.
Estrutura de Seleção IF..THEN..ELSE
A estrutura de seleção IF tem o seguinte comportamento:
1. Avalia a condição, que deverá ser uma expressão booleana colocada como primeiro parâmetro;
2. Se a condição for verdadeira, então (then) realiza as operações colocadas no segundo parâmetro;
3. Caso contrário (else) realiza as operações.
Sintaxe da Estrutura If-Then-Else
 If <Condição> Then
 <se condição verdadeira>
 Else 
 <se condição falsa> 
 End If
10
A palavra Else é opcional num comando If-Then-Else. Caso ela não seja utilizada, o programa sai do IF 
caso a condição seja falsa. 
Exemplo!
Suponha uma situação de media de um aluno, onde ele é aprovado se a média for maior ou igual 
a 7. Se for maior ou igual a 4 e menor do que 7, o aluno vai pra a final. Se for menor do que 4, 
o aluno é reprovado diretamente. Codificamos isso de mais de uma forma, sendo a primeira delas a que 
mostramos abaixo:
Sub situacao ()
Dim Msg As String
If media < 4 Then Msg = “foi reprovado”
If media >= 4 And Time < 7 Then
Msg = “está na final”
If media >= 7 Then Msg = “foi aprovado”
 MsgBox “você “ & Msg
End Sub
Você pode perceber que no caso acima usamos três IF diferentes. Essa mesma estrutura pode ser utilizada 
de uma forma semelhante, mas fechando cada bloco.
 
Sub situacao ()
If media < 4 Then Msg = “foi reprovado”
End If
If media >= 4 And Time < 7 Then
 Msg = “está na final”
End If
If media >= 7 Then Msg = “foi aprovado”
 MsgBox “você “ & Msg
End If
End Sub
11
Agora vamos ver de outra forma, utilizando o ELSE:
Sub situacao ()
If media < 4 Then Msg = “foi reprovado”
Else
 If media >= 4 And Time < 7 Then
 Msg = “está na final”
 Else
If media >= 7 Then Msg = “foi aprovado”
 MsgBox “você “ & Msg
End If
 End If
End If
End Sub
Perceba que essa estrutura é muito mais eficiente do que as duas anteriores, mas por qual motivo isso 
acontece? 
Enquanto nas estruturas anteriores todos os IF são testados, nessa é diferente. Se a condição for 
satisfeita logo no primeiro IF, o sistema pulará a execução dos outros, sendo mais veloz e eficiente.
Legal, não é? 
E, para fechar as estruturas de seleção, vamos mostrar a estrutura “CASO” no VBA, que é representado 
pela estrutura SELECT CASE.
Sub situacao ()
Dim media As Double
DIM msg as string
media = InputBox (“Digite a media:”)
Select Case media
Case 0 To 3.9: msg = “reprovado”
Case 4 To 6.9: msg = “final”
Case 7 To 10: msg = “aprovado”
End Select
MsgBox “Situação:” & msg
End Sub
Essa é uma forma bem mais “enxuta” de fazer a estrutura de seleção. 
12
Ou seja: pelo que podemos perceber, a linguagem do VBA é extremamente flexível e fácil, e se parece 
com as demais, o que facilita muito o seu aprendizado. Agora vamos ver como o VBA implementa as 
estruturas de repetição. Veremos cada um dos casos possíveis no item que abordaremos a seguir. 
Veremos as estruturas de repetição genéricas, no Visualg, e depois veremos como isso é feito no VBA. 
É possível perceber que, da mesma forma que nas estruturas de seleção, o VBA faz as estruturas de 
repetição de uma forma muito semelhante às outras linguagens.
ESTRUTURAS DE REPETIÇÃO
Como em qualquer outra linguagem, o VBA possui estruturas de repetição. Antes, porém, vamos vê-las 
mais detalhadamente no Visualg, para depois ver como essas estruturas são usadas no VBA.
 
 Veja o vídeo!
Antes de iniciarmos, indico que você assista a um vídeo no youtube sobre as estruturas de 
repetição em VBA. O material 14 minutos e 57 segundos, e é bem útil para entender como 
funcionam as estruturas de repetição no VBA: https://www.youtube.com/watch?v=VKDDWU_eFUo
Agora que você assistiu ao vídeo, vamos seguir com o nosso assunto!
As estruturas de repetição fazem com que os computadores tenham uma qualidade interessante: eles 
podem repetir um conjunto 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 repetição. Nesse estudo, faremos da mesma forma 
que antes: inseriremos programas no Visualg, testaremos e, junto com a nossa leitura e tirando dúvidas 
nos fóruns da disciplina, consolidaremos os nossos conhecimentos. 
Depois disso, veremos essas estruturas no VBA.
Vamos lá!
13
ESTRUTURA DE REPETIÇÃO DETERMINADA
Vamos iniciar abordando a estrutura de repetição determinada, ou seja, aquela 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 “REP. DETERMINADA01”
VAR
I: inteiro
Inicio
Para i:=1 ate 100 faca
 Escreval (i)
Fimpara
FIMALGORITMO
Agora, vamos analisar cada linha 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, contudo, que admitem outras 
formas de indexação, mas esse assunto não será abordado 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 “escreval(i) “ 100 
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. 
14
Guarde essa ideia!
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 1 até 100 pulando de um 
em um, tudo o que estiver dentro da repetição vai ser feito 100 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 DETERMINADA02”
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. Em muitas linguagens, como o 
VBA, esse passo é representado através do uso da cláusula “STEP”. Vamos ver no VBA:
A repetição determinada tem um comando apropriado no VBA: 
LOOP For.. NEXT.
O loop FOR-NEXT é o equivalente ao PARA... FACA... FIMPARA do Visualg.
O funcionamento básico é o mesmo, ou seja, tem um ponto de partida, um ponto de chegada e um passo 
para acontecer. 
É praticamente uma tradução do comando PARA, com algumas pequenas diferenças.
Vamos ver um exemplo:
15
 Exemplo!
Vamos ver os comandos no Visualg e depois no VBA, para o mesmo algoritmo.
No Visualg:
Var
x: inteiro
soma : inteiro
Inicio
x:= 10
soma:= 0
para i:= 1 ate x faca
 soma : = soma + i
fimpara
Escreval (“valor da soma”, soma)
Vamos ver agora os mesmos comandos em VBA: 
Dim x
x=10
soma = 0
for i= 1 to x
 soma = soma + i
next
MsgBox “valor da soma = &soma
Podemos ver que é bem parecido, não é? A idéia fundamental é a mesma.
Do mesmo modo que vimos que o Visualg usa a cláusula “Passo”, vamos ver isso no VB, com o “STEP”
Comando FOR-NEXT com STEP
Vamos fazer abaixo um algoritmo no visualg que lista os números pares entre 500 e 1000.
Nesse caso, a ideia é fazer com que o algoritmo comece com 500 e vá pulando de 2 em 2, ou seja, passo 
16
2. O código é bem simples:
Var
x : inteiro
Inicio
para x:= 500 ate 1000 passo 2 faca
escreval(i)
fimpara
Simples, não é ?
Vamos agora traduzir isso para o VBA:
Dim x
soma = 0
for x= 500 to 1000 step 2
 MsgBox &i
next
Ou seja: é bem semelhante ao que vemos não só no visualg, mas também em diversas outras linguagens.
Mas e nos casos onde não temos esses dados de forma determinada? Onde não sabemos quantas vezes 
aquela repetição acontecerá? Nesse caso, usamos a repetição indeterminada, que será abordada a seguir.
Vamos em frente.
Repetição Indeterminada
Guarde essa ideia!
Suponha que você é o dono de um posto de gasolina. Esse posto funciona diariamente e tem 
uma loja de conveniência. É fácil perceber que, ao abrir a loja de manhã, o dono não tem como 
prever com exatidão quantas pessoas ele atenderá no posto e na loja. Essa imprevisibilidade é 
comum em qualquer negócio. 
 
Observando o nosso dia a dia percebemos que não só num posto, mas que qualquer lugar que atende 
pessoas, como uma loja de roupas, não sabe inicialmente quantas pessoas serão atendidas, ou quantas 
pessoas chegarão àquela loja em um dado dia. O mesmo podemos dizer sobre hospitais, ruas, enfim, 
qualquer situação que receba pessoas. 
Nesse caso, dizemos que estamos numa situação INDETERMINADA. 
17
É possível tratar desses casos em uma linguagem de programação. Esse tratamento de casos em que 
não prevemos inicialmente quantas vezes aquela operação ocorrerá é feito usando a estrutura que 
aprenderemos a seguir: a estrutura de repetição INDETERMINADA. Essa estrutura de repetição pode 
funcionar de duas formas diferentes. A primeira é a estrutura com teste prévio, e a segunda é a estrutura 
com teste após a execução dos comandos da repetição. Veremos os dois casos aqui.
Conforme dissemos, o uso de repetição indeterminada acontece normalmente quando não é possível saber 
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 – teoricamente eles teriam um limite máximo, mas até isso pode variar. De concreto, o que 
se sabe é que não tem como prever quantos clientes virão. Eles só vão ter essa informação de forma 
definitiva após encerrar o expediente do dia e contabilizar todos os atendimentos, ou seja, nesse momento 
saberão quantos clientes atenderam durante todo o dia. Sabemos que existem dias em que superlota, 
mas existem vários outros dias que a lotação máxima não é atingida. Na prática, não tem como saber com 
antecedência quantos clientes comparecerão - nunca. Não só em cinemas, mas em praticamente todo 
lugar é assim.
Exemplo!
Poderíamos citar vários exemplos, mas trabalharemos apenas com os casos mais comuns, que 
já estamos acostumados a ver. Para iniciar, vamos a um exemplo de repetição indeterminada. 
Insira o código abaixo no visualg e execute para experimentar. Nesse algoritmo, suponha que você está 
num supermercado onde compra um conjunto de produtos (uma 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 casoestamos 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 “compranummercado”
VAR
produto : literal
preço :real
soma : real
qtd comprados : inteiro
18
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 para compreendê-lo bem direitinho? 
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.
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: inteiro , que conta quantos produtos foram comprados.
Logo após a declaração de variáveis, o programa inicia lendo o nome de um produto. Nesse ponto, se 
o usuário digitar “FIM” (em maiúsculo), o programa terminará. Caso digite QUALQUER outro nome, o 
programa entrará na repetição indeterminada, 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 mostrará as mensagens finais, que são: 
19
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.
Interessante, 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 (esse uso de contadores 
também é plenamente possível em VBA): 
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
 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)
20
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
Outra forma de construir repetições indeterminadas é com a estrutura Repita... até
Esta estrutura repete uma seqüência de comandos até que uma determinada condição (especificada 
através de uma expressão lógica) seja satisfeita. É diferente do “Enquanto” porque ela testa após 
repetir, e o “Enquanto” testa antes de realizar os comandos.
Ela funciona assim: 
Repita 
   <seqüência-de-comandos>
 
ate <expressão-lógica>
 Exemplo!
var j: inteiro 
inicio 
j <- 1 
repita 
   escreva (j) 
   j <- j + 1 
ate j > 10 
fimalgoritmo
No caso acima, o algoritmo lista os números de 1 até 10. Portanto, esse tipo de comando é bem 
parecido com o “Enquanto”, e cada um pode ser utilizado de acordo com a necessidade.
Vamos ver agora como funcionam essas estruturas no VBA.
21
A estrutura Do...Loop.
 Guarde essa ideia!
Esta estrutura pode ser utilizada para repetir um trecho de código, enquanto uma determinada 
condição for verdadeira, ou até que uma determinada condição torne-se verdadeira. Podemos 
utilizar dois operadores condicionais diferentes: While ou Until. Os operadores While ou Until podem 
ser utilizados de duas maneiras diferentes: No início do laço ou no final do laço. Com isso temos quatro 
situações distintas, e vamos analisar cada uma delas a partir de agora, através da construção de 
exemplos.
É importante salientar que, em caso de repetição indeterminada, O Código dentro do laço deve ser 
capaz de alterar a condição para que essa se torne Falsa, pois caso contrário a condição será sempre 
verdadeira e os comandos dentro do laço ficarão em execução, infinitamente, ou seja, nunca vão parar e 
ficarão sendo executados indefinidamente.
Vamos ver como é essa estrutura no VBA!
A estrutura Do While Condição...Loop.
Neste caso, estamos utilizando o operador condicional While, no início do laço. O formato geral, neste 
caso é o seguinte:
Do While condição / teste 
Comando1 
Comando2 
... 
Comandon 
–Loop 
Ou seja: é bem simples e parecido com o que conhecemos.
 Exemplo!
Vamos ver agora um exemplo de uso desse comando:
Dim x 
x=10 
Contador=1 
22
Soma=0 
Do While Contador <= x 
Soma = Soma + Contador 
Contador = Contador + 1 
Loop 
MsgBox “Valor da Soma = “ & Soma 
Veja que nesse caso o teste é feito logo na entrada da repetição. Se o contador for maior do que x, a 
repetição não acontecerá. Essa estrutura de repetição equivale ao comando “Enquanto” do Visualg. 
Vamos ver agora a outra opção, que é a que equivale ao “Repita... Até” do Visualg: o A estrutura Do 
Until Condição... Loop. 
Neste caso, estamos utilizando o operador condicional Until, no início do laço. O formato geral, neste 
caso é o seguinte:
Do Until condição 
Comando1 
Comando2 
... 
Comandon 
Loop 
 Exemplo!
Vamos ver agora um exemplo!
Dim x 
x=10 
Contador=1 
Soma=0 
 
Do Until Contador > x 
Soma = Soma + Contador 
Contador = Contador + 1 
Loop 
MsgBox “Valor da Soma = “ & Soma 
23
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 repetições determinadas 
(usando PARA) e repetições indeterminadas (usando ENQUANTO) e seus equivalentes no VBA. 
 Palavras do Professor
Terminamos aqui a nossa segunda unidade. Vimos:
- Estruturas de seleção e estruturas de repetição determinadas e indeterminadas;
- Como construir esse tipo de estrutura de seleção e estruturas de repetição no VBA.
Não deixe de realizar os exercícios. Insira suas dúvidas nos fóruns da disciplina. 
Para consolidar os seus conhecimentos, releia as unidades 3 e 4 do livro texto. Na unidade 4, veremos a 
linguagem C. Bom estudo!

Continue navegando

Outros materiais