Página
aula - dia 23
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
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