ISWZ1102 – PROGRAMACIÓN 1
EJERCICIO DE PROGRAMACIÓN
Elaborado por: Carlos Andrés Guaita Ayala
OBJETIVOS PROPUESTO DE LA CONSIGNA:
Reforzar el conocimiento adquirido durante la materia de Algoritmos sobre programación en C.
INDICACIONES:
Descripción del problema: Un pequeño comerciante necesita un programa en C para gestionar
la venta de un único producto en su tienda. El programa debe permitirle:
Registrar los datos del producto: ID, nombre, cantidad en stock y precio unitario.
Vender unidades del producto: El usuario debe ingresar cuántas unidades desea
vender y el programa debe verificar si hay suficiente stock antes de realizar la
venta.
Reabastecer el producto: Permitir al usuario agregar más unidades al stock.
Consultar información actualizada del producto.
Calcular y mostrar las ganancias obtenidas hasta el momento a partir de las ventas
realizadas.
Salir del programa.
Requerimientos técnicos
Para resolver este problema, los estudiantes deberán aplicar:
Uso de variables (enteros, flotantes, cadenas).
Entrada y salida de datos (printf, scanf, gets, fgets).
Estructuras de control:
o Condicionales (if, else, switch) para validar opciones y restricciones (como no
permitir ventas si no hay stock suficiente).
o Iteraciones (while, do-while) para mantener el programa en ejecución hasta que
el usuario decida salir.
o Cálculos matemáticos para manejar las ventas y ganancias.
Pistas para resolver el problema
Antes de desarrollar el código, los estudiantes deben:
Identificar las variables necesarias (ID, nombre, stock, precio, total de ventas, etc.).
Definir la lógica condicional para evitar ventas cuando el stock es insuficiente.
Responder las siguientes preguntas:
o ¿Cómo implementarías una validación en C para evitar que un usuario
intente vender más productos de los que hay en stock?
o ¿Qué problemas podrían ocurrir si el usuario ingresa un número negativo o
un valor no numérico? ¿Cómo podrías modificar el código para evitar que
esto suceda?
o ¿Cómo podrías asegurarte de que las ganancias se calculen correctamente
cada vez que se realice una venta?
Código base para resolver el problema
Se entrega este código base para que los estudiantes lo completen y razonen las
partes faltantes.
El código se encuentra en el siguiente enlace de GitHub para que pueda ser
clonado: https://github.com/softwareudla/ventas.git
Actividades
1. Completar las secciones faltantes del código
Evitar que se vendan más unidades de las disponibles (condicional if).
Actualizar correctamente el stock y las ganancias en cada venta.
Permitir al usuario reabastecer el stock correctamente.
2. Probar el código con distintos escenarios
Intentar vender más productos de los que hay en stock (el programa debe
impedirlo).
Agregar productos al stock y verificar que el sistema los registre correctamente.
Realizar múltiples ventas y calcular las ganancias acumuladas.
3. Extender la funcionalidad
Agregar validaciones para evitar valores negativos.
Mejorar la presentación de la información usando \t y \n.
Permitir al usuario ingresar un descuento al precio del producto en cada venta.
FORMA DE TRABAJO:
El trabajo se desarrollará en grupos de máximo 2 integrantes.
ESPECIFICACIONES DE ENTREGA:
Los estudiantes deberán elaborar un informe con la siguiente estructura:
1. Introducción
Explica el propósito del programa que desarrollaste.
¿Qué problema resuelve y por qué es importante?
¿Cuáles fueron los principales retos que enfrentaste antes de comenzar a
programar?
2. Análisis del Problema y Diseño de la Solución
Identifica los elementos clave del problema (variables, cálculos, estructuras de
control, etc.).
Explica la lógica general del programa antes de codificarlo.
Justifica la elección de estructuras de control (if, while, switch, etc.).
3. Implementación del Código
Explica cómo implementaste las siguientes funcionalidades:
Registro del producto.
Venta de productos y control de stock.
Reabastecimiento del producto.
Cálculo de ganancias.
Agrega fragmentos de código clave y explícalos.
4. Validación y Pruebas
Explica cómo probaste el programa.
Muestra ejemplos de entradas y salidas del programa.
Describe errores encontrados y cómo los solucionaste.
5. Conclusiones y Mejoras Futuras
¿Qué aprendiste al desarrollar este programa?
¿Qué mejoras harías en futuras versiones del código?
¿Cómo podrías optimizar la implementación actual?