SlideShare una empresa de Scribd logo
1
ESCUELA MILITAR DE INGENIERIA
“Mcal. Antonio José de Sucre”
Unidad Académica La Paz
SISTEMTAS COMPUTACIONALES
PROGRAMACION EN GAMBAS
DOCENTE:
ING. LOZANO MANTILLA CESAR
ESTUDIANTES:
BLANCO ROSPIGLIOZZI SAMUEL 4921502
CASTELLON SANCHEZ LUIS 7070050
SERRANO FLORES GERSON 6832536
GRUPO:
6
FECHA:
23 DE OCTUBRE DE 2018
LA PAZ-BOLIVIA
2
Contenido
ANTECEDENTES................................................................................................................3
OBJETIVOS ..........................................................................................................................3
MARCO TEORICO ..............................................................................................................4
Organización de Un proyecto de Gambas...................................................................4
Declaración de variables. ...............................................................................................4
Tipos de datos. .................................................................................................................7
Conversión de tipos.........................................................................................................9
Operaciones matemáticas............................................................................................11
MARCO PRACTICO..........................................................................................................12
Funciones y Subrutinas.................................................................................................12
Subrutinas .......................................................................................................................12
Funciones........................................................................................................................14
APLICACIÓN ......................................................................................................................17
Programa gambas 3.11.4 .............................................................................................17
Nuevo proyecto ..............................................................................................................18
resultado..........................................................................................................................20
BIBLIOGRAFIA...................................................................................................................21
3
ANTECEDENTES
Gambas es un lenguaje de programación libre derivado de BASIC (de ahí que
Gambas quiere decir Gambas Almost Means Basic). Se distribuye con
licencia GNU GPL. Cabe destacar que presenta ciertas similitudes con Java ya que
en la ejecución de cualquier aplicación, se requiere un conjunto de librerías
intérprete previamente instaladas (Gambas Runtime) que entiendan el bytecode de
las aplicaciones desarrolladas y lo conviertan en código ejecutable por el
computador.
Permite crear formularios con botones de comandos, cuadros de texto y muchos
otros controles y enlazarlos a bases de datoscomo MySQL, PostgreSQL o SQLite
además de facilitar la creación de aplicaciones muy diversas como videojuegos
(utilizando OpenGL), aplicaciones para dispositivos móviles, aplicaciones de red
(con manejo avanzado de protocolos HTTP, FTP, SMTP, DNS), entre otras .
Gambas nació como respuesta a la necesidad de tener un entorno de desarrollo
rápido de aplicaciones (RAD) que cumple la necesidad de muchos programadores
del lenguaje de Microsoft de tener un lenguaje de programación sencillo para
plataformas libres (como GNU/Linux y BSD).
A pesar de estar basado en el lenguaje BASIC y poseer gran similitud con Visual
Basic, Gambas no es una copia de este último.
Componentes
 Un compilador.
 Un intérprete.
 Un archivador.
 Una interfaz gráfica de usuario.
 Un entorno de desarrollo integrado.
OBJETIVOS
Diseñar una aplicación que permita el manejo de funciones empleando lenguaje
de programación Gambas.
4
MARCO TEORICO
Ahora, estudiaremos, principalmente, la sintaxis e instrucciones más importantes
del lenguaje BASIC que usa Gambas. Buena parte de estas instrucciones existen
en el BASIC estándar y algunas otras son extensiones propias de Gambas.
Organización de Un proyecto de Gambas
El código fuente de los programas hechos en Gambas está compuesto de uno o
más archivos que forman un proyecto. Este proyecto se archiva en un directorio del
mismo nombre.
Los archivos de código pueden ser: Módulos (contienen código en BASIC que se
ejecuta directamente), Clases (contienen el código en BASIC que ejecuta un objeto
de esa clase) y Formularios (áreas donde se diseña la interfaz gráfica de la
aplicación y que se corresponden con las ventanas del programa).
Los proyectos de texto sólo contienen Módulos y/o Clases. Las aplicaciones
gráficas contienen Formularios y Clases, pero también pueden contener Módulos.
Los archivos que contienen código en BASIC (Módulos y Clases) siempre están
estructurados de la siguiente manera:
 Declaración de variables.
 Subrutinas y Funciones.
Declaración de 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 asigna un nombre identificador.
BASIC permitía usar variables y constantes sin haberlas declarado antes, es decir,
sin haber expuesto al principio del programa un listado con las variables que se iban
a usar.
5
Eso produce programas ilegibles en cuanto empiezan a ser de tamaño medio y es
una fuente constante de errores. Para evitar esto, Gambas obliga a declarar las
constantes y las variables antes de utilizarlas.
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 (en el
siguiente apartado se verá con detalle que son las subrutinas y funciones), están
disponibles para ser usadas sólo dentro de esa subrutina o función. Si se declaran
al principio del archivo de código (sea un Módulo o una Case) están disponibles
para todo el código de ese archivo, en todas sus subrutinas.
Para declarar tina variable en una subrutina o función se emplea la sintaxis:
DIM nombre_variable AS tipo_variable
El tipo_variable hace referencia al tipo de dato de la variable: número entero, cadena
de texto, número decimal, etc. El nombre de la variable lo elige el programador
libremente. Siempre es recomendable que sea algo que indique para qué se va a
usar la variable. Es decir, se debe huir de nombres como a, b, c, etc., y usar, por
ejemplo, edad, fecha_nacimiento, altura, etc.
Las variables que se declaren en una subrutina o función sólo se usarán dentro de
ellas, cuando terminen se destruirán. Eso permite utilizar el mismo nombre de
variable dentro de distintas subrutinas y su valor nunca se confundirá o mezclará.
Para declarar una variable al principio del Módulo o clase usamos la sintaxis:
[STATIC] (PUBLIC | PRIVATE) nombre_variable AS tipo_variable
Si se define la variable como PRIVATE, estará disponible dentro de todo el fichero,
pero no será accesible desde otros ficheros del mismo proyecto. Si se la declara
como PUBLIC, se podrá acceder a la variable desde un fichero del proyecto distinto
a donde se declaró.
La palabra STATIC se usa en los archivos de Clase, no en los Módulos. Sirve para
definir un comportamiento especial en todos los objetos de una misma clase. En
6
pocas palabras se podría explicar con un ejemplo: si tenemos una clase perro,
tendremos algunas variables corno color, raza, peso, etc., y cada objeto perro
tendrá su propio valor en cada una de esas variables.
Al mismo tiempo, podemos declarar una variable que sea numero_de_patas, de
forma que si cambiamos su valor de 4 a 3, todos los objetos perros tendrán 3 patas
y cada uno seguirá con su propio peso, color, etc. En este caso, la
variable numero_de_patas se declararía STATIC en el código BASIC del archivo de
la clase perro. Se verá todo este comportamiento más adelante en este mismo
capítulo. 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:
(PUBLIC | PRIVATE ) CONST nombre_constante AS tipo_constante = valor
Por tanto, al igual que las variables, pueden ser privadas o públicas.
Veamos un ejemplo de todo esto:
’Gambas module file
‘Archivo de Módulo con el nombre: ejemploVariables
PRIVATE edad AS Date
PRIVATE altura AS Single
PRIVATE CONST Pi = 3.141592
PUBLIC calidad AS Integer
PUBLIC SUB Subrutina1()
DIM num AS Integer
DIM nombre AS String
edad = 30
num = 54
END
PUBLIC SUB Subrutina2()
DIM num AS Integer
7
DIM apellido AS String
edad = 32
num = 4
END
En este ejemplo vemos que las variables edad y altura se pueden usar en todo el
archivo. Por tanto, después de ejecutar la Subrutina1, edad valdrá 30 y, después de
ejecutar la Subrutina2valdrá 32. Vemos también cómo la variable num está definida
en las dos subrutinas. El valor de num desaparece al acabar cada una de las
subrutinas y, por tanto, durante Subrutinal valdrá 54 y durante Subrutina2 valdrá 4,
pero después de que se ejecute el END de cada una de esas dos subrutinas,
simplemente no existirá y si se hace referencia a num en cualquier otro punto del
programa se producirá un error.
Finalmente, vemos que la variable calidad está definida como pública. Esto significa
que desde cualquier otro archivo del programa se puede hacer referencia a ella
mediante el nombre ejemploVariables.calidad, donde ejemploVariables es el
nombre que se le ha dado al fichero donde se ha declarado calidad.
Tipos de datos.
Ya hemos visto a lo largo de los textos anteriores el uso de variables y cómo se
declaran.
Hasta el momento, sólo conocemos algunos tipos de datos. Revisemos ahora
todos los que soporta Gambas:
 Boolean: es un tipo de dato que suele ser el resultado de una comparación.
