OS MELHORES VÍDEOS

 

Pesquisar

terça-feira, 14 de janeiro de 2014

For ... Next

O que é?

Em VBA, a instrução For ... Next repete uma mesma ação por um número de vezes definido pelo usuário.


Observe sua estrutura:
For [variável] = [valor inicial] To [valor final]
    [código]
Next
[variável] é uma variável numérica qualquer, previamente declarada ou não. No início da execução desta instrução, ela assume o valor dado por [valor inicial]. A cada iteração, as seguintes ações ocorrem:
  • Se o valor de [variável] é maior que [valor final], a instrução For ... Next é encerrada, e a execução do código fora desta estrutura continua;
  • As instruções correspondentes a [código] são executadas;
  • O valor de [variável] é acrescido de um.

Exemplo

Neste exemplo, usaremos a estrutura For ... Next para realizar uma implementação da função FATORIAL. A definição desta função é a seguinte:
  • Se x é um número natural diferente de zero, FATORIAL(x) = FATORIAL(x - 1);
  • Para x = 0, definimos FATORIAL(0) = 1.
Note que a definição acima é recursiva, de forma que podemos reescrevê-la como FATORIAL(x) = x · (x - 1) · (x - 2) · (...) · 2 · 1, para um x natural qualquer.
Para implementar esta função, podemos utilizar a estrutura For ... Next. Observe o código:
' A função mFatorial é uma implementação
' da função FATORIAL do Excel. Ela utiliza
' a estrutura For ... Next para controlar
' o número de passos necessários para
' calcular o fatorial.

Function mFatorial(x As Integer) As Long
    Dim contador As Integer
    Dim total As Long
    total = 1
    If x < 0 Then
        mFatorial = CVErr(xlErrNum)
    Else
        For contador = 1 To x
            total = total * contador
        Next
        mFatorial = total
    End If
End Function
A variável contador vai abrigar o contador que percorre os números entre 1 e o valor de entrada, x. Já a variáveltotal mantém o subtotal calculado em cada passo da função.
Esta função devolve um valor de erro caso seu valor de entrada seja um inteiro negativo, uma vez que a função só está definida para números naturais. Isto é feito na instrução mFatorial = CVErr(xlErrNum).
A parte importante deste programa é o laço de repetição (também chamado loop). Ele será executado exatamentex vezes. Observe:
For contador = 1 To x
    total = total * contador
Next
O valor de contador começa em 1 e percorre todos os naturais até x A cada passo, o total (que começa em 1) é multiplicado pelo valor do contador. Por exemplo, se o valor de entrada fosse x = 4, teríamos a seguinte seqüência:
  • O valor de contador começa em 1, que é menor ou igual a x (4). O bloco será executado, portanto. Neste passo, a variável total recebe 1 · 1, ou seja, 1;
  • O valor de contador é 2, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 1 · 2, ou seja, 2;
  • O valor de contador é 3, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 2 · 3, ou seja, 6;
  • O valor de contador é 4, que é menor ou igual a x (4). O bloco será executado. Neste passo, total recebe 6 · 4, ou seja, 24;
  • O valor de contador é 5. O bloco For ... Next é encerrado.
Em seguida, a função mFatorial encerra sua execução e devolve o valor obtido, 24.
Veja a aplicação da função mFatorial em uma planilha:

Pratique!


Nenhum comentário:

Postar um comentário