Saltar al contenido
Introducción a la programación con Python

Control de flujo: condicionales y bucles.

Introducción

El control de flujo es una de las partes fundamentales de la programación que permite tomar decisiones y ejecutar ciertas acciones de acuerdo con las condiciones y situaciones que se presenten en el software que estamos desarrollando. Entre los elementos principales del control de flujo en Python encontramos las estructuras condicionales y los bucles.

Las estructuras condicionales nos permiten ejecutar una u otra instrucción dependiendo del cumplimiento de una determinada condición. En Python, las estructuras condicionales se implementan mediante las palabras clave "if", "elif" y "else", permitiéndonos realizar evaluaciones complejas.

Por otro lado, los bucles nos permiten ejecutar una misma instrucción o conjunto de instrucciones repetidamente hasta que se cumpla una determinada condición. En Python, contamos con dos tipos de bucles: el "while", que se ejecuta mientras se cumpla una determinada condición, y el "for", que se utiliza para iterar sobre un conjunto de datos. El conocimiento de las estructuras condicionales y los bucles es fundamental para el desarrollo de programas eficientes y flexibles, permitiendonos controlar el flujo de ejecución de una manera mucho más precisa y eficiente.

Resumen

El control de flujo en la programación se refiere a cómo se ejecutan las instrucciones de un programa. Los dos tipos de control de flujo principales son los condicionales y los bucles.

Condicionales:

Los condicionales son una estructura de control de flujo que permiten que una parte del código sólo se ejecute si se cumple una condición determinada.

Se utilizan principalmente dos palabras clave para definir estructuras condicionales: `if` y `else`. La sentencia `if` en Python se utiliza para ejecutar una o varias instrucciones sólo si una determinada condición es verdadera. La sintaxis básica es la siguiente:


if condicion: 
  instruccion1 
  instruccion2

En este caso, `condicion` debe ser una expresión que pueda ser evaluada a un valor `True` o `False`. Si la condición es `True`, entonces se ejecutan las instrucciones que se encuentran debajo de la sentencia `if`. Si la condición es `False`, entonces se salta esa parte del código y se continúa con la siguiente línea. 

La sentencia `else` se utiliza para ejecutar una o varias instrucciones cuando la condición en la sentencia `if` es falsa. La sintaxis básica es la siguiente:

if condicion: 
 instruccion1 
 instruccion2

else: 
 instrucciones_alternativas1 
 instrucciones_alternativas2 

En este caso, si la condición dentro del `if` es `True`, se ejecutan las instrucciones dentro de ese bloque. Pero si la condición es `False`, entonces se salta el bloque del `if` y se ejecutan las instrucciones dentro del bloque del `else`.

La sentencia `elif` se utiliza para evaluar varias condiciones alternativas. La sintaxis básica es la siguiente:



if condicion1: 
 instruccion1 
 instruccion2

elif condicion2: 
  instrucciones_alternativas1 
 instrucciones_alternativas2 

elif condicion3: 
  instrucciones_alternativas1 
 instrucciones_alternativas2 
else: 
  instrucciones_finales

Aquí, si `condicion1` es `True`, se ejecutan las instrucciones dentro del bloque del `if`. Si es `False`, se evalúa la siguiente condición en `elif`.

Si se encuentra alguna condición `elif` que sea verdadera, se ejecutará el bloque correspondiente. Si ninguna de las condiciones es verdadera, se ejecutan las instrucciones en el bloque `else`

Bucles

Los bucles son estructuras de control de flujo que permiten ejecutar una determinada parte del código varias veces.

En Python, hay dos estructuras de bucle principales: `for` y `while`.

La sentencia `for` se utiliza para iterar sobre una secuencia (como una lista o una cadena de caracteres) o cualquier objeto iterable. La sintaxis básica es la siguiente:

for elemento in iterable: instrucciones 

En este caso, `elemento` es una variable que se va a tomar de manera secuencial del iterable especificado (`iterable`) y se utilizará en cada iteración del bucle. Se ejecutan las instrucciones dentro del bucle `for` con cada valor de la variable `elemento` en cada iteración.