Sólo acepta dos valores: False y True (Falso y Verdadero en español).
 Byte: representa un número entero positivo entre 0 y 255.
 Short: representa un número entero con valores posibles entre -32.768 y
+32.767.
8
 Integer: representa un número entero con valores posibles entre -
2.147.483.648
y +2.l47.483.647
 Long: representa un número entero con valores posibles entre
-9.223.372.036.854.775.808 y +9.223.372.036.854.775.807.
 Single: representa un número real, con decimales, con valores posibles
entre
-1,7014118E+38 y +1,7014118E+38.
 Float: representa un número real, con decimales, con valores posibles
entre
-8,988465674311 05E+307 y +8,988465674311 05E+307.
 Date: sirve para almacenar un valor de fecha y hora. Internamente, la fecha
y hora se almacena en formato UTC, al devolver el dato se representa en el
formato local, según la configuración del ordenador.
 String: se usa para almacenar una cadena de texto. En BASIC las cadenas
de texto se asignan mediante dobles comillas.
 Variant: significa cualquier tipo de dato, es decir, puede almacenar
un Integer, Single, String, etc. Se debe evitar su uso porque ocupa más
memoria que los anteriores y los cálculos con Variant son mucho más
lentos.
 Object: representa cualquier objeto creado en Gambas.
Será el programador el que elija el tipo de dato con el que debe ser declarada una
variable. Siempre se ha de tender a usar los tipos de datos más pequeños, puesto
que ocupan menos memoria y el microprocesador los maneja con más
velocidad. Sin embargo, eso puede limitar las opciones de la aplicación, por lo que
a menudo se opta por tipos mayores para no cerrar posibilidades.
Por ejemplo, si se va a usar una variable para definir la edad de una persona, lo
lógico es utilizar un dato de tipo byte (el valor máximo es 255). Sin embargo, si la
edad a guardar es la de un árbol, es conveniente usar un tipo Short, ya que puede
haber árboles con más de 255 años, pero no se conocen con más de 32.767.
9
Conversión de tipos.
Gambas permite distintas conversiones entre tipos de datos. La forma de hacer la
conversión puede ser implícita o explí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 intérprete convierte, de forma
transparente para el programador, el operando2 a un valor Single. Son
conversiones explícitas las que debe hacer el programador al escribir el código
para poder realizar operaciones, mezclar datos de distintos tipos, etc.
Estas conversiones se hacen mediante unas funciones que están incluidas en el
BASIC de Gambas. Evidentemente, la conversión se hará siempre que sea
posible, si no lo es, producirá un error. Éste es el listado de funciones de
conversión existente:
 CBool(expresión): convierte la expresión a un valor booleano, verdadero o
falso. El resultado será falso si la expresión es falsa, el número 0, una cadena
de texto vacía o un valor nulo. Será verdadero en los demás casos. Por
ejemplo:
Devuelven False las siguientes operaciones: Cbool(””), Cbool(0), Cbool(NULL).
Devuelven True las operaciones: Cbool(1), Cbool(”Gambas”).
 CByte(expresión): convierte la expresión en un valor tipo Byte. Primero se
convierte la expresión a un número binario de 4 bytes. Si este número es
mayor de 255, se corta recogiendo los 8 bits de menor peso. Por
ejemplo, Cbyte(”17”) devuelve 17, pero Cbyte(l00000) devuelve 160. El valor
10
160 es debido a que el número 100.000 en binario es 11000011010100000,
sus 8 últimos bits son 10100000, que pasado de binario a decimal da lugar a
160. Si no sabemos operar con números binarios lo mejor que se puede
hacer es evitar este tipo de conversiones que resultan en valores tan
“sorprendentes”
 Short(expresión), Cint(expresión) o CInteger(expresión), y Long(expresión):
convierten, respectivamente, la expresión en un número de tipo Short,
Integer y Long. En el caso de CShort la conversión se realiza igual que
para CByte, pudiendo producirse resultados extraños igualmente si la
expresión resulta en un número mayor de 32.767.
 CDate(expresión): convierte la expresión en una fecha, pero hay que tener
cuidado porque no admite el formato de fecha local, sólo el formato
inglés mes/día/año horas:minutos:segundos. Es decir, CDate( “09/06/1972
01:45:12”) es el día 6 de septiembre de 1972.
 CSingle(expresión) o CSng(expresión) y
