Ao final dessa aula você deve ser capaz de entender (PROFUNDAMENTE) o programa abaixo:

Function encontraMaior(Inicio As Integer, Fim As Integer, Coluna As Integer)
Dim I, Resultado As Integer
Resultado = Cells(Inicio, Coluna)
I = Inicio + 1
Do While I <= Fim
    If (Resultado < Cells(I, Coluna)) Then
        Resultado = Cells(I, Coluna)
    End If
    I = I + 1
Loop
encontraMaior = Resultado
End Function

1. O programa acima cria uma função. Essa função na verdade já está implementada no Excel. Na prática, antes de criar funções, sugerimos verificar se elas já não existem prontas no Excel, para (preferencialmente) usar programação declarativa em vez de construir funções como essa. Em nossas aulas, entretanto, reconstruiremos algumas das funções existentes no Excel, para desenvolvermos nossos estudos de programação.

2. a função recebe um número de coluna - variável Coluna - e dois valores que indicam a primeira e a última linha a serem analisadas - variáveis Inicio e Fim. Ela deve percorrer os valores presentes na coluna da planilha de número Coluna, entre as linhas Inicio e Fim, e identificar o maior valor encontrado. Observe que Coluna, Inicio e Fim são necessariamente números inteiros, senão a função nem consegue iniciar. Assume-se, também, que Coluna seja maior que zero, pois ela indica uma coluna. Assume-se também, por motivos similares, que Inicio seja maior que zero e que Fim seja maior que Inicio.

3. a função também assume que os valores a serem analisados são números inteiros. Se a planilha não estiver preenchida corretamente, a função não dará certo.

4. a função trabalha por tentativa e erro. Para isso, precisamos de duas variáveis internas à função, denominadas I e Resultado. Resultado armazenará o valor máximo e I serve para controlar qual valor é analisado em cada momento.

5. inicialmente, chutamos que o maior valor esteja na primeira linha analisada (linha Inicio). Copiamos o valor encontrado em Cells(Inicio, Coluna) por sobre a variável Resultado.

6. depois, vamos procurando valores ainda maiores, a partir da linha Inicio+1. Para isso, colocamos em I o resultado da conta Inicio+1.

7. efetuamos uma repetição "Do While () ... Loop". Enquanto uma certa condição for satisfeita, o corpo da repetição será efetuado.

8. no corpo da repetição, colocamos um teste simples do tipo "If () Then ... End If". Se encontrarmos um valor maior que o armazenado em Resultado, esse valor deve substituir o valor armazenado até então.

9. depois do teste mas ainda dentro da repetição, a variável I é incrementada de uma unidade. Isso é MUITO IMPORTANTE, senão as linhas não serão todas analisadas.

10. a repetição precisa ocorrer até atingir a linha definida pela variável Fim.

Para testar esse programa, coloque na célula A1 o valor 1, na célula A2 o valor 10, na célula A3 o valor 2 e na coluna B (a partir da linha 1) diversos números inteiros. Coloque na célula C1 a expressão "= encontraMaior(A1,A2,A3)" e veja o que acontece.

Agora modifique os valores de A1 e A2 e veja o que acontece.

Agora, para completar, um fato curioso: modifique os valores na coluna B e observe o que acontece. O esperado é que o resultado apresentado em C1 não seja atualizado. Modifique novamente o conteúdo de A1 ou A2 e veja o que acontece.

Encontre uma explicação para isso. Isso será cobrado de você na aula do dia 11.
Última atualização: quarta-feira, 29 dez. 2010, 21:00