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
-
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
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
-
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
-
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.
-
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
-
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.