CFloat(expresión) o cflt(expresión): convierten, respectivamente, la
expresión en un número del tipo Single y Float. La expresión debe usar el
punto (.) y no la coma (,) como separador decimal.
 CStr(expresión): convierte la expresión en una cadena de texto sin tener en
cuenta la configuración local. Por tanto, Cstr(1.58) devuelve la cadena de
texto 1.58, independientemente de si la configuración local indica que el
separador decimal es el punto o la coma, o CStr(CDate(”09/06/1972
01:45:12”)) devuelve “09/06/1972 01:45:12”.
 Str$(expresión): convierte la expresión en una cadena de texto, teniendo en
cuenta la configuración local. Por tanto, Str$(1.58) devuelve la cadena de
texto 1,58, si la configuración local está en español. Del mismo
modo, Str$(CDate(”09/06/1972 01:45:12”)) devuelve “06/09/1972
01:45:12” si la configuración local está en español, puesto que en este idioma
la costumbre es escribir las fechas en la forma día/mes/año.
 Val (expresión): convierte una cadena de texto en un tipo Boolean, Date o
alguno de los tipos numéricos, dependiendo del contenido de la
11
expresión. Val es la función opuesta de Str$ y, por tanto, también tiene en
cuenta la configuración local del ordenador en el que se ejecuta. Intenta
convertir la expresión en un tipo Date, si no puede en un número con
decimales, si tampoco puede en un número entero y si, finalmente, tampoco
puede la convierte en un tipo Boolean.
Operaciones matemáticas.
Cuando se trata de trabajar con números, Gambas tiene las operaciones
habituales en casi todos los lenguajes de programación:
+.-,* y / se usan, respectivamente, para la suma, resta, multiplicación y división.
^ es el operador de potencia, por ejemplo, 4 ^ 3 = 64.
Para la división hay dos operadores adicionales, / o DIV y MOD, que devuelven,
respectivamente, la parte entera del resultado de la división y el resto. Es decir,
9DIV2=4, 9/2=4 y 9MOD4=1.
Aparte de estos operadores existen las siguientes funciones matemáticas para
realizar cálculos más complejos:
 Abs(número): devuelve el valor absoluto de un número.
 Dec(número): decrementa un número.
 Frac(número): devuelve la parte decimal de un número.
Inc(námero): incrementa un número.
 Int(núrnero): devuelve la parte entera de un número.
 Max(númerol, número2, ...): devuelve el número mayor.
 Min(númerol, número2, ...): devuelve el número menor.
 Round(número,decimales): redondea un número con los decimales
deseados.
 Sgn(número): devuelve el signo de un número.
 Rnd([mínimo],[máximo]): devuelve un número aleatorio comprendido
entre mínimo y máximo. Si no se expresa ningún valor para mínimo y
12
máximo, el número estará comprendido entre 0 y 1. Si sólo se expresa un
valor, el número estará comprendido entre el 0 y ese valor. Muy importante:
antes de usar Rnd es necesario ejecutar la instrucción Randomize que
inicializa el generador de números aleatorios. Si no se hace, se obtendrá el
mismo número en sucesivas ejecuciones de Rnd.
MARCO PRACTICO
Funciones y Subrutinas
Programar requiere algún tipo de organización en la escritura de código. No
organizar de alguna forma el código que se escribe solo dificulta la lectura y
modificación del mismo para el programador.
Organizar el código tiene muchas ventajas, una muy importante es la reusabilidad
del código. Es común que al escribir algún programa existas operaciones que se
requieren repetir en diversas secciones del código, con diferentes parámetros.
Resultaría impráctico e ineficiente escribir una y otra vez el fragmento de código
cada vez que se necesite, en lugar de eso es útil escribir ese código en una parte
especial del programa y mandarlo llamar cada vez que se necesite, incluso con
parámetros diferentes. A esto se le conoce como reutilización de código.
En Gambas el código se organiza dividiéndolo en procedimientos. Existen dos tipos
de procedimientos: subrutinas y funciones.
Subrutinas
Una subrutina es un procedimiento que ejecuta cierta acción y obtiene un resultado.
Las subrutinas pueden o no recibir parametros para su ejecución y no devuelven un
resultado.
La sintáxis para escribir una subrutina es la siguiente:
Public Sub nombreSubrutina (p1 As Tipo_variable, p2 As Tipo_variable, ...)
código que ejecuta la subrutina
13
End
Observe que la sintaxis de la subrutina requiere de un nombre único con el que se
identificará dentro del programa. Opcionalmente se le puede enviar algún parámetro
el cual la subrutina lo recibe con las variables que se declaran dentro de los
paréntesis que están inmediatamente despues del nombre. El código que forma
parte de la subrutina se debe escribir hasta antes de la palabra clave End.
El código de la subrutina debe escribirse al final del programa, justo después de que
termina la rutina principal.
Ejemplo. Esta Subrutina calcula el promedio de dos números que recibe como
argumento.
Public Sub Main()
media(4,8)
End
Public Sub media(valor1 As Integer, valor2 As Integer)
Print (valor1 + valor2) / 2
End
El programa funciona de la siguiente forma: La rutina principal incia y cuando la
ejecución alcanza la líena donde se ecuentra media(4,8), Gambas busca una
función o subrutina que se haya declarado al final de la rutina principal y brinca la
ejecución hasta ese punto del programa. Al brincar, se envían los
números 4 y 8 como argumentos de la subrutina.
Ya en la subrutina, se reciben los dos números 4 y 8 como argumentos y se
almacenan en las variables valor1 y valor2 respectivamente. Observe que en ese
momento se convierte ese argumento al tipo de dato que se delcara en la subrutina,
14
en este caso Integer. Por esta razón si el argumento no fuera entero, se convertiría
a Integer al guardarse en la variable.
Dentro de la subrutina se realiza el cálculo y la impresión del resultado. Una vez que
se alcanza el End de la subrutina, se brinca de vuelta al punto donde ésta fue
llamada y como ya no hay más intrucciones se completa así la ejecución del
programa.
Las variables valor1 y valor2 solamente existen dentro de la subrutina. Esto sigifica
que cuando se manda llamar la subrutina, se declaran tales variables y ellas solo
existen en el ámbito de la subrutina. Una vez que termina la ejecución de la
subrutina estas variables se destruyen. A este tipo de variables se les
llama variables locales.
Es posible que una subrutina llame a otras subrutinas a su vez, incluso puede
llamarse a sí misma.
Funciones
Una función es un procedimiento que ejecuta cierta acción y obtiene un resultado.
Las funciones pueden o no recibir parametros para su ejecución y pueden o no
devolver algún resultado.
La sintáxis para escribir una función es la siguiente:
Public Function nombreFuncion (p1 As Tipo_variable, p2 As Tipo_variable,
...) As tipoDato
código que ejecuta la función
Return
End
La sintaxis de la función requiere de un nombre único con el que se identificará
dentro del programa. Opcionalmente se le puede enviar algún parámetro el cual la
función lo recibe con las variables que se declaran dentro de los paréntesis que
15
están inmediatamente despues del nombre. El código que forma parte de la función
se debe escribir hasta antes de la palabra clave End.
Tal como la subrutina, el código de la función deberá escribirse después de la rutina
principal.
Ejemplo. Esta Función calcula el promedio de dos números que recibe como
argumento.
Public Sub Main()
dim x as Float
x = media(4,8)
Print "El promedio es: "; x
End
Public Function media(valor1 As Integer, valor2 As Integer) As Float
dim p as Float
p = (valor1 + valor2) / 2
Return p
End
El programa funciona de la siguiente forma: La rutina principal incia, se declara la
variable x y cuando la ejecución alcanza la líena donde se ecuentra x = media(4,8),
Gambas busca una función o subrutina que se haya declarado al final de la rutina
principal y brinca la ejecución hasta ese punto del programa. Al brincar, se envían
los números 4 y 8 como argumentos de la subrutina.
Una vez que la ejecución llegó a la función, se reciben los dos números 4 y 8 como
argumentos y se almacenan en las variables
16
locales valor1 y valor2 respectivamente. Observe que en ese momento se convierte
ese argumento al tipo de dato que se delcara en la función, en este caso Integer.
Por esta razón si el argumento no fuera entero, se convertiría a Integer al guardarse
en la variable.
En la función se declara la variable local p como Float. Luego se realiza el cálculo y
se almacena en la variable p. Posteriomente se invoca a la instrucción Return, la
cual se encarga de devolver el contenido de la variable que se le pasa como
argumento, en este caso p. Returndevuelve el contenido de la variable x al punto
donde fue invocada la función, en este caso ese valor se almacena en la variable
local x de la subrutina principal.
Las variables valor1 y valor2 solamente existen dentro de la función. Esto sigifica
que cuando se manda llamar la función, se declaran tales variables y ellas solo
existen en el ámbito de la función. Una vez que termina la ejecución de la función
estas variables se destruyen. A este tipo de variables se les llama variables locales.
Es posible que una función llame a otras subrutinas o funciones a su vez, incluso
puede llamarse a sí misma.
Nota Importante: Los arreglos y objetos siempre se pasan por referencia. Es decir,
si se pasa como parámetro un arreglo de elementos Integer a una función, al
modificarlo dentro de la función, se verá modificado el original.
17
APLICACIÓN
Programa gambas 3.11.4
Una vez instalado el programa Gambas 3 en Ubuntu tenemos el siguiente menú al
ingresar:
Ingresamos a new projet
18
Donde podemos trabajar en distintas plataformas, en este caso ingresaremos a
graphical application, luego en Next y colocamos las direcciones de nuestro
proyecto.
Nuevo proyecto
Una vez creado el proyecto empezamos a colocar todas las funciones que
necesitamos para esto tenemos botones y textos:
En cada una de estas funciones hacemos click para empezar a programas según
se requiere que realice cada una de ellas
19
Se puede observar que cada botón tiene su línea de comando a realizar
20
resultado
Al final como resultado tenemos el siguiente programa que puede ser ejecutado en
forma gráfica para el usuario.
21
BIBLIOGRAFIA
Duarte, E. 9 de diciembre, 2016. Programación en Gambas.
http://blog.capacityacademy.com/2016/12/09/curso basico de gambas
Felipe Alvaro. (sin fecha). Instalar gambas en Ubuntu 18.04.
https://ed.team/blog/instalar-sistemas-de-64-bits-en-vmware
Administrador. (sin fecha). Introducción a Gambas. http://cursohacker.es/mi primer
programa en gambas

