Você está na página 1de 16

CURSO: ANLISE E DESENVOLVIMENTO DE SISTEMAS

ESTRUTURAS DE REPETIO
- Contadores - Expresses Lgicas Autores:

Prof. Carlos Alberto Paiva (Beto)


Profa. Andria Machion

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

O Lao FOR ... NEXT


um lao do tipo CONTADOR
possvel, usando variveis ou valores, definir os
seguintes componentes do lao:
Contador: o corao do lao, pois conta o nmero
de vezes que o lao executado.
Incio: o valor inicial do contador. Normalmente
inicia em 1, a no ser por uma necessidade de algum
clculo matemtico.
Fim: marca o final do lao o valor que voc quer
que o lao pare.
Passo: o incremento do contador.
3 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

Discusso sobre o exemplo


O lao FOR NEXT executa 10 passos;
Em cada iterao faz-se a verificao do contador: par ou mpar,
utilizando-se uma estrutura IfThenElse
ou seja, existe uma estrutura IfThenElse dentro de uma
estrutura ForNext
o que chamado Aninhamento de Estruturas muito comum em
programao

a instruo condicional faz um clculo e verifica o seu resultado:


o resto da diviso (mod) por 2, que pode ser 0 para nmeros pares
ou 1 para nmeros mpares.

Next incrementa o contador.


6 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).

Existem 2 variaes do lao DO - LOOP


Do While: o lao executado ENQUANTO a
condio de controle verdadeira.
Do Until: o lao executado AT QUE uma
condio de controle se torne verdadeira
8 de 14

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

Note que o lao aqui tambm usa um contador


9 de 14

Considere o Exemplo abaixo


Sub ifTest()
Dim intNum As Integer
intNum = InputBox("Digite entre 1 e 15", "Teste IF")
If intNum < 1 or intNum > 15 Then
MsgBox "O nmero fora do intervalo", vbCritical, _
"Ooops"
End If
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

Lao Do Until Teste no Incio


uma variao do lao
DO WHILE do
exemplo anterior
Num lao do tipo DO
WHILE, a repetio
executada enquanto a
condio verdadeira
Num lao do tipo DO
UNTIL, a repetio
executada at que a
condio se torne
verdadeira.

Sub doTest2()
Dim intN As Integer
intN = 5
Do Until intN = 0
MsgBox "Iterao " & intN
intN = intN - 1
Loop
End Sub

14 de 14

Lao Do Until Teste no Final


Veja o exemplo a
seguir:
Assim como no
lao DO WHILE,
voc pode colocar
a condio
UNTIL no final
da estrutura de
lao. Isso deve
forar o lao ser
executado pelo
menos uma vez.

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

Você também pode gostar