Saludos
Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
Páginas
- Página principal
- Indice por Tags
- Indice por Fechas
- Podcasts sobre GNU/Linux en español
- FotoMontajes GNU/LINUX
- Gestión de Obras: Mediciones, Presupuestos, Facturas...
- Enlaces / Link
- Enlaces JsbSan
- Encuestas Y Estadisticas
- Tutoriales y Manuales de Gambas
- Revistas
- Video tutoriales
- Código fuentes de algunas aplicaciones:
- FORO JSBSAN
- Formulario de Informacion
- Libros Publicados
martes, 24 de enero de 2012
Algoritmos: Para Juegos (IA) y dibujo 2d
Os dejo 2 enlaces donde os podeis descargar unos documentos .pdf, donde podeis ver algunos algoritmos para juegos- Inteligencia Artificial (minimax, por ejemplo), y dibujo 2d (relleno de areas)
Saludos
Saludos
domingo, 22 de enero de 2012
Calculadora de Expresiones en Gambas: usando script realizados en Gambas
Calculadora De Expresiones
Este es un ejemplo de como realizar una calculadora de expresiones. He usado un script en gambas. Con gambas también podemos hacer script para ejecutarlo en la terminal.
Podeis ver más información en la siguiente pagina: Scripting_con_Gambas
Esta es una captura del programa funcionando:
Este es el enlace de descarga del código fuente: calculadora-0.0.1.tar.gz
El programa es muy simple:
Tiene un archivo tipo ".gbs" (el script):
#!/usr/bin/env gbs2
DIM a,b,c,x,y AS float
a=<a>
b=<b>
c=<c>
x=<x>
y=<y>
PRINT <formula>
que es copiado al disco duro y modificado por las siguientes funciones:
' Gambas module file
PUBLIC FUNCTION ecuacion(expresion AS String, OPTIONAL a AS String, OPTIONAL b AS String, OPTIONAL c AS String, OPTIONAL x AS String, OPTIONAL y AS String) AS String
DIM cadena AS String
DIM comando AS String
DIM valor AS String
TRY KILL User.home & "/programa.gbs"
COPY "programa.gbs" TO User.home & "/programa.gbs"
cadena = File.Load(User.home & "/programa.gbs")
IF a <> NULL THEN
cadena = Replace(cadena, "<a>", var.ConvierteComaaPto(a))
ELSE
cadena = Replace(cadena, "<a>", "0")
ENDIF
IF b <> NULL THEN
cadena = Replace(cadena, "<b>", var.ConvierteComaaPto(b))
ELSE
cadena = Replace(cadena, "<b>", "0")
ENDIF
IF c <> NULL THEN
cadena = Replace(cadena, "<c>", var.ConvierteComaaPto(c))
ELSE
cadena = Replace(cadena, "<c>", "0")
ENDIF
IF x <> NULL THEN
cadena = Replace(cadena, "<x>", var.ConvierteComaaPto(x))
ELSE
cadena = Replace(cadena, "<x>", "0")
ENDIF
IF y <> NULL THEN
cadena = Replace(cadena, "<y>", var.ConvierteComaaPto(y))
ELSE
cadena = Replace(cadena, "<y>", "0")
ENDIF
cadena = Replace(cadena, "<formula>", expresion)
File.Save(User.home & "/programa.gbs", cadena)
WAIT 0.1
EXEC ["chmod", "777", User.home & "/programa.gbs"] WAIT
EXEC [User.home & "/./programa.gbs"] TO valor
IF valor <> "" THEN
RETURN Replace(valor, "\n", "")
ENDIF
Message.Info("Posible error en en la expresión, o al realizar la operación")
RETURN 0
END
PUBLIC FUNCTION ConvierteComaaPto(cadena AS String) AS String
RETURN Replace(cadena, ",", ".")
END
En el formulario principal:
' Gambas class file
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
ME.Center
END
PUBLIC SUB ToolButtonCalcular_Click()
DIM lista AS String
TextBoxResultado.text = var.ecuacion(TextBoxExpresion.text, ValueBoxA.value, ValueBoxB.Value, ValueBoxC.value, ValueBoxX.value, valueboxy.value)
lista = Str$(ListViewExpresiones.Count + 1)
ListViewExpresiones.Add(lista, TextBoxExpresion.text & " = " & TextBoxResultado.text)
END
Nota:
Gambas tiene un componente gb.eval, que es usado expresamente para evaluar expresiones. Podéis ver el ejemplo que trae de Calculadora, para verlo como se usa.
sábado, 21 de enero de 2012
Algunos comandos de consola, interesantes para ayudarnos a programar.
Estoy haciendo una aplicación, y algunas veces, durante la depuración del programa, se queda "colgado" aparentemente el ordenador.
¿que hacer en estos casos?
Si funciona el teclado (por ejemplo, si le damos la tecla de bloqueo de numeros, y se enciende la luz), podemos unar la combinación de CTRL+ALT+Fn (n=1,2,3,4,5,6) para irnos a una consola y ver que esta ocurriendo.
Con CTRL+ALT+F7, regresamos al entorno grafico.
Si pulsamos, por ejemplo CTRL+ALF+F!, pasamos a una consola (habrá que introducir de nuevo nuestro usuario y clave)
Una vez en la consola, podemos usar el comando
$top
o
$htop
(este último tiene un entorno gráfico de consola y hay que instalarlo, ya que no viene por defecto en Ubuntu)
Estos nos muestran información sobre los procesos cargados en memoria (por ejemplo, la carga de cada uno en la CPU y el consumo de Memoria
Otro comando interesante es
$kill
El cual puede mandar distintas señales a los procesos (por ejemplo, intentar cerrarlos o directamente matarlos).
En la captura de pantalla vemos que el proceso PID 3024, es el que htop.
Si entramos en otra consola (pulsando, por ejemplo, CTRL+ALT+F2) y le damos la orden:
$kill 3024
El programa htop, se parará.
Otro comando interesante es
$lsof
Nos muestra mucha información acerca de lo que se esta ejecutando en nuestro ordenador. (ver: http://es.wikipedia.org/wiki/Lsof y pagina man de lsof (traducido por google)
Nos muestra tanta información que tendremos que "filtrarla", para ello usamos el comando grep y more
Por ejemplo:
$lsof |grep gbx2 |more
Podemos ver que esta usando gbx2 (gambas).
Otro ejemplo:
$lsof |grep gbx2 |more | grep sqlite
Estamos filtrando toda la información donde aparezca gbx2 y sqlite
Caso práctico:
Yo lo uso cuando estoy programando en el IDE de gambas, y al ejecutar el programa que estoy haciendo se me queda "pillado el ordenador", como habrá dos procesos (PID distintos), uno del IDE de gambas y otro del programa haciendo, puedo parar el programa sin parar el IDE de programación de gambas.
Saludos
Nota:
Otra comando interesante es
$nano
Es un editor de texto con el cual podemos editar archivos de configuración.
Suscribirse a:
Entradas
(
Atom
)





