02 estructuras condicionales en visual basic .net
TRANSCRIPT
UNIVERSIDAD JOSÉ ANTONIO PÁEZ
DIRECCIÓN GENERAL DE ESTUDIOS BÁSICOS Y GENERALES
COORDINACIÓN DE INFORMÁTICA
Introducción a la Programación de Aplicaciones en Consola
y en Entorno Visual.
ESTRUCTURAS CONDICIONALES
Microsoft Visual Basic 2010
Prof. Alejandro E. Bolívar P.
Ingeniero Mecánico
Magister en Ingeniería Mecánica
San Diego, Marzo, 2012
ÍNDICE
ÍNDICE ........................................................................................................... 2
UNIDAD 2. ESTRUCTURAS CONDICIONALES. ........................................ 3
2.1 Operadores Relacionales. ..................................................................... 3
2.2 Operadores Lógicos. ............................................................................ 3
2.2.1 And .............................................................................................. 3
2.2.2 Or ................................................................................................. 4
2.2.3 Not ............................................................................................... 5
2.3 Prioridad de los operadores. ................................................................. 6
2.4 Orden de prioridad. .............................................................................. 6
2.5 Estructuras Condicionales. ................................................................... 7
2.5.1 Estructura Condicional Simple ...................................................... 7
2.5.2 Estructura Condicional Doble ....................................................... 7
2.5.3 Estructura Condicional Múltiple ................................................... 8
2.6 Aspectos adicionales a tomar en cuenta para la solución de problemas
en computadora con estructuras condicionales. .................................................... 10
2.7 Ejercicios Prácticos de Estructuras Condicionales. ............................. 10
UNIDAD 2. ESTRUCTURAS CONDICIONALES.
Las estructuras condicionales permiten controlar la ejecución de un conjunto de
instrucciones en el programa, todo esto mediante la implementación de expresiones
lógicas sencillas o complejas realizadas en base a operadores relacionales y lógicos.
Las estructuras condicionales se pueden presentar como sencillas, dobles o múltiples.
2.1 Operadores Relacionales.
Los operadores relacionales (ver Tabla 3.1) permiten realizar comparaciones
entre variables, valores o una combinación de estos conformando así una expresión
lógica. La siguiente tabla contiene una lista con los operadores de comparación
relacionales y las condiciones que determinan si el resultado es True o False.
Tabla 3.1. Operadores relacionales.
Operador True si False si
< (Menor que) expresión1< expresión2 expresión2>= expresión2
<= (Menor o igual que) expresión1<= expresión2 expresión2> expresión2
> (Mayor que) expresión1> expresión2 expresión2<= expresión2
>= (Mayor o igual que) expresión1>= expresión2 expresión2< expresión2
= (Igual a) expresión1= expresión2 expresión2<> expresión2
<> (Distinto de) expresión1<> expresión2 expresión2= expresión2
2.2 Operadores Lógicos.
2.2.1 And
Realiza una conjunción lógica entre dos expresiones Boolean o una conjunción
bit a bit entre dos expresiones numéricas.
4
Para la comparación booleana, resultado es True si y sólo si expression1 y
expression2 se evalúan como True. En la tabla siguiente se ilustra cómo se determina
el argumento resultado.
Tabla 3.2. Resultados del operador AND.
Si expresión1 es Y expresión2 es El valor de resultado es
True True True
True False False
False True False
False False False
En el ejemplo siguiente se usa el operador And para realizar una conjunción
lógica de dos expresiones. El resultado será un valor de tipo Boolean que indicará si
las dos expresiones son True.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstCheck, secondCheck As Boolean firstCheck = a > b And b > c secondCheck = b > a And b > c
El ejemplo anterior genera unos resultados de True y False, respectivamente.
2.2.2 Or
Realiza una disyunción lógica entre dos expresiones de tipo Boolean o bien una
disyunción bit a bit entre dos expresiones numéricas.
Para la comparación Boolean, resultado es False si y sólo si expresión1 y
expresión2 se evalúan como False. En la tabla siguiente se ilustra cómo se determina
el argumento resultado.
5
Tabla 3.3. Resultados del operador OR.
Si expression1 es Y expression2 es El valor de resultado es
True True True
True False True
False True True
False False False
En el ejemplo siguiente se usa el operador Or para realizar una disyunción
lógica inclusiva entre dos expresiones. El resultado será un valor de tipo Boolean que
indicará si alguna de las dos expresiones es True.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstCheck, secondCheck, thirdCheck As Boolean firstCheck = a > b Or b > c secondCheck = b > a Or b > c thirdCheck = b > a Or c > b
El ejemplo anterior genera unos resultados de True, True y False,
respectivamente.
2.2.3 Not
Lleva a cabo o la negación lógica de una expresión de tipo Boolean o la
negación bit a bit de una numérica. En la siguiente tabla se muestra cómo se
determina la variable resultado cuando las expresiones son de tipo Boolean:
Si expresión es El valor de resultado es:
True False
False True
6
En el ejemplo siguiente se utiliza el operador Not para llevar a cabo la negación
lógica de una expresión de tipo Boolean. El resultado es un valor Boolean que
representa el inverso del valor de la expresión.
Dim a As Integer = 10 Dim b As Integer = 8 Dim c As Integer = 6 Dim firstCheck, secondCheck As Boolean firstCheck = Not (a > b) secondCheck = Not (b > a)
En el ejemplo anterior se generan los resultados False y True, respectivamente.
2.3 Prioridad de los operadores.
Todos los operadores de comparación tienen la misma prioridad; todos ellos
tienen mayor prioridad que los operadores lógicos, pero menor prioridad que los
operadores de concatenación y los operadores aritméticos.
2.4 Orden de prioridad.
Los operadores se evalúan en el siguiente orden de prioridad:
Operadores de comparación.
Todos los operadores de comparación (=, <>, <, <=, >, >=)
Operadores lógicos.
Negación (Not)
Conjunción (And)
Disyunción inclusiva (Or)
7
2.5 Estructuras Condicionales.
Visual Basic permite probar condiciones y realizar diferentes operaciones en
función de los resultados de la prueba. Puede comprobar si una condición es
verdadera o falsa, los distintos valores de una expresión o las diferentes excepciones
que se generan al ejecutar una serie de instrucciones.
En el siguiente ejemplo se muestra una estructura de decisión que prueba si el
valor de una condición es true y emprende distintas acciones en función del resultado.
2.5.1 Estructura Condicional Simple
En este tipo de estructura condicional, se ejecuta el bloque de sentencias o
instrucciones solamente si después de evaluar la expresión da como resultado True; si
por el contrario el resultado es False, entonces se salta este conjunto de instrucciones
y se continúa con el programa.
… If (Expresión) Then
sentencia(s) …
End If …
Existe también una forma adicional de implementar esta estructura, si
solamente se va a ejecutar una sola instrucción, la cual se debe colocar en la misma
línea de la sentencia If.
… If (Expresión) Then Instrucción
…
2.5.2 Estructura Condicional Doble
La primera ocupa sólo una línea y tiene la forma siguiente:
If (Expresión) Then sentencia1 Else sentencia2
8
La segunda es más general y se muestra a continuación:
If (Expresión) Then sentencia(s)
Else sentencia(s)
End If
2.5.3 Estructura Condicional Múltiple
Para indicar que se quiere ejecutar uno de varios bloques de sentencias
dependientes cada uno de ellos de una condición, la estructura adecuada es la
siguiente:
… If (Expresión1) Then
sentencias1 …
ElseIf (Expresión2) Then sentencias2 …
… Else
sentencias-n …
End If …
Por ejemplo, se desea escribir un programa que permita definir si un número a
es menor, mayor o igual que un número b.
… If (a<b) Then Console.WriteLine(a & " es menor que " & b) ElseIf (a=b) Then
Console.Writeline (a & " igual que " & b) Else
Console.Writeline (a & " es mayor que " & b) End If
9
…
Visual Basic proporciona la estructura Select Case como alternativa a
If…Then…Else para ejecutar selectivamente un bloque de sentencias entre varios
bloques. La sentencia Select Case ofrece posibilidades similares a la instrucción
If…Then…Else, pero hace que el código sea más legible cuando hay varias
opciones.
La estructura Select Case funciona con una única expresión de prueba que se
evalúa una vez solamente, al principio de la estructura. Visual Basic compara el
resultado de esta expresión con los valores de cada Case de la estructura. Si hay una
coincidencia, ejecuta el bloque de sentencias asociado a ese Case:
Select Case expresión_prueba Case lista_expresiones1
bloque de sentencias 1 Case lista_expresiones2
bloque de sentencias 2 …
… Case Else
bloque de sentencias n End Select
donde expresión es una expresión numérica o alfanumérica, y etiq1, etiq2, ...
pueden adoptar las formas siguientes:
1. expresión
2. expresión To expresión
3. Is operador-de-relación expresión
4. combinación de las anteriores separadas por comas
Por ejemplo:
10
… Numero = 8 ' Se inicializa la variable Numero. Select Case Numero ' Se va a evaluar la variable Numero.
Case 1 To 5 ' Si Numero está entre 1 y 5 Resultado = "Se encuentra entre 1 y 5"
Case 6, 7, 8 ' Numero es uno de los tres valores. Resultado = "Se encuentra entre 6 y 8"
Case Is = 9 , Is = 10 ' Numero es 9 ó 10. Resultado = "El valor es 9 o 10"
Case Else ' Si Numero toma otro valor Resultado = "El número no se encuentra entre 1 y 10"
End Select …
2.6 Aspectos adicionales a tomar en cuenta para la solución de problemas en
computadora con estructuras condicionales.
En este tipo de ejercicio, se requiere la implementación de estructuras
condicionales, se debe en primer lugar decidir cual es la condición o condiciones a
implementar, así como también seleccionar la estructura a utilizar (sencilla, doble o
múltiple), de tal manera que el programa se ejecute de manera eficiente, es decir, que
resuelva el problema con la menor cantidad de preguntas posibles (debe evitar las
condiciones o estructuras condicionales innecesarias). También se debe validar los
datos de entrada y salida del programa; sí así se requiere, esto requiere verificar que
los valores estén dentro del rango de valores permitidos. Por ejemplo: Dado un valor
entero x con un valor de 0 a 9, determinar: …., este enunciado sugiere la validación
del valor x desde 0 hasta 9, para poder realizar los cálculos, de lo contrario estaría
fuera del rango válido por lo cual no se debería realizar los cálculos.
2.7 Ejercicios Prácticos de Estructuras Condicionales.
1. Determinar si un número leído por teclado es par o impar.
Todo valor par se determina mediante el cálculo del residuo de la división por
dos. Sí el residuo de la división es igual a cero significa que el valor evaluado es par,
de lo contrario es impar. Debe tomarse en cuenta también que el valor cero no es par
11
ni impar y que por lo tanto se debe excluir de la verificación.
Module Module1 Sub Main() 'Variables de Entrada Dim num As Integer 'Entrada de Datos Console.WriteLine("Introduzca un número entero: ") num = Console.ReadLine 'Proceso y Salida de Datos If (num <> 0) Then If (num Mod 2 = 0) Then Console.WriteLine("El número introducido es par") Else Console.WriteLine("El número introducido es impar") End If Else Console.WriteLine("El número es cero, no es par ni es impar") End If Console.Write("Pulse una tecla para Finalizar…") Console.ReadKey() End Sub End Module
2. Dado un valor entero x de dos dígitos, indique si sus dígitos son iguales.
La cifra x se debe descomponer en unidad y decena, una de las formas de
realizar esta descomposición es dividiendo el valor x por 10, al hacerlo el valor de la
unidad se obtiene en el residuo y la decena se obtiene en la división entera; por último
se realiza la comparación entre los dos valores unidad y decena para mostrar el
mensaje respectivo.
Module Module1 Sub Main() 'Variables de Entrada Dim x As Integer 'Variables de Salida Dim u, d As Integer 'Entrada de Datos Console.Write("Introduzca el valor de x:") x = Console.ReadLine
12
'Proceso u = x Mod 10 d = x \ 10 'Salida de Datos If (u = d) Then Console.WriteLine("Los digitos son iguales") Else Console.WriteLine("Los digitos son distintos") End If Console.Write("Pulse una tecla para Finalizar…") Console.ReadKey() End Sub End Module
3. Escriba un programa que dados tres números enteros, calcule el mayor y el
menor de ellos.
En primer lugar se compara el valor “x” con respecto a “y” y se asigna el valor
mayor a la variable “mayor” y por supuesto el menor valor entre ellos se asigna a la
variable “menor”, por último se realiza la comparación con el valor de “z”, y se
muestran las variable “mayor” y “menor”.
Module Module1 Sub Main() 'Variables de Entrada Dim x, y, z As Integer 'Variables de Salida Dim mayor, menor As Integer 'Entrada de Datos Console.WriteLine("Introduzca tres numeros enteros: ") x = Console.ReadLine y = Console.ReadLine z = Console.ReadLine 'Proceso de Datos If (x >= y) Then mayor = x menor = y Else mayor = y menor = x End If If (z > mayor) Then mayor = z
13
Else If (z < menor) Then menor = z End If End If 'Salida de Datos Console.WriteLine("Mayor = " & mayor & "Menor = " & menor) Console.Write("Pulse una tecla para Finalizar…") Console.ReadKey() End Sub End Module
4. Dado un par coordenado x, y; determinar si dicho punto se encuentra entre el
eje x y la curva seno(x).
Al analizar la gráfica del seno (ver la siguiente figura) se puede observar que el
dominio son todos los números reales y que el rango está comprendido entre 1 y -1.
Lo ideal es hacer el análisis en dos partes, los puntos con “y” positivo y los puntos
con valor “y” negativo.
Para la “y” positiva se tiene que todo valor de “y” que es mayor que el valor del
seno(x) está fuera de la zona; por otro lado para la “y” negativa se tiene que toda “y”
que sea menor que el seno(x) también está fuera de la zona.
Module Module1 Sub Main() 'Variables de Entrada Dim x, y As Single
14
'Entrada de Datos Console.Write("Introduzca la Abscisa x:") x = Console.ReadLine Console.WriteLine("Introduzca la ordenada y:") y = Console.ReadLine 'Proceso y Salida de Datos If (y >= 0) Then If (y > Math.Sin(x)) Then Console.WriteLine("El punto no esta en la zona") Else Console.WriteLine("El punto esta en la zona") End If Else If (y < Math.Sin(x)) Then Console.WriteLine("El punto no esta en la zona") Else Console.WriteLine("El punto esta en la zona") End If End If Console.Write("Pulse una tecla para Finalizar…") Console.ReadKey() End Sub End Module
5. Escriba un programa que determine la calificación con letra de un promedio
numérica dado, para un promedio de 0 a 5, 6 a 10, 11 a 15 y de 16 hasta 20 la
letra es D, C, B y A respectivamente.
Module Module1 Sub Main() Dim nota As Integer 'Variables de Salida Dim nota_letra As Char 'Entrada de Datos Console.Write("Ingrese la Nota: ") nota = Console.ReadLine 'Proceso de Datos Select Case nota Case 0 To 5 nota_letra = "D" Case 6 To 10 nota_letra = "C" Case 11 To 15 nota_letra = "B" Case 16 To 20 nota_letra = "A" Case Else