-->

Menú principal

Mostrando entradas con la etiqueta Gambas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Gambas. Mostrar todas las entradas

miércoles, 11 de abril de 2018

TIC 2º Bachillerato - Tema 4.- Elementos de Programación

Desarrollo de una aplicación en Gambas para convertir temperaturas

En esta aplicación vamos a convertir temperaturas de grados celsius a grados fahrenheit y viceversa. Lo primero es entrar en gambas y crear un proyecto nuevo llamado "Temperaturas".
A continuación procedemos a crear el formulario poniendo la etiqueta principal con el título de la aplicación "Conversión de grados celsius a fahrenheit y viceversa". Añadimos los campos valueBox donde vamos a introducir los grados celsius y fahrenheit, con sus respectivas etiquetas. Y finalmente añadimos un botón "Convertir" para realizar la conversión en ambas direcciones. Si introducimos los grados en celsius convierte a fahrenheit y si introducimos los grados fahrenheit los convierte a celsius.

Añadimos también un botón para borrar los datos introducidos y calculados y hacer una nueva conversión. Ahora hacemos doble clic en el botón "Convertir" e introducimos las siguientes instrucciones:

Public Sub Button_Convertir_Click()
  Dim celsius As Integer
  Dim far As Integer
  If ValueBox_Celsius.Text <> 0 Then
    celsius = ValueBox_Celsius.Text
    far = celsius * 9 / 5 + 32
    ValueBox_Fah.Text = far
  Endif
  If ValueBox_Fah.Text <> 0 Then
    far = ValueBox_Fah.Text
    celsius = (far - 32) * 5 / 9
    ValueBox_Celsius.Text = celsius
  Endif
 
End

En el botón "Borrar" blanqueamos los números introducidos o calculados en los valueBox. Este sería el código a introducir en el evento clic del botón.

Public Sub Button_Borrar_Click()
  ValueBox_Celsius.Text = ""
  ValueBox_Fah.Text = ""
End


Por último cuando hacemos clic en el botón "Salir" ejecutamos el comando Quit:

Public Sub Button_Salir_Click()
  Quit
End



Desarrollo de una aplicación en Gambas para calcular una ecuación de segundo grado

La ecuación de 2º grado es de la forma: a*X² + b*X + c = 0

Tenemos que crear un formulario con tres campos ValueBox donde el usuario va a introducir los valores de los coeficientes a,b y c. El formulario puede tener este aspecto:

Una vez creados los tres ValueBox para los coeficientes a, b y c tenemos que crear un botón para calcular el resultado o las soluciones de la ecuación. Como la ecuación va a tener dos soluciones tenemos que crear otros dos campos ValueBox donde vamos a poner los valores de cada una de las soluciones.


Ahora a los campos donde vamos a introducir los coeficientes les llamanos ValueBox_a, ValueBox_b y ValueBox_c. A los campos que van a mostrar las soluciones de la ecuación les llamamos ValueBox_x1 y ValueBox_x2. Al botón le llamamos Button_calcular, que tendrá el siguiente código:

Public Sub Button_Calcular_Click()

  Dim a As Integer
  Dim b As Integer
  Dim c As Integer
  Dim x1 As Float
  Dim x2 As Float
  Dim x3 As Float
  Dim x As Float
  Dim respuesta As Integer
   
  a = ValueBox_a.Text
  b = ValueBox_b.Text
  c = ValueBox_c.Text
  If (b ^ 2 - 4 * a * c) < 0 Then
    x1 = (b ^ 2 - 4 * a * c)
    Message.Title = "Los coeficientes introducidos dan una raiz negativa"
    Message.Title = "Atención: raiz negativa" & x1
    respuesta = Message.Warning("Los coeficientes introducidos dan una raiz negativa", "Introducir nuevos coeficientes")
    ValueBox_a.SetFocus
  Else
    x1 = Sqr(b ^ 2 - 4 * a * c)
    x2 = (- b + x1) / 2 * a
    x3 = (- b - x1) / 2 *a
    ValueBox_x1.Value = x2
    ValueBox_x2.Value = x3
  Endif
 
End


En el código del botón calcular hemos declarado las siguientes variables

a --> valor del coeficiente a
b --> valor del coeficiente b
c --> valor del coeficiente c

Estos coeficientes van a ser valores enteros por eso los hemos declarado como Integer. Ademas hemos declarado las variables x1,x2,x3 como variables en coma flotante o float, para realizar los cálculos. Y la variable respuesta que devuelve el valor del botón seleccionado cuando aparece el mensaje de error.

Lo primero que tenemos que hacer es comprobar si los coeficientes introducidos dan un valor negativo, lo cual produciría una raiz negativa y no podríamos realizar el cálculo de las dos soluciones de la ecuación.

Si el valor de raiz(b² - 4ac) es negativo presentamos un mensaje solicitando nuevos coeficientes, en caso contrario seguimos con el cálculo y obtenemos las dos soluciones de la ecuación, colocando sus valores en los valuebox correspondientes.

En este ejercicio hemos aprendido a usar el procedimiento de comparación con la sentencia If Then Else.
Hemos aprendido a mostrar mensajes al usuario a través de pantalla. También hemos usado la función raiz y cuadrado, y las operaciones de multiplicación, suma y resta.

A continuación vamos a representar la gráfica de la ecuación en un objeto llamado "DrawingArea" situado en la pestaña "Container" de la barra de objetos insertables en el formulario.


Una vez creado el objeto DrawingArea en nuestro formulario, lo ajustamos al tamaño máximo posible del formulario.
En la zona de declaración de variables al principio de Fmain.Class tenemos que declarar las siguientes variables:

Public hPicture As Picture
Public a As Integer
Public b As Integer
Public c As Integer
Public ancho As Integer
Public alto As Integer

Todas estas variable son públicas para poder recuperar sus valores en cualquier objeto del programa. La variable hPicture declara un objeto Picture. Las variables a,b y c son los coeficientes de la ecuación y las variables ancho y alto definen las medidas del área de dibujo.

Dentro del evento Draw del objeto DrawingArea debemos colocar el siguiente código:

Public Sub DrawingArea_Draw()
  Paint.Begin(DrawingArea)
    If hPicture Then Paint.DrawPicture(hPicture, 0, 0)
  Paint.End
End


En el evento Open del formulario que se ejecuta al iniciar la aplicación debemos poner el código:

Public Sub Form_Open()
  'Paint.Begin(DrawingArea)
  DrawingArea.cached = False
  hPicture = New Picture(DrawingArea.Width, DrawingArea.Height, True)
  hPicture.Fill(&HC3DDFF)
  DibujaEjes()
End

Hay que crear una subrutina llamada "DibujaEjes" para dibujar los ejes horizontal y vertical y los indicadores de escala o numeración. Esta subrutina debe tener el siguientes código:

Public Sub DibujaEjes()
  Dim x As Integer             'Aquí declaramos las variables x e y
  Dim y As Integer
  Paint.Begin(hPicture)      'Iniciamos el objeto picture con la clase Begin
      ancho = DrawingArea.Width     'Ponemos el ancho del área de dibujo en la variable ancho
      alto = DrawingArea.Height        'Ponemos el alto del área de dibujo en la variable alto
  
      Paint.Rectangle(0, 0, ancho, alto)     'Dibujamos un rectángulo en el perímetro del área de dibujo
      Paint.LineWidth = 1                          'Definimos el ancho de linea al valor 1
      ' Dibujamos los ejes horizontal y vertical
      Paint.MoveTo(ancho / 2, 0)
      Paint.LineTo(ancho / 2, alto)
      Paint.MoveTo(0, alto / 2)
      Paint.LineTo(ancho, alto / 2)
      Paint.Translate(ancho / 2, alto / 2)       ' traslada el origen de coordenadas 
      Paint.Scale(1, -1)
      For x = -400 To 400 Step 10
        Paint.MoveTo(x, -3)
        Paint.LineTo(x, 3)
      Next
      For y = -200 To 200 Step 10
        Paint.MoveTo(-3, y)
        Paint.LineTo(3, y)
      Next
      Paint.Stroke()
      
  Paint.End 
  
End


Y ahora tenemos que crear otra subrutina para dibujar los puntos a la que llamamos "DibujaPuntos":

Public Sub DibujaPuntos()
  Dim x As Float
  Dim y As Float
  DrawingArea.Clear
  DrawingArea.Refresh
  DrawingArea.Cached = True
  Paint.Begin(hPicture)
    Paint.Translate(ancho / 2, alto / 2)       ' traslada el origen de coordenadas 
    Paint.Scale(1, -1)                             ' Cambia la dirección del eje Y
    Paint.Brush = Paint.Color(Color.Red)       ' Pone en rojo el color de la brocha
    Paint.LineWidth = 3                        ' Define el ancho de línea
    For x = -20 To 20
      y = a * x ^ 2 + b * x + c
      Print x, y
      Paint.Arc(x, y, 1)       ' Dibuja un círculo cuyo centro está en las coordenadas x,y
      Paint.Stroke(True)       ' Pla propiedad trazar a true
      Paint.Brush = Paint.Color(Color.Yellow)    ' Cambia color de la brocha a amarillo
      Paint.Fill()
    Next
    'Draw.Point(10, 20)
    DrawingArea.Cached = False
    
  Paint.End 
End

Esta subrutina es invocada desde el botón dibujar

Public Sub Button_Dibujar_Click()
 DibujaPuntos()
End

El resultado debe ser el siguiente, donde podemos ver el área de dibujo en color azul claro como fondo, los ejes el color negro y los puntos de la gráfica en color amarillo:



Podemos cambiar el color de los puntos a otro color simplemente cambiando la línea de código:
Paint.Brush = Paint.Color(Color.Yellow)    ' Cambia color de la brocha a amarillo
por esta otra para obtener el color rojo:
Paint.Brush = Paint.Color(Color.red)    ' Cambia color de la brocha a rijo


sábado, 17 de marzo de 2018

Como ejecutar el entorno de programación Gambas desde Windows 10

En este artículo voy a contar mi experiencia con la instalación de Gambas en Windows 10

Como ya sabéis podemos instalar desde la tienda de Windows Store la aplicación Ubuntu que instala una terminal Bash desde la que podemos ejecutar cualquier comando de Linux. En realidad en un sistema Linux básico sin entorno gráfico. Es una herramienta para desarrolladores y también para curiosos que quieran investigar el comportamiento de Linux dentro de Windows.



Ubuntu en Windows permite ejecutar una serie de comandos como: bash, ssh, apt, etc. Es decir todos los comandos de consola de Ubuntu. Una vez instalado la terminal tiene el siguiente aspecto:


En principio pensé que esto no tenía ninguna utilidad, ya que solo disponía de una terminal de comandos. No tenía toda la potencia de Linux sobre el escritorio de Windows, no podía ejecutar el entorno gráfico de Linux (X11) ni aplicaciones gráficas. Pensé que era algo rudimentario y que no merecía la pena, ya que dispongo de un sistema de arranque dual con la última versión de Ubuntu y Windows 10. ¿Para qué quería usar la consola de Ubuntu en Windows, si yo lo que quería era ejecutar aplicaciones Gambas en Windows?

Pero después investigando me entero de que alguien ha conseguido ejecutar el entorno gráfico de Linux en un sistema con windows. Para ello es necesario instalar varias aplicaciones. Bueno pues me pongo manos a la obra, a ver si consigo instalar aplicaciones gráficas con estas herramientas.

En primer lugar tenemos que instalar "Xming". ¿Pero qué es Xming?

Xming es una implementación portátil del sistema de ventanas X para sistemas operativos Microsoft Windows XP, 2003, Vista, windowa 7, 8 y por tanto también Windows 10.
Xming parece que mejora las características CygWin, ya que no requiere el uso de librerias o bibliotecas CygWin.
Xming se usa en implementaciones de Secure Shell (SSH) para asegurar sesiones X11 en otras computadoras. Soporta PuTTY y ssh.exe, y tiene una versión de PuTTY's plink.exe.

Parece que Xming es un entorno de ventanas o servidor gráfico X para windows. Pues procedo a instalarlo desde la página oficial del proyecto en SourceForge:



Tiene todas las funciones, es pequeño y rápido, fácil de instalar y porque es independiente de Microsoft Windows nativo, se hace fácilmente portátil (no necesita una instalación específica de la máquina).

Pero nos hace falta otra aplicación para tener el juego completo y ejecutar aplicaciones gráficas en Windows. Necesitamos también PuTTY. ¿Pero qué es PuTTY?PuTTY es un cliente ssh y telnet que nos da acceso a una consola dentro del servidor. Combinando ambas aplicaciones (Xming+PuTTY) podremos iniciar aplicaciones gráficas de Linux en Windows de una manera bien sencilla. Nos permite conectarnos a servidores remotos iniciando una sesión en ellos para ejecutar comandos.


Vamos a instalar PuTTY desde su página oficial:



Ya tenemos PuTTY instalado. Ahora hay que ejecutarlos y configurarlos. Primero ejecutamos Xming:

