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.


Vibe Coding (la programación vía IA): ¿el futuro de la programación?

Vibe Coding es un nuevo paradigma de programación, una nueva forma de crear código. Es un enfoque emergente en el desarrollo de sof...

Etiquetas

Archivo del blog