Download - VBA 08.01 - Estruturas de Laços
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 1/16
Autores: Prof. Carlos Alberto Paiva (Beto)Profa. Andréia Machion
CURSO: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
ESTRUTURAS DE REPETIÇÃO- Contadores -- Expressões Lógicas -
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 2/16
2 de 14
Laços
• Utilizam-se laços quando houver necessidadede repetir um bloco de códigos
• O número de vezes que a repetição acontece é
– Definido por um contador laço contado
– Definido por um evento que acontece laço comsentinela
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 3/16
3 de 14
O Laço FOR ... NEXT
• É um laço do tipo CONTADOR• É possível, usando variáveis ou valores, definir os
seguintes componentes do laço: – Contador: é o coração do laço, pois conta o número
de vezes que o laço é executado. – Início: é o valor inicial do contador. Normalmente
inicia em 1, a não ser por uma necessidade de algumcálculo matemático.
– Fim: marca o final do laço –
é o valor que você querque o laço pare. – Passo: é o incremento do contador.
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 4/16
4 de 14
ExemploDim intCounter As Integer
For intCounter = 1 To 25....
Next
• Note que o final do laço é marcado pela palavra NEXT e não END como nosoutros comandos
• Esse laço também poderia ser
For intCounter = 1 To 25 Step 5
.....
Next
• O que força o contador intCounter ser incrementado de 5 em 5 de talmaneira que o laço seria repetido apenas 5 vezes.
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 5/16
5 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
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 6/16
6 de 14
Discussão sobre o exemplo
• O laço FOR … NEXT executa 10 passos;
• Em cada iteração faz-se a verificação do contador: par ou ímpar,utilizando-se uma estrutura If…Then…Else – ou seja, existe uma estrutura If…Then…Else dentro de uma
estrutura For…Next – o que é chamado Aninhamento de Estruturas – muito comum em
programação
• a instrução condicional faz um cálculo e verifica o seu resultado: – o resto da divisão (mod) por 2, que pode ser 0 – para números pares –
ou 1 –
para números ímpares.
• Next incrementa o contador.
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 7/16
7 de 14
Exercícios FOR/NEXT
•
Elabore um código que exiba os DIVISORES deum número INTEIRO qualquer. Dica: o númerode interações do laço NÃO deve passar dametade desse número.
• Complemente o código acima e informe se onúmero é ou não é PRIMO.
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 8/16
8 de 14
Laço Do - Loop
•
O laço DO – LOOP é um laço de controle porsentinela.
• Ele é executado através de condição específica(lógica).
• Existem 2 variações do laço DO - LOOP – Do While: o laço é executado ENQUANTO a
condição de controle é verdadeira. – Do Until: o laço é executado ATÉ QUE uma
condição de controle se torne verdadeira
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 9/16
9 de 14
Exemplo DO - WHILE
Sub doTest()Dim intCont As Integer
intCont = 1
Do While intCont <= 5
MsgBox “Esta é a iteração numero " & intCont
intCont = intCont + 1
Loop
End Sub
Note que o laço aqui também usa um contador
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 10/16
10 de 14
Considere o Exemplo abaixoSub ifTest()
Dim intNum As Integer
intNum = InputBox("Digite entre 1 e 15", "Teste IF")
If intNum < 1 or intNum > 15 Then
MsgBox "O número fora do intervalo", vbCritical, _
"Ooops"
End If
End Sub
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 11/16
11 de 14
Quase bom...
• Note que a sub-rotina ifTestexecuta um teste para verificarse o usuário digitou umnúmero entre 1 e 15.
•
No entanto, se ele digitou umnúmero fora do intervalo, oprograma para e o usuárioprecisa reiniciá-lo.
• Como deveria ser para que o
programa ficasse repetindo oprompt até que o usuáriodigitasse um número dentrodo intervalo requerido?
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 12/16
12 de 14
Veja:Option Explicit
Dim intNum As Integer
Sub doTest1()
Do
intNum = InputBox("Digite um numero entre 1 e 15", _
"Teste de Laços")
If intNum < 1 Or intNum > 15 Then
MsgBox "O número deveria ser entre 1 e 15", _
vbCritical, "Ooops“
End If
Loop While intNum < 1 Or intNum > 15
End Sub
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 13/16
13 de 14
Note que• Não estão sendo
utilizados contadores dequalquer tipo;• O teste é feito com o
valor da variável intNum;• Outro detalhe importante
é o lugar onde o testeocorre;
• De forma diferente doexemplo anterior, o teste
é feito no final, o queforça o laço ser executadopelo menos uma vez.
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 14/16
14 de 14
Laço Do Until – Teste no Início• É uma variação do laço
DO WHILE doexemplo anterior
• Num laço do tipo DOWHILE, a repetição é
executada enquanto acondição é verdadeira
• Num laço do tipo DOUNTIL, a repetição éexecutada até que acondição se torneverdadeira.
Sub doTest2()
Dim intN As Integer
intN = 5
Do Until intN = 0MsgBox "Iteração " & intN
intN = intN - 1
Loop
End Sub
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 15/16
15 de 14
Laço Do Until – Teste no Final
• Veja o exemplo aseguir:
• Assim como nolaço DO WHILE,
você pode colocara condiçãoUNTIL no finalda estrutura delaço. Isso deve
forçar o laço serexecutado pelomenos uma vez.
Sub doTest3()
Dim intN As Integer
intN = 5
Do
MsgBox "Iteração " & intN
intN = intN - 1
Loop Until intN = 0
End Sub
7/23/2019 VBA 08.01 - Estruturas de Laços
http://slidepdf.com/reader/full/vba-0801-estruturas-de-lacos 16/16
16 de 14
Exercícios DO - LOOP
• Elabore o código da Sequencia de Fibonacci,utilizando o laço DO – LOOP. Deve-se informar
o número máximo da sequencia a ser exibida.