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/


sábado, 22 de febrero de 2014

Programando en Ruby ... no. 3

¿Existe alguna forma para programar aplicaciones gáficas en Ruby?
Si, hay varias alternativas como http://visualruby.net/

¿Cómo instalarlo (en Linux)?
sudo apt-get install -y glade-gtk2 libgtksourceview2.0-dev gtk2-engines-pixbuf
sudo apt-get install ruby1.9.3-dev
sudo apt-get install ruby-dev
sudo gem install visualruby
#para ejecutarlo desde terminal escribimos:
vr

También existe para sistemas Windows.

Otras alternativas son:


Algunos ejercicios de programación básica en Ruby.


1. Sumatoria del 1 al 10
lista=[1,2,3,4,5,6,7,8,9,10]
suma=0

#con each
lista.each do |l|
  suma=suma+l.to_i
end

puts "Suma (each): #{suma}"

#con while
suma=0
cont=0
tam=lista.size
while cont<tam do
  suma=suma+lista[cont]
  cont=cont+1
end
puts "Suma (while): #{suma}"

#con until
i=0
num=lista.size
suma=0
until i>num
  suma=suma+i
  i+=1
end
puts "Suma (until): #{suma}"

#con for
suma=0
for l3 in lista
  suma=suma+l3.to_i
end
puts "Suma (for): #{suma}"

 2. Algunas formas para ejecutar comandos
#comando ls ,en Linux, para mostar el contenido de un directorio
comando='ls -ltr'
puts `#{comando}`
p "---------------------------------------------"
puts %x{ls -ltr}
p "---------------------------------------------"
puts `ls -ltr`
p "---------------------------------------------"

# comando date, para mostrar fecha del sistema
mi_comando= %x[date]
p mi_comando
puts mi_comando.class
p "---------------------------------------------"
# comando cal, para mostrar calemdario
otro_comando= system "cal"
p otro_comando #true
puts otro_comando.class#TrueClass

3. Clase en Ruby
class No_Terrestre

  def initialize(nombre)
    @nombre=nombre
  end

  attr_accessor :nombre

end

begin
  roger=No_Terrestre.new('Roger')
  puts "nombre: #{roger.nombre}"
  roger.nombre="Jonh Stwart"
  puts "ahora su nombre es: #{roger.nombre}"

  puts "nombre de la clase a la que pertenece: "
  puts roger.class
 

rescue Exception => e
  puts "Ha ocurrido un error"
end

Links

viernes, 14 de febrero de 2014

Python: Uso de PyZenity

¿Qué es PyZenity?
Es una librería creada por Brian Ramos que nos permite hacer uso de cuadros de diálogo Zenity.

¿Cómo puedo usar PyZenity?

  1. Descargar la última versión http://brianramos.com/software/PyZenity/PyZenity-0.1.7.tar.gz
  2. Desempaquetar
  3. Ir a la carpeta PyZenity
  4. Desde terminal teclear (como root): python setup.py install
  5. Entra al repl de Python tecleando: python 


Tendremos instalado PyZenity.


1. Una calculadora básica (solo funciona en sistemas Linux)

from PyZenity import InfoMessage
from PyZenity import Question
from PyZenity import ErrorMessage
from PyZenity import GetText
import os

x1, x2,res=0.0, 0.0, 0.0

def main():
os.system('clear')

menu='\t[ Menu ]\n1. Suma\n2. Resta\n3. Producto\n4. Division\n5. Salir'
opcion=GetText(text=menu, entry_text='', password=False)


if opcion == "1":
  cad="Suma"
elif opcion == "2":
cad="Resta"
elif opcion == "3":
cad="Producto"
elif opcion == "4":
cad="Division"
elif opcion == "5":
cad="Salir"
else:
cad="opcion invalida"


if cad == "opcion invalida":
ErrorMessage('Error, '+cad)
else:
InfoMessage('Introduciste: '+cad)

if cad=="Suma":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1+x2
InfoMessage('La suma obtenida es: '+str(res))
elif cad=="Resta":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1-x2
InfoMessage('La resta obtenida es: '+str(res))
elif cad=="Producto":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1*x2
InfoMessage('El producto obtenido es: '+str(res))
elif cad=="Division":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1/x2
InfoMessage('La division obtenida es: '+str(res))
else:
ErrorMessage('Error, '+cad)



if __name__ == '__main__':
main()










2. Crear una tabla
from PyZenity import InfoMessage
from PyZenity import List
from PyZenity import ErrorMessage
from PyZenity import GetText
import os
import sys
 
 
so,comando='',''
continuar=''
 
