Outro bug: Algo está errado fixa

Nesta lição, você aprenderá encontrar um erro lógico que ocorre apenas em determinadas situações.

Na lição anterior, O que? Não era para fazer isso! Localizando erros de lógica, você aprendeu como localizar e corrigir um erro na lógica.No código de exemplo para essa lição, ainda há um bug ocultando — uma que seja mais difícil localizar porque ela ocorre apenas em determinadas situações.

Testando um programa

Como um programador, quando se trata de testar seu programa para ver se ele comporta-se da maneira como você deseja, você está em desvantagem.Você sabe como ele deveria funcionar, portanto é improvável que você cometa um equívoco que poderia descobrir um erro de lógica.Um usuário que desconhece o programa, no entanto, pode e irá fazer coisas que você não pensou.

Por exemplo, em um programa que calcula milhas por hora dividindo o número de milhas viajadas pelo número de horas de viagem, o que acontece se o usuário insere zero para o horário ou as milhas?Vamos experimentar e ver.

Tente-o!

Para testar o programa

  1. Abra o projeto LogicErrors que você criou na lição anterior, O que? Não era para fazer isso! Localizando erros de lógica.

    Observação:

    Se você não concluiu ou salvou o projeto anterior, você precisará voltar e concluí-lo antes de continuar.

  2. Pressione F5 para executar a página.Na primeira caixa de texto, digite 0 (para representar os minutos) e na segunda caixa de texto, digite 5 (para representar as milhas) e em seguida, clique em Button1 .

    Um caixa de mensagem é exibida com a mensagem "Average speed Infinity".

    Mantenha o projeto aberto. No próximo procedimento, você aprenderá a localizar o erro de lógica.

5 Dividido por 0 = infinito?

No procedimento anterior, "infinito" pode não ser que você esperava, mas é matematicamente correto — 0 entra em 5 um número infinito de vezes.Isso, no entanto, não é o que você desejaria que os usuários do seu programa vissem.Você pode pensar em uma maneira para evitar isso?

Você pode pensar em adicionar um manipulador de erro, um procedimento que você aprendeu na lição O que fazer quando algo dá errado: Manipulando erros.No entanto, nesse caso não funciona — o resultado "infinito" não é um erro; ele é apenas o que você não deseja.

Como provavelmente não é útil mostrar uma velocidade de zero, uma maneira de corrigir o problema seria testar um valor igual a zero e em seguida, avisar o usuário que eles devem digitar um número maior.Enquanto você estiver nisso, você pode também impedir que o usuário insira números negativos, pois os números negativos também podem produzir um resultado falso.

No próximo procedimento, você modificará o código do manipulador de eventos Button1_Click para chamar a função GetMPH somente se os valores forem maiores que zero.

Tente-o!

Para corrigir o erro

  1. No Editor de Códigos, altere o código no manipulador de eventos Button1_Click como segue:

    Dim minutes As Integer = CInt(Textbox1.Text)
    Dim miles As Double = CDbl(Textbox2.Text)
    Dim hours As Double = 0
    If minutes <= 0 Or miles <= 0 Then
      MsgBox("Please enter a number greater than zero")
    Else
      hours = minutes / 60
      MsgBox("Average speed " & GetMPH(miles, hours))
    End If
    
  2. Pressione F5 para executar o programa novamente.Na primeira caixa de texto, digite 0,e na segunda caixa de texto, digite 5.Em seguida, clique em Button1.

    Você verá a caixa de mensagem com instruções para você digitar um número maior que 0.Tente testar seu programa com outras combinações de números até ficar satisfeito o bug corrigido.

Próximas etapas

Nesta lição, você aprendeu como localizar e corrigir um erro lógico que causou um comportamento inesperado.Na próxima lição, você aprenderá como usar comentários no seu código.

Próxima Lesson: Fazendo anotações em seus programas: Usando comentários

Consulte também

Tarefas

O que? Não era para fazer isso! Localizando erros de lógica

O que fazer quando algo dá errado: Manipulando erros

Conhece os bugs: Três tipos de erros de programação

Localizando erros: Introdução à depuração do Visual Basic

Referência

Operador / (Visual Basic)