simsee pordentro002 lazarus

14
SimSEE pág. 1 / 14 SimSEE por dentro 002 El entorno de desarrollo Lazarus. ------------------------- Proyecto: SimSEE v2.47 Archivo: SimSEE_pordentro002_Lazarus.odt Autor: Ruben Chaer. Fecha creación: 28/11/2009 10:52:21 Fecha última revisión: 30/11/2009 08:27:57 PM Institución: IIE – Montevideo – Uruguay. En este capítulo se introduce el entorno de programación Lazarus y cómo desarrollar aplicaciones con el. La sección 1 contiene una breve introducción al desarrollo de aplicaciones más que nada para establecer el lenguaje de uso común como qué es codigo fuente compilador, linker etc. Si usted tiene experiencia en el uso de compiladores puede saltear dicha sección. En la sección 2 se muestra cómo instalar el entorno de desarrollo Lazarus y cómo crear una aplicación sencilla. 1 Introducción al desarrollo de aplicaciones. Código Fuente y Ejecutable. Por PROGRAMA entendemos un código ejecutable. Por FUENTE o FUENTES de un PROGRAMA entendemos el conjunto de archivos de texto que especifican qué es lo que hace el PROGRAMA. Lenguaje de Programación. Los FUENTES están escritos en un LENGUAJE DE PROGRAMACION de alto nivel como puede ser BASIC, PASCAL, FORTRAN, C, C++, etc. Compiladores y Linkers Para pasar del LENGUAJE DE PROGRAMACION al código binario ejecutable por el microprocesador, es necesario utilizar dos programas, un COMPILADOR y un LINKER. El Compilador es específico del lenguaje de programación. Técnicamente el compilador hace una traducción de cada uno de los archivos fuentes del lenguaje de programación a archivos con los códigos binario que representan las instrucciones entendibles por el microprocesador. Nosotros trabajaremos con un compilador Pascal. El programa LINKER (o enlazador si lo traducimos crudamente al español) se encarga de enlazar los bloques de código creados por el compilador con los bloques de códigos propios del sistema operativo para el que se está creando el programa ejecutable y con todos esos bloques enlazados correctamente crea el archivo binario ejecutable. El Proyecto, MAKE, Construir y Construir Todo

Upload: pedaleandoea

Post on 22-Dec-2015

10 views

Category:

Documents


6 download

DESCRIPTION

laza

TRANSCRIPT

Page 1: SimSEE Pordentro002 Lazarus

SimSEE pág. 1 / 14

SimSEE por dentro 002

El entorno de desarrollo Lazarus.

-------------------------Proyecto: SimSEE v2.47Archivo: SimSEE_pordentro002_Lazarus.odtAutor: Ruben Chaer.Fecha creación: 28/11/2009 10:52:21Fecha última revisión: 30/11/2009 08:27:57 PMInstitución: IIE – Montevideo – Uruguay.

En este capítulo se introduce el entorno de programación Lazarus y cómo desarrollaraplicaciones con el.

La sección 1 contiene una breve introducción al desarrollo de aplicaciones más que nadapara establecer el lenguaje de uso común como qué es codigo fuente compilador, linker etc.Si usted tiene experiencia en el uso de compiladores puede saltear dicha sección.En la sección 2 se muestra cómo instalar el entorno de desarrollo Lazarus y cómo crear unaaplicación sencilla.

1 Introducción al desarrollo de aplicaciones.

Código Fuente y Ejecutable.Por PROGRAMA entendemos un código ejecutable. Por FUENTE o FUENTES de unPROGRAMA entendemos el conjunto de archivos de texto que especifican qué es lo quehace el PROGRAMA.

Lenguaje de Programación.Los FUENTES están escritos en un LENGUAJE DE PROGRAMACION de alto nivelcomo puede ser BASIC, PASCAL, FORTRAN, C, C++, etc.

Compiladores y LinkersPara pasar del LENGUAJE DE PROGRAMACION al código binario ejecutable por elmicroprocesador, es necesario utilizar dos programas, un COMPILADOR y un LINKER. El Compilador es específico del lenguaje de programación. Técnicamente el compiladorhace una traducción de cada uno de los archivos fuentes del lenguaje de programación aarchivos con los códigos binario que representan las instrucciones entendibles por elmicroprocesador. Nosotros trabajaremos con un compilador Pascal.El programa LINKER (o enlazador si lo traducimos crudamente al español) se encarga deenlazar los bloques de código creados por el compilador con los bloques de códigos propiosdel sistema operativo para el que se está creando el programa ejecutable y con todos esosbloques enlazados correctamente crea el archivo binario ejecutable.

