SENTENCIAS DE CONTROL CICLOS while y do while

2010 UNAN – LEON FACULTAD DE CIENCIA Y TECNOLOGIA Departamento de Computación Autor: M.Sc. Ana María Salgado G. Asignatura: Programación Estructurada SENTENCIAS DE CONTROL CICLOS while y do while Este documento es una extracción del libro Programación en C, metodología, estructura de datos y objetos, de Luis Joyanes Aguilar e Ignacio Zahonero Martínez. Fue recopilado por la M.Sc. Ana María Salgado G. y complementado con ejercicios obtenidos de otros textos e Internet. Sentencias while y do while SENTENCIA DE CONTROL 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. Un bucle while tiene una condición del bucle(una expresión lógica) que controla la secuencia de repetición. La posición de esta condición 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 evalúa la condición antes de que se ejecute el cuerpo del bucle. El diagrama indica que 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. Si la 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. Condición __bucle falsa verdadera sentencia 2 M.Sc. Ana María Salgado G. Sentencias while y do while Sintaxis: while(condición_bucle) sentencia; cuerpo while(condición_bucle) { sentencia-1; sentencia-2; . cuerpo . . sentencia-n; } Donde: • condición_bucle • sentencia es una expresión lógica o booleana es una sentencia simple o compuesta El funcionamiento de una sentencia while es: 1. Se evalúa la condición_bucle 2. Si condición_bucle es verdadera(distinto de cero): a) La sentencia especificada, denominada 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 al bucle while. Las sentencias del cuerpo del bucle se repiten mientras que la expresión lógica(condición del bucle) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se termina y se sale del bucle y se ejecuta la siguiente sentencia de programa después de la sentencia while. 3 M.Sc. Ana María Salgado G. Sentencias while y do while Ejemplo #1: //contador.c /* cuenta hasta 9 */ #include void main() { int x = 0; while(x < 10) printf("X: %d\n",x++); } Ejemplo #2: //contadorasteriscos.c /*

1 downloads 149 Views 250KB Size

Recommend Stories


GUÍA DE LABORATORIO #4. SENTENCIAS DE CONTROL EN C: CICLO for, while y do while. Realizar programas en Lenguaje C aplicando for, while y do while
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

CLASE 10 ALGORITMOS. Ciclos DO-WHILE
CLASE 10 ALGORITMOS Una de las excelentes herramientas del Proyecto Descartes es la posibilidad de usar algoritmos. Si bien se trata de algoritmos sen

TIPOS DE BUCLES O CICLOS DE REPETICIÓN EN PHP: WHILE, DO WHILE Y FOR. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00822B)
Estructuras repetitivas básicas en PHP: while, for y do/while. APRENDERAPROGRAMAR.COM TIPOS DE BUCLES O CICLOS DE REPETICIÓN EN PHP: WHILE, DO…WHILE

Nurses emotional response while facing patient s death
RESPUESTA EMOCIONAL DEL PROFESIONAL DE ENFERMERÍA ANTE LA MUERTE Resposta emocionai do profissional de enfermagem diante da morte Nurses´ emotional

Primero debemos mirar un ejemplo de un ciclo While:
Guía de ejemplos (Cambios de estructuras) Universidad Técnica Federico Santa María Ramo IWI-131, programación de computadores. Profesor Juan Manuel Je

Story Transcript

2010 UNAN – LEON FACULTAD DE CIENCIA Y TECNOLOGIA Departamento de Computación Autor: M.Sc. Ana María Salgado G. Asignatura: Programación Estructurada

SENTENCIAS DE CONTROL CICLOS while y do while

Este documento es una extracción del libro Programación en C, metodología, estructura de datos y objetos, de Luis Joyanes Aguilar e Ignacio Zahonero Martínez. Fue recopilado por la M.Sc. Ana María Salgado G. y complementado con ejercicios obtenidos de otros textos e Internet.

Sentencias while y do while

SENTENCIA DE CONTROL 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. Un bucle while tiene una condición del bucle(una expresión lógica) que controla la secuencia de repetición. La posición de esta condición 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 evalúa la condición antes de que se ejecute el cuerpo del bucle. El diagrama indica que 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. Si la 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.

Condición __bucle

falsa

verdadera sentencia

2

M.Sc. Ana María Salgado G.

Sentencias while y do while

Sintaxis:

while(condición_bucle) sentencia;

cuerpo

while(condición_bucle) { sentencia-1; sentencia-2; . cuerpo . . sentencia-n; }

Donde: • condición_bucle • sentencia

es una expresión lógica o booleana es una sentencia simple o compuesta

El funcionamiento de una sentencia while es: 1. Se evalúa la condición_bucle 2. Si condición_bucle es verdadera(distinto de cero): a) La sentencia especificada, denominada 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 al bucle while.

Las sentencias del cuerpo del bucle se repiten mientras que la expresión lógica(condición del bucle) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se termina y se sale del bucle y se ejecuta la siguiente sentencia de programa después de la sentencia while.

3

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejemplo #1: //contador.c /* cuenta hasta 9 */ #include void main() { int x = 0; while(x < 10) printf("X: %d\n",x++); }

Ejemplo #2: //contadorasteriscos.c /* visualizar n asteriscos */ #include void main() { int contador = 0, n; printf("Cuantos asteriscos quiere?:"); scanf("%d",&n); 4

M.Sc. Ana María Salgado G.

Sentencias while y do while

while(contador < n) { printf("*"); contador++; }/* fin de while */ } La variable que representa la condición del bucle se denomina también variable de control del bucle debido a que su valor determina si el cuerpo del bucle se repite. La variable de control del bucle debe ser: 1. inicializada 2. comprobada 3. actualizada para que el cuerpo del bucle se ejecute adecuadamente. Cada etapa se resume así: 1. Inicialización. contador se establece a un valor inicial(se inicializa a cero, aunque podría ser otro su valor) antes de que se alcance la sentencia while. 2. Prueba/condición. Se comprueba el valor de contador antes de que comience la repetición de cada bucle(denominada iteración o pasada). 3. Actualización: contador se actualiza(su valor se incrementa en 1, mediante el operador ++) durante cada iteración. Si la variable de control no se actualiza el bucle se ejecutará siempre. Tal bucle se denomina bucle infinito. Un bucle infinito se producirá cuando la condición del bucle permanece y no se hace falsa en ninguna iteración.

Ejemplo #3: //bucleinfinito.c #include void main() { int contador = 1; while(contador < 100) { printf("%d \n", contador); contador--; }/* fin de while */ } 5

M.Sc. Ana María Salgado G.

Sentencias while y do while

Bucles while con cero iteraciones El cuerpo de un bucle no se ejecuta nunca si la condición de repetición del bucle no se cumple, es falsa(es cero en C), cuando se alcanza while la primera vez. contador = 10; while(contador > 100) { … }

El bucle anterior nunca se ejecutará ya que la condición del bucle(contador > 100) es falsa la primera vez que se ejecuta. El cuerpo del bucle nunca se ejecutará.

BUCLES CONTROLADOS POR CENTINELAS Normalmente, no se conoce con exactitud cuántos elementos de datos se procesarán antes de comenzar su ejecución. Esto se produce bien porque hay muchos datos a contar normalmente o porque el número de datos a procesar depende de cómo prosigue el proceso de cálculo. Un medio para manejar esta situación es instruir al usuario a introducir un único dato definido y especificado denominado valor centinela como último dato. La condición del bucle comprueba cada dato y termina cuando se lee el valor centinela. En realidad el centinela es un valor que sirve para terminar el proceso del bucle. En el siguiente fragmento de código hay un bucle con centinela; se introducen notas mientras que ésta sea distinta de centinela.

6

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejemplo #4: //centinela.c /* entrada de datos numéricos, centinela -1 */ #include void main() { int nota,suma = 0; const int centinela = -1; printf("Introduzca primera nota: "); scanf("%d",¬a); while(nota != centinela) { suma += nota; printf("Introduzca la siguiente nota:"); scanf("%d",¬a); }/* fin de while*/ puts("Final"); printf("La suma de las notas es %d \n",suma); }

7

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejemplo #5: En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color, que les dirá qué descuento tendrán sobre el total de su compra. Determinar la cantidad que pagará cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja el cliente obtendrá un 40% de descuento; si es amarilla un 25% y si es blanca no obtendrá descuento. //colorbolita.c #include #include char resp = 's'; char colorbolita[20]; float importecompra, desc, cantidadpagar; void main(void) { while(resp == 's' || resp == 'S') { printf("Importe de compra: "); fflush(stdin); scanf("%f",&importecompra); printf("\nColor de la bolita: "); fflush(stdin); gets(colorbolita); if(strcmp(colorbolita,"roja") == 0) desc = importecompra * 0.4; else if(strcmp(colorbolita,"amarilla") == 0) desc = importecompra * 0.25; else if(strcmp(colorbolita,"blanca") == 0) desc = 0; else printf("Color invalido\n"); cantidadpagar = importecompra - desc; printf("\nCantidad a pagar = %.2f\n",cantidadpagar); 8

M.Sc. Ana María Salgado G.

Sentencias while y do while

printf("\nDesea introducir otro cliente?\n"); fflush(stdin); resp = getchar(); } }

La sentencia break en los bucles La sentencia break se utiliza, a veces, para realizar una terminación anormal del bucle. Su sintaxis es: break; La sentencia break se utiliza para la salida de un bucle while o do-while, aunque también se puede utilizar dentro de una sentencia switch, siendo éste su uso más frecuente. 9

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejemplo #6: //clave.c int clave = -9; int entrada; #include void main(void) { printf("Introduzca un entero:"); while(scanf("%d",&entrada)) { if(entrada != clave) { printf("%d\n",entrada); printf("Introduzca un entero:"); } else break; } }

Ejemplo #7: En un supermercado un ama de casa pone en su carrito los artículos que va tomando de los estantes. La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por lo que cada vez que toma un articulo anota su precio junto con la cantidad de artículos iguales que ha tomado y determina cuánto dinero gastará en ese artículo; a esto le suma lo que irá gastando en los demás artículos, hasta que decide que ya tomó todo lo que necesitaba. Ayúdale a esta señora a obtener el total de sus compras.

10

M.Sc. Ana María Salgado G.

Sentencias while y do while

//supermercadowhile.c #include char resp = 'S'; float sumc = 0, precioart, compra; int cantart; void main(void) { while(resp == 's' || resp == 'S') { printf("\nPrecio del articulo: "); fflush(stdin); scanf("%f",&precioart); printf("Cantidad de articulos a comprar: "); fflush(stdin); scanf("%d",&cantart); compra = precioart * cantart; sumc = sumc + compra; printf("\nMas articulos?\n"); fflush(stdin); resp = getchar(); }

printf("\nTotal de compras = %.2f\n",sumc); }

11

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejercicios propuestos 1. En una granja se requiere saber alguna información para determinar el precio de venta por cada kilo de huevo. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene según la fórmula: calidad = peso de la gallina * altura de la gallina numero de huevos que pone Finalmente para fijar el precio del kilo de huevo, se toma como base la siguiente tabla: PROMEDIO DE CALIDAD mayor o igual que 15 mayor que 8 y menor que 15 menor o igual que 8

PRECIO POR KILO DE HUEVO 1.2 * promedio de calidad 1.00 * promedio de calidad 0.80 * promedio de calidad

2. Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuánto tomando en cuenta su sueldo base y sus comisiones. 3. En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la sig. forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora Si trabaja más de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra. 4.

Obtener el promedio de calificaciones de un grupo de n alumnos.

5. El Dpto. de Seguridad Pública y Tránsito del D.F. desea saber, de los n autos que entran a la ciudad de México, cuántos entran con calcomanía de cada color. Conociendo el último dígito de la placa de cada automóvil se puede determinar el color de la calcomanía utilizando la sig. relación:

12

M.Sc. Ana María Salgado G.

Sentencias while y do while

DÍGITO 1ó2 3ó4 5ó6 7ó8 9ó0

COLOR amarilla rosa roja verde azul

6. En un supermercado un cajero captura los precios de los artículos que los clientes compran e indica a cada cliente cuál es el monto de lo que deben pagar. Al final del día le indica a su supervisor cuánto fue lo que cobró en total a todos los clientes que pasaron por su caja. 7. Calcular el promedio de edades de hombres, mujeres y de todo un grupo de alumnos.

REPETICION : EL BUCLE do…while La sentencia do-while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. Esta situación se suele dar en algunas circunstancias en las que se ha de tener la seguridad de que una determinada acción se ejecutará una o varias veces, pero al menos una vez. Sintaxis: do sentencia while(expresión); La construcción do comienza ejecutando sentencia. Se evalúa a continuación expresión. Si expresión es verdadera, entonces se repite la ejecución de sentencia. Este proceso continúa hasta que expresión es falsa.

13

M.Sc. Ana María Salgado G.

Sentencias while y do while

Ejemplo #1: //do1.c #include int digito; void main(void) { do { printf("Introduzca un dígito (0 - 9): "); scanf("%d",&digito); }while((digito 9)); }

Ejemplo #2: Escriba un programa que sume una secuencia de enteros, en la cual el primer entero que se lea indicará el número de valores que faltan por leer. Una secuencia de entrada podría ser: 5 100 200 300 400 500 Donde 5 indica que los 5 valores siguientes deberán ser sumados. //entrada.c #include int i = 0, n, numero, suma = 0; void main(void) { printf("Secuencia de entrada:\n"); scanf("%d",&n);

14

M.Sc. Ana María Salgado G.

Sentencias while y do while

do { scanf("%d",&numero); suma = suma + numero; i++; }while(i < n); printf("\nLa suma de los enteros introducidos es %d \n\n",suma); }

Ejemplo #3: Realice un programa que calcule el producto de los enteros impares del 1 al 10. //primpardow.c #include void main(void) { long producto=1; int i = 1; do { if((i%2)!=0) producto=producto*i; i++; } while(i=0) { if(num == 1 || num == 0) { fact=1; printf("!%d = %.0f\n\n",num,fact); } else { i = 1; do { fact = fact * i; i++; }while(i 500) mujeres++; else if(sexo == masculino && sueldo < 400) hombres++; i++; }while(i < nempleados); printf("\n%d mujeres ganan mas de $500 \n\n",mujeres); printf("%d varones ganan menos de $400 \n\n",hombres); }

Problemas Propuestos 1. Determinar la cantidad semanal de dinero que recibirá cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajó un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. 2. Un jefe de casilla desea determinar cuántas personas de cada una de las secciones que componen su zona asisten el día de las votaciones. Las secciones son: norte, sur y centro. También desea determinar cuál es la sección con mayor número de votantes. 3.

Calcular la suma siguiente: 100 + 98 + 96 + 94 + . . . + 0 en este orden

4. Leer 50 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje de reprobados. Tomando en cuenta que la calificación mínima aprobatoria es de 70. 18

M.Sc. Ana María Salgado G.

Sentencias while y do while

5. Leer por cada alumno de Diseño estructurado de algoritmos su numero de control y su calificación en cada una de las 5 unidades de la materia. Al final que escriba el numero de control del alumno que obtuvo mayor promedio. Suponga que los alumnos tienen diferentes promedios.

6. Leer los 250,000 votos otorgados a los 3 candidatos a gobernador e imprimir el número del candidato ganador y su cantidad de votos. 7. Suponga que tiene usted una tienda y desea registrar las ventas en su computadora. Diseñe un algoritmo que lea por cada cliente, el monto total de su compra. Al final del día que escriba la cantidad total de ventas y el numero de clientes atendidos.

19

M.Sc. Ana María Salgado G.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.