sábado, 29 de diciembre de 2012
Aprende Python de manera divertida
Programar puede parecer difícil (a veces imposible), pero con un poco de ayuda podemos empezar desde el clásico programa "Hola mundo" hasta programas mucho más elaborados.
Una herramienta para iniciar con el lenguaje es Python Turtle, nos permite jugar un poco con el lenguaje mientras aprendemos a usarlo.
import turtle as tortuga
tortuga.setup(700,500)
raphael=tortuga.Screen()
raphael.bgcolor("lightblue")
raphael.title("Hola Leonardo")
leonardo=tortuga.Turtle()
leonardo.color("red")
leonardo.pensize(3)
leonardo.forward(300)
leonardo.left(120)
leonardo.forward(300)
leonardo.exitonclick()
Este código también puede correr en el IDLE (Windows) de Python. Existen además otras herramientas gráficas como RUR-PLE y/o Guido Van Robot que parecen muy interesantes.
¿Estás herramientas me van enseñar a programar?
No, el fin es que conozcan el lenguaje, que leas, escribas notas y practiques mucho. Estas herramientas están enfocadas a principiantes.
Python Turtle
http://pythonturtle.org/
RUR-PLE (Python Learning Environment)
http://rur-ple.sourceforge.net/
Guido Van Robot
http://gvr.sourceforge.net/
swfk
http://code.google.com/p/swfk/
Referencias
Invent with Python
http://inventwithpython.com/makinggames.pdf
Teaching kids programming
http://baheyeldin.com/technology/teaching-kids-programming.html
viernes, 21 de diciembre de 2012
Visual Basic Script
Alguna vez tuve que usar Visual Basic Script para ejecutar algunas tareas como abrir el navegador en una página en específico, abrir Excel y/o Word.
VBScript básicamente es lo mismo que el VB tradicional.
Dim aviso As String
aviso="Hola este es un simple mensaje"
MsgBox aviso, vbInformation,"Aviso del sistema"
Estructuras de control
' Selectivas
If 9==0 Then
'no es correcto
Else If 9==9 Then
' es correcto
Else
' hacer nada
End If
Dim numero As Integer
numero =12
Select Case numero
Case 1:
'hacer algo
Case 2 To 12:
' hacer otra cosa
Case Else:
'hacer nada
End Select
' Repetitivas
For n=1 To 10
' hacer algo
Next n
Do While variable < MAX
'hacer otra cosa
Loop
While contador <90
'repetir
Wend
For Each variable In grupo
'repetir
Next variable
Se me ocurrió hacer un programita en Java para ejecutar estos archivos y encontré este link http://www.ehowenespanol.com/ejecutar-script-vbs-java-como_111019/
Si quiero abrir una página creo un script que tenga lo siguiente:
set shell = CreateObject("Shell.Application")
shell.Open "http://codemonkeyjunior.blogspot.mx/"
MsgBox "Listo ventana abierta",vbInformation,"Aviso del sistema"
Se guarda con la extensión *.vbs ahora crear la clase Java.
Ejecuta.java
import java.lang.Runtime;
import java.io.*;
public class Ejecuta{
public static void main(String[] args) {
try{
Runtime.getRuntime().exec("wscript C:\\prueba.vbs");
}catch(Exception ex){
ex.printStackTrace(System.err);
}
}
}
Algunos usos de VBScript es en la programación descriptiva (no sabía que existía), en la elaboración de pruebas de software (QTP), automatización de procesos,etc.
Ejemplo. Abrir el navegador y logearse a su cuenta de Hotmail.
1. Abrir navegador
2. Ingresar a hotmail
3. Introducir cuenta y password
4. Revisar los mensajes enviados
5. Borrar los mensajes de un contacto en específico
6. Cerrar sesión
7. Apagar sistema
Todo esto mediante un script.
Links:
http://www.visualbasicscript.com/
http://testingbaires.com/tag/programacion-descriptiva/
http://mercuryquicktestprofessional.blogspot.mx/2007/10/vb-script-and-qtp-part1.html
sábado, 24 de noviembre de 2012
Programando en Groovy al estilo Java no. 2
He aqui más ejemplos de Groovy.
1. Paso de parámetros desde Groovy (algo muy parecido a Java):
static void main(String ... args)throws Exception {
def cont=0
def listaVacia=[]
if(args){
args.each{it->
println "${it}, indice: ${cont}"
listaVacia[cont]=it
cont++
}
println "total: "+cont
println "lista: ${listaVacia}"
}else{
throw new Exception("ha ocurrido un error")
}
}
El código es muy sencillo así que no explico mucho sobre el.
2. Calcular el salario bruto y neto:
class Servicios{
def obtenerEntero(){
return (new Scanner(System.in).nextInt())
}
def obtenerReal(){
return (new Scanner(System.in).nextDouble())
}
def obtenerCadena(){
return (new Scanner(System.in).nextLine())
}
def salarioBruto(h,t,e){
return (h*t+e*t*1.5)
}
def salarioNeto(salB){
if(salB<=300){
return salB
}else{
return salB*0.9
}
}
}
static void main(String ... args) {
def obj=new Servicios()
def extras=0
def horas=0
def tasa=0.0
try{
println "Introduce horas: "
horas=obj.obtenerEntero()
println "Horas: ${horas}"
println "Introduce tasa: "
tasa=obj.obtenerReal()
println "tasa: ${tasa}"
}catch(ex){
println "error: ${ex}"+" , causa: "+ex.getCause()
}
try{
if(horas<=38){
extras=0
}else{
extras=horas-38
horas=38
}
}catch(ex){
println "error: ${ex}"+" , causa: "+ex.getCause()
}
println "salario bruto: "+obj.salarioBruto(horas,tasa,extras)
println "salario neto: "+obj.salarioNeto(obj.salarioBruto(horas,tasa,extras))
}
3. Conexión MySQL y Groovy usando el "gestor de dependencias" @Grapes:
import groovy.sql.*
import groovy.grape.Grape
static void main(String ... args)throws Exception {
if(args.size()==0){
throw new Exception("error: debes introducir datos")
}else{
def usuario=args[0]
def clave=args[1]
println "usuario: "+args[0]
inicio(usuario,clave)
}
}
@Grapes([
@Grab('mysql:mysql-connector-java:5.1.12'),
@GrabConfig(systemClassLoader=true)
])
def inicio(usuario,clave){
println "bienvenido: ${usuario}"
Sql sql=Sql.newInstance("jdbc:mysql://localhost/agenda",usuario,clave,"com.mysql.jdbc.Driver")
sql.eachRow("select * from usuarios") {
println "Usuarios de la base: ${it.nomb_us}"
}
}
sábado, 17 de noviembre de 2012
Un programa sencillo con Lazarus Pascal
Se trata de una aplicación que pide genera dos números aleatorios y pide al usuario introducir la suma de esos dos números, y cuenta el número de intentos, aciertos y fallos.
El código.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
Elementos=record
aciertos:integer;
fallos:integer;
intentos:integer;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
elemento:Elementos;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
elemento.aciertos:=0;
elemento.fallos:=0;
elemento.intentos:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
alea1,alea2:integer;
begin
randomize;
alea1:=random(102)-25;
alea2:=random(102)-22;
Edit1.Text:=inttostr(alea1);
Edit2.Text:=inttostr(alea2);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
numero,suma:integer;
begin
numero:=strtoint(InputBox('Introduce resultado','Aqui:',''));
{ShowMessage('Introduciste: '+ inttostr(numero)); }
suma:=strtoint(Edit1.Text)+strtoint(Edit2.Text);
if suma = numero then
begin
{aqui deberia incrementarse el valor}
elemento.aciertos:=elemento.aciertos+1;
elemento.intentos:=elemento.intentos+1;
Edit4.Text:=inttostr(elemento.aciertos);
Edit5.Text:=inttostr(elemento.fallos);
Edit6.Text:=inttostr(elemento.intentos);
end
else
begin
{aqui deberia incrementarse el valor}
elemento.fallos:=elemento.fallos+1;
elemento.intentos:=elemento.intentos+1;
Edit4.Text:=inttostr(elemento.aciertos);
Edit5.Text:=inttostr(elemento.fallos);
Edit6.Text:=inttostr(elemento.intentos);
end
end;
end.
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
Elementos=record
aciertos:integer;
fallos:integer;
intentos:integer;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
elemento:Elementos;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
elemento.aciertos:=0;
elemento.fallos:=0;
elemento.intentos:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
alea1,alea2:integer;
begin
randomize;
alea1:=random(102)-25;
alea2:=random(102)-22;
Edit1.Text:=inttostr(alea1);
Edit2.Text:=inttostr(alea2);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
numero,suma:integer;
begin
numero:=strtoint(InputBox('Introduce resultado','Aqui:',''));
{ShowMessage('Introduciste: '+ inttostr(numero)); }
suma:=strtoint(Edit1.Text)+strtoint(Edit2.Text);
if suma = numero then
begin
{aqui deberia incrementarse el valor}
elemento.aciertos:=elemento.aciertos+1;
elemento.intentos:=elemento.intentos+1;
Edit4.Text:=inttostr(elemento.aciertos);
Edit5.Text:=inttostr(elemento.fallos);
Edit6.Text:=inttostr(elemento.intentos);
end
else
begin
{aqui deberia incrementarse el valor}
elemento.fallos:=elemento.fallos+1;
elemento.intentos:=elemento.intentos+1;
Edit4.Text:=inttostr(elemento.aciertos);
Edit5.Text:=inttostr(elemento.fallos);
Edit6.Text:=inttostr(elemento.intentos);
end
end;
end.
domingo, 28 de octubre de 2012
NoSQL ... alternativas a las BD relacionales
Ahora que tuve un poco de tiempo decidí probar MongoDB, ya que me cansé un poco de MySQL y los demás SGBD pseudo-relacionales.
¿Cómo se instala?
1. Descomprimes el archivo en un directorio.2. Creas otro directorio donde se almacenarán los datos (yo le puse mongodbTest)
3. Vas al directorio bin, y desde terminal tecleas: mongod --dbpath C:\mongodbTest
4. Si todo va bien puedes acceder a http://localhost:28017
5. Además puedes acceder al shell tecleando: mongo
Puedes usar JS (javascript) para programar.
> a=45;
> b=32;
> print(a+b);
> cadena='hola usuario';
> typeof(cadena);
Hay mucha información para aprender.Enlaces
http://try.mongodb.org/
http://nosql-database.org/
Una pequeña introducción a MongoDB
Tutorial MongoDB (Mkyong)
sábado, 13 de octubre de 2012
Conociendo HTML5
Estructura básica de una página HTML5
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Mi primer página HTML5</title>
</head>
<body>
<header><h1>Título del post</h1></header>
<section id="contenedor">
<article>
Aquí va el contenido
</article>
<aside>puedes poner botones u otros elementos</aside>
<article>Un contenido</article>
</section>
<footer>@alguien</footer>
</body>
</hml>
Ahora es necesario definir el idioma de la página, en este caso es el español (es), también definir la codificación (utf-8), además de tener una estructura más formal.
Al igual que las páginas "HMTL clásicas" debes guardar el documento con la extensión *.html.
Características de HTML5
- Se puede crear contenido interactivo sin necesidad de FLASH
- Incrustrar audio y vídeo.
- Acceso a datos
- Comprobar conectividad a Internet
- Geolocalización
- etc.
El único inconveniente que veo es que (al parecer) hay una división entre el HTML5 de la W3 y el HTML5 de la http://www.whatwg.org/ y según yo si puede haber problemas en cuanto compatibilidad en los navegadores.
25 sitios para empezar con HTML5 (http://mejorando.la/)
25 sitios para empezar con HTML5 (http://mejorando.la/)
Algunos links para aprender HTML5:
lunes, 8 de octubre de 2012
Matemáticas para programadores
Navegando por Internet encontré dos sitios muy interesantes para aprender matemáticas. Explican muy bien los conceptos y técnicas de las matemáticas (cálculo,estadística, etc.).
El primero es http://www.math2me.com/ muy recomendable para cualquier nivel académico.
El segundo sitio es http://www.khanacademy.org/intl/es.
domingo, 30 de septiembre de 2012
Análisis de PDF con Python
Para esto podemos usar tres herramientas:
- peepdf.py
- pdf-parser.py
- pdfid.py
Estoy usando MS-DOS, pero también pueden usar la terminal de PowerShell o la de Linux y funciona igual. El fin de esto es comprobar que los documentos están bien formados antes de realizar un parseo.
peepdf.py
Antes se debe tener asignada la variable de entorno (la ruta a la carpeta) en el path.
Volcado de comando en MS-DOS:
comando opciones > archivo.txt
En la terminal de comandos teclear:
peepdf.py documento.pdf > archivo.txt
Con lo anterior se realiza el análisis del documento. Para ver el contenido del análisis teclear:
start notepad archivo.txt
pdfid.py
Antes se debe tener asignada la variable de entorno (la ruta a la carpeta) en el path.
En la terminal de comandos teclear:
pdfid.py documento.pdf > archivo.txt
Con lo anterior se realiza el análisis del documento. Para ver el contenido del análisis teclear:
start notepad archivo.txt
pdf-parser.py
Antes se debe tener asignada la variable de entorno (la ruta a la carpeta) en el path.
En la terminal de comandos teclear:
pdf-parser.py documento.pdf > archivo.txt
Con lo anterior se realiza el análisis del documento. Para ver el contenido del análisis teclear:
start notepad archivo.txt
nota: en caso de generar un documento vacío indica que el documento no es un PDF válido
Hay otras herramientas (librerías,programas,etc.) que nos permiten analizar PDF, pero creo estas son las mejores.
domingo, 23 de septiembre de 2012
Microsoft Power Shell ... el MS-DOS mejorado
MPS (Microsoft PowerShell)
Permite automatizar tareas, algo así como lo que puedes hacer con MS-DOS pero a un mejor nivel. Es como tener una terminal Linux en Windows.
Algunos comandos son: get-help,get-alias,get-help-dir,ls y dir (para ver una lista de directorios/archivos), clear, date,exit, entre muchos más.
Ejemplos.
1. Usar el comando cd para colocarnos en un directorio (Documents)
PS C:\>cd ./Documents
2. Obtener servicios
PS C:\>get-service
Puedes usar los comandos MS-DOS y combinarlos con los de PS. Los archivos PS se guardan con la extensión *.ps1
PowerShell para novatos
0- Comentarios
<# puedes usar comentarios multilínea para tus programas #> #comentario simple
1. Hola mundo.
1.1 Usando comillas:
"Hola mundo desde PowerShell"
1.2 Usando echo:
echo "Hola mundo desde PowerShell"
1.3 Usando Write-Host:
Write-Host "Hola mundo desde PowerShell"
2. Definir una variable y mostrarla.
$miVariable="soy una cadena"
2.1 Con write-host:
write-host $mivariable
2.2 Con echo:
echo $miVariable
2.3 Directamente
$miVariable
3. Introducir datos.
$nombre = Read-Host "Tu nombre es: " $edad= Read-Host "¿Cuántos años tienes?" write-host "Te llamas $nombre y tienes $edad años"
4. Operaciones básica: suma, resta , producto y división
$a=34 $b=25 $suma= $a+$b $resta= $a-$b $producto= $a*$b $division= $a/$b write "$a + $b = $suma" write "$a - $b = $resta" write "$a * $b = $producto" write "$a / $b = $division"
5. Operadores aritméticos y booleanos.
-eq (==)
-ne (!=)
-gt (>)
-ge (>=)
-lt (<)
-le (<=)
-and
-or
-not
$a=99
$b=2
Write-Host "a= $a y b= $b"
$result=($a -lt $b)
write-host "($a -lt $b): $result"
$result=($a -gt $b) -or ($b -lt $a)
write-host "($a -gt $b) -or ($b -lt $a): $result"
$result=($a -eq $a) -and ($b -lt $a)
write-host "($a -eq $b) -and ($b -lt $a): $result"
6. Crear una función.
function mensaje{
"hola desde una función"
}
#invocar
mensaje
7. Uso de for y foreach.
$lista={3,4,4,5,6}
$plazo=9
for($i=0;$i -lt 5;$i++){
write-host "$i"
}
write-host ""
foreach ($l in 0..$plazo){
write-host "$l"
}
Enlaces de interés:
http://elpaladintecnologico.blogspot.mx/2009/02/que-es-powershell-ejemplos-basicos-para.html
http://www.aprendeinformaticaconmigo.com/powershell
jueves, 13 de septiembre de 2012
Bienvenido al mundo Pascal
Primer programa en Pascal Lazarus
Instalación ...
Instalación terminada
Instalación ...
Mostrar el contenido de una caja de texto desde una ventanita.
Controles a usar:
Una caja de texto (TEdit)
Una etiqueta (TLabel)
Un botón (TButton)
Código del botón:
procedure TForm1.Button1Click(Sender: TObject);
var nombre:String;
begin
{Este es un comentario}
nombre:=Edit1.Text;
ShowMessage('Hola '+nombre+' bienvenido al mundo Pascal');
Edit1.Clear;
end;
miércoles, 29 de agosto de 2012
Javascript ... uso de getElementById
Calcular tasa de interés
Versión con jQuery
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>::Uso de getElementById con jQuery::</title>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<!-- jQuery -->
<script type="text/javascript" language="javascript">
<!--
console.log('aqui se crea la función')
function calculo(){
// aqui hago uso de la propiedad getElementById("")
var vi=$('#valor_inicial').val();
var vf=$('#valor_final').val();
var n=$('#periodo').val();
// esta es la variable que mostrará el resultado
var result=$('#result').val((Math.pow(vf/vi,1/n)- 1)*100);
}
// $('#test-table'); equivale a document.getElementById('test-table');
function limpia(){
$('#valor_final').val("");
$('#valor_inicial').val("");
$('#periodo').val("");
$('#result').val("");
}
-->
</script>
</head>
<body>
<h1>Calcular tasa de interés</h1>
<div>
valor final:
<input id="valor_final" type="text" value=""/><br/>
valor inicial:<input id="valor_inicial" type="text" value=""/><br/>
periodo:<input id="periodo" type="text" value=""/><br/>
<button onclick="calculo()">Calcular</button>
Tasa de interés generado:<b><input id="result" type="text" value=""/></b>
<button onclick="limpia()">Borrar</button>
</div>
</body>
</html>
domingo, 12 de agosto de 2012
SMSLib ... inicio
Al leer este post servidor smtp tuve la curiosidad si se puede crear una app (web o swing todavía no lo decido) para el envío y recepción de SMS.
SMSLib
- Sitio oficial: http://smslib.org/
- Descargas: http://smslib.org/download/
- Cómo instalar http://smslib.org/doc/installation/
Lo que necesitamos
- SUN JDK 1.5 o más nuevo
- Java Communications Library.
- Apache ANT for building the sources.
- Apache log4j.
- Apache Jakarta Commons - NET.
- JSMPP Library
- http://www.kannel.org/
Kannel is a compact and very powerful open source WAP and SMS gateway, used widely across the globe both for serving trillions of short messages (SMS), WAP Push service indications and mobile internet connectivity.
Todavía son ideas, en cuanto tenga tiempo publicaré algo más.
sábado, 11 de agosto de 2012
Programación en VBA ... ejemplo no. 1
Este es un ejemplo de como programar con Visual Basic para Aplicaciones (VBA).
1. Calcular el valor futuro de una inversión dado un valor presente, una tasa de interés y un periodo de pago.
Controles a usar:
- 3 Label
- 3 TextBox
- 3 CommandButton
Para abrir el editor de macros (en Microsoft Excel) presionas alt + F11.
La fórmula es:
valorFuturo= valorPresente*pow(1+tasa_interés/100,periodo)
Al dar clic sobre el formulario se abre el editor de código de VB. Para declarar una variable debes usar Dim algo As TipoVariable. Puedes usar ventanas tipo "alert" (MsgBox) para mostrar el resultado o algún aviso al usuario.
Para ejecutar debes presionar F5.
Código completo:
Option Explicit
'esto es un comentario
Dim res As String ' aqui almaceno el resultado
'botón calcular
Private Sub CommandButton1_Click()
'valorFuturo=valorPresente*pow(1+tasa/100,periodo)
If TextBox1.Text = "" And TextBox2.Text = "" And TextBox3.Text = "" Then
res = "No hay nada que evaluar"
MsgBox res, vbCritical, "Alerta"
Else
res = Val(TextBox1.Value) * Val(1 + TextBox2.Value / 100) ^ Val(TextBox3.Value)
MsgBox "Valor presente: " & TextBox1.Value & vbCrLf & "Tasa de interés: " & TextBox2.Value & vbCrLf & "Periodo: " & TextBox3.Value & vbCrLf & "Valor futuro:" & res, vbDefaultButton1, "Resultado"
End If
End Sub
'botón limpiar
Private Sub CommandButton2_Click()
TextBox1.Text = "": TextBox2.Text = "": TextBox3.Text = ""
End Sub
'botón finalizar
Private Sub CommandButton3_Click()
End
End Sub
Se puede activar/aparecer el formulario desde una hoja, para eso puedes ocupar un botón.
Sub Botón1_Haga_clic_en()
UserForm1.Show ' esto activa el formulario
End Sub
martes, 7 de agosto de 2012
Python ... ejemplos prácticos no. 7
Una forma de ejecutar programas Python.
Archivos *.bat (Windows), creamos un archivo llamado "ejecuta.bat" y colocamos:
@echo off
python programa.py
Al dar clic sobre el se ejecuta.
En Linux usamos un archivo *.sh, creamos un archivo llamado "ejecuta.sh" y colocamos:
python programa.py
Debemos otorgarle un permiso de ejecución:
chmod u+x ejecuta.sh
Y lo ejecutamos:
./ejecuta.sh
Groovy vs Java vs Python
Los lenguajes de scripting como Groovy o Python permiten escribir pequeños programas y así ahorrar varias líneas de código (en comparación con otros lenguajes como Java). Ejemplo. Creamos una clase llamada "Futbol" en estos tres distintos lenguajes con las siguientes propiedades:- nombreEquipo: String
- victorias: int
- derrotas: int
- empates: int
- golesAFavor: int
- golesEnContra: int
- golesGoleador
- goleador: String
Futbol.groovy
class Futbol{
def nombreEquipo, goleador
def victorias, derrotas,empates
def golesAFavor, golesEnContra, golesGoleador
// ...
// ...
}
Creamos una función que nos muestre los datos:
def verDatos(){
println("Nombre del equipo: "+nombreEquipo)
println("Nombre del goleador: "+goleador)
println("No. de victorias: "+victorias)
println("No. de derrotas: "+derrotas)
println("No. empates: "+empates)
println("No. goles a favor: "+golesAFavor)
println("No. en contra: "+golesEnContra)
println("Goles del goleador: "+golesGoleador)
}
Ahora definimos el método principal main, definimos un objeto llamado "miJugador" e invocamos el método verDatos()
//main
static void main (String[] args){
def miJugador= new Futbol(nombreEquipo:'Real Madrid',goleador: 'Hugo Sánchez',victorias:12,derrotas:0,empates:0,golesAFavor:35,golesEnContra:6,golesGoleador:32)
miJugador.verDatos()
}
Con Java evidentemente escribimos mucho más líneas de código (además las clases deben ser nombradas igual que el archivo):Futbol.java
public class Futbol{
/*En Java si es necesario declarar el tipo de dato de las variables*/
public String nombreEquipo, goleador;
public int victorias, derrotas,empates;
public int golesAFavor, golesEnContra, golesGoleador;
/*constructor*/
public Futbol(String nombreEquipo, String goleador,int victorias,int derrotas,int empates,
int golesAFavor, int golesEnContra, int golesGoleador){
this.nombreEquipo=nombreEquipo;
this.goleador=goleador;
this.victorias=victorias;
this.derrotas=derrotas;
this.empates=empates;
this.golesAFavor=golesAFavor;
this.golesEnContra=golesEnContra;
this.golesGoleador=golesGoleador;
}
// ...
// aqui definimos los setters y getters
public void setNombreEquipo(String nombreEquipo){this.nombreEquipo=nombreEquipo;}
public String getNombreEquipo(){return this.nombreEquipo;}
// ...
public void verDatos(){
System.out.println("Nombre del equipo: "+nombreEquipo);
//...
//...
}
public static void main(String ... args){
Futbol miJugador=new Futbol("Real Madrid","Hugo Sánchez",12,0,0,35,6,32);
miJugador.verDatos();
}
}
Finalmente tenemos el siguiente código en Python:
Futbol.py
class Futbol:
def __init__(self,nombreEquipo,goleador,victorias,derrotas,empates,goleasAfavor, golesEnContra, golesGoleador):
self.nombreEquipo=nombreEquipo
self.goleador=goleador
self.victorias=victorias self.derrotas=derrotas
self.empates=empates
self.golesAFavor=golesAFavor
self.golesEnContra=golesEnContra
self.golesGoleador=golesGoleador
def verDatos(self):
print "Nombre del equipo: ",self.nombreEquipo
#...
#...
#main
miJugador=
Futbol("Real Madrid","Hugo Sánchez",12,0,0,35,6,32)
miJugador.verDatos()¿Cómo ejecutar los programas?
Groovy Compilar: groovyc Futbol.groovy Ejecutar: groovy Futbol.groovy Java Compilar: javac -g Futbol.java Ejecutar: java Futbol Python Compilar/ejecutar: python Futbol.pyConclusiones
Java al ser un lenguaje fuertemente tipado obliga al programador a declarar tipos de datos a usar, además posee una gran cantidad de clases que lo hacen bastante robusto. Groovy es un lenguaje de tipo dinámico bastante fácil de aprender, puedes escribir código Java y funciona correctamente. Python posee características de tipo dinámico y estático.Códigos: Futbol.groovy Futbol.py Futbol.java
Suscribirse a:
Entradas (Atom)