Si hemos desarrollado el primer paso habremos llegado a una solución similar a la siguiente:
Pseudocódigo:
0. Inicio
1. Mostrar “Control de cajero”
2. Mientras TotalRetirado < 600 Hacer
Mostrar “Introduzca la cantidad en euros a retirar”
Pedir RetiroActual
TotalRetirado = TotalRetirado + RetiroActual
Repetir
3. Mostrar "La cantidad retirada ha excedido el limite.Cajero fuera de servicio."
4. Fin
Código Visual Basic:
Option Explicit On
'Control de cajero
Public Class Form1
REM Declaración de variables
Dim TotalRetirado As Integer
Dim RetiroActual As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Control de cajero"
Do While TotalRetirado < 600
RetiroActual = InputBox("Introduzca la cantidad en euros a retirar", "Dato RetiroActual")
TotalRetirado = TotalRetirado + RetiroActual
Loop
Label1.Text = vbCrLf & "La cantidad retirada ha excedido el limite." &
vbCrLf & "Cajero fuera de servicio. Acuda al más cercano."
End Sub
End Class
Con este programa simulamos el que se vaya retirando dinero progresivamente hasta que si se alcanza que el dinero total retirado es de 600 euros o superior ya no se permite continuar retirando dinero y se muestra un mensaje de advertencia. El programa podría mejorarse pero no vamos a entretenernos en ello por el momento.
Pasemos al segundo paso, que vamos a plantear en estos términos:
Declararemos una variable booleana a la que podemos poner un nombre como limiteExcedido ó limiteSobrepasado o similar.
Inicialmente haremos que esa variable booleana sea false (recordar que las variables booleanas solo pueden tomar dos valores, true ó false o en castellano verdadero ó falso).
Ahora el bucle en lugar de estar controlado por la condición TotalRetirado < 600 deberá estar controlado por la variable booleana con una condición del tipo "Mientras limiteExcedido sea igual a falso, entramos en el bucle. En caso contrario, no entramos", de modo que si la variable booleana vale false se debe entrar en el bucle, y si vale true no se debe entrar.
Dado que inicialmente hemos dicho que la variable booleana valdrá false, tendremos que establecer un condicional (un Si-Entonces o If-Then) para detectar, después de cada retirada de dinero, si la variable booleana debe cambiarse a true (verdadero) para evitar la repetición del bucle.
De este modo, después de una retirada de dinero tendremos que:
- Actualizar el valor de TotalRetirado
- Comprobar si TotalRetirado es igual o superior a 600 (que es el límite para repetir la petición de retirada de dinero o no). Si TotalRetirado es igual o superior a 600 debemos cambiar el valor de la variable booleana a true (que significa que se ha excedido el límite disponible). Si no es igual o superior a 600 no hemos de hacer nada: al no hacer nada la variable booleana seguirá siendo false y se volverá a pedir al usuario que introduzca una cantidad de dinero a retirar.
Debemos plantear el pseudocódigo, e igualmente escribir el código.
Nota: para comprobar que el pseudocódigo sea correcto se recomienda "traducirlo" a Visual Basic y comprobar que todo funcione correctamente.
Finalmente conviene comparar el código del paso 1 y el del paso 2 y reflexionar ¿en qué ha consistido el cambio? ¿supone un cambio en el funcionamiento del programa o realmente el funcionamiento es el mismo diferiendo solo el planteamiento?
Una vez tengamos este paso completado daremos orientaciones adicionales.