LPP, Ejercicio de Profundización

En este artículo, daremos un paso más allá en nuestro aprendizaje de LPP al abordar un ejercicio más completo. Este ejercicio implica la aplicación de registros, funciones, procedimientos y condicionales para desarrollar un programa que gestione un inventario en una tienda de vehículos.

Resolviendo Desafíos Avanzados

Bienvenido a otra emocionante entrega de nuestro curso de programación en LPP. En esta ocasión, nos sumergiremos en un ejercicio más complejo que pondrá a prueba y fortalecerá los conocimientos que hemos adquirido hasta ahora. En este desafío, combinaremos conceptos clave, como registros, funciones, procedimientos y condicionales, para crear un programa integral.

Material Audiovisual

Te animamos a explorar nuestro video tutorial. En este material, profundizamos en cada concepto y ejercicio que abordamos en este artículo, ofreciendo una comprensión más detallada. Este video se presenta como un complemento valioso para consolidar tu aprendizaje. ¡No dudes en sumergirte en el contenido visual y fortalecer tus habilidades!

Ver este vídeo en YouTube.
Amigo! Recuerda ver estos vídeos en PANTALLA COMPLETA y preferiblemente en formato HD para ver correctamente los detalles, Gracias.

Código Fuente

En el siguiente link podrás descargar el código de los ejemplos vistos en el vídeo.

Ejercicio Propuesto

En esta ocasión, nos sumergiremos en una mejora del ejercicio presentado en el artículo anterior (puedes revisarlo aquí si aún no lo has visto). En ese ejercicio, utilizamos registros para gestionar información relacionada con una línea específica de vehículos en un concesionario o tienda (Marca, línea, color, cantidad y valor unitario). Ahora, ampliaremos este concepto y mejoraremos la funcionalidad del programa.

Creamos un registro que relaciona la Marca, línea, color, cantidad y valor unitario de un tipo específico de vehículo vendido por la tienda.

Al ejecutar el programa, se solicitará al usuario que cargue el inventario actual. Por ejemplo: Marca=’Ford’, Línea=’Fiesta’, Color=’Gris’, Cantidad=’5′, Valor Unitario=’25,000′.

Con el inventario cargado, Presentamos un menú con las siguientes opciones:
Ingreso de Producto (Opción 1): Permite al usuario aumentar la cantidad en el inventario.
Venta de Producto (Opción 2): Permite al usuario disminuir la cantidad en el inventario.
Cambio de Valor Unitario (Opción 3): Permite al usuario modificar el valor unitario del vehículo.
Mostrar Información del Inventario Actual (Opción 4): Muestra en pantalla la información actual almacenada en el registro.
Salir (Opción 5): Cierra el programa.

Después de cada acción del usuario, el programa presenta nuevamente el menú, permitiéndole ejecutar nuevas operaciones en el inventario. Este ciclo continúa hasta que el usuario selecciona la opción 5, para salir.

Te alentamos a ver el vídeo explicativo y a intentar resolver el ejercicio por ti mismo antes de revisar nuestra solución detallada en este artículo.

¿Estás preparado para explorar la solución? ¡Continuemos!

1. Declaración del Registro:

Se define un registro llamado rVehiculo que tiene campos para la marca, línea, color, cantidad (entero) y valor unitario (real) de un vehículo.

/* Registros */
registro rVehiculo
  cadena[100] marca
  cadena[100] linea
  cadena[50]  color
  entero      cantidad
  real        valorUnidad
fin registro

2. Declaración de Variables Globales:

vAuto: Es una variable del tipo rVehiculo que almacenará la información del inventario de un vehículo.
continuar: Es una variable booleana que controla si el programa debe continuar ejecutándose.
menu: Es una variable entera que almacenará la opción seleccionada por el usuario en el menú.

/* variables globales */
rVehiculo vAuto
booleano continuar
entero menu

3. Procedimientos:

