sábado, 30 de agosto de 2014

Groovy ... en ejemplos no. 4

Herencia
Al definir clases esperamos que estas cumplan todos los  requisitos necesarios, ni más ni menos. Si creamos una clase llamada Imagen, esta debe tener atributos que la identifiquen: nombre, tamaño, y url.

class Imagen{
     String nombre
     String tamanyo
     String url
}

Ahora una clase llamada TestImage con método main.

class TestImage{
     static main(args){
      def imagen=new Imagen(nombre:"Groovy.jpg",tamanyo:"45kb",url:"http://misimagenes.com.mx")  
   }

  //también podría haber sido así
  def imagen=new Imagen()
   imagen.with{
nombre="Groovy.jpg" 
tamanyo="45kb" 
url="http://misimagenes.com.mx"
   }

}

Al parecer no existe problema alguno, esta clase cumple su objetivo. Ahora ¿qué pasaría si necesitaramos agregarle alguna 'funcionalidad' extra? para ello usaremos la herencia.

Vamos a crear:
  • Una clase base (o padre) llamada Heroe
  • Dos clases hijas llamadas Superman y Batman 
  • Dos interfaces llamadas Superpoderes y Habilidades
  • Una clase llamada TestHeroe

//clase base
class Heroe{}
//clase hija hereda de clase padre
class SuperHeroe extends Heroe{}

//hace uso de los métodos de la interface Superpoderes
class Superman extends SuperHeroe implements Superpoderes{
    @Override
    public void vuelo(){
        println "Superman vuela"
    }

    @Override
    public void velocidad(){
        println "Superman corre a gran velocidad"
    }

    @Override
    public void fuerza(){
        println "Superman posee gran fuerza"
    }
}


//hace uso de la interface Habilidades
class Batman extends SuperHeroe implements Habilidades{
    @Override
    public void karate(){
        println "Batman sabe karate"
    }
}


interface Superpoderes{
    public abstract void vuelo()
    public abstract void velocidad()
    public abstract void fuerza()
}

interface Habilidades{
    public abstract void karate()
}


class TestHeroe{
    static main(args) {
        Superman superman=new Superman()
        Batman batman=new Batman()

        superman.vuelo()
        superman.velocidad()
        superman.fuerza()

        batman.karate()
    }
}


Salida:
Superman vuela
Superman corre a gran velocidad
Superman posee gran fuerza
Batman sabe karate

 

Ejecutamos: groovy TestHeroe.groovy

Código:http://www.pasteall.org/53722/groovy

sábado, 23 de agosto de 2014

Julia en ejemplos no. 1

¿Qué es Julia?
Se trata de un lenguaje de programación parecido a R, diseñado para fines científicos (matemáticas, estadística,etc.).  Descarga: Julia Lang

Posee un REPL, basta teclear julia en la terminal y aparecerá.

Julia en ejemplos

Guardar un archivo con la extensión *.jl llamado ejemplos.jl

0.Ejecutar código
julia ejemplos.jl  

1. Imprimir un mensaje
print("La programación parece ser muy sencilla...")

2. Definir variables y constantes
variable_entera=36
const CONSTANTE=200
variable_cadena="La generación de los 80's era la que tenia la mejor música"

3.  Iniciar instrucciones
begin
   #instrucciones del programa
end

4. Definir una función
#esta no devuelve nada
function  imprimirMensaje(){
   print("Julia es un lenguaje similar a R")
}

function doble(n){
  return n*n
}

5. Definir y recorrer un vector
vect=[] #vector vacío
vect=[32,54,10,45] #posiciones 1: 32, 2:54, 3:10, 4:45

for v in vector
    println(v)
end

6. Condiciones
vect=["Juan","Paco","Maria","Ernesto","Rosa"]

#imprimira Paco
for v in vector
   if v == "Paco"
     println(v)
   end
end

7. Ejecutar un comando del sistema run(comando)
#en este caso un comando de Linux
run(`clear`) #limpiar pantalla

8. Try-Catch
try 
   funcion_noexistente()
catch e
   println("el error es: ",e)
end

9.  Introducir datos
 function entrada(prompt::String="")
    print(prompt)
    chomp(readline())
  end

begin
  run(`clear`)
  nombre=entrada("¿Como te llamas?:")
  edad=int(entrada("¿Cuantos años tienes?:"))
  println("Hola ",nombre," tienes ",edad, " años")
  print("tipos: nombre[",typeof(nombre),"] - edad[",typeof(edad),"]")
end


domingo, 10 de agosto de 2014

Scala ... ejemplos sencillos no. 6

Tipado dinámico de Scala
Scala es un lenguaje que combina la programación orientada a objetos y la funcional,además es de tipado estático, esto quiere decir que se debe tener cuidado a la hora de definir variables (su tipo).

Si defines una variable es necesario hacer uso de var y val.

var nombre:String="Alfonso"
val nombre_estatico:String="Mariana"

Si tratamos de reasignar valores obtendremos:

nombre="Alfonso Quaron" //es válido,por que usamos var
nombre_estatico="Mariana Alcantara" //no es válido, usamos val

Ahora creamos dos clases:
  • Base
  • Subclase

class Base(val nombre:String=null){}

class SubClase(override val nombre:String=null) extends Base(nombre){}

