Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Secretaria Acadmica
Direccin de Educacin Superior
ESIME Culhuacan
Sentencias de iteracin
Prctica 9
Alumno:
Grupo:
Fecha:
Objetivo
El alumno generar programas que incluyan estructuras de iteracin simples y anidadas en lenguaje C.
Material y Equipo
Computadora, Compilador C, unidad de almacenamiento (USB).
Introduccin terica
Una de las caractersticas de las computadoras que aumentan considerablemente su potencia es su capacidad para ejecutar
una tarea muchas veces con gran velocidad, precisin y fiabilidad. Las tareas repetitivas es algo que los humanos
encontramos difciles y tediosas de realizar. En esta prctica se estudian las estructuras de control iterativas o repetitivas que
realizan la iteracin de acciones. C soporta tres tipos de estructuras de control: los bucles while, for y do-while. Estas
estructuras de control o sentencias repetitivas controlan el nmero de veces que una sentencia o listas de sentencias se
ejecutan.
La sentencia while
Un bucle (ciclo) es cualquier construccin de programa que repite una sentencia o secuencia de sentencias un nmero de
veces. La sentencia (o grupo de sentencias) que se repiten en un bloque se denomina cuerpo del bucle y cada repeticin del
cuerpo del bucle se llama iteracin del bucle. Las dos principales cuestiones de diseo en la construccin del bucle son: Cul es
el cuerpo del bucle? Cuntas veces se iterar el cuerpo del bucle?
Un bucle while tienen una condicin del bucle (una expresin lgica) que controla la secuencia de repeticin. La posicin de
esta condicin del bucle es delante del cuerpo del bucle y significa que un bucle while es un bucle pretest de modo que cuando
se ejecuta el mismo, se evala la condicin antes de que se ejecute el cuerpo del bucle.
condicin
Falsa
Verdadera
accin.1
Fig. 9.1 Diagrama de flujo de la sentencia while
Sintaxis
while(condicin)
{
accin 1;
accin 2;
.
accin n;
}
El comportamiento o el funcionamiento de una sentencia while es:
1. Se evala la condicin.
2. Si condicin es verdadera:
a) La accin especificada, declarada en el cuerpo del bucle, se ejecuta.
b) Vuelve el control al paso 1.
3. En caso contrario: el control se transfiere a la sentencia siguiente.
Las sentencias del cuerpo del bucle se repiten while que la expresin lgica (condicin) sea verdadera. Cuando se evala la
expresin lgica y resulta falsa, se termina y se sale del bucle y se ejecuta la siguiente sentencia del programa despus de la
sentencia while.
Ejemplo:
/*Ejemplo 9.1*/
#include <stdio.h>
Hola mundo!!!
#include <conio.h>
void main()
{
int i;
i = 1;
while(i < = 10)
{
printf(Hola mundo!!!\n);
i++;
}
getch();
}
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
/*Ejemplo 9.2*/
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n;
printf(Cuantas veces deseas imprimir: );
scanf(%d, &n);
i = 1;
while(i < = n)
{
printf( %d. Hola mundo!!!\n, i);
i++;
}
getch();
}
/*Ejemplo 9.3*/
#include <stdio.h>
#include <conio.h>
void main()
{
int alimentos, cuenta = 0, i;
printf(Cuantos alimentos ha comido hoy? );
scanf(%d, &alimentos);
printf(Teclea las caloras de cada uno de tus alimentos\n);
i = 1;
while(i < = n)
{
printf(Alimentos %d: ,i);
scanf(%d,&cal);
cuenta += cal;
i++;
}
printf(Las caloras totales consumidas hoy son: %d, cuenta);
}
Cuntos alimentos ha comido hoy? 8
Teclea las caloras de cada uno de tus alimentos
Alimento 1: 500
Alimento 2: 50
Alimento 3: 1400
Alimento 4: 700
Alimento 5: 10
Alimento 6: 5
Alimento 7: 250
Alimento 8: 100
Las caloras totales consumidas hoy son: 3015
La sentencia for
Adems del bucle while, C proporciona otros dos tipos de bucle: for y do/while. El bucle for es el ms adecuado para
implementar bucles controlados por contador que son bucles en los que un grupo de sentencias se ejecutan una vez por cada
valor de un rango especificado, de acuerdo al algoritmo.
La sentencia for es un mtodo para ejecutar un bloque de sentencias un nmero fijo de veces. El bucle for se diferencia del
bucle while en que las operaciones de control de bucle se sitan en un solo sitio: la cabecera de la sentencia.
for (inicializacin; condicin; incremento)
accin;
Falsa
condicin
Verdadera
accin.1
Fig. 9.2 Diagrama de flujo de la sentencia for
El bucle for contiene las siguientes partes:
1. Parte de inicializacin: inicializa las variables de control del bucle.
2. Condicin: Contiene una expresin lgica que hace que el bucle realice las iteraciones de las sentencias, en tanto que
la expresin se mantenga verdadera.
3. Parte de incremento: que incrementa o decrementa la variable de control del bucle.
4. Acciones: Acciones o sentencias que se ejecutarn por cada iteracin del bucle.
M. en C. Lorena Azuara Prez
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
/*Ejemplo 9.4*/
#include <stdio.h>
#include <conio.h>
void main()
{
int i;
for(i = 1; i < = 10; i++)
printf(Hola mundo!!!\n);
getch();
}
/*Ejemplo 9.5*/
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n;
printf(Cuantas veces deseas imprimir: );
scanf(%d, &n);
for (i = 1; i < = n; i++)
printf( %d. Hola mundo!!!\n, i);
getch();
}
/*Ejemplo 9.6*/
#include <stdio.h>
#include <conio.h>
int caloras(int);
void main()
{
int alimentos r;
printf(Cuantos alimentos ha comido hoy? );
scanf(%d, &alimentos);
r = caloras (alimentos);
printf(Las caloras totales consumidas hoy son: %d, r);
getch();
}
int caloras(int n)
{
int i = 1, cuenta = 0, cal;
printf(Teclea las caloras de cada uno de tus alimentos\n);
for(i = 1; i < = n; i++)
{
printf(Alimentos %d: ,i);
scanf(%d,&cal);
cuenta += cal;
}
return cuenta;
El bucle do-while
Cuntos alimentos ha comido hoy? 8
Teclea las caloras de cada uno de tus alimentos
Alimento 1: 500
Alimento 2: 50
Alimento 3: 1400
Alimento 4: 700
Alimento 5: 10
Alimento 6: 5
Alimento 7: 250
Alimento 8: 100
Las caloras totales consumidas hoy son: 3015
La sentencia do-while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez aunque la condicin que
evala sea falsa. Esta situacin suele dar en algunas circunstancias en las que se ha de tener la seguridad de que una
determinada accin se ejecutar una o varias veces por lo menos una vez.
M. en C. Lorena Azuara Prez
Sintaxis
do
{
accin;
} while (condicin);
La construccin do comienza ejecutando accin. Se evala a continuacin condicin. Si condicin es verdadera, entonces se
repite la ejecucin de accin. Este proceso contina hasta que condicin sea falsa. La semntica del bucle do se representa
grficamente en la siguiente figura:
accin.1
Falsa
condicin
Verdadera
Fig. 9.3 Diagrama de flujo de la sentencia do-while
/*Ejemplo 9.7*/
#include <stdio.h>
#include <conio.h>
void main()
{
int i;
i = 1;
do
{
printf(Hola mundo!!!\n);
i++;
}while(i <= 10);
getch();
}
/*Ejemplo 9.5*/
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n;
printf(Cuantas veces deseas imprimir: );
scanf(%d, &n);
i = 1;
do
{
printf( %d. Hola mundo!!!\n, i);
i++;
}while(i <= n);
getch();
}
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Hola mundo!!!
Desarrollo
1.Escriba un programa que calcule el factorial de un nmero.
/*Prctica 9.1*/
#include <stdio.h>
#include <conio.h>
long int factorial(long int);
void main()
int r, n;
printf(Teclea el nmero: );
scanf(%ld, &n);
r = factorial(n);
printf(%ld! = %ld,n, r);
getch();
Teclea el nmero: 5
5! = 120
}
long int factorial(long int x)
{
int f=1, i;
for(i = x; i >= 1; i--)
f*=i;
return f;
}
/*Prctica 9.2*/
#include <stdio.h>
#include <conio.h>
void primo(int);
void main()
{
int r, n;
printf(Teclea el nmero: );
scanf(%ld, &n);
primo(n);
getch();
}
Teclea el nmero: 7
7, SI es nmero PRIMO
Teclea el nmero: 8
8, NO es nmero PRIMO
M. en C. Lorena Azuara Prez
3. Escribe un programa que calcule la serie de ULAM para cualquier entero positivo
/*Prctica 9.3*/
#include <stdio.h>
#include <conio.h>
void main()
{
int n, i;
Teclea un nmero: 20
printf(Teclea un nmero: );
Serie de ULAM
scanf(%d, &n);
Cuestionario
printf(Serie de ULAM\n);
do
{
printf(%d , n);
if(n % 2 == 0)
n = n / 2;
else
n = (n * 3) + 1;
}while(n > = 1);
getch();
20 10 5 16 8 4 2 1
Conclusiones