Logo DIE

Estructuras de Repetición

Unidad de Apoyo para el Aprendizaje

Iniciar

Introducción


Las estructuras de repetición son también llamadas estructuras cíclicas, iterativas o de bucles. Estas estructuras permiten ejecutar un conjunto de instrucciones de manera repetida (o cíclica), mientras que una expresión lógica evalúa que se cumpla, es decir, que sea verdadera.

En lenguaje C existen tres estructuras de repetición: while, do-while y for. Las estructuras while y do-while son estructuras repetitivas de propósito general. La estructura de repetición for se suele utilizar cuando se conoce de antemano el número de elementos que se desea recorrer (o iterar).



Elaborar programas en C para la resolución de problemas básicos, que incluyan las estructuras de repetición y la directiva define.

Estructura de control repetitiva while


La estructura repetitiva (o iterativa) while se utiliza para generar ciclos, en los cuales un grupo de instrucciones se ejecuta de forma repetida, hasta que se satisface alguna condición.

La estructura while primero valida la expresión lógica.

Si ésta se cumple (es verdadera) procede a ejecutar el bloque de instrucciones de la estructura, el cual está delimitado por las llaves { y }.

Si la condición no se cumple se continúa el flujo normal del programa sin ejecutar el bloque de la estructura, por lo que éste se puede ejecutar de 0 a N veces, es decir, puede que nunca se ejecute.

Su sintaxis es la siguiente:

Iniciar

while (expresion_logica) {

    // Bloque de codigo a repetir

    // mientras que la expresion

    // logica sea verdadera.

}

Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden omitir las llaves.

Código (estructura de repetición while)



Esquema


Nota: Es muy importante que dentro del bloque de código a repetir se incluya algún elemento que altere el valor de expresión lógica, proporcionando entonces la condición de salida del ciclo; de no ser así, puede generarse un ciclo infinito (que nunca termine de ejecutarse).



Código (estructura de repetición infinita)



Esquema




Estructura de control repetitiva do-while


Cuando se construye un ciclo utilizando la instrucción while, la comprobación para la continuación del ciclo se realiza al comienzo de cada ciclo o iteración; sin embargo, a veces es deseable disponer de un ciclo en el que se realice la comprobación al final de cada iteración.



Esquema


Su sintaxis es la siguiente:

Iniciar

do {

     /*

     Bloque de codigo que se ejecuta por lo menos una vez y se repite mientras la expresión logica sea verdadera.

      */

} while (expresion_logica);

Si el bloque de código a repetir consta de una sola sentencia, entonces se pueden omitir las llaves. Esta estructura de control siempre termina con el signo de puntuación ';'.



Nota: Al igual que en la estructura while, se debe incluir algún elemento que altere el valor de expresión para que el ciclo tenga un final.



Código (estructura de repetición do-while)



Esquema



Para la mayoría de las aplicaciones es más natural comprobar la condición al comienzo del ciclo que al final. Por esta razón, la instrucción do-while se utiliza con menor frecuencia que la instrucción while.

Estructura de control de repetición for


Lenguaje C posee la estructura de repetición for, la cual permite realizar repeticiones cuando se conoce el número de elementos que se quiere recorrer.

La instrucción for es quizá la más frecuentemente usada de las instrucciones para crear ciclos en C. Esta instrucción incluye una expresión que especifica el valor inicial de un índice, otra expresión que determina si se continúa o no el ciclo y una tercera expresión que permite que el índice se modifique al final de cada iteración o ciclo.

La sintaxis que generalmente se usa es la siguiente:

Iniciar

for (inicializacion ; expresion_logica ; operaciones_por_iteracion) {

      /*

          Bloque de codigo

          a ejecutar

      */

}



La estructura for ejecuta tres acciones básicas antes o después de ejecutar el bloque de código:



Esquema


Nota: Se pueden omitir las expresiones primera y tercera si se inicializa y/o altera el índice de alguna otra forma; sin embargo, si se omite la segunda expresión, se asumirá que ésta tiene un valor permanente de 1 (cierta); por lo tanto, el ciclo continuará ejecutándose repetidamente de forma indefinida, a menos que se finalice mediante algún otro mecanismo.



Código (estructura de repetición for)



Esquema

Anidación de estructuras iterativas


