miércoles, 29 de febrero de 2012

Metodo de Simulación : Montecarlo

Metodo Montecarlo

INTRODUCCION

El método de Montecarlo (MC) es quizá el método más usado en mecánica estadística computacional.
El método de Montecarlo es un método probabilístico, en contraposición de los métodos determinísticos. En el transcurso de una simulación MC las partículas que forman el sistema se mueven al azar.



Emplea deliberadamente números al azar en el estudio de un "proceso estocástico". Por proceso estocástico se entiende una secuencia de estados cuya evaluación viene determinada por sucesos al azar.

Veamos con un ejemplo sencillo de como los procesos estadísticos permiten determinar algunos valores numéricos determinados. Si se tiene un cuadrado de lado "l" con una circunferencia inscrita:

 Mediante un ordenador se generan una serie de puntos al azar, generando aleatoriamente los diferentes valores de las coordenadas "x" e "y", imponiendo la condición de que todos los puntos generados estén dentro del cuadrado, es decir imponiendo:
|x| ≤ l/2 |y| ≤ l/2

Este ejemplo es muy sencillo y no tiene ninguna utilidad práctica, sin embargo demuestra que mediante métodos estadísticos podemos obtener valores numéricos de algunas propiedades de sistemas.


 SIMULACIÓN

 1. Diseñar el modelo lógico de decisión
2. Especificar distribuciones de probabilidad para las variables aleatorias relevantes.
3. Incluir posibles dependencias entre variables.
4. Muestrear valores de las variables aleatorias.
5. Calcular el resultado del modelo según los valores del muestreo (iteración) y registrar el resultado.
6. Repetir el proceso hasta tener una muestra estadísticamente representativa.
7. Obtener la distribución de frecuencias del resultado de las iteraciones.
8. Calcular media, desvío y curva de percentiles acumulados.


EJEMPLO PRÁCTICO


Si deseamos reproducir, mediante números aleatorios, la tirada sucesiva de una moneda, debemos previamente asignarle un intervalo de números aleatorios a CARA y otro a CRUZ, de manera de poder interpretar el resultado de la simulación. Tales intervalos se asignan en función de las probabilidades de ocurrencia de cada cara de la moneda. Tenemos así:

CARA Probabilidad: 0,50 Números aleatorios: 0,000 al 0,499
CRUZ Probabilidad: 0,50 Números aleatorios: 0,500 al 0,999

Después, al generar un número aleatorio a partir de la función RAN de la calculadora, por ejemplo, obtenemos el resultado simulado. Así, si obtenemos el número aleatorio 0,385, observamos que está incluido en el intervalo asignado a CARA.
En otras aplicaciones, se asocian intervalos de números aleatorios según las probabilidades de ocurrencia de los eventos a simular.

martes, 21 de febrero de 2012

Ejercicio Práctico 8

Ejercicio Básico de EJS 


Hoy vamos a realizar un ejercicio sencillo con EJS simulando una marioneta con muelle.
Para ello describiremos teoricamente el ejercicio ( su parte mecanica y la ecuación diferencial resultante).

Hay que definir dos ecuaciones diferenciales , cada una de ellas representa la velocidad y la aceleración de la marioneta.

\[x^2 = a * landa + b * u \]
\[x (0) = Xo\]

Por lo que la segunda derivada queda en funcion de :  \[x" = f (t,x,x`) \]
Aplicando la segunda ley de newton para cargas :  \Sumatorio de fuerzas = m * a \]
 Siendo "m" la masa de la marioneta y "a" su aceleración y "v" su velocidad.La fuerza "f" sera la fuerza de rozamiento del aire. Por lo tanto sustituyendo y derivando en las encuaciones anteriormente mencionadas :

\[ f -k*x  b*v = m * a\]
\[x" = -k/m *x - b/m* x` + 1/m * f \]


 EJS presenta una dificultad. No se pueden introducir ecuaciones de mas de 1er grado por lo que apelando al algebra sabemos que una ecuación explicita de orden N es equivalente a un sistema de N ecuaciones. Se realiza con cambios de variable.

Siendo x = x1 y x`= x2


\[x2` = -k/m *x - b/m* x` + 1/m * f \]
 \[x1` = x2 \]