def lista():
return List(["Escoge","Autor","Lenguaje"], title="Selecciona un lenguaje", boolstyle="radiolist", editable=False, select_col="ALL", sep='|', data=[["","Guido","Python"],["","Gosling","Java"]])
    
def activa(c):
os.system(c)
#print lista()
res=lista()
print "Elegiste: "
print "Autor: ",res[0],", lenguaje: ",res[1]
 
continuar=GetText(text='Deseas continuar? [Si-> S,s , No-> N,n] ', entry_text='', password=False)
 
if continuar == "S" or continuar == "s":
main()
elif continuar == "N" or continuar == "n":
exit()
else:
exit()
 
 
 
def main():
so=sys.platform
if so=="linux2" or so=="darwin":
comando='clear'
else:
comando='cls'
 
activa(comando)
 
 
if __name__ == '__main__':
main()








Links
http://brianramos.com/?page_id=38
http://es.wikipedia.org/wiki/Zenity

domingo, 2 de febrero de 2014

Linux Bash ... no. 2

Zenity
Es una aplicación que nos permite usar componentes gráficos Gtk. Para instalarlo: sudo apt-get install zenity

¿Qué es Gtk?
Es un conjunto de librerías que nos sirve para desarrollar aplicaciones gráficas muy al estilo de Java Swing.

1. Introducir una cadena y mostrar el contenido (entrada.sh)
clear
NOMBRE=$(zenity --entry --text "Introduce tu nombre: ")
echo "Hola $NOMBRE"
zenity --info --text "Hola $NOMBRE"



Lo puedes ejecutar (debes darle permiso de ejecución) con: sh entrada.sh y/o  ./entrada.sh

2. Cajas de dialogo (elegir.sh)
clear
zenity --question --title="Se ha encontrado un error" --text "Seguro quiere reiniciar?"

RES=$?

if [ $RES -eq 0 ]; then
zenity --info --text "Elegiste reiniciar"
elif [ $RES -eq 1 ]; then
zenity --info --text "Elegiste NO reiniciar"
fi


Ejecutar: sh elegir y/o ./elegir.sh

Links:
http://blog.desdelinux.net/usos-practicos-de-la-caja-de-dialog-zenity/
http://bitelia.com/2010/04/comando-linux-zenity-ventanas-de-dialogo-gtk
http://es.wikipedia.org/wiki/GTK%2B
http://www.yolinux.com/TUTORIALS/GTK+ProgrammingTips.html

Groovy: comparativa con otros lenguajes ... no.2

En este post vamos a realizar un ejercicio muy sencillo de programación básica.

Un convertidor de dólares a pesos.

Iniciamos con Groovy:

static main(args){

//definimos la constante "CAMBIO"
def CAMBIO=13.3481
def dolar=System.console().readLine 'Introduce dolar:'
println "valor (usd): $dolar"
dolar=Double.parseDouble(dolar)
println "cambio (mxn): ${dolar*CAMBIO}"
}

En Python:
global CAMBIO
CAMBIO=13.3481
dolar=0.0
dolar=float(raw_input('Introduce dolares: '))
print "valor (usd): $",dolar
print "cambio (mxn): %f"%(dolar*CAMBIO)

En Ruby:
CAMBIO=13.3481
dolar=0.00
puts "Introduce dolares: "
STDOUT.flush
dolar=gets.chomp
dolar=dolar.to_f
puts "valor introducido (usd):$ #{dolar}"
puts "cambio (mxn): $ #{dolar*CAMBIO}"

En Perl:
use strict;
use warnings;
use constant CAMBIO => 13.3481;

my($dolar,$resultado);

print "Introduce dolares: \n";
$dolar=<STDIN>;
chomp($dolar);
print "valor (usd): $dolar\n";
$resultado=$dolar*CAMBIO;
print "cambio (mxn): $resultado\n";

En Scala:
object Scalar extends App{
val CAMBIO=13.3481
Console.println("Introduce dolares:")
var dolar:Double=readDouble
Console.println("valor (usd): "+dolar)

def resultado={
dolar*CAMBIO
}
Console.println("cambio (mxn):"+resultado)

}
En Bash:
clear
CAMBIO=13.3481
echo "Introduce dolares: "
read DOLAR
echo "valor (usd): $DOLAR"
RESULTADO=`echo "$DOLAR * $CAMBIO" | bc -l`
echo "cambio (mxn): $RESULTADO"


Programando en C# no. 15: ASP .NET Core

Recordemos lo que es .NET: ".NET es una plataforma de desarrollo gratuita, multiplataforma y de código abierto para crear diversos...

Etiquetas

Archivo del blog