Ejemplos de programación.

 

Antes de empezar creamos en el servidor, dentro de la carpeta “  4AVbasic ”, una carpeta con nuestro-os números.

 

Ejemplo 1: Sencillo programa de colores y posiciones

En la Figura  se muestra el formulario y los controles de un ejemplo muy sencillo que permite mover una caja de texto por la pantalla, permitiendo a su vez  representarla con cuatro colores diferentes  En la Tabla  se describen los controles utilizados, así como algunas de sus propiedades más importantes (sobre todo las que se separan de los valores por defecto). Los ficheros de este proyecto se llamarán Colores0.vbp y Colores0.frm. y Colores0.exe

 

 

 

 

 

Control

Propiedad

Valor

Control

Propiedad

Valor

frmColores0

Nombre

frmColores0

optVerde

Nombre

optVerde

 

Caption

Colores

 

Caption

Verde

fraColores

Nombre

fraColor

fraPosicion

Nombre

fraPosicion

 

Caption

Colores

 

Caption

Posición

optAzul

Nombre

optAzul

optArriba

Nombre

optArriba

 

Caption

Azul

 

Caption

Arriba

optRojo

Nombre

optRojo

optAbajo

Nombre

optAbajo

 

Caption

Rojo

 

Caption

Abajo

optAmarillo

Nombre

optAmarillo

txtCaja

Nombre

txtCaja

 

Caption

Amarillo

 

Text

“”

 

A continuación se muestra el código correspondiente a los procedimientos de este ejemplo.

Option Explicit

Private Sub Form_Load()

txtCaja.Top = 0

End Sub

 

Private Sub optArriba_Click()

txtCaja.Top = 0

End Sub

 

Private Sub optAbajo_Click()

txtCaja.Top = frmColores0.ScaleHeight - txtCaja.Height

End Sub

 

Private Sub optAzul_Click()

txtCaja.BackColor = vbBlue

End Sub

 

Private Sub optRojo_Click()

txtCaja.BackColor = vbRed

End Sub

 

Private Sub optVerde_Click()

txtCaja.BackColor = vbGreen

End Sub

 

Private Sub optAmarillo_Click()

txtCaja.BackColor = vbYellow

End Sub

 

Sobre este primer programa en Visual Basic 6.0 se pueden hacer algunos comentarios:

1. El comando Option Explicit sirve para obligar a declarar todas las variables que se utilicen. Esto impide el cometer errores en los nombres de las variables (confundir masa con mesa, por ejemplo). En este ejemplo, y en casi todo lo que hagamos este curso, esto no tiene ninguna importancia, pero es conveniente acostumbrarse a incluir esta opción. Declarar una variable es crearla con un nombre y de un tipo determinado antes de utilizarla.

2. Cada una de las partes de código que empieza con un Private Sub y termina con un End Sub es un procedimiento, esto es, una parte de código independiente y reutilizable. El nombre de uno de estos procedimientos, por ejemplo optAzul_Click(), es típico de Visual Basic. La primera parte es el nombre de un objeto (control); después va un separador que es el carácter de subrayado (_); a continuación el nombre de un evento -click, en este caso-, y finalmente unos paréntesis entre los que irían los argumentos, en caso de que los hubiera. . Es también interesante ver cómo se accede desde programa a la propiedad backColor de lacaja de texto que se llama txtCaja: se hace utilizando el punto en la forma  txtCaja.BackColor. Los colores se podrían también introducir con notación hexadecimal (comenzando con &H, seguidos por dos dígitos entre 00 y FF (es decir, entre 0 y 255 en base 10) para los tres colores fundamentales, es decir para el Red, Green y Blue (RGB), de derecha a izquierda. Aquí se han utilizado las constantes simbólicas predefinidas en Visual Basic 6.0: vbRed, vbGreen y vbBlue .

Recuérdese que si se desea que el código de todos los eventos aparezca en una misma ventana hay que activar la opción Default to Full Module View en la solapa Editor del comando Tools/Options. También puede hacerse directamente en la ventana de código con uno de los botones que aparecen en la parte inferior izquierda ( ).

3. Las propiedades ScaleHeight y Height fijan la altura de un objeto.

4. Es muy importante crear primero el control frame y después, estando seleccionado, colocar los botones de opción en su interior. No sirve hacerlo a la inversa. Visual Basic supone que todos los botones de opción que están dentro del mismo frame forman parte del mismo grupo y sólo permite que uno esté seleccionado.

 

Puedes crear un ejecutable :  desplegando Archivo en la barra de herramientas , y haciendo clic en “ generar  colores0.exe”

 

 

 

Ejemplo 2: Minicalculadora elemental

En este ejemplo se muestra una calculadora elementalque permite hacer las cuatro operaciones aritméticas. Los ficheros de este proyecto se pueden llamar minicalc.vbp y minicalc.frm.  y el ejecutable correspondiente. El usuario introduce los datos y clica sobre el botón correspondiente a la operación que desea realizar, apareciendo inmediatamente el resultado en la caja de texto de la derecha.

La Tabla  muestra los objetos y las propiedades más importantes de este ejemplo.

 

Control

Propiedad

Valor

Control

Propiedad

Valor

frmMinicalc

Nombre

frmMinicalc

lblEqual

Nombre

lblEqual

 

Caption

Minicalculadora

 

Caption

=

txtOper1

Nombre

txtOper1

cmdSuma

Nombre

cmdSuma

 

Text

 

 

Caption

+

txtOper2

Nombre

txtOper2

cmdResta

Nombre

cmdResta

 

Text

 

 

Caption

-

txtResult

Nombre

txtResult

cmdMulti

Nombre

cmdProd

 

Text

 

 

Caption

*

lblOp

Nombre

lblOp

cmdDivi

Nombre

cmdDiv

 

Caption

 

 

Caption

/

 

 

A continuación se muestra el código correspondiente a los procedimientos que gestionan los eventos de este ejemplo.

Option Explicit

 

Private Sub cmdDiv_Click()

txtResult.Text = Val(txtOper1.Text) / Val(txtOper2.Text)

lblOp.Caption = "/"

End Sub

 

Private Sub cmdProd_Click()

txtResult.Text = Val(txtOper1.Text) * Val(txtOper2.Text)

lblOp.Caption = "*"

End Sub

 

Private Sub cmdResta_Click()

txtResult.Text = Val(txtOper1.Text) - Val(txtOper2.Text)

lblOp.Caption = "-"

End Sub

 

Private Sub cmdSuma_Click()

txtResult.Text = Val(txtOper1.Text) + Val(txtOper2.Text)

lblOp.Caption = "+"

End Sub

 

En este ejemplo se ha utilizado repetidamente la función Val() de Visual Basic. Esta función convierte una serie de caracteres numéricos (un texto formado por cifras) en el número entero o de punto flotante correspondiente. Sin la llamada a la función Val() el operador + aplicado a cadenas de caracteres las concatena (une), y como resultado, por ejemplo, “3+4” daría “34”. No es lo mismo los caracteres “1” y “2” formando la cadena o string 12” que el número 12; la función val() convierte cadenas de caracteres numéricos –con los que no se pueden realizar operaciones aritméticas- en los números correspondientes –con los que sí se puede operar matemáticamente-. Visual Basic 6.0 transforma de modo automático números en cadenas de caracteres y viceversa, pero este es un caso en el que dicha transformación no funciona porque el operador “+” tiene sentido tanto con números como con cadenas.

 

Ahora añade al código anterior lo siguiente y prueba a ver lo que pasa:

 

Private Sub Txtoper1_Change()

If lblop.Caption = "+" Then

Txtresult.Text = Val(Txtoper1.Text) + Val(Txtoper2.Text)

End If

If lblop.Caption = "-" Then

Txtresult.Text = Val(Txtoper1.Text) - Val(Txtoper2.Text)

End If

If lblop.Caption = "*" Then

Txtresult.Text = Val(Txtoper1.Text) * Val(Txtoper2.Text)

End If

If lblop.Caption = "/" Then

Txtresult.Text = Val(Txtoper1.Text) / Val(Txtoper2.Text)

End If

End Sub

 

Private Sub Txtoper2_Change()

If lblop.Caption = "+" Then

Txtresult.Text = Val(Txtoper1.Text) + Val(Txtoper2.Text)

End If

If lblop.Caption = "-" Then

Txtresult.Text = Val(Txtoper1.Text) - Val(Txtoper2.Text)

End If

If lblop.Caption = "*" Then

Txtresult.Text = Val(Txtoper1.Text) * Val(Txtoper2.Text)

End If

If lblop.Caption = "/" Then

Txtresult.Text = Val(Txtoper1.Text) / Val(Txtoper2.Text)

End If

End Sub

 

Intenta entender cómo funciona una de la instrucciones más utilizadas en Basic (y prácticamente en todos los lenguajes de programación). if…..then”. La hemos utilizado recurrentemente “a propósito” pero ya os adelanto que más adelante veremos cómo podemos simplificar, y mucho, esta situación.

¿Cómo funciona change()?

 

 

Ejemplo 3.- Una bromilla.

Este es un ejemplo en el que utilizando las propiedades top y left podemos gastar una pequeña broma. Vamos a crear los archivos broma.vbp y broma.frm. Posteriormente crearemos el ejecutable broma.exe que puedes llevarte en un disquete o mandártelo por correo, y así enseñar en casa todo lo que aprendes en clase de Informática.  En la tabla tienes los objetos y las propiedades correspondientes.

 

Control

Propiedad

Valor

Control

Propiedad

Valor

Form1

Nombre

Form1

cmdno

Nombre

cmdno

 

Caption

Una preguntilla

 

Caption

No

 

controlbox

False

cmdexit

Nombre

cmdexit

 

ShowinTaskbar

False

 

Caption

Ahora puedes salir

Lbl2

Nombre

Lbl2

 

Visible

False

 

Caption

Así me gusta…

 

 

 

 

Visible

False

 

 

 

cmdsi

Nombre

cmdsi

 

 

 

 

Caption

Si

 

 

 

 

 

 

 

 

 

 

 

Y aquí tienes el código:

Private Sub Cmdsi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Lbl2.Visible = False

cmdexit.Visible = False

Form1.Top = Int(4500 * Rnd)

Form1.Left = Int(5000 * Rnd)

End Sub

 

Private Sub Cmdno_Click()

Lbl2.Visible = True

cmdexit.Visible = True

End Sub

 

Private Sub Cmdexit_Click()

End

End Sub

 

1.- Al establecer las propiedades de controlbox y showintaskbar como False, el formulario no tiene los botones minimizar, maximizar y cerrar, ni aparece en la barra de herramientas, con lo cual dificultamos el cierre del programa.

2.- El botón salir tampoco está visible hasta que tecleemos “No”

3.- Rnd es un número aleatorio que toma valores reales en el intervalo cerrado [0, 1]( suponemos que con los maravillosos profesores que tienes de matemáticas sabes de que estamos hablando) , Int ( número) convierte a número en entero

 

 

Ejemplo 3: Transformación de unidades de temperatura

La Figura  muestra un programa sencillo que permite ver la equivalencia entre las escalas de

temperaturas en grados centígrados y grados Fahrenheit. Los ficheros de este proyecto se pueden

llamar Temperat.vbp y Temperat.frm y si quieres temperat.exe.

 En el centro del formulario aparece una barra de desplazamiento vertical que permite desplazarse

con incrementos pequeños de 1º C y grandes de 10º C. Como es habitual, también puede cambiarse el valor arrastrando con el ratón el cursor de la barra. Los valores máximos y mínimo de la barra son 100º C y -100º C.

A ambos lados de la barra aparecen dos cuadros de texto (color de fondo blanco) donde

aparecen los grados correspondientes a la barra en ambas escalas. Encima aparecen dos rótulos

(labels) que indican la escala de temperaturas correspondiente. Completan la aplicación un botón

Salir que termina la ejecución y un menú Archivo con la única opción Salir, que termina asimismo la

ejecución del programa. La Tabla indica los controles utilizados en este ejemplo junto con las propiedades y los valores correspondientes.

 

 

Control

Propiedad

Valor

Control

Propiedad

Valor

frmTemp

Nombre

frmTemp

vsbTemp

Nombre

vsbTemp

 

Caption

Conversor de

 

Min

100

 

 

temperaturas

 

 

 

mnuarchivo

Nombre

mnuarchivo

 

Max

-100

 

Caption

Archivo

 

SmallChange

1

mnuFileExit

Nombre

mnuFileExit

 

LargeChange

10

 

Caption

Salir

 

Value

0

cmdSalir

Nombre

cmdSalir

lblCent

Nombre

lblCent

 

Caption

Salir

 

Caption

Grados Centígrados

 

Font

MS Sans Serif, Bold, 14

 

Font

MS Sans Serif, 10

txtCent

Nombre

txtCent

lblFahr

Nombre

lblFahr

 

text

0

 

Caption

Grados Fahrenheit

txtFahr

Nombre

txtFahr

 

Font

MS Sans Serif, 10

 

text

32

 

 

 

 

Por otra parte, el código con el que este programa responde a los eventos es el contenido en los siguientes procedimientos:

Option Explicit

Private Sub cmbSalir_Click()

Beep

End

End Sub

Private Sub mnuFileExit_Click()

End

End Sub

Private Sub vsbTemp_Change()

txtCent.Text = vsbTemp.Value

txtFahr.Text = 32 + 1.8 * vsbTemp.Value

End Sub

Sobre este tercer ejemplo se puede comentar lo siguiente:

1. Se ha utilizado la propiedad Value de la barra de desplazamiento, la cual da el valor actual de la misma con respecto a los límites inferior y superior, previamente establecidos (-100 y 100). 2. Mediante el procedimiento cmdSalir_Click, se cierra el programa, gracias a la instrucción End. El cometido de Beep no es otro que el de emitir un pitido a través del altavoz del ordenador, que indicará que en efecto se ha salido del programa. 3. La función mnuFileExit_Click() y activa desde el menú y termina la ejecución sin emitir ningún sonido.

4. Finalmente, la función vsbTemp_Change() se activa al cambiar el valor de la barra de desplazamiento; su efecto es modificar el valor de la propiedad text en las cajas de texto que muestran la temperatura en cada una de las dos escalas.

 

Ejemplo.4: Colores RGB

La Figura 1.5 muestra el formulario y los controles del proyecto Colores. Los ficheros de ste proyecto se pueden llamar Colores.vbp y Colores.frm.

En este ejemplo se dispone de tres barras de desplazamiento con las que pueden controlarse las componentes RGB del color del fondo y del color del texto de un control label. Dos botones de opción permiten determinar si los valores de las barras se aplican al fondo o al texto. Cuando

se cambia del texto al fondo o viceversa los valores de las barras de desplazamiento (y la posición de los cursores) cambian de modo acorde.

A la dcha. de las barras de desplazamiento tres cajas de texto contienen los valores numéricos de los tres colores (entre 0 y 255). A la izda. Tres labels indican los colores de las tres barras. La Tabla 1.5 muestra los controles y las propiedades utilizadas en el este ejemplo.

 

Control

Propiedad

Valor

Control

Propiedad

Valor

frmColores

Nombre

frmColores

hsbColor

Nombre

hsbColor

 

Caption

Colores

 

Min

0

lblCuadro

Nombre

lblCuadro

 

Max

255

 

Caption

INFORMÁTICA 1

 

SmallChange

1

 

Font

MS Sans Serif, Bold, 24

 

LargeChange

16

cmdSalir

Nombre

cmdSalir

 

Index

0,1,2

 

Caption

Salir

 

Value

0

 

Font

MS Sans Serif, Bold, 10

txtColor

Nombre

txtColor

optColor

Nombre

optColor

 

Text

0

 

Index

0,1

 

Locked

True

 

Caption

Fondo, Texto

 

Index

0,1,2

 

Font

MS Sans Serif, Bold, 10

lblColor

Nombre

lblColor

 

 

 

 

Caption

Rojo,Verde,Azul

 

 

 

 

Index

0,1,2

 

 

 

 

Font

MS Sans Serif, 10

 

Una característica importante de este ejemplo es que se han utilizado vectores (arrays) de controles. Las tres barras se llaman hsbColor y se diferencian por la propiedad Index, que toma los valores 0, 1 y 2. También las tres cajas de texto, las tres labels y los dos botones de opción son

arrays de controles. Para crear un array de controles basta crear el primero de ellos y luego hacer Copy y Paste tantas veces como se desee, respondiendo afirmativamente al cuadro de diálogo que pregunta si desea crear un array. El procedimiento Sub que contiene el código que gestiona un evento de un array es único para todo el array, y recibe como argumento la propiedad Index. De este modo que se puede saber exactamente en qué control del array se ha producido el evento. Así pues, una ventaja de los arrays de controles es que pueden compartir el código de los eventos y permitir un tratamiento conjunto

por medio de bucles for. A continuación se muestra el código correspondiente a los procedimientos que tratan los eventos de este ejemplo.

 

Option Explicit

Public Brojo, Bverde, Bazul As Integer

Public Frojo, Fverde, Fazul As Integer

Private Sub cmdSalir_Click()

End

End Sub

 

Private Sub Form_Load()

Brojo = 0

Bverde = 0

Bazul = 0

Frojo = 255

Fverde = 255

Fazul = 255

lblCuadro.BackColor = RGB(Brojo, Bverde, Bazul)

lblCuadro.ForeColor = RGB(Frojo, Fverde, Fazul)

End Sub

 

Private Sub hsbColor_Change(Index As Integer)

If optColor(0).Value = True Then

lblCuadro.BackColor = RGB(hsbColor(0).Value, hsbColor(1).Value, _

hsbColor(2).Value)

Dim i As Integer

For i = 0 To 2

txtColor(i).Text = hsbColor(i).Value

Next i

Else

lblCuadro.ForeColor = RGB(hsbColor(0).Value, hsbColor(1).Value, _

hsbColor(2).Value)

For i = 0 To 2

txtColor(i).Text = hsbColor(i).Value

Next i

End If

End Sub

 

Private Sub optColor_Click(Index As Integer)

If Index = 0 Then ’Se pasa a cambiar el fondo

Frojo = hsbColor(0).Value

Fverde = hsbColor(1).Value

Fazul = hsbColor(2).Value

hsbColor(0).Value = Brojo

hsbColor(1).Value = Bverde

hsbColor(2).Value = Bazul

Else ’Se pasa a cambiar el texto

Brojo = hsbColor(0).Value

Bverde = hsbColor(1).Value

Bazul = hsbColor(2).Value

hsbColor(0).Value = Frojo

hsbColor(1).Value = Fverde

hsbColor(2).Value = Fazul

End If

End Sub

 

El código de este ejemplo es un poco más complicado que el de los ejemplos anteriores y requiere unas ciertas explicaciones adicionales adelantando cuestiones que se verán posteriormente:

1. La función RGB() crea un código de color a partir de sus argumentos: las componentes RGB (Red, Green and Blue). Estas componentes, cuyo valor se almacena en un byte y puede oscilar entre 0 y 255, se determinan por medio de las tres barras de desplazamiento.

2. El color blanco se obtiene con los tres colores fundamentales a su máxima intensidad. El color negro se obtiene con los tres colores RGB a cero. También se pueden introducir con las constantes predefinidas vbWhite y vbBlack, respectivamente.

3. Es importante disponer de unas variables globales que almacenen los colores del fondo y del texto, y que permitan tanto guardar los valores anteriores de las barras como cambiar éstas a sus nuevos valores cuando se clica en los botones de opción. Las variables globales, definidas en la parte de definiciones generales del código, fuera de cualquier procedimiento, son visibles desde cualquier parte del programa. Las variables definidas dentro de una función o

procedimiento sólo son visibles desde dentro de dicha función o procedimiento (variables locales).

4. La función hsbColor_Change(Index As Integer) se activa cada vez que se cambia el valor en una cualquiera de las barras de desplazamiento. El argumento Index, que Visual Basic define automáticamente, indica cuál de las barras del array es la que ha cambiado de valor (la 0, la 1 ó la 2). En este ejemplo dicho argumento no se ha utilizado, pero está disponible por si se hubiera querido utilizar en el código.

 

Ejemplo 5:  Ecuación de 2º grado.

En la imagen de la derecha tenemos el formulario correspondiente al siguiente ejemplo, … ( me parece que ahora tenéis que seguir solitas y solitos)