Después ejecutamos PuTTY y nos aparece la siguientes ventana donde tenemos que introducir la dirección IP del ordenador al que nos vamos a conectar, en mi caso es la IP de mi equipo con Windows. Para saber mi IP ejecuto el comando "ifconfig" desde la terminal de Ubuntu.
En el menú lateral de la izquierda en la pestaña "Session", donde dice IP Adress o Host name ponemos la IP de nuestro equipo. Luego nos vamos a la pestaña "Connection" y dentro de ésta seleccionamos SSH y dentro de ésta "X11". Activamos la casilla "Enable X11 forwarding", y en "X display location" ponenos la IP de nuestro equipo de nuevo. Podemos guardar la configuración y pulsamos el botón "Open". Nos aparece lo siguiente:
Ya podemos ejecutar aplicaciones gráficas. Probamos con Xclock. Si nos da el mensaje de error "Can't open display", ejecutamos el siguiente comando en la consola de Ubuntu: export DISPLAY=192.168.1.108:0.0, en el que hay que poner la IP correspondiente a nuestro equipo. Ejecutamos de nuevo Xclock y vemos que se nos abre la ventana con el reloj. Ya podemos ejecutar aplicaciones gráficas.
Aquí tenemos el entorno de programación de Gambas versión 3.8.4 ejecutándose sobre Windows 10. Para ello desde la consola de Ubuntu ejecutamos el comando "gambas3".


Podemos abrir aplicaciones existentes o crear nuevas aplicaciones. También podemos ejecutar aplicaciones compiladas en Gambas, sin necesidad de abrir el entorno de Gambas.

También podemos lanzar la aplicación "Synaptic", el instalador de paquetes de Linux, lo cual nos permite instalar en nuestra distribución "Ubuntu on Windows" innumerables paquetes de software.
Aquí tenemos el gestor de paquetes Synaptic ejecutándose sobre Windows. Para ello solo tenemos que teclear el comando "synaptic" en la terminal de Ubuntu. En caso de no estar instalado el paquete nos dice como debemos instalar la aplicación usando el comando "apt install".


Aquí tenemos el explorador de ficheros PCManFM versión 1.2.4 accediendo a los archivos del disco duro local C:/, lo cual nos permite abrir múltiples ventanas de para ficheros de hoja de cálculo xls, ods, documentos pdf, ficheros de audio, vídeos, etc.


PCMan File Manager (PCManFM) es una aplicación de gestión de archivos desarrollado por Hong Jen Yee de Taiwán, que pretende ser un sustituto de Nautilus, Konqueror y Thunar. Esta aplicación tiene una apariencia similar al explorador de ficheros de Windows. 
Gambas nos permite crear ejecutables de los programas que desarrollamos. Estos programas ejecutables se guardan desde el menú "Proyect", opción "Make" ---> "Executable". Genera un fichero con el nombre que le hemos dados a la aplicación con la extensión ".gambas". 

¿Como podemos ejecutar estos ficheros ejecutables sin necesidad de arrancar el entorno Gambas?
Tenemos varias opciones:
1.- Desde la terminal de Ubuntu ejecutamos el comando: gbx3 Fechas

El comando gbx3 lanza el intérprete que permite ejecutar aplicaciones Gambas compiladas. El comando tiene una serie de opciones o parámetros, entre ellas gbx3 -V, que nos permite ver la versión de Gambas que está instalada. Para ello debemos estar situados justo encima del directorio de la aplicación. Siendo Fechas el directorio donde están todos los ficheros del proyecto o aplicación que hemos desarrollado en gambas. Nos aparece esto:



2.- Desde la terminal de Ubuntu ejecutando el comando: ./Fechas.gambas
Para ellos tenemos que entrar en el directorio Fechas donde está la aplicación generada con make que es el fichero ejecutable "Fechas.gambas".


Hay un gran diferencia entre estos dos comandos. El primero (gbx3) ejecuta el código de la aplicación en desarrollo, es decir la versión actual con las últimas modificaciones. Y el segundo comando (./Fechas.gambas) ejecuta la aplicación compilada en su momento con make executable, que no tiene porqué coincidir con el desarrollo actual de la aplicación. El comando gbx3 no necesita entonces que exista un fichero ejecutable en el directorio del la aplicación ya que usará directamente los ficheros código fuente generados en el directorio, que no son visibles en un gestor de ficheros, pero si los podemos ver desde la terminal tecleando el comando "ls -la".

3.- La tercera forma de ejecutar una aplicación gambas es desde un gestor o explorador de archivos como PCManFM. Para ello tenemos que seleccionar el fichero ejecutable de Gambas y pulsar con el botón derecho del ratón, entrar en propiedades y marcar la opción para permitir ejecutar el fichero como un programa. En mi caso, al hacer doble click sobre el fichero ejecutable me aparece una ventana que me dice si quiero ejecutar el fichero como una aplicación.



Otra interesante aplicación que podemos ejecutar es LibreCAD mediante el comando "librecad" desde la terminal de Ubuntu. Aquí podemos ver la aplicación en ejecución en su última versión: