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 y  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. 

miércoles, 30 de julio de 2014

Programando en C++ ... no. 4

"Siempre programo como si la persona que mantendrá mi código fuera un psicópata que sabe donde vivo."  
::Martin Golding::

 Ejercicios de programación
 1. En este ejemplo vamos a crear y usar un archivo de cabecera (se guardan con la extensión *.h). Ahí escribiremos las variables, constantes y funciones.
//archivo: funciones.h

#ifndef __CABECERA_H
#define __CABECERA_H

#define MAX 3   //podemos crear una variable constante con valor de 3
#define PULSACIONES (e) (220-e)/15  //una función para calcular las pulsaciones de una persona 
using std::cout;
using std::endl;

//también podemos escribir funciones de manea tradicional
void mensaje(){
    cout<<"Este es un simple mensaje"<<endl;
}

#endif /*__CABECERA_H*/

¿Cómo se puede usar?
Creamos un archivo llamado prueba.cpp y declaramos el archivo de cabecera funciones.h.
//archivo:prueba.cpp
#include "funciones.h"
#include "iostream"

using namespace std;

int main(){
    int numeros[MAX];
    numeros[0]=9;
    numeros[1]=21;
    numeros[2]=54; //al tratar de recorrer el vector provoca un bug
    mensaje(); 
   //obtener pulsaciones de una persona de 43 años de edad
    cout<<"Pulsaciones: "<<PULSACIONES(43)<<endl;
   return 0;
}
 
2. Al programar en C++ tenemos la ventaja de la programación funcional y la orientada a objetos, en este ejemplo escribiremos:
  •  Un archivo (funcional.cpp) que usa funciones para obtener el perímetro y área de un circulo
  • Un archivo de cabecera que contendrá las funciones: perimetro() y area()
  • Otro archivo (objeto.cpp) que instancia una clase que posee los métodos para obtener lo mismo
//archivo de cabecera: funciones.h
#ifndef __CABECERA_H
#define __CABECERA_H
#define PI 3.14159

double perimetro(double d){
    return PI*d;
}

double area(double r){
    return PI*(r*r);
}


#endif /*__CABECERA_H*/

//funcional.cpp
#include "iostream"
#include "funciones.h"

using namespace std;
 
int main(){
   double radio=0.0,diametro=0.0;
    cout<<"Introduce radio: ";
    cin>>radio;
    cout<<"Introduce diametro: ";
    cin>>diametro;
    cout<<"diametro: "<<perimetro(diametro)<<" , area: "<<area(radio)<<endl;
  return 0;
}

//objeto.cpp
#include "iostream"

using namespace std;


class Circulo{
private:
    double radio;
    double diametro;
public:
    static const double PI=3.1459;
    Circulo(){cout<<"objeto circulo creado"<<endl;}
    virtual ~Circulo(){cout<<"objeto circulo destruido"<<endl;}
    void setRadio(double r){this->radio=r;}
    double getRadio(){return this->radio;}
    void setDiametro(double d){this->diametro=d;}
    double getDiametro(){return this->diametro;}
    double calc_diametro(){return this->diametro*PI;}
    double calc_area(){return PI*(this->radio*this->radio);}
};


int main(){
    Circulo circulo=Circulo();
    double radio=0.0,diametro=0.0;
    cout<<"Introduce radio: "<<endl;
    cin>>radio;
    cout<<"Introduce diametro: "<<endl;
    cin>>diametro;
    circulo.setRadio(radio);
    circulo.setDiametro(diametro);
    cout<<"diametro: "<<circulo.calc_diametro()<<" , area: "<<circulo.calc_area()<<endl;
    return 0;
}


Esto esto por hoy.

Links
http://foro.elhacker.net/programacion_c/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html


miércoles, 23 de julio de 2014

Groovy ... en ejemplos no. 3

Vamos hacer un sencillo ejemplo, consiste en simular el lanzamiento de 3 monedas, con dos caras: ÁGUILA y SOL.

Tres jóvenes lanzan (cada uno) una moneda, si todas son iguales nadie ganará. El ganador es quien tenga la moneda que cae con un resultado distinto a las otras dos.

