next up previous contents
Next: Leitura e Escrita de Up: Técnicas de Programação Utilizando Previous: Subrotinas, Macros, Entrada e

Simulação de Programas

Para simular um programa no computador você deverá proceder da seguinte maneira:

1.
Ativar a barra de ferramentass de programas. Normalmete, a barra de ferramentas de programas é ativada quando criamos um módulo (é aquela janelinha, com botõezinhos de mãozinha, oculinhos, etc). Caso esta não esteja ativa, você deverá ativá-la através do menu ``Exibir|Barras de Ferramentas'', selecionando ``Programa''.
2.
Marcar a parada no inicio do programa. Coloque o cursor em cima do cabeçalho da função ou procedimento que você deseja simular. Em seguida, com o mouse, acione na barra de ferramentas de programas o botão da mãozinha (que significa: pare). O cabeçlho deve ficar com fundo vermelho.

Neste ponto, já se pode acionar o programa, que deverá ativar uma janela de depuração e parar no início da função/procedimento marcado.

3.
Selecionar variáveis que serão observadas na simulação. Para isso, marcar a variável (uma expressão também pode ser marcada e observada). Em seguida, na barra de programa, clicar no oculinhos e pedir para adicionar a variável. Selecionar a aba de ``Inspecionar'' para ver as variáveis selecionadas.
4.
Simular. Para isso, os dois últimos botões da barra de programas podem ser usados (a diferença entre eles está na ativação de outras funções e procedimentos de dentro de um programa, como veremos mais adiante.

Na simulação, o comando (linha) selecionado será aquele ainda por executar. Após a execução de cada comando, o valor das variáveis inspecionadas pode mudar. No término do programa, a janela de depuração desaparece.


O Tipo de dados Boolean

O tipo de dados chamado de Booleano possui apenas dois valores: TRUE e FALSE. Uma variável pode ser declarada como booleana assim:

Dim Teste As Boolean

Esta variável pode receber um valor booleano:

Teste = True

Uma variável booleana pode aparecer em expressões nos lugares onde uma condição poderia aparecer. Por exemplo:

If Teste Then $\ldots$

Essa expressão equivale a:

If Teste = TRUE Then $\ldots$

Vejamos por exemplo uma função que executa o Teste de Uauá (ver exercícios do capítulo anterior). Este teste recebe como parâmetros um capital inicial, uma taxa de juros e um capital final. O teste retorna um valor booleano: Verdadeiro se é possivel que o capital final foi alcançado por meio de juros compostos aplicados ao capital inicial na taxa indicada; Falso em caso contrário.

Function TesteUaua(CapIni As Double, Taxa As Double, CapFim As Double) As Boolean
' Testa se é plausível que CapFim tenha sido obtido
' a partir de CapIni sob juros compostos com Taxa mensal
Dim CapAtual As Double 'Capital até o momento
Dim NMeses As Integer 'Número de meses
Dim Resultado As Boolean
'Inicialização
CapAtual = CapIni
NMeses = 1
Resultado = False 'Começa assumindo teste falso
'Principal
Do While CapAtual <= CapFim
'Testa o sucesso do resultado
If CapAtual = CapFim Then
Resultado = True
End If
'Prepara próxima iteração
CapAtual = CapAtual * (1 + Taxa)
NMeses = NMeses + 1
Loop
'Retorno
TesteUaua = Resultado
End Function

Podemos simular este programa no computador. Tente a seguinte chamada da planilha: =TesteUaua(1000;0,1;1331) e =TesteUaua(1000;0,1;1300).

Um segundo exemplo: vamos fazer uma macro que lê uma sequência de inteiros positivos e informa ao usuário se esta sequência está em ordem crescente. A seqüência é terminada por um número menor que zero.

Sub EmOrdem()
' Lê uma sequência de inteiros positivos e informa ao usuário
' se esta sequência está em ordem crescente
Dim Atual As Integer
Dim Velho As Integer
Dim AindaEmOrdem As Boolean
'Inicializações
AindaEmOrdem = True
Atual = CInt(InputBox(``Entre com um inteiro:''))
Velho = Atual 'Velho inicia com o mesmo valor que atual
'Principal
Do While Atual >= 0
If AindaEmOrdem And (Atual < Velho) Then
'Teste falhou
AindaEmOrdem = False
End If
'Prepara a próxima iteração
Velho = Atual
Atual = CInt(InputBox(``Entre com mais um inteiro:''))
Loop
If AindaEmOrdem Then
MsgBox(``Seqüência em ordem.'')
Else MsgBox(``Desordenado.'')
End If
End Sub

Teste esse programa para as seqüências 1, 3, 7, 22, -1 e 1, 7, 2, 4, -23.


Exercícios

1.
Alterar o programa acima para parar e dar a resposta assim que descobrir que a seqüência não está em ordem.

2.
Simular no computador as suas soluções para os exercícios 1 e 2 do capítulo 5, para os valores de N=5 e N=6.

3.
O resto da divisão inteira de X por Y é calculada por X MOD Y. O número X é divisível por Y se
X MOD Y = 0
Neste caso, também dizemos que X é um mútiplo de Y.

Pede-se construir uma função MaxMultiplo(MIN,MAX,DIV) que encontra o maior múltiplo de DIV entre MIN e MAX. Resolver este problema de duas maneiras:

Simular para MaxDivisor(5,10,3) e MaxDivisor(10,20,4).

Fazer uma planilha para MaxDivisor(0,100, X) onde X varia de 11 a 31, de 2 em 2.

4.
Numa conta bancária, as movimentações de débito são representadas por números negativos e as movimentações de crédito por números positivos. Fazer uma macro que lê as movimentações de uma conta em um dia e: Você pode escolher entre solicitar, no início, o número de movimentações, ou usar algum valor especial (muito grande) como sinal de parada.

Simular para 5 valores, 2 de crédito e 3 de débito.


next up previous contents
Next: Leitura e Escrita de Up: Técnicas de Programação Utilizando Previous: Subrotinas, Macros, Entrada e
Flavio Soares Correa da Silva
2000-04-10