Informe Diseño Logico

Scarica in formato pdf o txt
Scarica in formato pdf o txt
Sei sulla pagina 1di 16

Universidad Distrital Francisco Jose de Caldas

Tecnología en Sistematización de Datos

Facultad Tecnológica

INFORME DE ALGORITMO SUMA DE BINARIOS

Dylier Steven Moya Tinoco - 20232578001


Johan Steve Ospina Prieto - 20231578031
Michael Steven Carvajal Arcos - 20221578133.

Gerardo Alberto Castang Montiel


Diseño Lógico
06 de septiembre de 2024
Tabla de contenido

Introducción............................................................................................................................................3

Objetivos................................................................................................................................................. 3

Objetivo general:............................................................................................................................... 3

Objetivos específicos:........................................................................................................................3

Desarrollo................................................................................................................................................4

Planteamiento Del Problema............................................................................................................. 4

Modelado de solución (Software)......................................................................................................4

Función para la entrada de datos.................................................................................................4

Función para la suma de números binarios.................................................................................5

Función de conversión de binario a decimal:..............................................................................7

Modelado de solución (Hardware).................................................................................................. 10

Función para la entrada de datos...............................................................................................10

Función para la suma de números binarios:..............................................................................10

Función de conversión de binario a decimal:............................................................................11

Hardware................................................................................................................................... 11

Análisis de resultados...........................................................................................................................12

Repositorio............................................................................................................................................ 14

Conclusiones......................................................................................................................................... 14

Referencias............................................................................................................................................15

Seguimiento...........................................................................................................................................16

2
Introducción

Se desarrolló un programa centrado en el manejo de números binarios. El proyecto

busca proporcionar una herramienta que permita ingresar, almacenar y operar con números

binarios de distintos tamaños. Además, el informe detalla el proceso de creación del

programa, incluyendo el procedimiento seguido, la lógica del código y las funcionalidades

implementadas. También se discute cómo el programa ha sido adaptado para su uso en

simulaciones y hardware real.

Objetivos

Objetivo general:

Desarrollar un programa en Python y Arduino que permita el manejo,

almacenamiento y operación de números binarios, con la capacidad de verificar la exactitud

de las operaciones al convertir los resultados en decimal.

Objetivos específicos:

1. Implementar la funcionalidad para ingresar y almacenar n números binarios de

8, 16 y 24 bits.

2. Desarrollar la lógica para realizar operaciones de suma entre los números

binarios y convertir los resultados a formato decimal para validar su precisión.

3. Diseñar el programa de Arduino, utilizando la lógica ya trabajada con el

código de Python, logrando la adaptación del código a otros entornos, como lo es en

simulaciones de Arduino.

3
Desarrollo

Planteamiento Del Problema

Se propone el modelado de un sistema que permita al usuario ingresar una cantidad

indefinida de números binarios de n bits, con el fin de realizar la suma de estos números en el

orden que el usuario desee.

Modelado de solución (Software)

La solución fue planteada en dos partes: una implementación en software y otra en un

circuito. El primer paso es identificar claramente las funciones que el programa debe cubrir

para cumplir con los requisitos del sistema. Estas funciones son:

a. Función para la entrada de datos: Esta función se encargará de recibir los

números binarios ingresados por el usuario para su posterior almacenamiento y

procesamiento.

b. Función para la suma de números binarios: Esta función realizará la suma de

los números binarios e imprimirá el proceso paso a paso en la consola, permitiendo al usuario

ver en detalle cómo se lleva a cabo la operación.

c. Función de conversión de binario a decimal: Además de realizar la conversión,

esta función mostrará el proceso en la consola para que el usuario pueda corroborar los

resultados obtenidos.

Una vez identificadas estas funciones, se procede al modelado de los diagramas de

flujo correspondientes a cada una, lo que permite analizar de manera gráfica y sencilla el

algoritmo que satisface cada necesidad planteada.

4
Función para la entrada de datos

Este método tiene como principal función validar que el dato ingresado únicamente

contenga caracteres de (0,1) y que corresponde con el tamaño de bits indicado por el usuario

en dado caso que se cumplan estas condiciones guardar el dato en un arreglo, en caso

contrario comunicar un mensaje de error.

Fig. 1. Diagrama de flujo método guardar datos.

Función para la suma de números binarios

En este caso nuestra función simula el método de suma convencional que podríamos

hacer de forma manual en una hoja de papel debido a que su lógica maneja el mismo

