Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Evaluacin
Escribir un programa que desglose cierta cantidad de segundos introducida por el teclado en su equivalente en semanas, das, horas, minutos, segundos , , , , g Escribir un programa lea la longitud de los lados y calcule la hipotenusa Escribir un programa que calcule el numero de das de un mes dados los valores numricos del mes y ao mes,
Contenido
1. 2. 3. 4. 5. 6. 7. 8.
La sentencia While Repeticin: el bucle For Precauciones en el uso del bucle For Repeticin: el bucle Do-While Comparacin de bucles While, For y do-While Diseo de bucles Bucles anidados Ejercicios
La sentencia While
Un bucle while tiene una condicin del bucle (una expresin lgica) que controla la secuencia de repeticin. 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
Sintaxis
Las sentencias del cuerpo del bucle se repiten mientras que la expresin lgica (condicin del bucle) sea verdadera. ) Cuando se evala la expresin lgica y resulta falsa, se termina y se sale del bucle y se ejecuta la siguiente sentencia de programa despus de la sentencia while
Ejemplo
/*bucle de muestra con while*/ #include <stdio.h> #include <stdlib.h> int main () { int contador=0; while(contador<5) { contador++; printf("contador: %d\n",contador); } printf("Fin"); system("PAUSE"); return 0; }
Ejemplo
/*calculo de la media de 6 numeros*/ #include <stdio.h> #incl de <stdio h> #include <stdlib.h> #include <string.h> int main () { const int totalnum=6; int contadornum=0; float sumanum=0; float media; printf ("introduzca %d numeros:\n", totalnum); while (contadornum<totalnum) { float numero; scanf ("%f",&numero); sumanum+=numero; ; ++contadornum; } media=sumanum/contadornum; printf("media:%.2f\n",media); system("PAUSE"); return 0; }
Ejemplo
#include <stdio.h> #include <stdlib.h> #i l d < dlib h> int main () { int i; i i /*imprimir hola 10 veces*/ for(i=0; i<10; i++) printf("hola!\n"); i tf("h l !\ ") system("PAUSE"); return 0; }
#include <stdio.h> #include <stdlib.h> int main () { int i; /*imprimir hola 10 veces*/ for(i=0; i<10; i++) { printf("hola!, "); printf("el valor de i es: %d\n",i); } system("PAUSE"); return 0; }
Cont Cont
Existen dos formas de implementar la sentencia for que se utilizan normalmente para i l l implementar b l bucles d conteo: f de formato ascendente, en el que la variable de control se incrementa y formato descendente, en el que la variable de control decrementa.
Ejemplos
#include <stdio.h> #include <stdlib.h> #include <math.h>
#include <stdio.h> #include <stdlib.h> int main() { int n, suma = 0; for (n=1; n<=10; n++) suma += 2*n; printf("La suma de los 10 primeros numeros pares: %d\n",suma); system("PAUSE"); return 0; } /*El bucle lo podramos haber diseado con un incremento de 2: for (n = 2; n <= 20; n+=2) suma += n; */ /
#define M 15 #define f(x) exp(2*x)-x int main () { int i; double x; for(i=0; i<=M; i++) { printf("valor de x: "); scanf("%lf",&x); printf("f(%.1lf)=%.4g\n",x,f(x)); } system("PAUSE"); return 0; }
Bucles infinitos
C no soporta una sentencia que realice esa tarea, pero existe una variante d l sintaxis f que permite i l i de la i i fro i implementar b l i fi i bucles infinitos que son aquellos bucles que, en principio, no tienen fin. Sintaxis
For(;;)
Sentencia;
La sentencia se ejecuta indefinidamente a menos que se utilice una sentencia return o break (normalmente una combinacin if-break o if-return)
Ejemplos
#include <stdio.h> #include <stdlib.h> /*Ejemplo de utilizacin de break*/ int main () { int contador = 0; /* inicializacin */ int max; printf ("Cuantos holas? " ) ; scanf ("%d",&max) ; for (;;) /* bucle for que no termina nunca */ { if(contador < max) /* test */ { puts("Hola!"); contador++; } else break; } system("PAUSE"); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int clave,i; puts ("Introduce -9 para acabar. " ) ; clave = 1; for (i = 0; i < 8; i++) { if (clave ==-9) continue; scanf ("%d",&clave); printf ("clave %d\n",clave) ; ( clave %d\n clave) } printf("VAL0RES FINALES i = %d clave = %d",i,clave); system("PAUSE"); return 0; }
while (expresin) ( p )
Ejemplos
#include <stdio.h> #include <stdlib.h> #incl de <stdlib h> /*cuenta de 0 a 10*/ int main () { int x=0; do printf ("x: %d\n",x++); while (x<10); system("PAUSE"); return 0; }
#include <stdio.h> #include <stdlib.h> /*imprime las letras minusculas del alfabeto*/ int main () { char car='a'; do { printf ("%c\n",car); car++; } while (car<='z'); system("PAUSE"); return 0; }
Comparacin de bucles
While; el uso mas frecuente es cuando la repeticin no esta controlada por contador; el test d condicin precede a cada l d d l de di i d d repeticin del bucle; el cuerpo del bucle puede no ser ejecutado. Se debe utilizar cuando se desea saltar el bucle si la condicin es falsa For; bucle de conteo, cuando el numero de repeticiones se conoce por anticipado y puede ser controlado por un contador; tambin es adecuado para bucles que implican control no contable del bucle con simples etapas d i i i li i y d actualizacin; el t t d l i l t de inicializacin de t li i l test de la condicin precede a la ejecucin del cuerpo del bucle Do while; es adecuada para asegurar que al menos se ejecuta el bucle b l una vez
Diseo de bucles
El diseo de un bucle necesita tres puntos a considerar
El cuerpo del bucle Las sentencias de inicializacin Las L condiciones para l terminacin del bucle di i la i i d l b l
Ejemplos
#include <stdio.h> #include <stdlib.h> /*vizualize el factorial de un entero*/ int i i main () { long int n,m,fact; do { p printf ("\nFactorial de numero n: (\ ");
scanf ("%ld",&n); } while ((n<2)||(n>20)); for (m=n fact=1; n>1; fact (m=n, *=n--); printf ("%ld! = %ld\n",m,fact); system("PAUSE"); ("PAUSE") return 0; }
Bucles anidados
Es posible anidar bucles. Los bucles anidados constan de un bucle externo con uno o mas b l i t bucles internos. C d vez que se repite el b l externo, l Cada it l bucle t los bucles internos se repiten, se vuelve a evaluar los componentes de control y se ejecutan todas las iteraciones requeridas
Ejemplos
#include <stdio.h> #include <stdlib.h> int main () { int filas, columnas; int i, j; char elCar; ; printf ("Cuantas filas?: " ) ; scanf ("%d",&filas) ; printf ("Cuantas columnas?: " ) ; ( Cuantas
scanf ( "%d",&columnas) ; printf ("Q e caracter? " ) ; ( Que caracter?: scanf ("\n%c",&elCar) ; for (i = 0; i < filas; i++) { for (j = 0; j < columnas; j++ ) putchar(elCar) ; putchar('\n'); } system("PAUSE"); return 0; }
Ejercicios
Escribir un programa que encuentre el primer numero primo introducido por el t l d l teclado 1 2 3 n + + + Calcular la suma de los trminos de la serie 2 2 2 2 Escribir un programa que calcule la suma de los 50 primeros nmeros enteros Calcular la media de las notas introducidas por teclado con un dialogo interactivo semejante al siguiente:
2 3 n
4x3 16x9