Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta lazarus. Mostrar todas las entradas
Mostrando entradas con la etiqueta lazarus. Mostrar todas las entradas

martes, 19 de febrero de 2013

Lazarus: Libro Gratuito Empezando a programar usando Object Pascal

Lazarus: Libro Gratuito 

Empezando a programar usando

 Object Pascal 


En http://www.etnassoft.com/biblioteca/ he encontrado este interesante libro, bastante reciente (fecha de edición 30 de agosto de 2012)  para aprender Pascal y Lazarus, escrito por Motaz Abdel Azeem.

En sus 150 páginas, puedes aprender desde "cero", Pascal y además usar Lazarus, un IDE para realizar aplicaciones gráficas.



Se divide en 4 capítulos:

  1. Lenguaje básico
  2. Programación estructurada
  3. La interfase gráfica (Lazarus)
  4. Programación orientada a objetos

Lo más interesante son los últimos capítulos, ya que yo no encontrado mucha información ni manuales de Lazarus, y este libro contiene varios ejemplos completos y sobre todo, porque explica como crear las interfases gráficas (formularios, llamada a otros formularios ,y los componentes típicos texteditor, listbox y botones.)

Bueno, ya tengo  una razón más para volver a instalar Lazarus.

Enlace del libro en OpenLibra:
http://www.etnassoft.com/biblioteca/start-programming-using-object-pascal/


Enlace de descarga del proyecto Lazarus:
http://www.lazarus.freepascal.org/



 Nota:
La descarga es gratuita, solo teneis que ver los anuncios, esperar 5 segundos y pulsar sobre el botón superior derecho que os sale despues de la cuenta atrás.


jueves, 27 de octubre de 2011

Mi primer programa en Lazarus: Calculo del area de un poligono irregular (version para Windows y GNU/Linux)


Cálculo de área de un polígono irregular 
Realizado en Lazarus
(version para Windows y Gnu/linux)

Hola, os traigo mi primer programa realizado en Lazarus, que es un IDE para FreePascal. Tiene algunas ventajas frente a Gambas, ya que es multiplataforma, osea que puedes crear el programa y compilarlo para varios sistemas operativos (no solo para gnu/linux).  Os he dejado al final los enlaces tanto del código fuente como los ejecutables para gnu/linux y windows. 

El programa, es  una utilidad para el cálculo del area de un poligono irregular (una de las entradas que ha tenido mas visitas en mi blog).


El programa en el ide (ubuntu 10.04)




Os dejo aqui parte del código (el completo esta en el enlace del final del articulo).
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Grids, Buttons,LCLType;

type

{ TForm1 }

TForm1 = class(TForm)
BotonTablaNueva: TBitBtn;
BotonBorrarFila: TBitBtn;
BotonIntroducirPar: TButton;
Button1: TButton;
ButtonSalirPrograma: TButton;
CalcularArea: TButton;
FilaBorrar: TEdit;
EditX: TEdit;
EditY: TEdit;
GroupBox1: TGroupBox;
LabelAREA: TLabel;
LabelX: TLabel;
LabelY: TLabel;
StringGrid1: TStringGrid;

procedure BotonBorrarFilaClick(Sender: TObject);
procedure BotonIntroducirParClick(Sender: TObject);
procedure BotonTablaNuevaClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ButtonSalirProgramaClick(Sender: TObject);
procedure CalcularAreaClick(Sender: TObject);
procedure EditXChange(Sender: TObject);
procedure EditYChange(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure GroupBox1Click(Sender: TObject);
private
{ private declarations }
public

{ public declarations }
end;

var
Form1: TForm1;

// variables que van a tener los puntos que forman el poligono (maximo 101 puntos)
var x: array [0..100] of Extended;
var y: array [0..100] of Extended;

implementation

//para que pueda abrir el formulario de Acerca de...
uses Unit2;
{$R *.lfm}

{ TForm1 }

procedure TForm1.BotonBorrarFilaClick(Sender: TObject);

var a,fila: integer;

begin
if filaBorrar.text='' then
showmessage('Debe de introducir algun numero')
else
begin
fila:=StrToInt(FilaBorrar.text) ;
if (fila>stringgrid1.rowcount-1) or (fila<1) then
begin
ShowMessage('No puedes borrar esa fila');
FilaBorrar.text:='' ;
end
else
begin

for a:=(StrToInt(FilaBorrar.Text)+1) to stringgrid1.rowcount-1 do
begin
// stringgrid1.Cells[0, a-1]:= stringgrid1.Cells[0, a];
stringgrid1.Cells[1, a-1]:= stringgrid1.Cells[1, a];
stringgrid1.Cells[2, a-1]:= stringgrid1.Cells[2, a];

end;

stringgrid1.rowcount := stringgrid1.rowcount-1;
showmessage('borrado linea') ;

end;
end;
end;



procedure TForm1.BotonIntroducirParClick(Sender: TObject);
begin
stringgrid1.RowCount:= stringgrid1.RowCount+1;
stringgrid1.Cells[0, stringgrid1.RowCount-1]:= FloatToStr(stringgrid1.RowCount-1);
stringgrid1.Cells[1, stringgrid1.RowCount-1]:=editx.text;
stringgrid1.Cells[2, stringgrid1.RowCount-1]:=edity.text;
editx.text:='';
edity.text:='';

end;

procedure TForm1.BotonTablaNuevaClick(Sender: TObject);
begin
stringgrid1.rowcount :=1;
ShowMessage('Reiniciada la tabla de datos');
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
try Form2.show;
finally

end;
end;


procedure TForm1.ButtonSalirProgramaClick(Sender: TObject);
begin
close;
end;

procedure TForm1.CalcularAreaClick(Sender: TObject);

var s: double;
var s1: double;
var super: double;
var x_count: integer;
var I,j : integer;

begin
//carga el contenido del gridviews en un array

for I:=1 to stringgrid1.rowcount-1 do
begin
x[I-1]:=StrToFloat(stringgrid1.Cells[1,I]);
y[I-1]:=StrToFloat(stringgrid1.Cells[2,I]);

end;

x_count:=stringgrid1.rowcount-1;
//pasa los datos a una funcion que devuelva el calculo del area
s:=0;
s1:=0;
for j:=0 to x_count-1 do

s:= s+x[j]*y[j+1];

s:=s+x[x_count-1]*y[0] ;

for j:=0 to x_count-1 do s1:=s1+y[j]*x[j+1];

s1:=s1+y[x_count-1]*x[0];

super:= (1/2)*(s-s1);

if super<0 then super:=-super;

LabelAREA.caption:= 'El area es ...' + floattostr(super);
end;

procedure TForm1.EditXChange(Sender: TObject);
begin

end;

procedure TForm1.EditYChange(Sender: TObject);
begin

end;


procedure TForm1.FormActivate(Sender: TObject);
begin
stringgrid1.cells[0,0]:='Coord';
stringgrid1.Cells[1,0]:='X';
stringgrid1.Cells[2,0]:='Y';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.GroupBox1Click(Sender: TObject);
begin

end;



initialization
{$I unit1.lrs}

end.   


Os dejo los enlaces de descarga:

Saludos

Nota:
6/nov/2011: Os dejo un video para mostrar como funciona el programa