Los ciclos, al igual que las instrucciones if/else, se pueden anidar uno dentro de otro. Los ciclos interno y externo no necesitan ser generados por el mismo tipo de estructura de control; sin embargo, es esencial que un ciclo se encuentre completamente incluido dentro del otro; además, cada ciclo debe ser controlado por un índice diferente.



Código (anidación de estructuras iterativas)



Esquema



Las estructuras de control anidadas pueden involucrar tanto ciclos como estructuras de selección. De este modo, un ciclo puede estar incluido dentro de una instrucción if-else, y una instrucción switch puede estar incluida en un ciclo, etc. Las estructuras anidadas pueden ser todo lo complejas que se requiera, adaptándose a la lógica del programa.



Código (anidación de estructuras iterativas y selectivas)



Esquema




Define


Las líneas de código que empiezan con # son directivas del preprocesador, el cual se encarga de realizar modificaciones en el texto del código fuente, como reemplazar un símbolo definido con #define por un parámetro o texto, o incluir un archivo en otro archivo con #include.

define permite definir constantes o literales; se les llama también constantes simbólicas.

Su sintaxis es la siguiente:

#define <nombre> <valor>

Al definir la constante simbólica con #define, se emplea un nombre y un valor. Cuando se compila el programa, cada aparición del nombre de la constante simbólica es reemplazada por su correspondiente valor. El valor puede ser numérico o puede ser texto. Esta definición se debe hacer al inicio del código al nivel de los #include.



Código (define)

Iniciar

#include<stdio.h>

#define PI 3.141592

main(){

     printf(“El valor de pi es : %f\n”, PI);

}



Estas constantes simbólicas pueden ser de gran utilidad en las estructuras de repetición, ya que para modificar el número de iteraciones sólo es necesario cambiar el valor de la constante simbólica.



Código (define con estructuras de repetición)



Esquema

Romper o terminar ciclos


Algunas veces es conveniente tener la posibilidad de abandonar un ciclo.

La instrucción break…



Esquema


Código (break)



Esquema


Cuando se compila el programa, MAX se sustituye por 5.



La instrucción continue provoca que inicie la siguiente iteración del ciclo de repetición que la contiene; es decir, se usa para “saltarse” el resto de la iteración actual a través de un ciclo.

El ciclo no termina cuando se encuentra una instrucción continue; sencillamente no se ejecutan las instrucciones que se encuentran a continuación en el mismo y se salta directamente a la siguiente iteración del ciclo. La instrucción continue se puede incluir dentro de una instrucción while, do-while o for.



Código (continue)



Esquema
ícono

Actividad 1. Juego de adivinar

Vamos a poner a prueba los conceptos aprendidos sobre estructuras de repetición. Para tal efecto, realizarás un programa que adivinará un número secreto entre 1 y 100. El número secreto será generado por la computadora y el usuario tratará de adivinarlo en no más de 10 intentos; además, debe dar la oportunidad de volver a jugar con un nuevo número secreto, sin que tenga que ser nuevamente ejecutado todo el programa.



ícono

Actividad 2. El alfabeto al revés.

Ahora utilizaremos las estructuras iterativas para evitar repetir muchas líneas de código similares; en este caso, realizarás un programa que imprima las letras del alfabeto en orden inverso (de la Z a la A).

Tips: El lenguaje C reconoce los caracteres del alfabeto por su código ASCII.

Se declara la variable letra, de tipo carácter, que inicia con el valor de Z. La condición indica que será válida mientras letra sea un valor mayor o igual que A, y se disminuye de uno en uno.



ícono

Autoevaluación. Estructuras de repetición

Para ejecutar bloques de código repetidamente, los lenguajes de programación cuentan con estructuras cíclicas (o bucles). Es importante, conocer su funcionamiento y uso adecuado para evitar crear programas inconsistentes.


Fuentes de información

Básicas

Kernighan, B., Ritchie, D. (1991). El lenguaje de programación C. Ciudad de México: Pearson Educación.

Documentos electrónicos

Solano, J., García, E., Sandoval, L., Nakayama, A., Arteaga, I. y Castañeda, M. (2016). Manual de prácticas del laboratorio de Fundamentos de programación. Facultad de Ingeniería. Consultado de http://lcp02.fi-b.unam.mx



Cómo citar


Arteaga, T. I. y Nakayama, M. A. (2018). Estructuras de repetición. Unidades de Apoyo para el Aprendizaje. CUAED/Facultad de Ingeniería-UNAM. Consultado el (fecha) de (vínculo)