martes, 11 de octubre de 2011

Applet "Líneas Aleatorias".

Autor: Gianinna Salazar.
Competencia: Desarrollo de software.

Asignatura: Programación II.
Lenguaje: Java.
Programa: BlueJ.



Descripción de la Actividad

Una de mis experiencias desarrolladas en el 1er año de Carrera de esta asignatura fue el resolver problemas cotidianos con el programa BlueJ y estos fueron desarrollados todas las semanas en los laboratorios.
El problema que les voy a presentar se trata de crear un programa Java en Applet que muestre líneas aleatorias y usando el BlueJ.



Solución

Lo primero que hacemos es crear nuestro código fuente:

import java.awt.*;
import javax.swing.*;
public class LineasAleatorias extends JApplet {
public void paint(Graphics g) {
int n = 1;
int x, xFin;
int y, yFin;
while (n <= 10) {
x = (int)(Math.random() * 100) + 10;
y = (int)(Math.random() * 100) + 10;
xFin = (int)(Math.random() * 100) + 10;
yFin = (int)(Math.random() * 100) + 10;
g.drawLine (x, y, xFin, yFin);
n++;
           }
        }
    }



Aquí podemos ver una imagen donde muestra el código fuente en el BlueJ:



Luego mostraremos la salida de nuestro programa:




Reflexión

El desarrollo de este trabajo me ayudo a realizar programas en Applet, los cuales son muy gráficos y dinámicos a la hora de resolver problemas, además durante el proceso de aprendizaje de este curso pude conocer más sobre estos temas y también aplicarlos en cualquier problema cotidiano.

Exception Java trabajada en Clases.

Autor: Gianinna Salazar.
Competencia: Desarrollo de software.

Asignatura: Desarrollo y Aplicación Cliente Servidor.
Lenguaje: Java.
Programa: Netbeans
.


Descripción de la Actividad

Una de mis experiencias desarrolladas en el 1er año de Carrera de esta asignatura fue el resolver problemas cotidianos con el programa Netbeans y estos fueron desarrollados durante toda la asignatura.
El problema que les voy a presentar se trata de generar de un documento en PDF, con el código fuente del ejemplo de Excepciones con NumberFormatException, el cual fue desarrollado en clases. Al final del documento debe ir una captura de pantalla, mostrando la ejecución del código en Netbeans.



Solución

Lo primero que hacemos es crear nuestro código fuente:

package ejemploexcepciones;

import java.util.*;
/**
 *
 * @author gianinna
 */
public class EjemploExcepciones {
    public static void main(String[] args) {
        int numero;                             // Variable int para el numero
        Scanner leer= new Scanner(System.in);
      
        //Se pide al usuario que ingrese un numero 
        System.out.print("Ingrese un numero:"); 
            

try{
                String ParametroIn = leer.next();
                numero = Integer.parseInt(ParametroIn);

               //Se muestra el numero ingresado   
                System.out.println("El numero ingresado es:"+numero);                       
                System.out.println(""); 
                    }
               //En caso de error entra al cath                
              catch (NumberFormatException e){
               //Le avisa al usuario del error
               System.out.println("Error... Ingrese solo numeros");   
                
               //Muestra el error
                System.out.println("Mensaje "+ e.getMessage());                           
                System.out.println("");
                }
            finally {
                System.out.println("Fin del programa");           //Finaliza el programa  
                    }
        }
}

Aquí podemos ver una imagen donde muestra el código fuente en el Netbeans:






































Luego mostraremos la salida de nuestro programa:

Salida del programa ingresando un número.



Salida del programa ingresando una letra.


Reflexión

El desarrollo de este trabajo me ayudo a conocer el programa Netbeans, el cual también es muy útil para utilizarlo con MySQL como fue realizado en el proceso de la asignatura. Resolver problemas es mucho más fácil con este programa ya que identifica los errores que están en el código algo que por consola se torna más complejo.

Laboratorio 11 de mayo.

Autor: Gianinna Salazar.
Competencia: Desarrollo de software.

Asignatura: Programación I.
Lenguaje: Java.
Programa: BlueJ.



Descripción de la Actividad

Una de mis experiencias desarrolladas en el 1er año de Carrera de esta asignatura fue el resolver problemas cotidianos con el programa BlueJ y estos fueron desarrollados todas las semanas en los laboratorios.

El problema que les voy a presentar se trata de crear un programa Java (la clase se llamara Separar) el cual ingresa un número entero positivo de 4 dígitos, ejemplo 1263. Su código debe descomponer el número e imprimir cada dígito por separado en pantalla y además indicar cuál dígito es el mayor. 

Ejemplos: 1263 --- 1      2      6      3    El mayor es el 6.



Solución

Lo primero que hacemos es crear nuestro código fuente:

import java.util.*;

