Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2.3. - Estructuras Iterativas
2.3. - Estructuras Iterativas
Estructuras Iterativas
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 95 Estructuras Iterativas
1. Introduccin .......................................................................................... 97
2. Objetivos .................................................................................................... 98
1. In troduccin
Despus de ver en la seccin anterior las estructuras condicionales if y switch, a continuacin examina -
remos otros tipos de estructuras. Median te las estructu ras con dicionales som os capaces de elegir las
expr esion es. Pero esto no suele ser suficien te. En ocasion es se debe repetir la ejecucin de algunas expre- sion
es mien tras un a de las condicion es siga sien do verdadera. En esta seccin apr en der emos cm o se
lleva a cabo la ejecucin iterativa de las expresiones en funcin del valor de las condiciones de control.
El lenguaje C ofrece fundam entalmente las siguientes estructuras de control iterativas: las senten cias for,
while y do while.
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 98 Estructuras Iterativas
2. Objetivos
El objetivo de este captulo es estudiar el uso de las sentencias de control iterativas. Como consecuencia deber em
os ser capaces de escribir n uestros prim eros programas utilizan do este tipo de sentencias. En concreto estas son
las sentencias que debemos aprender a utilizar:
Sentencia for
Sentencia while
Sentencia do while
Sentencias iterativas anidadas
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 99 Estructuras Iterativas
A menudo conocemos de anteman o cuntas veces se deben repetir durante la ejecucin de un pr ograma
algunas expresion es, o si deben repetirse mientras el valor de una expresin cum pla una det er m in ada
con dicin . En est e caso se utiliza la estructura de control for . En esta co m pleja estru ctura iterativa se
encuentran los siguientes elementos:
Expresin inicial
Expresin condicional
Expresin bucle
Expresiones que vamos a ejecutar
Cuando vamos a ejecutar solamente una expresin las llaves no son im prescindibles. De todas formas se
recomienda utilizarlas siem pre para evitar errores difcilmente corregibles.
2. Valorar la expresin condicional. De resultar falsa, pasar a la sentencia siguiente del pr ogram a
(salir del bucle).
3. Si la expresin condicional es verdadera se llevan a cabo las expresiones del cuerpo de la expr e-
sin.
En la figura 1 se presenta un diagram a don de se m uestra de forma grfica el fun cion amiento de esta estructura
de control.
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 100 Estructuras Iterativas
Valorar expresin
inicial
NO
Expr. cond.?
Expresin bucle
actualizar
SI
Expresiones
1. Ejem plo
En este ejem plo se m uestra el fun cionam ien to de un bucle for sim ple. El objetivo de esta estructura de
control es visualizar 10 veces un mensaje.
En este bucle for se utiliza la variable cont para contar cuntas veces hemos visualizado el mensaje. Toma
el valor inicial 1 y despus de confirmar la condicin increm enta su valor. Mientras la condicin sea ver-
dadera se visualizar el m en saje que la fun cin printf define. Por lo t an to en la pan talla veram os lo
siguiente:
2. Ejem plo
Escribir un programa que im prime un nmero y el cuadrado que le cor responde para todos los nmeros
com prendidos entre uno y un lmite predefinido.
#include <stdio>
#define LIMITE 10
main ()
{
int n = 0;
En los ejem plos que vien en a continuacin se m uestran diferen tes usos de la estructura de control for.
b) Utilizando la estructura de control for para contar del modo que deseemos:
10
for (num = 10; num < 60; num += 10) 20
{ 30
printf (%d \ n, num); 40
50
}
Dentr o de la estructura de control for nos es posible utilizar ms de una expresin inicial y tam-
bin m s de u n a expresin bucle. En este ejem plo se m uestra m ed ian te un a tabla el valo r cor
respondien te al peso de cada producto. El peso inicial son 5 gram os y el valor 20. Luego a causa del
aumento de 5 gramos el precio aumenta en 12.
#include <stdio.h>
Gramos Valor
#define UNO 20 5 20
#define OTRO 12 10 32
15 44
main () 20 56
{ 25 68
30 80
int gramos, valor; 35 92
40 104
45 116
printf ( Gramos Valor \ n); 50 128
for (gramos = 5, valor = UNO; 55 140
60 152
gramos <= 60;
gramos += 5, valor += OTRO)
{
printf (%5d %7d \ n, gramos, valor);
}
}
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 103 Estructuras Iterativas
Podemos decir que se t rata de un a de las estructuras iterativas ms gen erales. Mien tras la con dicin escrita
den tro de la estructura de co nt rol sea cierta se ejecutan las expresion es defin idas dent ro del cuerpo del bucle.
Est formada por los siguientes elementos:
Expresin condicional
Expresiones
y su formato es el siguiente:
Valorar expresin
inicial
NO
Condicin?
SI
Expresiones
1. Se evala la expresin con dicional. De ser cierta se ejecutan las expresiones de la estructura y
nuevamente pasamos a evaluar la expresin condicional.
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 104 Estructuras Iterativas
2. De ser falsa la expresin condicional se termina la ejecucin del bucle y se pasa a las siguientes
instrucciones del programa.
Ejem plo:
Com parndola con la estructura de control for para salir del bucle while la expresin con dicion al se debe
cam b iar d en tro del bu cle. De o tro m o do entraram os en un b ucle infin it o com o podem o s ver en el
siguiente ejem plo:
num = 1;
while (num <= 100)
{
printf (suerte con el bucle while \ n);
}
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 105 Estructuras Iterativas
Tal y como hemos podido ver en la estructura while las expresiones del cuerpo tan solo se ejecutan si la
expr esin condicional es cierta. Como veremos ahora utilizando la estructura do while , las expresiones del
cuerpo se ejecutarn por lo menos una vez, porque la expresin condicional se haya en la salida del bucle.
Expresiones
Expresin condicional
y su formato es el siguiente:
do
{
expresiones; Cond
}
while (expresin condicional); Esta
SI
estructura de control funciona as:
Expresiones
NO
icin?
A continuacin se evala la expresin condicional y de ser cierta se vuelven a ejecutar las expr e-
siones. De ser falsa se pasa a la siguiente sentencia del programa.
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 106 Estructuras Iterativas
Ejem plo:
num = 1;
do
{
printf (buena suerte con el bucle do while \ n);
num++;
} buena suerte con el bucle while
buena suerte con el bucle while
while (num <= 10); buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
buena suerte con el bucle while
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 107 Estructuras Iterativas
Tal y como hemos podido observar las estructuras de control iterativas se utilizan sobre todo para crear
bucles. En esos bucles se repiten unas cuantas veces unas expresiones, generalmente en funcin del valor de
una condicin. Dentro de un bucle pueden existir otros bucles y en estos casos se denominan bucles
anidados. En el siguiente ejem plo se puede observar un bucle anidado:
En el siguiente ejem plo se m uestran dos estructuras de control iterativas an idadas. Imaginemos que que- remos
dibujar el tringulo que viene a continuacin mediante el carcter *.
**
***
****
*****
******
*******
********
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 108 Estructuras Iterativas
El programa preguntar cuantos asteriscos hay en la base y tomando ese dato dibujar la imagen.
#include <stdio.h>
Hem os visto en an teriores secciones las estructuras de control m s usadas en el lenguaje C: if , if-else ,
switch , for , while y do while . Hay otras estructuras de control que deben utilizarse junto a estas tan slo
en excepciones: break , continue y goto . De estas tres tan slo examin arem os las dos primeras. El
uso de la tercera est absolutamente prohibido puesto que va en contra de la buen a prctica de pr ogra -
macin. Estas estructuras de control no son m uy adecuadas desde el punto de vista de la programacin
estructurada y si es posible no deben ser utilizadas.
7.1. brea k
En ocasiones es conveniente salir del bucle sin ten er en cuenta la expresin que lo controla (la expr esin
condicional) si es que ha ocurrido una excepcin. Para ello se utiliza principalmente la sentencia break .
Por otra parte, ya hemos visto la im portancia que tiene en la estructura de control switch . Por ejem plo:
Como puede fcilmente se puede observar podemos escribir esta parte del programa de otra manera y sin
utilizar la sentencia break .
En algunos casos, cuando el cuerpo de las estructuras iterativas resulta com plejo, puede suceder que no sea
necesario ejecutar una parte del cuerpo a pesar de querer seguir dentro del bucle. Para ello se utiliza la
sentencia continue. Por ejem plo:
En este caso lo que h ace continue es no tomar en cuen ta los puntos. Tam bin aqu se puede escribir
fcilmente el mismo programa sin utilizar continue .
8. Bibliografa
KERNIGHAN, BW., RITCHIE D.M. The C Programming Language. Ed. Prentice Hall.
WAITE, M., P RATA, S., M ARTIN, D. Program acin en C. Introduccin y Conceptos Avanzados. Ed. An aya
Multimedia.
9. Ejercicios propuestos
2. Se quiere programar el juego del cdigo. Para ello se definir un a constante de dos dgitos en el pr
ogram a y el jugador (el usuario del program a) ten dr que adivinarlo. Ten dr com o m xim o 10
oportunidades y el ordenador le informar en cada jugada de cuantas le quedan.
Si el jugador adivina el nmero, el ordenador felicitar al jugador antes de finalizar el programa y le pondr
una nota.
Si el jugador no adivina el cdigo en la dcima oportunidad, el programa terminar con una invita -
cin a jugar de nuevo.
N / E i + Ei
Ei+1 =
2
4. Este program a leer una cadena de caracteres in troducida median te teclado (carcter a carcter), y nos
dir cuantos espacios vacos tenemos y si hemos introducido letras. El final de la cadena ser un
carcter elegido anteriormente.
Universidad del Pas Vasco / Euskal Herriko Unibertsitatea 113 Estructuras Iterativas
N
Sii
i=1
Donde N es un n mero introducido mediante el teclado. Utilizar las instrucciones FOR, DO-WHILE y
WHILE.
6. Escribir un programa que visualiza en pantalla la tabla de caracteres, partiendo del carcter que posee el
cdigo 33.
En cada lnea se visualizarn 8 caracteres y a la derecha de cada uno de ellos el cdigo ASCII cor res-
pondiente (en total 28 lneas).
columnas 7 10 17 20 27 30
lnea 1 33 ! 34 35 #
lnea 2 41 ) 42 * 43 +