La variable independiente sera el tiempo "t" y la función incognita x1 y x2.
Inicializaremos las variables:

 \[x (0) = 2\]  \[x` (0) = 0\]  \[m = 30kg\]  \[b = 5\]
 \[k = 2\]  \[f = 0\] 


Dicho esto comenzaremos con EJS definiendo las variables e inicializandolas:




Posteriormente en el modulo de vista colocaremos los elementos necesarios para su visualización : Un gráfico en 2D de tipo "PlottingFrame" y para imagenes en 3D "DrawingFrame".



Configuraremos ambos elementos para que la visualización sea correcta:


Y procederemos a la simulación:




Ejercicio Práctico 7

Ejercicio Básico de EJS

Hoy vamos a realizar un ejercicio sencillo con el programa de simulacion de java EJS.


Enunciado: 

Un vehiculo que se va desplazando durante el tiempo con velocidad constante. 

Comenzaremos definiendo las variables necesarias para las ecuaciones diferenciales:

La variable vx representa la derivada de x en el tiempo. Posteriormente se utilizara en la ecuación diferencial. En el modulo de inicialización daremos valores iniciales a las variables:

                                           x = 0 ;
                                           vx = 0.000000000001 ;
 
En el modulo de evolución escribiremos la ecuacion diferencial correspondiente a nuestro enunciado. En este caso es muy sencilla vx.

                                        
En el modulo de vista colocaremos los elementos necesarios para su visualización : Un gráfico en 2D de tipo
 "PlottingFrame" y para imagenes en 3D "DrawingFrame".



Configuraremos ambos elementos para que la visualización sea correcta:





Una vez definido los tamaños graficos de la imagen y del Frame procederemos a la simulación :


jueves, 16 de febrero de 2012

Definiciones Básicas

¿Que es un objeto?



Objeto es el concepto clave de la Programación Orientada a Objetos, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.

Los objetos tienen dos características: Un estado y un comportamiento. Fijate que por ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.

Un auto es un objeto. También tiene un estado: Cantidad de puertas, color, tamaño, etc. y un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., etc.

Entonces podemos definir a un objeto en POO, como un conjunto de datos y funciones relacionadas. A las funciones de los objetos, tales como acelerar en el caso del auto, de aquí en más las llamaremos métodos, a los datos los llamaremos atributos.

Los objetos en programación, son modelados observando objetos del mundo real, por ejemplo implementamos el objeto "perro" dentro de nuestro programa definiendo los atributos y métodos del objeto perro real.


Un ejemplo mas complicado de un objeto podría ser el siguiente:

Objeto: Cuenta bancaria
Atributos: tipo, titular, saldo.
Métodos: Depositar, Extraer.

Aquí se ve la necesidad de que el atributo "saldo" sea solo accesible a través de los métodos "Depositar" y "Extraer" por una cuestión de seguridad, encapsulamiento y para evitar comportamientos indeseados.

Herencia

Los sistemas orientados a objetos permiten definir clases en término de otras clases. Por ejemplo ovejero alemán y caniche son diferentes razas de perros. En la terminología orientada a objetos "Ovejero Alemán" y "Caniche" son subclases de la clase perro. De forma similar Perro es la superclase de "Ovejero Alemán".



Cada subclase hereda los atributos de la superclase. Tanto la clase "Ovejero Alemán" como "Caniche" tendrán los atributos nombre, color de pelo, altura definidos en la clase Perro.
Una subclase no esta limitada únicamente a los atributos de su superclase, también puede tener atributos propios, o redefinir algunos definidos anteriormente en la superclase.
No se esta limitado tampoco a un solo nivel de herencia, se pueden tener todos los que se consideren necesarios.

Ejemplo:

Clase Empleado hereda de clase Persona, y esta a su vez hereda de clase Animal.
Las subclases proveen un comportamiento especializado sobre los elementos comunes provistos por las superclases. Gracias a la herencia, los programadores pueden rehusar código una y otra vez.


Polimorfismo

El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación.

Recuerde el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una superclase llamada Animal, que brindaba la información general de cualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la misma manera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobrescritura o implementación específica de métodos es la clave del polimorfismo.

Para poner en práctica se hará un ejemplo bastante sencillo. Se hará una librería de clases que represente figuras tridimensionales y bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura correspondiente.


La representación de la jerarquía sería como ésta:

 

Encapsulamiento


Definicion de encapsulamiento
 
El encapsulamiento es la característica de autonomía de la OO. Esta característica  permite generar componentes autónomos de software tomando una parte de funcionalidad y ocultando los detalles de la implementación al mundo exterior.
Los términos módulo, componente o bean se suelen utilizan en lugar de “componente encapsulado de software”.
Una vez encapsulada, una entidad de software se puede visualizar como una caja negra.

 
Un encapsulamiento eficaz permite escribir componentes autónomos de software.
Las tres características de un encapsulamiento eficaz son:
Abstracción.
Ocultamiento de la implementación.
División de la responsabilidad.


Abstracción 

La abstracción es el proceso de simplificar un problema complejo.La abstracción permite resolver un problema una vez y utilizar la solución posteriormente en todo el dominio del problema.
Ejemplo 1
Imaginemos una cola de personas ante un cajero en un banco.
Tan pronto como el cajero está listo, la primera persona de la cola avanza a la ventanilla.
La gente mantiene este orden: primero en entrar, primero en salir.
Ejemplo 2
Consideremos un establecimiento de venta rápida de hamburguesas.
Conforme una hamburguesa llega al final de la banda transportadora, es colocada tras la última hamburguesa por preparar.
Así, la primera hamburguesa que se toma es también la primera que se preparó.
Ambos dominios son un ejemplo de una cola primero en entrar, primero en salir (orden de elementos
tipo FIFO).




Ocultamiento de la implementación

 El ocultamiento de la implementación presenta dos beneficios:
Proteger al objeto de los usuarios.
Mediante los Tipos Abstractos de Datos.
Proteger a sus usuarios del objeto.
Mediante la utilización de código moderadamente ligado.
¿Cómo proteger a los usuarios mediante el ocultamiento de la implementación?

El ocultamiento de la implementación conduce a un diseño más flexible porque evita que los usuarios del objeto dependan estrechamente de la implementación del objeto. 

Así, el ocultamiento de la implementación no sólo protege al objeto, sino también a aquellos que lo utilizan pues fomenta la creación de código moderadamente ligado al objeto. 

El código moderadamente ligado es independiente de la implementación de otros componentes.
El código estrechamente ligado depende intensamente de la implementación de otros componentes.
El encapsulamiento y el ocultamiento de la implementación no son mágicos. Si se realizan cambios en una interfaz, será necesario actualizar el código dependiente de esa interfaz. Mediante el ocultamiento de los detalles y la escritura de software para una interfaz, se crea código moderadamente ligado.
 El código estrechamente ligado choca con el propósito del encapsulamiento: crear objetos independientes y reutilizables.
 
División de la responsabilidad
 
Para generar código moderadamente desligado, hay que contar con una división apropiada de la
responsabilidad.
El ocultamiento de la implementación y la responsabilidad van de la mano.
Un objeto tiene la responsabilidad de saber cómo llevar a cabo su trabajo.
Si la implementación se deja abierta a todo el mundo exterior, un usuario podría empezar a actuar
sobre ella, duplicando en consecuencia la responsabilidad
 RESUMEN
El encapsulamiento eficaz se compone de:
Abstracción más
Ocultamiento de la implementación más
Responsabilidad.
Si eliminamos
La abstracción, el rdo será código no reutilizable.
El ocultamiento de la implementación, el rdo será código frágil y estrechamente ligado.
La responsabilidad, el rdo será código orientado a datos y con una lista de procedimientos (procedural).

HTML BASICO II

Estilos y efectos básicos

Como ya hemos dicho, la estructura lógica del texto y los diferentes efectos que se le apliquen se especifican mediante directivas. En este punto vamos a repasar algunas de las más importantes. En cada uno de los casos que veremos, primero se presenta el texto original HTML, es decir, lo que nosotros editamos, con las directivas situadas en los lugares adecuados; y después se presenta el efecto que dicho texto fuente produce una vez que se interpreta y se representa con el programa adecuado.



Titulos

Mediante los títulos, en sus diferentes niveles de importancia, podemos definir el esqueleto del documento, su estructura básica.


<h1>Mucha importancia</h1>

Mucha importancia

<h2>Menos importancia</h2>

Menos importancia

<h3>Mucha menos importancia</h3>

Mucha menos importancia


Atributos del texto

Mediante estos atributos determinamos el estilo y el tipo de letra que tendrá la presentación del documento final. El primero en el que nos deberíamos detener es el texto normal entendiendo como tal el que no tiene ninguna característica especial.
Para definir un párrafo como normal no es necesario poner ninguna etiqueta. Lo único que hay que tener en cuenta, como ya se ha dicho antes, es que al presentar el documento se hace caso omiso de los espacios, tabulaciones y retornos de carro que se encuentren en el texto fuente. Por ello cuando se quiera forzar un final de línea es necesario utilizar dos directivas especiales: <p> para marcar un fin de párrafo, y <br> para un único retorno de carro.

 La diferencia entre ambas es que la separación de líneas que provoca <p> es algo mayor que la de <br>, para que los párrafos se distingan bien entre sí. Las dos directivas mencionadas se sitúan en el punto en que queremos poner la separación.

Por ejemplo:


Este será un texto normal (párrafo 1, línea 1).<br>
El primer párrafo estará formado por 2 líneas (párrafo 1, línea 2).<p>
Este ya es el segundo párrafo (párrafo 2, línea 1).<p>

Este será un texto normal (párrafo 1, línea 1).
El primer párrafo estará formado por 2 líneas (párrafo 1, línea 2).
Este ya es el segundo párrafo (párrafo 2, línea 1).

Por supuesto, estas dos etiquetas se puede aplicar donde queramos, no sólo en el texto normal.
El texto preformateado (etiqueta <pre>) se aplica cuando queremos que en la presentación final del documento se respeten los espacios y retornos de carro que hayamos puesto en el texto fuente. Además se utilizará un tipo de letra de espaciado fijo, parecido al de una máquina de escribir, más pequeño que el del texto normal.

Este estilo de texto puede ser adecuado, por ejemplo, para una tabla numérica sencilla:

<pre>
Texto preformateado
---------------------
|  1 |  2 |  3 |  4 |
|  5 |  6 |  7 |  8 |
|  9 | 10 | 11 | 12 |
---------------------
</pre>
Texto preformateado
---------------------
|  1 |  2 |  3 |  4 |
|  5 |  6 |  7 |  8 |
|  9 | 10 | 11 | 12 |
---------------------

Para hacer una cita textual dentro de nuestro documento, se puede utilizar
la directiva <blockquote>:


<blockquote>Muchos años después, frente al pelotón de fusilamiento,
el coronel Aureliano Buendía había de recordar aquella tarde remota
en que su padre lo llevó a conocer el hielo.<br>
(Gabriel García Márquez, Cien años de soledad)</blockquote>

Muchos años después, frente al pelotón de fusilamiento, el coronel Aureliano Buendía había de recordar aquella tarde remota en que su padre lo llevó a conocer el hielo.
(Gabriel García Márquez, Cien años de soledad)

Se pueden dar también los atributos más tradicionales: negrita y cursiva:


<b>Esto en negrita</b> y <i>esto en cursiva</i>
Esto en negrita y esto en cursiva

Se puede utilizar un tipo de letra similar al de una máquina de escribir:


<tt>Máquina de escribir</tt>
Máquina de escribir
Para centrar texto (o, en general, cualquier cosa: un gráfico, por ejemplo) se usa la directiva <center>:


<center>Verde que te quiero verde</center>
 
Verde que te quiero verde
 


LISTAS

Las listas se definen de forma muy sencilla: se dice dónde empieza la lista, dónde empieza cada punto y dónde acaba la lista. Las etiquetas que se utilicen en cada caso deben aparecer al principio de línea, o al menos sin texto por delante (sólo espacios o tabulaciones).

Podemos recurrir a tres tipos distintos de listas, cada una con una presentación diferente: no numeradas, numeradas y listas de definiciones (glosarios).
Las listas se pueden anidar, es decir, en el lugar donde debería ir uno de los términos de la lista se pone una nueva lista, que por supuesto no tiene porqué ser del mismo tipo.

Esto es una lista no numerada:

<ul>
<li>Tomates
<li>Zanahorias
<li>Puerros
</ul>
  • Tomates
  • Zanahorias
  • Puerros
Esto una lista numerada:

<ol>
<li>Miguel Induráin
<li>Tony Rominger
<li>Eugeni Berzin
</ol>
  1. Miguel Induráin
  2. Tony Rominger
  3. Eugeni Berzin

Un glosario está formado por una serie de parejas de término (marcado con <dt> al principio de línea) y definición (con <dd>). Por ejemplo, podríamos crear un pequeño diccionario con los términos perro, gato y pescadilla, de la siguiente manera:


<dl>
<dt>Perro (<i>n. masc.</i>)
<dd>Animal de cuatro patas que ladra.
<dt>Gato (<i>n. masc.</i>)
<dd>Animal de cuatro patas que maúlla y se lleva muy mal con el perro.
<dt>Pescadilla (<i>n. fem.</i>)
<dd>Animal que vive en el mar y está recubierto de escamas.
</dl>
Perro (n. masc.)
Animal de cuatro patas que ladra.
Gato (n. masc.)
Animal de cuatro patas que maúlla y se lleva muy mal con el perro.
Pescadilla (n. fem.)
Animal que vive en el mar y está recubierto de escamas.

HTML BASICO I

¿Que es HTML?

HTML (HyperText Markup Language) es un lenguaje muy sencillo que permite describir hipertexto, es decir, texto presentado de forma estructurada y agradable, con enlaces (hyperlinks) que conducen a otros documentos o fuentes de información relacionadas, y con inserciones multimedia (gráficos, sonido...) La descripción se basa en especificar en el texto la estructura lógica del contenido (títulos, párrafos de texto normal, enumeraciones, definiciones, citas, etc) así como los diferentes efectos que se quieren dar (especificar los lugares del documento donde se debe poner cursiva, negrita, o un gráfico determinado) y dejar que luego la presentación final de dicho hipertexto se realice por un programa especializado (como Mosaic, o Netscape).



¿Como espeficicar EFECTOS del texto?

La mayoría de los efectos se especifican de la misma forma: rodeando el texto que se quiere marcar entre dos etiquetas o directivas (tags, en inglés), que definen el efecto o unidad lógica que se desea. Las etiquetas están formadas por determinados códigos metidos entre los signos < y >, y con la barra / cuando se trata de la segunda etiqueta de un efecto (la de cierre).

Por ejemplo: <efecto> para abrir y </efecto> para cerrar. Ciertas directivas sólo se ponen una vez en el lugar del texto donde queramos que aparezca el efecto concreto. Esto es lo que ocurre, por ejemplo, cuando queremos poner un gráfico, caso en el que se usa algo parecido a <poner_gráfico_aquí> (más adelante ya veremos la directiva concreta que se utiliza).

A veces es necesario ofrecer datos adicionales en una directiva. Por ejemplo, cuando se define un hiperenlace hay que especificar su destino. Para ello se incluyen parámetros en la directiva inicial (la de apertura), de la siguiente forma: <efecto parametro1 parametro2 ...>. La directiva de cierre, caso de ser necesaria, queda como antes: </efecto>.

Más adelante en el presente documento se muestra el efecto de las directivas más usadas en la creación de un documento HTML. Para cada una de ellas, primero se muestra el texto fuente, y bajo éste, el efecto que produce.



¿Estructura básica de un documento HTML?

Un documento HTML comienza con la etiqueta <html>, y termina con </html>. Dentro del documento (entre las etiquetas de principio y fin de html), hay dos zonas bien diferenciadas: el encabezamiento, delimitado por <head> y </head>, que sirve para definir diversos valores válidos en todo el documento; y el cuerpo, delimitado por <body> y </body>, donde reside la información del documento. La única utilidad del encabezamiento en la que nos detendremos es la directiva <title>, que permite especificar el título de un documento HTML. Este título no forma parte del documento en sí: no aparece, por ejemplo, al principio del documento una vez que este se presenta con un programa adecuado, sino que suele servir como título de la ventana del programa que nos la muestra. Por ejemplo, en el encabezamiento de este manual se ha especificado:

<title>Manual práctico de HTML</title> en minúsculas. 
 
Obsérverse que el título que encabeza este texto se
ha escrito con mayúsculas, para distinguirlo del título global
del documento.
El cuerpo de un documento HTML contiene el texto que, con la presentación y los efectos que se decidan, se presentará ante el hiperlector. Dentro del cuerpo son aplicables todos los efectos que se van a mencionar en el resto de esta guía. Dichos efectos se especifican exclusivamente a través de directivas. Esto quiere decir que los espacios, tabulaciones y retornos de carro que se introduzcan en el fichero fuente no tienen ningún efecto a la hora de la presentación final del documento.

Por ejemplo, escribiendo:

Estas
      palabras
forman          una
    frase.
 
producimos exactamente lo mismo que con:

Estas palabras forman una frase.

A la hora de la verdad lo que se ve es:

Estas palabras forman una frase.

En resumen, la estructura básica de un documento HTML queda de la forma siguiente:
 
<html>
  <head>
   <title>Título</title>
  </head>
  <body>
   Texto del documento, menciones a gráficos, enlaces, etc.
  </body>
</html>

Ejercicio practico 6

Ejercicio Básico de Java


En este ejemplo explicaremos los applet de java.

Primero crearemos la pagina HTML en el que estará la llamada a la clase de java a ejecutar.
La clase de Java se sustituira por el archivo correspondiente a ejecutar donde estara el codigo.

Applet.html

<html>
    <head>
        <title> Ejemplo de Applet </title>
    </head>
    <body>
        This is the applet:<P>
        <applet code="Ejemplo4japon.class" width=200 HEIGHT=150>
        </applet>
    </body>
</html>

En la clase java se deberan importar las librerias necesarias para la ejecución del applet. Ademas la clase debe heredar de la clase Applet para poder sobreescribir el metodo Paint.

EjercicioX.java


import java.applet.*;
import java.awt.*;
public class Ejemplo4b extends Applet {
    public void paint(Graphics g) {
    g.drawLine(0, 0, this.getSize().width, this.getSize().height);
    }
}

import java.applet.*;
import java.awt.*;
public class Ejemplo4c extends Applet {
    public void paint(Graphics g) {
    g.drawLine(0, 0, this.getSize().width, this.getSize().height);
    g.drawLine(0, this.getSize().height, this.getSize().width, 0);
    }
}

import java.applet.*;
import java.awt.*;public class Ejemplo4japon extends Applet {
    public void init() {
        setBackground(Color.red);
    }
    public void paint(Graphics g) {
    g.drawArc(60, 40,70, 70,360, 360);
    g.fillArc(60, 40,70, 70,360, 360);
   
    }
}

martes, 14 de febrero de 2012

Ejercicio Práctico 5

Ejercicio Básico de Java


En este ejemplo dibujaremos una casa en lenguaje Java con las librerias gráficas AWT y Swing.
Se modulariza en dosprocedimientos , un principal donde se ejecuta la aplicación y el metodo Paint encargado de dibujar la casa. El metodo Paint esta sobreescrito de la clase heredada JFrame asi como sus metodos propios "setColor", "drawline" etc.


import java.awt.*;
import javax.swing.*;

public class Ejemplo4 extends JFrame {

// establecer la cadena de la barra de título y dimensiones de la ventana
public Ejemplo4()
{
super( "Dibujo de una casa" );

setSize( 500, 500 );
setVisible( true );
}

// mostrar varias líneas, rectángulos y óvalos
public void paint( Graphics g )
{
super.paint( g );  // llamar al método paint de la superclase

g.setColor( Color.BLUE );
g.drawLine( 20, 300, 200, 300 ); // Suelo
g.drawLine(20, 300, 20, 200); // Linea vertical izquierda
g.drawLine(20, 200, 120, 200); // Base triangulo del tejado
g.drawLine(20,200,70, 100); // triangulo
g.drawLine(70,100,120,200); // triangulo
g.drawLine(120, 200, 200, 200); // linea horizontar intermedia
g.drawLine(70,100,200,100); // Linea horizontal superior
g.drawLine(200,100,200,300); // Linea vertical derecha
g.drawLine(120,200,120,300);


//puerta rectangular con dos ventanas
g.drawRect(55,250,30,50);//puerta
g.drawRect(30,210,20,20);
g.drawRect(90,210,20,20);


//Sol circular y relleno
g.setColor(Color.YELLOW);
g.fillOval(40,40, 40,40);


} // fin del método paint

// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
Ejemplo4 aplicacion = new Ejemplo4();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}

}

Ejercicio Práctico 4

Ejercicio Básico de Java


En este ejemplo se muestra como utilizar la clase gráfica de Java AWT y Swing.
Se define una nueva ventana en la que se insertaran diferentes figuras geométricas con diferentes colores.

Cabe destacar que la clase principal hereda los métodos de la clase JFrame y se sobreescribe el método paint para mostrar el dibujo que nosotros queramos oportuno.
Además se puede observar de que en esta clase coexisten diferentes métodos con el programa principal , no como en otros ejemplos que solamente tenemos el método principal "Main".


import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.io.*;
import java.math.*;

public class Ejemplo4 extends JFrame
    {
        // establecer la cadena de la barra de título y dimensiones de la ventana
    public Ejemplo4()
    {
    super( "Dibujo de lineas y rectangulos" );
   
    setSize( 400, 165 );
    setVisible( true );
    }

    public void paint( Graphics g )
    {
        super.paint( g );  // llamar al metodo paint de la superclase
       
        g.setColor( Color.RED );
        g.drawLine( 0, 0, 350, 30 );
       
        /*g.setColor( Color.BLUE );
        g.drawLine( 10,10,350,350 );
       
        g.setColor( Color.BLUE );
        g.drawRect( 5, 40, 90, 55 );
        g.fillRect( 100, 40, 90, 55 );*/
       
      }
   
//Ejecucion de la clase principal
    public static void main( String args[] )
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Ejemplo4 aplicacion = new Ejemplo4();
        aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
   
}   

Ejercicio Práctico 3

Ejercicio Básico de Java


En este ejemplo se muestra una posible codificación de la resolución de una ecuación de segundo grado.
Se ha utlilizado la libreria matematica de java Math para elevar al cuadrado el resultado asi como el calculo de la raíz cuadrada mediante los metodos "Pow" y "Sqrt".
Con la sentencia try/catch de tratamiento de errores se ha tenido en cuenta si existe la solución y si es racional o no.
Además los datos obtenidos por teclado han sido transformados a tipo "Double" para poder meter decimales.



import java.io.*;
import java.math.*;
public class Ejemplo3
    {
        public static void main (String [] args)
        {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader (isr);
        try
        {
            System.out.print("Sumando a : ");
            double a = Double.parseDouble(br.readLine());
            System.out.print("Sumando b : ");
            double b = Double.parseDouble(br.readLine());
            System.out.print("Sumando c : ");
            double c = Double.parseDouble(br.readLine());
            double x, y;
           
            double d = Math.pow(b,2) - 4*a*c;
            if(a!=0)
            {
                 if (d > 0)
                {
                   x= (-b+Math.sqrt(d))/(2*a);
                   y= (-b-Math.sqrt(d))/(2*a);
                   System.out.println ("Las soluciones de la ecuación de 2 grado son: x = " + x + " e y = " + y);
                 }
               else
                 {   
                    System.out.print("Numero irracional");   
                 }
                      
            }
            else{
            System.out.print("La solucion no existe");   
            }
        }
       
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

Ejercicio Práctico 2

Ejemplo Básico en Java


Este ejercicio lee dos números por teclado del usuario haciendo uso del buffer del sistema y muestra la suma por pantalla.
Se ha utilizado el sistema try/catch para el control de errores y la libreria de entrada salida estandar de Java.

import java.io.*;
public class Ejemplo2
    {
        public static void main (String [] args)
        {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader (isr);
        try
        {
            System.out.print("Sumando 1 : ");
            int s1 = Integer.parseInt(br.readLine());
            System.out.print("Sumando 2 : ");
            int s2 = Integer.parseInt(br.readLine());
            int suma=s1+s2;
            System.out.println ("La suma es " + s1 + "+" + s2 +"="+ suma);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

jueves, 9 de febrero de 2012

UNIDADES DE MEDIDA EMPLEADAS EN INFORMATICA


Unidades de medida básicas


Las unidades de medida en Informática a veces pueden resultar algo confusas. Vamos a tratar de aclarar algunos conceptos viendo a que se refieren.

Podemos agrupar estas medidas en tres grupos: Almacenamiento, procesamiento y transmisión de datos. 

 
ALMACENAMIENTO

Con estas unidades medimos la capacidad de guardar información de un elemento de nuestro PC.

La unidad básica en Informática es el bit. Un bit o Binary Digit es un dígito en sistema binario (0 o 1) con el que se forma toda la información. Evidentemente esta unidad es demasiado pequeña para poder contener una información diferente a una dualidad (abierto/cerrado, si/no), por lo que se emplea un conjunto de bits (en español el plural de bit NO es bites, sino bits).

Para poder almacenar una información más detallado se emplea como unidad básica el byte u octeto, que es un conjunto de 8 bits. Con esto podemos representar hasta un total de 256 combinaciones diferentes por cada byte.

Aquí hay que especificar un punto. Hay una diferencia entre octeto y byte. Mientras que un octeto tiene siempre 8 bits un byte no siempre es así, y si bien normalmente si que tiene 8 bits, puede tener entre 6 y 9 bits.

Precisamente el estar basado en octetos y no en el sistema internacional de medidas hace que las subsiguientes medidas no tengan un escalonamiento basado el este sistema (el SI o sistema internacional de medidas).

Veamos los más utilizados:

byte.- Formado normalmente por un octeto (8 bits), aunque pueden ser entre 6 y 9 bits.
La progresión de esta medida es del tipo B=Ax2, siendo esta del tipo 8, 16, 32, 64, 128, 256, 512.
Se pueden usar capacidades intermedias, pero siempre basadas en esta progresión y siendo mezcla de ellas (24 bytes=16+8).

Kilobyte (K o KB).- Aunque se utilizan las acepciones utilizadas en el SI, un Kilobyte no son 1.000 bytes. Debido a lo anteriormente expuesto, un KB (Kilobyte) son 1.024 bytes. Debido al mal uso de este prefijo (Kilo, proveniente del griego, que significa mil), se está utilizando cada vez más el término definido por el IEC (Comisión Internacional de Electrónica) Kibi o KiB para designar esta unidad.

Megabyte (MB).- El MB es la unidad de capacidad más utilizada en Informática. Un MB NO son 1.000 KB, sino 1.024 KB, por lo que un MB son 1.048.576 bytes. Al igual que ocurre con el KB, dado el mal uso del término, cada vez se está empleando más el término MiB.

Gigabyte (GB).- Un GB son 1.024 MB (o MiB), por lo tanto 1.048.576 KB. Cada vez se emplea más el término Gibibyte o GiB.

Llegados a este punto en el que las diferencias si que son grandes, hay que tener muy en cuenta (sobre todo en las capacidades de los discos duros) que es lo que realmente estamos comprando. Algunos fabricantes utilizan el termino GB refiriéndose no a 1.024 MB, sino a 1.000 MB (SI), lo que representa una pérdida de capacidad en la compra. Otros fabricantes si que están ya utilizando el término GiB. Para que nos hagamos un poco la idea de la diferencia entre ambos, un disco duro de 250 GB (SI) en realidad tiene 232.50 GiB.

Terabyte (TB).- Aunque es aun una medida poco utilizada, pronto nos tendremos que acostumbrar a ella, ya que por poner un ejemplo la capacidad de los discos duros ya se está aproximando a esta medida. Un Terabyte son 1.024 GB.

Existen unas medidas superiores, como el Petabyte, Exabyte, Zettabyte o el Yottabite, que podemos calcular multiplicando por 1.024 la medida anterior. Estas medidas muy probablemente no lleguen a utilizarse con estos nombre, sino por los nuevos designados por el IEC. 


 
PROCESAMIENTO FRECUENCIA DE TRANSMISION

La velocidad de procesamiento de un procesador se mide en megahercios.
Un megahercio es igual a un millón de hercios.

Un hercio (o herzio o herz) es una unidad de frecuencia que equivale a un ciclo o repetición de un evento por segundo. Esto, en palabras simples, significa que un procesador que trabaje a una velocidad de 500 megahercios es capaz de repetir 500 millones de ciclos por segundo.

En la actualidad, dada la gran velocidad de los procesadores, la unidad más frecuente es el gigahercio, que corresponde a 1.000 millones de hercios por segundo.

Sobre esto hay que aclarar un concepto. Si bien en teoría a mayor frecuencia de reloj (más megahercios) su supone una mayor velocidad de procesamiento, eso es solo cierto a medias, ya que en la velocidad de un equipo no solo depende de la capacidad de procesamiento del procesador.

Estas unidades de medida se utilizan también para medir la frecuencia de comunicación entre los diferentes elementos del ordenador.


VELOCIDAD TRANSMISION DE DATOS

En el caso de definir las velocidades de transmisión se suele usar como base el bit, y más concretamente el bit por segundo, o bps.

Los múltiplos de estos si que utilizan el SI o Sistema Internacional de medidas.

Los más utilizados sin el Kilobit, Megabit y Gigabit, siempre expresado en el término por segundo (ps).

Las abreviaturas se diferencian de los términos de almacenamiento en que se expresan con b minúscula.
Estas abreviaturas son:

Kbps.- = 1.000 bits por segundo.
Mbps.- = 1.000 Kbits por segundo.
Gbps.- = 1.000 Mbits por segundo.

En este sentido hay que tener en cuenta que las velocidades que en la mayoría de las ocasiones se muestran en Internet están expresadas en KB/s (Kilobyte por segundo), lo que realmente supone que nos dice la cantidad de bytes (unidad de almacenamiento) que hemos recibido en un segundo, NO la velocidad de trasmisión. Podemos calcular esa velocidad de transmisión (para pasarla a Kbps o Kilobits por segundo) simplemente multiplicando el dato que se nos muestra por 8, por lo que una trasmisión que se nos indica como de 308 KB/s corresponde a una velocidad de transmisión de 2.464 Kbps, a lo que es lo mismo, 2.64 Mbps. Esta conversión nos es muy útil para comprobar la velocidad real de nuestra línea ADSL, por ejemplo, ya que la velocidad de esta si que se expresa en Kbps o en Mbps.






INTRODUCCION A LENGUAJE JAVA II

GRAMATICA BÁSICA I

1. Comentarios 

En Java hay tres tipos de comentarios:

// comentarios para una sola línea

/* comentarios de una o
más líneas
*/

/**comentario de documentación, de una o más líneas 

*/

Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.

2. Identificadores


Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar.
En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima.



Identificador nombre_usuario 
Nombre_Usuario _variable_de_sistema 
$transaccion


3. Palabras clave & Palabras reservadas

Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como identificadores:

abstract continue for new switch boolean default goto null synchronizedbreak do if package thisbyte double implements private threadsafebyvalue else import protected throwcase extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while

Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son:

cast future generic inneroperator outer rest var


GRAMATICA BÁSICA II


 1.Clases, métodos, atributos y objetos en JAVA

Tipos de clases


Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:
abstract 
Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.

final 

Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.

public 

Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.

synchronizable 

Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
Variables y métodos de instancia

Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.
Por ejemplo, en el siguiente trozo de código podemos observarlo:
public MiClase { int i;
public MiClase() {
i = 10;
}
public void Suma_a_i( int j ) { i = i + j;
}
}
La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ).