Está en la página 1de 10

ACTIVIDAD

COMPLEMENTARIA 1

Arquitectura de
Computadoras

Vázquez Cabañas Jonathan Fernando


Diplomado en línea TIC

1
2

La arquitectura de computadoras es el diseño estructural y funcional de los


sistemas informáticos. En esencia, es la base que define como una
computadora procesa, almacena y comunica la información. Esta disciplina
abarca tanto el hardware como el software, estableciendo las reglas y la
organización que permiten que los componentes de un sistema interactúen de
manera eficiente.

A continuación, vamos a diseñar un sistema de gestión de inventario para una


tienda de comestibles. El sistema debe permitir registrar y controlar el
inventario de productos, realizar ventas, generar reportes y realizar otras
operaciones relacionadas.

1.Elección de la Arquitectura de Computadoras


En términos generales, la arquitectura de computadoras describe la
disposición de los principales elementos de una máquina, como la unidad
central de procesamiento (CPU), la memoria, los buses de datos y control, y
los dispositivos de entrada/salida. Un concepto clave en esta disciplina es la
"arquitectura de Von Neumann", que propone la idea de una máquina con una
unidad de control que ejecuta instrucciones almacenadas en memoria.

No hay una única "mejor" arquitectura de computadoras de hardware para un


sistema de gestión de inventario, ya que la elección dependerá de varios
factores, incluidos los requisitos específicos del sistema, el presupuesto, la
escalabilidad y otros criterios específicos del negocio. Sin embargo, podemos
implementar la arquitectura mencionada previamente.

La implementación de la arquitectura de Von Neumann para un sistema de


gestión de inventario implica desarrollar un software que siga los principios
fundamentales de esta arquitectura, esto debido a que se centra en la
ejecución secuencial de instrucciones almacenadas en memoria.

Características de la arquitectura de Von Neumann:

• Unidad de Control (CU): Controla la ejecución de las instrucciones y


coordina las actividades del sistema.
• Unidad de Procesamiento Aritmético y Lógico (ALU): Realiza
operaciones aritméticas y lógicas en los datos.
3

• Memoria: Almacena tanto datos como instrucciones del programa. La


memoria y la CPU están separadas.
• Entrada/Salida (E/S): Facilita la comunicación con dispositivos externos.

Ventajas:

• Ampliamente utilizada y compatible con una variedad de aplicaciones y


sistemas operativos.
• Fácil de entender y programar.
• Abundancia de recursos y herramientas de desarrollo.

Consideraciones:

• Puede haber limitaciones en el rendimiento si se requiere procesamiento


intensivo.

A continuación, vamos a definir los componentes y la comunicación e


interacción entre ellos.

1. Identificación de Componentes:
• Unidad Central de Procesamiento (CPU): Desarrolla la lógica central del
sistema que ejecutará las instrucciones.
• Memoria: Definir una estructura de almacenamiento para datos e
instrucciones.
2. Instrucciones y Datos:
• Definición de Instrucciones: Establecer un conjunto de instrucciones que
la CPU puede ejecutar para realizar operaciones específicas (por
ejemplo, agregar producto, actualizar cantidad).
• Gestión de Datos: Decidir cómo se almacenarán los datos en la memoria
y cómo se accederán a ellos.
3. Unidad de Control:
• Desarrollo de la Unidad de Control: Crea la lógica que controla la
secuencia de operaciones, determinando qué instrucciones ejecutar y
en qué orden.
4. Ciclo de Von Neumann:
• Ciclo de Instrucción: Implementa el ciclo característico de Von Neumann,
que incluye recuperar una instrucción, decodificarla, ejecutarla y
actualizar el estado del sistema.
4

5. Entrada/Salida (E/S):
• Gestión de Entrada/Salida: Desarrolla mecanismos para interactuar con
dispositivos de entrada/salida, como teclados, escáneres de código de
barras o impresoras.
6. Interfaz de Usuario:
• Desarrollo de Interfaz de Usuario: Crea una interfaz a través de la cual
los usuarios interactuarán con el sistema de gestión de inventario.
7. Seguridad y Validación:
• Implementación de Seguridad: Integra medidas de seguridad para
proteger la integridad y confidencialidad de los datos.
• Validar y sanitizar la entrada del usuario para prevenir posibles
vulnerabilidades.
8. Pruebas y Depuración:
• Pruebas Rigurosas: Realiza pruebas exhaustivas para garantizar la
funcionalidad y la fiabilidad del sistema.
• Identificar y corregir posibles errores o fallos.
9. Optimización:
• Optimización del Código: Busca oportunidades para mejorar la eficiencia
del código y reducir el tiempo de ejecución.
10. Documentación:
• Documentación Clara: Documenta el código y la arquitectura para
facilitar el mantenimiento y la comprensión futura.
11. Escalabilidad:
• Consideración de Escalabilidad: Diseñar el sistema para ser escalable,
permitiendo su expansión y adaptación a medida que los requisitos
evolucionan.
5