Más contenido relacionado

Similar a Programacion_Gambas.docx

Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
juliancetis109
 
Programacion
ProgramacionProgramacion
Programacion
michaelascanio
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completadoKai Exo
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
RamonMartinespaa
 
Investigac programac 5º unidad
Investigac programac 5º unidadInvestigac programac 5º unidad
Investigac programac 5º unidadK Manuel TN
 
Ed java
Ed javaEd java
Ed java
ENRIQUE_MEZA
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
HUGOJAREDSANCHEZMARTINEZ
 
Variables
VariablesVariables
Variables
Franklin Anilema
 
Unidad_01_01.pdf
Unidad_01_01.pdfUnidad_01_01.pdf
Unidad_01_01.pdf
FelipeFarfn2
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0
Ander Martinez
 
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
Ander Martinez
 
Fundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionFundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacion
Germán Sailema
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3
evelynrodriguez147
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3
sahamaramarin
 

Similar a Programacion_Gambas.docx (20)

Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Programacion
ProgramacionProgramacion
Programacion
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
 
Curso netcsharp
Curso netcsharpCurso netcsharp
Curso netcsharp
 
Investigac programac 5º unidad
Investigac programac 5º unidadInvestigac programac 5º unidad
Investigac programac 5º unidad
 
Ed java
Ed javaEd java
Ed java
 
Ed java
Ed javaEd java
Ed java
 
Spss.
Spss.Spss.
Spss.
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Variables
VariablesVariables
Variables
 
Lenguaje de pascal
Lenguaje de pascalLenguaje de pascal
Lenguaje de pascal
 
Unidad_01_01.pdf
Unidad_01_01.pdfUnidad_01_01.pdf
Unidad_01_01.pdf
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0
 
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)UDA-Componentes RUP. Diálogo  (v2.1.0 deprecado)
UDA-Componentes RUP. Diálogo (v2.1.0 deprecado)
 
Fundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacionFundamentos de Lenguaje de programacion
Fundamentos de Lenguaje de programacion
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3
 
Estructuras básicas 10 3
Estructuras básicas 10 3 Estructuras básicas 10 3
Estructuras básicas 10 3
 
2 poo u1 4 datos
2 poo u1 4 datos2 poo u1 4 datos
2 poo u1 4 datos
 

Más de Ingrid Rodriguez Zeballos

EJERCICIOS MULTIPLEXACIÓN.pptx
EJERCICIOS MULTIPLEXACIÓN.pptxEJERCICIOS MULTIPLEXACIÓN.pptx
EJERCICIOS MULTIPLEXACIÓN.pptx
Ingrid Rodriguez Zeballos
 
