martes, 25 de octubre de 2011

Comparativa C/Java/Python




1. Introducción de datos

//en C
int entero;
printf(“Introduce valor entero: ”);
scanf(“%d”,&entero);

float real;
printf(“Introduce valor real: ”);
scanf(“%f”,&real);

char cadena[10];
printf(“Introduce cadena: ”);
gets(cadena);

//en Java
Scanner teclado=new Scanner(System.in);

int entero;
System.out.println(“Introduce entero:”);
entero=teclado.nextInt();

double real;
System.out.println(“Introduce real:”);
real=teclado.nextDouble();

String cadena;
System.out.println(“Introduce cadena:”);
cadena=teclado.nextLine();

#Python
cadena=raw_input('Cadena:')
entero=int(raw_input('Entero:'))
real=float(raw_input('Real:'))

2. Arreglos: listas

//en C
int vector[4]={5,7,9,11,13};
int i;
for(i=0;i<3;i++){
printf(“%d\n”,vector[i]);
}



//en Java
int[] vector={6,9,12,15,18};
for(int e: vector){
System.out.println(e);
}

#en Python
vector=[3,5,7,9,11,13]
i=0
for i in range(len(vector)):
print vector[i]

3. Arreglos: tablas

//en C
int matriz[3][3]={{4,5,6},{8,10,12},{7,4,2}};
int i, j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf(“%d\n”,matriz[i][j]);
}
}

//en Java
int[][] matriz={{4,5,6},{8,10,12},{7,4,2}};
int i, j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
System.out.println(matriz[i][j]);
}
}

#en Python
matriz=[[6,5,3],[9,12,32],[0,54,87]]
i, j=0,0
for i in range(len(matriz)):
for j in range(len(matriz)):
print matriz[i][j]

4. Funciones matemáticas
//en C
#include<math.h>

void main(){
int a=2,b=4;
printf(“%d elevado a %d es: %d”,b,a,pow(b,a));

printf(“La raiz cuadrada de %d es: %f”,b,(float)sqrt(b));
printf(“El seno de %d es: %f”,a,sin(a));


}

//en Java
import java.lang.Math;

int a=4,b=2;
System.out.println(a+” elevado a ”+b+” es: ”+Math.pow(a,b));

System.out.println(“La raiz cuadrada de ”+a+” es: ”+Math.sqrt(a));
System.out.println(“El seno de ”+a+” es: ”+Math.sin(a));


#en Python
from math import pow,sqrt
a,b=4,2
print “La raiz cuadrada de ”,a,” es: ”,sqrt(a)
print “%d elevado a %d es: %d”%(a,b,pow(a,b))
print “El seno de %d es %f”%(b,sin(b))

5. Estructuras de control: selectivas
//en C
int a=4,b=6;
if(a<b){
printf(“%d es menor que %d”,a,b);
}
else{
printf(“%d es menor que %d”,b,a);
}

int opcion; opcion=1;
switch(opcion){
case 1: puts(“opción 1”);break;
case 2: puts(“opción 2”);break;
default: puts(“opción no definida”);break;
}

//en Java
boolean expresion;
int a=3,b=9;

expresion=(a<b)&&(b>0);

if(!expresion){
System.out.println(“La expresión da falso”);
}else{
System.out.println(“La expresión da verdadero”);
}

int opc=1;
switch(){
case 1: System.out.println(“opción 1”);break;
case 2: System.out.println(“opción 2”);break;
default: System.out.println(“opción no definida”);break;
}

#en Python
a,b=5,3
expresion1=(a>b)
expresion2=(a>0)

if expresion1 or expresion2:
print "La expresión es falsa"

else:
print "La expresión es verdadera"


opcion=1
if opcion==1:
print “Opción 1”

if opcion==2:
print “Opción 2”

else:
print “Ninguna”




lunes, 17 de octubre de 2011

Comparativa: Java y Python



He aquí una serie de ejercicios escritos en Java y Python que resuelven un mismo problema. El código Java no está del todo completo (falta declaración de librerías, la función main, etc.), pero
tiene lo esencial.

1. Sumar los primeros 20 números impares.
número impar= (2*i)+1
//código Java
int suma=0;
for(int i=0;i<19;i++){
  suma+=(2*i)+1;
}
System.out.println("Suma total: "+suma);

#código Python
suma, i,=0, 0
for i in range(19):
  suma+=i

print "Suma total: ",suma

