You are on page 1of 8

PRCTICA

INSTRUCCIONES DE REPETICIN

Objetivos
a) El alumno conocer las tres formas bsicas existentes en C para realizar
iteraciones y aprender a manejar las sentencias while, do-while y for.
b) El alumno comprender la importancia que tienen estas instrucciones para resolver
problemas de programacin y podr distinguir cul instruccin es ms apropiada
para enfrentar un problema especfico.
Al final de esta prctica el alumno podr:
1. Realizar exitosamente programas que involucren procesos que requieran
iteraciones.
Antecedentes
1. Conocer y manejar los diversos tipos de datos.
2. Saber realizar un programa bsico en C.
Introduccin
Un nmero considerable de programas requieren efectuar iteraciones o ciclos que
permiten repetir un bloque de instrucciones mientras se conserve verdadera alguna
condicin de continuacin. Las instrucciones que se repiten forman lo que se llama el
cuerpo del ciclo.
Para elaborar un bloque de cdigo iterativo se requieren cuatro elementos, el
primero es una instruccin de repeticin que delimita la seccin repetitiva de cdigo y
controla su ejecucin. Existen tres formas de instruccin de repeticin que son permitidas
en la programacin en C, que son: while, for y do-while.
Cada una de estas instrucciones requieren de una condicin que debe evaluarse; esta
condicin es el segundo elemento necesario para construir las secciones repetitivas de
cdigo. Las condiciones vlidas son semejantes a las utilizadas en las instrucciones de
seleccin, donde el cdigo se ejecuta solamente si la condicin es verdadera.
El tercer elemento requerido es una expresin que establece inicialmente la
condicin y que debe colocarse antes de que sta sea evaluada por primera vez para
asegurar la correcta ejecucin del cdigo iterativo la primera vez que se evala.
Finalmente, dentro de la seccin de cdigo iterativo debe existir una instruccin que
permita que la condicin se vuelva falsa, esto es necesario para garantizar que en algn
momento la iteracin se detenga.

Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

Cada uno de los ciclos mencionados requiere adems de dos elementos bsicos de
programacin: un acumulador y un contador.
1. Contador: es una variable que permite incrementar y/o decrementar el ndice
durante el ciclo. Un contador puede ser declarado de tipo int, float, long, etc.
2. Acumulador: es una variable que permite almacenar resultados parciales durante el
ciclo.
En C se manejan dos tipos de repeticiones, la repeticin controlada por un contador
que se le conoce comnmente como repeticin definida, ya que antes de que inicie la
ejecucin del ciclo, el nmero de iteraciones es conocido. Y la repeticin controlada por un
centinela que se conoce a menudo como repeticin indefinida, debido a que el nmero de
iteraciones no es conocido.
Ciclo while
La forma general de escribir una sentencia while es la siguiente:
while (expresin)
{
secuencia de instrucciones
}
El funcionamiento de la sentencia while se explica a continuacin:
Mientras que la expresin tenga un valor verdadero, representado por un valor
numrico diferente de cero, se ejecutar repetidamente la secuencia de instrucciones,
evaluando en cada iteracin el valor de la expresin.
Si la expresin toma un valor falso, representado por un valor numrico igual a
cero, la ejecucin de la sentencia while finalizar.
Observar que la expresin asociada al while debe ir encerrada entre parntesis.
La secuencia de instrucciones inicia con una llave que abre {, y termina con una llave que
cierra }.
/* Ejemplo 1: Programa que ilustra el uso del bucle while. */
# include <stdio.h>
int main(void)
{
int contador;
Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

contador = 0;
while (contador < 6)
{
printf ("El valor de contador es %d\n", contador);
contador = contador + 1;
}
return 0;
}
Este programa empieza con un comentario y el punto de entrada main(), despus se
define una variable de tipo entero llamada contador dentro del cuerpo del programa. Esta
variable es inicializada en cero para despus entrar en el bucle while. A la palabra clave
while le sigue una expresin entre parntesis y luego una serie de enunciados encerrados
entre llaves.
Mientras la condicin sea verdadera, los enunciados entre llaves se ejecutarn
repetidamente. En este caso, debido a que la variable contador es incrementada en 1 cada
que los enunciados entre llaves son ejecutados, eventualmente se alcanzar el valor de 6.
En este punto los enunciados no se ejecutarn ms porque la variable contador ya no es
menor que 6, finalizando as el bucle.
El programa continuar entonces con los enunciados que siguen a las llaves. Es
importante notar que si la variable contador es inicializada con un valor mayor que 5, los
enunciados dentro de las llaves podran no ejecutarse, por lo que es posible tener un bucle
que jams se ejecute. Tambin obsrvese que si la variable no se incrementa dentro del
bucle, ste jams terminara y por ende tampoco el programa.
Ciclo do-while
La forma general de un ciclo do-while es la siguiente:
do
{
secuencia de instrucciones
}
while (expresin);
Los enunciados entre llaves se ejecutan iterativamente en tanto que la expresin
entre parntesis sea verdadera. Cuando la expresin es falsa, la ejecucin del bucle termina
y el control del programa pasa a los enunciados siguientes. Conviene notar que en el bucle
do-while debido a que la condicin verdadero-falso se hace al final del bucle, los
enunciados dentro de las llaves se ejecutan al menos una vez. Es importante observar la
Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

