sábado, 29 de marzo de 2014

Comparativa de lenguajes: C# y Java

Esta no es una comparación entre C# y Java para ver cual es el mejor. Solo son ejercicios básicos de programación para entender algunos aspectos de ambos lenguajes.




¿Qué herramientas (IDEs) existen para programar en estos lenguajes?

Para Java:
  • Netbeans
  • Eclipse
  • IntelliJ Idea
  •  JDeveloper
  • entre otros más
Para C#:
  • Visual Studio .NET
  •  Sharpdevelop
  • Monodevelop 
Para programar en C# es preferible usar la plataforma Visual Studio .Net, existe una alternativa "gratuita" para C# llamada Visual C# express para quienes desean aprender el lenguaje.
1. Imprimir un mensaje
//en C#
Console.WriteLine("Esto es un simple mensaje");

//en Java
System.out.println("En java también se puede hacer");

2. using vs import
//en C#
using System;

//en Java
import java.lang.System;

En C# la palabra using  se emplea para importar "namespaces", definir alias y liberar y agregar recursos. En Java la palabra import nos sirve para importar librerías y/o clases.

3. Uso de "foreach"
//en C#
string[] nombres={"Yezmin","Diana","Tomas","Eduardo"};
foreach(string n in nombres){
  Console.WriteLine("hola "+n);
}

//en Java
String[] nombres={"Horacio","Alberto","Miguel","Karla"};
for(String n: nombres){
  System.out.println("hola "+n);
}

4. if-else
//en C#
string str_cadena="Miguel Cardenas";

if(str_cadena == "Miguel Cardenas"){
 Console.WriteLine("Es el mismo nombre");
}else{
  Console.WriteLine("Bienvenido "+str_cadena);
}

//en Java
String str_cadena="Humberto Campos";

if(str_cadena.equals("Humberto Campos")){
  System.out.println("Es el mismo nombre");
}else{
  System.out.println("Bienvenido "+str_cadena);
}

5. Introducir datos desde consola
//en C#
string nombre=null;
Console.WriteLine("Introduce nombre:");
nombre=Console.ReadLine();

//en Java, existen varias alternativas, por ejemplo, usando java.util.Scanner
import java.util.Scanner;

Scanner teclado=new Scanner(System.in);
String nombre=null;
System.out.println("Introduce nombre: ");
nombre=teclado.readLine();

6. Crear una clase
//en C#
class Televisor{
  private string marca;

  public Televisor(){}

  public Televisor(string marca){
          this.marca=marca;
   }

  public string Marca{
       get{ return this.marca; }
       set{  this.marca=value; }
  }

}
 
//en Java
class Televisor{
  private String marca;

  public Televisor(){}

  public Televisor(String marca){
          this.marca=marca;
   }

  public String getMarca(){
         return this.marca;
  }

 public void setMarca(String marca){
        this.marca=marca;
  }

}

Como se puede ver ambos lenguajes se parecen bastante. Ambos lenguajes de programación son orientados a objetos. Permiten crear aplicaciones por consola, aplicaciones gráficas y web.

Links
http://blog.desdelinux.net/mono-para-principiantes-1ra-parte/

sábado, 15 de marzo de 2014

Groovy ... en ejemplos

¿Groovy es Java?
 Si,  así es.

Todo lo que programas en Java se puede hacer en este lenguaje. A mi parecer la desventaja que tiene es que debes ser muy cuidadoso al escribir código. Los errores de tiempo de ejecución son muy comunes en los lenguajes dinámicos, tal vez en la compilación todo parece funcionar correctamente, pero no siempre es así.

¿Cómo creo una clase en Groovy?

class Simple{
  String nombre
}

En Java escribes más código:

public class Simple{
   private String nombre;

   public Simple(){}

  public Simple(String n){ nombre=n; }

  public void setNombre(String n){ nombre=n; }

  public String getNombre(){ return nombre; }
  
}

Comprimir un archivo con la librería Zip4j 

Groovy posee un gestor de dependencias llamado Grape, parecido a Maven, que permite importar librerías sin la necesidad de descargarlas manualmente.


En este ejemplo vamos a crear tres clases:
  • Persona
  • Autor, que heredará atributos de la clase Persona
  • Blog 