La sentencia `while` se utiliza para ejecutar un bloque de instrucciones mientras se cumpla una determinada condición.

La sintaxis básica es la siguiente:

while condicion: instrucciones

En este caso, `condicion` es una expresión que debe ser verdadera o falsa. Mientras `condicion` sea verdadera, se ejecutan las instrucciones dentro del bucle `while`. El programa seguirá ejecutando el bucle hasta que `condicion` sea evaluada como `False`.

Es importante tener en cuenta que si la condición dentro del bucle `while` nunca se cumple, entonces el bucle se ejecutará indefinidamente y puede producirse lo que se conoce como un bucle infinito.

Aplicación teórica

Un ejemplo práctico que incluye ambos conceptos: Supongamos que quieres implementar un programa que calcule el promedio de las notas de un estudiante.

El usuario ingresará las notas una por una y el programa debe detenerse cuando el usuario ingrese "-1" como indicador de fin de la entrada. Además, si algún valor ingresado es negativo o mayor a 10, el programa debe informarle al usuario que hubo un error en la entrada y pedirle que ingrese de nuevo.

Aquí te muestro cómo podrías implementar este programa con condicionales y bucles:


suma_notas = 0
contador_notas = 0

while True:
    nota = float(input("Ingrese una nota (-1 para terminar): "))
    
    if nota == -1:
        break
    elif nota < 0 or nota > 10:
        print("Error: la nota ingresada no es válida. Ingrese un valor entre 0 y 10.")
    else:
        suma_notas += nota
        contador_notas += 1
        
if contador_notas == 0:
    print("No se ingresaron notas.")
else:
    promedio = suma_notas / contador_notas
    print(f"El promedio de las notas ingresadas es: {promedio:.2f}")

Explicación del código:

- Definimos dos variables, `suma_notas` y `contador_notas`, para ir sumando las notas ingresadas y llevar la cuenta de cuántas notas se ingresaron.

- Empezamos un bucle `while` que se ejecutará indefinidamente hasta que el usuario ingrese "-1" como indicador de finalización de la entrada. - Dentro del bucle, le pedimos al usuario que ingrese una nota. Si el valor ingresado es "-1", usamos la instrucción `break` para salir del bucle. Si no, evaluamos dos casos con una estructura `if-elif-else`:

- Si el valor ingresado es negativo o mayor a 10, informamos al usuario que hubo un error en la entrada y pedimos que ingrese de nuevo.

- Si el valor ingresado es válido, lo sumamos a `suma_notas` y aumentamos en 1 el valor de `contador_notas`.

- Después de salir del bucle, evaluamos si se ingresaron notas o no. Si se ingresaron, calculamos el promedio y lo mostramos redondeado a 2 decimales. Si no se ingresó ninguna nota, simplemente informamos al usuario de esto. Espero que este ejemplo te ayude a entender cómo se pueden utilizar los conceptos de control de flujo en un programa real. Si tienes alguna pregunta, no dudes en preguntarme.

Aplicación práctica

Este eso un ejemplo práctico de cada uno:

Ejemplo de condicionales:



numero = int(input("Ingrese un número: ")) 
if numero > 0: 
 print("El número es positivo") 
elif numero < 0: 
 print("El número es negativo") 
else: 
 print("El número es cero") 

En este ejemplo, se le solicita al usuario que ingrese un número, se almacena en la variable `numero` y se utiliza una declaración condicional `if` para verificar si el número es positivo, negativo o cero. Dependiendo del resultado, se imprime un mensaje diferente en la pantalla.

Ejemplo de bucles:


numero = int(input("Ingrese un número: ")) 
factorial = 1 
if numero < 0: 
 print("Lo siento, el factorial no está definido para números negativos") 
elif numero == 0: 
 print("El factorial de 0 es 1") 
else: for i in range(1, numero + 1): 
 factorial = factorial * i 
 print("El factorial de", numero, "es", factorial) 

En este ejemplo, se le solicita al usuario que ingrese un número y se almacena en la variable `numero`. Se utiliza una declaración condicional `if` para manejar casos especiales (números negativos y cero) y se utiliza un bucle `for` para calcular el factorial para números positivos. El resultado se imprime en la pantalla.