Anda di halaman 1dari 7

Instituto Politcnico Nacional

Secretaria Acadmica
Direccin de Educacin Superior
ESIME Culhuacan

Sentencias de iteracin

M. en C. Lorena Azuara Prez


Ingeniera en Computacin
Fundamentos de Programacin

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

Prctica 9 Sentencias de iteracin




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();
}

M. en C. Lorena Azuara Prez

Cuantas veces deseas imprimir: 5


1. Hola mundo!!!
2. Hola mundo!!!
3. Hola mundo!!!
4. Hola mundo!!!
5. Hola mundo!!!

Prctica 9 Sentencias de iteracin




/*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

Prctica 9 Sentencias de iteracin


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

Cuantas veces deseas imprimir: 3


1. Hola mundo!!!
2. Hola mundo!!!
3. Hola mundo!!!



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

Prctica 9 Sentencias de iteracin




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!!!

Cuantas veces deseas imprimir: 7


1. Hola mundo!!!
2. Hola mundo!!!
3. Hola mundo!!!
4. Hola mundo!!!
5. Hola mundo!!!
6. Hola mundo!!!
7. Hola mundo!!!

M. en C. Lorena Azuara Prez

Prctica 9 Sentencias de iteracin




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;
}

2. Escriba un programa que determine si un nmero es PRIMO o no lo es.


/*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

void primo(int num)


{
int p=0, i;
i = num;
while(i >= 1)
{
if(num % i == 0)
p++;
i--;
}
if(p <=2)
printf(%d, SI es numero PRIMO,num);
else
printf(%d, NO es numero PRIMO,num);
}




M. en C. Lorena Azuara Prez

Prctica 9 Sentencias de iteracin




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

Llene cada uno delos siguientes espacios en blanco.


1. La estructura de repeticin ( ) especifica que un enunciado o grupo de enunciados debe ser ejecutado de forma
repetidamente, en tanto cierta condicin se mantenga verdadera.
2. La repeticin de un conjunto de instrucciones un nmero especfico de veces, se conoce como una repeticin ( ).
3. Cuando no se conoce por anticipado cuantas veces debe repetirse un conjunto de enunciados, se puede utilizar un
valor ( ) para terminar la repeticin.
4. La repeticin controlada por contador tambin se conoce como repeticin ( ), por que se sabe por anticipado
cuntas veces se ejecutar el ciclo.
5. La repeticin controlada por centinela tambin se conoce como ( ), por que no se sabe con anticipacin cuntas
veces se ejecutar el ciclo.


Conclusiones

M. en C. Lorena Azuara Prez