Nos plantean el siguiente problema:
Dado las notas de examen final trabajos practicos y notas de examenes parciales, se desea saber la cantidad de puntos con el cual el estudiante aprueba, solo mostrar la nota de aprobacion si nota final es mayor a 30, nota de examenes parciales es mayor a 30 y la nota de trabajos practicos es mayor a 15.
Solucion: El problema es sincillo y requiere del minimo analisis, pero ahora miremos un poco la solucion que obtenemos
01 Module Module1 02 03 Sub Main() 04 'sobre 40 puntos 05 Dim Nota_Examen As Integer 06 ' sobre 20 puntos 07 Dim Nota_Trabajos As Integer 08 ' sobre 40 puntos 09 Dim Nota_Parciales As Integer 10 'dando 100 puntos totales 11 12 Nota_Examen = 34 'puede tomar cualquier valor de 1 a 40 13 Nota_Parciales = 33 'puede tomar cualquier valor de 1 a 20 14 Nota_Trabajos = 16 'puede tomar cualquier valor de 1 a 40 15 16 ' Utilizando el operador logico AND 17 If Nota_Parciales > 30 And Nota_Trabajos > 15 And Nota_Examen > 30 Then 18 Console.WriteLine("Estudiante Aprobado con " & (Nota_Parciales + Nota_Examen + Nota_Trabajos)) 19 End If 20 Console.ReadLine() 21 22 ' Utilizando IF anidados 23 If Nota_Parciales > 30 Then 24 If Nota_Trabajos > 15 Then 25 If Nota_Examen > 30 Then 26 Console.WriteLine("Estudiante Aprobado con " & (Nota_Parciales + Nota_Examen + Nota_Trabajos)) 27 End If 28 End If 29 End If 30 Console.ReadLine() 31 32 ' Utilizando operador ANDALSO 33 If Nota_Parciales > 30 AndAlso Nota_Trabajos > 15 AndAlso Nota_Examen > 30 Then 34 Console.WriteLine("Estudiante Aprobado con " & (Nota_Parciales + Nota_Examen + Nota_Trabajos)) 35 End If 36 Console.ReadLine() 37 38 End Sub 39 40 End Module
La opcion mas logica que se nos viene a la mente es utilizar el operador AND (linea 17 a 19), tambien podemos utilizar IF anidados (linea 23 a 29) y por ultimo la instruccion ANDALSO (linea 33 a 35), todas esas opciones nos dan el resultado correcto, ¿entonces cual es la diferencia?
- Al utilizar la instruccion AND, se evalua cada una de las condiciones y si todas son ciertas (true true true = true) se realiza la accion.
- Cuando utilizamos los IF anidados, se va evaluando uno por uno ingresando en cada IF respectivamente, si encuentra que una instruccion no cumple la condcion, la instruccion if se detiene.
- Por ultimo la instruccion ANDALSO, evalua expresion por expresion, es decir, al evaluar la primera expresion y si esta "no se cumple" ya no evalua el resto de las condiciones y no realiza la accion, similar a lo que hace un If anidado, con la excepcion de que esta instruccion es mucho mas legible y nos permite escribir todo el codigo en una sola linea.
Este operador ANDALSO y su similar ORALSO, son llamadas operadores de cortocircuito o "shortcircuit operators" en el lenguaje de shakespeare
0 comentarios:
Publicar un comentario