CrearTitulo: Genera un título con formato para mejorar la presentación en pantalla.
CargueInicialInventario: Solicita al usuario cargar información inicial del inventario, como marca, línea, color, cantidad y valor unitario.
IngresarInventario: Permite al usuario ingresar nuevos vehículos al inventario, aumentando la cantidad.
VenderVehiculo: Permite al usuario vender vehículos, disminuyendo la cantidad en el inventario.
CambiarValorUnitario: Permite al usuario cambiar el valor unitario de un vehículo.
MostrarInventario: Muestra en pantalla la información actual del inventario.

/* procedimientos */
/* procedimiento encargado de generar títulos con formato */
procedimiento CrearTitulo(cadena[100] vTitulo)
inicio
  llamar nueva_linea
  escriba "********** " + vTitulo + " **********"
  llamar nueva_linea
  llamar nueva_linea
fin

/* procedimiento encargado de solicitar al usuario el cargue inicial de inventario */
procedimiento CargueInicialInventario
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Cargue Inicial de Inventario")
  
  escriba "Ingrese la MARCA del vehículo: "
  lea vAuto.marca
  
  escriba "Ingrese la LINEA del vehículo: "
  lea vAuto.linea
  
  escriba "Ingrese el COLOR del vehículo: "
  lea vAuto.color
  
  escriba "Ingrese la CANTIDAD inicial de inventario: "
  lea vAuto.cantidad
  
  escriba "Ingrese el VALOR unitario inicial del vehículo: "
  lea vAuto.valorUnidad
  
  llamar nueva_linea
fin

/* Procedimiento para realizar un ingreso de inventario */
procedimiento IngresarInventario
entero nuevos
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Ingreso de Inventario")
  
  escriba "Cuantos vehículos nuevos desea ingresar: "
  lea nuevos
  
  /* realizar la suma */
  vAuto.cantidad <- vAuto.cantidad + nuevos
  
  escriba "Ingreso realizado correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para venta de inventario */
procedimiento VenderVehiculo
entero vendidos
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Venta de vehículos")
  
  escriba "Cuantos Vehículos fueron vendidos: "
  lea vendidos
  
  /* resta al inventario */
  vAuto.cantidad <- vAuto.cantidad - vendidos
  
  escriba "Venta realizada correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para cambiar valor unitario */
procedimiento CambiarValorUnitario
real nuevoValor
inicio
  llamar nueva_linea 
  
  llamar CrearTitulo("Cambio de Valor Unitario")
  
  escriba "Ingrese el nuevo valor del vehículo: "
  lea nuevoValor
  
  /* asignación nuevo valor al registro */
  vAuto.valorUnidad <- nuevoValor
  
  escriba "Se realizo el cambio correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para mostrar en pantalla estado de inventario actual */
procedimiento MostrarInventario
real valorTotal
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Informacion de Inventario Actual")
  
  escriba "Marca: " + vAuto.marca
  llamar nueva_linea
  
  escriba "Linea: " + vAuto.linea
  llamar nueva_linea
  
  escriba "Color: " + vAuto.color
  llamar nueva_linea
  
  escriba "Cantidad: "
  escriba vAuto.cantidad
  llamar nueva_linea
  
  escriba "Valor Unitario: $ "
  escriba vAuto.valorUnidad
  llamar nueva_linea
  
  /* total inventario */
  valorTotal <- (vAuto.cantidad * vAuto.valorUnidad)
  
  escriba "Valor Total Inventario: $ "
  escriba valorTotal
  
  llamar nueva_linea
fin

4. Funciones:

CargarMenu: Presenta un menú de opciones al usuario y retorna la opción seleccionada.