2.Diseño de Algoritmos Eficientes


La implementación específica del algoritmo dependerá del lenguaje de
programación y las tecnologías que el usuario elija. Además, es necesario
tener en cuenta que las consideraciones prácticas para un sistema de gestión
de inventario pueden variar, por lo que es crucial adaptar las pautas según los
requisitos exactos del proyecto.

Un algoritmo para un sistema de gestión de inventario en la arquitectura de


Von Neumann generalmente seguirá un enfoque secuencial de procesamiento
de operaciones de inventario. Aquí hay un ejemplo simple en pseudocódigo:

Iniciar el Sistema de Gestión de Inventario


Repetir hasta que el usuario decida salir:
Mostrar Menú de Opciones:
1. Agregar producto al inventario
2. Actualizar cantidad de un producto
3. Buscar producto por nombre
4. Generar informe de inventario
5. Salir

Leer la opción seleccionada por el usuario

Según la opción seleccionada:


1. Agregar producto al inventario:
Leer datos del nuevo producto (nombre, cantidad, precio, etc.)
Almacenar el nuevo producto en la memoria de datos del sistema

2. Actualizar cantidad de un producto:


Leer el nombre del producto a actualizar
Leer la nueva cantidad
Buscar el producto en la memoria de datos
Actualizar la cantidad del producto

3. Buscar producto por nombre:


Leer el nombre del producto a buscar
Buscar el producto en la memoria de datos
Mostrar la información del producto encontrado

4. Generar informe de inventario:


Iterar sobre todos los productos en la memoria de datos
Mostrar la información de cada producto (nombre, cantidad, precio,
etc.)
5. Salir:
Finalizar el programa
Fin del bucle principal
6

El algoritmo que se presenta a continuación nos permite usar de base el


algoritmo anterior, con la finalidad de centrarse en la búsqueda de productos,
el cálculo de totales de venta y la generación de reportes. Hay que tener en
cuenta que este es un esquema general y puede actualizarse a futuro a las
necesidades y características específicas de la aplicación:

// Definición de la memoria de datos


inventario = [ {"id": 1, "nombre": "Producto A", "cantidad": 50,
"precio_unitario": 10.0}, {"id": 2, "nombre": "Producto B", "cantidad": 30,
"precio_unitario": 15.0}, // ... otros productos ...]

// Variables para el seguimiento de las ventas


ventas = []
total_ventas = 0.0

// Bucle principal del programa


mientras Verdadero hacer
// Mostrar menú de opciones al usuario
imprimir("Menú de Opciones:")
imprimir("1. Buscar producto por nombre")
imprimir("2. Realizar venta")
imprimir("3. Generar reporte de inventario")
imprimir("4. Salir")

// Leer la opción del usuario


opcion = convertir_a_entero(leer("Ingrese el número de la opción: "))

// Realizar acciones según la opción seleccionada


si opcion == 1 entonces
// Búsqueda de producto por nombre
nombre_buscar = leer("Ingrese el nombre del producto a buscar: ")
producto_encontrado = Nulo
para cada producto en inventario hacer
si producto["nombre"] == nombre_buscar entonces
producto_encontrado = producto
salir del bucle
fin si
fin para
si producto_encontrado no es Nulo entonces
imprimir("Producto encontrado:", producto_encontrado)
sino
imprimir("Producto no encontrado.")
fin si

sino si opcion == 2 entonces


// Realizar venta
7

id_producto = convertir_a_entero(leer("Ingrese el ID del producto a


vender: "))
cantidad_venta = convertir_a_entero(leer("Ingrese la cantidad a vender:
"))
para cada producto en inventario hacer
si producto["id"] == id_producto y producto["cantidad"] >=
cantidad_venta entonces
// Actualizar inventario
producto["cantidad"] -= cantidad_venta
// Registrar venta y actualizar total de ventas
venta_actual = {"id_producto": id_producto, "cantidad":
cantidad_venta, "monto": cantidad_venta * producto["precio_unitario"]}
agregar_elemento_a_lista(ventas, venta_actual)
total_ventas += venta_actual["monto"]
imprimir("Venta realizada con éxito.")
salir del bucle
fin si
fin para
sino
imprimir("Producto no encontrado o cantidad insuficiente en
inventario.")
fin si

sino si opcion == 3 entonces


// Generar reporte de inventario
imprimir("Reporte de Inventario:")
para cada producto en inventario hacer
imprimir("ID:", producto["id"], ", Nombre:", producto["nombre"], ",
Cantidad:", producto["cantidad"], ", Precio Unitario:",
producto["precio_unitario"])
fin para
imprimir("Total de Ventas:", total_ventas)

sino si opcion == 4 entonces


// Salir del programa
imprimir("Saliendo del sistema de gestión de inventario.")
salir del bucle

sino
imprimir("Opción no válida. Por favor, seleccione una opción correcta.")
fin si
fin mientras
8

Documentación del Pseudocódigo

• Comentario Inicial: Se define la estructura básica del inventario y las


variables para el seguimiento de las ventas.
• Bucle Principal: Se inicia un bucle principal que continuará hasta que el
usuario elija salir.
• Menú de Opciones: Se presenta un menú al usuario con varias opciones.
• Leer Opción del Usuario: Se lee la opción seleccionada por el usuario.
• Acciones Según la Opción: Se implementa un conjunto de acciones
basadas en la opción seleccionada.
• Búsqueda de Producto: Se busca un producto por nombre en el
inventario.
• Realizar Venta: Se realiza una venta, actualizando el inventario y
registrando la venta.
• Generar Reporte: Se genera un informe de inventario que incluye
detalles de cada producto y el total de ventas.
• Salir del Programa: Se finaliza el programa si el usuario elige salir.
• Manejo de Opción no Válida: Si el usuario elige una opción no válida, se
le informa.

Este pseudocódigo proporciona una representación clara y estructurada del


flujo de control del sistema de gestión de inventario.

El algoritmo presentado tiene una complejidad computacional en tiempo de


O(n) para la búsqueda de productos por nombre y la realización de ventas,
donde n es la cantidad de productos en el inventario. La generación del
informe de inventario tiene una complejidad de O(m), siendo m el número de
productos.

Para optimizar recursos, se sugiere considerar estructuras de datos más


eficientes, como diccionarios, para acelerar la búsqueda. Además, almacenar
datos de manera persistente en una base de datos y manejar errores de
manera más robusta pueden mejorar la eficiencia y la confiabilidad del
sistema. Sin embargo, cualquier optimización debe equilibrarse con la
simplicidad y la claridad del código, especialmente en proyectos más
pequeños o de desarrollo rápido.
9

3.Selección del Lenguaje de Programación


La elección del lenguaje de programación para implementar un sistema de
gestión de inventario basado en la arquitectura de Von Neumann,
considerando sus características, bibliotecas y facilidad de uso, sería el
lenguaje Python. A continuación, se justifica la elección realizada:

1. Facilidad de Uso:
Python es conocido por su sintaxis clara y legible, lo que facilita la
implementación y mantenimiento del código. Es un lenguaje fácil de aprender
y adecuado para desarrolladores principiantes y experimentados por igual.

2. Amplia Variedad de Bibliotecas:


Python cuenta con numerosas bibliotecas y frameworks que facilitan tareas
comunes, como la manipulación de datos (pandas), la generación de informes
(matplotlib, pandas), y la creación de interfaces de usuario (tkinter). Estas
bibliotecas pueden acelerar el desarrollo y proporcionar funcionalidades
sólidas.

3. Soporte para Estructuras de Datos:


Python ofrecen sólido soporte para estructuras de datos, lo cual es crucial para
manejar inventarios y registros de ventas de manera eficiente. El lenguaje
cuenta con listas y diccionarios integrados.

4. Manipulación de Datos y Cálculos:


Python es ampliamente utilizado en ciencia de datos y análisis, lo que lo hace
ideal para tareas de manipulación de datos y cálculos. Las bibliotecas como
pandas facilitan la gestión de datos tabulares y los cálculos asociados.

5. Interfaz de Usuario:
Python ofrece opciones sólidas para crear interfaces de usuario, todo esto de
la mano con la herramienta Tkinter por su simplicidad.

6. Comunidad y Documentación:
Python cuenta con comunidades grandes y activas, lo que significa que hay
una abundancia de recursos en línea, tutoriales y documentación disponible
para los desarrolladores y usuarios.
10

En resumen, Python sería una elección sólida debido a su facilidad de uso,


amplia variedad de bibliotecas y fuerte presencia en el ámbito de la ciencia de
datos, o si se prefiere el enfoque orientado a objetos.

Referencias
CAMACHO, S. (1996). ANÁLISIS DE ALGORITMOS . MÉXICO: U.N.A.M., E.N.E.P. ACATLÁN

TANENBAUM, ANDREW, AUSTIN, TODD (2012). STRUCTURED COMPUTER ORGANIZATION 6TH


EDITION . USA: PEARSON

MATTHES, E (2021). CURSO INTENSIVO DE PYTHON: INTRODUCCIÓN PRÁCTICA A LA PROGRAMACIÓN


BASADA EN PROYECTOS . MÉXICO: ANAYA MULTIMEDIA

También podría gustarte