You are on page 1of 16

Programación Visual con

Gambas

Juan Matías Olmos 2010

1

CAPITULO I Programación y Lenguajes de Programación
Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Al conjunto general de programas se le denomina software, y así se refiere al equipamiento lógico o soporte lógico de una computadora digital. La programación es un proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático. Un lenguajes de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significados de sus elementos y e presiones. !s la forma en que el "ombre se comunica con la máquina para realizar una determinada tarea. Al conjunto de líneas de te to que describen por completo el funcionamiento de un programa se conoce como código fuente, y es este te to lo que escribe un programador en alg#n lenguaje de programación para resolver cierto problema. Así como e isten diversos lenguajes, tambi$n "ay distintas formas de programar una aplicación, a lo que le llamamos paradigmas de programación. Un paradigma representa un enfoque particular o filosofía para la construcción del soft%are. &ada paradigma tiene sus ventajas y desventajas, y dependiendo de la clase de problema a resolver, uno de ellos puede ser más adecuado que otro. La programación imperativa 'tambi$n conocida como programación secuencial( es un paradigma de programación que describe la programación en t$rminos del estado del programa y sentencias que cambian dic"o estado. )e desarrolla de forma ordenada, cada línea de código se ejecuta una por una. Algunos lenguajes que se utilizan para este tipo de programación son !nsamblador, *ortran, &obol y +asic, entre otros. ,tro paradigma de programación com#n es la programación orientada a eventos , en la que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen. )e deben definir los eventos que manejarán el programa y las acciones que se realizarán al producirse cada unos de ellos, lo que se conoce como el administrador de evento. Al comenzar la ejecución del programa se llevarán a cabo las inicializaciones y demás código inicial y a continuación el programa quedará a la espera de alguna acción del usuario o del sistema, es decir, de un evento. !l mejor ejemplo de este tipo de sistema es -isual +asic, el primo privativo de .ambas. Actualmente, el paradigma de programación más usado debido a m#ltiples ventajas respecto a los demás, es la programación orienta a o jetos o /,, ',,/ seg#n sus siglas en ingl$s(. 0onde el elemento fundamental es el o jeto, ya que se basa en la idea natural de la e istencia de un mundo lleno de objetos, entre los cuales se definen sus interacciones para llevar a cabo una tarea. )u uso se popularizó a principios de la d$cada de los a1os 2334. !ntre sus principales características están la "erencia, abstracción, polimorfismo y encapsulamiento5 y sus ventajas claves son la reusabilidad y e tensibilidad.

2

Programación Orientada a O jetos
!ntre los conceptos fundamentales de la programación orientada a objetos se destacan6

1. Clase6 definiciones de las propiedades y comportamiento de un tipo de objeto concreto. 2. 3. 4. 5. 6.

