Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Camots en 15 de Diciembre 2012, 00:18

Título: Ejercicio Mientras... Hacer do while loop Visual Basic
Publicado por: Camots en 15 de Diciembre 2012, 00:18
Hola en un ejercicio se me pide los siguiente: establecer un
valor de variable alfanumérica “Albert Einstein” como dato inicial. Mediante un bucle
Mientras…Hacer mostrar un menú “1. Intentar averiguar el nombre secreto 2. Ver
pista 3. Salir del programa. Si se elige la opción 1 el usuario debe tener opción a
introducir un nombre, y si coincide con el nombre secreto se muestra el mensaje “Has
acertado” y el programa debe terminar. Si el usuario falla se muestra el mensaje “Has
fallado” y se vuelve a mostrar el menú. Si el usuario elije la opción 2 se muestra la pista
“Es el físico más influyente del siglo XX” y se vuelve al menú. Si el usuario elije la
opción 3 se sale del programa.

Con la instruccion Salir Mientras no consigo volver al menu de inicio pero si con la Ir a
¿Es correcto o se puede con la Salir Mientras? Ahi va el codigo,dejo exit do como lo tenia aunque no valga


Código: [Seleccionar]
Option Explicit

Dim Menu As Integer
Dim Nombresecreto As String
Dim Respuesta As String

Private Sub Form_Load()
Nombresecreto = "Albert Einstein"

1
Menu = InputBox("1.-Intentar averiguar el nombre secreto" & vbCrLf & "2.-Ver pista" _
& vbCrLf & "3.-Salir del programa", "Elegir opcion")
Do While Menu <= 3 Or Menu >= 1
 If Menu = 1 Then
      Respuesta = InputBox("Introduzca nombre secreto")
       If Respuesta = Nombresecreto Then
         MsgBox ("Has acertado")
         End
       Else
         MsgBox ("Has fallado")
       GoTo 1
       Exit Do
         
       End If
 End If
 If Menu = 2 Then
         MsgBox ("Es el fisico mas influyente del siglo XX")
         GoTo 1
         Exit Do
 End If
 If Menu = 3 Then
         MsgBox ("Gracias por utilizar este programa")
         End
 End If
 Loop
 End Sub

Título: Re:Ejercicio Mientras... Hacer Visual Basic
Publicado por: César Krall en 15 de Diciembre 2012, 11:39
Hola, el planteamiento va bien orientado pero el uso del IrA o GoTo en general es algo que debemos conocer pero no usar porque genera distintos problemas. Aquí te dejo lo que sería un planteamiento para el código sin el uso del goto, lo importante es que seas capaz de interpretar este código, saber por qué funciona y tener la idea presente para otros casos similares. Fíjate que el bucle se repite indefinidamente hasta que se alcanza una condición de salida. (Nota: el programa es mejorable, entiendo que solo se trata de comprender el uso de bucles).

Dim Menu As Integer
Dim Nombresecreto As String

Private Sub Form_Load()
Nombresecreto = "Albert Einstein"
Do While Menu <> 3
Menu = InputBox("1.-Intentar averiguar el nombre secreto" & vbCrLf & "2.-Ver pista" _
& vbCrLf & "3.-Salir del programa", "Elegir opcion")
 If Menu = 1 Then
      Respuesta = InputBox("Introduzca nombre secreto entre comillas ")
       If Respuesta = Nombresecreto Then
         MsgBox ("Has acertado")
         End
       Else
         MsgBox ("Has fallado")
       End If
 End If
 If Menu = 2 Then
         MsgBox ("Es el fisico mas influyente del siglo XX")
 End If
 If Menu = 3 Then
         MsgBox ("Gracias por utilizar este programa")
         End
 End If
 Loop
 End Sub
Título: Re:Ejercicio Mientras... Hacer Visual Basic
Publicado por: César Krall en 15 de Diciembre 2012, 11:42
Nota: como vez, en el ejemplo que te he puesto no sería necesario el uso de un salir mientras, simplemente cuando se cumple una condición de terminación terminamos.
Título: Re:Ejercicio Mientras... Hacer Visual Basic
Publicado por: Camots en 15 de Diciembre 2012, 14:18
Gracias Cesar voy por modificacion directa de flujos,pense que iban por ahi los tiros,pero se me hacia raro tener que usar un go to.El codigo intento escribirlo lo mas sencillo posible para que funcione,en un futuro tratare de mejorarlo.Un saludo
Título: Re:Ejercicio Mientras... Hacer Visual Basic
Publicado por: César Krall en 15 de Diciembre 2012, 18:30
Ten en cuenta que usar un End también es modificación del flujo del programa, ya que lo natural sería que la última instrucción en ejecutarse fuera la última escrita, pero al introducir un End abortamos y finalizamos la ejecución de un programa en un punto intermedio.