El Proyecto, MAKE, Construir y Construir Todo

Page 2: SimSEE Pordentro002 Lazarus

SimSEE pág. 2 / 14

Cuando trabajamos en la creación de un PROGRAMA, a partir de determinado nivel decomplejidad se hace necesario partir el FUENTE en varios archivos para darles unaorganización lógica y además esto permite reutilizar parte de los FUENTES en otrosprogramas. A esta agrupación "de las cosas necesarias para editar y compilar un programa"la llamamos PROYECTO. Cada PROYECTO maneja por lo tanto lo necesario para generarun PROGRAMA.En el caso de SimSEE, los programa más usados son el "Editor", el "Simulador" y el"Procesador de resultados". Como veremos hay tres PROYECTOS, uno para cada uno deestos PROGRAMAS. Las herramientas utilizadas para desarrollar un programa pueden incluir funciones especialespara manejo de los proyectos o no.

De las primeras herramientas que aparecieron para compilar un conjunto de fuentes y linkearlos resultados en un ejecutable fue el programa "make" conocido como "El maker". Esteprograma toma como entrada un archivo de texto que especifica el conjunto de archivosfuentes a compilar (llamando al compilador) y luego el conjunto de archivos con códigobinario a linear (llamando al linker).Cuando ejecutamos el programa make desde una línea de comando, éste busca en la carpetaactual un archivo con el nombre Makefile.cfg, si existe lo considera como un archivo dedescripción de un proyecto e intenta ejecutar las órdenes contenidas den el Makefile. Estasordenes indican el compilador a usar, el linker a usar y las dependenicas entre los archivosde forma que se puedan compilar. No vamos a entrar en el detalle de cómo escribir unMakefile pues como veremos no es algo que sea necesario y hoy todo esto se hace en formaautomática. Lo nombramos aquí solamente por completar el conocimiento y para que seentienda porqué hablamos de hacer MAKE.

Generalmente, el Makefile se organiza de forma que si cambiamos un solo fuente y lollamamos (hacemos MAKE) se compile solamente ese fuente y quienes puedan depender deél. Es decir que no se recompilan todos los fuentes sino solamente aquellos cuyo resultadode la última compilación tiene fecha anterior a la fecha del archivo fuente. Es decir quehacer un MAKE recompila (o construye) sólo lo que cambió desde la última compilación.Esto ahorra mucho tiempo. Hay ocaciones en que queremos que se recompile todo sinimportar las fechas. Eso se logra pasando una opción al make que le indica que ignore lasfechas y reconstruya todo.

En algunas plataformas se le llama MAKE a la acción de Contruir lo necesario de acuerdo alas fechas y BUILT a la acción de Costruir Todo sin importar las fechas.

El DEBUGGER.La palabra DEBUGGER viene de BUG (bicho en inglés) y significa el quitador de bichos.El DEBUGGER es un programa que nos permite correr nuestra aplicación (el programa queestá siendo debuggeado) paso a paso e ir inspeccionando las variables. Es una herramientamuy útil y que facilita mucho la detección y corrección de errores.

Entornos de Desarrollo Integrados ( IDE )

Los archivos fuente son simples archivos de texto y se pueden editar con cualquier programaeditor de textos.

Page 3: SimSEE Pordentro002 Lazarus

SimSEE pág. 3 / 14

Luego se puede llamar el compilador para compilar cada archivo fuente y luego el linkerpara unirlos y crear el ejecutable.

El trabajo de esta forma es algo tedioso y se han creado entornos de desarrollo que permitenmanejar con facilidad todos los archivos de un proyecto, permitiendo editar los fuentes conayudas como resaltado con colores de las palabras claves, autocompletado de texto,chequeador de sintaxis en tiempo real etc. Además estos entornos facilitan las llamadas alcompilador y al linker desde el propio entorno y en caso de saltar un error nos posicionancon facilidad en la parte del código fuente que produce el error.

Los IDE integran también funciones de DEBUGGER que nos permiten ejecutar el programasiguiendo paso a paso su ejecución sobre el código fuente y revisar los valores de lasvariables.

Entornos RAD (Rapid Application Development)

En la antigüedad (lo digo bromeando pues la mayoría de nosotros vivimos esta etapa) noscomunicábamos con la computadora mediante una consola de texto, sin Mouse y sin interfazgráfica. Los programas recibían los datos generalmente en archivos de textos y para editaresos archivos no había más remedio que usar editores de texto de comando diseñados parafuncionar en las consolas de texto. De esa época hasta ahora toda ha evolucionado mucho,han mejorado muchísimo los monitores aumentando su definición, agregando color ybajando mucho de precio. Esto llevó a un desarrollo explosivo de las interfaces gráficas ypor supuesto que los usuarios se volvieron cada vez más exigentes.El desarrollo de las interfaces gráficas con las antiguas herramientas de desarrollo erarealmente tedioso (yo llegué a hacer alguna). Por suerte, parecieron los entornos RAD (deRapid Application Development) que permiten "armar" la interfaz y programar sucomportamiento en forma muy sencilla. Los entornos RAD más conocidos son el VisualBasic (de Microsoft) y el Delphi (de Borland). También los hay para Java y C++.

El entorno Visual Basic es por lejos el más popular pues al utilizar BASIC le resulta sencillode usar a un grupo importante de gente.

El entorno Delphi es similar a Visual Basic, pero utiliza lenguaje PASCAL en lugar deBASIC.

Para describir en palabras lo que significa RAD, utilizando este entorno el diseño de laaplicación se realiza en base a un formulario (aparece un panel que es lo que verá el usuario)y una barra de herramientas que podemos seleccionar y arrastrar al formulario. Por ejemplo,elegimos un botón y lo arrastramos al formulario, luego hacemos doble-click sobre el botóny se abre una ventana donde podemos escribir el tramo de programa con la acción a ejecutarcuando se presiona el botón.Podríamos decir que los editores de texto+compilador+link desde la línea de comandoconstituyen la primera generación de herramientas, los entornos IDE la segunda y losentornos RAD la tercera.

El desarrollo de SimSEE se realizó con el entorno RAD Delphi. Como este entorno es unprograma de uso comercial y dado que se busca que la plataforma SimSEE sea utilizada con

Page 4: SimSEE Pordentro002 Lazarus

SimSEE pág. 4 / 14

fines didácticos se ha migrado el desarrollo (con poco esfuerzo) para que se pueda continuarel desarrollo utilizando el entorno RAD Lazarus que es de uso libre.

Otra razón para utilizar Lazarus es que se dispone de esta herramienta tanto en Windowscomo en Linux.

2 El entorno de desarrollo Lazarus.El entorno de desarrollo que utilizaremos es LAZARUS. Es de uso gratuito y puede bajarsede la dirección: http://lazarus.freepascal.org/LAZARUS es un RAD Pascal. La misma instalación incluye el compilador FREEPASCAL.

Al momento de escribir este texto, la ultima versión para windows de Lazarus es la quecorresponde al archivo "lazarus-0.9.28-fpc-2.2.4-win32.exe"

Una vez bajado ese archivo (o uno más reciente si lo hay) al ejecutarlo se instala el entornocomo cualquier aplicación de windows.

Una vez instalado ya estamos en condiciones armar nuestra primer aplicación.

Al ejecutar Lazarus, se abre el ambiente de desarrollo. En este ambiente todo gira alrededorde la idea de PROYECTO. Lo que estamos editando es un PROYECTO y podemos editarlos diferentes fuentes del PROYECTO.

La siguiente figura muestra la parte de la ventana del menú y barras herramienta principal.

Lo primero para iniciar una aplicación es crear un Proyecto. En el menú seleccionarProyecto y se abrirá un submenú como el que se muestra en la siguiente figura.

Ilustración 1: Menú Principal y Barras de Herramientas de Lazarus.

Page 5: SimSEE Pordentro002 Lazarus

SimSEE pág. 5 / 14

Seleccionar "Nuevo Proyecto" y se abrirá otro menú (ver figura siguiente) en el que se debeseleccionar el tipo de proyecto.

De todas las opciones la primer "Aplicación" es la que debemos elegir para crear unproyecto de un programa con interfaz gráfica. La segunda "Programa" es la opción paracrear un programa que funcione en una consola en modo texto (por ejemplo una terminalLinux). El resto de las opciones no son de interés en nuestras aplicaciones.

Bien, al presionar el botón ACEPTAR se creará el nuevo PROYECTO y automáticamentese creará un archivo con código fuente para manejo de un FORMULARIO (pantalla del

Ilustración 2: Menú Proyecto

Ilustración 3: Selección del tipo de proyecto.

Page 6: SimSEE Pordentro002 Lazarus

SimSEE pág. 6 / 14

usuario). Se abrirán unas cuantas ventanas, un poco desordenadas y superpuestas perodespués de trabajar un poco son manejables.

Si alguna de las ventas no está visible o si la cerramos y queremos volver a verla hay quebuscar en el menú principal el comando que la mostrará nuevamente.

Las ventas que se abren son:

2.1 Ventana Principal.La ventana principal del IDE Lazarus es la que contiene el Menú y las herramientas.

Si cerramos esta venta se cierran todas y saldremos de Lazarus. 2.2 Ventana Editor de código Fuente.La de "Editor de código fuente". Donde inicialmente aparece desplegado el archivo "Unit1"con el código Pascal creado en forma automática para manejo del primer formulario.

El "*" al inicio de la palabra "Unit1" indica que ese archivo está sin guardar. Por cadaarchivo que tengamos abierto en edición aparecerá una orejita (como Unit1) y según la queesté activa veremos el código fuente en la parte central de la ventana.

Si cerramos esta venta (o ya está cerrada) podemos volver a abrir clickeando sobre "Editorcódigo fuente" en el menú "Ver".

Ilustración 5: Ventana Editor de código fuente

Ilustración 4: Ventana Principal del IDE - Lazarus

Page 7: SimSEE Pordentro002 Lazarus

SimSEE pág. 7 / 14

Si el archivo en la oreja activa en el editor de código corresponde a una unidad que tienen unformulario asociado (ver siguiente ventana) podemos cambiar el foco entre la ventana deedición del código fuente y el formulario presionando F12 o haciendo click sobre el botón

de la barra de botones de la venta principal.

2.3 Ventana del formulario.La ventana con el formulario nos muestra lo que será la interfaz gráfica del usuario. Esteformulario es un "contenedor" en el que colocaremos los elementos gráficos (botónes,etiquetas, cuadros de texto, etc.) que verá el usuario.

Presionando el botón de la barra de botones de la venta principal o presionando F12cambiamos el foco (o sea la ventana activa) entre el formulario y la ventana de edición delcódigo con el archivo fuente asociado al formulario.

2.4 Ventana Inspector de Objetos.

La ventana "Inspector de Objetos" nospermite modificar las propiedades de unobjeto incrustado en el formulario (o delpropio formulario). En la Ilustración 7, semuestra en la parte superior el árbol deobjetos. En este caso como el único objetoes el formulario "Form1" del tipo "Tform1"el árbol tiene solo ese elemento. Siagregamos un botón en el formulario,veríamos que el mismo aparece en ese árbolcomo dependiendo de "Form1". En la partede abajo de la ventana tenemos laspropiedades editables en tiempo de diseño(o sea ahora, dentro del entorno dedesarrollo, no en tiempo de ejecución).

Las oreja "Propiedaes" contiene campos consus valores. Por ejemplo el campo"Caption" tiene en la figura el valor"Form1" y corresponde al título de laventana.

Ilustración 7: Ventana Inspector de Objetos

Ilustración 6: Ventana del Formulario

Page 8: SimSEE Pordentro002 Lazarus

SimSEE pág. 8 / 14

Supongamos que queremos que nuestra ventana al abrirse diga en la parte superior "Miprimer aplicación". Es tan fácil como hacer click en la fina "Caption" sobre "Form1" ycambiar el valor al deseado.

La oreja "Eventos" nos permite especificar cómo responde el objeto a determinados Eventos.Veremos en el ejemplo más adelante cómo usar esta característica.

Las orejas "Favoritos" y "Restriguido" no son de nuestro interés por ahora.

2.5 Inspector de ProyectoEsta ventana (Ilustración 8) nos permite ver el conjunto de archivos que utiliza el proyecto.Es como un navegador de archivos.Presionando el botón "+" podemosagregar un archivo al proyecto y con el"-" podemos quitarlo. En la figura,vemos el árbol de "Archivos" que eneste caso muestra que el proyecto bajoedición tiene un archivo que se llama"project1.lpr" y otro que se llama"unit1.pas". Estos dos archivos son elprincipal del proyecto (el que tienen elprograma principal) y el que tiene elcódigo de definición y manejo delformulario respectivamente. El árbol"Paquetes Requeridos" hacer referenciaa los paquetes instalados junto al entorno de desarrollo (o agregados posteriormente) queutiliza este proyecto. El paquete LCL es el que contiene los elementos gráficos de Lazarususables en formularios.

