Este documento describe las tres estructuras de repetición en C: while, for y do-while. Explica la sintaxis, funcionamiento y diferencias entre cada una. También cubre temas como ciclos anidados, instrucciones especiales como break y continue, y ejemplos de su uso.
4. Introducción
Introducción
En C existen tres estructuras de control
repetitivas:
Pseudocódigo Lenguaje C
Mientras while
Para for
Haga-mientras do-while
5. Ciclos en C
Un ciclo (bucle) es una estructura que permite la
repetición de una o mas instrucciones un
determinado numero de veces.
http://www.youtube.com/watch?v=aeg0mLp9IB0
6. Ciclos en C
Expresión lógica que controla la
secuencia de repetición.
(Condición) Normalmente, se evalúa antes de
la ejecución del cuerpo del bucle.
Conjunto de instrucciones
(asociadas al problema) que se
Cuerpo ejecutan dentro del bucle:
• Estructuras condicionales.
• Instrucciones I/O.
• Otros bucles.
• Instrucciones de asignación.
Fin
• Funciones.
7. Principios a considerar cuando se usan
bucles c
Es importante analizar
los requisitos del bucle,
pues se debe
determinar su
Algunas preguntas de ¿Qué principios
inicialización, condición
utilidad: considerar
y actualización.
• ¿Qué es lo que debe cuando se
contener el cuerpo del diseñan bucles?
bucle?
• Cuantas veces se itera
el bucle.
8. Introducción
Introducción
• El cuerpo del ciclo.
1
• Las sentencias de inicialización.
2
• Las condiciones para la terminación
3 del bucle.
9. Introducción
Introducción
Las estructuras ciclicas se terminan
cuando:
1. La condición de evalución se vuelve falsa
2. Cuando se ejecuta la instrucción break o
return
11. SENTENCIA WHILE
Sentencia while
Realiza un conjunto de operaciones mientras una
condición se esté cumpliendo, o mientras una
expresión sea verdadera
• Se evalúa la condición-bucle
1
• Si condición-bucle es verdadera :
• Se ejecuta el cuerpo del bucle
2 • Vuelve el control al paso 1.
• Si condición-bucle es falsa :
3 • Se termina el ciclo.
• Condiciones:
* • Cuantitativas y Caulitativas
12. SENTENCIA WHILE
Sintaxis
Pseudocódigo
Mientras (condición) haga
Instrucciones
fin_mientras
Lenguaje C
while (condición){
Instrucciones;
}
13. SENTENCIA WHILE
Sentencia while
(Condición)
Variable de control: Variable que
representa la condición del bucle ya
Cuerpo que su valor determina si el bucle se
repite o no. Esta debe ser:
• Inicializada.
• Comprobada.
Fin
• Actualizada.
14. SENTENCIA WHILE
Sentencia while
contador = 0; Inicialización
while (contador < n) {
(Condición) Comprobación
<Instrucciones>;
...Cuerpo
contador = contador+1; Actualización
}
Fin
16. SENTENCIA WHILE
Ejemplo1
Realizar un programa que cuente
hasta N
i = 0;
while (i <= N) {
printf("El valor del conteo es: %dn", i);
i++;
}
17. SENTENCIA WHILE
Ejemplo2
Realizar un programa que pida que se
ingresen las notas de los estudiantes, y que
cuando halla una nota menor que 3, muestre
un mensaje que diga “El estudiante perdió”. El
salir = 0;
programa únicamente debe finalizar cuando
while (salir!=1) {
el usuario lo desee. del estudiante:");
printf("Ingrese la nota
scanf("%f",¬a);
if (nota < MIN_NOTA){
printf("El estudiante perdion");
}
printf("Ingrese 0 para continuar, 1 para salir: ");
scanf("%d",&salir);
}
19. SENTENCIA FOR
Sentencia for
Realiza un conjunto de operaciones un
determinado número de veces
• Se inicializa la variable de control y se
1 evalúa la condición-bucle
• Si condición es verdadera :
• Se ejecuta el cuerpo del bucle
2 • Se incrementa la variable y se evalúa la condición
• Si condición-bucle es falsa :
3 • Se termina el ciclo.
• Condiciones:
* • Cuantitativas
20. SENTENCIA FOR
Sentencia for
Recomendado para:
• Ciclos que son controlados por
1 contador
• Ejecutar un conjunto de instrucciones un
2 determinado número de veces
21. SENTENCIA WHILE
Sintaxis
Pseudocódigo
para VC desde LI hasta LF con INC
<Instrucciones>
fin_para
Lenguaje C
for( VC; condicionBucle; INC o DEC)
{
instrucciones;
}
22. SENTENCIA FOR
Expre1: Se le da el
Sintaxis
valor inicial a la Expre2: Condición, que
variable de control contiene una expresión Expre3: Modificación
del bucle. Se pueden lógica, mientras sea vble, como cambia la
inicializar una o verdadera se realiza el variable de control
varias variables. bucle
for(VC; condicionBucle; INC o DEC)
{
instrucciones;
}
23. SENTENCIA FOR
Sentencia for
Comprobación
Inicialización Actualización
for(i = 1 ; i < n; i++) {
(Condición)
<Instrucciones>;
...Cuerpo
}
Fin
24. SENTENCIA FOR
Sintaxis
La(s) variable de control se puede incrementar o
decrementar no solo en valores tipo int, también es
posible realizar tales operaciones usando valores tipo
float o double permitiendo el incremento o decremento
en cantidades decimales.
double p; float n;
for(p=0.75; p<=5; p+= 0.25) for(n=1; n>= 0; n-=0.1)
{ {
printf(“p = %lfn”, p); printf(“n = %fn”, n);
} }
25. SENTENCIA FOR
Ejemplo1
Realice programa que muestre los N
primeros factoriales
fact=1;
for (i = 1; i <= N; i++) {
fact=fact*i;
printf("factorial de %d: %dn",i,fact);
}
for (i = 1,fact=1; i <= N; i++) {
fact=fact*i;
printf("factorial de %d: %dn",i,fact);
}
26. SENTENCIA FOR
Ejemplo2
Realice programa que sume los N primeros
naturales pares.
suma=0;
for (i = 1; i <= N; i++) {
if(i%2==0){
suma+=i;
}
}
printf("La suma es: %dn",suma);
27. SENTENCIA FOR
Ejemplo3
Realice programa que muestre los 10
primeros impares naturales, en orden
descendente.
for (i = MAX_NUM; i >= 0; i--) {
if(i%2 != 0){
printf("numero par: %dn",i);
}
}
28. SENTENCIA DO-WHILE
Comparación while, for
while
InicializaciónVC; for
while (condición) for( VC; condición; INC)
{ {
InstruccionesX; instrucciones;
INC; }
}
29. SENTENCIA WHILE Y FOR
Recomendaciones
While: El uso más frecuente es cuando la
repetición no está controlada por contador;
la condición precede a cada repetición del
bucle.
For: Bucle de conteo, cuando el número de
repeticiones se conoce por anticipado y
puede ser controlado por un contador; la
evaluación de la condición precede a la
ejecución del cuerpo del bucle.
30. SENTENCIA WHILE Y FOR
Recomendaciones
En el ciclo for no es recomendable modificar
el valor de cualquiera de las variables de la
condición del bucle dentro del cuerpo del
bucle, ya que se pueden producir resultados
imprevistos.
int i,limite = 11; for (i = 0; i <= limite; i++)
for (i = 0; i <= limite; i++) {
{ print f ("%dn",i);
printf ( "%dn" , i ) ; i--;
Iimite++ ; }
}
31. SENTENCIA WHILE Y FOR
Bucles infinitos
Aplicaciones en los que el número de repeticiones
no se pueden determinar por anticipado. Interesa
que comiencen pero eventualmente que no
terminen.
while(1) for ( ; ; )
{ {
Instrucciones; Instrucciones;
if (condiciónTerminación) if(condiciónTerminación)
break; break;
} }
33. SENTENCIA DO-WHILE
Sentencia do-while
Bucle condicional que se ejecuta al menos
una vez.
• Se ejecuta el cuerpo del bucle.
1
• Se evalúa la condicion.
• Si se cumple la condición, entonces se repite la
2 ejecución de sentencia.
• Se evalúa la condicion.
• Si no se cumple la condición la estructura termina y da
3 paso a la continuación del programa
• Condiciones:
* • Cuantitativas y Caulitativas
34. SENTENCIA DO-WHILE
Sentencia do-while
Cuerpo del bucle
EJECUTAR
EVALUAR
CONDICIÓN
verdadero
Falso
Fin del ciclo
36. SENTENCIA DO-WHILE
Comparación while, do-while
while do-while
Falso
CONDICIÓN Cuerpo del
bucle
verdadero
verdadero
Cuerpo del
CONDICIÓN
bucle
Falso
37. SENTENCIA DO-WHILE
Comparación while, do-while
while do-while
while (expresión) { do {
InstruccionesX; InstruccionesX;
} } while (expresión);
38. SENTENCIA DO-WHILE
Ejemplo
Programa que imprime un mensaje
“continua programa” hasta que se le ingrese
un carácter de terminación 0. (Realicelo con
while, luego con do-while y compare!!)
do{
printf("continuar programan");
printf("Ingrese 0 para salir: ");
scanf("%d",&salir);
}while (salir!=CAR_FIN);
39. SENTENCIA WHILE Y FOR
Recomendaciones
do -while: El uso más frecuente es cuando
la repetición no está controlada por
contador; el cuerpo del ciclo precede a la
condición.
41. INTRUCCIONES ESPECIALES
Instrucción break
La sentencia break es utilizada como
método de terminación TEMPRANA del
bucle a la que pertenece.
Si mientras se ejecuta el cuerpo del
bucle, se encuentra con la instrucción
break, se terminará inmediatamente el
ciclo.
43. INTRUCCIONES ESPECIALES
Ejemplo
Realizar un programa que pida que se ingresen
notas de N estudiantes, y que cuando halla una
nota mayo que 3, muestre un mensaje que diga
“Hay alguien que ganó”, y termine el programa
inmediatamente.
44. INTRUCCIONES ESPECIALES
Instrucción continue
La sentencia continue hace que la ejecución de
un bucle vuelva inmediatamente a la cabecera
del bucle.
Programa que muestra conteo hasta 10, se
muestra el siguiente valor del conteo solo si se
le ha ingresado el número 0
45. INTRUCCIONES ESPECIALES
#include <stdio.h>
#define MAX_CONT 10
Instrucción continue
#define CAR_ESPECIAL 0
int main(void)
{ i=i+1
int i, equiv=0; i=1+1
int mostrar; 11<=10 ?
2<=10
1<=10 …i=2
VC CONDICIÓN INC
for (i = 1; i <= MAX_CONT; i++) {
msj printf("Ingrese 0 si quiere ver el conteo:");
read scanf("%d", &mostrar);
No Se ingresó 0 if (mostrar!= CAR_ESPECIAL){
se
EJECUTA
Volver al ciclo continue;
}
msj conteo=2 printf("El valor del conteo es: %dn", i);
Fin del ciclo }
return 0;
}
47. Ciclos Anidados
Ciclos anidados
Se pueden anidar ciclos repetitivos.
Útil para aplicaciones de matrices de mas de
una dimensión.
for( i=0; i<LIM1; i++)
{
for( j=0; j<LIM2; j++)
{
Instruciones1;
}
}
48. Ciclos Anidados
Ejemplo1
Realice un programa que muestre las
primeras 5 potencias(Utilizando
multiplicaciones) de los primeros 7
naturales.
49. Ciclos Anidados
Ejercicio
Realice un programa que muestre la siguiente
secuencia de números:
1
12
123
1234
12345
…
El usuario debe ingresar cual es el ultimo numero
que se debe mostrar en un renglón.
50. Bibliografía
• Joyanes Aguilar, Luis. PROGRAMACIÓN EN C.
Metodología, algoritmos y estructura de
datos Capitulo3.
• H.M. Deitel, P.J. Deitel. Como programar en C
y C++
• Google