Estructuras Selectivas
Estructuras Selectivas
Estructuras Selectivas
INTRODUCCION
Estas estructuras se identifican porque en la fase de solución del problema existe algún
punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones d eben
realizarse o no.
Español Inglés
Si <condición> If<condición>
Entonces then
<acción Si> <acción Si>
fin_si endif
Ejemplo 1.
Construir un algoritmo tal, que dado como dato la calificación de un alumno en un examen,
escriba "Aprobado" en caso que esa calificación fuese mayor que 8.
Variables:
Cal = calificación
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Fin_si
Fin
Son estructuras lógicas que permiten controlar la ejecución de varias acciones y se utilizan
cuando se tienen dos opciones de acción, por la naturaleza de estas se debe ejecutar una o la
otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Representación pseudocodificada
Español Inglés
Si <condición> entonces If<condición>then
<acción S1> <acción S1>
sino else
<acción S2> <acción S2>
Fin_Si End_if
Ejemplo 1.
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Sino
Escribir ("reprobado")
Fin_si
Fin
Ejemplo 2.
Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si su sueldo es
inferior a $1000 y 12% en caso contrario, luego imprimir el nuevo sueldo del trabajador.
EXPRESIONES LÓGICAS
Sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano
verdadero o falso, es decir, se cumple o no se cumple la condición. Se pueden clasificar en
simples y complejas. Las simples son las que usan operadores relacionales y las complejas
las que usan operadores lógicos.
Ejemplos:
Una escuela aplica dos exámenes a sus aspirantes, por lo que cada uno de ellos obtiene dos
calificaciones denotadas como C1 y C2. El aspirante que obtenga calificaciones mayores
que 80 en ambos exámenes es aceptado; en caso contrario es rechazado.
Note que también usa operadores relacionales. Por lo general cuando hay operadores
lógicos, éstos van acompañados de operadores relacionales.
Una escuela aplica dos exámenes a sus aspirantes, por lo que cada uno de ellos obtiene dos
calificaciones denotadas como C1 y C2. El aspirante que obtenga una calificación mayor
que 90 en cualquiera de los exámenes es aceptado; en caso contrario es rechazado.
La instrucción equivale a OR ya que nos dice que puede ser en cualquiera de los exámenes
no necesariamente en los dos. En el ejemplo 1 la palabra ambos equivalía a seleccionar la
instrucción AND. Si la instrucción nos dijera que obtenga una nota en cualquiera de los
exámenes pero no en ambos, nos estaría indicando una instrucción XOR que es un tipo de
OR pero exclusivo. Es decir, no puede considerarse el caso en que tenga la misma nota en
los dos exámenes, solo en uno de los dos.
En la solución de problemas encontramos numerosos casos en los que luego de tomar una
decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión.
Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un
bloque condicional incluye otro bloque condicional se dice que un bloque está anidado
dentro del otro.
Ejemplo 1.
Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras
trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto
se consideran horas extras y que éstas se pagan al doble de una hora normal cuando no
exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se
paga por una hora normal y el resto al triple.
Solución:
Lo primero que hay que determinar es si el trabajador trabajó horas extras o no. Encontrar
las horas extras de la siguiente forma:
Horas extras = horas trabajadas - 40
Definición de variables:
ht = horas trabajadas het = horas extras que exceden de 8
ph = pago por hora normal phe = pago por horas extras
he = horas extras pt = pago que recibe el trabajador
Algoritmo:
Inicio
Leer (ht, ph)
Si ht>40 entonces
He ¬ ht - 40
Si he > 8 entonces
Het ¬he - 8
Phe ¬ph * 2 * 8 + ph * 3 * het
Sino
Phe ¬ ph * 2 * he
Fin_si
Pt ¬ph * 40 + phe
Sino
Pt ¬ ph * ht
Fin_si
Escribir (pt)
Fin
Ejemplo 2.
La dinámica del problema es comparar dos números a la vez para conocer cuál es el mayor.
Con frecuencia es necesario que existan más de dos elecciones posibles. Este problema se
podría resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el
número de alternativas es grande puede plantear serios problemas de escritura y de
legibilidad.
Usando la estructura de decisión múltiple se evaluará una expresión que podrá tomar n
valores distintos, 1, 2, 3,...., n y según que elija uno de estos valores en la condición, se
realizará una de las n acciones o lo que es igual, el flujo del algoritmo seguirá sólo un
determinado camino entre los n posibles.
Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción 1,
si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará la acción N.
Ejemplo 1.
Diseñar un algoritmo tal que dados como datos dos variables de tipo entero, obtenga el
resultado de la siguiente función:
Ejemplo 2.
Definición de variables:
Cate = categoría
Sue = sueldo
Nsue = nuevo sueldo
Algoritmo:
Inicio
Leer (cate, sue)
En caso que cate sea
1: hacer nsue<-- sue * 1.15
2: hacer nsue<-- sue * 1.10
3: hacer nsue<-- sue * 1.08
4: hacer nsue<-- sue * 1.07
Fin_caso_que
Escribir (cate, nsue)
Fin