Hacer que un programa elija entre dos posibilidades: la instrucción If

Anuncio
Hacer que un programa elija entre dos posibilidades: la instrucción If...Then
En esta lección, aprenderá a utilizar la instrucción If...Then para ejecutar el código
basado en condiciones.
Los programas deben realizar diferentes acciones en respuesta a distintas condiciones.
Por ejemplo, quizá desee que el programa compruebe qué día de la semana es y haga
algo diferente dependiendo del día. La instrucción If...Then permite evaluar una
condición y ejecutar las diferentes secciones de código basándose en los resultados de
esa condición.
El siguiente ejemplo muestra cómo funciona la instrucción If...Then.
VB
C#
C++
F#
JScript
Copiar
If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Monday Then
MsgBox("Today is Monday!")
End If
Cuando se ejecuta este código, se evalúa la condición (la parte entre If y Then). Si la
condición es true, se ejecuta la siguiente línea de código y se muestra un cuadro de
mensaje; si es false, el código pasa a la línea End If. En otras palabras, el código
estipula "Si hoy es lunes, muestre el mensaje".
Inténtelo
Para utilizar la instrucción If...Then
1. En el menú Archivo, seleccione Nuevo proyecto.
2. En el cuadro de diálogo Nuevo proyecto, en el panel Plantillas, haga clic en
Aplicación para Windows.
3. En el cuadro Nombre, escriba IfThen y haga clic en Aceptar.
Se abre un nuevo proyecto de formularios Windows Forms.
4. Haga doble clic en el formulario para abrir el Editor de código.
5. En el controlador de eventos Form1_Load, escriba el siguiente código.
VB
C#
C++
F#
JScript
Copiar
If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Saturday Or
_
My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Sunday Then
MsgBox("Happy Weekend!")
End If
6. Presione F5 para ejecutar el programa.
Si hoy es sábado o domingo, aparecerá un cuadro de mensaje indicándole Happy
Weekend!. De lo contrario, no aparecerá ningún cuadro de mensaje.
7. En el menú Depurar, seleccione Detener depuración para finalizar el
programa. Mantenga abierto este proyecto. Se utilizará en el siguiente
procedimiento, "Para utilizar la cláusula Else".
Es posible que haya observado en el ejemplo anterior que la instrucción If...Then
utilizó el operador Or para evaluar varias condiciones ("Si es sábado Or si es
domingo"). Puede utilizar los operadores Or y And para evaluar tantas condiciones
como desee en una instrucción If...Then única.
La cláusula Else
Ha visto cómo utilizar la instrucción If...Then para ejecutar el código si una condición
es true, pero ¿qué pasa si desea ejecutar un código si una condición es true, pero otro si
es false? En este caso, puede utilizar la cláusula Else. La cláusula Else le permite
especificar un bloque de códigos que se ejecutará si la condición es false. El siguiente
ejemplo muestra cómo funciona la cláusula Else.
VB
C#
C++
F#
JScript
Copiar
If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Friday Then
MsgBox("Today is Friday!")
Else
MsgBox("It isn't Friday yet!")
End If
En este ejemplo, se evalúa la expresión; si es true, se ejecuta la siguiente línea de código
y se muestra el primer cuadro de mensaje. Si es false, el código se desplaza a la cláusula
Else y se ejecuta la línea Else siguiente, que muestra el segundo cuadro de mensaje.
Inténtelo
Para utilizar la cláusula Else
1. Cambie el código en la instrucción If...Then de la siguiente forma.
VB
C#
C++
F#
JScript
Copiar
If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Saturday Or
_
My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Sunday Then
MsgBox("Happy Weekend!")
Else
MsgBox("Happy Weekday! Don't work too hard!")
End If
2. Presione F5 para ejecutar el programa. El programa mostrará ahora un cuadro de
mensaje que indica si es un fin de semana o un día de la semana, con contenido
adecuado.
Nota
Para cambiar el día de la semana haga doble clic en la hora en la barra de tareas de
Windows, si desea probar la ejecución de los dos bloques de código. (La barra de tareas
es la que contiene el botón Inicio de Windows; de manera predeterminada, se encuentra
en la parte inferior del escritorio y la hora se muestra en la esquina derecha).
Pasos siguientes
En esta lección, aprendió a utilizar la instrucción If...Then junto con la cláusula Else
para hacer que el programa ejecute selectivamente los bloques de códigos basándose en
las condiciones en el tiempo de ejecución. Para la siguiente lección, puede elegir entre
examinar cómo seleccionar el código para ejecución y leer Información detallada:
utilizar Select Case para decidir entre varias opciones o continuar con la siguiente
lección, Qué hacer cuando algo sale mal: control de errores.
Vea también
Tareas
Hacer que un programa repita acciones: establecer bucles For...Next
Comparaciones: Utilizar expresiones para comparar valores
Referencia
Instrucción If...Then...Else (Visual Basic)
MsgBox (Función, Visual Basic)
Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y
devuelve un entero que indica el botón utilizado.
Copiar
Public Function MsgBox( _
ByVal Prompt As Object, _
Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly, _
Optional ByVal Title As Object = Nothing _
) As MsgBoxResult
Parámetros
Prompt
Obligatorio. Expresión de tipo String que se muestra como mensaje en el cuadro de
diálogo. La longitud máxima de Prompt es de aproximadamente 1024 caracteres, según
el ancho de los caracteres utilizados. Si Prompt consta de más de una línea, puede
separar las líneas mediante un carácter de retorno de carro (Chr(13)), un carácter de
avance de línea (Chr(10)) o una combinación de caracteres de retorno de carro/avance
de línea (Chr(13) y Chr(10)) entre cada línea.
Buttons
Opcional. Expresión numérica que corresponde a la suma de los valores que especifican
el número y tipo de botones que se han de mostrar, el estilo de icono que se va a usar,
la identificación del botón predeterminado y la modalidad del cuadro de mensaje. Si se
omite Buttons, el valor predeterminado será cero.
Title
Opcional. Expresión de tipo String que se muestra en la barra de título del cuadro de
diálogo. Si se omite Title, en la barra de título aparecerá el nombre de la aplicación.
Valores
En la siguiente tabla se incluyen los valores de enumeración de MsgBoxStyle:
Miembro
Valor
Descripción
OKOnly
0
Muestra sólo el botón Aceptar.
OKCancel
1
Muestra los botones Aceptar y Cancelar.
AbortRetryIgnore
2
Muestra los botones Anular, Reintentar y Omitir.
YesNoCancel
3
Muestra los botones Sí, No y Cancelar.
YesNo
4
Muestra los botones Sí y No.
RetryCancel
5
Muestra los botones Reintentar y Cancelar.
Critical
16
Muestra el icono Mensaje crítico.
Question
32
Muestra el icono Consulta de advertencia.
Exclamation
48
Muestra el icono Mensaje de advertencia.
Information
64
Muestra el icono Mensaje de información.
DefaultButton1
0
El primer botón es el predeterminado.
DefaultButton2
256
El segundo botón es el predeterminado.
DefaultButton3
512
El tercer botón es el predeterminado.
ApplicationModal
0
Aplicación modal: el usuario debe responder al cuadro de
mensaje antes de continuar trabajando en la aplicación
actual.
SystemModal
4096
Sistema modal: se suspenden todas las aplicaciones hasta
que el usuario responda al cuadro de mensaje.
MsgBoxSetForeground 65536
Especifica la ventana del cuadro de mensaje como ventana
de primer plano.
MsgBoxRight
524288
Texto alineado a la derecha.
MsgBoxRtlReading
1048576 Especifica que el texto debe aparecer para ser leído de
derecha a izquierda en los sistemas árabe y hebreo.
El primer grupo de valores (0-5) describe el número y tipo de botones mostrados en el cuadro
de diálogo. El segundo grupo (16, 32, 48, 64) describe el estilo de icono. El tercer grupo (0, 256,
512) determina qué botón es el valor predeterminado. El cuarto grupo (0, 4096) determina la
modalidad del cuadro de mensaje y el quinto grupo especifica si el cuadro de mensaje es la
ventana de primer plano, junto con la alineación y la dirección del texto. A la hora de sumar
números para crear el valor final del argumento Buttons, se deberá utilizar únicamente un
número de cada grupo.
Valor devuelto
Constante
Valor
OK
1
Cancel
2
Abort
3
Retry
4
Ignore
5
Yes
6
No
7
Excepciones
Tipo de excepción
Número de Condición
error
ArgumentException
5
Prompt no es una expresión String o Title no
es válido.
InvalidOperationException
5
El proceso no se está ejecutando en modo
interactivo de usuario.
InvalidEnumArgumentException 5
Uno o más parámetros no son miembros de la
enumeración MsgBoxResult o MsgBoxStyle.
Consulte la columna "Número de error" si está actualizando aplicaciones de Visual Basic 6.0 que
utilizan el control de errores no estructurado. (Se puede comparar el número de error con
respecto a Number (Propiedad, objeto Err)). Sin embargo, siempre que sea posible, se debe
considerar la sustitución de dicho control de errores por Información general sobre el control
estructurado de excepciones de Visual Basic.
Comentarios
Si el cuadro de diálogo muestra un botón Cancelar, presionar la tecla ESC tendrá el mismo
efecto que hacer clic en Cancelar. Si el cuadro de diálogo contiene un botón Ayuda, existe
ayuda contextual para ese cuadro de diálogo en concreto. Sin embargo, no se devolverá ningún
valor hasta que se haga clic en uno de estos botones.
Nota
Si desea especificar más que el primer argumento, deberá utilizar la función MsgBox en una
expresión. Si omite alguno de los argumentos de posición, deberá conservar el correspondiente
delimitador de coma.
Nota
La función MsgBox requiere UIPermission en el nivel SafeTopLevelWindows, lo que puede
afectar a su ejecución en situaciones de confianza parcial. Para obtener más información, vea
Solicitar permisos y UIPermission.
Ejemplo
En este ejemplo se utiliza la función MsgBox para mostrar un mensaje de error crítico en un
cuadro de diálogo con botones Sí y No. El botón No se considera la respuesta predeterminada.
Todo ello se consigue combinando los valores de constante de MsgBox en una expresión
numérica. En este caso, si se agrega 4 (la combinación de botones Sí/No) y 16 (la ventana
Mensaje crítico) y 256 (el segundo botón como botón predeterminado) se obtiene un total de
276. El valor que devuelve la función MsgBox depende del botón que elija el usuario: Sí
devuelve un valor 6; No un valor 7.
VB
C#
C++
F#
JScript
Copiar
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Do you want to continue?"
' Define message.
style = MsgBoxStyle.DefaultButton2 Or _
MsgBoxStyle.Critical Or MsgBoxStyle.YesNo
title = "MsgBox Demonstration"
' Define title.
' Display message.
response = MsgBox(msg, style, title)
If response = MsgBoxResult.Yes Then
' User chose Yes.
' Perform some action.
Else
' Perform some other action.
End If
InputBox (Función, Visual Basic)
Muestra un mensaje en un cuadro de diálogo, espera a que el usuario escriba un texto o haga
clic en un botón y devuelve una cadena con el contenido del cuadro de texto.
Copiar
Public Function InputBox( _
ByVal Prompt As String, _
Optional ByVal Title As String
Optional ByVal DefaultResponse
Optional ByVal Xpos As Integer
Optional ByVal YPos As Integer
) As String
= "", _
As String = "", _
= -1, _
= -1 _
Parámetros
Prompt
Requerido. Expresión de tipo String que se muestra como mensaje en el cuadro de
diálogo. La longitud máxima de Prompt es de aproximadamente 1024 caracteres, según
el ancho de los caracteres utilizados. Si Prompt incluye más de una línea, puede separar
las líneas mediante un carácter de retorno de carro (Chr(13)), un carácter de salto de
línea (Chr(10)) o una combinación de retorno de carro y salto de línea (Chr(13) &
Chr(10)) que inserta entre cada línea.
Title
Opcional. Expresión de tipo String que se muestra en la barra de título del cuadro de
diálogo. Si se omite Title, en la barra de título aparecerá el nombre de la aplicación.
DefaultResponse
Opcional. Expresión de tipo String que se muestra en el cuadro de texto como
respuesta predeterminada en caso de que no se suministre otra entrada. Si se omite
DefaultResponse, el cuadro de texto se mostrará vacío.
XPos
Opcional. Expresión numérica que especifica, en píxeles, la distancia entre el borde
izquierdo del cuadro de diálogo y el borde izquierdo de la pantalla. Si omite XPos y
YPos, el cuadro de diálogo se centra en la pantalla.
YPos
Opcional. Expresión numérica que especifica, en píxeles, la distancia entre el borde
superior del cuadro de diálogo y el borde superior de la pantalla. Si omite XPos y YPos,
el cuadro de diálogo se centra en la pantalla.
Comentarios
Si el usuario hace clic en Cancelar, se devolverá una cadena de longitud cero.
Si desea especificar más que el primer argumento, deberá utilizar la función InputBox en una
expresión. Si omite alguno de los argumentos de posición, deberá conservar el correspondiente
delimitador de coma.
Nota
La función InputBox requiere un permiso UIPermission del nivel SafeTopLevelWindows que
podría afectar a su ejecución en situaciones de confianza parcial. Para obtener más información,
vea Solicitar permisos y UIPermission (Clase).
Ejemplo
En este ejemplo se muestran distintas formas de utilizar la función InputBox para pedir al
usuario que especifique un valor. Si se omiten las posiciones x e y, el cuadro de diálogo quedará
centrado automáticamente respecto a ambos ejes. La variable MyValue contiene el valor
especificado por el usuario al hacer clic en Aceptar o presionar la tecla ENTRAR.
VB
C#
C++
F#
JScript
Copiar
Dim message, title, defaultValue As String
Dim myValue As Object
' Set prompt.
message = "Enter a value between 1 and 3"
' Set title.
title = "InputBox Demo"
defaultValue = "1"
' Set default value.
' Display message, title, and default value.
myValue = InputBox(message, title, defaultValue)
' If user has clicked Cancel, set myValue to defaultValue
If myValue Is "" Then myValue = defaultValue
' Display dialog box at position 100, 100.
myValue = InputBox(message, title, defaultValue, 100, 100)
' If user has clicked Cancel, set myValue to defaultValue
If myValue Is "" Then myValue = defaultValue
La estrutura de control IF permite decidr entre dos opciones resultantes de la evaluación de
una sentencia. Si la evaluación es positiva hace una cosa, también podemos especificar
accioens para realizar en caso de que la evaluación sea negativa. Veamos cómo funciona en
VBscript.
IF (expresion) then
Sentencias
....
END IF
Vemos que en primer lugar tenemos la sentencia IF, luego una expresión, que puede o no ir
entre paréntesis, y más tarde la parabra THEN. Vemos que luego hay un salto de línea antes
de colocar las sentencias asociadas a la evaluación positiva de la sentencia. En VBScript las
líneas si que importan.
Después de poner las sentencias del asociadas a la evaluación positiva colocamos un END IF,
para acabar la estructura del IF.
Enunciado ELSE
Opcionalmente se puede colocar una serie de sentencias asociadas a la evaluación negativa
de la expresión. Estas sentencias se deben colocar después de la orden ELSE y antes del END
IF.
IF (expresion) then
Sentencias
....
ELSE
Sentencias
....
END IF
Enunciado ELSEIF
En Visual Basic Script existe la posibilidad de utilizar un enunciado especial en el lugar donde
utilizaríamos un ELSE. Sirve para encadenar sentencias IF de modo que en un resultado
negativo de un IF se pueda evaluar otra expresión, que tendría a su vez otros enunciados
THEN y probablemente ELSE u otro ELSEIF. Se vería en un ejemplo com más facilidad:
IF (expresion1) then
Sentencias1
....
ELSEIF (expresion2) then
Sentencias2
....
ELSEIF (expresion3) then
Sentencias3
....
ELSE
Sentencias4
....
END IF
Se evalúa la primera expresión, en caso positivo se ejecutan las sentencias1, en caso
negativo se evalua la expresion 2. Si la expresión 2 es positiva se ejecutan las sentencias 2
en caso negativo evaluamos la expresión 3 con el siguiente ELSEIF. Todo acaba en un ELSE
en este ejemplo, pero el ELSE final no es obligatorio
Descargar