preinf1.docx
preinf1.docxpreinf1.docx
pre4_rs232.docx
pre4_rs232.docxpre4_rs232.docx
pre4_rs232.docx
Ingrid Rodriguez Zeballos
 
PROYECTO.docx
PROYECTO.docxPROYECTO.docx
pre4_2.2.docx
pre4_2.2.docxpre4_2.2.docx
TEORIA_SERRANO_6832536.docx
TEORIA_SERRANO_6832536.docxTEORIA_SERRANO_6832536.docx
TEORIA_SERRANO_6832536.docx
Ingrid Rodriguez Zeballos
 
preinf2.docx
preinf2.docxpreinf2.docx

Más de Ingrid Rodriguez Zeballos (8)

EJERCICIOS MULTIPLEXACIÓN.pptx
EJERCICIOS MULTIPLEXACIÓN.pptxEJERCICIOS MULTIPLEXACIÓN.pptx
EJERCICIOS MULTIPLEXACIÓN.pptx
 
preinf1.docx
preinf1.docxpreinf1.docx
preinf1.docx
 
pre4_rs232.docx
pre4_rs232.docxpre4_rs232.docx
pre4_rs232.docx
 
PROYECTO.docx
PROYECTO.docxPROYECTO.docx
PROYECTO.docx
 
pre4_2.2.docx
pre4_2.2.docxpre4_2.2.docx
pre4_2.2.docx
 
TEORIA_SERRANO_6832536.docx
TEORIA_SERRANO_6832536.docxTEORIA_SERRANO_6832536.docx
TEORIA_SERRANO_6832536.docx
 
preinf2.docx
preinf2.docxpreinf2.docx
preinf2.docx
 
LEY SAFCO.pptx
LEY SAFCO.pptxLEY SAFCO.pptx
LEY SAFCO.pptx
 

Último

Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
YoverOlivares
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
UOC Estudios de Informática, Multimedia y Telecomunicación
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
Victor Manuel Rivera Guevara
 
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
JuanChaparro49
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
manuelalejandro238
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
FRANCISCOJUSTOSIERRA
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
GROVER MORENO
 
Caso Prático de Análise de Vibrações em Ventilador de Extração
Caso Prático de Análise de Vibrações em Ventilador de ExtraçãoCaso Prático de Análise de Vibrações em Ventilador de Extração
Caso Prático de Análise de Vibrações em Ventilador de Extração
CarlosAroeira1
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
JavierAlejosM
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
NicolasGramajo1
 
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdfDialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
fernanroq11702
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
SamuelHuapalla
 
Hidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggfHidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggf
JavierAlejosM
 
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
LUISDAMIANSAMARRONCA
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
joseabachesoto
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdfINFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
GROVER MORENO
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
ycalful01
 

Último (20)

Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
 
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
 
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
 
Caso Prático de Análise de Vibrações em Ventilador de Extração
Caso Prático de Análise de Vibrações em Ventilador de ExtraçãoCaso Prático de Análise de Vibrações em Ventilador de Extração
Caso Prático de Análise de Vibrações em Ventilador de Extração
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
 
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdfDialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
 
Hidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggfHidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggf
 
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
Expo sobre los tipos de transistores, su polaridad, y sus respectivas configu...
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdfINFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
 

