Una
instrucción
alternativa múltiple (o simplemente alternativa múltiple)
permite seleccionar, por medio de una expresión, el
siguiente
bloque de instrucciones a ejecutar de entre varios posibles. En pseudocódigo,
para escribir una alternativa múltiple se utiliza la
sintaxis:
segun_sea
( <expresión> )
<lista_de_valores_1> :
<bloque_de_instrucciones_1>
<lista_de_valores_2> :
<bloque_de_instrucciones_2>
...
<lista_de_valores_n> :
<bloque_de_instrucciones_n>
[ sino :
<bloque_de_instrucciones_n+1> ]
fin_segun_sea
|
El resultado de evaluar la <expresión>
debe ser un valor perteneciente a un tipo de dato finito y ordenado, es
decir, entero, lógico, carácter, enumerado o
subrango.
Dependiendo del valor obtenido al evaluar la <expresión>,
se ejecutará un bloque de instrucciones u otro. En las
listas de
valores se deben escribir los valores que determinan el bloque de instrucciones
a ejecutar, teniendo en cuenta que, un valor sólo puede
aparecer en una lista de valores.
Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1>
después de sino
:. Este bloque de instrucciones se ejecutará en
el caso de que el valor obtenido al evaluar la <expresión>,
no se encuentre en ninguna de las listas de valores especificadas.
Ejemplo
1: Se quiere
diseñar el algoritmo de un programa
que:
1º)
Pida por teclado el número (dato entero) de un
día de la semana.
2º) Muestre por
pantalla el nombre (dato cadena) correspondiente a dicho día.
Nota:
Si el número de día introducido es menor que 1
ó
mayor que 7, se mostrará el mensaje: "ERROR: Día
incorrecto.".
En pantalla:
Algoritmo propuesto:
algoritmo Dia_de_la_semana
variables
entero dia
inicio
escribir(
"Introduzca
día de la semana: "
)
leer(
dia )
segun_sea
( dia )
1 : escribir(
"Lunes" )
2 : escribir( "Martes" )
3 : escribir( "Miércoles" )
4 : escribir( "Jueves" )
5 : escribir( "Viernes" )
6 : escribir( "Sábado" )
7 : escribir( "Domingo" )
sino : escribir( "ERROR:
Día incorrecto."
)
fin_segun_sea
fin |
Cuando en una lista de valores de una alternativa múltiple
aparece más de un valor, estos se escriben separados por el
carácter coma (,).
Estúdiese el siguiente ejemplo.
Ejemplo
2: En la siguiente tabla se
muestran las categorías a las que pertenecen los signos del
zodíaco:
Se quiere diseñar el algoritmo de un programa que:
1º)
Muestre el listado de los signos del zodíaco, con sus
números asociados.
2º) Pida por
teclado un número (dato entero) asociado a un signo del
zodíaco.
3º) Muestre la
categoría a la que pertenece el signo del zodíaco
seleccionado.
Nota: Si el
número introducido por el usuario,
no está asociado a ningún signo del
zodíaco, se
mostrará el mensaje: "ERROR:
<número> no
está asociado a ningún signo.".
En pantalla:
Una posible solución es:
algoritmo Signo_del_zodiaco
variables
entero numero
inicio
escribir(
"Listado de signos del zodíaco:" )
escribir(
"1. Aries" )
escribir(
"2. Tauro" )
escribir(
"3. Géminis"
)
escribir(
"4. Cáncer"
)
escribir(
"5. Leo" )
escribir(
"6. Virgo" )
escribir(
"7. Libra" )
escribir(
"8. Escorpio"
)
escribir(
"9. Sagitario"
)
escribir(
"10. Capricornio"
)
escribir(
"11. Acuario"
)
escribir(
"12. Piscis"
)
escribir(
"Introduzca número de signo: " )
leer(
numero )
segun_sea
( numero )
1, 5, 9 : escribir( "Es un
signo de Fuego." )
2, 6, 10 : escribir( "Es un
signo de Tierra." )
3, 7, 11 : escribir( "Es un
signo de Aire." )
4, 8, 12 : escribir( "Es un
signo de Agua." )
sino
: escribir( "ERROR: ",
numero,
"
no está asociado a ningún signo." )
fin_segun_sea
fin |
Otra solución es:
algoritmo Signo_del_zodiaco
variables
entero numero
cadena categoria
inicio
escribir(
"Listado de signos del zodíaco:" )
escribir(
"1. Aries" )
escribir(
"2. Tauro" )
escribir(
"3. Géminis"
)
escribir(
"4. Cáncer"
)
escribir(
"5. Leo" )
escribir(
"6. Virgo" )
escribir(
"7. Libra" )
escribir(
"8. Escorpio"
)
escribir(
"9. Sagitario"
)
escribir(
"10. Capricornio"
)
escribir(
"11. Acuario"
)
escribir(
"12. Piscis"
)
escribir(
"Introduzca número de signo: " )
leer(
numero )
segun_sea
( numero mod
4 )
1 :
categoria ←
"Fuego"
2 :
categoria ←
"Tierra"
3 :
categoria ←
"Aire"
0 :
categoria ←
"Agua"
fin_segun_sea
si
( numero >=
1 y numero <= 12 )
escribir( "Es un
signo de ",
categoria, "." )
sino
escribir( "ERROR: ", numero,
" no está
asociado a ningún signo."
)
fin_si
fin |
En esta
segunda solución existen las siguientes diferencias
importantes con respecto a la solución anterior:
- En el algoritmo
se utiliza una alternativa doble, además de una alternativa
múltiple.
- En la
alternativa múltiple no se escribe el <bloque_de_instrucciones_n+1>.
- La
expresión de la alternativa múltiple es diferente.
- La
expresión "Es
un signo de " sólo se escribe una vez.
- Se ha utilizado
una variable más: categoria
|