Ejemplo.
          Juan   |     Miguel     |      Omar       |  Ganador
ÁGUILA           SOL            ÁGUILA            Miguel

Juan   |     Miguel     |      Omar       |  Ganador
                                       SOL           SOL            SOL           Nadie gana, las monedas son iguales

Una vez entendido el problema se procede a definir las variables y funciones.

Necesito definir a la moneda con dos caras:
def moneda=["SOL","AGUILA"]# índice 0 :SOL  , índice 1: AGUILA

También necesito una forma de generar un resultado aleatorio (SOL o ÁGUILA), para ello nenecitola clase Random  de Java
import java.util.Random

También necesito tres variables para guardar los resultados:
def juan=""
def miguel=""
def omar=""

¿Cómo genero al guardo el  resultado ?
def juan=moneda[new Random()nextInt(2)] //para que sea de 0 a 1

Finalmente tenemos:  aleatorio.groovy

import java.util.Random
//para limpiar pantalla, solo plataformas Linux
println "clear".execute().text

def moneda=["SOL","AGUILA"]
def juan=""
def miguel=""
def omar=""

println "Turno de Juan"

juan=moneda[new Random().nextInt(2)]
println "$juan"

println "Turno de Miguel:"
miguel=moneda[new Random().nextInt(2)]
println "$miguel"

println "Turno de Omar:"

omar=moneda[new Random().nextInt(2)]
println "$omar"

def ganador=""

if(juan.equals(miguel) && juan.equals(omar)){
    ganador="Las tres monedas son iguales, No hay ganador"
}else if(!juan.equals(miguel) && !juan.equals(omar)){
    ganador="El ganador es Juan"
}else if(!miguel.equals(omar) && !miguel.equals(juab)){
    ganador="El ganador es Miguel"
}else{
    ganador="El ganador es Omar"
}

println "$ganador"


Listo.

domingo, 20 de julio de 2014

Programando en Ceylon ... no. 3

Existe una herramienta para aprender a programar llamada PSeInt, en esta ocasión vamos a realizar ejemplos de programación básica y comparando esos códigos en Ceylon.

 
1. Se requiere obtener la talla de una persona sabiendo que su peso es de 54.5 kg y su índice de masa corporal es de 22.1.

Fórmulas:
imc=peso/(talla*talla)
peso=(talla*talla)*imc
talla=sqrt(peso/imc)

 Usando PSeInt escribimos:

 Y obtenemos:

Ahora en Ceylon: 
obtenerTalla.ceylon

void run(){
variable Float peso=54.5;
variable Float talla=0.0;
variable Float imc=22.1;

function sqrt(Float x) => x^0.5; //para obtener la raíz

talla=sqrt(peso/imc);
print("talla: ``talla`` ");
}

Compilamos y ejecutamos:

2. Obtener un bono de ventas, teniendo en cuenta que el objetivo (de ventas) debe ser igual o mayor a 300.
Obtenemos:

En Ceylon:

obtenerBono.ceylon

void run(){
  variable Integer ventas=320;
  variable Integer objetivo=300;
  variable String mensaje="";
  variable Float bono=0.0;

  if(ventas>=objetivo){
    bono=0.045*(ventas-objetivo);
    mensaje="Exito";
  }else{
    bono=0.0;
    mensaje="Fracaso";
  }

  print(" ``mensaje``  , bono obtenido: ``bono`` ");

}

Compilamos y ejecutamos:


3.  Un menú para elegir una película. Si es mayor de edad permitirá mostrar el menú.
Código:

Proceso obtener_opcion
    Definir opc Como Entero;
    Definir edad Como Entero;
    Definir permiso Como Logico;
    Definir aviso Como Caracter;
    aviso="";
   
    Escribir "¿Cuantos años tienes?";
    Leer edad;
   
    Si edad>=18 Entonces
        permiso=Verdadero;
    Sino
        permiso=Falso;
    Fin Si
   
    Si permiso Entonces
        Escribir "Cartelera Cine de Terror";
        Escribir "1. Masacre en Texas";
        Escribir "2. La isla de la bruja";
        Escribir "3. El misterio del valle de las sombras";
        Escribir "Elije una: ";
        Leer opc;
       
        Segun opc Hacer
            1:
                aviso="Debes traer ropa interior de sobra ... no es broma";
            2:
                aviso="Aceptable, si no quieres dormir varios días";
            3:
                aviso="Una opción bastante recomendable... para ir al psiquiatra";
            De Otro Modo:
                aviso="Esa opcion es invalida";
            Fin Segun
   
    FinSi
    Escribir aviso;
   
   
FinProceso


Obtenemos:


En Ceylon:
obtenerOpcion.ceylon

void run(){
  variable String aviso="";
  variable Boolean permiso=false;

  print("Cuantos años tienes?");
  String edadStr=process.readLine();
  Integer? _edad=parseInteger(edadStr);
 
  if(exists _edad){
    Integer edad=_edad;
    if(edad>=18){
      permiso=true;
    }else{
      permiso=false;
    }
  }
 
  if(permiso){
    print("Cartelera Cine de Terror");
    print("1. Masacre en Texas");
    print("2. La isla de la bruja");
    print("3. El misterio del valle de las sombras");
    print("Elije una: ");
    String opcStr=process.readLine();
    Integer? _opc=parseInteger(opcStr);

    if(exists _opc){
    Integer opcion=_opc;
    switch(opcion)
    case (1){aviso="Debes traer ropa interior de sobra ... no es broma";}
    case (2){aviso="Aceptable, si no quieres dormir varios días";}
    case (3){aviso="Una opción bastante recomendable... para ir al psiquiatra";}
    else{aviso="Esa opcion es invalida";}
    }


  }
  print("``aviso``");
 
 }


Compilamos y ejecutamos:

Espero les sirva.

sábado, 19 de julio de 2014

Un vistazo a ... Julia

En está ocasión vamos hacer algunos ejemplos con Julia un lenguaje que a primera vista parece tomar inspiración de Python.

Instalación:

# Descargamos la última versión https://julialang.org/downloads/
# Desempaquetamos
tar -xvzf julia-1.8.2-linux-x86_64.tar.gz
# Movemos a la carpeta /opt
sudo mv julia-1.8.2/ /opt/
# Creamos un enlace
sudo ln -s /opt/julia-1.8.2/bin/julia /usr/local/bin/julia
# Verificamos la instalación
julia



¿Cómo guardo un programa en Julia?
Con la extensión *.jl

¿Cómo ejecutó el programa?
julia miPrograma.jl

Este lenguaje posee un REPL.

Teclea una operación, por ejemplo una suma.



1. Mostrar una cadena
#esto es un comentario
cadena="Hola esta es una simple cadena"
println("contenido de la cadena: ",cadena)



2. Comparar dos cadenas
cadena="cL4v3S3cR3t4"

if cadena == "claveSecreta"
   println("Correcto");
else
   println
("Verifica");

end


3. Aqui obtenemos el consumo de combustible, teniendo en cuenta que la velocidad es de 120

begin
velocidad=120
consumo=0.0

if velocidad>80
  consumo=10.0;
elseif velocidad>100
  consumo=12.0;
elseif velocidad>120
  consumo=15.0;
else
  consumo=0.0;
end

println("consumo: ",float(consumo),"\n");

end


4. Obtener salario bruto y neto (hacemos uso del manejo de excepciones con try-catch)
#variables de entrada
horas=240
extras=0
tasa=0.34
#lo que queremos obtener
salarioBruto=0.0
salarioNeto=0.0

try
 
  if horas<=38
    extras=0
  else
    extras=horas-38
    horas=38
  end

  salarioBruto=horas*tasa+extras*tasa*1.5
  if salarioBruto<=300
    salarioNeto=salarioBruto
  else
    salarioNeto=salarioBruto*0.9
  end

  if salarioBruto == salarioNeto
    println("salario bruto y neto: ",salarioBruto)
  else
    println("salario bruto: ",salarioBruto)
    println("salario neto: ",salarioNeto)
  end

catch e
 println("error: ",e)
end


El lenguaje de programación C

El mítico lenguaje de programación C sigue siendo el lenguaje que definió todo. Y con todo nos referimos a todo lo referente a la inf...

Etiquetas

Archivo del blog