2.6 Ventana de Mensajes.En esta ventana aparecen los mensajes del compilador y del linker. También aparecen enesta ventana los resultados de búsquedas si usamos alguna de las funciones en variosarchivos del proyecto.

2.7 Nuestra primer aplicación.Continuando con el ejemplo, antes que nada guardemos el nuevo proyecto y especifiquemosun nombre adecuado tanto para el módulo "Unit1.pas" como par el proyecto en si. Para esovamos al menú "Archivo" y hacemos "Guardar". Como los archivos tienen los nombres pordefecto, nos dará la opción de cambiar los nombres antes de guardar. Elegir la carpetadestino del proyecto y especificar un nombre para los dos archivos. Es aconsejable usar una carpeta para cada proyecto. Por ejemplo si el proyecto se va a llamar"ejemplo1" creamos una carpeta que se llama así "ejemplo1" y guardamos la "unit1.pas" conel nombre "uejemplo1.pas" y el proyecto como "ejemplo1.lpi".

Ilustración 9: Ventana de mensajes

Ilustración 8: Ventana Inspector de Proyecto

Page 9: SimSEE Pordentro002 Lazarus

SimSEE pág. 9 / 14

Es aconsejable usar siempre minúsculas para los nombres de archivos y no poner ni espaciosni eñes ni caracteres raros. Esto es así pues si necesitamos compilar en Linux vamos a tenerproblemas si mezclamos minúsculas y mayúsculas o si usamos caracteres raros.

Una vez salvado el proyecto, probemos "correr" la aplicación. Para eso podemos presionar elbotón . Al presionar ese botón, Lazarus procede a Compilar, Linkeditar y Ejecutar la

aplicación. Si hay errores, se interrumpe el proceso y aparecen los mismos en la ventana demensajes.

En este caso, que aún no hicimos nada en el formulario ni en el código fuente debierafuncionar sin errores. Aparecerán mensajes del compilador del linker y un mensaje deindicando "el proyecto se ha construido correctamente :)" y se abrirá una ventana con elformulario vació pues no le pusimos nada. El título de la ventana dirá "Form1" si nocambiamos la propiedad "Caption" o lo que hayamos puesto en su lugar.

En la opción del menú "Ejectuar" se encuentra la posibilidad de "Construir", "ConstruirTodo" y "Ejecutar" ver Ilustración 10. La opción "Construir" significa compilar solamenteaquellos archivos que hayan sido modificados desde la última vez que se compilo. La opción"Construir Todo" es volver a compilar todo sin importar las fechas de modificación y"Ejecutar" es equivalente a "Construir", linkear y correr.

Por comodidad, hay definidos "atajos de teclado" quenos permiten hacer determinadas acciones sin lanecesidad de levantar los dedos del teclado. Estosatajos aparecen en las ventanas de los menúes. Porejemplo, observar en la misma Ilustración 10 que "Ctr-F9" (Control F9 presionadas juntas) es el atajo para"Construir" y "F9" equivale a "Ejecutar".Bueno ahora introduzcamos algún error para ver quépasa. Vamos a intentar que al cargarse el formulario,cambie el "Caption" (o sea el título de la ventana) a"Hola que tal!".

Activemos la ventana del formulario. Y en el inspectorde objetos, despleguemos las propiedades delformulario, seleccionemos la solapa "Eventos". Unavez abierta esa solapa, hagamos click en la segundacolumna de la fila correspondiente al evento"OnCreate". La idea es que vamos a definir elcomportamiento del formulario frente al evento"OnCreate". Este evento se dispara al crear el formulario y es una oportunidad que tenemosen tiempo de ejecución para inicializar parámetros.

Nos tiene que aparecer algo similar algo similar a lo que se despliega en la Ilustración 11.

Al hacer click sobre el botón "…" que aparece a la derecha del cuadro blanco, se crearáautomáticamente en el editor de código fuente una función pascal que se ejecutará al crearseel formulario.

Ilustración 10: Menú Ejecutar

Page 10: SimSEE Pordentro002 Lazarus

SimSEE pág. 10 / 14

Es dentro de esa función que debemos introducir lo que queremos que el formulario haga alcrearse.

En nuestro caso la idea es asignarle a la propiedad"Caption" del formulario otro valor al momento decrearse.

