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





3 comentarios:

  1. class Horoscopo(object):
    def __init__(self, anyo=2011):
    self.anyo = anyo
    self.simbolos = ['Mono', 'Gallo', 'Perro', 'Cerdo', 'Rata', 'Buey', 'Tigre', 'Conejo', 'Dragon', 'Serpiente', 'Caballo', 'Cabra']

    def setAnyo(self, anyo):
    self.anyo=anyo

    def whatAmI(self):
    print "En china serias un", self.simbolos[self.anyo % 2]

    anyos = [1989,2001,1786,1995]
    for a in anyos:
    horoscopo = Horoscopo(a)
    horoscopo.whatAmI()

    ResponderEliminar
  2. mmm, no salió mi comentario completo ni con los tabs correspondientes ¬¬. Bueno, la de arriba es mi reescritura del horoscopo chino.

    ResponderEliminar
  3. Gracias por tu comentario ummestesimon

    :D

    ResponderEliminar