Programacion_Gambas.docx

  • 1. 1 ESCUELA MILITAR DE INGENIERIA “Mcal. Antonio José de Sucre” Unidad Académica La Paz SISTEMTAS COMPUTACIONALES PROGRAMACION EN GAMBAS DOCENTE: ING. LOZANO MANTILLA CESAR ESTUDIANTES: BLANCO ROSPIGLIOZZI SAMUEL 4921502 CASTELLON SANCHEZ LUIS 7070050 SERRANO FLORES GERSON 6832536 GRUPO: 6 FECHA: 23 DE OCTUBRE DE 2018 LA PAZ-BOLIVIA
  • 2. 2 Contenido ANTECEDENTES................................................................................................................3 OBJETIVOS ..........................................................................................................................3 MARCO TEORICO ..............................................................................................................4 Organización de Un proyecto de Gambas...................................................................4 Declaración de variables. ...............................................................................................4 Tipos de datos. .................................................................................................................7 Conversión de tipos.........................................................................................................9 Operaciones matemáticas............................................................................................11 MARCO PRACTICO..........................................................................................................12 Funciones y Subrutinas.................................................................................................12 Subrutinas .......................................................................................................................12 Funciones........................................................................................................................14 APLICACIÓN ......................................................................................................................17 Programa gambas 3.11.4 .............................................................................................17 Nuevo proyecto ..............................................................................................................18 resultado..........................................................................................................................20 BIBLIOGRAFIA...................................................................................................................21
  • 3. 3 ANTECEDENTES Gambas es un lenguaje de programación libre derivado de BASIC (de ahí que Gambas quiere decir Gambas Almost Means Basic). Se distribuye con licencia GNU GPL. Cabe destacar que presenta ciertas similitudes con Java ya que en la ejecución de cualquier aplicación, se requiere un conjunto de librerías intérprete previamente instaladas (Gambas Runtime) que entiendan el bytecode de las aplicaciones desarrolladas y lo conviertan en código ejecutable por el computador. Permite crear formularios con botones de comandos, cuadros de texto y muchos otros controles y enlazarlos a bases de datoscomo MySQL, PostgreSQL o SQLite además de facilitar la creación de aplicaciones muy diversas como videojuegos (utilizando OpenGL), aplicaciones para dispositivos móviles, aplicaciones de red (con manejo avanzado de protocolos HTTP, FTP, SMTP, DNS), entre otras . Gambas nació como respuesta a la necesidad de tener un entorno de desarrollo rápido de aplicaciones (RAD) que cumple la necesidad de muchos programadores del lenguaje de Microsoft de tener un lenguaje de programación sencillo para plataformas libres (como GNU/Linux y BSD). A pesar de estar basado en el lenguaje BASIC y poseer gran similitud con Visual Basic, Gambas no es una copia de este último. Componentes  Un compilador.  Un intérprete.  Un archivador.  Una interfaz gráfica de usuario.  Un entorno de desarrollo integrado. OBJETIVOS Diseñar una aplicación que permita el manejo de funciones empleando lenguaje de programación Gambas.
  • 4. 4 MARCO TEORICO Ahora, estudiaremos, principalmente, la sintaxis e instrucciones más importantes del lenguaje BASIC que usa Gambas. Buena parte de estas instrucciones existen en el BASIC estándar y algunas otras son extensiones propias de Gambas. Organización de Un proyecto de Gambas El código fuente de los programas hechos en Gambas está compuesto de uno o más archivos que forman un proyecto. Este proyecto se archiva en un directorio del mismo nombre. Los archivos de código pueden ser: Módulos (contienen código en BASIC que se ejecuta directamente), Clases (contienen el código en BASIC que ejecuta un objeto de esa clase) y Formularios (áreas donde se diseña la interfaz gráfica de la aplicación y que se corresponden con las ventanas del programa). Los proyectos de texto sólo contienen Módulos y/o Clases. Las aplicaciones gráficas contienen Formularios y Clases, pero también pueden contener Módulos. Los archivos que contienen código en BASIC (Módulos y Clases) siempre están estructurados de la siguiente manera:  Declaración de variables.  Subrutinas y Funciones. Declaración de 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 asigna un nombre identificador. BASIC permitía usar variables y constantes sin haberlas declarado antes, es decir, sin haber expuesto al principio del programa un listado con las variables que se iban a usar.
  • 5. 5 Eso produce programas ilegibles en cuanto empiezan a ser de tamaño medio y es una fuente constante de errores. Para evitar esto, Gambas obliga a declarar las constantes y las variables antes de utilizarlas. 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 (en el siguiente apartado se verá con detalle que son las subrutinas y funciones), están disponibles para ser usadas sólo dentro de esa subrutina o función. Si se declaran al principio del archivo de código (sea un Módulo o una Case) están disponibles para todo el código de ese archivo, en todas sus subrutinas. Para declarar tina variable en una subrutina o función se emplea la sintaxis: DIM nombre_variable AS tipo_variable El tipo_variable hace referencia al tipo de dato de la variable: número entero, cadena de texto, número decimal, etc. El nombre de la variable lo elige el programador libremente. Siempre es recomendable que sea algo que indique para qué se va a usar la variable. Es decir, se debe huir de nombres como a, b, c, etc., y usar, por ejemplo, edad, fecha_nacimiento, altura, etc. Las variables que se declaren en una subrutina o función sólo se usarán dentro de ellas, cuando terminen se destruirán. Eso permite utilizar el mismo nombre de variable dentro de distintas subrutinas y su valor nunca se confundirá o mezclará. Para declarar una variable al principio del Módulo o clase usamos la sintaxis: [STATIC] (PUBLIC | PRIVATE) nombre_variable AS tipo_variable Si se define la variable como PRIVATE, estará disponible dentro de todo el fichero, pero no será accesible desde otros ficheros del mismo proyecto. Si se la declara como PUBLIC, se podrá acceder a la variable desde un fichero del proyecto distinto a donde se declaró. La palabra STATIC se usa en los archivos de Clase, no en los Módulos. Sirve para definir un comportamiento especial en todos los objetos de una misma clase. En
  • 6. 6 pocas palabras se podría explicar con un ejemplo: si tenemos una clase perro, tendremos algunas variables corno color, raza, peso, etc., y cada objeto perro tendrá su propio valor en cada una de esas variables. Al mismo tiempo, podemos declarar una variable que sea numero_de_patas, de forma que si cambiamos su valor de 4 a 3, todos los objetos perros tendrán 3 patas y cada uno seguirá con su propio peso, color, etc. En este caso, la variable numero_de_patas se declararía STATIC en el código BASIC del archivo de la clase perro. Se verá todo este comportamiento más adelante en este mismo capítulo. 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: (PUBLIC | PRIVATE ) CONST nombre_constante AS tipo_constante = valor Por tanto, al igual que las variables, pueden ser privadas o públicas. Veamos un ejemplo de todo esto: ’Gambas module file ‘Archivo de Módulo con el nombre: ejemploVariables PRIVATE edad AS Date PRIVATE altura AS Single PRIVATE CONST Pi = 3.141592 PUBLIC calidad AS Integer PUBLIC SUB Subrutina1() DIM num AS Integer DIM nombre AS String edad = 30 num = 54 END PUBLIC SUB Subrutina2() DIM num AS Integer
  • 7. 7 DIM apellido AS String edad = 32 num = 4 END En este ejemplo vemos que las variables edad y altura se pueden usar en todo el archivo. Por tanto, después de ejecutar la Subrutina1, edad valdrá 30 y, después de ejecutar la Subrutina2valdrá 32. Vemos también cómo la variable num está definida en las dos subrutinas. El valor de num desaparece al acabar cada una de las subrutinas y, por tanto, durante Subrutinal valdrá 54 y durante Subrutina2 valdrá 4, pero después de que se ejecute el END de cada una de esas dos subrutinas, simplemente no existirá y si se hace referencia a num en cualquier otro punto del programa se producirá un error. Finalmente, vemos que la variable calidad está definida como pública. Esto significa que desde cualquier otro archivo del programa se puede hacer referencia a ella mediante el nombre ejemploVariables.calidad, donde ejemploVariables es el nombre que se le ha dado al fichero donde se ha declarado calidad. Tipos de datos. Ya hemos visto a lo largo de los textos anteriores el uso de variables y cómo se declaran. Hasta el momento, sólo conocemos algunos tipos de datos. Revisemos ahora todos los que soporta Gambas:  Boolean: es un tipo de dato que suele ser el resultado de una comparación. Sólo acepta dos valores: False y True (Falso y Verdadero en español).  Byte: representa un número entero positivo entre 0 y 255.  Short: representa un número entero con valores posibles entre -32.768 y +32.767.
  • 8. 8  Integer: representa un número entero con valores posibles entre - 2.147.483.648 y +2.l47.483.647  Long: representa un número entero con valores posibles entre -9.223.372.036.854.775.808 y +9.223.372.036.854.775.807.  Single: representa un número real, con decimales, con valores posibles entre -1,7014118E+38 y +1,7014118E+38.  Float: representa un número real, con decimales, con valores posibles entre -8,988465674311 05E+307 y +8,988465674311 05E+307.  Date: sirve para almacenar un valor de fecha y hora. Internamente, la fecha y hora se almacena en formato UTC, al devolver el dato se representa en el formato local, según la configuración del ordenador.  String: se usa para almacenar una cadena de texto. En BASIC las cadenas de texto se asignan mediante dobles comillas.  Variant: significa cualquier tipo de dato, es decir, puede almacenar un Integer, Single, String, etc. Se debe evitar su uso porque ocupa más memoria que los anteriores y los cálculos con Variant son mucho más lentos.  Object: representa cualquier objeto creado en Gambas. Será el programador el que elija el tipo de dato con el que debe ser declarada una variable. Siempre se ha de tender a usar los tipos de datos más pequeños, puesto que ocupan menos memoria y el microprocesador los maneja con más velocidad. Sin embargo, eso puede limitar las opciones de la aplicación, por lo que a menudo se opta por tipos mayores para no cerrar posibilidades. Por ejemplo, si se va a usar una variable para definir la edad de una persona, lo lógico es utilizar un dato de tipo byte (el valor máximo es 255). Sin embargo, si la edad a guardar es la de un árbol, es conveniente usar un tipo Short, ya que puede haber árboles con más de 255 años, pero no se conocen con más de 32.767.
  • 9. 9 Conversión de tipos. Gambas permite distintas conversiones entre tipos de datos. La forma de hacer la conversión puede ser implícita o explí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 intérprete convierte, de forma transparente para el programador, el operando2 a un valor Single. Son conversiones explícitas las que debe hacer el programador al escribir el código para poder realizar operaciones, mezclar datos de distintos tipos, etc. Estas conversiones se hacen mediante unas funciones que están incluidas en el BASIC de Gambas. Evidentemente, la conversión se hará siempre que sea posible, si no lo es, producirá un error. Éste es el listado de funciones de conversión existente:  CBool(expresión): convierte la expresión a un valor booleano, verdadero o falso. El resultado será falso si la expresión es falsa, el número 0, una cadena de texto vacía o un valor nulo. Será verdadero en los demás casos. Por ejemplo: Devuelven False las siguientes operaciones: Cbool(””), Cbool(0), Cbool(NULL). Devuelven True las operaciones: Cbool(1), Cbool(”Gambas”).  CByte(expresión): convierte la expresión en un valor tipo Byte. Primero se convierte la expresión a un número binario de 4 bytes. Si este número es mayor de 255, se corta recogiendo los 8 bits de menor peso. Por ejemplo, Cbyte(”17”) devuelve 17, pero Cbyte(l00000) devuelve 160. El valor
  • 10. 10 160 es debido a que el número 100.000 en binario es 11000011010100000, sus 8 últimos bits son 10100000, que pasado de binario a decimal da lugar a 160. Si no sabemos operar con números binarios lo mejor que se puede hacer es evitar este tipo de conversiones que resultan en valores tan “sorprendentes”  Short(expresión), Cint(expresión) o CInteger(expresión), y Long(expresión): convierten, respectivamente, la expresión en un número de tipo Short, Integer y Long. En el caso de CShort la conversión se realiza igual que para CByte, pudiendo producirse resultados extraños igualmente si la expresión resulta en un número mayor de 32.767.  CDate(expresión): convierte la expresión en una fecha, pero hay que tener cuidado porque no admite el formato de fecha local, sólo el formato inglés mes/día/año horas:minutos:segundos. Es decir, CDate( “09/06/1972 01:45:12”) es el día 6 de septiembre de 1972.  CSingle(expresión) o CSng(expresión) y CFloat(expresión) o cflt(expresión): convierten, respectivamente, la expresión en un número del tipo Single y Float. La expresión debe usar el punto (.) y no la coma (,) como separador decimal.  CStr(expresión): convierte la expresión en una cadena de texto sin tener en cuenta la configuración local. Por tanto, Cstr(1.58) devuelve la cadena de texto 1.58, independientemente de si la configuración local indica que el separador decimal es el punto o la coma, o CStr(CDate(”09/06/1972 01:45:12”)) devuelve “09/06/1972 01:45:12”.  Str$(expresión): convierte la expresión en una cadena de texto, teniendo en cuenta la configuración local. Por tanto, Str$(1.58) devuelve la cadena de texto 1,58, si la configuración local está en español. Del mismo modo, Str$(CDate(”09/06/1972 01:45:12”)) devuelve “06/09/1972 01:45:12” si la configuración local está en español, puesto que en este idioma la costumbre es escribir las fechas en la forma día/mes/año.  Val (expresión): convierte una cadena de texto en un tipo Boolean, Date o alguno de los tipos numéricos, dependiendo del contenido de la
  • 11. 11 expresión. Val es la función opuesta de Str$ y, por tanto, también tiene en cuenta la configuración local del ordenador en el que se ejecuta. Intenta convertir la expresión en un tipo Date, si no puede en un número con decimales, si tampoco puede en un número entero y si, finalmente, tampoco puede la convierte en un tipo Boolean. Operaciones matemáticas. Cuando se trata de trabajar con números, Gambas tiene las operaciones habituales en casi todos los lenguajes de programación: +.-,* y / se usan, respectivamente, para la suma, resta, multiplicación y división. ^ es el operador de potencia, por ejemplo, 4 ^ 3 = 64. Para la división hay dos operadores adicionales, / o DIV y MOD, que devuelven, respectivamente, la parte entera del resultado de la división y el resto. Es decir, 9DIV2=4, 9/2=4 y 9MOD4=1. Aparte de estos operadores existen las siguientes funciones matemáticas para realizar cálculos más complejos:  Abs(número): devuelve el valor absoluto de un número.  Dec(número): decrementa un número.  Frac(número): devuelve la parte decimal de un número. Inc(námero): incrementa un número.  Int(núrnero): devuelve la parte entera de un número.  Max(númerol, número2, ...): devuelve el número mayor.  Min(númerol, número2, ...): devuelve el número menor.  Round(número,decimales): redondea un número con los decimales deseados.  Sgn(número): devuelve el signo de un número.  Rnd([mínimo],[máximo]): devuelve un número aleatorio comprendido entre mínimo y máximo. Si no se expresa ningún valor para mínimo y
  • 12. 12 máximo, el número estará comprendido entre 0 y 1. Si sólo se expresa un valor, el número estará comprendido entre el 0 y ese valor. Muy importante: antes de usar Rnd es necesario ejecutar la instrucción Randomize que inicializa el generador de números aleatorios. Si no se hace, se obtendrá el mismo número en sucesivas ejecuciones de Rnd. MARCO PRACTICO Funciones y Subrutinas Programar requiere algún tipo de organización en la escritura de código. No organizar de alguna forma el código que se escribe solo dificulta la lectura y modificación del mismo para el programador. Organizar el código tiene muchas ventajas, una muy importante es la reusabilidad del código. Es común que al escribir algún programa existas operaciones que se requieren repetir en diversas secciones del código, con diferentes parámetros. Resultaría impráctico e ineficiente escribir una y otra vez el fragmento de código cada vez que se necesite, en lugar de eso es útil escribir ese código en una parte especial del programa y mandarlo llamar cada vez que se necesite, incluso con parámetros diferentes. A esto se le conoce como reutilización de código. En Gambas el código se organiza dividiéndolo en procedimientos. Existen dos tipos de procedimientos: subrutinas y funciones. Subrutinas Una subrutina es un procedimiento que ejecuta cierta acción y obtiene un resultado. Las subrutinas pueden o no recibir parametros para su ejecución y no devuelven un resultado. La sintáxis para escribir una subrutina es la siguiente: Public Sub nombreSubrutina (p1 As Tipo_variable, p2 As Tipo_variable, ...) código que ejecuta la subrutina
  • 13. 13 End Observe que la sintaxis de la subrutina requiere de un nombre único con el que se identificará dentro del programa. Opcionalmente se le puede enviar algún parámetro el cual la subrutina lo recibe con las variables que se declaran dentro de los paréntesis que están inmediatamente despues del nombre. El código que forma parte de la subrutina se debe escribir hasta antes de la palabra clave End. El código de la subrutina debe escribirse al final del programa, justo después de que termina la rutina principal. Ejemplo. Esta Subrutina calcula el promedio de dos números que recibe como argumento. Public Sub Main() media(4,8) End Public Sub media(valor1 As Integer, valor2 As Integer) Print (valor1 + valor2) / 2 End El programa funciona de la siguiente forma: La rutina principal incia y cuando la ejecución alcanza la líena donde se ecuentra media(4,8), Gambas busca una función o subrutina que se haya declarado al final de la rutina principal y brinca la ejecución hasta ese punto del programa. Al brincar, se envían los números 4 y 8 como argumentos de la subrutina. Ya en la subrutina, se reciben los dos números 4 y 8 como argumentos y se almacenan en las variables valor1 y valor2 respectivamente. Observe que en ese momento se convierte ese argumento al tipo de dato que se delcara en la subrutina,
  • 14. 14 en este caso Integer. Por esta razón si el argumento no fuera entero, se convertiría a Integer al guardarse en la variable. Dentro de la subrutina se realiza el cálculo y la impresión del resultado. Una vez que se alcanza el End de la subrutina, se brinca de vuelta al punto donde ésta fue llamada y como ya no hay más intrucciones se completa así la ejecución del programa. Las variables valor1 y valor2 solamente existen dentro de la subrutina. Esto sigifica que cuando se manda llamar la subrutina, se declaran tales variables y ellas solo existen en el ámbito de la subrutina. Una vez que termina la ejecución de la subrutina estas variables se destruyen. A este tipo de variables se les llama variables locales. Es posible que una subrutina llame a otras subrutinas a su vez, incluso puede llamarse a sí misma. Funciones Una función es un procedimiento que ejecuta cierta acción y obtiene un resultado. Las funciones pueden o no recibir parametros para su ejecución y pueden o no devolver algún resultado. La sintáxis para escribir una función es la siguiente: Public Function nombreFuncion (p1 As Tipo_variable, p2 As Tipo_variable, ...) As tipoDato código que ejecuta la función Return End La sintaxis de la función requiere de un nombre único con el que se identificará dentro del programa. Opcionalmente se le puede enviar algún parámetro el cual la función lo recibe con las variables que se declaran dentro de los paréntesis que
  • 15. 15 están inmediatamente despues del nombre. El código que forma parte de la función se debe escribir hasta antes de la palabra clave End. Tal como la subrutina, el código de la función deberá escribirse después de la rutina principal. Ejemplo. Esta Función calcula el promedio de dos números que recibe como argumento. Public Sub Main() dim x as Float x = media(4,8) Print "El promedio es: "; x End Public Function media(valor1 As Integer, valor2 As Integer) As Float dim p as Float p = (valor1 + valor2) / 2 Return p End El programa funciona de la siguiente forma: La rutina principal incia, se declara la variable x y cuando la ejecución alcanza la líena donde se ecuentra x = media(4,8), Gambas busca una función o subrutina que se haya declarado al final de la rutina principal y brinca la ejecución hasta ese punto del programa. Al brincar, se envían los números 4 y 8 como argumentos de la subrutina. Una vez que la ejecución llegó a la función, se reciben los dos números 4 y 8 como argumentos y se almacenan en las variables
  • 16. 16 locales valor1 y valor2 respectivamente. Observe que en ese momento se convierte ese argumento al tipo de dato que se delcara en la función, en este caso Integer. Por esta razón si el argumento no fuera entero, se convertiría a Integer al guardarse en la variable. En la función se declara la variable local p como Float. Luego se realiza el cálculo y se almacena en la variable p. Posteriomente se invoca a la instrucción Return, la cual se encarga de devolver el contenido de la variable que se le pasa como argumento, en este caso p. Returndevuelve el contenido de la variable x al punto donde fue invocada la función, en este caso ese valor se almacena en la variable local x de la subrutina principal. Las variables valor1 y valor2 solamente existen dentro de la función. Esto sigifica que cuando se manda llamar la función, se declaran tales variables y ellas solo existen en el ámbito de la función. Una vez que termina la ejecución de la función estas variables se destruyen. A este tipo de variables se les llama variables locales. Es posible que una función llame a otras subrutinas o funciones a su vez, incluso puede llamarse a sí misma. Nota Importante: Los arreglos y objetos siempre se pasan por referencia. Es decir, si se pasa como parámetro un arreglo de elementos Integer a una función, al modificarlo dentro de la función, se verá modificado el original.
  • 17. 17 APLICACIÓN Programa gambas 3.11.4 Una vez instalado el programa Gambas 3 en Ubuntu tenemos el siguiente menú al ingresar: Ingresamos a new projet
  • 18. 18 Donde podemos trabajar en distintas plataformas, en este caso ingresaremos a graphical application, luego en Next y colocamos las direcciones de nuestro proyecto. Nuevo proyecto Una vez creado el proyecto empezamos a colocar todas las funciones que necesitamos para esto tenemos botones y textos: En cada una de estas funciones hacemos click para empezar a programas según se requiere que realice cada una de ellas
  • 19. 19 Se puede observar que cada botón tiene su línea de comando a realizar
  • 20. 20 resultado Al final como resultado tenemos el siguiente programa que puede ser ejecutado en forma gráfica para el usuario.
  • 21. 21 BIBLIOGRAFIA Duarte, E. 9 de diciembre, 2016. Programación en Gambas. http://blog.capacityacademy.com/2016/12/09/curso basico de gambas Felipe Alvaro. (sin fecha). Instalar gambas en Ubuntu 18.04. https://ed.team/blog/instalar-sistemas-de-64-bits-en-vmware Administrador. (sin fecha). Introducción a Gambas. http://cursohacker.es/mi primer programa en gambas