Gambas

Introducción

Gambas (Gambas Almost Means Basic) es un lenguaje de programación de alto nivel libre basado en BASIC y es distribuido bajo la licencia GNU GPL.

Permite crear formularios con botones de comandos, cuadros de texto y muchos otros controles y enlazarlos a bases de datos como MySQL, PostgreSQL o SQLite además de facilitar la creación de aplicaciones muy diversas como videojuegos (utilizando OpenGL), aplicaciones para dispositivos móviles (en desarrollo pero muy avanzado), aplicaciones de red (con manejo avanzado de protocolos HTTP, FTP, SMTP, DNS), entre otras.

La documentación oficial de Gambas contiene mucha información acerca de las funciones que existen en el lenguaje y la sintaxis para utilizarlas. Considere a la documentación a partir de hoy como su mejor y fiel amigo en el estudio y la realización de programas en Gambas.

Gambas permite escribir facilmente aplicaciones para la consola -en modo texto- y aplicaciones gráficas.

IDE de Gambas

La ventana principal de Gambas versión 3 tiene un aspecto como lo muestra la imágen:

Podemos observar en la imágen los elementos principales que componen Gambas, los cuales son los siguientes:

Variables

Los programas manejan datos continuamente. Estos datos pueden ser de muchos tipos: números, letras, textos, etc., y cambiar a lo largo de la ejecución del programa (en ese caso reciben el nombre de variables) o permanecer con un valor fijo durante todo el tiempo (entonces se denominan constantes). A los datos que usa un programa se les denomina un nombre identificador.

Hay dos lugares donde se pueden declarar las variables, dependiendo del ámbito en el que se vayan a usar. Si se declaran dentro de una subrutina o función, están disponibles para ser usadas dentro del ámbito correspondiente. Si se declaran al principio del archivo de código están disponibles para todo el código de ese archivo, en todas sus subrutinas.

La sintaxis para declarar variables en Gambas es la siguiente:

        Dim nombreVariable As tipoDeDato

La declaración de todas las variables en Gambas deben iniciar con la palabra clave Dim y finalizadas con el tipo de dato que se desea declarar la variable. Observe que antes del tipo de dato es necesario escribir la palabara clave as.

Las variables son un contenedor de información y existen diferentes tipos de información que se pueden almacenar, a esto se le conoce como tipo de dato. Los tipos de datos que existen en Gambas son los siguientes:

Constantes

En un programa es común tener parámetros que no cambian de valor durante la ejecución. Para estos casos resulta muy práctico utilizar constantes. Las constantes se definen sólo al principio de un archivo de módulo o clase, no se pueden definir dentro de las subrutinas y funciones

La sintaxis es la siguiente:

        { Public | Private } Const nombreVariable As TipoDato = Valor constante

Ejemplo. Se declara una constante que tiene el valor constante del número pi.

        Public Const p As Float = 3.141596

Escritura

