Está en la página 1de 6

UNIVERSIDAD CATÓLICA ANDRÉS BELLO

Extensión Guayana

Cátedra Institucional

Algoritmos y Programación I.

Informe sobre el desarrollo del proyecto

“Teoría de Conjuntos”

Presentado por:
Barreto, Luís C.I: 27506801
Gamboa, Diego C.I: 28215217

Profesor:

Saad, José

2019
El software desarrollado tiene como objetivo el de hacer operaciones de conjuntos,
siguiendo los diferentes lineamientos, métodos, axiomas y teoremas de la Teoría de
Conjuntos, como lo son la intersección, la unión y el complemento. Este es el proyecto #1
del curso Algoritmos y Programación II del semestre Sep/Ene 2019-20 de la UCAB
Guayana, y la descripción del proceso de desarrollo del mencionado programa se describe
con detalle a continuación en el presente informe.

Modularización del Programa

El siguiente es un diagrama en el que visualmente se especifica el enfoque que se


tomó para dividir el problema principal, llevándolo a problemas más pequeños.

Teoría de conjuntos

Lectura de Operaciones
comandos Lectura de archivo
de Conjuntos

Crear conjunto TAD Conjunto

Manipular Unión Intersección


expresiones
algebráicas Implementación del TAD Conjunto

La principal estructura sobre la que el programa orbita es el TAD Conjunto, cuyo


funcionamiento comparte similitud con el de las listas simplemente enlazadas, a excepción
Complemento
de que cada nodo conjunto contiene un apuntador a su primer elemento. Los elementos
también son un tipo de dato abstracto que contienen un valor y un apuntador al siguiente
elemento. Además, cada nodo conjunto tiene un segundo apuntador, el cual señala al
siguiente nodo conjunto añadido al programa, esto con el objetivo de tener registro de todos
los conjuntos cargados durante la ejecución. Tomando esto último en cuenta, visualmente la
estructura completa comparte similitud con el TAD Listas Anidadas:
ListaConjuntos

Posteriormente, para añadir un nivel más de abstracción, y por conveniencia, se


añadió una estructura llamada ListaConjuntos, la cual posee dos apuntadores a nodos
conjunto; uno al universo (el cual es siempre el primero de la lista) y uno al último conjunto
que fuese añadido al programa. Una única variable de tipo ListaConjuntos es la que se
usaría durante toda la ejecución del software para efectuar las operaciones pertinentes.

Creación de un conjunto

Sea durante la lectura del archivo, o bien durante la llamada del comando new
conjunto, se hace uso de la función crearConjunto. Esta recibe como parámetros: la
dirección de memoria de la ListaConjuntos, el
nombre del nuevo conjunto, un arreglo de elementos
(strings) que tendrá el conjunto, y la cantidad de elementos.

Lógica Tras la Obtención del Arreglo de Elementos

Una vez leída la cadena de creación de conjunto (mediante archivo o por comando),
esta se pasa como parámetro a la función str2palabras, cuyo objetivo es hacer un split del
string (sabiendo que el separador es el caracter ‘-’). Esta función también retorna, mediante
la ayuda de un entero pasado por referencia, la cantidad de palabras extraídas de la cadena
de creación. El siguiente es un ejemplo de lo explicado:

CadenaCreación = “Hola - Como - Estas”.

ElemDoblePuntero =
3
“Hola”

“Como”

“Estas”

El penúltimo paso antes de crear un conjunto, es validar que exista el universo. Si


esto último no se cumple, quiere decir que el conjunto por crearse procederá a serlo. Si ya
existe el conjunto universo, entonces se debe validar que los elementos sean los adecuados
para un subconjunto del universo. Para lograr esto, existe la función
“elementosPertenecen”, la cual hace búsqueda de cada elemento en el conjunto universo.

Operaciones de conjuntos

Función OpAlgebra

Una vez que se ha comprobado que la cadena ingresada es una operación algebraica
con la función “EsOpAlgebra”, se le pasan dos parámetros a esta función una variable de
tipo de dato “ListaConjuntos” la cual sirve como el universo y se le pasa la cadena que
contiene todas las operaciones a realizar.

Esta es una función recursiva, la cual va dividiendo en cadenas a la derecha y a la


izquierda, esto se logra con un pivote, el cual es determinado por la función
“BuscarMenorPre”, esta función busca el signo de menor precedencia por fuera de los
paréntesis.

La función retorna cuando las cadenas que quedan son los nombres de conjuntos,
una vez hecho esto, une, intersecta o invierte los conjuntos dependiendo de qué operación
sea la que se tiene que ejecutar.
AxB+(-C)

+
AxB -
A
B C
Funciones algebraicas elementales del TAD Conjunto

En todas las funciones elementales sucede que el nombre del nuevo conjunto a crear
será la concatenación de los nombres de los conjuntos involucrados, con el símbolo de la
operación correspondiente entre ellos. Por ejemplo: el nombre de la unión de “A” y “B”
será “A+B”. En el caso del complemento, será el símbolo “-” concatenado con el nombre
del conjunto a invertir.

Unión. Primero se copian todos los elementos del conjunto “A” en el nuevo “A+B”,
luego, se agregan todos los elementos de “B” que aún no existan en “A+B”.

Intersección. En el nuevo conjunto “AxB” se copian todos los elementos en “A”


que pertenezcan a “B”. Esto se logra con una función llamada “elementosPertecen” que,
dado un conjunto y un elemento, retorna un valor entero utilizado como booleano.

Complemento. Tiene similitud al caso anterior, pues, también se hace uso de la


función “elementosPertenecen”. En el nuevo conjunto “-A”, se copian todos aquellos
elementos del universo que no pertenezcan al conjunto “A”.

Dinámica de trabajo grupal

Se hizo uso de un repositorio en la nube, en la plataforma GitHub, para hacer del


trabajo colaborativo una actividad más eficiente.

 http://github.com/labm-exe/Teoria-de-Conjuntos

También podría gustarte