Autor Tema: Semana 8 - Ejercicio 9 curso bases de la programación I tutorizado online  (Leído 4154 veces)

karlos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Hola,

He resuelto el problema de la siguiente forma puesto que he tenido muchos problemas utilizando While....  los bucles se me quedaban colgados.  No termino de entender la funcionalidad de la herramienta While.

La pregunta es: mejora la eficiencia, rendimiento del programa utilizando la herramienta While? como se introduciría en el codigo que he creado?

Public Class Form1
    Dim cantidadExcedida As Boolean
    Dim extracción As Integer
    Dim totalextraccion As Integer
    Dim valorLimite As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label1.Text = "Introducir la cantidad extraida "
        valorLimite = 600

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        extracción = Val(TextBox1.Text)
        totalextraccion = totalextraccion + extracción
        Label2.Text = "Cantidad de dinero extraida total ha sido " & totalextraccion & " €"

        If totalextraccion >= valorLimite Then

            MsgBox("La cantidad de dinero extraida ha sido superior a " & valorLimite & " €")
            totalextraccion = 0

        End If
    End Sub
End Class
« Última modificación: 05 de Septiembre 2014, 10:30 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Semana 8 - Ejercicio 9
« Respuesta #1 en: 07 de Febrero 2013, 17:06 »
Continúo con las cuestiones: la herramienta while se utiliza para crear bucles. De hecho, en vez de usar for podríamos usar while si quisiéramos.

El código que has creado está bien resuelto, el único problema que le veo es que no pareces usar un interruptor (cuestión que te pedía el enunciado). Usar una herramienta como while u otra como inputbox, textbox, etc. depende del lenguaje que estemos utilizando y de lo que sea más apropiado. Con Visual Basic tendría poco sentido resolver este programa usando un while, con otros lenguajes que por ejemplo no disponen de textboxes sí podría tener más sentido.

Si aún así quisiéramos resolverlo con un while tenemos que tener presente una cosa: un while no se detiene hasta que exista una condición por la cual se detenga. Esta condición puede ser una petición de datos interactiva al usuario o que se alcance la condición de terminación del bucle. Si quisiéramos forzosamente hacerlo con un while la idea sería que en cada pasada el bucle se detenga para pedirle el dato al usuario.

Código orientativo:

Dim cantidadExcedida As Boolean
Dim extraccion As Integer
Dim totalextraccion As Integer
Dim valorLimite As Integer

Private Sub Form_Load()
Label1.Caption = "Introducir la cantidad extraida "
valorLimite = 600
extraccion = InputBox("Cuál es la cantidad a extraer del cajero?", "Cantidad")

Do While extraccion < valorLimite

extraccion = InputBox("Cuál es la cantidad a extraer del cajero?", "Cantidad")

        totalextraccion = totalextraccion + extraccion
        Label2.Caption = "Cantidad de dinero extraida total ha sido " & totalextraccion & " €"

        If totalextraccion >= valorLimite Then

            MsgBox ("La cantidad de dinero extraida ha sido superior a " & valorLimite & " €")
            totalextraccion = 0
        Exit Sub
        End If
Loop
End Sub


Pero reitero dos cuestiones:

No hay que obcecarse por usar una herramienta (while u otra). Valorar alternativas y escoger la más razonable / eficiente.

Con Visual Basic tiene más sentido la solución como la has planteado que usando un while. El único cambio que te propondría es que introduzcas un interruptor como limiteExcedido tipo boolean, y que cambies el fragmento condicional para usar el interruptor

If limiteExcedido = True Then

            MsgBox("La cantidad de dinero extraida ha sido superior a " & valorLimite & " €")
            totalextraccion = 0

        End If

karlos

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:Semana 8 - Ejercicio 9
« Respuesta #2 en: 07 de Febrero 2013, 22:54 »
Gracias.

 

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