Autor Tema: variable booleana control bucle ejercicio 5 curso bases programación semana 8  (Leído 3128 veces)

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Vamos a estudiar cómo usar una variable booleana para controlar un bucle.

El enunciado que se nos plantea es el siguiente:

5. Un cajero automático permite extraer distintas cantidades de dinero en un día hasta alcanzar el límite de 600 euros. Se quiere plantear un programa que vaya registrando la cantidad extraida en cada ocasión durante un día y use un acumulador para registrar el total. A su vez, mediante un interruptor se debe controlar cuándo se excede la cantidad máxima permitida y en ese momento mostrar el mensaje “Se ha excedido la cantidad máxima permitida”. Desarrollar el pseudocódigo.

Ejemplo de ejecución:
Introducir la cantidad extraida: 200
Introducir la cantidad extraida: 300
Introducir la cantidad extraida: 400
Se ha excedido la cantidad máxima permitida [Fin]



Primer paso:

Vamos a plantear un pseudocódigo sin hacer uso de variables booleanas (para empezar de una forma simplificada, luego las introduciremos) de modo que nuestro objetivo ahora es que se pida al usuario la cantidad a retirar y cuando se supere que el acumulado retirado es mayor de 600 euros, nos muestre un mensaje de aviso informando de que se ha superado el límite.

Una vez planteado el pseudocódigo, escribir un pequeño programa en Visual Basic para probarlo. Para pedir los datos en Visual Basic usaremos InputBox. Para ver un ejemplo de uso de inputbox podemos consultar https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:funcion-val-con-visual-basic-convertir-texto-textbox-inputbox-en-valores-numericos-ejemplos-cu00318a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61

Tareas a realizar:

1) Definir los nombres de variables que vamos a utilizar y su significado (de momento solo necesitamos una variable para acumular el resultado y si lo deseamos, alguna variable auxiliar más. De momento no usaremos variables booleanas)
2) Definir el pseudocódigo
3) Escribir un pequeño programa en Visual Basic para probar este pseudocódigo
4) Si hay problemas, corregir el pseudocódigo y repetir la prueba hasta que tanto el pseudocódigo como el pequeño programa en Visual Basic podamos considerar que son correctos.

Podríamos pensar en escribir directamente el código saltándonos el pseudocódigo. Eso sería una mala práctica: sería como empezar a construir una casa sin planos. Antes de hacer hay que pensar-planificar. Ese es el papel que juega el pseudocódigo. Para aprender a planificar, corregimos nuestra planificación haciendo uso de un pequeño programa en Visual Basic que nos dirá si hemos planificado correctamente o no.

Una vez tengamos este pseudocódigo y el código de Visual Basic asociado, pasaremos al siguiente paso.


Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
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:

Código: [Seleccionar]
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.

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Si hemos desarrollado el segundo paso habremos llegado a una solución similar a la siguiente.

Pseudocódigo

0. Inicio

     1. Mostrar “Control de cajero”
     2. Limiteexcedido = falso
     3. Mientras Limiteexcedido = falso Hacer         
         Mostrar “Introduzca la cantidad en euros a retirar”
         Pedir Retiro
         Totalretiros = Totalretiros + Retiro
         Si Totalretiros > = 600 Entonces
         Limiteexcedido = verdadero     
         FinSI   
         Repetir
4.Mostrar "Se ha excedido el límite permitido
5. Fin



Código Visual-Basic

Código: [Seleccionar]
Option Explicit On
'Control de cajero
Public Class Form1
    REM Declaración de variables
    Dim Totalretiros As Integer
    Dim Retiro As Integer
    Dim Limiteexcedido As Boolean
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Control de cajero"
Limiteexcedido = False
        Do While Limiteexcedido = False
            Retiro = InputBox("Introduzca la cantidad en euros a retirar", "Dato Retiro")
            Totalretiros = Totalretiros + Retiro
            If Totalretiros >= 600 Then
                Limiteexcedido = True
            End If
        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

Aquí la variable Limiteexcedido (variable booleana) decimos que funciona como elemento auxiliar y que es un interruptor, en el sentido de que cuando está en "ON" (verdadero) ocurre lo contrario a cuando está en "OFF" false.

Con esto hemos cumplido lo que pedía el enunciado. Comprobémoslo:

a) Programa que vaya registrando la cantidad extraida en cada ocasión durante un día: la cantidad de cada extracción se registra en la variable Retiro

b)  y use un acumulador para registrar el total. El acumulador es Totalretiros

c) A su vez, mediante un interruptor se debe controlar cuándo se excede la cantidad máxima permitida y en ese momento mostrar el mensaje “Se ha excedido la cantidad máxima permitida”. El interruptor (variable booleana) es quien controla cuándo se excede la cantidad máxima permitida. Cuando esto ocurre, se produce la salida del bucle y se muestra el mensaje.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".