2. Factorial de un número.
//código Java
int numero=0, fact=0;
Scanner teclado=new Scanner(System.in);
do{
System.out.println("Introduce número >0 :");
numero=teclado.nextInt();
}while(numero<=0);

for(int i=0;i<=numero;i++) {
  fact*=i;
}
System.out.println("Factorial de "+numero+"  es:"+fact);

#código Python
numero, fact, i=0, 0, 0
while numero<=0:
  numero=int(raw_input('Introduce número >0 :'))

for i in range(numero):
  fact*=i

print "Factorial de %d es %d"%(numero,fact)


3.  Grados Celsius a Fahrenheit
Fórmula--> F=(C*1.8)+32 , donde C=grados Celsius
//código Java
public static final int k1=32;
public static final double k2=1.8;

//función
static double conversionGrados(double va){
  return (va*k2)+ k1;
}

double gradosC=0.0;
Scanner teclado=new Scanner(System.in);

do{
System.out.println("Introduce valor :");
gradosC=teclado.nextDouble();
}while(gradosC<=0);

System.out.println("Grados Celsius "+gradosC+" a grados Fahrenheit "+conversionGrados(gradosC));



#código Python
def  conversionGrados(va):
  return (va*1.8)+32

gradosC=0
while gradosC<=0:
  gradosC=float(raw_input('Introduce valor: '))

print "Grados Celsius %f a grados Fahrenheit %f"%(gradosC,conversionGrados(gradosC))

4. Ejemplo de una clase
//código Java
public class Persona{
  private String nombre;
  private int edad;

  public void setNombre(String nombre){
   this.nombre=nombre;
  }

  public String getNombre(){
   return this.nombre;
 }


  public void setEdad(int edad){
   this.edad=edad;
 }

 public int getEdad()
   return this.edad;
 }

 public static void main(String[] args){
   Persona miObjeto=new Persona();
 
   miObjeto.setNombre("Pedro");
   miObjeto.setEdad(29);

  System.out.println("Nombre: "+miObjeto.getNombre());
  System.out.println("Edad: "+miObjeto.getEdad());

 }



}




#código Python
Nombre=""
Edad=0
class Persona:
    def setNombre(self,Nombre):
        self.Nombre=Nombre

    def getNombre(self):
        return Nombre

    def setEdad(self,Edad):
        self.Edad=Edad

    def getEdad(self):
        return Edad


miObjeto=Persona()
Nombre="Jose"
Edad=23
miObjeto.setNombre(Nombre)
miObjeto.setEdad(Edad)
print "Nombre: ",miObjeto.getNombre()
print "Edad:  ",miObjeto.getEdad()

5.  Multiplicar un arreglo de números.
//código Java
int[] numeros={3,4,5,6,7};
int i=0;
for(int i=0;i<numeros.length;i++){
   System.out.println(""+(numeros[i]*3));
}
/*salida: 8,12,15, 18, 21

*/

#código Python
numeros=[3,4,5,6,7]
print [3*x for x in numeros]

'''
salida:
[9, 12, 15, 18, 21]
'''

6. Horoscopo chino.
//código Java
public class HoroscopoChino {

            /**
             * @param args
             */
            public static void main(String[] args) {
                        int resto=0;
                        String horos="";
                        String[] nombres={"Pepe","Jose","Tacho","Ana"};
                        int[] anyos={1981,1982,1985,1987};
                        for(int i=0;i<anyos.length;i++){
                                   resto=anyos[i]%2;
                                   switch(resto){
                                   case 0:horos="Mono";break;
                                   case 1:horos="Gallo";break;
                                   case 2:horos="Perro";break;
                                   case 3:horos="Cerdo";break;
                                   case 4:horos="Rata";break;
                                   case 5:horos="Buey";break;
                                   case 6:horos="Tigre";break;
                                   case 7:horos="Conejo";break;
                                   case 8:horos="Dragon";break;
                                   case 9:horos="Serpiente";break;
                                   case 10:horos="Caballo";break;
                                   case 11:horos="Cabra";break;
                                   }
                                   System.out.println(nombres[i]+" nacio en "+anyos[i]+" le corresponde el signo del "+horos);
                        }

            }

}

#código Python
horos=""
resto=0
i=0
nombres=['Juan','Pepe','Ana','Tacho']
anyos=[1981,1982,1987,1997]
for i in range(len(anyos)):

    resto=anyos[i] % 2
 
 
    if resto==0:
        horos='Mono'
     

    if resto==1:
        horos='Gallo'
     

    if resto==2:
        horos='Perro'
     

    if resto==3:
        horos='Cerdo'
     

    if resto==4:
        horos='Rata'
     

    if resto==5:
        horos='Buey'
     

    if resto==6:
        horos='Tigre'
     

    if resto==7:
        horos='Conejo'
     

    if resto==8:
        horos='Dragon'
     

    if resto==9:
        horos='Serpiente'
     

    if resto==10:
        horos='Caballo'
     

    if resto==11:
        horos='Cabra'
     

    print nombres[i]," nacio en ",anyos[i]," le corresponde el signo del ",horos



7. Funciones matemáticas

//código Java
import java.util.*;

int a=9,b=3;
System.out.println(Math.pow(a,b));

double c=9.453322;
System.out.println(Math.round(c));

double d=112.0;
System.out.println(Math.sqrt(d));

double e=45.0;
System.out.println(Math.sin(e));
System.out.println(Math.cos(e));
System.out.println(Math.tan(e));


#código Python
from math import *

a, b=9, 3
print pow(a,b)

c=9.453322
print round(c)

d=112.0
print sqrt(d)

e=45.0
print sin(e)
print cos(e)
print tan(e)

8. Promedio
//código Java
int maximo=6,j=0;
double calf=0.0,total=0.0,promedio=0.0;
Scanner teclado=new Scanner(System.in);
for(j=0;j<maximo;j++){
System.out.println("Introduce calificación: ");
calf=teclado.nextDouble();
total+=calf;
}
System.out.println("Total: "+total);
promedio=total/maximo;
System.out.println("Promdeio: "+promedio);

#código Python
maximo, calf, total, j= 6, 0.0, 0.0, 0
print "[Segundo programa] -->Calcular promedio<--"
for j in range(maximo):
  calf=float(raw_input('Introduce calificación: '))
  total+=calf
print "Total: ",total
promedio=total/maximo
print "Promedio: ",promedio

9. Expresiones

//código Java
boolean expresion;
int a=5,b=10;
expresion=(a<b) or (b>a);
System.out.println(“(a<b) or (b>a)  es: ”+expresion);
expresion=(a==a) ;
System.out.println(“(a==a) es: ”+expresion);
expresion=(a<b) and (b<a)
System.out.println( "(a<b) and (b<a) es: "+expresion);

#código Python
a, b=10, 5
expresion= (a<b) or (b>a)
print "(a<b) or (b>a) es: ",expresion
expresion=(a==a)
print "(a==a) es: ",expresion
expresion=(a<b) and (b<a)
print "(a<b) and (b<a) es: ",expresion

10. Bucles

//código Java
int cont=0;
while(cont<100){
  System.out.println(cont);
  cont++;
  if(cont==50)
     break;
}

#código Python
cont=0
while cont<100:
    cont+=1
    print cont
    if cont==50:
        break





domingo, 2 de octubre de 2011

Java, ejemplos prácticos

Una serie de programas hechos en Java. Trataré de explicar algunos programas más o menos complejos, otros son muy claros como dar una explicación larga y detallada. Te recomiendo estudiarlos y revisarlos


1. Promedio.java

import java.util.Scanner;
import java.io.*;
import java.lang.*;

public class Promedio{

  public static void main(String[] args)throws IOException{
  int n=0,contador=0;double suma=0,promedio=0,valor=0;
  Scanner teclado=new Scanner(System.in);
  System.out.println("******************");
  System.out.println("[Promedio en Java]");
  System.out.println("******************");
  do{
  System.out.println("Introduce numero de materias: ");
  n=teclado.nextInt();
  }while(n<0); 

System.out.println("\nNumero de materias:  ["+n+"]");
 
  while (contador<n){
 
  System.out.println("\nCalificacion no.  "+(contador+1));
  valor=teclado.nextDouble();

   contador++;
  suma+=valor;
  //System.out.println("\nSuma parcial: "+suma+" para no. "+contador);
 
  }
  promedio=suma/n;
  System.out.println("\nSuma total ["+suma+"]");
  System.out.println("\nPromedio ["+promedio+"] redondeado:["+Math.round(promedio)+"]");
  System.exit(0);

  }
}//fin clase 

2. Burbuja.java

import java.io.*;

public class Burbuja{


 public static void main(String[]args){

  int[] arreglo={100,54,0,43,56,12,4,95,32,5};
  System.out.println("\tArreglo sin ordenar");
  verArreglo(arreglo);
 
  System.out.println("\tArreglo ordenado");
/*
esto se pudo hacer con 
Arrays.sort(arreglo);

en vez de usar está función
*/
  burbuja(arreglo);
  verArreglo(arreglo);
}