object Scalar{
    def main(args:Array[String]):Unit={
       val base=new Base() //se puede tomar como null
       val sub=new SubClase()
       //si trato de de reasignarl valor al miembro nombre ocurrirá un error
       base.nombre="Base"
      sub.nombre="SubClase"
   }


Entonces lo correcto sería:

val base=new Base("Base")
 val sub=new SubClase("SubClase")

Console.println(base.nombre)
Console.println(sub.nombre)

Resultado:
Base
SubClase

Lenguajes como Python Ruby Groovy permiten reasignar valores a las variables.

En Python:
dato="Las serpientes se arrastran por el piso"
print type(dato)

#ahora cambiamos su 'tipo' y valor
dato=12.90
print type(dato)

En Ruby:
dato="Un diamante en bruto"
print dato.class

#ahora cambiamos su 'tipo' y valor
dato=23.0
print dato.class

 En Groovy:
dato="Es un ambiente muy Groovy"
dato instanceof String  //nos da true

dato=123
dato instanceof Integer //nos da true

En conclusión tenemos:

Tipado dinámico
  • Se permite reasignar valores
  • El tipo de dato no es fijo 

Tipado estático
  • No se permite reasignar valores
  • El tipo de dato no debe cambiar

domingo, 3 de agosto de 2014

Programando en Perl ... no. 6

Ejercicios básicos
 La única forma para aprender programación es la practica continua. En esta ocasión se usará Perl para realizar estos ejercicios.

1.  Hacer un programa que determine si un número es par o impar. Un número par es un entero que puede ser dividido entre dos y su residuo nos da cero.

#ejecutar: perl   par.pl
use strict;
use warnings;

#declaramos la variable numero
my ($numero);

print "Introduce un número:";
$numero=<STDIN>;
chomp($numero);#quitamos los espacios
if($numero%2==0){
   print "El número ",$numero," es par\n";
}else{
   print "El número ",$numero," es impar\n";
}

2. Hacer un programa que determine si un número (A) es múltiplo de otro número (B). 

#ejecutar: perl multiplo.pl
use strict;
use warnings;

#declaramos los dos números
my ($a,$b);

print "Introduce número (A): ";
$a=<STDIN>;
chomp($a);

print "Introduce número (B):";
$b=<STDIN>;
chomp($b);

#determinamos si son o no múltiplos
if($a>$b){
  if($a%b==0){
      print "(A) ",$a," es multiplo de (B) ",$b,"\n";
  }else{
     print "(A) ",$b," no es multiplo de (B) ",$b, "\n";
   }
}else{
 if($b%$a==0){
    print "(A) ",$a," es multiplo de (B) ",$b,"\n";
  }else{
   print "(A) ",$a,"  no es multiplo de (B) ",$b,"\n";
  }
}

3.Hacer un programa que determine el mayor, el mediano y el menor de tres números.

#ejecutar: perl determinar.pl
use warnings;
use strict;

#creamos una constante 'booleana'
use constant VERDADERO => 1;

my($a,$b,$c,$continuar);

do{
    print "\n[Número mayor, mediano y menor de tres números]\n";

print "Introduce número (A):";
$a=<STDIN>;
chomp($a);
print "Introduce número (B):";
$b=<STDIN>;
chomp($b);
print "Introduce número (C):";
$c=<STDIN>;
chomp($c);

if($a>$b && $a>$c){
    print "el numero  A ",$a," es el mayor\n";
    if($b>$c){
        print "el numero  B ",$b," es el mediano\n";
        print "el numero  C ",$c," es el menor\n";
    }else{
        print "el numero  C ",$c," es el mediano\n";
        print "el numero  B ",$b," es el menor\n";
    }
}else{
    if($b>$a && $b>$c){
        print "el numero  B ",$b," es el mayor\n";
        if($a>$c){
            print "el numero  A ",$a," es el mediano\n";
            print "el numero  C ",$c," es el menor\n";
        }else{
            print "el numero  C ",$c," es el mediano\n";
            print "el numero  A ",$a," es el mediano\n";
        }

    }else{
        print "el numero  C ",$c," es el mayor\n";
        if($a>$b){
            print "el numero  A ",$a," es el mediano\n";
            print "el numero  B ",$b," es el menor\n";
        }else{
            print "el numero  B ",$b," es el mediano\n";
            print "el numero  A ",$a," es el menor\n";
        }
    }

}#fin else

print "Desea continuar? (Si->s , No->n):";
$continuar=<STDIN>;
chomp($continuar);
if($continuar eq 'n'){
 last;#alternativa a 'break'   
}
 

}while(VERDADERO);


4. Hacer un programa que determine el mayor de cinco números. En vez de definir cinco variables, definimos un vector de cinco elementos.

#ejecutar: perl mayor.pl
use strict;
use warnings;

use constant MAX => 5;

#definimos las variables necesarias
my(@numeros,$mayor,$tam);

#introducimos cinco números
for (my $i = 0; $i < MAX; $i++) {
    print "Introduce número[ ",($i+1),"]:";
    $numeros[$i]=<STDIN>;
    chomp($numeros[$i]);
}
$tam = scalar (@numeros);#obtenemos tamaño del vector
$mayor=0;
#determinamos el número mayor
for (my $j = 0; $j < $tam; $j++) {
    if($mayor<$numeros[$j]){
        $mayor=$numeros[$j];
    }
}
print "El número ",$mayor," es el mayor\n";



Eso es todo por hoy.