existencia de un punto y coma al finalizar la condicin impuesta despus de la palabra


clave while.
El siguiente ejemplo es una variacin del ciclo while, para este caso, el programa es
casi idntico al anterior, excepto que el bucle inicia con la palabra clave do seguida por una
serie de enunciados compuestos entre llaves, despus viene la palabra clave while y
finalmente la expresin de evaluacin entre parntesis.
/*Ejemplo 2: Programa que ilustra el uso del bucle do-while.*/
# include <stdio.h>
int main(void)
{
int i;
i = 0;
do
{
printf ( "El valor de i es ahora %d\n", i );
i = i + 1;
}
while (i < 5);
return 0;
}
Ciclo for
El bucle for consiste de la palabra clave for seguida de un conjunto de expresiones
entre parntesis. Estas expresiones se componen de tres campos, cada uno separado por un
punto y coma, as como se observa a continuacin:
for (valor inicial; expresin; incremento/decremento)
{
secuencia de instrucciones
}
Al igual que en los ciclos anteriores, la secuencia de instrucciones a iterar se
encuentran encerradas entre llaves lo que permite determinar dnde inicia y dnde termina
el ciclo.
/*Ejemplo 3. Programa que ilustra el uso del bucle for */
#include <stdio.h>
int main(void)
{
int indice;
Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

for(indice = 0 ; indice < 6 ; indice = indice + 1)


{
printf ( "El valor de indice es %d\n", indice);
}
return 0;
}
El primer campo contiene la expresin indice = 0 y se le llama campo de
inicializacin. Cualquier expresin en este campo se ejecuta antes del inicio del bucle. En
trminos generales se puede decir que no existe lmite en el contenido del primer campo, ya
que es posible contener varios enunciados separados por comas. El segundo campo, que en
este caso contiene la expresin indice<6 es la prueba que se hace al principio de cada ciclo
del bucle y puede ser cualquier expresin que resulte en un valor verdadero o falso. La
expresin del tercer campo se utiliza para incrementar el valor del ndice en una unidad
cada vez que se ejecute el cuerpo del for.
Es importante notar como el ejemplo anterior, proporciona los mismos resultados
que los dos primeros ejemplos.
Errores ms comunes que se pueden cometer al programar ciclos:
1. Colocar despus del parntesis del ciclo while o del ciclo for un punto y coma.
2. Olvidar encerrar entre llaves las sentencias que contiene el ciclo cuando se tiene
ms de una.
3. Olvidar declarar la variable que se utiliza dentro del ciclo.
4. Suposiciones errneas en los valores de las variables utilizadas dentro del ciclo.
5. Ciclos infinitos, donde no se controla bien la condicin de paro del ciclo.
6. Confusiones en el criterio de comparacin al momento de indicar la condicin
en el ciclo.
7. Suponer que el compilador asignar un valor de inicio a la variable utilizada
para controlar el ciclo.
8. Utilizar la misma variable para diferentes fines dentro de un mismo ciclo.
9. Intentar utilizar anidamientos muy complicados dentro de un ciclo, es mejor
hacer varios ciclos.
10. Usar mal las condiciones compuestas para controlar un ciclo.
Ejercicios propuestos
Nota: No olvidar realizar el algoritmo antes de elaborar el programa

Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

1. Desarrollar un programa que calcule el inters compuesto anual desde 1 a 30 aos.


