Want to create interactive content? It’s easy in Genially!

Get started free

M3: Estructuras de control

Desarrollo contenido

Created on September 4, 2023

Start designing with a free template

Discover more than 1500 professional designs like these:

Math Lesson Plan

Primary Unit Plan 2

Animated Chalkboard Learning Unit

Business Learning Unit

Corporate Signature Learning Unit

Code Training Unit

History Unit plan

Transcript

ESTRUCTURAS DE CONTROL

Comenzar

Índice

Estructuras de control

01

Introducción

02

if

03

while

04

for

05

try

06

with

07

match

01. Introducción

Los programas informáticos casi nunca están formados por una secuencia lineal de sentencias que se ejecutan una tras otra. Existen circunstancias que hacen que un determinado bloque de código se ejecute o no, o lo haga un número determinado de veces.

Las estructuras de control tradicionales son las de selección (if) y las iterativas (while y for). Además, existen estructuras de control para la gestión de errores (try y with) que facilitan la escritura de programas robustos y consistentes.

A continuación, se explican las principales estructuras de control. ¡No te lo pierdas!

02. if

La sentencia if ...

Permite determinar si se debe ejecutar un bloque de código o no. Va seguida de una expresión lógica (devuelve true o false).

Mientras que en este otro bloque, se realizan evaluaciones sucesivas sobre una misma variable.

Puede contener alternativas condicionales mediante la palabra reservada elif. También puede contener un bloque que se va a ejecutar en el caso en el que las condiciones del if o de los elif no se cumplan.

Hay que tener en cuenta que el orden de las condiciones va a determinar la lógica del programa. En el siguiente ejemplo, cuando el valor de la variable evaluada sea igual o mayor que 6 se va a ejecutar el primer bloque y no la segunda, aunque la condición se cumpla. Esto es debido a que la condición de elif solo se evalúa si no se ha cumplido la condición del if o elif anterior.

En este bloque de código se evalúa si una variable numérica contiene un valor mayor o igual que 18 para mostrar el mensaje contenido en el bloque if. Si no se cumple la condición, se muestra el mensaje alternativo mediante el código contenido en el bloque else.

02. if

Actividad para practicar lo aprendido

Solicita a una persona su edad y determina si se encuentra en edad laboral, no la ha alcanzado aún la jubilación o está en edad de jubilación.

Solución

EDAD_MINIMA_LABORAL = 16 EDAD_JUBILACION = 65 edad = int(input("Introduce tu edad:")) if (edad<EDAD_MINIMA_LABORAL): print("No estás en edad laboral")

elif (edad>=EDAD_MINIMA_LABORAL and edad<EDAD_JUBILACION): print("Estás en edad laboral") else: print("Estás en edad de jubilación")

02. if

Aunque en Python no existen las constantes, se puede utilizar la notación habitual en otros lenguajes y denominar las variables que se quieren considerar como constantes con letras mayúsculas y guiones bajos como separadores de las diferentes palabras.

Ejemplo

03. while

Los bucles while se pueden combinar con sentencias else que se van a ejecutar cuando la condición de la iteración deje de cumplirse.

La estructura de control while permite repetir un bloque de código mientras se cumple una condición. La condición se indica a continuación de la palabra reservada while y se va a evaluar siempre antes de ejecutar el bloque de código, por lo que dicho bloque puede no ejecutarse nunca.

En el siguiente ejemplo se observa el uso de else junto con while. El bloque de código asociado a la sentencia while se va a ejecutar hasta que la condición deje de cumplirse. En ese momento, es cuando se va a ejecutar el bloque correspondiente a la sentencia else.

En el siguiente ejemplo, se solicita un número entero a una persona de forma reiterativa hasta que descubra cuál es el número secreto:

Ejemplo

Ejemplo

04. for

El bucle for permite recorrer una colección de elementos, ejecutando un bloque de código por cada uno de ellos.

Un bucle for permite recorrer rangos, además de estructuras de datos como listas o tuplas.

Para comenzar a utilizar los bucles for hay que conocer la función range. La función range genera un rango de números. En su forma más simple, crea un rango entre 0 y el número indicado entre paréntesis.

En el siguiente ejemplo, se está recorriendo un rango generado con range(5) y mostrado los elementos por consola:

Ejemplo

Observa el siguiente ejemplo:

Ejemplo

04. for

