sábado, 1 de octubre de 2011

Presentación Lenguaje OO

Lenguaje Orientado a Objetos (Presentación)

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento.

Lenguaje Elegido

Para instalarlo en ubuntu en terminal es con el siguiente comando:

sudo apt-get install openjdk-6-jdk

Clases
Es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos declarados, en el o en otra clase via herencia, interfaces u objetos.

Atributos
Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno

Métodos
Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno

Los métodos y atributos pueden tener tres tipos de visibilidades (osea forma de accesarlos):
  • public: Indica que serán visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
  • private: Indica que sólo será accesible desde dentro de la clase (sólo los métodos de esa clase lo pueden utilizar).
  • protected: Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (herencia y interfaces).
  • package: No se le declara nada solo si es int, float, etc. Solo pueden acceder a ellas la misma clase o clases que se encuentren declarados en el mismo paquete.
    Herencia:
    La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos.En la orientación a objetos, se consideran dos tipos de herencia, simple y múltiple.
    En Java sólo se dispone de herencia simple, para una mayor sencillez del lenguaje, para poder compensar el no uso cierta manera la inexistencia de herencia múltiple se utiliza un concepto denominado interface.

    public class Padre 
    {
     // Atributos
     private int numeroFavorito, nacidoHace, dineroDisponible;
    
     // Métodos
     public int getApuesta() 
     {
      return numeroFavorito;
     }
    
     protected int getEdad() 
     {
      return nacidoHace;
     }
    
     private int getSaldo() 
     {
      return dineroDisponible;
     }
    
     class Hija extends Padre 
     {
      // Cosas
     }//Fin de la clase Hija
    }//Fin de la Clase Padre
    

    Polimorfismo
    Se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente

    public class Instrumento 
    {
     public void tocar() 
     {
      System.out.println("Instrumento.tocar()");
     }
     public String tipo() 
     {
      return "Instrumento";
     }
    
     class Guitarra extends Instrumento 
     {
      public void tocar() 
      {
       System.out.println("Guitarra.tocar()");
      }
    
      public String tipo()
      { 
       return "Guitarra"; 
      }
     } 
     
     class Piano extends Instrumento
     {
      public void tocar() 
      {
       System.out.println("Piano.tocar()");
      }
    
      public String tipo()
      { 
       return "Piano";
      }
     }
    }//Fin de la Clase
    

    Abstracto
    Un método abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Una clase abstracta es una clase que tiene al menos un método abstracto. Una clase que extiende a una clase abstracta debe implementar los métodos abstractos (escribir el código) o bien volverlos a declarar como abstractos, con lo que ella misma se convierte también en clase abstracta.

    abstract class FiguraGeometrica {
        . . .
        abstract void dibujar();
        . . .
    }
    
    class Circulo extends FiguraGeometrica {
        . . .
        void dibujar() {
            // codigo para dibujar Circulo
            . . .
        }
    }
    


    Interface
    es una colección de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Para llamarla se utiliza el implements.

    interface Nave {
            //public static final int VIDA = 100; por definición todos los atributos de una interface son públicos y estáticos
            // por ese motivo es redundante aunque si se escribe no genera ningún tipo de error
     
            final int VIDA = 100;
     
            public abstract void moverPosicion (int x, int y);
            public abstract void disparar();
            .....
        }
    
        public class NaveJugador implements Nave {
            public void moverPosicion (int x, int y){
                //Implementación del método
            }
     
            public void disparar(){
                //Implementación del método
            }
     
            .....
        }
    

    Diferencia entre Interfaz y una Clase Abstracta
    La clase abstracta puede ser llamada solamente con herencia, por lo tanto solo se puede usar una clase Abstracta; en la Interfaz de utiliza la variable implements por lo tanto se pueden declarar varios implements en una misma clase.

    class MiApplet extends Applet implements Runnable{
    //...
    //define la función run del interface 
     public void run(){
      //...
     }
    //redefine paint de la clase base Applet
     public void paint(Graphics g){
      //...
     }
    //define otras funciones miembro
    }
    
    Bibliografías

    viernes, 16 de septiembre de 2011

    Presentación Lógico

    Explicación Ejemplo

    Esta entrada explicare el ejemplo que elegí; lo explicare de forma razonada por mi y después vía un lenguaje lógico.

    Antes de comenzar escribiré el ejemplo a explicar:

    Viaje de cuatro personas

    Cuatro personas están viajando a diversos lugares en diversos tipos de transporte.

    Los nombres de las personas son: Rachel, John, Mr.Jones and Cindy.

    Cada uno se fue o en tren, en coche, en avión o barco.
    • Mr.Jones odia volar
    • Cindy tiene que alquilar su vehículo
    • John se marea
    Si tienen duda de mi traducción aquí esta la dirección donde esta el ejemplo:


    Con en base en lo anterior se puede deducir lo siguiente:
    • Cindy alquilo un vehículo así que ella se fue en coche.
    • Mr. Jones odia volar así que el no se pudo ir en avión.
    • John se marea, es mas común que alguien se maree en barco y en tren (la gente se asusta en un avión mas no se marea bueno eso es lo mas común) así que el se fue en avión.
    • Rachel no indican que tenga un problema así que se puede ir tanto en barco como en tren.
    Así que quedaría la solución de esta forma:
    • Cindy se fue en coche
    • John se fue en avión
    • Mr Jones tren o en barco
    • Rachel tren o en barco
    Código en Lenguaje Lógico

    El lenguaje lógico elegido fue Prolog ya que aparte no conozco esta clase de lenguajes, encontré mas tutoriales de Prolog.

    Para trabajar en Prolog utilice el gprolog para descargarlo desde la terminal de ubuntu es dar este comando:

    sudo apt-get install gprolog

    Una vez instalado tecleen solamente gprolog en terminal y les aparecerá esto (significa que ya están dentro del gprolog). Si desean salir de gprolog teclea ctrl+c, después teclear el botón e.


    Para correr el código en Prolog es vía el comando siguiente:

    consult('Dirección o solamente indicando el nombre del archivo con su extensión').


    Como notaran en la imagen mi código tiene la extensión .pl que es una de las opciones en que maneja Prolog (algunas otras mas son .pro, .prolog) note que la extensión que utilice también la maneja Perl pero no hay problema.

    A continuación incluiré el código lógico realizado.
    %Ejemplo logico codificado
    %Viaje de cuatro personas
    %Pedro Miguel Martínez Caballero
    
    %Las personas que hay en el ejemplo
    personas(cindy).
    personas(john).
    personas(mr_jones).
    personas(rachel).
    
    %Las formas de transporte disponible
    transporte(tren).
    transporte(avion).
    transporte(coche).
    transporte(barco).
    
    %Si personas es igual a cindy, transporte igual a coche se cumple de condicion
    viaje_coche(cindy, coche):- personas(cindy),transporte(coche).
    
    %Ya que john se marea no puede ser su transporte el tren and el barco
    viaje_avion(john,avion):- personas(john),
    transporte(avion). %;not(transporte(tren)); not(transporte(barco)).
    
    %Se manejo estos dos juntos ya que ellos pueden tomar cualquiera de las dos opciones de transporte restantes
    viajes_tren_barco(mr_jones, tren):- personas(mr_jones),transporte(tren). %;not(transporte(avion)).
    viajes_tren_barco(mr_jones, barco):- personas(mr_jones),transporte(tren). %;not(transporte(avion)).
    viajes_tren_barco(rachel, tren):- personas(rachel),transporte(tren).
    viajes_tren_barco(rachel, barco):- personas(rachel),transporte(barco).
    

    Si desean obtener el código aquí esta un link para descargarlo.

    https://rapidshare.com/files/3797064725/Viajes.pl

    La explicación de como funciona el código lo explicare en el salón ya que si lo hago aquí podría abarcar mucho espacio.

    Agradecimientos especiales a los dueños de estos blogs ya que sin lo que ellos publicaron no me hubieran dado la idea de como realizar mi código:

    sábado, 3 de septiembre de 2011

    Actividad # 3


    Actividad # 3

    En esta entrada incluiré un código en el lenguaje R.

    El lenguaje R y un lenguaje y entorno de programación para análisis estadístico y gráfico.


    Realice el Factorial de un numero en este lenguaje.

    n <- 0
    i <- 0
    valor <- 1

    #Usa despues de teclear el valor presionar shift+enter para terminar la introducción de valores
    n <- scan()

    #Se utiliza el cat ya que en el se puede aplicar el salto de linea y asi se concatena la impresion de variables y texto
    cat("Valor del Factorial de ",n,":\n")

    if(n == 0 || n == 1)
    {
        #Imprime el valor del factorial si la n es igual a 0 o a 1
        print(valor)
    }else
    {
        if(n >= 2)
        {
            while(n >= 1)
            {
                #Se utiliza esta formula para encontrar el factorial
                #factorial(n)
                valor <- (valor * n);
                n <- (n - 1);
            }
            print(valor)
        }else
        {
            cat("Error numero negativo")
        }       
    }

    #Funcion utilizada para encontrar el factorial
    #factorial<-function(i)
    #{
        #valor <- valor * i;
        #return(valor)
    #}


    La forma en la que yo corrí el programa fue estando dentro de la terminal de R y seguí el siguiente comando.

    source("/Direccion/del/Archivo/NombredelArchivo.r")

    Imagen donde se muestra el funcionamiento del código.


    viernes, 26 de agosto de 2011

    Actividad # 2

    Actividad 2

    En esta entrada hay que realizar un código productivo (o sea algo bien elaborado no que la serie de fibonacci, etc.) en un lenguaje scrip de nuestra propia elección.

    A continuación seguirá el código que utilice (Realice un graficador de ecuaciones de 2do Grado dándole los valores de a, b, c y valores de min y max de x para acomodarlo); el código esta partido en varios archivos ya que es un script es mas recomendable partir el código en varias partes.

    Para realizarlo utilice Perl, gnuplot, bash.

    Originalmente tenia otras 2 opciones mas: JavaScript (Ya no lo quise usar porque me harto cuando tenia errores) y Python (Porque solo lo pensé pero no intente nada en el).

    Perl.


    Perl en ubuntu ya viene instalado.
    my $a = 0, $b = 0, $c = 0, $min = 0, $max = 0;
    
    $a = $ARGV[0];
    $b = $ARGV[1];
    $c = $ARGV[2];
    $min = $ARGV[3];
    $max = $ARGV[4];
    
    print "# y = $a**2 x + $b x + $c\n";
    
    #Crea los valores de y en base a los valores de a, b y c dados                  
    for($i = $min; $i <= $max; $i++)
    {
        $y = (($a)*($i**2)) + ($b*$i) + ($c);
        print "$i\t$y\n";
    }
    
    Gnuplot es un programa utilizado para graficacion de funciones.Para instalarlo en ubuntu es via este comando:

    sudo apt-get install gnuplot
    Codigo de Gnuplot

    set term png
    set ylabel 'y'
    set xlabel 'x'
    set output 'HolaMundo.png'
    set key off
    //utiliza el archivo ejecutable para la graficación con ancho de linea 3 y tipo de punto 4
    plot 'salida.out' using 1:2 with linespoints lw 3 pt 4

    Bash es un programa cuya función consiste en interpretar ordenes (Viene instalado en ubuntu).
    #!/bin/bash                                                                     
    #Envia los valores de a,b,c,min y max y Compila el archivo Perl y lo convierte \
    en un ejecutable (En el ejecutable van los valores de x y y)                    
    perl HolaMundo.pl $1 $2 $3 $4 $5 > salida.out
    #Compila el archivo .plot                                                       
    gnuplot HolaMundo.plot
    #Ejecuta la imagen en el visor de imagenes de ubuntu                            
    eog HolaMundo.png

    Imagenes de la Terminal

    Corro el bash y le doy los valores de a,b,c y de min y max

    viernes, 19 de agosto de 2011

    Actividad 1

     Actividad # 1

    Esta entrada consiste en realizar un mapa conceptual de lo que es para nosotros la "Programación".