terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat logica-estructuras-ciclicas.md
guest@codeandosimple: ~/blog/logica $ cat estructuras-ciclicas.md

Lógica - Estructuras Cíclicas_

// "El 80% del éxito se basa simplemente en insistir" - Woody Allen

En el mundo del desarrollo de software, las Estructuras Cíclicas o Repetitivas son el pilar de la eficiencia. Aprenderemos a dominar los bucles, ciclos y loops, que se ejecutan mediante las acciones fundamentales PARA – MIENTRAS (FOR – WHILE).

# ¿Qué son las Estructuras Cíclicas?

En este artículo veremos las estructuras cíclicas, que mediante condiciones permiten repetir la ejecución de un conjunto de acciones de forma automatizada.

Esto es algo que no se ve tan claro y parece difícil pero se usa ¡muchísimo en la ingeniería de software! Cuando veamos ejemplos lo vas a entender y te vas a dar cuenta de su importancia para escribir código limpio y eficiente.

# Lógica y Diagramas de Estructuras Cíclicas

La sintaxis lógica se escribe de la siguiente manera para garantizar un control de flujo correcto:

Arquitectura básica de un ciclo repetitivo

Tenemos un bloque con una instrucción iterativa (loop, bucle, ciclo) que tiene una condición lógica que determina la ejecución:

Evaluación de la condición de entrada

Si se cumple la condición se ingresa al bloque y se ejecutan todas las instrucciones que están en el bloque. Cuando se ejecuta la última instrucción del bloque, el procesador vuelve a evaluar la condición, y si se cumple, se vuelve a repetir el ciclo.

Se sale del bucle cuando no se cumple la condición, en ese caso se sigue con la línea que está por debajo del bloque, liberando el flujo del programa.

Ruptura del ciclo y salida del flujo

# ¿Y para qué sirve repetir instrucciones?

Vamos a suponer que tenemos un programa que nos pide imprimir los números del 1 al 3. En el desarrollo tradicional, podríamos escribir cada línea manualmente:

Código ineficiente sin bucles

Con 3 lineas de impresión lo resolvemos, el texto “número†concatenado (sumado como palabra) al número (1,2,3).

¿Si piden agregar 4 y 5? Agregamos la impresión de número 4 y número 5 manualmente.

Redundancia de código manual

But if they ask for 100 or 10,000, we won't write it 100 times! Para situaciones repetitivas y procesamiento de datos masivos tenemos los ciclos. Vamos a ver dos tipos de estructuras cíclicas de alto rendimiento: PARA (FOR) y WHILE (MIENTRAS).

# El Ciclo PARA (FOR) en Detalle

El PARA (FOR) itera sobre una secuencia definida, ideal para cuando sabemos de antemano cuántas repeticiones tenemos que hacer.

Sintaxis del ciclo FOR

Este ciclo va iterar desde el valorInicial al valorFinal, ejecutando las instrucciones A, B y C en cada paso. A la variableContador le va a sumar uno en cada iteración automáticamente. Una vez que supera el valorFinal, sale del ciclo.

Si tenemos que imprimir del 1 al 100 ¿cómo hacemos? el primer número imprimir es el 1 y el último el 100, el ciclo tiene que recorrer todos esos números de forma secuencial.

Así que definimos nuestros parámetros:

  • valor inicial = 1
  • valor final = 100

Entonces, la lógica del algoritmo queda:

Implementación optimizada con FOR

Para número 1 a 100 imprimo número fin del ciclo. ¡En solo tres líneas de código profesional resolvimos el problema!

# El Ciclo MIENTRAS (WHILE): Control por Condiciones

Por otro lado tenemos otra estructura cíclica muy potente, el MIENTRAS (WHILE) que ejecuta mientras se cumpla una condición lógica de estado.

Lógica del ciclo WHILE

Se evalúa la condición, si es verdadera se ingresa al bloque y se ejecutan las intrucciones A, B y C. Luego de ejecutar la instruccionC, se vuelve a evaluar la condición, si es verdadera vuelve a ingresar al bloque, y se repite hasta que la condición sea falsa, en ese caso continúa con la siguiente línea de código.

Diagrama de flujo ciclo Mientras

info Importante para Programadores

Dentro del bloque debo asegurarme de cambiar los parámetros de la condición, para que en algún momento salga del ciclo.

Notemos algo, puede que el ciclo nunca se ejecute, si la primera vez que evalúa la condición es falsa, nunca ingresa al bloque.

Por ejemplo para el caso de imprimir los números del 1 al 100, la condición podría ser que el número sea menor o igual a 100. Ahora ¿numero dondé arranca? hay que inicializarlo.

Incremento de contador en Java y Python

Cuando numero valga 100, incrementamos numero, y va a valer 101, así que al volver a evaluar no se cumple la condición y sale del ciclo de forma segura.

# Taller de Práctica: Ejercicio 1 (Conteo de Datos)

Análisis de datos con bucles

Vamos a tener 20 personas, un número fijo, que en programación puede definirse como una constante.

Para cada uno de estos 20, debemos pedir la edad; entonces una variable va a ser la edad (un número entero).

Algoritmo de filtrado de datos
  • Declaramos la constante PERSONAS que vale 20, y las variables edad, cantidadDeMayores y contador.
  • Inicializamos la variable cantidadDeMayores: al empezar hay cero mayores, la inicializamos en cero.
  • Armamos un ciclo PARA que vaya de 1 a PERSONAS, gestionando las 20 edades.

# Taller de Práctica: Ejercicio 2 (Validación de Entradas)

Lógica de validación de caracteres

El algoritmo va a leer caracteres hasta que el carácter ingresado sea una vocal. Esto indica que vamos a necesitar una variable, podemos llamarla letra de tipo caracter (char).

Diagrama de flujo con entrada de datos
  • Variables: letra de tipo caracter, contador entero.
  • Cargamos el contador en cero, porque todavía no ingresó ninguna letra y leemos la primera entrada.
  • Iniciamos el ciclo: si se cumple la condición, o sea si letra no es vocal incrementamos el contador y volvemos a leer letra.

# Ejercicios de Práctica

Aquí tienes unos ejercicios resueltos para que pongas a prueba tus conocimientos en lógica algorítmica:

En el siguiente artículo veremos funciones, algo que nos permite dividir un problema complejo en problemas simples, fáciles de resolver.

Recursos utilizados