
El condicional Según de PSeInt
Apartado 23: El condicional switch en programación
Dificultad del apartado:
En el capítulo anterior te expliqué como funcionaba el condicional if
(Si-Entonces
en PSeInt). En este, te voy a mostrar el otro tipo de condicional. Muy a menudo conocido como switch
en muchos lenguajes de programación.
El condicional switch en Python se llama match
y en PSeInt Según
.
Se puede traducir la palabra "switch" como conmutador en español, aunque casi nadie utiliza ese término. Normalmente no se traduce del inglés.
Puedes añadir el comando completo con este botón de la sección de comandos:

Sintaxis de Según de PSeInt
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 Según 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, realmente no tiene mucha utilidad. Se utiliza para expresar que en torno al valor dado en el Según
, se "hará" lo siguiente.
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
.
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.
Parte Fin Segun
La última parte, se usa para finalizar la estructura.
Ejemplo práctico del condicional Segun de PSeInt
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 en primero en el primer Caso
. 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 Según
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.
Algoritmo ejemplo_condicional_segun
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
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
Probando el algoritmo con Según
Voy a probar do opciones, tú pruébalas todas si quieres.
En la primera, introduzco un 4. Esto hace que el Caso 1
sea FALSO
, el Caso 2
y Caso 3
igual. Luego llega al 4, coincide y da un VERDADERO
que hace que se ejecute el bloque de dicho Caso
.

Si todos son FALSO
, se ejecuta el bloque De Otro Modo
.
Diagrama de flujo del condicional Según
Tenemos un algoritmo muy ordenado, con 8 posibles caminos que pasan por el Según
.

Según (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.
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 escrito 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. Eso lo 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.
Anterior Siguiente
Ejercicios resueltos de programación
- 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 al usuario 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.
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.

Las soluciones de los ejercicios las tienes aquí: Ejercicios resueltos de programación.
Comentarios
Si te quedan dudas sobre el temario, sobre Programación, PseInt, Python o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.