La ejecución de un bucle se puede interrumpir en cualquier momento con la instrucción break. Se suele utilizar una instrucción break cuando se produce una condición que hace innecesario seguir recorriendo la colección.

for numero in range(5): if (numero==3): print("¡Encontrado!") continue print(numero) 0 1 2 ¡Encontrado! 4

La instrucción continue es otra instrucción capaz de interrumpir la ejecución del bloque de código contenido en el bucle for.

Los bucles for se pueden combinar con sentencias else que se van a ejecutar cuando se termine la iteración.

En este caso, la instrucción provoca que la iteración en la que se encuentra el bloque sea interrumpida, pero continuando con la ejecución de la siguiente:

Dale al + para ver un ejemplo en el que se muestra el uso conjunto de for y else. El bloque else se ejecuta cuando el bucle for ha terminado de iterar por el rango indicado.

05. try

Uno de los objetivos del bloque try consiste en interrumpir la ejecución de una serie de líneas de código cuando estas son dependientes entre sí. De tal manera, cuando se produce un error una línea de un bloque try el resto de las líneas de dicho bloque no se van a ejecutar, pasando el control al bloque except.

Se utiliza la palabra reservada try para indicar que el código que se va a ejecutar a continuación puede producir errores.

Lógicamente, esta detección tiene como objetivo el poder hacer un tratamiento de dichos errores, con el fin de corregirlos o notificarlos. La gestión de los errores detectados en un bloque try se realiza mediante la palabra reservada except.

El siguiente ejemplo permite determinar qué código se debe ejecutar cuando se produzca un error como consecuencia de dividir un número entre cero:

La sintaxis es la siguiente:

Ejemplo

05. try

En el siguiente ejemplo se puede observar el uso combinado de un bloque try-except junto con else y finally. Si un usuario introduce un número entero distinto de cero, se van a ejecutar los bloques try, else y finally. Si, en cambio, introduce cero se va a producir un error, ejecutándose los bloques try, except y finally.

La gestión de los errores mediante bloques try-except permite múltiples alternativas, incluyendo la posibilidad de detectar errores concretos incluyendo varios bloques except asociados a un único try.

La composición try-except también admiten la inclusión de bloques else y finally. El contenido del bloque else se va a ejecutar si no existe ningún error mientras que el del bloque finally se va a ejecutar siempre, haya o no haya errores.

Ejemplo

05. try

Actividad para practicar lo aprendido

dividendo = int(input("Introduce el dividendo:")) divisor = int(input("Introduce el divisor:")) try: resultado = dividendo / divisor except: print("Ha ocurrido un error") else: print("El resultado es", resultado) finally: print("Fin de la ejecución")

Transcribe el siguiente código a un programa Python y realiza varias ejecuciones. En alguna de ellas introduce un 0 como divisor. Comprueba si los resultados son coherentes con el funcionamiento teórico de los bloques try-except-else-finally.

Solución

06. with

El siguiente código realiza la escritura de un fichero utilizando with y sin utilizar esta sentencia. Ambos bloques de código producen el mismo efecto. La principal diferencia es que en el bloque de código que utiliza with no es necesario cerrar el fichero cuando se termina de utilizar, ya que esta acción se realiza automáticamente.

La sentencia with permite automatizar algunos aspectos relacionados con la programación generando código compacto y evitando los errores que surgen como consecuencia de omisiones en la programación.

El ejemplo más habitual de uso de with tiene que ver con el manejo de ficheros.

#Sin utilizar with fichero = open("d:/salida-programa.txt", 'w') fichero.write("Fichero escrito sin with") fichero.close() #Utilizando with with open("d:/salida-programa-with.txt", 'w') as fichero_with: fichero_with.write("Fichero escrito con with")

En informática, un fichero es un conjunto de datos almacenados en un soporte permanente (un disco duro o un pendrive, por ejemplo). Un fichero puede contener texto plano, un documento pdf o un programa.

06. with

Actividad para practicar lo aprendido

Transcribe el programa del ejemplo anterior, modifica las rutas de salida de los ficheros para que se adapten a tu sistema y unidades de disco, ejecuta el programa y comprueba que el resultado es el esperado. La ruta de salida indica la ubicación y el nombre del fichero. En este ejercicio la ruta es d:/salida-programa.txt, siendo d la unidad de disco y salida-programa.txt el nombre del fichero.

07. match

La sentencia match (similar a la sentencia switch de otros lenguajes de programación) es una incorporación tardía al lenguaje Python, concretamente en la versión 3.10.