principio, en donde la operación consiste en recibir en grupo de números binarios a sumar,

organizarlos

desde su cifra menos significativa hasta la más significativa, paso siguiente identificar

el tamaño máximo del número más grande entre el grupo de números y si algún número tiene

menos bits que el de mayor tamaño del grupo rellenar las cifras faltantes con 0, para

comenzar con la suma cifra a cifra desde la cifra menos significativa y actualizando el

5
acarreo, se imprime la operación paso a paso junto con el acarreo por medio de consola. Al

final de terminar con todos los bits por sumar el método válido si queda algún acarreo. De

existir el acarreo se divide entre 2, actualizando su valor hasta que se reduzca a cero (esto es

parte del manejo del acarreo cuando se propaga más allá de la longitud de los números

binarios originales).

Para finalizar se muestra el resultado final de la suma binaria, que incluye todos los

bits calculados y los posibles acarreos.

Fig. 2. Diagrama de flujo método suma de binarios.

6
Función de conversión de binario a decimal:

Nuestro método de conversión de números en base dos (binarios) a una cifra en base

10 (decimales) recibe un número binario y lo opera con el método de la potencia, en este caso

para garantizar que el número se empiece a operar desde su cifra menos significativa, lo

invertimos y empezamos a tomar cifra a cifra para multiplicarlo por su base (en este caso 2) y

por el exponente, el cual aumenta 1 mientras que exista una cifra del número a convertir al

final se suma cada resultado de estas operaciones para conseguir el número decimal con esto

imprimirlo junto con su equivalente en binario y retornar el valor.

Fig. 3. Diagrama de flujo conversión de binario a decimal

7
Una vez definidos los algoritmos para cada función, podemos unificar el

funcionamiento del programa en un diagrama de flujo general. Este diagrama muestra cómo

se gestionan las entradas, el procesamiento de datos y la generación de resultados, brindando

una visión clara del flujo lógico y la interacción entre las funciones, desde la captura de

valores binarios hasta la validación final.

Fig. 4. Diagrama de flujo general.

Siguiendo el esquema presentado en los diagramas de flujo y trasladando la lógica al

lenguaje de programación Python, se ha creado una solución completa utilizando únicamente

las librerías básicas del lenguaje. Este enfoque asegura simplicidad y claridad, sin recurrir a

librerías externas. El programa maneja la manipulación de números binarios (suma,

conversión a decimal, validación) y organiza estas funciones dentro de un menú interactivo.

Este proceso de migración permitió traducir las etapas del algoritmo en funciones

claras y modulares, como la de suma binaria y conversión de binario a decimal, permitiendo

así que el código final refleje el comportamiento del diagrama, pero de manera óptima dentro

de un entorno de programación eficiente.

8
Fig. 5. Método suma de binarios Python

Fig. 6. Método guardar datos

Fig. 7. Método guardar datos

9
Modelado de solución (Hardware)

Partiendo de la lógica previamente establecida, se migraron los procesos lógicos de Python a

C/C + +, a continuación los procesos que se realizaron para migrar el software.

Fig. 8. Hardware Arduino

Función para la entrada de datos

Arduino al manejar el lenguaje C/C++ no tiene nativamente arreglos dinámicos como si los

tiene Python, tampoco es compatible con la típica librería <vector.h> de C++, por lo que en Arduino

se optó por crear un vector estático de 20 posiciones para ingresar y guardar datos binarios, este vector

guarda datos en String.

Función para la suma de números binarios:

Al realizar el método de suma con los elementos del vector estático de Strings, sucedía un

error de desbordamiento, en un momento se dejaban de agregar dígitos Char al String, se encontraron

2 soluciones, añadiendo una pausa (delay) antes de asignarle valores al String, o reemplazando el

String por un arreglo estático de Char, se decidió la segunda opción para mejorar la estabilidad del

código.

10
Función de conversión de binario a decimal:

Para realizar la función de conversión de binario a decimal en Arduino se hicieron varios

cambios, debido a que las potencias pueden ser números realmente grandes, se salen de los límites del

tipo de dato Int, por lo que se cambió a un tipo de datos unsigned long, para evitar todo tipo de

errores de desbordamiento, no se utiliza ninguna librería externa para crear la potencia, sino que en

Arduino pow() es una función nativa.

Hardware

Se utilizó un Arduino Uno físicamente para ejecutar todas las pruebas y realizar la migración,
en el proceso se planeaba utilizar una pantalla lcd de 16 casillas sin embargo por limitaciones de
espacio fue necesario utilizar el monitor serial, sin embargo se tiene creado todo el plano que iba a ser
necesario usando la pantalla LCD I2C, placas de pruebas y botones.

