Temas da aula de hoje:

1. condições compostas: AND, OR, NOT - na aula de hoje testaremos o uso de AND
2. uso de Sub e programas organizados por um Maestro
3. introdução a outros tipos de dados além de Integer - Double e String

Considere a evolução dos preços de um papel específico na Bolsa de Valores. Considere um corretor que tenta acertar na medida do possível, comprando na baixa e vendendo na alta. Para facilitar, considere a compra sempre de um lote único de ações. Construa um programa que calcule o resultado obtido por esse corretor.

Considere agora um corretor mágico que seja capaz de prever o futuro, e portanto selecionar sempre os pontos ótimos de compra e venda. Construa um programa que, dada uma série histórica de preços, identifique os pontos ótimos (isso é útil, por exemplo, para comparar programas de previsão de evolução de preços - quanto mais perto um programa ficar do corretor mágico, melhor!).

Finalmente, combine os dois programas para calcular o resultado do corretor mágico e comparar com suas operações manuais (do corretor real).

Sub pontosOpera(Inicio As Integer, Fim As Integer, Col As Integer)
Dim valAnterior As Double
Dim valAtual As Double
Dim valFuturo As Double
Dim I As Integer
Dim situacao As String
I = Inicio + 1
situacao = "V"
Do While (I < Fim)
    valAnterior = Cells(I - 1, Col)
    valAtual = Cells(I, Col)
    valFuturo = Cells(I + 1, Col)
    If ((situacao = "V") And (valAtual <= valAnterior) And (valAtual <= valFuturo)) Then
        Cells(I, Col + 1) = "compra"
        situacao = "C"
    End If
    If ((situacao = "C") And (valAtual >= valAnterior) And (valAtual >= valFuturo)) Then
        Cells(I, Col + 1) = "venda"
        situacao = "V"
    End If
    I = I + 1
Loop
End Sub

Sub resultFinanc(Inicio As Integer, Fim As Integer, Col As Integer)
Dim valCompra As Double
Dim valAcum As Double
Dim I As Integer
I = Inicio
valAcum = 0#
Do While (I <= Fim)
    If (Cells(I, Col + 1) = "compra") Then
        valCompra = Cells(I, Col)
    End If
    If (Cells(I, Col + 1) = "venda") Then
        valAcum = valAcum + (Cells(I, Col) - valCompra)
    End If
    I = I + 1
Loop
Cells(I, Col + 2) = valAcum
End Sub

Sub Maestro()
Dim Inicio As Integer
Dim Fim As Integer
Dim Coluna As Integer
Inicio = Cells(1, 1)
Fim = Cells(2, 1)
Coluna = Cells(3, 1)
Call pontosOpera(Inicio, Fim, Coluna)
Call resultFinanc(Inicio, Fim, Coluna)
End Sub
Última atualização: quarta-feira, 29 dez. 2010, 21:00