vba 08.01 - estruturas de laços

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

Upload: mauro-ferreira-de-lima

Post on 18-Feb-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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 -

Page 2: 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 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

Page 3: 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 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.

Page 4: 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 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.

Page 5: 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 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

Page 6: 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 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.

Page 7: 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 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.

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

Page 9: 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 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

Page 10: 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 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

Page 11: 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 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?

Page 12: 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 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

Page 13: 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 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.

Page 14: 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 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

Page 15: 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 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 

Page 16: 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 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.