En muchos programas es frecuentemente necesaria la entrada y salida de datos, para ello existen un par de funciones de entrada y salida. Para el caso de entrada, o bien lectura, se utiliza la siguiente sintaxis.

        Print [ # Flujo , ] Expresión [ { ; | ;; | , } Expresión ... ] [ { ; | ;; | , }  ]

La instrucción Print permite imprimir expresiones y dirijirlos a un flujo de salida, que por defecto es la salida estándar (la pantalla). Las expresiones que se pueden imprimir son variables, cadenas de caracteres y combinaciones de ellas.

Esta función permite algunas opciones en cuanto se imprimen las expresiones. Dichas opciones son las siguientes:

Ejemplo 1: La siguiente instrucción imprime el contenido de la variable x en pantalla y hace un salto de línea.

          Print x

Ejemplo 2: La siguiente instrucción imprime el caracter x en pantalla y hace un salto de línea.

          Print "x"

Ejemplo 3: La siguiente instrucción imprime la cadena de caracteres "Hola mundo cruel" en la pantalla, deja el cursor inmediatamente después del ultimo caracter impreso.

          Print "Hola mundo cruel.";

Ejemplo 4: La siguiente instrucción imprime la cadena de caracteres "Hola mundo cruel" en la pantalla, al final hace un salto de linea.

          Print "Hola";; "mundo";; "cruel."

Ejemplo 5: La siguiente instrucción imprime una cadena de caracteres y el contenido de una variable en la pantalla. Si por ejemplo x=4, la impresión en pantalla seria: "El contenido de la variable es 4."

          Print "El contenido de la variable es";; x ; "."

Lectura

Para el caso de la lectura de información hacia el programa se utiliza la función Input con la siguiente notación:

          Input [ # Flujo , ] Variable [ , Variable ... ]
Lee desde Flujo, y convierte elementos separados por caracteres de espacio o retornos de carro con la función Val antes de situar el valor en las variables. Si no se especifica el flujo, se lee de la entrada estándar. Las variables deben ser declaradas antes de utilizarse con esta función.

Es posible leer varios datos con un solo Input, separando las variables con comas. Los valores se leerán uno a la vez y se guardarán en las variables en el orden en que fueron escritas en la función. Las variables pueden ser de diferentes tipos, son independientes entre ellas.

Ejemplo 1. La siguiente función solicita un número y lo guarda en la variable x.

          Input x

Ejemplo 2. La siguiente instrucción lee una cadena de caracteres y la guarda en la variable nombre.

          Input nombre

Ejemplo 3. La siguiente instrucción guarda el nombre de una persona, su edad y su RFC.

          Input nombre, edad, rfc

Operadores aritméticos, relacionales y lógicos

Operadores Aritméticos

Cuando se trata de trabajar con números, Gambas tiene las operaciones habituales en casi todos los lenguajes de programación. Para poder realizar operaciones aritméticas necesitamos de operadores aritméticos. El resultado de una operación será un número.

Operador Operación Ejemplo Resultado
^ Potencia 4^3 64
* Multiplicación 8.25*7 57.75
/ División 15/4 3.75
+ Suma 125.78 + 62.50 188.28
- Resta 65.30 - 32.33 32.97
Mod Módulo (Residuo de la división) 15 Mod 2 1
Div División Entera 17 Div 3 5

Operadores Relacionales

Los operadores relacionales permiten comparar dos operandos. Los resultados pueden ser números, alfanuméricos, constantes o variables. Las constantes o variables pueden ser a su vez de tipo entero, real, caracter o cadena de caracteres. El resultado de una expresión con operadores relacionales es verdadero o falso.

Operador Operación Ejemplo Resultado
= Igual que 'Hola' = 'Lola' False
<> Diferente de 'a'<>'b' True
< Menor que 7<15 True
> Mayor que 22>11 True
>= Menor o igual que 22<=15 False
>= Mayor o igual que 35>=20 True

Operadores Lógicos

Los operadores lógicos permiten formular condiciones complejas a partir de condiciones simples. Los operadores lógicos son de conjunción (o), disyunción (y) o negación (no).

Operador Operación Ejemplo Resultado
Or Conjunción: O Lógica 4>5 Or 6>5 True
And Disyunción: Y Lógica 4>5 Or 6>5 False
Not Negación: No Lógico Not 4>5 True

Jerarquía de Operaciones

Al evaluar expresiones que contienen operadores aritméticos debemos representar la jerarquía en el orden correcto. Es decir, si tenemos en una expresión más de un operador, debemos aplicar primero el operador de mayor jerarquía, resolver esa operación y así sucesivamente.

Operador
()
Funciones y Subrutinas
^
*, /, Div, Mod
+, -
=, <>, <, >, <=, >=
Not
And
Or

Es importante señalar que el operador () es un operador asociativo que tiene la prioridad más alta en cualquier lenguaje de programación. La siguiente tabla muestra la jerarquía de los operadores aritméticos. Mientras más arriba en la tabla se encuentre el operador, mayor será su jerarquía; mientras más abajo en la tabla se encuentre el operador, menor será su jerarquía.

Cuando se evalúa una expresión que tiene operadores aritméticos, lógicos y/o relacionales, Gambas lo resuelve de acuerdo a la jerarquía de las operaciones comenzando con la mayor jerarquía hacia la menor. Si en algún momento hubiera empates, dos operaciones con la misma jerarquía, las realiza comenzando de izquierda hacia la derecha.

Conversiones de datos

Gambas permite distintas conversiones de datos. La forma de hacer la conversión puede ser explícita o implícita. Son conversiones implícitas cuando el propio intérprete de Gambas se encarga de gestionarlas. Por ejemplo:

          Dim resultado As Single
          Dim operando1 As Single
          Dim operando2 As Integer

          operando1 = 3.5
          operando2 = 2

          resultado = operando1 * operando2
En este caso, para poder realizar la multiplicación, el compilador convierte la variable operando2 a tipo Single.

Por otro lado, las conversiones explícitas las que deben hacer que el programador al escribir el código para poder realizar operaciones. Estas conversiones se hacen mediante funciones que están incluidas en Gambas. Las funciones de conversión son las siguientes:

Funciones Especiales

Aparte de los operadores existen funciones matemáticas para realizar cálculos complejos o especiales: