Informática
Operadores de Visual Basic 4.0
OPERADORES Y EXPRESIONES ARITMÉTICAS
Un operador es un símbolo o palabra que ejecuta una operación matemática. Una expresión aritmética es análoga a las fórmulas matemáticas. Las expresiones combinan números, variables, operadores y palabras clave, o alguno de estos elementos, para crear un nuevo valor. Visual Basic proporciona los siguientes operadores matemáticos:
Operador Operación Ejemplo
+ Suma Activos + Pasivos
-
Resta Precio - 4.00
* Multiplicación Total * Real
/ División Impuesto / Ajuste
\ División entera
Mod Resto de la división entera
^ Exponenciación Ajuste ^ 3
& Concatenación de cadenas Nombre1 & Nombre2
Ejemplo 11
En el siguiente ejemplo se demuestra lo sencillo que es utilizar los operadores de +, -, *, y / en una fórmula.
Vea la tabla 9 para trazar y nombrar sus objetos
Tabla 9
Objeto | Propiedad | Ajuste del momento de diseño |
Forma | Caption | Prueba Operadores básicos |
Botón de etiqueta (Label1) | Caption | |
Botón de etiqueta (Label2) | Caption | Variable 1 |
Botón de etiqueta (Label3) | Caption | Variable 2 |
Botón de etiqueta (Label4) | Caption | Resultado |
Botón de texto (Text1) | Text | |
Botón de texto (Text2) | Text | |
Botón Frame (Frame1) | Caption | Operador |
Botón de opción (Option 1) | Caption | Suma (+) |
Botón de opción (Option 2) | Caption | Resta (-) |
Botón de opción (Option 3) | Caption | Multiplicación (*) |
Botón de opción (Option 4) | Caption | División (/) |
Botón de orden (Command1) | Caption | Calcular |
Botón de orden (Command2) | Caption | Salir |
Figura 20
Agregue el siguiente código al botón Calcular
Private Sub Command1_Click()
Dim Primero, Segundo 'declara variables
Primero = Val(Text1.Text) 'convierte a números
Segundo = Val(Text2.Text)
'si se pulsa el primero botón, suma los números
If Option1.Value = True Then
Label1.Caption = Primero + Segundo
End If
'si se pulsa el segundo botón, resta los números
If Option2.Value = True Then
Label1.Caption = Primero - Segundo
End If
'si se pulsa el tercer botón, multiplica los números
If Option3.Value = True Then
Label1.Caption = Primero * Segundo
End If
'si se pulsa el cuarto botón, divide los números
If Option4.Value = True Then
Label1.Caption = Primero / Segundo
End If
End Sub
La primera sentencia del procedimiento declara dos variables de tipo variant, las cuales se utilizan para almacenar los valores introducidos en los cuadros de texto. Las sentencias:
Primero = Val(Text1.Text) 'convierte a números
Segundo = Val(Text2.Text)
Cargan los datos desde los cuadros de texto a las variables y convierten las cadenas de texto en números utilizando la función Val. Esta conversión es necesaria para que la operación de suma funcione correctamente en el programa. El tipo de dato implícito que devuelve un cuadro de texto es texto. Esto no es problema para los operadores -, * y / ya que sólo trabajan con números, de forma que cuando el usuario selecciona uno de estos tres operadores en el programa, Visual Basic convierte automáticamente los valores devueltos a las variables Primero y Segundo en números. El operador + funciona tanto con números como con cadenas de texto. Debido a que el tipo de datos implícitos que devuelve el cuadro de texto es texto, Visual Basic intentará automáticamente tratar los valores Primero y Segundo como texto cuando utilice el operador +. Visual Basic combinará o concatenaría los dos valores en lugar de realizar su suma aritmética.
El siguiente bloque de sentencias
'si se pulsa el primero botón, suma los números
If Option1.Value = True Then
Label1.Caption = Primero + Segundo
End If
Detecta si se ha pulsado el primer botón «Suma (+)». Si la propiedad Value del primer botón de opción se coloca a True, entonces las dos variables se sumarán y el resultado se asignará a la etiqueta. Los tres bloques restantes tienen una lógica similar, cada uno de los cuales utilizan una estructura de decisión If...Then y la propiedad Caption del objeto Label.
Agregue el siguiente código al botón Salir
Private Sub Command2_Click()
End
End Sub
Pulse el botón Iniciar de la barra de herramientas
Escriba 100 en el cuadro de texto Variable 1 y pulse después TAB para pasar al segundo cuadro de texto
Escriba 17
Pulse el botón Suma y después pulse el botón Calcular. El número 117 aparecerá en el cuadro Resultado.
Practique con los demás operadores. Cuando haya terminado, pulse el botón Salir
Ejemplo 12
El siguiente programa es una pequeña modificación del Ejemplo 11, muestra el funcionamiento de los operadores avanzados: \, Mod, ^, y &.
Cambie la propiedad Caption del los objetos Option1, Option2, Option3 y Option4 a División entera (\), Resto (Mod), Exponenciación (^) y Concatenación (&) respectivamente.
Modifique el código del botón Calcular para que quede de la siguiente manera:
Private Sub Command1_Click()
Dim Primera, Segunda 'declara variables
Primera = Text1.Text
Segunda = Text2.Text
If Option1.Value = True Then
Label1.Caption = Primera \ Segunda
End If
If Option2.Value = True Then
Label1.Caption = Primera Mod Segunda
End If
If Option3.Value = True Then
Label1.Caption = Primera ^ Segunda
End If
If Option4.Value = True Then
Label1.Caption = Primera & Segunda
End If
End Sub
Observe que este procedimiento Command1_Click presenta un aspecto similar al programa del ejemplo 1. Sin embargo existe una importante diferencia: este procedimiento no utiliza la función Val para convertir los datos a tipo numérico cuando los lee de los cuadros de texto. La conversión no es necesaria para los operadores avanzados, ya que, los operadores avanzados \, Mod y ^ trabajan sólo con números y & sólo trabaja con texto.
Oprima la tecla de función F5 para iniciar el programa.
Teclee en el cuadro de texto Variable 1 9 y después pulse TAB
Teclee 2 en el cuadro de texto Variable 2
Pulse el botón de opción División entera y después pulse el botón Calcular
En el cuadro de Resultado aparece el número 4. Aunque 9 dividido entre 2 es igual a 4.5, la operación de división entera sólo devuelve la primera parte (el número 4)
Pulse el botón Resto y después pulse Calcular.
Como 9 dividido entre 2 es igual a 4 con resto 1 El número 1 aparece en el cuadro de resultado.
Pulse el botón de opción Concatenación y después pulse el botón Calcular
En el cuadro de Resultado aparecerá la cadena «92». En este caso 92 no es un número, es una combinación de los caracteres 9 y 2. La concatenación de cadenas sólo puede realizarse sobre variables de texto, cadenas delimitadas por comillas y variables variant. Para ver como funciona este método con letras, escriba unas cuantas palabras en cada cuadro de variables y después vuelva a pulsar el botón Calcular.
Pulse el botón Salir.
Prioridad de los Operadores
Visual Basic nos permite mezclar tantos operadores matemáticos como queramos, en una fórmula, siempre que cada variable numérica y expresión estén separadas de otras por un operador. Por ejemplo
Total = 10 + 15 *2/4^2
La fórmula (expresión) procesa varios valores y asigna el resultado a una variable llamada Total. Pero, ¿cómo se evalúa dicha expresión en Visual Basic?.
Visual Basic establece un orden de prioridad para las operaciones matemáticas. Este orden indica a Visual Basic que operaciones deberá realizar primero cuando evalúe una expresión que contenga más de un operador. En la siguiente tabla se muestra el orden con los operadores listados en orden de prioridad (los operadores de igual nivel, se evalúan de izquierda a derecha, según aparezcan en la expresión).
Operador Orden
() Primero
^ Segundo
-
La negación (menos unitario), Tercero
* / Cuarto
\ Quinto
Mod Sexto
+- últimos
Tomando como referencia la tabla anterior, la expresión
Total = 10+15*2/4^2
Se evaluará de la siguiente forma
Total = 10+15*2/4^2
Total = 10+15*2/16
Total = 10+30/16
Total = 10+1.875
Total = 11,875
Alteración del Orden de Prioridad
Podemos utilizar uno o más pares de paréntesis en una fórmula para clarificar el orden de prioridad. Por ejemplo, la expresión
Número = (8-5*3)^2
Determinara el valor entre los paréntesis (-7) antes de realizar la exponenciación, aunque la exponenciación tenga un orden de prioridad mayor que la resta y multiplicación. Podemos colocar paréntesis anidados en la fórmula. Por ejemplo:
Número = ((8-5)*3)^2
Visual Basic calcula el resultado del paréntesis más interno y después los paréntesis externos y por último el exponente. El resultado producido por las dos fórmulas es diferente, la primera da como resultado 49 y la segunda 81.
Operadores Relacionales (de comparación) y Expresiones condicionales
En numerosas ocasiones se necesita comparar dos cantidades con la finalidad de tomar una decisión en función del resultado de dicha comparación. Una expresión condicional es una parte de una sentencia de programa completa que realiza preguntas Verdadero o Faso sobre una propiedad, una variable o alguna otra porción de datos en el código de programa. En cualquier expresión condicional podremos utilizar los operadores de comparación que se muestran a continuación:
Operador | Significado | Expresión condicional | Descripción |
> | Mayor que | lblVentas:Caption > Objetivo | Devuelve True si el valor a su izquierda es numérica o alfabéticamente mayor que el que está a su derecha |
< | Menor que | Pago < 2000.00 | Devuelve True si el valor a su izquierda es numérica o alfabéticamente menor que el que está a su derecha |
= | Igual a | Edad = Limite | Devuelve True si los valores comparados son iguales |
>= | Mayor o igual que | Nombre >= “Miguel” | Devuelve True si el valor a su izquierda es numérica o alfabéticamente igual o mayor que el que está a su derecha |
<= | Menor o igual que | Num <= lblMonto.Caption | Devuelve True si el valor a su izquierda es numérica o alfabéticamente menor o igual que el que está a su derecha |
<> | Distinto de | TxtRes.Text <> “Si” | Devuelve True si el valor a su izquierda es numérica o alfabéticamente distinto al que está a su derecha. |
Todos los operadores de comparación producen resultados de verdad, es decir, la comparación siempre será verdadera o falsa. Tenga especial cuidado de que las expresiones a ambos lados del operador de comparación sean del mismo tipo compatibles. Es decir no puede comparar un número con una cadena.
La naturaleza de la comparación
Cuando compara cadenas, se usa la tabla ASCII, para determinar la comparación de los caracteres. Así, esta tabla indica que la A mayúscula (cuyo número ASCII es 65) es menor que B mayúscula (cuyo número es 66). Una tabla ASCII es una lista de caracteres con sus representaciones numéricas únicas.
Nota Las expresiones que pueden evaluarse como Verdadero o Falso se conocen también como expresiones booleanas y los resultados verdadero o Falso se pueden asignar a una variable o propiedad booleana.
Advertencia Tenga cuidado cuando compara la igualdad de números que no sean enteros. Por ejemplo, si ha asignado 8.3221 a una variable de precisión simple y otro 8.3221 a otra de igual tipo, Visual Basic podría devolver Falso al comparar su igualdad.
Estructuras de control (decisión)
En algunos programas, las instrucciones comienzan a ejecutarse en orden sucesivo, iniciando con la primer instrucción hasta que se ejecuta la última instrucción. Es decir el flujo de control de las secuencias de instrucciones coincide con el orden físico. A este tipo de programas se les conoce como secuenciales.
Figura 21 Flujo de control secuencial
Un programa incapaz de alterar su flujo en respuesta a condiciones cambiantes, ya sea internas o externas, sería ineficaz. De hecho, una programación de computadora no es otra cosa que selecciones. Se reciben entradas, sé monitorean las condiciones internas, decide que hacer con ellas. Las sentencias que permiten alterar el flujo de una secuencia de instrucciones se conocen como estructuras de control. Las estructuras de control fundamentales son las selectivas y las repetitivas
Estructuras de control selectivas
Las estructuras de selección de Visual Basic caen en dos categorías: ramificaciones y ciclos. Las ramificaciones hacen que el programa continúe en una dirección cuando se encuentra una condición particular, sin mirar atrás. Los ciclos, se usan para repetir un cierto bloque de instrucciones hasta que las condiciones especificadas son ciertas (True) o falsas (False). A su vez las ramificaciones se clasifican de acuerdo al número de alternativas posibles a seleccionar en:
-
Alternativa simple
-
Alternativa doble
-
Alternativa múltiple
La selección de alternativa simple
La estructura selectiva simple permite realizar una determinada serie de acciones si la condición a evaluar es verdadera; seguir el flujo de control secuencial en el caso de que la condición sea falsa.
Figura 22 Estructura selectiva simple
La selección de alternativa doble
La estructura selectiva doble permite a la computadora seleccionar una de las dos posibles acciones a ejecutar. Dependiendo de las circunstancias, la computadora elijirá una opción u otra. Si la condición resulta verdadera, se ejecutan las acciones A, si la condición resulta falsa, se ejecutan las acciones B
Figura 23 Estructura selectiva doble
La instrucción (sentencia) if
La sentencia If representa las estructuras de control selectivas de alternativas simple y doble, quizá sea una de las instrucciones más importantes en un programa. If se vale de los operadores de comparación que acabamos de ver. Las expresiones condicionales pueden controlar el orden en el que se ejecutan las sentencias, cuando se usan en un bloque especial de sentencias denominado estructura de decisión.
Sintaxis
If condición Then sentencia(s) [Else sentencia(s)]
Donde:
condición es una expresión condicional que puede tomar dos valores: verdadero o falso
sentencia(s) sentencia o grupo de sentencias separadas por él sigo dos puntos
Nota.- La cláusula Else, que se encuentra entre corchetes, es opcional
Sentencia If...Then
En su forma más simple, una estructura de decisión if...Then se escribe en una única línea.
If condición Then sentencia(s)
Por ejemplo
If Marcador >= 20 Then Label1.Caption = “¡Ha ganado!”
La expresión condicional Marcador >= 20, determina si se le asigna a la propiedad Caption del objeto Label1 el valor «¡Ha ganado!», esto será posible si la variable Marcador contiene un valor mayor o igual que 20, si no, Visual Basic ejecutará la siguiente línea del procedimiento de suceso.
Ejemplo 13:
Elabore un programa para leer dos números x e y, imprimir el mayor:
Vea la tabla 10 para trazar y nombrar sus objetos
Tabla 10
Objeto | Propiedad | Ajuste del momento de diseño |
Forma | Caption | Sentencia if...Then |
Name | frmSeleccion | |
Botón de orden (Command1) | Caption | Entra X |
Name | cmdObtenerX | |
Botón de orden (Command2) | Caption | Entra Y |
Name | cmdObtenerY | |
Botón de orden (Command3) | Caption | Imprime el Mayor |
Name | cmdMayor |
Declare dos variable a nivel forma
Dim x As Single, y As Single
En la ventana de código para el botón de comando cmdObtenerX, teclee
x = InputBox("Dame el valor de X =", "Valor de X")
En la ventana de código para el botón de comando cmdObtenerY, teclee
y = InputBox("Dame el valor de Y = ", "Valor de Y")
En la ventana de código para el botón de comando cmdMayor, teclee
Dim Mayor As Single
Mayor = x
If Mayor < y Then Mayor = y
Print Mayor, "es el Mayor"
Sentencia If - Then - Else
Permite seleccionar entre dos grupos de sentencias dependiendo de la condición
Sintaxis
If condición Then sentencia(s) Else sentencia(s)
Si la condición es verdadera, se ejecutarán las sentencias de la cláusula Then, por el contrario, si condición se evalúa como falsa, se ejecutan las sentencias de la cláusula Else.
Ejemplo 14:
El código del botón de comando Imprime el Mayor del ejemplo 13 quedaría:
Dim Mayor As Single
If x > y Then Mayor = x Else Mayor = y
Print Mayor, "es el Mayor"
En el caso de que las acciones siguientes a Then o Else consten de varias sentencias es necesario separarlas por caracteres dos puntos (: ) por lo que una sóla línea puede ser demasiado larga para contener a todas las sentencias necesarias o por el contrario dificil de comprender. El medio más fácil es utilizar una sentencia If de bloques
Ya que la cláusula Else es opcional, el formato puede ser:
If condición Then If condición Then
.
.
Sentencia(s) bloque de sentencias
.
.
[Else End If
Sentencia(s)
]
End If
Ejemplo 15
Una alternativa de codificación al ejemplo 3 sería:
Private Sub CMDCAMBIAR_Click()
Static elcolor
elcolor=elcolor+1
If elcolor<=15 Then
FrmPRUEBA.BackColor=QBColor(elcolor)
Else
Elcolor=1
FrmPRUEBA.BackColor=QBColor(elcolor)
End If
End Sub
Sentencias If anidadas
Una sentencia If puede estar dentro de otra sentencia If y ésta a su vez dentro de otra sentencia y así sucesivamente.
Figura 24 Estructuras selectivas anidadas
Visual Basic permite incluir varias expresiones condicionales, mediante el uso de la palabra clave ElseIf, Else y End If.
If condicion1 Then
Sentencias ejecutadas si condición1 es verdadero
ElseIf condicion2 Then
Sentencias ejecutadas si condición2 es verdadero
[Aquí se pueden poner más cláusulas ElseIf y más sentencias]
Else
Sentencias ejecutadas si ninguna de las condiciones es Verdadero
EndIf
En el código siguiente, se muestra un ejemplo que podría utilizarse para determinar la cantidad de impuestos en una devolución de impuestos progresiva.
If Ingresos <= 22750 Then `15% de retención
Deuda=Ingresos*0.15
ElseIf Ingresos <= 55100 Then `28% retención
Deuda=3412 + ((Ingresos - 22750) * 0.28)
ElseIf Ingresos <= 115000 Then `31% retención
Deuda=12470+((Ingresos - 55100) * 0.31)
ElseIf Ingresos <= 250000 Then '36% retención
Deuda=31039 + ((Ingresos-115000) * 0.36)
Else '39.6% retención
Deuda = 79639 + ((Ingresos-250000) * 0.396)
End If
Importante El orden de las expresiones condicionales en las cláusulas If...Then y ElseIf es crítico. Si invertimos el orden de las expresiones condicionales en el ejemplo de cálculo de impuestos, los contribuyentes del porcentaje 15, 28 y 31 deberían colocarse en el porcentaje 36, porque tienen ingresos menores a 250000 (Visual Basic se detiene en la primera expresión condicional que sea verdadera, aunque haya más expresiones que también lo sean.)
Ejemplo 16
El siguiente ejemplo utiliza una estructura de decisión para validar la entrada de usuarios en un programa. Si escribimos una aplicación de red podemos utilizar una lógica de programa similar.
Utilice el control CommandButton para crear un botón de orden en la esquina superior izquierda del formulario y asígnele «Acceso» a la propiedad Caption.
Pulse dos veces el botón Acceso
El procedimiento de suceso Command1_Click() aparecerá en la ventana de código. Escriba las siguientes sentencias de programa:
NombreUsuario = InputBox (“Introduzca su nombre.”)
If NombreUsuario = “Laura” Then
MsgBox (“¡Bienvenida, Laura! ¿Preparada para trabajar con tu PC?)
Form1.Picture = _
LoadPicture(“c:\Archivos de programa\Microsoft Visual Basic\ metafile\ business\ Pcomputr.wmf
ElseIf NombreUsuario = “Marcos” Then
MsgBox (“¡Bienvenido, Marcos! ¿Dispuesto a utilizar tu portátil?)
Form1.Picture = _
LoadPicture(“c:\Archivos de programa\Microsoft Visual Basic\ metafile\ business\calcultr.wmf
Else
MsgBox (“Lo siento. No puedo permitirle el acceso. “)
End `salir del programa
End If
Nota Las líneas de programa pueden contener hasta 1023 caracteres de longitud en la ventana de código de Visual Basic, pero normalmente resulta más sencillo trabajar con líneas menores o iguales a 80 caracteres. Las sentencias de programa más largas pueden dividirse en múltiples líneas utilizando un carácter de continuación de lineas (_) al final de cada línea, como podemos verlo después de las propiedades Form1.Picture.
Pulse el botón Iniciar de la barra de herramientas
Pulse el botón Acceso.
La función InputBox del procedimiento de suceso Command1_Click mostrará un cuadro de diálogo que le pedirá que introduzca su nombre.
Teclee Laura y pulse INTRO
La estructura de decisión comparará el nombre que ha escrito con el texto «Laura» en la primera expresión condicional, dando como resultado Verdadero y la sentencia If mostrará un mensaje de bienvenida utilizando la función MsgBox.
Pulse Aceptar en el cuadro de mensaje
El cuadro de mensaje se cerrará y en el formulario se cargará un metaarchivo de Windows con la imagen de una PC, tal como se muestra en la siguiente figura
Figura 25
Pruebe ahora con Marcos y Federico
Nota: Las instrucciones Else, ElseIf, y End If pueden tener un número de línea o una etiqueta que les preceda. El bloc If debe terminar con una instrucción End If.
Operadores Lógicos
Visual Basic nos permite combinar dos o más comparaciones en las estructuras de decisión. Las condiciones extra se enlazan mediante el uso de uno o más de los siguientes operadores lógicos:
Operador | Expresión lógica | Significado |
And | If (A>B) And (C<D) | Es una y lógica o conjunción. Si ambas expresiones condicionales son Verdadero, el resultado es Verdadero. |
Or | If (A>B) Or (C<D) | Si alguna de las dos expresiones es Verdadero, el resultado es Verdadero. |
Not | Not Precio < 100 | Si la expresión condicional es Falso, el resultado es Verdadero. Si la expresión condicional es Falso, el resultado es Verdadero. |
Xor | Si una y solo una, de las expresiones condicionales es Verdadero, el resultado es Verdadero. Si ambos son Verdadero o Falso, el resultado es Falso. |
Nota Cuando un programa evalúa una expresión compleja que mezcla diferentes tipos de operadores, primero evaluará los operadores matemáticos, después los operadores de comparación y por último, los operadores lógicos.
Ejemplo 17
Modificaremos el ejemplo 16 para solicitar al usuario una contraseña
Vea la tabla 11 para trazar y nombrar sus objetos
Tabla 11
Objeto | Propiedad | Ajuste del momento de diseño |
Forma | Caption | |
Name | ||
Botón de orden (Command1) | Caption | Acceso |
Name | ||
Botón de etiqueta (Label1) | Caption | Introduzca su nombre |
Name | ||
Botón de etiqueta (Label2) | Caption | Introduzca su contraseña |
Name | ||
Botón de texto (Text1) | Caption | |
Name | ||
Botón de texto (Text2) | Caption | |
Name | ||
MaxLength | 10 | |
PasswordChar | * |
Teclee
Private Sub Command1_Click()
NombreUsuario = Text1.Text
Contraseña = Text2.Text
If NombreUsuario = "Laura" And Contraseña = "Alumna" Then
MsgBox ("¡Bienvenida, Laura! ¿Preparada para trabajar con tu PC?")
Form1.Picture = _
LoadPicture("c:\Archivos de programa\Microsoft Visual Basic\metafile\business\pcomputr.wmf")
ElseIf NombreUsuario = "Marcos" And Contraseña = "Alumno" Then
MsgBox ("¡Bienvenido, Marcos! ¿Dispuesto a utilizar tu calculadora?")
Form1.Picture = _
LoadPicture("c:\Archivos de programa\Microsoft Visual Basic\metafile\business\calcultr.wmf")
Else
MsgBox ("Lo siento. No puedo permitirle el acceso.")
End 'salir del programa
End If
End Sub
Pruebe su aplicación
Estructuras de selección múltiple
If es adecuado para comparar información en donde se necesita una o dos verificaciones. Sin embargo, si se necesitan varias, If se torna difícil de manejar. Visual Basic soporta una instrucción llamada Select Case que maneja mejor condiciones múltiples. He aquí el formato:
Select Case expresión
Case valor1
Sentencias de programa ejecutadas si valor1 coincide con expresión
Case valor2
Sentencias de programa ejecutadas si valor2 coincide con expresión
Case valor3
Sentencias de programa ejecutadas si valor3 coincide con expresión
.
.
.
Case Else
Sentencias de programa ejecutadas si ninguno de los casos anteriores coincide
End Select
Donde:
expresión Cualquier expresión numérica o de cadena.
valor1, valor2,... Puede ser un número, cadena o cualquier otro valor que coincida con el tipo de dato expresión.
Los valores (valor1, valor2,...), pueden tener uno de los siguientes formatos:
Expresión
Expresión1 To expresión2
Is operador de comparación expresión.
La palabra reservada To especifica un rango de valores. Si emplea la palabra To, el valor más pequeño debe aparecer antes de To. Use la palabra reservada Is con operadores de comparación para especificar un rango de valores.
Nota.- Puede emplear expresiones múltiples o rangos en cada cláusula Case. Por ejemplo, la siguiente línea es válida.
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
También puede especificar rangos y expresiones múltiples para cadenas de caracteres. En el siguiente ejemplo, Ocurre una coincidencia cuando las cadenas son exactamente iguales a cualquier cosa, o bien caen entre nueces y sopa en orden alfabético y el valor actual de TestItem:
Case "cualquiercosa", "nueces" To "sopa", TestItem
Nota.- Las sentencias Select Case pueden anidarse. Cada sentencia Select Case debe tener su correspondiente sentencia End Select.
Ejemplo 18
En el siguiente ejercicio aprenderemos las propiedades List1.Text y List1.ListIndex para recoger la entrada y después utilizaremos una estructura Select Case para mostrar un mensaje en un idioma entre cuatro.
Trace los objetos de la tabla 12, como se indica en la siguiente figura:
Figura 26
Tabla 12
Objeto | Propiedad | Ajuste del momento de diseño |
Botón de etiqueta (Label1) | Caption | Programa de bienvenida internacional |
Font | Times New Roman, Negrita, 14 | |
Botón de etiqueta (Label2) | Caption | Seleccione un país |
Botón de etiqueta (Label3) | Caption | (vacío) |
Botón de etiqueta (Label4) | Caption | (vacío) |
BorderStyle | 1 - Fixed Single | |
ForeColor | Rojo oscuro (&H00000080&) | |
Botón de orden (Command1) | Caption | Salir |
Botón cuadro de lista (List1) |
Pulse dos veces en el formulario. En la ventana de código aparecerá el procedimiento de suceso Form_Load
Escriba el siguiente código de programa para iniciar el cuadro de lista:
Private Sub Form_Load()
List1.AddItem "Inglaterra"
List1.AddItem "Alemania"
List1.AddItem "España"
List1.AddItem "Italia"
End Sub
Estas líneas utilizan el método AddItem del cuadro de lista para añadir entradas al cuadro de lista de nuestro formulario.
Abra el cuadro de lista desplegable Objeto y pulse el objeto List1, con lo cual aparecerá el procedimiento de suceso List1_Click y escriba las siguientes líneas
Private Sub List1_Click()
Label3.Caption = List1.Text
Select Case List1.ListIndex
Case 0
Label4.Caption = "Hello, programmer"
Case 1
Label4.Caption = "Hallo, Programmierer"
Case 2
Label4.Caption = "Hola, programador"
Case 3
Label4.Caption = "Ciao, programmatori"
End Select
End Sub
En la primera línea, la propiedad List1.Text contiene el texto exacto del elemento seleccionado en el cuadro de lista y lo muestra en la tercera etiqueta del formulario. La estructura Select Case, utiliza la propiedad List1.ListIndex que contiene el número del elemento seleccionado en el cuadro de lista; el elemento de la parte superior es cero, el segundo es uno, el siguiente es dos, etc.
Abra el cuadro de lista desplegable Objeto y pulse el objeto Command1, escriba End en el procedimiento de suceso y después cierre la ventana de código.
Ejecute la aplicación
Estructuras de control repetitivas
La programación estructurada es un método para resolver problemas con computadora, que exige el uso de las estructuras secuenciales, selectivas y repetitivas.
Ciclos
Un algoritmo para resolver un problema requiere con frecuencia que una sentencia o grupo de sentencias se repita un número determinado de veces. Una estructura de control que permite la repetición de un conjunto determinado de sentencias se denomina bucle. Un bucle (lazo o ciclo) repite una secuencia de sentencias mientras o hasta que se cumpla que una condición determinada es verdadera o falsa.
Sentencia For...Next
Los bucles For se utilizan cuando se debe repetir una determinada tarea un número fijo de veces. Los bucles for - Next se denominan controlados por contador, debido a que se necesita una variable numérica que actúa como contador y se incrementa o decrementa en un valor constante a partir de un valor inicial, después de cada iteración del bucle.
Sintaxis
For contador = inicio To fin [ Step Incremento]
[sentencias]
[Exit For]
[sentencias]
Next [contador]
Donde:
contador Variable numérica empleada como contador del ciclo. La variable no puede ser un elemento de arreglo o un elemento de tipo definido por el usuario.
inicio Valor numérico inicial de contador.
fin Valor numérico final de contador.
Incremento Cantidad con la cual contador cambia cada vez que se ejecuta un ciclo. Si no se especifica el incremento por defecto es uno.
sentencias Una o más sentencias entre For y Next que se ejecutan un numero específico de veces.
El argumento Incremento puede ser positivo o negativo. El valor del argumento Incremento determina el proceso del ciclo como sigue:
Valor El ciclo se ejecuta si
Positivo ó 0 contador <= fin
Negativo contador >= fin
Una vez iniciado el ciclo y haber ejecutado todas las sentencias del mismo, Incremento es agregado a contador. En este punto, ya sea que las sentencias del ciclo se ejecuten una vez más o bien la ejecución puede continuar con la siguiente sentencia de la sentencia Next.
Puede tener ciclos For...Next anidados. Por ejemplo:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
. . .
Next K
Next J
Next I
Nota.- Si omite contador en una sentencia Next, la ejecución continua como si usted la hubiera incluido. Ocurre un error si se encuentra una sentencia Next antes del for correspondiente
Ejemplo 19
En el siguiente ejercicio utilizaremos el método Print para mostrar la salida de un ciclo For...Next en un formulario
Cree un botón de orden (Command1) en la parte inferior central del formulario
Asigne a la propiedad Caption del botón de orden la palabra «Ciclo»
Abra el cuadro de lista desplegable de la parte superior de la ventana Propiedades y pulse el objeto Form1.
Cambie la fuente a Times New Roman
La propiedad Fuente controla cómo aparecerá el texto en el formulario. Podemos utilizar cualquier fuente del sistema pero las fuentes True Type son las que mejor funcionan, ya que pueden visualizarse con distintos tamaños que son iguales en pantalla que en impresora.
Pulse dos veces el botón Ciclo, escriba las siguientes sentencias
For i = 1 To 10
Print “Línea”; i
Next i
Este ciclo For...Next utiliza el método Print para mostrar la palabra Línea 10 veces, seguida del contador del ciclo en el formulario. El punto y coma (;) de la sentencia Print hace que Visual Basic muestre la variable contador junto a la cadena «Línea», sin espacio adicional en medio (no obstante, podemos ver un espacio entre «Línea» y la variable contador durante la ejecución del programa). Cuando se imprimen valores numéricos, el método Print reserva un espacio para el signo menos, aunque dicho signo no sea necesario. El método Print permite también el símbolo coma (,) para separar los elementos por tabuladores.
Ahora ya puede ejecutar el programa
Pulse el botón Ciclo con lo cual se mostrara en el formulario 10 líneas. Si vuelve a pulsar el botón Ciclo, se volverán a imprimir 10 líneas en el formulario (tantas como quepan). Cada vez que se imprime una línea, el cursor se desplaza una línea abajo, hasta llegar al final del formulario.
Modificación de una propiedad en un ciclo For...Next
Visual basic nos permite modificar propiedades y actualizar variables clave en un bucle. En el siguiente ejercicio modificaremos el programa del ejemplo , para que cambie la propiedad FontSize. La propiedad FontSize especifica el tamaño del texto en un formulario.
Ejemplo 20
Inserte la siguiente sentencia directamente debajo de la sentencia For en el procedimiento de suceso Command1_Click del ejemplo
FontSize = 10 + i
La primera vez que se ejecuta el ciclo, el tamaño de la fuente será 11 puntos, la segunda vez será 12 y así hasta la última vuelta del ciclo, cuando el tamaño de la fuente sea de 20 puntos.
Ejecute el programa. Se mostrará una ventana similar a:
Figura 27
Ejemplo 21
El siguiente ejercicio muestra cómo podemos utilizar un ciclo For...Next para abrir iconos de Visual Basic que se encuentran en archivos de disco, con números en sus nombres.
En el menú Archivo, pulse la orden Nuevo proyecto
Pulse el botón Image de la caja de herramientas y cree un cuadro de imagen junto a la esquina superior izquierda del formulario.
En el menú Edición pulse la orden Copiar
En el portapapeles de Microsoft Windows se colocará una copia del cuadro de imagen.
En el menú Edición pulse la orden Pegar.Visual Basic le muestra el mensaje:
Ya existe un control llamado `Image1'. ¿Desea crear una matriz de controles?
Una matriz de control es un grupo de objetos de interfas idéntico. Cada uno de los objetos del grupo comparte el mismo nombre del objeto, de forma que el grupo entero puede seleccionarse y definirse de una vez. No obstante, los objetos de una matriz de control también pueden utilizarse individualmente
Pulse Sí para crear una matriz de control
Visual Basic crea una matriz de control de cuadros de imagen y pega el segundo cuadro de imagen en la esquina superior izquierda del formulario.
Arrastre el segundo cuadro de imagen hacia la derecha del primer cuadro de imagen.
Pulse la orden Pegar del menú Edición y arrastre el tercer cuadro de imagen a la derecha del segundo
Vuelva a pulsar la orden Pegar y coloque el cuarto cuadro de imagen a la derecha del tercero.
Pulse el botón de orden de la caja de herramientas y cree un botón en la parte inferior del formulario.
Pulse el primer cuadro de imagen, mantenga pulsada la tecla MAYUS y después pulse los cuadros de imagen segundo, tercero y cuarto. Los cuadros de imagen de la matriz de controles aparecerán seleccionados.
Pulse el botón Propiedades de la barra de herramientas y asigne las siguientes propiedades.
Objeto | Propiedad | Ajuste del momento de diseño |
Botón de Imagen (Image1(0)) | BorderStyle | 1 - Fixed Single |
Stretch | True | |
Botón de orden (Command1) | Caption | Mostrar iconos |
Pulse dos veces el botón Mostrar iconos para mostrar la ventana de código y teclee:
Private Sub Command1_Click()
For i = 1To 4
Image1(i-1).Picture = _
LoadPicture("c:\Archivos de programa\Microsoft Visual Basic\icons\misc\misc0" & i & ".ico")
Next i
End Sub
Al ejecutar la aplicación mostrará la siguiente salida:
Figura 28
La primer sentencia del ciclo Image1(i-1).Picture, carga la sentencia Picture de cada cuadro de imagen de la matriz de controles. Los elementos de la matriz de controles se invocan por sus valores de índice como Image1(0), Image1(1), Image1(2) e Image1(3). El número entre paréntesis es el valor índice en la matriz de controles.
El nombre del archivo se crea utilizando la variable contador y el operador de concatenación. En nuestro ejemplo, los archivos que estamos cargando son misc01.ico, misc02.ico, misc03.ico y misc04.ico.
Pulse el botón Cerrar de la barra de título para abandonar el programa.
Ejemplo 22
La carpeta \Archivos de programa\Microsoft Visual Basic\icons\misc, está llena de archivos con patrón de nombre de archivo miscxx.ico. Para mostrar nombres de archivos tales como misc22.ico, misc24.ico, misc26.ico y misc28.ico deberemos cambiar el valor de inicio y el valor final de la sentencia For. También debemos cambiar los índices de los cuadros de imagen para que coincidan con los nuevos valores del contador que estamos utilizando.
Pulse el primer cuadro de imagen del ejemplo anterior y después pulse el botón Propiedades de la barra de herramientas
Cambie el valor de la propiedad Index a 22
Abra el cuadro de lista desplegable de la ventana Propiedades y pulse el nombre del objeto Image1(1), asigne a la propiedad Index el valor 24.
Asigne la propiedad Index del tercer y cuarto cuadro de imagen 26 y 28 respectivamente.
Modifique el código del ciclo
Private Sub Command1_Click()
For i = 22 To 28 Step 2
Image1(i).Picture = _
LoadPicture("c:\Archivos de programa\Microsoft Visual Basic\icons\misc\misc" & i & ".ico")
Next i
End Sub
Observe que se incluyó la palabra clave step 2, se cambió el índice de la matriz de controles de Image(i-1) a Image(i) y se borró el cero (0) de la vía de acceso dentro de la función LoadPicture.
Pulse el botón cerrar de la barra de título, una vez que haya probado el programa.
Nota: La sentencia Exit For nos permite salir de un bucle For...Next antes de que el bucle haya terminado su ejecución. De esta forma podemos responder a un suceso específico que suceda antes de que el bucle se haya ejecutado el número de veces previsto. Por ejemplo
For i = 1 To 10
Nombre=InputBox(“Escriba un nombre o escriba Fin para salir”)
If Nombre = “Fin” Then Exit For
Print Nombre
Next i
Sentencia While...Wend
Figura 29 Ciclo While - Wend
Es la estructura repetitiva más utilizada en programación y que prácticamente poseen todos los lenguajes de programación.
Sintaxis
While condición
[sentencias]
Wend
condición Expresión numérica o de cadena que se evalúa como verdadera (True) o falsa (False).Si condición es Null, condición se trata como falsa.
Sentencias Una o más sentencias que se ejecutan mientras condición es verdadera
La condición se evalúa antes y después del bucle. Si condición es verdadera, se ejecutan las sentencias del bucle hasta encontrar Wend. El control entonces regresa a la sentencia While y condición es nuevamente checada. Si condición aun es verdadera, el proceso se repite. Si no es verdadera, el control pasa a la primera sentencia ejecutable después de Wend. Por ejemplo
Contador = 0 ' Inicializar variable.
While Contador < 20 'Probar el valor de Contador.
Contador = Contador + 1 ' Incrementar Contador.
Wend ' termina el ciclo While cuando Contador > 19.
Print Contador ' Imprime 20 en la ventana de Forma
Las sentencias dentro del ciclo son ejecutadas mientras la condición a evaluar sea verdadera.
Los ciclos While...Wend pueden estar anidados. Cada Wend corresponde al While más reciente
Sentencia Do...Loop
Repite un bloque de sentencias mientras condición es verdadera o hasta que condición llegue a ser verdadera. Los bucles Do son muy útiles, porque a menudo no podemos saber de antemano cuántas veces debemos repetir un bucle.
Sintaxis
Do [{While | Until} condición]
[sentencias]
[Exit Do]
[sentencias]
Loop
O usted puede usar esta sintaxis igualmente válida:
Do
[sentencias]
[Exit Do]
[sentencias]
Loop [{While | Until} condición]
condición expresión numérica o de cadena que es verdadera o falsa. Si condición es Null, condición es tratada como falsa.
sentencias Una o más sentencias que se repiten mientras o hasta que condición sea verdadera.
Nota.- Exit Do solamente puede emplearse dentro de una estructura de control Do...Loop para proporcionar una alternativa de salirse del Do...Loop. Cualquier número de sentencias Exit Do pueden escribirse en cualquier parte de Do...Loop. Con frecuencia se emplea junto con la evaluación de una condición (por ejemplo, If...Then), Exit Do transfiere el control a la sentencia inmediatamente después de Loop.
Cuando se usa dentro de sentencias Do...Loop anidadas, Exit Do transfiere el control al lazo que se encuentra un nivel arriba del lazo donde ocurrió
El siguiente ejemplo muestra como usar la sentencia Do...Loop. La sentencia más interna Do...Loop lleva a cabo 10 ciclos, cambia el valor de la bandera a falsa, y sale prematuramente usando la sentencia Exit Do. El ciclo más externo sale inmediatamente checando el valor de la bandera.
Bandera = True: Contador = 0 ' Inicializa variables.
Do ' Ciclo externo.
Do While Contador < 20 ' Ciclo interno.
Contador = Contador + 1 ' Incrementa Contador.
If Contador = 10 Then ' Si la condición es verdadera.
Bandera= False 'Pone el valor de la bandera a Falso.
Exit Do ' Salida del ciclo interno.
End If
Loop
Loop Until Bandera = False ' Sale del ciclo externo inmediatamente.
Ejemplo 23 En éste ejemplo creará una forma con cuatro botones, uno para teclear su edad usando la función InputBox() y tres para procesar esa información mediante el uso de Select Case, Do Until y For...Next.
Tabla 13
Objeto de Visual Basic | Propiedad | Ajuste del momento de diseño |
Forma | Name | frmDecisión |
Caption | Ejercicio de Estructuras de Decisión | |
Botón de comando | Name | cmdPedirEdad |
Caption | Capturar Edad | |
Botón de comando | Name | cmdSeleccionar |
Caption | Seleccionar el caso | |
Botón de comando | Name | cmdHacer |
Caption | Hacer hasta que | |
Botón de comando | Name | cmdPara |
Caption | Para...Siguiente |
Abra la sección General declaraciones de la forma y declare una variable visible a toda la forma de tipo variant (en caso de que dejase la edad null o empty).
Private vEdad As Variant
Para pedir al usuario que dé el valor de vEdad, teclee el código en cmdPedirEdad
Private Sub cmdPedirEdad_Click()
vEdad = InputBox("¿Cuantos años tiene?", "Entrada para el Programa de Decisiones")
If vEdad = "" Then
MsgBox "¡No ha tecleado un valor!", vbCritical, "Error"
End If
End Sub
Cuando se oprima el botón Seleccionar el caso, el programa desplegará uno de cuatro mensajes, dependiendo del valor actual de vEdad.
Private Sub cmdSeleccionar_Click()
Dim sMsj As String 'Variable local para el mensaje
Select Case vEdad 'Ramifica de acuerdo al valor de vEdad
Case Is < 13
sMsj = "Eres sólo un niño"
Case 13 To 19
sMsj = "Eres un adolecente"
Case 20 To 39
sMsj = "Eres un adulto maduro"
Case Else
sMsj = "Has traspuesto la colina"
End Select
sMsj = "¡" & vEdad & " años!" + vbCr & sMsj 'Divide la línea con un Retorno de Carro
MsgBox sMsj, vbInformation, "Ejemplo de Select Case" 'Despliega el mensaje
End Sub
Nota.- La constante vbcr se emplea para dar un retorno de carro con lo cual el mensaje se divide en dos líneas. Un Chr(13), tendría el mismo efecto.
Mediante el uso de Do...Until, su programa desplegará una lista descendente de edades, empezando con el valor actual de vEdad y deteniéndose en cero. De hecho, el valor más bajo en la lista visible puede determinarse por el tamaño de su forma.
Private Sub cmdHacer_Click()
Cls 'Borra el area de trabajo de la forma
Do Until vEdad < 0 'Se mantiene desplegando hasta....
Print CStr(vEdad) + " Años... y descendiendo..."
vEdad = vEdad - 1 'Decrementa vEdad...
Loop
End Sub
Nota.- Observe el uso de la función CStr, la cual toma un argumento simple y devuelve un equivalente tipo cadena. Recuerde que vEdad es una variable tipo Variant, la que en este momento contiene un número. Empleamos el operador + en vez del ampersand (&) el cual habría forzado a que vEdad fuera del tipo apropiado, por lo tanto vEdad primero debe convertirse, de lo contrario se produce un error.
Finalmente añadiremos un ciclo For...Next que desplegará una lista de números nones, empezando con 1 y terminando con (o cerca del valor vEdad.)
Private Sub cmdPara_Click()
Dim iContador As Integer
Cls 'Borra la forma
For iContador = 1 To vEdad Step 2 'Usa iContador para el número de línea
Print "Línea " & iContador & "... y avanzando 2"
Next
End Sub
Nota.- Observe que aquí se usa un ampersand (&) para la concatenación de cadenas, por lo que no es necesario convertir vEdad antes de añadir éste a la cadena impresa.
Módulos y Procedimientos
En Visual Basic 4.0, hay tres tipos de módulos: módulos de Formulario, módulos de Código y módulos de Clase. Los tres tipos pueden contener procedimientos que pueden compartirse a diversos niveles de alcance a través de la aplicación. Hasta ahora, todo el código que se ha escrito, se ha almacenado en módulos asociados con un formulario particular. Esto es, cuando se escribe el código para responder a un evento Clic de un botón, se crea un procedimiento de evento y ese código llega a ser parte del formulario en el cual reside el botón. A menos que elimine la palabra clave Private del encabezado del procedimiento del evento, este código no estará visible fuera del formulario.
Un módulo de código contiene código público, declaraciones, procedimientos Sub y funciones, que pueden compartirse entre todos los módulos de un proyecto.
Un procedimiento general le dice a su aplicación cómo realizar una tarea específica. Una vez definido el procedimiento, éste debe ser explícitamente llamado por su aplicación. Un procedimiento de evento permanece inactivo hasta que se le llama para responder a los eventos causados por el usuario (un clic del ratón) o por el sistema (un evento de cronómetro o carga). Puede colocar un procedimiento general en un módulo de forma, de código o de clase.
Cualquier procedimiento es una secuencia de instrucciones que se ejecutan como una unidad. Por ejemplo, Function y Sub son tipos de procedimientos. Un procedimiento Sub no devuelve un valor explícito, comienza con una instrucción sub y termina con una instrucción End sub.
Visual Basic tiene muchos procedimientos integrados (tal como MsgBox y Print). Usted puede definir sus propios procedimientos. Por ejemplo:
-
Inicie un nuevo proyecto, seleccione Module del menú Insert y teclee.
Sub LimpiarDisco () `Encabezado
Kill “*.dat”
Kill “Mi_arch.txt”
MsgBox “Disco limpio!”, vbInformation, “Procedimiento concluido”
End Sub
Ahora puede llamar al procedimiento LimpiarDisco desde cualquier lugar de su aplicación, e incluir simplemente su nombre como una instrucción en su código.
-
En la ventana FORM1 cree un botón de comando y teclee
ChDrive “A”
LimpiarDisco
Si un procedimiento va a aceptar argumentos, éstos deben especificarse en el encabezado del procedimiento
Sub Multiplica(iPrimero AS Integer, iSegundo AS Integer) `Encabezado
IGlobalVar = iPrimero*iSegundo
End Sub
Los parámetros del encabezado especifican los nombres y los tipos de las variables de entrada. Una llamada a este procedimiento es el siguiente código:
Dim iMultiplicando AS Integer, iMultiplicador AS Integer
iMultiplicando = 3
iMultiplicador = 4
Multiplica, iMultiplicando, iMultiplicador
Nota: A menudo las palabras argumento y parámetro se usan indistintamente, sin embargo existe una diferencia entre los dos. Los argumentos son las variables o literales que se pasan a un procedimiento o función. Los parámetros son los especificadores de nombre/tipo, delimitados por comas que aparecen entre los paréntesis del encabezado de la definición (o de un procedimiento).
Procedimientos de Función
Un procedimiento de Función (o solamente función) es un procedimiento que realiza una tarea específica dentro de un programa Visual Basic y devuelve un valor. Una función se define en un módulo, que empieza con una instrucción Function y termina con una instrucción End Function. Algunas funciones de Visual Basic se muestran en la siguiente tabla:
Tabla 6 Algunas Funciones útiles
Función | Descripción | Ejemplo de uso | Valor devuelto |
Len() | Devuelve la longitud de una cadena | iLen=Len(“Hola”) | ILen=4 |
Mid() | Devuelve parte de una cadena | Mid(“Hola”,1,2) | sStr=”Ho” |
Chr() | Devuelve el carácter del código | sChar=Chr(65) | sChar=”A” |
Asc() | Devuelve el código del carácter | iCode=Asc(“A”) | iCode=65 |
Ucase() | Convierte a mayúsculas | sUp=Ucase(“hola”) | sUp=”HOLA” |
Lcase() | Convierte a minúsculas | sLow=Lcase(“Hola”) | sLow=”hola” |
InStr() | Devuelve la posición de la subcadena | iSub=InStr(“Hola”,”a”) | iSub=4 |
Las funciones predefinidas a menudo ayudan, pero usted puede crear sus propias funciones definidas. Por ejemplo, podría crear una función para convertir una frase, tal como “el laberinto de la soledad” en “El Laberinto De La Soledad”. Para hacerlo cree la función, digamos Titulo()
Function Titulo(sCadena_de_Entrada As String) As String
Dim sCadena_de_Salida As String
Dim iEspacio As Integer
sCadena_de_Entrada = Trim(LCase(sCadena_de_Entrada)) + " "
iEspacio = InStr(sCadena_de_Entrada, " ")
While iEspacio > 0
sCadena_de_Salida = sCadena_de_Salida + UCase(Mid(sCadena_de_Entrada, 1, 1)) + Mid(sCadena_de_Entrada, 2, iEspacio - 1)
sCadena_de_Entrada = LTrim(Mid(sCadena_de_Entrada, iEspacio + 1))
iEspacio = InStr(sCadena_de_Entrada, " ")
Wend
Titulo = sCadena_de_Salida
End Function
Observe que en el encabezado y dentro de paréntesis están los nombres y tipos de los argumentos esperados, si los hubiera, y fuera del paréntesis esta el tipo de dato del valor de retorno, si lo hubiera. El valor de retorno de una función se pone asignándolo al nombre al nombre de la función, como se muestra en la penúltima línea.
Para llamar la función, cree un botón de comando y teclee el siguiente código
Dim sLibroFavorito As String
sLibroFavorito = "el laberinto de la soledad"
Print "Mi libro favorito es " + Titulo(sLibroFavorito)
Aunque una función no requiere argumentos, usted debe proporcionar los paréntesis vacíos
Ejemplo
Crearemos un proyecto llamado PROJECT6 al cual añadiremos un módulo de código y muchos formularios
Seleccione New Project del menú File.
Cambie la propiedad Name de Form1 a frmCifrar
Abra un nuevo módulo de código, mediante la selección Module del menú Insert de Visual Basic. En la ventana de código del módulo, declare una variable pública sFrase, tecleando Public sFrase As String
Cambie la propiedad Name del nuevo módulo a EVB_CODE
Guarde el proyecto seleccionando Save Project As... del menú File de Visual Basic, Se le preguntará si quiere guardar el módulo y la forma. Debe hacerlo
Abra la ventana de código de su módulo, observe que la lista desplegable Object contiene la palabra general y que la lista Proc contiene declarations. En ésta sección es donde se puede declarar cualquier variable y constante a nivel módulo o global, es aquí también donde declararemos el procedimiento ObtenerFrase. Podemos crear el procedimiento mediante la selección de Procedure del menú Insert de Visual Basic, seleccionando luego Function o Procedure y poniendo el alcance en Public o Private. Sin embargo hay una manera más fácil. En la última línea de la sección General declarations, teclee Sub ObtenerFrase
Sub ObtenerFrase()
sFrase = InputBox$("Teclee una Frase: ", "La frase será cifrada")
End Sub
Ahora crearemos la función Cifrar, para ello podríamos regresar a la sección General declarations de su módulo para definir la funcion,o bien tecleando Function Cifrar en cualquier línea en blanco de su módulo.
Function Cifrar(sFrase_de_Entrada As String) As String 'Encabezado
Dim iLongitud As Integer, x As Integer '
Dim sSalida As String, sActual As String, sNueva As String
iLongitud = Len(sFrase_de_Entrada)
For x = 1 To iLongitud
sActual = Mid$(sFrase_de_Entrada, x, 1)
sNueva = Chr$(Asc(sActual) + 1)
sSalida = sSalida & sNueva
Next
Cifrar = sSalida
End Function
Teclee Function Decifrar y oprima Enter para copiar el siguiente código
Function Decifrar(sFrase_de_Entrada As String) As String
Dim iLongitud As Integer, x As Integer '
Dim sSalida As String, sActual As String, sNueva As String
iLongitud = Len(sFrase_de_Entrada)
For x = 1 To iLongitud
sActual = Mid$(sFrase_de_Entrada, x, 1)
sNueva = Chr$(Asc(sActual) - 1)
sSalida = sSalida & sNueva
Next
Decifrar = sSalida
End Function
Cree el formulario de la aplicación, desde el cual llamará a sus procedimientos y funciónes personalizados. Abra frmCifrar y complete la implementacion visual de acuerdo a la Tabla 6
Tabla Programa de procedimiento/funcion
Objeto Visual Basic | Propiedad | Ajuste de momento de diseño |
Formulario | Name | frmEncrypt |
Caption | Ejervicio de Procedimiento/Función | |
Botón de comando | Name | CmdGet |
Caption | Obtener Frase | |
Botón de comando | Name | CmdEncrypt |
Caption | Cifrar | |
Botón de comando | Name | CmdDecrypt |
Caption | Decifrar |
Abra la ventana de código del botón Obtener Frase y teclee
Private Sub cmdObtener_Click()
ObtenerFrase
End Sub
Abra la ventana de código del botón Cifrar y teclee
Private Sub cmdCifrar_Click()
Dim sCifrada As String
sCifrada = Cifrar(sFrase)
MsgBox sCifrada, vbExclamation, "frase Encryptada"
End Sub
Abra la ventana de código del botón Decifrar y teclee
Private Sub cmdDecifrar_Click()
Dim sDecifrada As String
sDecifrada = Decifrar(Cifrar(sFrase))
MsgBox sDecifrada, vbExclamation, "Frase Decifrada"
End Sub
Botones de comando cuadros de texto y etiquetas
¿Qué son las etiquetas?
Una etiqueta es un control gráfico que se usa para desplegar texto que un usuario no puede editar directamente Por ejemplo, si su aplicación le toma unos cuantos minutos, se puede usar una etiqueta para desplegar un mensaje Procesando...Además las etiquetas se usan para identificar cualquier otro control, como un cuadro de texto, que no tiene propiedad Caption propia
¡Qué son los cuadros de Texto?
Un control TextBox se usa para desplegar información tecleada por usted en el tiempo de diseño, por el usuario en tiempo de ejecución o asignada por programa al control en el código.
¿Qué son los botones de comando?
Se emplean para iniciar, interrumpir o terminar un proceso en particular. Cuando se hace clic, un botón de comando aparece oprimido y por lo tanto, se le llama algunas veces botón oprimible.
30
INICIO
Instrucción 1
Instrucción 2
Instrucción 3
Instrucción n
Fin
acciones
Condición
Condición
Acciones A
Acciones B
While condición
Los formularios tienen propiedades Picture, igual que los objetos Imagen y que los objetos cuadro de imagen. Cuando se carga un gráfico en un formularo, aparece en el fondo. Cualquier control visible del formulario aparecerá por encima del gráfico.
Condición 1
Condición 2
Acciones
False
True
True
Sentencias
Descargar
Enviado por: | J Eloy Martínez García |
Idioma: | castellano |
País: | España |