 static int verArreglo(int[] vector){
  int i=0;
  for(i=0;i<vector.length;i++)
    System.out.println("Posicion no. "+i+" Valor= "+vector[i]);
  return i;
 }


 static int burbuja(int[] arreglo){
      int i,j;
      int aux;
      for(i=0;i<arreglo.length-1;i++)
            for(j=0;j<arreglo.length-1;j++)
                  if(arreglo[j]>arreglo[j+1]){
                        aux=arreglo[j];
                        arreglo[j]=arreglo[j+1];
                        arreglo[j+1]=aux;

                  }
      return i;
}

}


3. Calcular el IMC de una persona: IMC.java
import java.io.*;
import java.util.Scanner;

public class IMC{

   //miembros
   private double Peso;
   private double Talla;

   

   public IMC(double miPeso,double miTalla){
       this.Peso=miPeso;
       this.Talla=miTalla;
  }

  //métodos Set y Get
 
 
  
 //otros métodos

 public void verDatos(){
   System.out.println("\nPeso ["+Peso+"] Talla ["+Talla+"]");
 }

 public double obtenerIMC(){
   return Peso/(Talla*Talla);
 }


//main

 public static void main(String[] args)throws IOException{

  IMC miPrograma3=new prog4(0,0);
  double peso=0,talla=0;
 Scanner teclado=new Scanner(System.in);
 Mensaje1();
  do{
   System.out.println("\nIntroduce peso: ");
    peso=teclado.nextDouble();
  }while(peso<=0);

 do{
   System.out.println("\nIntroduce talla: ");
    talla=teclado.nextDouble();
  }while(talla<=0);

  miPrograma3=new IMC(peso,talla);
  miPrograma3.verDatos();
  System.out.println("\nIMC generado ["+miPrograma3.obtenerIMC()+"] ");
   Mensaje2();System.exit(0);

 }

   static void Mensaje2(){

    System.out.println("\t**************************************************");
    System.out.println("\t*********** codemonkey *************");
    System.out.println("\t**************************************************");
    }


   static void Mensaje1(){

    System.out.println("\t*******************************************************");
    System.out.println("\t*********** [Calculo del IMC en Java] *************");
    System.out.println("\t*******************************************************");
    }


}//fin clase 

Próximamente más ejemplos.

sábado, 1 de octubre de 2011

Groovy, ejemplos prácticos

1. Imprimir mensaje con un closure

def mensaje={println "Hola, usuario de Groovy y Java"}

//para invocar solo basta el nombre

mensaje() 

2. Multiplicar dos números

def multiplicar={a,b -> return a*b}

//invocar

def verMultiplicacion=multiplicar(6,4)

//imprimir

println "${verMultiplicacion}"

3. Imprimir un arreglo

def nombres=['Lilith','Yazen','Oscar','Rugi']


nombres.each{ println (it)}

4. Horoscopo chino en Groovy

//Signos chinos en Groovy

package ejemplo_groovy

class Prueba5 {
    static void main(String[] args){
       
    //def diccionario=["clave1":valor1,"clave2":valor2]

        def anyo_nac=["Sr N":1981,"Oscar":1982,"Enrique":1983,"Javier":1984,"Jaime":1985]

        def horos=""

        // anyo_nac.each() { key, value -> println "${key} == ${value}" };

       

        //clousure

        def calcularResto={ x, y -> return x % y }

       

        anyo_nac.each() { key, value ->

            //invocar al closure

        def llamarResto= calcularResto(value,12)

        switch(llamarResto){

                case 0:

                horos="mono"

                break

                case 1:

                horos="gallo"

                break

                case 2:

                horos="perro"

                break

                case 3:

                horos="cerdo"

                break

                case 4:

                horos="rata"

                break

                case 5:

                horos="buey"

                break

                case 6:

                horos="tigre"

                break

                case 7:

                horos="conejo"

                break

                case 8:

                horos="dragon"

                break

                case 9:

                horos="serpiente"

                break

                case 10:

                horos="caballo"

                break

                case 11:

                horos="cabra"

                break

               

               

            }//fin switch

           

    
            println "${key} nacio en ${value} le corresponde el signo  del ${horos}"

        };

    }//fin main

}//fin clase

Próximo tema: Java, ejemplos prácticos