ESTRUTURAS DE REPETIO
- Contadores - Expresses Lgicas Autores:
Laos
Utilizam-se laos quando houver necessidade
de repetir um bloco de cdigos
O nmero de vezes que a repetio acontece
Definido por um contador lao contado
Definido por um evento que acontece lao com
sentinela
2 de 14
Exemplo
Dim intCounter As Integer
For intCounter = 1 To 25
....
Next
Note que o final do lao marcado pela palavra NEXT e no END como nos
outros comandos
Esse lao tambm poderia ser
For intCounter = 1 To 25 Step 5
.....
Next
O que fora o contador intCounter ser incrementado de 5 em 5 de tal
maneira que o lao seria repetido apenas 5 vezes.
4 de 14
Juntando os comandos...
Sub forTest()
Dim intCont As Integer
For intCont = 1 To 10
If (intCont Mod 2) = 0 Then
MsgBox intCont & PAR
Else
MsgBox intCont & IMPAR
End If
Next
End Sub
5 de 14
Exerccios FOR/NEXT
Elabore um cdigo que exiba os DIVISORES de
um nmero INTEIRO qualquer. Dica: o nmero
de interaes do lao NO deve passar da
metade desse nmero.
Complemente o cdigo acima e informe se o
nmero ou no PRIMO.
7 de 14
Lao Do - Loop
O lao DO LOOP um lao de controle por
sentinela.
Ele executado atravs de condio especfica
(lgica).
Exemplo DO - WHILE
Sub doTest()
Dim intCont As Integer
intCont = 1
Do While intCont <= 5
MsgBox Esta a iterao numero " & intCont
intCont = intCont + 1
Loop
End Sub
10 de 14
Quase bom...
Note que a sub-rotina ifTest
executa um teste para verificar
se o usurio digitou um
nmero entre 1 e 15.
No entanto, se ele digitou um
nmero fora do intervalo, o
programa para e o usurio
precisa reinici-lo.
Como deveria ser para que o
programa ficasse repetindo o
prompt at que o usurio
digitasse um nmero dentro
do intervalo requerido?
11 de 14
Veja:
Option Explicit
Dim intNum As Integer
Sub doTest1()
Do
intNum = InputBox("Digite um numero entre 1 e 15", _
"Teste de Laos")
If intNum < 1 Or intNum > 15 Then
MsgBox "O nmero deveria ser entre 1 e 15", _
vbCritical, "Ooops
End If
Loop While intNum < 1 Or intNum > 15
End Sub
12 de 14
Note que
No esto sendo
utilizados contadores de
qualquer tipo;
O teste feito com o
valor da varivel intNum;
Outro detalhe importante
o lugar onde o teste
ocorre;
De forma diferente do
exemplo anterior, o teste
feito no final, o que
fora o lao ser executado
pelo menos uma vez.
13 de 14
Sub doTest2()
Dim intN As Integer
intN = 5
Do Until intN = 0
MsgBox "Iterao " & intN
intN = intN - 1
Loop
End Sub
14 de 14
Sub doTest3()
Dim intN As Integer
intN = 5
Do
MsgBox "Iterao " & intN
intN = intN - 1
Loop Until intN = 0
End Sub
15 de 14
Exerccios DO - LOOP
Elabore o cdigo da Sequencia de Fibonacci,
utilizando o lao DO LOOP. Deve-se informar
o nmero mximo da sequencia a ser exibida.
16 de 14