En la cuarta semana terminamos de implementar los metodos faltandtes para poder listar las peliculas de acuerdo a los diversas peticiones del proyecto. Tambien se ha procedio a comenzar la inveestigacion del codigo HTML para mostrar los resultados de dichos metodos en el navegador. Para el fin de semana se tiene pensado hacer dicho codigo y tratar de optimizar el tiempo de carga de las peliculas en el programa
viernes, 18 de diciembre de 2015
viernes, 11 de diciembre de 2015
Avance del proyecto #3
En esta semana se comenzó con la implementación de los primeros métodos para poder cumplir con los requerimientos del proyecto.
Implementamos nuevos TDAs
BaseClientes
Guarda a todos los clientes con sus respectivas valoraciones
- Método posCliente:
- Dado el id de un cliente determinaba cual es su posición en el ArrayList de BaseClientes
- Metodo cargar
- Lee todos los archivos de training set y carga a todos los clientes y con la ayuda de agregarValoracion le asigna la valoración de la pelicula que va recorriendo
Nota: Existe un error al cargar todos los archivos de los clientes
BasePeliculas
Guarda todas las películas que se encuentran en el archivo movies_titles
- Métodos para listar las películas de acuerdo a un orden especifico
- Dichos métodos se los usa con la ayuda del método sort de la clase Collections y con los Comparators específicos para cada uno de las manera que se deben ordenar
viernes, 4 de diciembre de 2015
Avance del proyecto #2
Decisiones sobre los TDA
En la semana hemos discutido acerca de los posibles TDA's que vamos a implementar en nuestro programa.
Los principales TDA's encontrados en nuestro proyecto son:
- Peliculas
- Clientes
- Valoraciones
TDA Película
Este TDA va a constar de las siguientes caracteristicas:
- Valoración
- La valoración de la película se encuentra en un rango de 1 a 5
- Año de publicación
- Esta información se encuentra el el archivo movies
- Código o identificador
- Información en el archivo movies y es único para cada película
- Nombre
- Es el nombre de cada uno de las peliculas
TDA Cliente:
Los clientes van solo van a tener guardada una lista de todas las valoraciones que han realizado de las peliculas
TDA VAloracion
Consta con los siguientes datos:
TDA VAloracion
Consta con los siguientes datos:
- Pelicula a la que pertenece
- Valor que le dio el cliente
- Fecha de creación
Nota:
Se va a implementar el binary search para optimizar la busqueda de datos
lunes, 30 de noviembre de 2015
DEBER # 2 PILAS
Clase UsoPilas
Método main
DescripciónEl programa principal se encarga de que dada una expresión in-fix ingresada por el usuario:
1. Verifica que la expresión tenga los paréntesis correcta.
2. Si esta correcta entonces la transforma en post-fix
3. Luego le pide al usuario ingresar una expresion post-fix
4. Pide los valores de las variables para evaluarlas
| Método main |
Clase Expresion
Método verificarParentesis
DescripciónRetorna un boolean dependiendo si la expresión tiene un correcto uso de paréntesis
Algoritmo
- Crea una pila vacía donde se van a guardar los paréntesis
- Recorre la cadena de caracteres y si es un ( lo añade en la pila
- Si es un ) pregunta si la pila esta vacía devuelve falso
- Si la pila está llena entonces elimina el primer paréntesis izquierdo
- Una vez recorrida la cadena de caracteres devuelve falso si la pila todavía contiene (
- Caso contrario devuelve verdadero
| Método verificarParentesis |
Método InFixToPostFix
DescripciónDada una expresión en Infix la transforma en una expresión Postfix
Algoritmo
- Se crea una lista la cuál va a contener la expresión en PostFix
- Se crea un pila la cual va a almacenar los operadores
- Se sigue el algoritmo para convertir de Infix a PostFix, el cual consta de los siguientes pasos:
- Si el elemento es un operando se ingresa a la lista PostFix
- Si el elemento es un paréntesis izquierdo se ingresa en la pila
- Si el elemento es un paréntesis derecho entonces se extrae de la pila y se coloca los operadores en la lista PostFix hasta encontrar un paréntesis izquierdo y se elimina el paréntesis
- Si el elemento es un operador entonces se verifica si la pila esta vacía, en tal caso se agrega a la pila
- Caso contrario se evalúa su prioridad con el que esta en la cima de la pila
- Si es de mayor prioridad entonces se agrega a la pila
- Si es de menor o igual prioridad entonces se extrae el último de la pila, se lo agrega a la lista y luego se agrega a la pila el operador
4. Una vez recorrida toda la cadena se procede a vaciar la pila en la lista PostFix
5. Se crea una cadena con la expresión formada en la lista
Método evaluar
DescripciónCon el valor de las variables se procede a realizar el calculo de la expresión en PostFix
Algoritmo
1. Se crea una pila que va a guardar las variables y se van a realizar las operaciones
2. Se recorre la expresión y si el elemento es un operando se agrega a la pila
3. Si el elemento es un operador entonces retirar los 2 primeros elementos de la pila
4. Realiza la operación indicada y guarda el resultado en la pila
5. Se repite estas acciones hasta que solo queda un elemento en la pila
6. Finalmente se extrae el resultado final de la pila y esa es la respuesta
Método buscarVariables
DescripciónDevuelve una lista con todas las variables que se encuentran en una expresión
Algoritmo
- Recorre la expresión y chequea si es un operador u operando
- Si es un operando entonces revisa si esta en la lista sino está lo agrega en caso contrario no realiza ninguna acción
Clase PostFix
Método establecerPrioridad
DescripciónDado dos operadores devuelve si entre ellos tienen una prioridad mayor menor o igual
Con valores (-1) menor (0) Igual (1) Mayor
Algoritmo
- Se tiene un arreglo de los operadores en orden ascendente de prioridades
- Luego se pregunta si los operadores diferentes pero que tienen igual prioridad Eje, suma y resta
- Si no lo son entonces se extrae la posición en la que se encuentra y se compara devolviendo el valor si es menor mayor o igual
Método esOperador
DescripciónDado un elemento entonces se verifica si es un operador o no.
Algoritmo
1. Se tiene el arreglo con todos los operadores
2. Se busca el elemento en el arreglo si lo encuentra devuelve verdadero caso contrario falso
Clase Variable
DescripciónTDA que va a almacenar simultánea mente una variable y un valor
Clase Proceso
Método pedirIngreso
DescripciónGenera una cuadro de dialogo para que el usuario ingrese una expresión
Algoritmo
1. Se crea el cuadro de dialogo donde el usuario va ingresar la expresión
2. Se muestra la expresión para que el usuario verifique que se encuentre correcta
3. Guarda la expresión
Método añadirVariables
DescripciónPide al usuario el valor para las variables encontradas en la expresión para guardarlas en una lista de Variables
Algoritmo
1. Tenemos las variables que se encontraron en la expresión como caracteres
2. Se pide al usuario que ingrese el valor de la variable
3. Se envían tanto el nombre de la variable y el valor al constructor de Variable
4. La nueva Variable se agrega a la lista variables
5. Se devuelve la lista de Variables
Método buscarValor
DescripciónVa a encontrar el valor de una variable dentro de una lista de Variables
Algoritmo
1. Se crea un iterador de la lista de Variables
2. Se busca en la lista de Variables aquella que tenga el nombre buscado
3. Se devuelve el valor de esa variable
viernes, 27 de noviembre de 2015
Avance del proyecto #1
En esta semana nos reunimos para identificar cuales eran los objetivos del programa que vamos a crear para esto decidimos desglosar que debe poder realizar nuestro programa y lo que necesita para su correcta ejecución
De los llegamos a la conclusión siguiente:
1. Listar las calificaciones de un cliente por fecha
Entrada : ID Cliente
Salida: Lista de calificaciones con sus respectivas fecha
ID Cliente
Calificación Fecha Película
En los archivos de cada película se buscará el ID del cliente para sacarlo que esta en el campo valoración
2. Top 10 de la películas por categoría de estrellas
Entrada: Categoría a sacarse
Salida: Lista con 10 elementos que son las películas con mayor número de veces en las valoraciones de 5,4,3,2, 1
Categoría
Nombre de la película
De cada archivo del dataset se debe verificar que en el campo de calificaciones sea el numero representativo de la categoría y se contara cuantas veces aparece en cada una para luego sacar las 10 con el mayor numero de veces. Adicionalmente se sacara al mismo tiempo los ID's de las películas con el mayor · de veces para buscar en el archivo movies el nombre
En el método 1 creímos necesario el nombre de la película para darle sentido a las representaciones en la valoración
* El método organizaría cada película dentro de si propia categoría
3. Lista de las calificaciones de una película
Entrada: Nombre de la película
Salida: Lista de calificaciones nombre, fecha calificación
Se muestra:
Nombre Película
Calificación Fecha
*En el archivo movies se conservará que coincida el nombre para obtener dentro del mismo registros su ID que servirá para la búsqueda del archivo que lo contiene una vez encontrada se procederá a sacar las calificaciones, con las fechas en que se hicieron
4. Listar películas por año
Entrada: Año a buscar
Salida: Lista de las películas realizadas en ese año
Muestra
Año
Nombre de la película 1
Nombre de la película 2
* Se trabaja directamente con el archivo movies Se busca el año ingresado coincida
con el registro en el campo y se muestra ek nombre de la película, así cada vez que el año
coincide
5. Buscar películas por coincidencia de palabras y mostrar la información de la que se
selecciona del listado
Entrada: Una palabra
Salida: Lista de coincidencias
Se muestra:
Palabra ingresada
Opciones de coincidencia
Una vez seleccionada
ID Película Año de realización
*Se mira que la palabra que se ingresa coincida con el nombre de algunas películas en el archivo movies y se devuelve una lista con todas las opciones posibles. Luego de que el usuario elija una se toma el año de realización el Id para buscar su archivo en el Dataset y sacar sus calificaciones (Promedio)
5. Buscar películas por coincidencia de palabras y mostrar la información de la que se
selecciona del listado
Entrada: Una palabra
Salida: Lista de coincidencias
Se muestra:
Palabra ingresada
Opciones de coincidencia
Una vez seleccionada
ID Película Año de realización
*Se mira que la palabra que se ingresa coincida con el nombre de algunas películas en el archivo movies y se devuelve una lista con todas las opciones posibles. Luego de que el usuario elija una se toma el año de realización el Id para buscar su archivo en el Dataset y sacar sus calificaciones (Promedio)
7.1 Mostrar las películas ordenadas alfabéticamente
Entrada: ninguna (solo se necesita que este en la opción)
Salida: Se muestra:
ID película Nombre Valoración Año de producción
En el archivo principal se buscara el nombre de la película y se compararan con
los nombres anteriores para
ordenarlos alfabéticamente
7.2 Mostrar las películas ordenadas descendentemente por año
Entrada: ninguna (solo se necesita estar en la opción)
ID película Nombre Valoración Año de producción
En el archivo principal se buscara el año de la película y se compararan para
elegir el orden que debe presentarse
Sugerencia: usar el método ordenar visto hoy en discretas
lunes, 23 de noviembre de 2015
LISTAS ENLAZADAS DEBER#1
Clase Conjunto:
Método unión:
Descripción
Genera un conjunto el cual es la unión de los dos conjuntos enviados por parámetros.
Algoritmo
- Se crea una lista vacía la cual va a representar al conjunto unión.
- Se verifica si algún conjunto es vacío, si ocurre eso simplemente devuelve el conjunto no vacío.
- Si ambos conjuntos tienen elementos:
- Agrega todos los elementos del primer conjunto a unión.
- Recorre los elementos del segundo conjunto y si no están presentes en unión los agrega.
Descripción
Genera un conjunto el cual es la intersección de los dos conjuntos enviados por parámetros
Algoritmo
- Se crea una lista vacía la cual va a representar al conjunto intersección.
- Se recorre los elementos del primer conjunto y se los compara con cada uno de los elementos del segundo conjunto.
- En caso de ser iguales comprueba si no se encuentran en intersección y de ser así los agrega.
| Método intersección |
Método diferencia:
Descripción
Genera un conjunto el cual es la diferencia de los dos conjuntos enviados por parámetros. Es decir, los elementos que pertenecen al primer conjunto pero que no estén presentes en el segundo.
Algoritmo
- Se crea una lista vacía la cual va a representar al conjunto diferencia
- Verifica si alguno de los dos conjuntos está vacío. Ya que si es así existen 2 posibilidades
- Si el conjunto 1 es vacío entonces debe devolver un conjunto vacío sin importar el conjunto 2
- Si el conjunto 2 es vacío entonces debe devolver al conjunto 1 como está.
- Por lo tanto en ambos casos devuelve una copia de conjunto 1
- Si ambos conjuntos tienen datos:
- Se recorre el conjunto 1 y si el elemento no esta presente en el conjunto 2 entonces lo agrega a diferencia.
| Método diferencia |
Método guardar:
DescripciónGuarda en el archivo resultados.txt el conjunto que recibe como parametro..
Algoritmo
- Se declara las variables necesarias para guardar en un archivo sin sobre-escribirlo:
- File
- FileWriter
- PrintWriter
- String
- Nota: La mezcla de las variables tipo FileWriter junto con PrintWriter me permiten escribir en un archivo sin sobre-escribirlo
- Se verifica si el archivo existe:
- Si el archivo no existe lo crea
- Caso contrario salto al paso 3
- Para cada coordenada del conjunto obtengo su representación en String con el método toString() y lo guardo en el archivo
- Finalmente cierra las variables de escritura y el archivo
| Método guardar |
Clase Programa:
Método cargar:
Descripción:
Genera una lista de coordenadas a partir de Strings obtenidas de un archivo.
Las coordenadas del archivo se encuentran una en cada línea y tienen el formato:
latitud, longitud, Ciudad Ejemplo:
50,50,Ciudad 5
Algoritmo:
- Se declara las variables necesarias para leer un archivo:
- FileReader
- BufferedReader
- String
- Colección de String: String[]
- Coordenada
- LinkedList<Coordenada>
- Abrir el archivo y generar el almacenador de String
- Mientras existan lineas dentro del archivo:
- Separa las 3 componentes con el metodo split
- Declara una coordenada por defecto
- las variables latitud y longitud las convierte en Float
- Recoge las variables extraídas y las asigna al las variables de la coordenada por defecto
- Finalmente agrega la coordenada extraída a la lista
- Retorna la lista con las coordenadas
| Método cargar |
Suscribirse a:
Entradas (Atom)