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
No hay comentarios:
Publicar un comentario