martes, 21 de febrero de 2012

05 - Práctica Laboratorio 3


PRÁCTICA LABORATORIO 3


Problema EJS:

          Para continuar la simulación con EJS vamos ha hacer en esta práctica una simulación de un muelle con peso moviéndose verticalmente como el representado en la imagen:



         Tenemos tres fuerzas que intervienen en el movimiento, en primer lugar la fuerza "f" que se ejerce hacia abajo para romper el punto de equilibrio y comenzar la oscilación. También tenemos la fuerza realizada por el muelle hacia arriba con una constante elástica "K" y siendo proporcional a la distancia "x" de enlongación del muelle, la última fuerza que podemos observar en el sistema es la del rozamiento del aire que se opone al movimiento hasta frenar el sistema, esta fuerza es opuesta al movimiento y proporcional a la velocidad con una constante de rozamiento del aire "b".

         Podemos relacionar estas tres fuerzas mediante la 2ª Ley de Newton para determinar el movimiento que va a realizar el muelle a lo largo del tiempo:


         El problema inicial es que el programa EJS solo deja introducir ecuaciones diferenciales de primer orden y nos encontramos ante una ecuación diferencial de 2º orden, la solución es transformar esta ecuación a su forma explícita, es decir despejar la derivada de mayor orden, en nuestro caso es la aceleración que equivale a x''. Además se realiza un cambio de variable aunque cambiemos el nombre de la incognita es esencial para su resolución, como es una ecuación diferencial de 2º orden habrá que realizar dos cambios de variable correspondientes a x1 y x2:

 


         Una ecuación explicita de orden "n" es equivalente a un sistema de orden "n" de ecuaciones diferenciales de primer orden como se muestra a continuación


         Con este sistema de ecuaciones ya podemos introducir los datos en el EJS y observar la simulación siempre teniendo en cuenta que la variable independiente será el tiempo y las funciones incógnitas son x1 y x2.



Simulación EJS:


Introducimos las variables utilizadas en la simulación, no olvidarse del tiempo.


Inicializamos el sistema dando un valor a la enlongación del muelle, en este caso x1=1 (x).

A continuación escribimos las dos ecuaciones diferenciales de primer orden obtenidas anteriormente.

Configuramos las propiedades de la gráfica, es importante poner Pos X=0 para que el muelle se nueva en su eje vertical y no se mueva horizontalmente con el tiempo.


Finalmente observamos la simulación, hemos puesto un plot para ver como evoluciona el sistema en el tiempo y una bola azul que representa el movimiento físico del muelle.


Al igual que en el ejemplo de la anterior entrada podemos poner una imagen que nos congratule para realizar una simulación más personalizada.




lunes, 20 de febrero de 2012

04 - Programación Orientada al Objeto


PROGRAMACIÓN ORIENTADA AL OBJETO (POO)


Resumen POO:

          La programación dirigida al objeto crea un entorno de programación que refleja la realidad y, por ello, hace más sencillo construir programas a personas sin una formación estrictamente informática, se debe por tanto cambiar la manera de pensar a la hora de programar, pensar como personas y no como máquinas. 


     El elemento básico de esta programación no es la función (utilizada en la programación estructurada), sino un ente denominado objeto. Un objeto es la representación de un concepto para un programa y contiene toda la información necesaria para que los datos que describen su estado y las operaciones que pueden modificar dicho estado determinen las capacidades del objeto.


         Por ejemplo para construir un ordenador se adquieren las diferentes piezas con ciertas propiedades (periféricos de entrada, periféricos de salida, capacidad de almacenamiento, fuente de alimentación, etc.) y una cierta funcionalidad (Alimentar potencia, almacenar datos, leer, guardar, reproducir vídeo, grabar sonidos...). La POO surge de la idea de que el programa está compuesto de objetos con ciertas propiedades y funciones. El usuario dispone de los objetos, no importa que objeto se utilice con tal de que el objeto satisfaga sus necesidades.



        



Palabras clave:

Objeto: Los objetos son entidades que se pueden distinguir de manera clara y definida, ejemplos de un objeto pueden ser una persona, un libro, un botón de orden.


Clase (familia): Los objetos están organizados en familias claramente delimitadas. Una familia se reconoce porque reúne un grupo de objetos que heredan elementos entre sí. El modelo de programación visual organiza los objetos en clases (familias), así una clase es el conjunto de objetos que pertenecen a una misma familia. El modelo de programación visual permite así organizar las familias de objetos en un orden jerárquico.


Método (comportamiento): Se define como un conjunto de acciones que un objeto puede realizar para conseguir un propósito. Los métodos representan la parte viva e interesante de un objeto y se emplean habitualmente para modificar las propiedades del objeto. Al modificar cualquiera de las propiedades del objeto se altera su apariencia y se genera un cambio que el usuario de la aplicación puede percibir.


Estado (atributo): Los estados o atributos son las caracterísiticas individuales que diferencian un objeto de otro y determinan su apariencia u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.


Herencia: es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.

Abstracción: Expresa las características esenciales de un objeto, las cuales distinguen al objeto del los demás.

Evento: Todos los objetos se relacionan con el mundo que los rodea, esto significa que ningún objeto está aislado y siempre recibe el influjo de otros objetos. Los eventos son los estímulos que un objeto ejerce sobre otro.

Mensaje: El mensaje es esencialmente una orden que se envía a un objeto para indicarle que realice alguna acción. También se define mensaje como la información completa que un objeto emisor transmite hacia un objeto receptor. Un mensaje contiene tres elementos: el objeto receptor, el tipo de evento y los datos necesarios para el receptor.

Polimorfismo: Es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación

Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto: atributos, identidad, relaciones y métodos.

Identificación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.

Encapsulamiento: hacer las variables que son innecesarias para el tratamiento del objeto pero necesarias para su funcionamiento privadas, asi como las funciones que no necesitan interacción del usuario o que solo pueden ser llamadas por otras funciones dentro del objeto.

Modularidad: Un programa es modular si se compone de módulos independientes y robustos. Esto permite la reutilización y facilita la verificación y depuracion de los mismos. En poo, los módulos están directamente relacionados con los objetos. Los objetos son módulos naturales ya que corresponden a una imagen lógica de la realidad.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. 

Recolección de basura: la recolección de basura es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando.

domingo, 19 de febrero de 2012

03 - Práctica Laboratorio 2

PRÁCTICA LABORATORIO 2



Ejemplo 4:

          Vamos a diseñar en java un programa que dibuje una línea, dando la coordenada inicial y final en un lienzo de  dimensiones prediseñadas. En esta caso utilizaremos las librerías java.awt y java.swing que disponen de utilidades como dibujar lineas, rectángulos, arcos, ... ademas podemos variar colores y texturas.

          En primer lugar definimos la ventana en la que vamos a dibujar, con setSize definimos el tamaño (500x500 pixeles) y en setVisible permitimos la visualización de esta.

          En la sección del programa dedicado al dibujo en sí, definimos el color de la línea con el comando setColor, definimos las variables (X1, Y1) y (X2, Y2) para definir las coordenadas de la línea y finalmente la dibujamos en el lienzo con el comando drawLine.





Resultado final:


Ejemplo 5:

          Para finalizar con el entorno java vamos a hacer un último programa que dibuje una casa en un lienzo prediseñado mediante instrucciones de dibujo similares al programa anterior, en este caso utilizamos la instrucción drawArc y drawRect para dibujar arcos y rectángulos, tambien hacemos un sol relleno de amarillo con las instrucciones setColor(Color.YELLOW) y fillOval.




Resultado final:











Introducción al programa EJS:

          Easy Java Simulations es una herramienta de software diseñada para la creación de simulaciones discretas por computador.

          Una simulación discreta por computador, o simplemente una simulación por computador, es un programa de computador que intenta reproducir, con fines pedagógicos o científicos, un fenómeno natural a través de la visualización de los diferentes estados que éste puede presentar. Cada uno de estos estados está descrito por un conjunto de variables que cambia en el tiempo debido a la iteración de un cierto algoritmo.

          Todo esto significa que EJS es un programa que le ayuda a crear otros programas; más precisamente, simulaciones científicas.

          Al inicializar el programa podemos observar tres ventanas que nos permitirán la simulación de nuestra aplicación (Descripción, Modelo y Vista).


1 - Descripción:

          En esta ventana debemos de escribir el enunciado del problema, datos y demás anotaciones que nos permitan entender lo que se está haciendo. En nuestro casi vamos a simular la la distancia que recorre un vehículo a velocidad constante:




          

2 - Modelo:

          Dentro de la ventana modelo tenemos varios apartados, en primer lugar tenemos que rellenar las variables a utilizar en nuestra simulación, además podemos asignarles su valor inicial y el tipo de variable:

          t    (tiempo)
          x   (posición)
          v   (velocidad)
          x0 (posición inicial)
          v0 (velocidad inicial)         


          A continuación, en la sección de inicialización, vamos a asignar a las variables sus valores iniciales del siguiente modo:

          x=x0
          v=v0


          La siguiente sección a rellenar es las de evolución, en el primer instante nos aparecera la ventana que mostramos a continuación en la que elegiremos una página EDO (Ecuación Diferencial Ordinaria) para resolver el problema.


          Una vez elegido el modelo EDO debemos de introducir la variable independiente (tiempo), el incremento seleccionado para su simulación y la ecuación diferencial planteada en el enunciado del problema.





