El condicional Segun de PSeInt
El condicional switch
en Python se llama
match
y en PSeInt Segun
.
Se puede traducir la palabra switch como conmutador o interruptor en español, aunque casi nadie utiliza ese término. Normalmente no se traduce del inglés.
Espacio publicitario
Puedes añadir el comando completo con este botón de la sección de comandos:
Sintaxis de Según de PSeInt
En la siguiente página puedes ver la sintaxis de la
estructura Segun
de PSeInt. Contamos con
varias opciones y con un bloque alternativo, por si no se
da el caso de ninguna.
Segun variable_numerica Hacer
opcion_1:
secuencia_de_acciones_1
opcion_2:
secuencia_de_acciones_2
opcion_3:
secuencia_de_acciones_3
De Otro Modo:
secuencia_de_acciones_dom
Fin Segun
Partes del condicional Segun de PSeInt
Parte Segun
La parte Segun
es con la que se declara la
estructura estilo switch
en PSeInt. A esta,
le vamos a pasar una variable de cualquier tipo para que
le de un valor.
Entonces, evaluaremos según ese valor. Por ejemplo, si es
una variable numérica que tiene un valor 10
,
solo ese valor, dará un valor booleano
VERDADERO
.
Parte Hacer
Esta parte, tiene una utilidad meramente semántica. Se
utiliza para expresar que en torno al valor dado en el
Segun
, se "hará" lo que viene en su sección
de código.
Parte opción o case
Las opciones, también llamadas con frecuencia
case
en inglés, son posibles bloques de código que se
ejecutarán solo si coinciden con el valor de la variable
pasada. Entonces, si el valor de la variable es
10
y hay una opción 10
, esta
evalúa como VERDADERO
. El resto
FALSO
.
La palabra case se puede traducir como caso u opción.
Parte De Otro Modo
Esta parte, es como el SiNo
del condicional
Si-Entonces
(if
). Si todo lo
anterior es FALSO
, se ejecutará como última
alternativa este bloque.
Espacio publicitario
Parte Fin Segun
La última parte, se usa para finalizar la estructura.
Ejemplo práctico del condicional Segun de PSeInt
Algoritmo ejemplo_condicional_segun
//Definición del valor para evaluar
Definir dia_semana Como Entero
// Solicitud del valor
Escribir "Ingrese un número del 1 al 7 para representar un día de la semana:"
Leer dia_semana
// Condicional Segun
Segun dia_semana Hacer
Caso 1:
Escribir "Lunes"
Caso 2:
Escribir "Martes"
Caso 3:
Escribir "Miércoles"
Caso 4:
Escribir "Jueves"
Caso 5:
Escribir "Viernes"
Caso 6:
Escribir "Sábado"
Caso 7:
Escribir "Domingo"
De Otro Modo:
Escribir "Número inválido. Ingrese un valor del 1 al 7."
Fin Segun
FinAlgoritmo
Empezamos este condicional con la palabra
Segun
. Ahí espera una variable para evaluar.
Según el número que tenga, se cumplirá una de las
opciones.
El condicional entra primero en el primer
Caso
(los casos son las posibles opciones).
Este no tiene porqué tener un valor 1
, puede
ser otro. Sin embargo, aquí en concreto, se evalúa si el
valor de la variable dia_semana
es igual a
1
, este Caso
nos devuelve un
VERDADERO
y se ejecuta solo él. El resto se
ignoran.
Si la primera opción evalúa como FALSO
, se
pasa a evaluar la segunda. Si el valor de la variable dada
al Segun
concuerda con el valor de esta opción (2), se ejecuta y el
resto no se evalúan.
Así sucesivamente hasta llegar al De Otro Modo. Este es el
equivalente al SiNo
. Si todo es
FALSO
, siempre se ejecuta el código de este
bloque.
Probando el algoritmo con Según
Voy a probar alguna opción, tú pruébalas todas si quieres.
Introduzco un 4
. Esto hace que el
Caso 1
sea FALSO
, el
Caso 2
y Caso 3
igual. Luego
llega al Caso 4
, coincide, y da un
VERDADERO
que hace que se ejecute el bloque
de dicho Caso
.
Si todos son FALSO
, se ejecutaría el bloque
De Otro Modo
.
Diagrama de flujo del condicional Segun
Tenemos un algoritmo muy ordenado, con ocho posibles
caminos que pasan por el Segun
:
Segun (switch) vs Si-Entonces (if)
El condicional switch
suele ser menos
utilizado que el if
en los programas. Ya que
se utiliza más para casos donde tienes un montón de
opciones relacionadas y las quieres evaluar todas de forma
unificada.
Espacio publicitario
Sin embargo, aunque el if
se utilice más en
general, no es la mejor opción en todos los casos. Por
ejemplo, para esta evaluación, es mejor un
switch
que un if
. Veamos la
diferencia con el mismo código anterior, escrito esta vez
con Si-Entonces
(if
):
Algoritmo ejemplo_condicional_si
Definir dia_semana Como Entero
Escribir "Ingrese un número del 1 al 7 para representar un día de la semana:"
Leer dia_semana
Si dia_semana = 1 Entonces
Escribir "Lunes"
Sino
Si dia_semana = 2 Entonces
Escribir "Martes"
Sino
Si dia_semana = 3 Entonces
Escribir "Miércoles"
Sino
Si dia_semana = 4 Entonces
Escribir "Jueves"
Sino
Si dia_semana = 5 Entonces
Escribir "Viernes"
Sino
Si dia_semana = 6 Entonces
Escribir "Sábado"
Sino
Si dia_semana = 7 Entonces
Escribir "Domingo"
Sino
Escribir "Número inválido. Ingrese un valor del 1 al 7."
FinSi
FinSi
FinSi
FinSi
FinSi
FinSi
FinSi
FinAlgoritmo
Con esto, puedes ver qué condicional es mejor en este
caso. Habrá otros casos en los que el if
sea
más conveniente; cosa que aprenderás con un poco de
práctica.
Y si miras el diagrama, es un auténtico laberinto:
Te recomiendo que vayas revisando los diagramas y vayas viendo cual es más fácil de leer. Seguramente, esa sea la opción acertada en tu algoritmo.
Como curiosidad, un switch de red es un dispositivo electrónico que conecta múltiples dispositivos en una red local informática, permitiendo la comunicación entre ellos al enviar los datos a los dispositivos de destino correctos. Por otro lado, un switch de programación es una estructura de control que selecciona entre múltiples opciones o casos basados en el valor de una expresión, redirigiendo el flujo del programa hacia el caso correspondiente. Ambos switches, ya sea en el ámbito de redes o programación, tienen la función de “tomar decisiones” y direccionar el flujo en función de condiciones específicas.
Espacio publicitario
Espacio publicitario
Ejercicio de programación para resolver
35. Para este ejercicio, quiero que simules un pequeño menú de consola.
Este menú constará de dos partes. La de interfaz de usuario y la de la lógica.
La parte de interfaz de usuario, va a ser la que se le
muestre al usuario. Será simplemente una serie de
Escribir
, que le solicitarán un valor de
entrada para elegir una opción del menú.
Para que el usuario sepa que opciones tiene, debes
mostrarle una serie de Escribir
con cada
opción que tiene. Por ejemplo,
Escribir "1: Opción 1".
,
Escribir "2: Opción 2"
...
Crea al menos cuatro opciones, que puedes llamar como quieras, por ejemplo, opción 1, opción 2, etc. También, aparte de estas cuatro opciones, quiero que añadas una opción llamada "salir" y otra por si se selecciona un opción no válida.
Después, tendrás que utilizar un condicional
Segun
, para hacer que cada opción, muestre un
mensaje concreto.
Las opciones, solo tendrán un simple
Escribir
, no hace falta que hagan nada más,
solo que indiquen en la consola, que se ha seleccionado
una opción en concreto.
Deberás poner una entrada numérica para el usuario, con
Leer
. Esta admitirá valores enteros. Por
ejemplo, puedes poner la opción 1 asociada al valor de
entrada 1, la opción salir, asociada al valor 5 y si ponen
un valor que no esté, como el 8, que indique que es un
valor no contemplado, o algo por el estilo.
Sé que es algo bastante más complicado que lo dado hasta ahora, así que espero que te gusten los retos. Si no lo consigues, no hay problema. Analiza bien la solución para ir aprendiendo más.
Verás que una vez lo soluciones o mires la solución, era más fácil de lo que realmente parecía en un principio.
En los ejemplos de la teórica, tienes todo lo necesario para crear la estructura necesaria, fíjate bien, y seguro que consigues realizar este ejercicio.
Para que no vayas a ciegas, te dejo la imagen del menú que he hecho yo para este ejercicio, no importa que sea igual que el mío, pero con esto, te harás una idea.
El ejercicio lo tenías que completar con dos partes
sustanciales. La primera, una serie de
Escribir
, que mostrasen las opciones
disponibles al usuario y como acceder a ellas. Por
ejemplo, la opción 1 con el valor 1 en el
Leer
.
La segunda parte, era la del condicional
Segun
.
Algoritmo menu_consola
// Variable para las opciones
Definir opcion Como Entero
// Menú mostrado al usuario
Escribir "Seleccione una opción:"
Escribir "1 - Opción 1."
Escribir "2 - Opción 2."
Escribir "3 - Opción 3."
Escribir "4 - Opción 4."
Escribir "5 - Salir."
// Entrada del valor de opción
Leer opcion
// Condicional para gestionar la lógica de cada opción
Segun opcion Hacer
Caso 1:
Escribir "Ha seleccionado la opción 1."
Caso 2:
Escribir "Ha seleccionado la opción 2."
Caso 3:
Escribir "Ha seleccionado la opción 3."
Caso 4:
Escribir "Ha seleccionado la opción 4."
Caso 5:
Escribir "¡Hasta la próxima!"
De Otro Modo:
Escribir "Número inválido. Ingrese un valor del 1 al 5."
Fin Segun
FinAlgoritmo
El resultado quedará de esta forma (puede que el tuyo sea algo diferente):
Si introduzco un valor del 1 al 4, me ejecuta el mensaje correspondiente de cada opción. Si pongo el valor 5, me muestra el mensaje de despedida y finaliza el algoritmo (lo hace igual con cada opción). Finalmente, si pongo un número que no existe, como 8, me dice que el número es inválido, ya que no tiene ningún caso asociado a ella.
Espacio publicitario
Espacio publicitario