02 estructuras condicionales en visual basic .net

15
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

Upload: deiby1986

Post on 22-Oct-2015

316 views

Category:

Documents


3 download

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

15

Console.WriteLine("DATOS INCORRECTOS") End Select 'Salida de datos Console.WriteLine("La Calificación con letra es: " & nota_letra) Console.Write("Pulse una tecla para salir") Console.ReadKey() End Sub End Module