Curso básico de programación en Visual Basic

  Lección 9

Solución, if y else

 

Realizamos programas para la gestión de empresas. Empresas medianas y pequeñas. Programas de contabilidad, cartera de pedidos clientes proveedores, facturación control de albaranes, tesorería cartera de cobros y pagos y estadísticas.

Nuestro agradecimiento a todos los que por unas causas o por otras visitan nuestra web. Gestión de empresas PYMES. Curso de programación de Visual Basic.


 

Pues aquí están las soluciones, creo que esta forma de darlas será la mejor, ya que no tendrás que esperar a que esté lista la siguiente entrega para saber si has conseguido resolver los problemillas/ejercicios con éxito...

El juego básico:

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        n = Val(InputBox$("Escribe un número del 1 al 100"))
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

1. Comprobar que el número introducido en el InputBox esté entre 1 y 100, en caso de que no sea así, volver a preguntar. Una de las soluciones, sin usar el GOTO:

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
        Loop While n < 1 Or n > 100
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

2. Si se escribe CERO mostrar el número que el VB había "pensado" y terminar.

    Dim n As Integer
    Dim x As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
            If n = 0 Then
                MsgBox "Mi número era el " & CStr(x)
                Unload Me
                End
            End If
        Loop While n < 1 Or n > 100
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado."

3. Cuando lo acertemos que nos indique en cuantos intentos lo hemos conseguido.

    Dim n As Integer
    Dim x As Integer
    Dim v As Integer

    Randomize Timer
    x = Int(Rnd * 100) + 1
    Do
        Do
            n = Val(InputBox$("Escribe un número del 1 al 100"))
            If n = 0 Then
                MsgBox "Mi número era el " & CStr(x)
		'Si está en el Form_Load
                'End
		'Si está en un procedimiento
		Exit Sub
            End If
        Loop While n < 1 Or n > 100
        v = v + 1
        If n = x Then Exit Do
        If n < x Then
            MsgBox "El número " & CStr(n) & " es menor."
        Else
            MsgBox "El número " & CStr(n) & " es mayor."
        End If
    Loop
    MsgBox "Lo has acertado en " & CStr(v) & " veces."

4. Ahora al revés, es decir: que nosotros pensemos un número del 1 al 100 y el VB intente adivinarlo, para ello deberá mostrarnos un número y nosotros indicarle si lo ha acertado.

    Dim x As Integer
    Dim v As Integer

    Randomize Timer
    Do
        x = Int(Rnd * 100) + 1
        v = v + 1
        If MsgBox("Mi número es: " & CStr(x) & Chr$(13) & "¿He acertado?", 4) = 6 Then
            MsgBox "Lo he acertado en " & CStr(v) & " veces."
            Exit Do
        End If
    Loop

5. Otro igual, pero indicándole si nuestro número es Menor, Mayor o es correcto... habrá que darle las mismas oportunidades... (este es el que tiene el "truco" del divide y vencerás...

    Dim x As Integer
    Dim v As Integer
    Dim a As Integer
    Dim z As Integer

    a = 1
    z = 100
    'En este caso no necesitamos números aleatorios
    Do
        x = (z - a) / 2 + a
        v = v + 1
        If MsgBox("Mi número es: " & CStr(x) & Chr$(13) & "¿He acertado?", 4) = 6 Then
            MsgBox "Lo he acertado en " & CStr(v) & " veces."
            Exit Do
        Else
            If MsgBox("Entonces... ¿ " & CStr(x) & " es mayor?", 4) = 6 Then
                'El número del ordenador es mayor
                'debe estar entre x-1 y a
                z = x - 1
            Else
                'El número del ordenador es menor
                'debe estar entre x+1 y z
                a = x + 1
            End If
        End If
    Loop

 

Ahora a esperar a la décima entrega que será dentro de poquito... un mes, un año... ¿quién sabe?