/* funciones */
/* funcion para carga de menu en pantalla */
funcion CargarMenu : entero
entero opcion
inicio
  llamar nueva_linea 
  
  llamar CrearTitulo("Menu de Opciones")
  
  escriba "1. Ingresar Producto."
  llamar nueva_linea 
  escriba "2. Vender Producto."
  llamar nueva_linea 
  escriba "3. Cambiar Valor Unitario."
  llamar nueva_linea 
  escriba "4. Mostrar Informacón del Inventario Actual."
  llamar nueva_linea 
  escriba "5. Salir"
  llamar nueva_linea
  
  escriba "Que opción desea realizar?: "
  lea opcion
  
  retorne opcion
fin

5. Programa Principal:

Se inicializan las variables y se carga la información inicial del inventario.
Se inicia un bucle que permite al usuario seleccionar opciones del menú hasta que decida salir.
Dependiendo de la opción seleccionada, se invoca el procedimiento correspondiente para realizar la acción deseada.
El programa se repite hasta que el usuario elige salir.

/* programa principal */
inicio

  /* inicialización de variables */
  continuar <- verdadero

  /* ingresar información inicial del inventario */
  llamar CargueInicialInventario()

  Repita
    /* cargar el menu */
    menu <- CargarMenu()
  
    /* toma decisiones */
    Si (menu = 1) Entonces
      /* ingresar inventario */
      llamar IngresarInventario()
    Sino
      Si (menu = 2) Entonces
        /* vender producto */
        llamar VenderVehiculo()
      Sino
        Si (menu = 3) Entonces
          /* cambiar valor unitario */
          llamar CambiarValorUnitario()
        Sino
          Si (menu = 4) Entonces
            /* mostrar información del inventario */
            llamar MostrarInventario()
          Sino
            Si (menu = 5) Entonces
              /* salir */
              continuar <- falso
            Sino
              escriba "Por favor ingrese una opción entre 1 y 5."
            Fin Si
          Fin Si
        Fin Si
      Fin Si
    Fin Si  
  Hasta (continuar = falso)

  escriba "Gracias por utilizar nuestro programa!"
fin

6. Fin del Programa:

Se agradece al usuario por utilizar el programa al salir.

escriba "Gracias por utilizar nuestro programa!"

Resultado Final:

Habiendo analizado minuciosamente cada componente del programa es hora de ensamblarlo por completo. A continuación, te presentamos la estructura completa del programa, integrando cada una de las partes previamente explicadas.

/* Registros */
registro rVehiculo
  cadena[100] marca
  cadena[100] linea
  cadena[50]  color
  entero      cantidad
  real        valorUnidad
fin registro

/* variables globales */
rVehiculo vAuto
booleano continuar
entero menu

/* procedimientos */
/* procedimiento encargado de generar títulos con formato */
procedimiento CrearTitulo(cadena[100] vTitulo)
inicio
  llamar nueva_linea
  escriba "********** " + vTitulo + " **********"
  llamar nueva_linea
  llamar nueva_linea
fin

/* procedimiento encargado de solicitar al usuario el cargue inicial de inventario */
procedimiento CargueInicialInventario
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Cargue Inicial de Inventario")
  
  escriba "Ingrese la MARCA del vehículo: "
  lea vAuto.marca
  
  escriba "Ingrese la LINEA del vehículo: "
  lea vAuto.linea
  
  escriba "Ingrese el COLOR del vehículo: "
  lea vAuto.color
  
  escriba "Ingrese la CANTIDAD inicial de inventario: "
  lea vAuto.cantidad
  
  escriba "Ingrese el VALOR unitario inicial del vehículo: "
  lea vAuto.valorUnidad
  
  llamar nueva_linea
fin

/* Procedimiento para realizar un ingreso de inventario */
procedimiento IngresarInventario
entero nuevos
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Ingreso de Inventario")
  
  escriba "Cuantos vehículos nuevos desea ingresar: "
  lea nuevos
  
  /* realizar la suma */
  vAuto.cantidad <- vAuto.cantidad + nuevos
  
  escriba "Ingreso realizado correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para venta de inventario */
