SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: vemv91 en Domingo 23 de Mayo de 2010, 17:24

Título: Qué habríais usado en lugar de GoTo?
Publicado por: vemv91 en Domingo 23 de Mayo de 2010, 17:24
Aquí un programa que pregunta la tabla de multiplicar.

Código: vb.net
  1.  
  2.         Dim T As Integer ' Número del que se pide la tabla
  3.         Dim M As Integer ' Número de la tabla por el que se va a multiplicar
  4.         Dim R As String ' Respuesta del usuario
  5.         T = 1
  6.         M = 2
  7.  
  8.         Do ' Actualiza la tabla
  9.             T += 1
  10.             M = 2
  11.             Do ' Actualiza el número de la tabla por el que se va a multiplicar
  12. line14:         ' GOTO
  13.                 Console.WriteLine(T & " por " & M)
  14.                 R = Console.ReadLine()
  15.                 If IsNumeric(R) Then
  16.                     R = CInt(R)
  17.                 Else : GoTo line14 ' GOTO
  18.                 End If
  19.                 If R = T * M Then
  20.                     Console.WriteLine("Correcto")
  21.                     M += 1
  22.                 Else
  23.                     Console.WriteLine("Incorrecto. Pulse una tecla para continuar")
  24.                     Console.ReadLine()
  25.                 End If
  26.             Loop While M < 10
  27.         Loop While T < 10
  28.         Console.WriteLine("Felicidades; te sabes la tabla de multiplicar. Pulsa una tecla para continuar")
  29.         Console.ReadLine()
  30.  
  31.  

Pues eso, me falla un pelín la lógica para evitar el temido GoTo, ¿cómo lo habríais hecho vosotros?

Un saludo. ;)
Título: Re: Qué habríais usado en lugar de GoTo?
Publicado por: g_ollivander en Lunes 24 de Mayo de 2010, 23:06
Hola , lo puedes sustituir utilizando otro ciclo :p
aqui te dejo como ...

Código: Visual Basic
  1.  
  2.     Dim T As Integer  ' Número del que se pide la tabla
  3.     Dim M As Integer ' Número de la tabla por el que se va a multiplicar
  4.     Dim R As String ' Respuesta del usuario
  5.    
  6.     T = 1
  7.     M = 2
  8.    
  9.     Dim band As Integer
  10.  
  11.     Do ' Actualiza la tabla
  12.         T = T + 1
  13.         M = 2
  14.         Do ' Actualiza el número de la tabla por el que se va a multiplicar
  15.             band = 0
  16.             Do
  17.                 Console.WriteLine(T & " por " & M)
  18.                 R = Console.ReadLine()
  19.                 If IsNumeric(R) Then
  20.                     R = CInt(R)
  21.                     If R = T * M Then
  22.                         Console.WriteLine("Correcto")
  23.                         M = M + 1
  24.                         band = 1
  25.                     Else
  26.                         Console.WriteLine("incorrecto. Pulse una tecla para continuar")
  27.                         Console.ReadLine()
  28.                     End If
  29.                 End If
  30.             Loop While band = 0
  31.         Loop While M < 10
  32.     Loop While T < 10
  33.     Console.WriteLine("Felicidades; te sabes la tabla de multiplicar. Pulsa una tecla para continuar")
  34.    Console.ReadLine()
  35.  
  36.  
Título: Re: Qué habríais usado en lugar de GoTo?
Publicado por: F_Tanori en Jueves 27 de Mayo de 2010, 12:30
Hay una instruccion  que es Continue
http://msdn.microsoft.com/es-es/library/801hyx6f%28v=VS.90%29.aspx


Código: vb.net
  1.       Dim T As Integer ' Número del que se pide la tabla
  2.       Dim M As Integer ' Número de la tabla por el que se va a multiplicar
  3.       Dim R As String ' Respuesta del usuario
  4.       T = 1
  5.       M = 2
  6.  
  7.         Do ' Actualiza la tabla
  8.             T += 1
  9.             M = 2
  10.             Do ' Actualiza el número de la tabla por el que se va a multiplicar
  11.                 Console.WriteLine(T & " por " & M)
  12.                 R = Console.ReadLine()
  13.                 If IsNumeric(R) Then
  14.                     R = CInt(R)
  15.                     If R = T * M Then
  16.                         Console.WriteLine("Correcto")
  17.                         M += 1
  18.                     Else
  19.                         Console.WriteLine("Incorrecto. Pulse una tecla para continuar")
  20.                         Console.ReadLine()
  21.                     End If
  22.                 Else
  23.                    Continue Do    
  24.                 End If
  25.             Loop While M < 10
  26.         Loop While T < 10
  27.       Console.WriteLine("Felicidades; te sabes la tabla de multiplicar. Pulsa una tecla para continuar")
  28.       Console.ReadLine()
  29.  
  30.  

Saludos
Por cierto esto es ;  movido  VB6 ---->.Net
Título: Re: Qué habríais usado en lugar de GoTo?
Publicado por: vemv91 en Jueves 27 de Mayo de 2010, 13:14
no conocía esa palabra clave, me ha gustado la idea.

declarar una variable auxiliar no dista tanto de un GoTo diría...

gracias y un saludo
Título: Re: Qué habríais usado en lugar de GoTo?
Publicado por: yamazaki052 en Miércoles 2 de Junio de 2010, 06:27
yo tambien optaria por el ciclo, solo que a veces al anidar ciclos es un poco confuso.