El usuario debe introducir el capital invertido y la tasa de inters. La relacin
matemtica es la siguiente:
Y = A (1 + N )T
donde
Y = Inters compuesto anual.
A = El capital invertido.
N = La tasa de inters.
T = El nmero de aos.
2. Desarrollar un programa que eleve un nmero a cualquier potencia sin utilizar la
biblioteca math.h. El usuario debe introducir la base y la potencia.
3. Escribir un programa que reciba como dato de entrada un nmero, el cual ser el
que indique hasta qu nmero se desea calcular la serie de Fibonacci. La serie de
Fibonacci se calcula mediante la suma de 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 +
...
4. Escribir un programa que calcule y muestre los valores de un intervalo de
temperatura en grados Fahrenheit y grados Centgrados. El usuario seleccionar la
temperatura ms baja y ms alta as como el incremento de temperatura. La relacin
matemtica es
F = ( 9/5 ) C + 32
donde
F = Temperatura en grados Fahrenheit.
C = Temperatura en grados Centgrados.
5. Una compaa de agua est implantando un nuevo sistema de cobro. Para cada casa
realiza la siguiente consideracin para elaborar la factura:
Los primeros 50 litros son gratis.
Entre 50 y 200 litros se cobra el litro a 10 pesos.
A partir de 200 litros se cobra el litro a 30 pesos.
La cuota mnima es de 1000 pesos, es decir, si el dinero a pagar resulta menor de
1000 pesos, entonces el pago ser de 1000 pesos.
Realizar un programa que calcule el gasto de agua de una familia en un mes dada la
cantidad de litros gastada.
6. Escribir un programa que reciba un nmero entero y diga si ste es primo o no.
7. La siguiente historia es la del poderoso sultn que quera recompensar a un
estudiante que le haba prestado un gran servicio: cuando el sultn le pregunt la
recompensa que deseaba, ste le seal un tablero de ajedrez y solicit simplemente
1 grano de trigo por la primera casilla, 2 por la segunda, 4 por la tercera, 8 por la
siguiente, y as sucesivamente. El sultn, que no deba andar muy fuerte en
matemticas, qued sorprendido por la modestia de la peticin, porque estaba
dispuesto a otorgarle riquezas mucho mayores: al menos, eso pensaba l. Con base
en la historia anterior, realizar el programa que calcule el nmero total de granos de
trigo que corresponden a cada casilla y mostrar la cantidad total.
8. Realizar un programa que obtenga la siguiente numeracin y la siguiente posicin.
Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

1
232
34543
4567654
567898765
9. Realizar un programa que imprima los n primeros nmeros y sus respectivos
cuadrados.
10. Escribir un programa que calcule y muestre los valores que se obtienen al realizar
sen(x) en un intervalo de valores para x. El usuario deber introducir seleccionar el
valor inicial, el valor final, as como el incremento de la x.
11. Escribir un programa que calcule y muestre los valores que se obtienen al realizar
cos(x) en un intervalo de valores para x. El usuario deber introducir seleccionar el
valor inicial, el valor final, as como el incremento de la x.
12. Escribir un programa que calcule y muestre los valores que se obtienen al realizar
log(x) en un intervalo de valores para x. El usuario deber introducir seleccionar el
valor inicial, el valor final, as como el incremento de la x.
13. Escribir un programa que calcule y muestre los valores que se obtienen al realizar
ln(x) en un intervalo de valores para x. El usuario deber introducir seleccionar el
valor inicial, el valor final, as como el incremento de la x.
14. Escribir un programa que obtenga la siguiente numeracin y en la siguiente posicin.
1 6 15 20 15 6 1
1 5 10 10 5 1
1 4 6 4 1
1 3 3 1
1 2 1
1
15. Realizar un programa que calcule las potencias de la 2 a la 10 del nmero y la raz
cuadrada de dicha potencia.
16. Hacer un programa que calcule el factorial de un nmero mayor a cero.
17. Segn la frmula de Taylor, es posible expresar la funcin exponencial ex mediante
la siguiente serie:
x x2 x3 x4
ex = 1+ +
+
+
+ .....
1! 2! 3! 4!
Realizar un programa que permita calcularla.
18. Escribir un programa para calcular sen(x), cuyo desarrollo en serie es:
sen( x) = x

x3 x5 x7
+

+ .....
3! 5! 7!

Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca

PRCTICA
INSTRUCCIONES DE REPETICIN

19. Realizar un programa que pida al usuario un carcter y con ste dibujar un marco en
la pantalla.
20. Elaborar un programa que permita sumar del 1 hasta el 100.
21. Plantear un programa que sume y multiplique los n primeros nmeros enteros.
(OSURIHVRUSRGUiGLVHxDUVXVSURSLRVHMHUFLFLRVVLHPSUH\FXDQGRFXEUDSRUFRPSOHWRHOREMHWLYRGH
ODSUiFWLFD

Elaborada por:
M.C. Vicente Fuentes Gea vfg@servidor.unam.mx
M.C. Cintia Quezada Reyes cintia@fi-b.unam.mx
Ing. Alejandra Vargas E. De los M. alejandrav@correo.unam.mx
Con la colaboracin de:
Ing. Aurelio Snchez Vaca