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.