Además vamos a importar la librería Zip4j para comprimir archivos en formato *.zip

ejemploGrape.groovy

//usamos la anotación @Grapes y @Grab
@Grapes(
@Grab(
group='net.lingala.zip4j',
module='zip4j',
version='1.3.2'
)
)

//ahora importamos las clases necesarias de la librería zip4j
import net.lingala.zip4j.core.*;
import net.lingala.zip4j.model.*;
import net.lingala.zip4j.util.*;


//el método principal del programa
static main(args) {
   def autor=new Autor(direccion:"Las Lomas no.  232",telefono:"555-211-89",correo_electronico:"horacio@latinmail.com")

   autor.with{
      nombre="Horacio"
      apellidoPaterno="Torres"
      apellidoMaterno="Yung"
     edad=45
}

//instanciamos la clase Blog
   def miBlog =new Blog(titulo:"El viaje de John Smith")
    miBlog.with{autor=autor}

    def salida = new StringWriter()
    def xml = new groovy.xml.MarkupBuilder(salida)

    xml.blogs{
      blog(escritor:autor.nombre,miBlog.titulo)
}

println salida

//creamos el archivo: blog.xml
def archivo=new File("blog.xml")
archivo.write((String)salida)


//si el archivo se creo correctamente se procede a comprimirlo
if(archivo.exists()){
   try {
    ZipFile zipFile = new ZipFile("/home/codemonkey/Documentos/fichero.zip");
    File entradaZip = new File((String)archivo);
   
    ZipParameters parametros = new ZipParameters();
    parametros.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
    parametros.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_ULTRA);
   
     zipFile.addFile(entradaZip, parametros);
 
   println "Listo ... archivo zip creado"
} catch (Exception e) {
       print "parece que hubo un error"+e.getCause()
}
}//fin if
}


class Blog{
    Autor autor
    String titulo
}

class Autor extends Persona{
     String direccion
     String telefono
     String correo_electronico
}

class Persona{
    String nombre
    String apellidoPaterno
    String apellidoMaterno
    int edad
}

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

domingo, 2 de marzo de 2014

Programando en Ruby ... no. 4

Herencia en Ruby

En esta ocasión crearemos una clase base llamada Persona y dos clases hijas:

  • Alumno y
  • Profesor
Empezamos creando la clase Persona, con dos propiedades:
  • nombre y
  • edad

class Persona
  attr_accessor :nombre , :edad


  def initialize(nombre,edad)
    @nombre, @edad=nombre, edad
  end

#setters y getters

#setter
  def nombre=(nombre)
    @nombre=nombre
  end

#getter
  def nombre
    @nombre
  end

#setter
  def edad=(edad)
    @edad=edad
  end

#getter
  def edad
    @edad
  end

end

¿Cómo se puede heredar en Ruby?
Se debe seguir esta síntaxis:
claseBase < claseHija
      ...
      ...
end

Ahora las clases hijas:Alumno y Profesor:

class Alumno < Persona
  attr_accessor  :no_cta

  def initialize(no_cta)
    @no_cta=no_cta
  end

 #setter
  def no_cta=(no_cta)
    @no_cta=no_cta
  end

#getter
  def no_cta
    @no_cta
  end

end

class Profesor < Persona
  attr_accessor :materias

  def initialize(materias)
    @materias=materias
  end

#setter
  def materias=(materias)
    @materias=materias
  end

#getter
  def materias
    @materias
  end

end

#main
begin
  alumno=Alumno.new(2132)
  alumno.nombre=("Andrea Landa")
  alumno.edad=(18)

  profesor=Profesor.new(["matematicas","fisica"])
  profesor.nombre=("Mario Pedrosa")
  profesor.edad=(45)

  puts "Alumno:"
  puts "\tno. cta: #{alumno.no_cta}"
  puts "\tnombre: #{alumno.nombre}"
  puts "\tedad: #{alumno.edad}"

  puts "Profesor:"
  puts "\tmaterias: #{profesor.materias}"
  puts "\tnombre: #{profesor.nombre}"
  puts "\tedad: #{profesor.edad}"

  
rescue Exception => e
  puts "Error: #{e}"
end

Puedes guardar el archivo como diamante.rb



Links
http://www.cristalab.com/blog/por-que-aprender-ruby-on-rails-c109181l/