INTRODUCCION A GAMBAS
Hablar de Gambas, que difería mucho con respecto a Visual Basic, ahora aclaremos algunas cosas y terminemos de entender este concepto.
La principal diferencia con respecto a Visual Basic 6.0 es el soporte para orientación a objetos. En Gambas, no existen los arrays de controles -muy populares en Visual Basic- pero dispone de un elemento similar llamado group, que utilizado conjuntamente con arrays de objetos ofrecen resultados análogos.
Gambas añade algunas propiedades nuevas en algunos de sus controles, como la alineación vertical/horizontal en etiquetas, o algunas propiedades gráficas en el elemento Button (Equivalente a CommandButton de Visual Basic).
El acceso a bases de datos es sumamente sencillo y potente. Gambas incluye, al igual que Visual Basic, su propio empaquetador para la distribución de aplicaciones, que permite crear incluso paquetes deb. Los componentes suministrados en Gambas 2.0 son realmente potentes, desde una librería para el manejo de documentos pdf, hasta componentes para imágenes, sockets e informes (equivalentes a Crystal reports u otras herramientas gratuitas alternativas).
Gambas es una excelente y potente alternativa a la programación visual ofrecida en Visual Basic para entornos Linux. Su talón de aquiles actualmente es su escasa documentación.
ACONTINUACION UNA LISTA DE EJERCICIOS REALIZADOS EN CLASE CON LINUX
PROGRAMA CEDULA
PUBLIC SUB Main()
DIM num_cedula AS String
PRINT "INGRESE NUMERO DE CEDULA:"
INPUT num_cedula
IF cedula(num_cedula) THEN
PRINT "NUMERO DE CEDULA VALIDO"
ELSE
PRINT "NUMERO DE CEDULA INVALIDO !!!"
ENDIF
END
PUBLIC FUNCTION cedula(valor AS String) AS Boolean
DIM dv, i, a, res, m, aux, aux1, acu, d10, d3 AS Integer
DIM resul AS Boolean
d3 = Mid(valor, 3, 1)
IF d3 < 6 THEN
FOR i = 1 TO 9
a = Mid(valor, i, 1)
m = i MOD 2
IF m = 1 THEN
aux = a * 2
ELSE
aux = a * 1
END IF
IF aux > 9 THEN
aux1 = aux - 9
ELSE
aux1 = aux
END IF
acu = acu + aux1
NEXT
res = acu MOD 10
IF res = 0 THEN
dv = 0
ELSE
dv = 10 - res
END IF
d10 = Mid(valor, 10, 1)
IF dv <> d10 OR valor = 0 OR valor = 2222222222 OR valor = 4444444444 OR valor = 5555555555 THEN
resul = FALSE
ELSE
resul = TRUE
END IF
ELSE
resul = FALSE
END IF
RETURN resul
END FUNCTION
PROGRAMA OBJETOS
Gambas module file
'PROGRAMACION ORIENTADA A OBJETOS EN GAMBAS 2.8
PUBLIC SUB main()
'instancia objetos
DIM mono AS servivo
DIM persona AS Hombre
DIM no AS String
mono = NEW servivo
mono.nacido(CDate("2/2/1992"))
mono.PonerPatas(2)
PRINT "La edad del mono es ....", mono.edad()
PRINT "Las patas del mono son .....", mono.dicePatas()
persona = NEW Hombre
PRINT "Ingrese nombre.."
INPUT no
persona.nacido(CDate("2/18/1969"))
persona.PonerNombre(no)
persona.PonerApellido("Picapiedra")
PRINT "La edad de la persona es ", persona.edad()
PRINT "El nombre completo es...", persona.NombreCompleto()
END
PROGRAMA MAYOR
' Gambas module file
PUBLIC SUB Main()
DIM a, b, c, d, e AS Integer
'a = 10
'b = 20
'e = 50
PRINT "Ingrese primer valor", a
INPUT a
PRINT "Ingrese segundo valor", b
INPUT b
PRINT "Ingrese tercer valor", e
INPUT e
IF a > b AND a > e THEN
PRINT " EL NUMERO MAYOR ES", a
ELSE
IF b > a AND b > e THEN
PRINT "el mayor es", b
ELSE
PRINT "el mayor es ", e
ENDIF
END IF
IF b < a AND b < e THEN
PRINT "el intermedio es", b
ELSE
IF e < a AND e < b THEN
PRINT "el intermdio es", e
ELSE
PRINT " el intermedio es", a
ENDIF
ENDIF
END
PROGRAMA MATRICULAS
' Gambas class file
PUBLIC nom AS String
PUBLIC apell AS String
PUBLIC curso AS String
PUBLIC secc AS String
PUBLIC fechan AS String
PUBLIC parcial1 AS Float
PUBLIC parcial2 AS Float
PUBLIC parcial3 AS Float
PUBLIC FUNCTION imprimirpromedio() AS Float
RETURN ((parcial1 + parcial2 + parcial3) / 3)
END
PUBLIC FUNCTION imprimirfechamatricula() AS Date
RETURN Now()
END
PUBLIC FUNCTION imprimirnombre() AS String
RETURN nom & " " & apell
END
PROGRAMA FUNCIONES
PUBLIC SUB Main()
DIM f, i, l AS Integer
DIM nombre, res AS String
f = 1
FOR i = 2 TO 5
f = f * i
NEXT
PRINT "El factorial de 5 ", f
PRINT "Ingrese un nombre"
INPUT nombre
l = Len(nombre)
FOR i = 1 TO l
res = Mid(nombre, i, 1)
PRINT res
NEXT
END
PROGRAMA CALCULADORA
PUBLIC ban AS Integer
PUBLIC aux1 AS Integer
PUBLIC aux2 AS Integer
PUBLIC valor AS Float
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
END
PUBLIC SUB Button5_Click()
visor.Text = visor.Text & "1"
END
PUBLIC SUB Button6_Click()
visor.Text = visor.Text & "2"
END
PUBLIC SUB Button7_Click()
visor.Text = visor.Text & "3"
END
PUBLIC SUB Button8_Click()
visor.Text = visor.Text & "4"
END
PUBLIC SUB Button10_Click()
visor.Text = visor.Text & "5"
END
PUBLIC SUB Button1_Click()
visor.Text = visor.Text & "6"
END
PUBLIC SUB Button2_Click()
visor.Text = visor.Text & "7"
END
PUBLIC SUB Button3_Click()
visor.Text = visor.Text & "8"
END
PUBLIC SUB Button4_Click()
visor.Text = visor.Text & "9"
END
PUBLIC SUB Button9_Click()
visor.Text = visor.Text & "0"
END
PUBLIC SUB Button11_Click()
visor.Text = visor.Text & "."
END
PUBLIC SUB sumar_Click()
ban = 1
IF visor.Text <> 0 THEN
aux1 = visor.Text
ELSE
aux1 = 0
ENDIF
visor.Clear
END
PUBLIC SUB resta_Click()
ban = 2
IF visor.Text <> 0 THEN
aux1 = visor.Text
ELSE
aux1 = 0
ENDIF
visor.Clear
END
PUBLIC SUB multiplicacion_Click()
ban = 3
IF visor.Text <> 0 THEN
aux1 = visor.Text
ELSE
aux1 = 0
ENDIF
visor.Clear
END
PUBLIC SUB division_Click()
ban = 4
IF visor.Text <> 0 THEN
aux1 = visor.Text
ELSE
aux1 = 0
ENDIF
visor.Clear
END
PUBLIC SUB off_Click()
ME.Close
END
PUBLIC SUB limpiar_Click()
visor.Clear
END
PUBLIC SUB igual_Click()
IF visor.Text <> 0 THEN
aux2 = visor.Text
ELSE
aux2 = 0
ENDIF
visor.Text = operaciones(ban, aux1, aux2)
END
PUBLIC FUNCTION operaciones(opera AS Integer, v1 AS Integer, v2 AS Integer) AS Integer
DIM respuesta AS Integer
SELECT CASE opera
CASE 1
respuesta = v1 + v2
CASE 2
respuesta = v1 - v2
CASE 3
respuesta = v1 * v2
CASE 4
IF v2 = 0 THEN
Message("DIVISON PARA CERO IMPOSIBLE")
ELSE
respuesta = v1 / v2
END IF
END SELECT
RETURN respuesta
END
PUBLIC SUB Button17_Click()
visor.Text = Cos(visor.Text)
END
PUBLIC SUB Button16_Click()
visor.Text = Sin(visor.Text)
END
PUBLIC SUB Button21_Click()
END
PUBLIC SUB Button24_Click()
DIM n, i, x1, x2 AS Integer
DIM cadena, cadena2 AS String
n = visor.Text
WHILE n > 0
x1 = (Int(n / 2))
x2 = n MOD 2
cadena = cadena & Str(x2)
n = x1
WEND
FOR i = Len(cadena) TO 1 STEP -1
cadena2 = cadena2 & Mid(cadena, i, 1)
NEXT
visor.Text = cadena2
Message("El resultado es ...", "Aceptar")
END
PROGRAMA TIA
PUBLIC SUB Button25_Click()
DIM n, i, x1, x2 AS Integer
DIM cadena, cadena2 AS String
n = visor.Text
WHILE n > 0
x1 = (Int(n / 2))
x2 = n MOD 2
cadena = cadena & Str(x2)
n = x1
WEND
FOR i = Len(cadena) TO 1 STEP -1
cadena2 = cadena2 & Mid(cadena, i, 1)
NEXT
visor.Text = cadena2
Message("El resultado es ...", "Aceptar")
END
PUBLIC SUB Button18_Click()
visor.Text = Tan(visor.Text)
END
PUBLIC SUB Button12_Click()
visor.Text = visor.Text * visor.Text
END
PUBLIC SUB Button13_Click()
visor.Text = visor.Text * visor.Text * visor.Text
END
PROGRAMA DE ACCESO
PUBLIC c AS Integer
PUBLIC n AS String
PUBLIC SUB TextBox1_Change()
TextBox2.Enabled = TRUE
END
PUBLIC SUB TextBox2_KeyPress()
IF Key.Code = 65293 THEN
IF TextBox1.Text = "" THEN
Message.Info("Ingrese Clave de Usuario...")
TextBox1.SetFocus
ELSE
Button1.Enabled = TRUE
Button2.Enabled = TRUE
Button1.SetFocus
ENDIF
ENDIF
END
PUBLIC SUB Form_Open()
ME.Center
modulo.conectar
' modulo.rs = modulo.cn.Exec("select * from claves")
n = "Administrador"
END
PUBLIC SUB Button1_Click()
DIM ban AS Integer
modulo.rs = modulo.cn.Exec("select * from clave")
DO WHILE modulo.rs.Available
n = modulo.rs["usuarios"]
IF modulo.rs["usuarios"] = Trim(TextBox1.Text) AND modulo.rs["contrasena"] = Trim(TextBox2.Text) THEN
modulo.rs = modulo.cn.Exec("select * from clave where usuarios = '" & Trim(TextBox1.Text) & "'")
Message.Info("Bienvenido al sistema Sr(a). " & n, "Aceptar")
ME.Hide
menuprincipal.Show
ban = 1
ENDIF
modulo.rs.MoveNext()
LOOP
IF ban = 0 THEN
c = c + 1
IF c = 3 THEN
Message.Warning("Lo sentimos, El sistema se cerrar� por seguridad.")
ME.Close
ELSE
limpiar()
TextBox1.SetFocus
Message.Error("Usuario desconocido, intente nuevamente...", "Aceptar")
ENDIF
END IF
END
PUBLIC SUB limpiar()
Button1.Enabled = FALSE
Button2.Enabled = FALSE
TextBox1.Clear
TextBox2.Clear
TextBox2.Enabled = FALSE
TextBox1.SetFocus
END
PUBLIC SUB Button2_Click()
limpiar()
END
PROGRAMA JUEGOS
PUBLIC o AS Integer
PUBLIC SUB Button2_Click()
ME.Close
FMain.Show
END
PUBLIC SUB Button1_Click()
DIM a, b, c AS Integer
RANDOMIZE
a = (Rnd * 9) + 1
b = (Rnd * 8) + 1
c = (Rnd * 8) + 1
TextBox2.Text = a
TextBox4.Text = b
TextBox3.Text = c
IF a = b AND a = c THEN
IF b = a AND b = c THEN
IF c = a AND c = b THEN
Message("Estos son los numeros" & TextBox1.Text & TextBox2.Text & TextBox3.Text)
IF a <> 7 AND b <> 7 AND c <> 7 THEN
Message("Premio Consuelo" & TextBox1.Text & TextBox2.Text & TextBox3.Text)
ENDIF
ENDIF
ENDIF
ENDIF
END
PROGRAMA RELOJ
PUBLIC SUB Timer1_Timer()
DIM h, m, s AS Integer
s = TextBox3.Text
m = TextBox2.Text
h = TextBox1.Text
'WHILE h < 24
IF s < 59 THEN
s = s + 1
ELSE
s = 0
m = m + 1
IF m > 59 THEN
h = h + 1
m = 0
ENDIF
ENDIF
TextBox3.Text = s
TextBox2.Text = m
TextBox1.Text = h
'WEND
END
PUBLIC SUB Button1_Click()
IF Button1.Text = "Iniciar" OR Button1.Text = "Reiniciar" THEN
Timer1.Enabled = TRUE
Button1.Text = "Parar"
ELSE
Timer1.Enabled = FALSE
Button1.Text = "Reiniciar"
ENDIF
END
PUBLIC SUB Button2_Click()
ME.Close
FMain.Show
END
PUBLIC SUB TextBox1_KeyPress()
END
PUBLIC SUB Form_Open()
END
4/11/09
Suscribirse a:
Entradas (Atom)