Beruflich Dokumente
Kultur Dokumente
Estructuras de control. Las estructuras de control tambin conocidas como ciclos, bucles, estructuras iterativas o repetitivas, son bsicas para la elaboracin de programas, ya que el repetir una tarea varias veces a una gran velocidad, precisin y fiabilidad es una de las caractersticas de las computadoras que aumentan considerablemente su potencia. C soporta tres tipos de estructuras de control: Ciclo while Ciclo do_while Ciclo for Teora de ciclos. Un ciclo es cualquier construccin de programa que repite una sentencia o secuencia de sentencias un nmero de veces. Las sentencias o grupo de sentencias que se repiten en un bloque se denominan cuerpo del bucle y cada repeticin del cuerpo del ciclo se llama iteracin del ciclo. Contadores, acumuladores. Contadores: En los procesos repetitivos se necesita normalmente contar los sucesos o acciones internos del ciclo, como pueden ser: registro o elementos en un archivo y nmero de iteraciones a realizar por el ciclo. Para realizar esta tarea se utilizan los contadores, cuya construccin es una de las tcnicas corrientes en la realizacin de cualquier programa. Un contador es un campo de la memoria que est destinado a contener los diferentes valores que se van incrementando o decrementando en cada iteracin. El campo contendr las sucesivas sumas parciales que se van realizando en la ejecucin de las sucesivas repeticiones. El incremento en las sumas parciales es siempre constante, pudiendo ser positivo o negativo, es decir el contador se ir incrementando o decrementando. El contador se representar en un programa por medio de una variable. En las instrucciones de preparacin del ciclo se realiza la inicializacin del contador o contadores. La inicializacin de un contador consiste en poner el valor inicial de la variable que representa al contador. Ejemplos: Contador =0 Contador = 4
Por consiguiente, el contador se representar por una instruccin de asignacin del tipo: Contador = Contador + 1 Contador = Contador 1
1
do()-while
Sintaxis: do { Sentencia 1; Sentencia 2; Sentencia 3; : : Sentencia n; } while(condicion);
3
while()
Un ciclo while tiene una condicin del ciclo (una expresin lgica) que controla la secuencia de repeticin. La posicin de esta condicin del ciclo es delante del cuerpo de este y significa que un ciclo while es un ciclo pretest de modo que cuando se ejecuta el mismo, se evala la condicin antes de que se ejecute el cuerpo del ciclo. Sintaxis: 1.- while (condicin_ciclo) sentencia; 2.- while (condicin_ciclo ) {
4
} El comportamiento o funcionamiento de una sentencia (ciclo) while es: 1. Se evala la condicin_ciclo 2. Si es verdadera (distinto de cero ): a. La sentencia especificada, denominada cuerpo del ciclo, se ejecuta. b. Vuelve el control al paso 1. 3. En caso contrario: a. El control se transfiere a la sentencia siguiente al ciclo. Ejemplo 1. #include <stdio.h> #include <conio.h> void main() { int x=0; char centinela; /* Cuenta hasta 10 */ while (x<10) printf(X = %d,x++); getch(); } Ejemplo 2. /* Visualiza n asteriscos */ #include <stdio.h> #include <conio.h> void main() { int contador = 0, n=10; while (contador < n)
5
La variable que representa la condicin del ciclo se denomina tambin variable de control del bucle debido a que su valor determina si el cuerpo del ciclo se repite. La variable de control del ciclo debe ser: 1) inicializada, 2) comprobada, y 3) actualizada para que el cuerpo del ciclo se ejecute adecuadamente. Cada etapa se resume as: 1. Inicializacin. Contador se establece a un valor inicial (se inicializa a cero, aunque podra ser otro su valor) antes de que se alcance la sentencia while. 2. Prueba/condicin. Se comprueba el valor de contador antes de que comience la repeticin de cada ciclo (denominada iteracin o pasada). 3. Actualizacin. Contador se actualiza (su valor se incrementa en 1, mediante el operador ++) durante cada iteracin. Si la variable de control no se actualiza el ciclo se ejecutara siempre, este se denominar ciclo infinito, en otras palabras el ciclo infinito ser aquel en el cual sucondicin_ciclo nunca sea falsa. Ejemplo #include <stdio.h> #include <conio.h> void main() { int contador = 1; /* Ciclo infinito */ while(contador < 100) { printf (%d, contador); contador--; }
El contador se decrementa en 1 por lo que siempre ser menor a 100 y el ciclo nunca terminar de repetirse.
for
El ciclo for en C es ms poderoso y flexible que el de otros lenguajes. Las secciones: inicializacin, prueba condicional e incremento no estn limitadas a dichas actividades. El for de C no pone lmites en el tipo de expresiones que ocurren ah dentro. Por ejemplo, no se tiene que usar la seccin de inicializacin para asignar un valor inicial a la variable de control de ciclo. Ms an, no hay necesidad de utilizar una variable de control de ciclo cuando la prueba condicional se emplea de otra manera para terminar el ciclo. Finalmente, la seccin de incremento es slo una expresin que es evaluada cada vez que el ciclo itera (se repite). En ocasiones no se necesita incrementar ninguna variable. Otras de las flexibilidades del for en C es que pueden estar vacas algunas de las secciones anteriores, o tener varias expresiones en cada seccin.
En el ciclo for tanto la variable de control como las que se utilizan para la condicin pueden ser del tipo entera o caracter, ya que la variable tipo carcter tiene una valor entero (cdigo ASCII). Ejemplos con el ciclo for: El siguiente programa lee nmeros de 1 hasta N : #include <stdio.h> void main() { int num, N; printf(Cuantos numeros quieres imprimir); scanf(%d,&N); for(num=1;num<=N;num++) { printf(Dame un numero);
7
Anidaciones.
Al igual que en otras estructuras utilizadas dentro de el lenguaje C, los ciclos tambin se pueden anidar, de tal forma que dentro de un ciclo se incluya uno o ms ciclos como parte del cuerpo de este. Estos ciclos sern ciclos internos al primero, y por consiguiente cada que el ciclo que los contiene se repite estos se evaluar y/o se repetirn. No existe restriccin en lo que respecta a anidar un cilo de un tipo dentro de otro, es decir se puede perfectamente tener un ciclo while dentro de un ciclo for o do_while. Ejemplo: El siguiente segmento generar las tablas de multiplicar del 1 al 5 for( x=1;x<=5;x++) for (y=1;y<=10;y++) printf(%d x %d = %d \n, y,x,y*x); El ciclo que tiene como variable de control y, se encuentra anidado dentro de el ciclo que tiene como variable de control x. Este programa lee las temperaturas de los 365 das del ao cada hora #include <stdio.h> void main(void) { float temp; int dias=1, horas; while(dias<=365) { for( horas=1;horas<=24;horas++) { printf(Da la temperatura del da %d en la hora %d ,dias,horas); scanf(%f,&temp); } dias=dias+1; } } En este caso se encuentra anidado dentro de un ciclo while un ciclo for.
8
UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION Ejercicios con do-while
1. Elaborar un diagrama y programa que permita mostrar el resultado final (valor de x) de lo siguiente : x= 1/n+1 + 1/n+2 + 1/n+3 .. 1/n+m. el valor de m se va a leer. 2. Elaborar un programa que permita generar la tabla de multiplicar de un nmero dado desde 1 hasta 20. Adems de imprimir la tabla se pide la suma acumulada de todos los resultados generados. Al empezar el programa se pedir una palabra de acceso permitiendo la entrada al mismo en caso de que sea correcta. Ejemplo: n=5 5x1=5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 : : : : : : 5 x 20= 100 3.- Elaborar un programa que permita procesar e imprimir informacin de la nmina de 200 empleados. Para cada uno se va a leer el nombre, sexo(femenino-masculino), horas trabajadas y sueldo por hora. Deber imprimir nombre y pago para cada empleado, adems de totales de pagos separados para cada sexo, el promedio de pagos para hombres, el promedio de pagos para mujeres, as como el nombre del empleado que gana el sueldo mas alto. 4.- Elaborar un programa que permita generar la tabla de multiplicar de un nmero dado (el usuario lo va a proporcionar), desde 1 hasta n (donde n se leer). Se pide imprimir adems de la tabla, la suma acumulada de los resultados. 5.- Elaborar un programa que permita leer una serie de nmeros enteros mayores a cero y los muestre, la salida se dar cuando se lean 50 nmeros pares. 6.- Escriba un programa que haga diez veces lo siguiente: a).- Pedir a un usuario una letra mayscula. b).- Determinar e imprimir si la letra es una vocal (a,e,i,u), una semivocal (y), o una consonante. 7.- Se van a leer los siguientes datos de 20 alumnos: matricula y 4 calificaciones, se pide elaborar un programa que imprima la matricula de cada alumno, promedio obtenido, asi como el total de alumnos aprobados (6 o mas se considera aprobado).