3 - Vista:

          Finalmente decidimos como vamos a visualizar la simulación en la sección vista, para nuestro caso elegimos una gráfica de modelo "PlottingFrame" que aparece en los iconos del menú "Interfaz".




          A continuación configuramos los ejes de la gráfica en las propiedades de "Trail" (Rastro), tambien podemos especificar el tamaño máximo o mínimo de la gráfica, así como otras propiedades de caracter estético como cambiar colores y grosores de líneas.



          Finalmente visualizamos la simulación mediante el icono "play" de forma triangular y podemos observar como según avanza el tiempo incrementa la distancia recorrida por el vehículo de forma lineal, ya que hemos considerado la velocidad constante.



          También podemos dar más realismo a la simulación utilizando imágenes de 2 dimensiones que representen el enunciado del problema, en nuestro caso un coche moviéndose. En primer lugar insertamos una ventana para reproducir la simulación en Interfaz / Drawing Frame y rellenamos las propiedades que nos sugieren de las variables a representar en cada eje, tamaños de los ejes,...



          A continuación configuramos las propiedades de la ventana (Drawing Panel), que nos permite jugar con las escalas de la ventana y el objeto entre otras cosas.



          En nuestro programa hemos buscado una imagen de un coche y la hemos insertado en la ventana de simulación mediante el icono insertar imagen ubicado en el menú de "elementos de dibujo 2D" y el resultado es el mostrado a continuación:




martes, 7 de febrero de 2012

02 - Práctica Laboratorio 1

PRÁCTICA LABORATORIO 1


Ejemplo 1:


          En primer lugar, para tener un primer contacto con el lenguaje Java realizamos el primer ejemplo que mostramos a continuación:




         Las primeras instrucciones en color amarillo son comentarios del creador del programa y por ello, no afectan al programa en sí, son meramente informativos, los comentarios siempre deben de empezar por dos barras:  // comentario

          A continuación vemos la clase, todo programa Java tiene una clase, y el nombre de la clase siempre debe de coincidir con el nombre del programa, respetando mayúsculas y minúsculas:
          - Nombre del programa: Ejemplo 1
          - Nombre de la clase: public class Ejemplo1 

          La instrucción public static void main (String args[]) declara nuestra primera rutina, es decir la rutina main o rutina principal. A esta rutina se la declara de tipo void, para indicar que no es una función sino un procedimiento y se lo define como static (estático)

          El siguiente paso es realizar nuestro programa Java entre las llaves del main, en este caso hemos declarado dos variables de tipo entero "a" y "b" a las que les asignamos los valores 10 y 25 respectivamente, las 4 siguientes instrucciones unicamente imprimen en pantalla lo que contienen entre paréntesis, el primero muestra una cadena de caracteres "Imprimir datos" y en diferentes lineas aparecerán los valores de "a", "b" y finalmente una linea en blanco.

          Para simular este programa debemos compilarlo en primer lugar:
                   Plugin  ->  Console  ->  Compile buffer

          y a continuación ejecutarlo utilizando:
                         Plugin  ->  Console  ->  Compile buffer





Ejemplo 2:

          En el segundo ejemplo trataremos de sumar dos números que previamente debemos de introducir por teclado:
       


          En este caso hemos introducido la librería import java.io.* que será necesaria para que el Java interprete las recogidas de datos por teclado. Del mismo modo que antes hemos declarado dos variables "s1" y "s2", que son os dos números a sumar, pero ahora debemos obtener sus valores por teclado mediante la instrucción:
          int s1 = Integer.parseInt(br.readLine());

          Una vez recogidos los dos números declaramos la variable "suma" de tipo entero cuyo valor será la suma de los dos números introducidos.

          Por último mostramos el valor de la suma por pantalla, en este caso encadenamos la información dentro del paréntesis mediante signos "+" de la manera mostrada.





 Ejemplo 3:

          El último programa realizado en el laboratorio nos pide los valores de "a", "b" y "c", y nos resuelve la ecuación de segundo grado:


          Primero debemos observar los diferentes caminos que puede crear mi programa dependiendo de los valores que asignemos a las variables ("a" siempre debe de ser positiva).

          Si el discriminate es positivo obtendremos dos soluciones reales:
       

           Si el discriminate es negativo obtendremos dos soluciones imaginarias:



          El programa realizado para resolver la ecuación es el siguiente:

   

              Hemos utilizado la librería import java.math.* que nos permite realizar la raiz cuadrada sqrt().

              Las variables utilizadas son del tipo double que nos permite trabajar con números decimales.

              Otra instrucción nueva que hemos utilizado es la estructura if que nos permite tomar decisiones               respetando siempre la siguiente estructura:
             
              if(condición)         // si se cumple la condición hace lo que esta entre llaves
              {


              }

              else                       // si no se cumple la condición hace lo siguiente entre llaves
              {


              }



01 - Presentación

LENGUAJE JAVA

          Es un lenguaje de programación muy utilizado tanto en telefonía como en ordenadores, siendo independiente del dispositivo utilizado, es decir es un lenguaje que podremos utilizar el la mayoría de nuestros dispositivos electrónicos, esta característica hace que java sea un lenguaje importante y muy utilizado.

          Las diferentes fases por las que pasan los programas de java se expresan en el siguiente diagrama: