CICLO for, while y do…while OBJETIVO

Anuncio
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
GUÍA DE LABORATORIO #4
SENTENCIAS DE CONTROL EN C: CICLO for, while y do…while
OBJETIVO:
Realizar programas en Lenguaje C aplicando for, while y do…while.
TEMPORIZACIÓN:
Inicio de la Práctica: 06/05/2013.
Tiempo de Desarrollo de la Práctica de Laboratorio: 1 Sesión
1
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
INTRODUCCIÓN:
Una de las características de las computadoras que aumentan considerablemente su potencia
es su capacidad para ejecutar una tarea muchas (repetidas) veces con gran velocidad,
precisión y fiabilidad. Las tareas repetitivas es algo que los humanos encontramos difíciles y
tediosas de realizar. Las estructuras de control iterativas o repetitivas que realizan la
repetición o iteración 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
número de veces que una sentencia o listas de sentencias se ejecutan.
LA SENTENCIA while
Un bucle (ciclo) es cualquier construcción de programa que repite una sentencia o secuencia de
sentencias un número de veces. La sentencia (o grupo de sentencias) que se repiten en un
bloque se denomina cuerpo del bucle y cada repetición del cuerpo del bucle se llama iteración
del bucle. Las dos principales cuestiones de diseño en la construcción del bucle son: ¿Cuál es el
cuerpo del bucle? ¿Cuántas veces se iterará el cuerpo del bucle?
Un bucle while tiene una condición del bucle (una expresión lógica) que controla la secuencia de
repetición. La ejecución de la sentencia o sentencias expresadas se repite mientras la
condición del bucle permanece verdadera y termina cuando se hace falsa. La condición del
bucle se evalúa antes de que se ejecute el cuerpo del bucle y, por consiguiente, si esta
condición es inicialmente falsa, el cuerpo del bucle no se ejecutará. En otras palabras, el
cuerpo de un bucle while se ejecutará cero o más veces.
La forma general de la instrucción while es:
while (condición-bucle)
{
sentencia 1;
sentencia 2 ;
…..
sentencia n ;
}
El comportamiento o funcionamiento de una sentencia (bucle) while es:
1. Se evalúa la condición del bucle.
2. Si condición del bucle es verdadera (distinto de cero):
a. La sentencia especificada, denominada el cuerpo del bucle, se
b. Vuelve el control al paso 1.
3. En caso contrario: El control se transfiere a la sentencia siguiente al bucle o sentencia
while.
2
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
Ejemplo #1: Programa que imprime los números pares entre 1 y N.
//pares.c
#include<stdio.h>
void main( )
{
int n=1,cn;
printf ("Cuantos numeros?");
scanf ("%d",&cn);
while(n<=cn)
{
if(n%2==0)
printf("%d es Par\n",n);
n++;
}
}
Ejemplo #2: Programa que imprime la tabla de multiplicar de un número N introducido por
teclado.
//tablamultiplicar.c
#include<stdio.h>
void main()
{
int N,m=1;
printf("Que tabla de multiplicar deseas?");
scanf("%d",&N);
while(m<=10)
{
printf("%d * %d = %d\n",N,m,N*m);
m++;
}
}
REPETICIÓN: EL BUCLE for
El bucle for es el más adecuado para implementar bucles controlados por contador que son
bucles en los que un conjunto de sentencias se ejecutan una vez por cada valor de un rango
especificado. La sentencia for (bucle for) es un método para ejecutar un bloque de sentencias
un número fijo de veces. El bucle for se diferencia del bucle while en que las operaciones de
control del bucle se sitúan en un solo sitio: la cabecera de la sentencia.
3
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
El bucle for contiene las cuatro partes siguientes:
• Parte de inicialización, que inicializa las variables de control del bucle. Se pueden
utilizar variables de control del bucle simples o múltiples.
• Parte de condición, que contiene una expresión lógica que hace que el bucle realice las
iteraciones de las sentencias, mientras que la expresión sea verdadera.
• Parte de incremento, que incrementa o decrernenta la variable o variables de control
del bucle.
• Sentencias, acciones o sentencias que se ejecutarán por cada iteración del bucle.
La sentencia for es equivalente al siguiente código while:
Inicialización;
while(condición iteración)
{
Sentencia(s);
incremento;
}
Existen dos formas de implementar la sentencia for que se utilizan normalmente para
implementar bucles de conteo: formato ascendente, en el que la variable de control se
incrementa y formato descendente, en el que la variable de control se decrementa.
Formato ascendente:
for(var_control=valor_inicial; var-control<=valor-límite; expresión_incremento)
sentencia(s);
Formato descendente:
for(var_control=valor_inicial; var_control>=valor-límite; expresión_decremento)
sentencia(s);
Ejemplo #3: Programa que imprime los números pares entre 1 y N.
#include<stdio.h>
void main( )
{
int n=1,cn;
printf ("Cuantos numeros?");
scanf ("%d",&cn);
for(n=1;n<=cn;n++)
{
if(n%2==0)
printf("%d es Par\n",n);
}
}
4
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
Ejemplo #4: El dueño de una tienda desea registrar sus ventas por medio de una
computadora. Diseñe un programa en C que permita realizar las siguientes operaciones
para N clientes:
a) El monto de la compra de cada cliente.
b) Calcule e imprima el IVA (15% de la compra).
c) Calcule e imprima el total a pagar.
d) Lea la cantidad con que paga el cliente.
e) Calcule e imprime el cambio.
Al final del día deberá imprimir la cantidad de dinero que debe haber en la caja.
//caja.c
#include<stdio.h>
void main()
{
float monto_c,pago_cli,cambio,iva,total_p,total_caja=0.0;
int num_c,c;
printf("Cuantos Clientes?");
scanf("%d",&num_c);
for(c=0;c<num_c;c++)
{
printf("***\nCliente #%d***\n",c+1);
printf("Total Compra:");
scanf("%f",&monto_c);
iva= monto_c*0.15;
total_p= monto_c + iva;
printf("El cliente debe pagar: %.2f",total_p);
printf("Cantidad recibida por el cliente %d es:",c+1);
scanf("%f",&pago_cli);
if(pago_cli<total_p)
continue;
else
cambio = pago_cli - total_p;
printf("Su cambio es: %.2f",cambio);
total_caja+= total_p;
}
printf("\n***EN CAJA HAY C$ %.2f\n",total_caja);
}
MÁS SOBRE BUCLES: LA INSTRUCCIÓN do…while
Cuando se construye un bucle utilizando la instrucción while, la comprobación para la
continuación del bucle se realiza al comienzo de cada pasada. Sin embargo, a veces es deseable
disponer de un bucle en el que se realice la comprobación al final de cada pasada. Esto se
puede hacer mediante la instrucción do…while.
5
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
La forma general de la instrucción do…while es:
do
instrucción(es);
while(expresión)
La instrucción se ejecutará repetidamente, mientras que el valor de expresión sea verdadero
(es decir, distinto de cero). Observe que instrucción siempre se ejecutará al menos una vez, ya
que la comprobación de la condición de repetición no se realiza hasta el final de la primera
pasada por el bucle. La instrucción puede ser simple o compuesta, aunque en la mayoría de las
veces será compuesta. Debe incluir algún elemento que altere el valor de expresión para que el
bucle tenga un final.
Ejemplo #5: calcular la media de los números no negativos de una lista de N números.
//media.c
#include <stdio. h>
void main( )
{
int n,cont=1,nmedia=0;
float x,media,suma=0;
/* inicializar y leer el valor de n */
printf("Cuantos números?");
scanf ("%d",&n);
/*Leer los números*/
do
{
printf ("Numero %d:",cont);
scanf("%f",&x);
if (x<0)
continue;
suma += x;
++nmedia;
cont++;
}while(cont<=n);
/* calcular la media y escribir la respuesta */
media = suma/nmedia;
printf("\nLa media es %.2f\n", media);
}
6
Universidad Nacional Autónoma de Nicaragua UNAN-León
Departamento de Computación
Laboratorio #4: Estructuras Cíclicas en C (for,while,do…while)
EJERCICIOS PROPUESTOS:
1. Realice un programa en C que lea un número N e imprima si dicho número es Armstrong
o no. Un número es de Armstrong si la suma de los dígitos que lo componen elevados al
cubo es igual al número.
Ejemplos:
153=13+53+33
370=33+73+03
371=33+73+13
407=43+03+73
2. El gerente de Farmacia “La Baratera” desea un programa en C que calcule el aumento de
sueldo para su grupo de N empleados, teniendo en cuenta los siguientes criterios:
• Si el sueldo es inferior a C$5000 el aumento será del 10%.
• Si el sueldo es superior a C$5000 el aumento será del 8%.
Imprima el nombre, nuevo sueldo del trabajador y el total de nómina de la empresa,
considerando el aumento de cada trabajador.
Nota: resuelva utilizando el ciclo while,for, do…while.
3. Escriba un programa en C tal que dada una cantidad entera imprima el número de
dígitos que la componen. Ejemplo: 234 tiene 3 dígitos.
Nota: resuelva utilizando el ciclo while
7
Descargar