Fig. 9. Hardware Arduino

11
Análisis de resultados

Software
Resultado prueba 1: sumar todos los números de 24 bits con todos los de 16 bits y los de 8
bits

Fig 10. Resultado primera prueba Python

Resultado prueba 2: sumar los dos últimos números de 24 bits más los dos primeros de 16
bits más todos los de 8 bits

Fig 11. Resultado segunda prueba Python

Resultado prueba 3: sumar los dos últimos números de cada grupo (8, 16, 24) bits

Fig 12. Resultado tercera prueba Python

Resultado prueba 4: sumar todos los números de 24 bits más el primero de 16 bits más el 1
de 8 bits

Fig 13. Resultado Cuarta prueba Python

12
Hardware

Resultado prueba 1: sumar todos los números de 24 bits con todos los de 16 bits y los de 8
bits

Fig 14. Resultado primera prueba Arduino

Resultado prueba 2: sumar los dos últimos números de 24 bits más los dos primeros de 16
bits más todos los de 8 bits

Fig 15. Resultado Segunda prueba Arduino

Resultado prueba 3: sumar los dos últimos números de cada grupo (8, 16, 24) bits

Fig 16. Resultado Tercer prueba Arduino

Resultado prueba 4: sumar todos los números de 24 bits más el primero de 16 bits más el 1
de 8 bits

Fig 17. Resultado Tercer prueba Arduino

El proyecto de desarrollo de un sistema de suma de números binarios ha concluido

exitosamente, superando los desafíos iniciales tanto en la implementación en Python como en la

integración con Arduino.

Las primeras versiones presentaron problemas con números de longitudes dispares y errores

en el manejo del acarreo. Sin embargo, mediante la optimización gradual, se logró un código Python

13
preciso y eficiente, capaz de manejar entradas variables. Paralelamente, el circuito Arduino, tras un

rediseño y calibración, alcanzó una sincronización perfecta con el software.

En conclusión, el proyecto logró un sistema robusto y versátil para la suma de números

binarios, estableciendo una base sólida para futuras aplicaciones en aritmética binaria.

Repositorio

Para mayor accesibilidad al código, se creó un repositorio donde se encuentran los algoritmos
creados para python y para arduino.

Enlace : https://github.com/Dylier/Dise-oLogico-.git

Conclusiones

El proyecto logró desarrollar un programa en Python y Arduino que permite la

manipulación y operación de números binarios de 8, 16 y 24 bits, cumpliendo de manera

efectiva con los objetivos de almacenamiento y gestión de estos datos. La implementación de

la lógica para ingresar, almacenar y realizar operaciones de suma entre los números binarios,

junto con la conversión de los resultados a formato decimal, aseguró la precisión y exactitud

de las operaciones realizadas.

Además, se adaptó exitosamente el código de Python al entorno de Arduino,

demostrando la versatilidad del programa para funcionar en diferentes plataformas, incluidas

simulaciones y aplicaciones físicas. Esto resalta la capacidad del sistema para integrarse en

distintos contextos tecnológicos, garantizando su funcionalidad tanto en desarrollo de

software como en hardware, lo que confirma el éxito del proyecto en la adaptación y

validación de opciones binarias en múltiples entornos.

14
Referencias

● CosmicLearn. "Operaciones de Cadenas en Python." [En línea]. Disponible

en: https://www.cosmiclearn.com/lang-es/python-string%20operations.php. [Accedido:

16-sept-2024].

● OpenAI. "ChatGPT, modelo de lenguaje para preguntas de funciones de C++."

[En línea]. Disponible en: https://www.openai.com/chatgpt. [Accedido: 26-agos-2024].

● Arduino. "Wire - Arduino Documentation." [En línea]. Disponible en:

https://docs.arduino.cc/learn/communication/wire/. [Accedido: 26-agos-2024].

● Llamas, L. "Cómo sumar en binario." [En línea]. Disponible en:

https://www.luisllamas.es/como-sumar-en-binario/. [Accedido: 22-agos-2024].

● Platzi. "Suma y resta de binarios." [En línea]. Disponible en:

https://platzi.com/clases/3221-pensamiento-logico/50673-suma-y-resta-de-binarios/.

[Accedido: 22-agos-2024].

15
Seguimiento

16

Potrebbero piacerti anche