Pero primero introduzcamos un error para ver cómofunciona el tema de la detección y corrección deerrores.

La Ilustración 13 muestra el procedimiento"TForm1.FormCreate" creado automáticamente porLazarus y en el que le escribí en el cuerpo delprocedimiento (entre el begin y el end) un códigoque intenta asignar a una variable "titulo" el valor ".La sentencia pascal agregada es:

Seguramente Lazarus no tiene ni idea de quíen es"titulo". Intentemos compilar (Ctrl-F9).Y observemos la ventana de mensajes. En laIlustración 13 vemos la ventana de mensajeresultante. Indica que en el archivo vuente unit1.pasen la líne31, carácter 9 encontró un error y no pudoseguir compilando. Además indica que el error fueque no encontró el identificador "titulo".

Automáticamente Lazarus debe de haber activado la ventana de editor de fuentes y debehaber posicionado el cursor sobre el error. Si no lo hizo pude hacer CLICK sobre el error enla venta de errores e irá al error correspondiente.

Bien ahora corrijamos el error, nuestra intención era cambiar el "Caption" del formulario.Nosotros ya sabemos que los formularios tienen esa propiedad porque ya la vimos en el"Inspector de Objetos".

No todas las propiedades de un objeto gráfico aparecen en el "Inspector de Objetos". El tipode objeto gráfico que puede usarse en tiempo de diseño en el entorno Lazarus se llamaCOMPONENTE. Los componentes también se crean con Lazarus y se pueden agregarnuevos componentes a la barra de herramientas. Al momento de diseño de un componente seelige cuales propiedades son publicadas para que sean modificables en tiempo de diseño conel inspector de objetos.

Ilustración 11: Evento OnCreate

Ilustración 12: Error, Identifier not found

Page 11: SimSEE Pordentro002 Lazarus

SimSEE pág. 11 / 14

Bien, ahora cerremos la aplicación (click en la cruz del formulario) y agreguemos algo másinteresante a la misma.

Si ejecutamos la aplicación veremos que se abre una ventana y que el título dice"Hola que tal!", tal como lo programamos.

2.8 Estructura de una UNIDAD PASCAL.

Una aplicación se desarrolla escribiendo el código fuente organizado en diferentes módulos.Cada módulo se escribe en un archivo aparte. La idea es que cada módulo agrupa unconjunto de definiciones e implementaciones que tienen alguna característica que hace quesea natural agruparlas. Por ejemplo veremos que entre las librerías (o módulos) usados enSimSEE tenemos uno en el que se define lo necesario para manejar matrices, otro parapolinomios, etc.

El módulo tiene dos secciones fundamentales. La INTERFACE y la IMPLEMANTATION.En la sección INTERFACE se colocan todas las definiciones (tipos, funciones, variables,clases, etc.) que son públicadas por el módulo. Esto significa que son visibles desde otrosmódulos. En la sección IMPLEMANTATION se escribe el código que implementa las diferentesfunciones y/o procedimientos definidos en la INTERFACE más aquellos que seannecesarios dentro de la IMPLEMENTATION.

Ilustración 13: Escribiendo la respuesta a OnCreate

Page 12: SimSEE Pordentro002 Lazarus

SimSEE pág. 12 / 14

A modo de ejemplo, supongamos un módulo que exporta una función "Producto" paramultiplicar dos números. Un código mínimo para tal módulo sería:

(para visualizar los números de línea en Lazarus hay que habilitar la opción en el menúEntorno-Opciones-Editor-General-Visualizar-y marcar Mostrar números de línea. )

En la línea 1, tenemos la declaración del nombre de la unidad. En este caso "uproducto". Sibien el nombre de la unidad puede tener minúsculas y mayúsculas como este nombrecoincide con el nombre con que se guarda el archivo, es aconsejable usar solamenteminúsculas para evitar problemas si el sistema operativo distingue entre minúsculas ymayúsculas.Con la palabra reservada "interfce" (línea 3 en el ejemplo) comienza la secciónINTERFACE del módulo y se extiende hasta la palabra reservada "implementation".En este caso en la INTERFACE hemos definido la función "Producto" (línea 5) para quedesde fuera del módulo sea visible dicha función. Ha este tipo de encabezado de unafunción, que lo que hace es declarar el nombre, la lista de parámetros y sus tipos y el tipo deresultado de la función es lo que se llama un "prototipo" o "declaración" de una función.Esto es nos dice lo necesario para llamar la función pero no nos dice cómo estáimplementada la función.La sección IMPLEMENTATION del módulo comienza con la palabra reservada"implementation" (línea 7) y va hasta el final del módulo. El final de todo archivo fuente Pascal es un "END." (la palabra END seguida por un punto).El compilador Pascal, cuando procesa los archivos lee el contendio hasta encontrar "END." eignora cualquier cosa que esté escrita después de esa palabra.