procedimiento VenderVehiculo
entero vendidos
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Venta de vehículos")
  
  escriba "Cuantos Vehículos fueron vendidos: "
  lea vendidos
  
  /* resta al inventario */
  vAuto.cantidad <- vAuto.cantidad - vendidos
  
  escriba "Venta realizada correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para cambiar valor unitario */
procedimiento CambiarValorUnitario
real nuevoValor
inicio
  llamar nueva_linea 
  
  llamar CrearTitulo("Cambio de Valor Unitario")
  
  escriba "Ingrese el nuevo valor del vehículo: "
  lea nuevoValor
  
  /* asignación nuevo valor al registro */
  vAuto.valorUnidad <- nuevoValor
  
  escriba "Se realizo el cambio correctamente!"
  
  llamar nueva_linea
fin

/* procedimiento para mostrar en pantalla estado de inventario actual */
procedimiento MostrarInventario
real valorTotal
inicio
  llamar nueva_linea
  
  llamar CrearTitulo("Informacion de Inventario Actual")
  
  escriba "Marca: " + vAuto.marca
  llamar nueva_linea
  
  escriba "Linea: " + vAuto.linea
  llamar nueva_linea
  
  escriba "Color: " + vAuto.color
  llamar nueva_linea
  
  escriba "Cantidad: "
  escriba vAuto.cantidad
  llamar nueva_linea
  
  escriba "Valor Unitario: $ "
  escriba vAuto.valorUnidad
  llamar nueva_linea
  
  /* total inventario */
  valorTotal <- (vAuto.cantidad * vAuto.valorUnidad)
  
  escriba "Valor Total Inventario: $ "
  escriba valorTotal
  
  llamar nueva_linea
fin

/* funciones */
/* función para carga de menu en pantalla */
funcion CargarMenu : entero
entero opcion
inicio
  llamar nueva_linea 
  
  llamar CrearTitulo("Menu de Opciones")
  
  escriba "1. Ingresar Producto."
  llamar nueva_linea 
  escriba "2. Vender Producto."
  llamar nueva_linea 
  escriba "3. Cambiar Valor Unitario."
  llamar nueva_linea 
  escriba "4. Mostrar Informacón del Inventario Actual."
  llamar nueva_linea 
  escriba "5. Salir"
  llamar nueva_linea
  
  escriba "Que opción desea realizar?: "
  lea opcion
  
  retorne opcion
fin

/* programa principal */
inicio

  /* inicialización de variables */
  continuar <- verdadero

  /* ingresar información inicial del inventario */
  llamar CargueInicialInventario()

  Repita
    /* cargar el menu */
    menu <- CargarMenu()
  
    /* toma decisiones */
    Si (menu = 1) Entonces
      /* ingresar inventario */
      llamar IngresarInventario()
    Sino
      Si (menu = 2) Entonces
        /* vender producto */
        llamar VenderVehiculo()
      Sino
        Si (menu = 3) Entonces
          /* cambiar valor unitario */
          llamar CambiarValorUnitario()
        Sino
          Si (menu = 4) Entonces
            /* mostrar información del inventario */
            llamar MostrarInventario()
          Sino
            Si (menu = 5) Entonces
              /* salir */
              continuar <- falso
            Sino
              escriba "Por favor ingrese una opcion entre 1 y 5."
            Fin Si
          Fin Si
        Fin Si
      Fin Si
    Fin Si  
  Hasta (continuar = falso)

  escriba "Gracias por utilizar nuestro programa!"
fin

Conclusión

Al llegar al final de este desafío, habrás fortalecido tus habilidades en LPP y te enfrentarás a problemas más complejos con confianza. Recuerda que cada ejercicio es una oportunidad para mejorar, y te animamos a explorar variaciones y agregar tus propias ideas.

Para un mejor entendimiento, te recomiendo ver el video tutorial relacionado en este artículo. En este video, se explica de forma práctica cada uno de los conceptos y teoría explicada en este artículo. ¡Saludos!

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

49 − 41 =

ANUNCIOS Y PATROCINIOS