Sentencia do…while Sabatino 2010 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. Ejemplo 1: #include <stdio.h> int numero; void main(void) { do { printf("Introduzca un numero (0 - 5): "); scanf("%d",&numero); }while((numero <0) || (numero > 5)); Ejemplo 2: #include <stdio.h> void main() { char op; do { printf("Bienvenida"); printf(“Presione una letra s si desea leer la bienvenida”); printf("y a continuación pulse enter: "); Sentencia do…while Sabatino 2010 fflush(stdin); scanf("%c",&opcion); }while(op == 's' || op == 'S'); printf("Bienvenidos al curso de do…while"); } fflush sierve para liberar memoria de algun bufer, un lugar donde es recomendable usarla es: fflush(stdin); getch(); ó fflush(stdin); scanf(“%s %d”,&cadena,&numero); Ejemplo 3: 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. #include <stdio.h> #include <string.h> float importecompra, desc, cantidadpagar; void main(void) { char resp; char colorbolita[20]; do { printf("\nColor de la bolita: "); fflush(stdin); gets(colorbolita); printf("Importe de compra: "); fflush(stdin); scanf("%f",&importecompra); if(!strcmp(colorbolita,"roja")) desc = importecompra * 0.4; else if(!strcmp(colorbolita,"amarilla")) desc = importecompra * 0.25; else if(!strcmp(colorbolita,"blanca")) desc = 0; else printf("Color invalido\n"); cantidadpagar = importecompra - desc; Compara la cadena apuntada por var1 con la cadena apuntada por var2. Sentencia do…while Sabatino 2010 printf("\nCantidad a pagar = %.2f\n",cantidadpagar); printf("\nDesea introducir otro cliente?\n"); fflush(stdin); resp = getchar(); }while(resp == 's' || resp == 'S'); } Lee un carácter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su valor EJERCICIOS PROPUESTOS 1. En la Cámara de Diputados se levanta una encuesta con todos los integrantes con el fin de determinar qué porcentaje de los n diputados está a favor del Tratado de Libre Comercio, que porcentaje está en contra y que porcentaje se abstiene de opinar. 2. Una persona que va de compras a la tienda “Enano, S.A.”, decide llevar un control sobre lo que va comprando, para saber la cantidad de dinero que tendrá que pagar al llegar a la caja. La tienda tiene una promoción del 20% de descuento sobre aquellos artículos cuya etiqueta sea roja. Determinar la cantidad de dinero que esta persona deberá pagar. 3. 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.