La instancia es la lectura de estas definiciones y la creación de un objeto a partir de ellas. O jeto6 entidad provista de un conjunto de datos o atributos 'propiedades( y de comportamiento o funcionalidad 'm$todos(, los mismo que consecuentemente reaccionan a eventos. !s una instancia de una clase. Propiedad 'o atributo(6 contenedor de un tipo de dato asociado a un objeto 'o a una clase de objetos( y lo define. !l acceso a ellos se "ace a trav$s de los m$todos del mismo objeto. !"todo6 algoritmo asociado a un objeto 'o a una clase de objetos(, normalmente empleado para modificar las propiedades del mismo objeto. 0esde el punto de vista del comportamiento, es lo que el objeto puede "acer. #vento6 !s un suceso en el sistema 'tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto(. !l sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Instancia6 cada objeto es creado a partir de una clase, se dice que tal objeto es una instancia de esa clase. !ntonces, crear una instancia de una clase se conoce como instanciar la clase.

! iste un acuerdo acerca de qu$ características contempla la orientación a objetos, las más importantes son6

1. A stracción6

es la propiedad que permite representar las características esenciales de un objeto, sin preocuparse de las demás 'no esenciales(. 0efinir una abstracción significa tomar la mejor descripción de una entidad del mundo real y utilizarla en un programa. 2. #ncapsulamiento6 el objeto es considerado una cápsula, debe responder a peticiones a trav$s de sus m$todos sin la necesidad de e poner los medios utilizados para llegar a brindar sus resultados. !sta cualidad deriva en una de las ventajas de la /,,, la reusabilidad de objetos. 3. Polimorfismo6 es la capacidad del lenguaje para referirse a un m$todo com#n a varios objetos de diferentes clases 'por ejemplo, objetos de diferentes subclases derivadas de una clase base( llamándolo con el mismo nombre. 4. $erencia6 es la facilidad mediante la cual una clase "ereda cada unos de las propiedades y m$todos de otra clase, como si esas propiedades y m$todos "ubiesen sido definidos por la primer clase.

3

Introducción a %am as
.ambas fue inicialmente creado por +eno7t 8inisini, es un ambiente libre de desarrollo en Linu basado en un int$rprete +asic con e tensiones de objetos, parecido a -isual +asic de 9indo%s 'pero es importante aclarar que :, es un clon(. .ambas es un entorno de desarrollo que se distribuye con la licencia .:U ./L '.eneral /ublic Licence(, conocida en espa1ol como Licencia /#blica .eneral de .:U, con lo cual el proyecto de 8inisini ganó muc"a popularidad. Los programas de computadora suelen distribuirse con licencias propietarias o cerradas, $stas son intransferibles y no e clusivas, es decir, no eres propietario del programa, sólo tienes derec"o a usarlo en un ordenador o tantos como permita e presamente la licencia y no puedes modificar el programa ni distribuirlo. La licencia ./L, desarrollada por la *)*, o *ree )oft%are *oundation '*undación para el )oft%are Libre(, es todo lo contrario. 0efine la libertad de los usuarios sobre su producto adquirido y, por lo tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido con o sin modificaciones libremente. )in embargo, no es obligatorio que el soft%are libre sea siempre gratuito 'free%are(, ya que tambi$n puede ser distribuido comercialmente. !sto significa que un soft%are es libre si garantiza las siguientes libertades6 • Li ertad &6 La libertad de usar el programa con cualquier propósito. • Li ertad '6 La libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a las propias necesidades. • Li ertad (6 La libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prójimo. • Li ertad )6 La libertad de mejorar el programa y "acer p#blicas las mejoras a los demás, de modo que toda la comunidad se beneficie. Las libertades 2 y ; implican que se tenga acceso al código fuente para poder estudiarlo y modificarlo.

4

!l lenguaje está creado para soportar los gestores de ventanas más comunes, como lo son .nome y <0!. !sto significa que una aplicación puede ser compilada para ser ejecutada en los diferentes escritorios sin tener que modificar el código fuente, más bien "abría que elegir las librerías propias de ese escritorio y el programa se comportará como una aplicación nativa de ese entorno. !s una característica #nica entre los entonces de programación para Linu . La versión estable actual 'al momento de la edición de este te to( es la versión =.=2.4, liberada el => de ?ulio de =424, agregando soporte para Arc"Linu . 8ientras que para 8icrosoft 9indo%s o 8ac, la portabilidad está a#n en desarrollo.

Ar*uitectura de %am as
&ada programa escrito en +asic .ambas está compuesto por un conjunto de arc"ivos que forman un proyecto. &ada arc"ivo en el proyecto describe una clase. !stos arc"ivos de clases se compilan inicialmente y a continuación son ejecutados por el int$rprete de .ambas. !sto se parece muc"o a ?ava, justamente, es el lenguaje sobre el que tambi$n se "a inspirado 8inisini. Los componentes necesarios para el desarrollo con .ambas son los siguientes6

✔ Un compilador, un peque1o ejecutable capaz de transformar todo el código fuente y
arc"ivos que formen parte del proyecto "ec"o en .ambas, en un programa ejecutable.

✔ Un int"rprete, encargado de "acer que los programas "ec"os en .ambas sean
ejecutados por el sistema operativo.

✔ Un entorno de desarrollo, que facilite la programación y dise1o de las interfaces gráficas
de los programas.

✔ Componentes que agregan funcionalidades al lenguaje. )on librerías específicas que
permiten e tender las posibilidades del lenguaje, por ejemplo, para el uso de )0L, ,pen.L, ,0+&, cone iones de red, etc. @odos estos componentes son desarrollados por diferentes programadores que aportan al proyecto de .ambas. !n resumen, gracias al estilo de programación, que toma lo mejor del lenguaje +asic y al cual se le agregó programación orientada a objetos, permitió a .ambas ganar rápidamente muc"a popularidad, modernidad, estabilidad y portabilidad entre los desarrolladores de Linu .

Instalando %am as
&omo "abíamos dic"o anteriormente, la #ltima versión estable disponible desde la página %eb oficial de .ambas es la versión =.=2.4, mientras que la versión de desarrollo es la ;.4. !n dic"o sitio se e plican con detalle la instalación de ambas versiones a partir del código fuente, la dirección es +ttp,--gam as.sourceforge.net-en-main.+tml . La solución más rápida y eficiente para el principiante de Linu es recurrir al .estor de /rogramas de tu distribución Linu . /or ejemplo, para Linu 8int 3, en el repositorio podemos encontrar la versión =.23.4 de .ambas, aceptada como estable en los repositorios oficiales de dic"a distribución.

5

0esde el .estor de /rogramas de Linu 8int 3, solo tenemos que seleccionar la aplicación y presionar el botón de instalación. 0e la misma forma se puede desinstalar muy fácilmente.

Luego tendremos el acceso a .ambas desde el !en/ → Programación → %am as( 0%am as almost means 1asic2 como se puede ver en la siguiente figura.

6

#l #ntorno de Programación de %am as

!sta imagen es la pantalla de presentación del !ntorno de 0esarrollo Antegrado de .ambas. &omo se puede ver, lo primero es determinar sobre qu$ proyecto trabajaremos. &omo primera opción podemos crear un nuevo proyecto 'o aplicación(, podemos abrir un proyecto ya e istente desde una ubicación del disco duro, podemos elegir uno de los proyectos usados recientemente, o podemos abrir uno de los tantos ejemplos incluidos en la ayuda de .ambas. )i prefieres comenzar más tarde, tienes el botón para salir. Los ejemplos están clasificados por categorías, en el transcurso de este te to revisaremos algunos de ellos. /ara acceder a ellos entonces elegimos la opción #jemplos.

7

!n la instalación de .ambas, se crea una carpeta en el Bome del usuario, en este caso es C"omeCmatiasC%am as(. !n esta carpeta se guardan todos los arc"ivos que utilices en tu proyecto, y cada proyecto tiene su propia carpeta, cuyo nombre es el nombre que le pongas al proyecto cuando creas uno. !n el caso que est$s copiando un proyecto desde otra computadora o descargando de Anternet, solo tienes que copiar esa carpeta en el directorio .ambas=. Luego eliges la opción A rir proyecto... en la pantalla de bienvenida de .ambas y verás cada uno de tus proyectos, pero no como carpetas, más bien se ven como un arc"ivo com#n que contiene tu proyecto. &on una imagen lo entenderás mejor.

8

/ara ver un primer ejemplo, seleccionaremos la opción 3uevo proyecto..., nos aparecerá la siguiente ventana.

)implemente seleccionamos la primera opción Aplicación gráfica para crear un formulario, y presionamos el botón 4iguiente. A continuación, el asistente nos preguntará qu$ directorio usar para guardar el proyecto, por defecto estará seleccionada la carpeta mencionada .ambas=, pero podemos elegir otra, o bien crear una nueva.

!sta pantalla nos brinda el botón Agregar, con el cual podemos crear un acceso directo a la carpeta actualmente seleccionada que será ubicado en la lista de la izquierda, debajo de Bome, !scritorio y )istema. 0ejamos seleccionada la carpeta .ambas= y presionamos 4iguiente.

9

!n la siguiente ventana de diálogo se requiere ingresar un nombre y un título para el proyecto. Decuerda el nombre del proyecto no puede contener el carácter !)/A&A, y la carpeta del proyecto tendrá este mismo nombre. !ntonces escribimos primerProyecto como nombre y !i primer proyecto como título del proyecto. Luego presionamos O5 para finalizar el asiste, se nos confirmará que el proyecto "a sido creado.

A"ora se nos presentará la #ntorno Integrado de 6esarrollo de %am as 'A0!, Antegrated 0evelopment !nvironment(, el cual presenta varios componentes. A"ora, al igual que cada vez que abramos el A0! veremos una ventana que nos brindará un consejo, es una breve nota sobre un caso particular del uso del lenguaje, la cual cambiará cada vez. !n caso que lo desees, puedes usar los botones Previo y 4iguiente para ver los diferentes consejos, puedes evitar que se abra esta ventana quitando la marca en el opción !ostrar consejos al inicio. Luego cerramos la nota con el botón Cerrar.

10

!n el resto del capítulo usaremos en ejemplo para ir mostrando las capacidades que nos brinda este entorno de programación, la idea es crear una ventana como la siguiente.

Componentes del I6# de %am as
Una vez que estemos en el A0!, "aremos doble clicE sobre *main en la ventana del lado izquierdo, con esto podremos ver nuestro formulario y componentes para dise1arlo como podemos ver a continuación.

!l primer cuadro de la izquierda es el #7plorador de Proyecto, la principal ventana del entorno. :os muestra un árbol de directorios con todos los tipos de arc"ivos del proyecto 'arc"ivos de clases, formularios, módulos y otros tipos de arc"ivos como imágenes, iconos o datos(. Anmediatamente arriba tenemos la 1arra de $erramientas con las principales funciones. &omo ser crear un proyecto nuevo, abrir otro o guardarlo5 crear ejecutable, correrlo, depurarlo5 ver u ocultar los elementos del A0!, etc. )obre la barra de "erramientas tenemos la 1arra de !en/, que no da acceso a todas las características del entorno a trav$s de sus men#s desplegables. -olviendo al e plorador de proyecto, podemos ver que la raíz del árbol es el nombre del proyecto, en nuestro caso primerProyecto. 0e la raíz salen cuatro ramas que describimos a continuación6

11

 Clases6 :os mostrará todo los arc"ivos de clases que tengamos en el proyecto.
+ásicamente son modelos que pueden ser usados para crear objetos en tiempo de ejecución, con código para definir las propiedades, m$todos y controladores de eventos de cada uno de los objetos que se creen. !ódulos6 :os mostrará los módulos escritos para el proyecto. !stos módulos son un conjunto de subrutinas o funciones que suelen utilizarse varias veces desde el programa principal. :o se pueden crear objetos con ellos, y por lo tanto, no tienen controladores de eventos. 8ormularios6 /resenta todos los formularios que "ayamos dise1ado. )on las ventanas con las que el usuario puede interactuar, las cuales las dise1amos insertándole objetos como cuadros de te to, botones, casillas de verificación, listas, etc. 6atos6 /resenta los demás arc"ivos que usemos en el proyecto, como ser imágenes, iconos, te to, arc"ivos B@8L, m#sica, etc.

 

?usto debajo del e plorador de proyecto "ay un peque1o espacio vacío llamada 1arra de #stado, en la cual veremos luego que nos indicará si .ambas está realizando alguna operación, por ejemplo &ompilando proyecto primerProyecto..., durante unos segundos cuando iniciemos la ejecución del proyecto. !n la zona central del A0! tenemos el 6ise9ador de 8ormulario, el cual contiene la apariencia del formulario que estamos dise1ando, sobre el cual arrastraremos y soltaremos los componentes gráficos. 0e aquí sale la principal ventaja de la programación visual, donde podemos rápidamente crear la interfaz del usuario y tenerla lista antes de escribir cualquier código para definir las operaciones de la aplicación. Al "acer doble clicE sobre el formulario, o alguno de los controles que agregues, se mostrará en la misma región el #ditor de Código, donde escribiremos el código necesario para cada uno de los controles que agreguemos al formulario y que determinará el comportamiento de ellos. &omo podrás notar durante la creación de este primer proyecto, el editor de código tiene importantes características que facilitan la codificación y depuración. Algunas de esas características son AutoFcompletado de &ódigo, Desaltado de )inta is, +uscar y Deemplazar. )obre el costado derec"o del A0! tenemos dos componentes importantes para el dise1o de los formularios. !n la mitad superior tenemos el :isor de Propiedades, donde podemos ver todas las características del formulario o del control que tengamos seleccionado es ese momento. &on el mismo visor de propiedades podemos modificar esas características para conseguir que los controles se ajusten en apariencia seg#n nuestras necesidades. !n la mitad inferior tenemos la Caja de $erramientas, la que contiene todos los elementos gráficos que podemos programar en .ambas, los cuales ya fuimos mencionando y son prácticamente todos los elementos .UA disponibles en Linu 'botones, cuadro de te tos, etiquetas, etc(. 0esde esta caja podemos obtener los controles para arrastrarlos al formulario. -olviendo a las barra de men#s y botones, con ello controlamos todas las tareas principales del A0!. La versión actual tiene G men#s que se muestran a continuación.

12

!l men# Arc+ivo con permite crear un proyecto nuevo, abrir uno desde el disco, guardar, ver alg#n ejemplo o salir de .ambas. !l men# Proyecto nos "abilita para definir las propiedades del proyecto y compilarlo para crear un ejecutable, arc"ivo fuente, o paquete de instalación. &on el men# 6epuración podemos controlar las interrupciones en la ejecución del programa, ejecutar linea por linea, etc. &on el men# :ista podemos ocultar o "acer visibles cada unos de los componentes del A0!. 0esde el men# $erramientas tenemos acceso al .estor de +ases de 0atos, las /referencias respecto al A0! y otras más. *inalmente, desde el men# ; 'Ayuda( podemos acceder a la documentación que se instala junto con el entorno. La +arra de Berramientas nos brinda acceso rápido a las funciones de más uso. 0ejando el puntero del mouse sobre los botones nos aparecerá un cuadrito con el nombre.

A"ora que conocemos el entorno de programación, sigamos con el dise1o del formulario que tenemos creado. !n la caja de "erramientas, seleccionamos la pesta1a 8orm5 allí podremos ver los controles más comunes para los formularios. /ara este ejercicio utilizaremos una etiqueta 'la el( y un botón ' utton(. !ntonces seleccionamos con un clicE el control la el de la caja de "erramientas, luego movemos el puntero del mouse sobre el formulario, presionamos el botón izquierdo para comenzar a marcar la zona donde queremos que se dibuje la etiqueta, arrastramos el puntero y lo soltaremos para fijar el tama1o que queríamos. La segunda opción es "aciendo doble clicE sobre el control label en la caja de "erramientas, aparecerá el control dibujado en la esquina superior derec"a del formulario. Una tercera opción es arrastrar el

13

control desde la caja de "erramientas "asta el área del formulario donde deseamos dejarlo. !n cualquier caso, podemos reubicar y redimensionar un control seleccionándolo en el dise1ador del formulario y utilizando los cuadritos blancos que lo rodean. Bacemos lo mismo para ubicar el control utton, el botón. 0eberías conseguir la siguiente apariencia. ,bserva que alrededor del te to Label2 "ay una región sin puntos. !sos puntos sobre todo el formulario se llaman grilla, y nos ayudará a ordenar los controles. La etiqueta se "a estirado un poco, por lo que se ve sin puntos "acia la derec"a del te to. !so es para que entre todo el te to que prendemos mostrar más adelante. /rueba escribiendo tu te to en la propiedad @e t en el visor de propiedades para ajustar el tama1o de la etiqueta.

A"ora editaremos las propiedades de cada objeto para conseguir nuestro objetivo comenzando con el formulario6 !n el e plorador de proyecto "acemos clicE derec"o sobre el #nico formulario que tenemos y elegimos la opción <enom rar... 08(2, y escribimos frm#jercicio'. !n el visor de propiedades buscamos la propiedad Te7t y escribimos !i primer formulario con %am as. !n el botón modificaremos las propiedades desde el visor de propiedades5 entonces 3ame, tn!ostrar y Te7t, !ostrar te7to. )i el botón no tiene el tama1o adecuado, el te to podría ocultarse parcialmente5 en tal caso solo redimensiona su tama1o. !n la etiqueta modificaremos las mismas propiedades que en el botón, usando como nombre l l4aludo y al te to de la propiedad Te7t lo borramos. ,btendremos la siguiente apariencia. A"ora debemos codificar la acción que queremos al presionar el botón. /ara abrir el editor de código tenemos cuatro maneras, la más rápida sería "aciendo doble clicE sobre el botón. La segunda opción es "acer clicE derec"o y elegir la opción Abrir código '&trlH9(. !stas dos opciones nos lleva al editor de código donde veremos que automáticamente se escribieron las instrucciones PU1LIC 4U1 y #36 correspondientes al evento Clic5 de nuestro botón. !ntre ellas escribiremos la acción de nuestro botón, la cual sería l l4aludo.Te7t = >?1ienvenido a la programación con %am as@A. :otarás que al escribir el nombre de la etiqueta, te mostrará un peque1o cuadro con el nombre completo de nuestra etiqueta, es el autoBcompletado, para aprovec"arlo puedes usar la tecla Ta o Intro para continuar escribiendo el I.I, no funcionará con la barra de espacio como puedes "acerlo en otros editores. Al escribir el punto, te saldrá una lista con todas las propiedades y m$todos del control 'de la etiqueta en nuestro caso(, elegimos o escribimos @e t, y completamos el te to que vamos a mostrar.

14

!s un buen momento para guardar nuestro proyecto. Aquí podemos cerrar el entorno, luego de volver a abrir nuestro proyecto, tendremos las cosas tal cual lo vemos a"ora. 0e todos modos este paso no es necesario a"ora, ya que podemos directamente ejecutar nuestra aplicación. Antes de ejecutarse nuestro código, debe guardarse y compilarse5 todo eso se "ace de forma automática al presionar el botón #jecutar o la tecla 8C, con lo cual ya no necesitamos guardar el proyecto. *inalmente podremos ver nuestra ventana funcionando.

/ara cerrar la aplicación podemos presionar el botón con la D '&errar la ventana( que nos ofrece el gestor de ventanas o con el botón Parar de la barra de "erramientas del A0! de .ambas. 8ás adelante usaremos un botón en el formulario programado para terminar la ejecución de la aplicación.

Basta a"ora "emos editado dos tipos de arc"ivos, como podemos ver justo arriba del editor de código. Los arc"ivos que creamos son frm#jercicio'.form, donde tenemos todos los datos del formulario5 y el arc"ivo frm#jercicio'.class, que contiene todo nuestro código. Baciendo clicE sobre la pesta1a con el nombre frm!jercicio2.form volveremos al dise1ador de formulario, y "aciendo clicE sobre frm!jercicio2.class volveremos al editor de código. !sta #ltima es la tercera forma de acceder al código de nuestro control. )i abrimos nuestro navegador de arc"ivos preferido y accedemos a la carpeta de nuestro proyecto, podremos ver que allí se encuentran nuestros dos arc"ivos. Decordemos que ambos tiene el nombre que elegimos para nuestro formulario.

15

!n el siguiente capítulo veremos los fundamentos de la programación en +asic, los tipos de datos que se utilizan y la sinta is de las instrucciones básicas que se utilizan en cualquier lenguaje de programación.

1i liografEa6 8g. Ang. *átima del &. 8artínez5 =44J5 KAntroducción a -isual +asicL5 @ucumán5 Argentina Luis ?oyanes Aguilar5 233G5 K/rogramación ,rientada a ,bjetosL5 8c.ra%FBill5 8adrid5 !spa1a ?o"n 9 Ditting"ouse5 =44M5 KA +eginnerIs .uide to .A8+A)L 9iEipedia5 K/rogramaciónL5 "ttp6CCes.%iEipedia.orgC%iEiC/rogramacion5 accedido 2=CoctC=424 9iEipedia5 K)oft%are LibreL5 "ttp6CCes.%iEipedia.orgC%iEiC)oft%areNlibre5 accedido 2=CoctC=424

16