Descripción de los algoritmos desarrollados - adrian0398/Proyecto_Datos2 GitHub Wiki

Algoritmo de ordenamiento

Para acomodar las películas en el tamaño de la pantalla se aplica un algoritmo que obtiene el tamaño de la pantalla y eliminado los espacios deseados entre las películas y el marco, divide el tamaño de la pantalla entre el tamaño de las películas y lo redondea al valor más cercano, obteniendo el valor de películas máximo por columna y por fila. Para el caso de el zoom aplica el mismo algoritmo pero varía aumenta el tamaño del bloque de las películas.

Algoritmo de inserción, eliminación y recorrido a lista enlazada

Para las listas enlazadas se deben desarrollar una serie de algoritmos que permitan insertar, eliminar elementos y recorrerlas. Se sabe que una lista enlazada esta compuesta de nodos que contienen información y una referencia al nodo siguiente. Se debe desarrollar estos algoritmos cambiando referencias y recorriendo los nodos, para recorrer los nodos simplemente se debe buscar el valor siguiente y así sucesivamente. Para insertar y eliminar se deben seguir los siguientes pasos:

Inserción de elementos:

Al final de la lista

  • Verificar si la lista está vacía
  • Si está vacía la lista es decir inicio==null
  • Se crea un nuevo nodo o se asigna un nuevo nodo al inicio
  • Final se hace que apunte también al inicio ya que es el único nodo.
  • Si ya existe por lo menos un nodo
  • Se crea o se asigna un nuevo nodo a fin.sig=nuevo;
  • Final se hace que apunte al nuevo nodo ya que ahora sera el final.

Al inicio de la lista

  • Verificar si la lista está vacía
  • Si está vacía la lista es decir inicio==null
  • Se crea un nuevo nodo o se asigna un nuevo nodo al inicio
  • Final se hace que apunte también al inicio ya que es el único nodo.
  • Si ya existe por lo menos un nodo
  • Se crea un nodo que se hace que apunte al inicio nuevo.sig=inicio
  • Se hace que inicio ahora apunte al primer elemento que es nuevo inicio=nuevo

Eliminación de elementos:

Del inicio de la Lista

  • Verificar si la lista está vacía
  • Verificar si hay un solo nodo
  • Si hay un solo nodo se pone ini=fin=null
  • Si hay más de un nodo
  • El inicio es ahora el siguiente ini=ini.sig

Del final de la Lista

  • Verificar si la lista está vacía
  • Verificar si hay un solo nodo
  • Si hay un solo nodo se pone ini=fin=null
  • Si hay más de un nodo
  • Se debe recorrer la lista llevando el anterior y el siguiente mientras que anterior.sig sea diferente del final o del siguiente. (debe de construir primero el nodo anterior para poder comparar con siguiente)
  • Al llegar al final entonces el anterior se debe de poner como final, y a final.sig como null

En el proyecto se tienen dos listas enlazadas y es necesario agregar y eliminar películas con el fin de crear memoria dinámica que no repercuta en el desempeño del usuario. Se añaden las películas y se recorre la lista para desplegarlas una a una y cuando ya no se encuentran paginadas son borradas de la memoria.

Algoritmo de escritura a string

Cuando se obtiene el URL a partir del HTTP GET se debe trabajar lo que obtiene el método como lista y se debe ir añadiendo estos elementos como apéndices a la lista para formar un string.

Expresiones regulares

Una expresión regular, expresión racional o regex ​ es una secuencia de caracteres que conforma un patrón de búsqueda. Son principalmente utilizadas para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones. La mayoría de las formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de representar los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. Las expresiones regulares son un método por medio del cual se pueden realizar búsquedas dentro de cadenas de caracteres. Sin importar la amplitud de la búsqueda requerida de un patrón definido de caracteres, las expresiones regulares proporcionan una solución práctica al problema.

Para crear una expresión regular debes utilizar una sintaxis específica, es decir, caracteres especiales y reglas de construcción.

Esto es muy útil en la obtención del URL del poster y el video ya que el HTML posee una gran cantidad de información que no es de importancia para el proyecto por lo cual se define una serie de patrones para los URL con el fin de que sea un método generalizado que pueda aceptar ligeros cambios en el HTTP. Para usar la regex se definió un punto de inicio y final para el URL que se cumpliera en cada caso y se utilizo la librería regex para obtener los string a partir de esto. Tal como se observó los regex son muy útiles cuando se tiene una gran cantidad de información y el valor a buscar posee un patrón pero es muy específico. Esto sumado a métodos como substring y json permiten generalizar los métodos.

Patrón de Diseño Fabrica

Este patrón de diseño dedicado a la construcción de objetos de un subtipo de un tipo determinado, es decir es como una fabrica de objetos.

Una fabrica es un objeto que maneja la creación de otros objetos. Las fabricas se utilizan cuando la creación de un objeto implica algo más que una simple instanciación.

Los siguientes ejemplos son casos donde una factoría puede ayudar:

  • Es necesario acceder a algún recurso para la creación y configuración de un objeto.
  • No se conoce hasta el momento preciso de la instanciación qué tipo concreto de objeto se va a instanciar.

En estos casos, en lugar de que sea el propio objeto quien se encargue de todos los aspectos relativos a la creación, se crea otro objeto que lo haga.

En el proyecto se ve ejemplificado mediante la interfaz gráfica, ya que existe un componente película que posee como atributos una imagen, un título y un año y se va creando en la interfaz una y otra vez conforme se van agregando películas del dataset a la paginación, así se tiene una fabrica de componentes