public class separar{
    public static void main(){

       int x;
       int a, b, c, d;
       
       Scanner leer=new Scanner(System.in);
       
       System.out.println(" Ingrese un numero de 4 digitos ");
       x=leer.nextInt();
       
       if(x>999 && x<10000)
       {
           a=x%10;
           x=x/10;
           b=x%10;
           x=x/10;
           c=x%10;
           x=x/10;
           d=x%10;
           
           System.out.println(d+ " " +c+ " " +b+ " " +a);
           
           if (a>b && a>c && a>d){
             System.out.println (" El mayor es " + a );
           }
               
            else 
               if (b>a && b>c && b>d) {
               System.out.println (" El mayor es " + b );
               }
               else
                  if (c>a && c>b && c>d) {
                  System.out.println (" El mayor es " + c );
                  }
                  else
                     System.out.println (" El mayor es " + d );
                    }
                    else
                      System.out.println (" Este numero no es de 4 digitos " );
    }
}


Aquí podemos ver una imagen donde muestra el código fuente en el BlueJ:


































Luego mostraremos la salida de nuestro programa:














Reflexión


El desarrollo de este trabajo me ayudo a conocer el programa BlueJ, a familiarizarme con el lenguaje Java y poder resolver problemas más fácil por medio de este, además durante el proceso de aprendizaje de este curso pude conocer más sobre estos temas y también aplicarlos.

    Capítulo 7: Multi- table database design.

    Autor: Gianinna Salazar.
    Competencia: Desarrollo de software.

    Asignatura: Introducción a los Sistemas de Base de Datos.
    Lenguaje: SQL.
    Programa: MySQL.



    Descripción de la Actividad

    Una de mis experiencias desarrolladas en el 1er año de Carrera en esta asignatura fue el crear informes con respecto a un manual llamado Heard First SQL que explica paso a paso como aprender el lenguaje de SQL, es este caso les hablaré del Capítulo 
    7: Diseñando múltiples tablas de base de datos.
    Este informe debe explicar todo lo que contiene el 
    Capítulo 7 con sus respectivos ejemplos y contenidos.


    Solución

    Teoría de la Naturalización.

    El proceso de normalización es un estándar que consiste, básicamente, en un proceso de conversión de las relaciones entre las entidades, evitando:

    • La redundancia de los datos: repetición de datos en un sistema. 
    • Anomalías de actualización: inconsistencias de los datos como resultado de datos redundantes y actualizaciones parciales. 
    • Anomalías de borrado: pérdidas no intencionadas de datos debido a que se han borrado otros datos.
    • Anomalías de inserción: imposibilidad de adicionar datos en la base de datos debido a la ausencia de otros datos. 

    Se plantean una serie de problemas:

    • Redundancia: cuando un autor tiene varios libros, se repite la nacionalidad. 
    • Anomalías de modificación: Si Ad.Mig. y Ma.Piat. desean cambiar de editor, se modifica en los 2 lugares. A prior no podemos saber cuántos autores tiene un libro. Los errores son frecuentes al olvidar la modificación de un autor. Se pretende modificar en un sólo sitio.
    • Anomalías de inserción: Se desea dar de alta un autor sin libros, en un principio. NOMBRE y CODLIBRO son campos clave, una clave no puede tomar valores nulos.

    Asegurando:

    • Integridad entre los datos: consistencia de la información. 
    El proceso de normalización nos conduce hasta el modelo físico de datos y consta de varias fases denominadas formas normales, estas formas se detallan a continuación.


    Definición de la clave

    Antes de proceder a la normalización de la tabla lo primero que debemos de definir es una clave, esta clave deberá contener un valor único para cada registro (no podrán existir dos valores iguales en toda la tabla) y podrá estar formado por un único campo o por un grupo de campos.

    En la tabla de alumnos de un centro de estudios no podemos definir como campo clave el nombre del alumno ya que pueden existir varios alumnos con el mismo nombre. Podríamos considerar la posibilidad de definir como clave los campos nombre y apellidos, pero estamos en la misma situación: podría darse el caso de alumnos que tuvieran los mismos apellidos y los mismos nombres (Juan Fernández Martín).


    La solución en este caso es asignar un código de alumno a cada uno, un número que identifique al alumno y que estemos seguros que es único.
    Una vez definida la clave podremos pasar a estudiar la primera forma normal.


    Primera forma normal (1NF)


    Se dice que una tabla se encuentra en primera forma normal (1NF) si y solo si cada uno de los campos contiene un único valor para un registro determinado. Supongamos que deseamos realizar una tabla para guardar los cursos que están realizando los alumnos de un determinado centro de estudios.
    Una vez normalizada la tabla en 1NF, podemos pasar a la segunda forma normal.


    Segunda forma normal (2NF)


    La segunda forma normal compara todos y cada uno de los campos de la tabla con la clave definida. Si todos los campos dependen directamente de la clave se dice que la tabla está es segunda forma normal (2NF).


    Tercera forma normal (3NF)

    Se dice que una tabla está en tercera forma normal si y solo si los campos de la tabla dependen únicamente de la clave, dicho en otras palabras los campos de las tablas no dependen unos de otros.
    Una vez conseguida la segunda forma normal, se puede estudiar la cuarta forma normal.


    Cuarta forma normal (4NF)

    Una tabla está en cuarta forma normal si y sólo si para cualquier combinación clave - campo no existen  valores duplicados.

    Ahora si tenemos nuestra base de datos en 4NF.


    Otras formas normales

    Existen otras dos formas normales, la llamada quinta forma normal (5FN) que no detallo por su dudoso valor práctico ya que conduce a una gran división de tablas y la forma normal dominio / clave (FNDLL) de la que no existe método alguno para su implantación.



    Desarrollo


    Supongamos que deseamos realizar una tabla para guardar los cursos que están realizando los alumnos de un determinado colegio, podríamos considerar el siguiente diseño:


    Podemos observar que el registro de código 1 si cumple la primera forma normal, cada campo del registro contiene un único dato, pero no ocurre así con los registros 2 y 3 ya que en el campo cursos contiene más de un dato cada uno.

    La solución en este caso es crear dos tablas del siguiente modo:


    Como se puede comprobar ahora todos los registros de ambas tablas contienen valores únicos en sus, por lo tanto ambas tablas cumplen la primera forma normal.


    Supongamos que construimos una tabla con los años que cada empleado ha estado trabajando en cada departamento de una empresa:


    Tomando como punto de partida que la clave de esta tabla está formada por los campos código de empleado y código de departamento, podemos decir que la tabla se encuentra en primera forma normal.
    Ahora veremos si cumple con la segunda forma Normal.

    • El campo nombre no depende funcionalmente de toda la clave, sólo depende del código del empleado.
    • El campo departamento no depende funcionalmente de toda la clave, sólo del código del departamento.
    • El campo años si que depende funcionalmente de la clave ya que depende del código del empleado y del código del departamento (representa el número de años que cada empleado ha trabajado en cada departamento)
    Por tanto, al no depender todos los campos de la totalidad de la clave, la tabla no está en segunda forma normal, la solución sería la siguiente:


    Podemos observar que ahora si se encuentran las tres tablas en segunda forma normal, considerando que la tabla A tiene como índice el campo Código Empleado, la tabla B Código Departamento y la tabla C una clave compuesta por los campos Código Empleado y Código Departamento.

    Considerando el ejemplo anterior, supongamos que cada alumno sólo puede realizar un único curso a la vez y que deseamos guardar en que sala se imparte el curso.

    Podemos plantear la siguiente estructura:


    Viendo las dependencias de cada campo con respecto a la clave código:

    • Nombre depende directamente del código del alumno.
    • Curso depende de igual modo del código del alumno.
    • La sala, aunque en parte también depende del alumno, está más ligado al curso que el alumno está realizando.
    Por esta última razón se dice que la tabla no está en 3NF. La solución sería la siguiente:


    Revisando la 4NF veamos la siguiente tabla:


    Comparemos ahora la clave Figura con el atributo Tamaño, podemos observar que Cuadrado Grande está repetido al igual que Círculo Azul, entre otras. Estas repeticiones son las que se deben evitar para tener una tabla en 4NF.

    La solución seria la siguiente:


    Ahora separando las tablas tenemos nuestra base de datos en 4NF.

    Las claves Primarias y foráneas llevadas al desarrollo funcionaria así:



    La tabla FACTURAS tiene ID_FACTURAS que es la clave primaria, única e irrepetible para cada factura, SUCURSAL (otro campo) y FECHA_VTA (otro campo).

    En la siguiente tabla tenemos la clave foránea, que también es un indicador muy similar a la clave primaria:


    ID_DETALLE_FACTURAS (IDDetalleFactura es la clave primaria, única e irrepetible para cada detalle de cada factura), ID_Factura (ID_Factura es ahora nuestra clave foránea ya que es la clave por la cual se relacionan ambas tablas) e ITEM (otro campo)

    En resumen, las claves primarias y foráneas permiten relacionar tablas, cuando la clave se encuentra como índice único de la tabla se llama primaria, y cuando es la referencia y relación hacia otra tabla es la foránea.

    Ahora, los atributos son las propiedades de una entidad. Están relacionados a la POO, Programación Orientada a Objetos, para definirlo en términos más comunes, son como características de cierto objeto.

    Por ejemplo:
    Objeto: Mesa
    Atributos (propiedades):
    Color: Cerezo
    Material: Madera, etc.


    Reflexión

    Logramos aprender a conocer las ventajas de usar múltiples tablas con respecto a tablas de base de datos.
    Debido a la eficiencia que nos brinda el usar multi-tablas no cabe duda que es la mejor opción a la hora de crear bases de datos inteligentes. A la hora de hacer consultas, ganaremos tiempo, mantendremos un orden en nuestra tabla de datos y además optimizaremos los espacios de memorias en nuestro servidor de base de datos.
    Y así, si poseemos una gran base de datos podremos ahorrarnos varios problemas, ya mientras más grande nuestra tabla más complejas y menos manejables resultaran nuestras consultas. Debido a lo mismo podemos encontrarnos problemas de rendimiento o anomalías en nuestros datos.