Esta sentencia permite programar distintas acciones en función de los valores de una expresión, creando una estructura similar a la conseguida con sentencias if y elif.

Las alternativas se agrupan en sentencias case que indican entre paréntesis el valor que debe tomar la expresión de match para que se ejecute su código. Puede haber tantas sentencias case como sean necesarias.

Ver +

07. match

La sintaxis es la siguiente:

A continuación, se muestra un ejemplo de uso de match. En él, se evalúa el valor de la variable numero y se toman acciones diferentes en función de que el valor sea 6, 12 u otro.

match(expresión): case(valor_expresión_1): #Código case(valor_expresión_2): #Código case(valor_expresión_3): #Código case _: #Código

Ejemplo

07. match

Actividad para practicar lo aprendido

numero = 6 match (numero): case(6): print ("Media docena") case (12): print ("Una docena") case_:print("sin información)

Utilizando la sentencia match, construir un programa que dada una palabra muestre su descripción. En caso de no disponer de la palabra proporcionada debe mostrar el texto: “No dispongo de esa palabra”.

Solución

Enhorabuena, has finalizado

¡Gracias!

divisor = int(input("Introduce un número:")) try:resultado = 10/divisorexcept:print("Ha ocurrido un error")else: print("El resultado es",resultado) finally: print("El proceso ha terminado")

Introduciendo el número 8, la salida sería la siguiente:

Introduce un número:8 El resultado es 1.25 El proceso ha terminado

Mientras que, si se introduce el número 0, la salida sería la siguiente:

Introduce un número:0 Ha ocurrido un error El proceso ha terminado

numero = 6 match (numero):case (6):print ("Media docena")case (12)print ("Una docena")case _:print ("sin informacion")

El resultado de la ejecución es el siguiente:

Media docena

edad = 23 if edad>=18: print("Eres mayor de edad") else: print("Eres menor de edad")

Por ejemplo, EDAD_MINIMA_LABORAL es un buen nombre para la variable que almacena la edad mínima laboral, si esta no va a cambiar durante la ejecución del programa.

for numero in range(5): print(numero) 0 1 2 3 4

try: resultado = 8 / 0 print("Esta línea no debe ejecutarse si hay error") except: print("Ha ocurrido un error") print("No se puede dividir entre 0") Ha ocurrido un error No se puede dividir entre 0

Mientras que en este otro bloque, se realizan evaluaciones sucesivas sobre una misma variable. Este ejemplo, muestra un mensaje si la variable huevos tiene un valor numérico de 12 o más, otro distinto si la variable no tiene 12 o más pero sí 6 o más, y un mensaje alternativo en caso de que la variable tenga un valor que no cumpla con ninguna de las condiciones.

huevos = 15 if huevos >= 12: print ("Tienes más de una docena de huevos") elif huevos >= 6: print ("Tienes más de media docena de huevos") else: print ("Tienes menos de media docena de huevos")

for numero in range(5): if (numero==3): print("¡Encontrado!") break print(numero) 0 1 2 ¡Encontrado!

huevos = 15 if huevos >= 6: print ("Tienes más de media docena de huevos") elif huevos >= 12: print ("Tienes más de una docena de huevos") else: print ("Tienes menos de media docena de huevos")

NUMERO_SECRETO = 8 numero_candidato = 0 while numero_candidato!=NUMERO_SECRETO: numero_candidato = int(input("Número candidato:")) if (numero_candidato!=NUMERO_SECRETO): print("El número secreto no es", numero_candidato) print("Enhorabuena, has descubierto el número secreto")

for numero in range(0,5): print(numero) else: print("Fin de la interacción") 01 2 3 4 Fin de la interacción

Por ejemplo, range(4) crea un objeto range con los valores 0, 1, 2 y 3. La sintaxis del bucle for es la siguiente: for item in colección.

try: bloque de código que puede provocar un error except: bloque de código que se ejecuta si ocurre un error

Opcionalmente, la expresión case _, contempla una opción por defecto para el caso en que ninguna de las opciones se cumpla. Esta alternativa por defecto debe ir al final de la secuencia de elementos case.

numero_limite = 5 numero_actual = 0 while (numero_actual<numero_limite): print("Número", numero_actual) numero_actual+=1 else: print("Se ha alcanzado el límite") Número 0 Número 1 Número 2 Número 3 Número 4 Se ha alcanzado el límite