Para continuar con el ejemplo, hagamos que el formulario tenga lugar para ingresar dosnúmeros y un botón que al presoinarlo calcule el producto de los números usando la funciónProducto antes definida y que guarde el resultado en otro casillero del formulario puestopara ese propósito.

Comencemos por crear un nuevo proyecto del tipo Aplicación para que nos cree unformulario vacío. Definamos en la UNIT la función Producto como la desarrollamos en lospárrafos anteriores.

Page 13: SimSEE Pordentro002 Lazarus

SimSEE pág. 13 / 14

A continuación hagamos activa ventana del formulario para comenzar a incluir loscomponentes y diseñar el aspecto del formulario. En la siguiente figura se muestran loscomponentes que utilizaremos. Ellos son de izquierda a derenca: Botón, Etiqueta (para ponerlos textos visibles fijos) y Editables (para poner los casilleros en los que ingresar losnúmeros y en el que poner el resultado).

Bueno haciendo click sobre el compoente Editable y luego Click en el fomulario colocamos3 componentes de este tipo. Como veremos automáticamente Lazaurs les pondrá nombresEdit1, Edit2 y Edit3 respectivamente. Si queremos que en lugar de esos nombres tenganotros más significativos podemos seleccionar cada uno y cambiar la propiedad "Name" en elInspector de Objetos. Por ejemplo los podemos renombrar a "eDato_a", "eDato_b" y"eResultado". El texto que aparece en el casillero es el que está en la propiedad "Text".Pongamos por ejemplo inicialmente 0 (cero) en todos los campos "Text" de los Editablespara que el formulario tenga valores coherentes.

Paso seguido, pongamos tres Etiquetas a la derecha de los Editables para ponerle texto queindique al usuario el objetivo de cada campo y un botón. Editar la propiedad "Caption" delbotón para que diga algo como "Calcular". El aspecto del formulario tiene que ser algo asícomo lo que se muestra a continuación:

Ahora, debemos hacer que al hacer Click sobre el botón "Calcular" se calcule el producto delos parámetros "a" por "b" y el resultado sea colocado en "Resultado".

Para ello, hagamos un click sobre el botón (para seleccionarlo) y en el inspector de objetosactivemos la oreja "Eventos". En el panel de los eventos posible debemos activiar el que dice"OnClick". Haciendo Click sobre el botón con "..." que aparece a la derecha del casilleroblanco, Lazarus creará un procedimiento vacío en el editor y posicionará el cursor prontopara que escribamos lo que corresponde hacer en ese lugar.

Botón

EtiquetaEditable

Page 14: SimSEE Pordentro002 Lazarus

SimSEE pág. 14 / 14

La Ilustración 14 se muestra la ventana correspondiente del inspector de objetos.Observar en la misma ilustración el árbol de los componetes que hemos incluído en elformulario hasta el momento. En el código fuente debemos ahora escribir lo quequeremos hacer cuando el usuario haga click.Lo primero es convertir los textos que están en los camposeditables a números reales, luego llamar a la función"Producto" para calcular el resultado y luego convertir elnúmero real resultante a string para cargarlo en el casilleroresultado.

Para la conversión de String a Número Real y a la inversausaremos la funciones "StrToFloat" y "FloatToStr"respectivamente. Estas funciones están definidas en elmódulo "SysUtils" que viene con Lazarus.

En el sitio web http://freepascal.org podemos ver ladocumentación on-line del módulo SysUtils (y de losdemás módulos que bienen con Freepascal).En particular el acceso directo a las funciones de Sysutilsestá en: http://community.freepascal.org:10000/docs-html/rtl/sysutils/index-5.html

El código a escribir sería:

procedure TForm1.Button1Click(Sender: TObject);var a, b, res: double;begin a:= strToFloat( eDato_a.Text); b:= strToFloat( eDato_b.Text); res:= Producto( a, b ); eResultado.Text:= FloatToStr( res );end;

Ilustración 14: EventoOnClick