Esta lección es parte de un tutorial continuo. La primera parte está aquí: Diseño Errores de tiempo
La tercera categoría de errores son los errores lógicos. Estos pueden ser pensados como errores de codificación. Tus errores de codificación. Pueden ser bastante difíciles de rastrear, y hacer que te arranques el pelo con frustración. A menudo te escucharás a ti mismo diciendo «¡Pero eso debería funcionar! ¿Por qué no lo hará?»
Añade otro botón al formulario que creaste en el primer parte, e intenta este código como un ejemplo de un error lógico:
Dim x As Integer
Dim y As Integer
Respuesta tenue como entero
x = 10.5
y = 3
respuesta = x * y
TextBox1.Text = respuesta
Cuando hayas añadido el código a tu botón, ejecuta tu programa y pruébalo. Antes de pulsar el botón, ¿qué respuesta esperabas obtener?
Uno pensaría que 10,5 multiplicado por 3 le daría la respuesta 31,5. Haz clic en tu botón. ¡La respuesta que aparece en tu cuadro de texto es 30!
Es un error lógico: cuando no obtienes la respuesta que pensabas que obtendrías. El problema, si estabas prestando atención durante las secciones de tipos variables, es que estamos tratando de poner números de punto flotante en una variable entera tipo. La variable Integer sólo funciona con números enteros. Cuando asignas 10.5 a la variable x, el punto 5 del final se corta. Así que sólo el 10 obtiene almacenado en x. 10 por 3 es treinta, y esta es la respuesta que aparece en el caja de texto.
Pero el punto es que VB.NET no planteó un error de diseño. Tampoco lo hizo …y que se produzca un error en el tiempo de ejecución. El programa se ejecutó, y no se «apagó» en nosotros. No te dio la respuesta que esperabas, fue un error lógico.
Los errores de lógica pueden ser bastante simples de rastrear y resolver. (El problema anterior puede resolverse cambiando los tipos de variables de Entero a Sencillo o Doble). Pero también pueden ser bastante difíciles de rastrear. Especialmente porque su código se hace más y más largo. Aquí hay otro ejemplo de un error lógico.
Borra el código que tienes para el botón 2, y añade lo siguiente en su lugar:
Dim i As Integer
Dim LetterCount As Integer
Dim strText As String
Letra tenue como Char
strText = «Debugging»
Para
i = 1 Para strText.Length – 1
letra = strText.Substring(1)
Si la letra = «g» entonces
LetterCount = LetterCount + 1
Finalizar si
Siguiente
TextBox1.Text = «G aparece » & LetterCount & » times»
Todo lo que hace el código es intentar contar cuántas veces la letra «g» aparece en la palabra «Depuración». Estamos usando un bucle For, y Substring para recibir una carta a la vez. Esta única letra se coloca entonces dentro de la variable llamada carta. Una declaración de «Si» se usa para comprobar si la letra es una «g». Si lo es, incrementamos la variable LetterCount. La respuesta que esperamos en el cuadro de texto es 3. Excepto que no tenemos 3. Tenemos cero:

No había líneas onduladas y por lo tanto no había errores de construcción. Cuando se pulsó el botón, una excepción de tiempo de ejecución no bloqueó el programa. Así que que deja un error lógico. ¿Pero dónde está?
En la siguiente parte, aprenderás a usar las herramientas incorporadas de VB .NET para ayudarte a rastrear los errores lógicos.
Pasa a los puntos de ruptura y herramientas de depuración en VB .NET —
Espero que te haya sido de ayuda!