Ejercicio Final – Aplicando Todos los Conocimientos
¡Bienvenidos al emocionante cierre de nuestro curso de Programación en LPP! En este último video tutorial, nos sumergiremos en un desafío integral que abarca todos los conocimientos que hemos adquirido hasta ahora. Este ejercicio no solo pone a prueba tus habilidades de programación en LPP, sino que también demuestra cómo cada concepto, desde operadores hasta manejo de archivos, se entrelaza para construir soluciones más complejas.
Antes de sumergirnos en la solución propuesta, te animamos a que intentes resolver el ejercicio por ti mismo. Este desafío te brinda la oportunidad de aplicar de manera práctica todo lo aprendido a lo largo del curso. ¡Atrévete a enfrentar el reto y luego compara tu enfoque con la solución que presentamos a continuación!
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!
Código Fuente
En el siguiente link podrás descargar el código de los ejemplos vistos en el vídeo.
Ejercicio Propuesto
Este último desafío te sumergirá en la programación en LPP con un ejercicio práctico y completo. Tu objetivo principal es desarrollar un programa que gestione un inventario en una tienda de vehículos, solo se debe manejar el inventario de una marca y línea de vehículo no todo el inventario de vehículos del concecionario. Aquí te presentamos los puntos clave que debes abordar:
Ahora, echemos un vistazo a un ejemplo de cómo se vería el archivo «inventario.txt»:
Ford
Fiesta
Gris
35
16700
En este ejemplo, cada línea representa la información del vehículo y su inventario, con la marca «Ford», línea «Fiesta», color «Gris», cantidad «35» y precio unitario «16700».
Tu tarea es abordar estos puntos y desarrollar un programa que no solo ponga a prueba tus conocimientos, sino que también consolide todas las habilidades adquiridas a lo largo del curso. ¡Afrontemos este desafío juntos!
Solucionando el Ejercicio Paso a Paso
Ahora, procederemos a desglosar cada segmento del código y explicar su función en el desarrollo de este programa integral en LPP.
Nota: Antes de explorar nuestra solución detallada, te animamos a intentar resolver el ejercicio por tu cuenta. Desafía tus habilidades y luego compara tu enfoque con la solución propuesta aquí. ¡Buena suerte!
1. Tipos y Registros
Primero, definimos los tipos y registros necesarios para gestionar la información del vehículo y el archivo.
/* tipos archivos */
tipo tArchivo es archivo secuencial
/* registros */
registro rVehiculo
cadena[100] marca
cadena[100] linea
cadena[50] color
entero cantidad
real valorUnidad
fin registro
2. Variables y Procedimientos
Luego, declaramos las variables globales.
/* variables globales */
tArchivo vArchivo
rVehiculo vAuto
booleano continuar
entero menu
3. Procedimientos Esenciales
Definimos procedimientos clave para realizar operaciones como ingresar, vender, cambiar valor y mostrar el inventario. Estos procedimientos cumplen funciones específicas, como crear títulos, cargar información inicial, ingresar productos, actualizar el archivo, vender vehículos, cambiar valores y mostrar el inventario.
/* procedimientos */
/* Crear un título */
procedimiento CrearTitulo(cadena[100] vTitulo)
inicio
llamar nueva_linea
escriba "********** " + vTitulo + " **********"
llamar nueva_linea
llamar nueva_linea
fin
/* Permite realizar el cargue inicial de inventario, extraer información del archivo */
procedimiento CargueInicialInventario
inicio
/* abrir archivo de inventario */
abrir "inventario.txt" como vArchivo para lectura
/* leer cada línea del archivo y guarder la información en los atributos del registro */
leer vArchivo, vAuto.marca
leer vArchivo, vAuto.linea
leer vArchivo, vAuto.color
leer vArchivo, vAuto.cantidad
leer vArchivo, vAuto.valorUnidad
/* cerrar el archivo */
cerrar vArchivo
llamar nueva_linea
escriba "Extracción de información realizada correctamente!"
llamar nueva_linea
fin
/* permite modificar la cantidad, sumar */
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
/* abre el archivo y actualiza todos los datos */
procedimiento ActualizarArchivo
inicio
/* abrir archivo de inventario */
abrir "inventario.txt" como vArchivo para escritura
/* escribir cada uno de los atributos del registro en líneas en el archivo */
escribir vArchivo, vAuto.marca
escribir vArchivo, vAuto.linea
escribir vArchivo, vAuto.color
escribir vArchivo, vAuto.cantidad
escribir vArchivo, vAuto.valorUnidad
/* cerrar el archivo */
cerrar vArchivo
llamar nueva_linea
escriba "Se realizo correctamente la escritura en el archivo!"
llamar nueva_linea
fin
/* permite modificar la cantidad, restar */
procedimiento VenderVehiculo
entero vendidos
inicio
llamar nueva_linea
llamar CrearTitulo("Venta de Vehículos")
escriba "Cuentos Vehículos Fueron Vendidos?: "
lea vendidos
/* resta a la cantidad actual */
vAuto.cantidad <- vAuto.cantidad - vendidos
escriba "Venta realizada correctamete!"
llamar nueva_linea
fin
/* Permite modificar el valor unitario */
procedimiento CambiarValorVehiculo
real nuevoValor
inicio
llamar nueva_linea
llamar CrearTitulo("Cambio de Valor Unitario")
escriba "Ingrese el nuevo valor del vehículo: "
lea nuevoValor
/* asignación del nuevo valor */
vAuto.valorUnidad <- nuevoValor
escriba "Se realizo el cambio correctamente!"
llamar nueva_linea
fin
/* Muestra en pantalla la información actual en el inventario */
procedimiento MostrarInventario
real valorTotal
inicio
llamar nueva_linea
llamar CrearTitulo("Información 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. Función para Cargar Menú
Implementamos una función que presenta un menú de opciones y devuelve la elección del usuario. Esta función muestra al usuario un menú interactivo con diferentes opciones y devuelve la elección realizada.
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 Informacion 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
Finalmente, en el programa principal, utilizamos un bucle para ofrecer al usuario la posibilidad de realizar diversas operaciones hasta que decida salir.
inicio
/* inicializar variables */
continuar <- verdadero
/* extracción de la información del txt */
llamar CargueInicialInventario()
/* menu y movimientos */
Repita
/* mostrar menu */
menu <- CargarMenu()
/* toma de decisiones */
Caso menu
1:
/* ingresar producto */
llamar IngresarInventario()
llamar ActualizarArchivo()
2:
/* Vender producto */
llamar VenderVehiculo()
llamar ActualizarArchivo()
3:
/* cambiar valor unitario */
llamar CambiarValorVehiculo()
llamar ActualizarArchivo()
4:
/* mostrar inventario actual en pantalla */
llamar MostrarInventario()
5:
/* salir */
continuar <- falso
sino:
/* error de opción */
escriba "Por favor ingrese una opción entre 1 y 5!"
Fin Caso
Hasta (continuar = falso)
escriba "Gracias por utilizar nuestro programa!"
fin
Este bloque principal del programa gestiona las interacciones del usuario, llama a los procedimientos correspondientes y mantiene actualizado el inventario en el archivo.
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.
/* tipos archivos */
tipo tArchivo es archivo secuencial
/* registros */
registro rVehiculo
cadena[100] marca
cadena[100] linea
cadena[50] color
entero cantidad
real valorUnidad
fin registro
/*
variables globales
*/
tArchivo vArchivo
rVehiculo vAuto
booleano continuar
entero menu
/*
procedimientos
*/
procedimiento CrearTitulo(cadena[100] vTitulo)
inicio
llamar nueva_linea
escriba "********** " + vTitulo + " **********"
llamar nueva_linea
llamar nueva_linea
fin
procedimiento CargueInicialInventario
inicio
/* abrir archivo de inventario */
abrir "inventario.txt" como vArchivo para lectura
/* leer cada línea del archivo y guardar la información en los atributos del registro */
leer vArchivo, vAuto.marca
leer vArchivo, vAuto.linea
leer vArchivo, vAuto.color
leer vArchivo, vAuto.cantidad
leer vArchivo, vAuto.valorUnidad
/* cerrar el archivo */
cerrar vArchivo
llamar nueva_linea
escriba "Extracción de información realizada correctamente!"
llamar nueva_linea
fin
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 ActualizarArchivo
inicio
/* abrir archivo de inventario */
abrir "inventario.txt" como vArchivo para escritura
/* escribir cada uno de los atributos del registro en líneas en el archivo */
escribir vArchivo, vAuto.marca
escribir vArchivo, vAuto.linea
escribir vArchivo, vAuto.color
escribir vArchivo, vAuto.cantidad
escribir vArchivo, vAuto.valorUnidad
/* cerrar el archivo */
cerrar vArchivo
llamar nueva_linea
escriba "Se realizo correctamente la escritura en el archivo!"
llamar nueva_linea
fin
procedimiento VenderVehiculo
entero vendidos
inicio
llamar nueva_linea
llamar CrearTitulo("Venta de Vehículos")
escriba "Cuentos Vehículos Fueron Vendidos?: "
lea vendidos
/* resta a la cantidad actual */
vAuto.cantidad <- vAuto.cantidad - vendidos
escriba "Venta realizada correctamente!"
llamar nueva_linea
fin
procedimiento CambiarValorVehiculo
real nuevoValor
inicio
llamar nueva_linea
llamar CrearTitulo("Cambio de Valor Unitario")
escriba "Ingrese el nuevo valor del vehículo: "
lea nuevoValor
/* asignación del nuevo valor */
vAuto.valorUnidad <- nuevoValor
escriba "Se realizo el cambio correctamente!"
llamar nueva_linea
fin
procedimiento MostrarInventario
real valorTotal
inicio
llamar nueva_linea
llamar CrearTitulo("Información 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
*/
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 Informació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
/* inicializar variables */
continuar <- verdadero
/* extracción de la información del txt */
llamar CargueInicialInventario()
/* menu y movimientos */
Repita
/* mostrar menu */
menu <- CargarMenu()
/* toma de decisiones */
Caso menu
1:
/* ingresar producto */
llamar IngresarInventario()
llamar ActualizarArchivo()
2:
/* Vender producto */
llamar VenderVehiculo()
llamar ActualizarArchivo()
3:
/* cambiar valor unitario */
llamar CambiarValorVehiculo()
llamar ActualizarArchivo()
4:
/* mostrar inventario actual en pantalla */
llamar MostrarInventario()
5:
/* salir */
continuar <- falso
sino:
/* error de opción */
escriba "Por favor ingrese una opción entre 1 y 5!"
Fin Caso
Hasta (continuar = falso)
escriba "Gracias por utilizar nuestro programa!"
fin
Conclusión
En este artículo, hemos abordado un ejercicio completo que pone a prueba todos los conceptos aprendidos en el curso. Cada segmento de código ha sido explicado detalladamente para facilitar su comprensión. Te animamos a resolver el ejercicio por ti mismo y luego comparar tu solución con la que presentamos aquí.
Llegamos al final de nuestro curso de Programación en LPP. Hemos recorrido un camino desde conceptos fundamentales hasta desafíos más avanzados. Esperamos que este curso haya sido de utilidad y que te sientas más seguro en el mundo de la programación. ¡Felicidades por llegar hasta aquí!
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!