Sie sind auf Seite 1von 9

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION

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

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


Siendo 1 el incremento del contador. Acumuladores: Un acumulador es un campo o zona de memoria cuya misin es almacenar cantidades variables resultantes de sumas sucesivas. Realiza la funcin de un contador con la diferencia que el incremento o decremento de cada suma es variable en lugar de constante como en el caso del contador. Se representa por S=S+N donde N es una variable y no constante. Al igual que al contador a un acumulador se le inicializa. Ciclos controlados por contadores, centinelas. Ciclos controlados por centinelas. Por lo general no se conoce con exactitud cuantos elementos de datos se procesarn antes de comenzar su ejecucin. Esto se produce bien porque hay muchos datos a contar normalmente o porque el nmero de datos a procesar depende de cmo prosigue el proceso de clculo. Un medio para manejar esta situacin es instruir al usuario a introducir un nico dato definido y especificado denominado valor centinela como ltimo dato. La condicin del ciclo comprueba cada dato y termina cuando se lee el valor centinela. El valor centinela se debe seleccionar con mucho cuidado y debe ser un valor que no pueda producirse como dato. En realidad el centinela es un valor que sirve para terminar el proceso de ciclo. Ejemplo: #include <stdio.h> #include <conio.h> void main() { int calif; do { printf(Introduzca la primer calificacin ); scanf(%d,&calif); }while(calif!=-1); }

En este caso el ciclo se repetir mientras la calificacin sea diferente de 1.


2

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


Ciclos controlado por contador. Estos ciclos como su nombre lo indica son controlados por un contador, es decir en este tipo de ciclos se conoce el nmero de veces que este se repetir desde el inicio del ciclo. El ciclo que de forma natural es controlado por un contador es el ciclo for, en el caso de los ciclos while como ya se pudo ver se controlan de diferentes maneras una de ellas es por medio de un contador. Ejemplo: El siguiente fragmento muestra un ciclo do_while que controlado por un contador se repetir 10 veces. #include <stdio.h> #include <conio.h> void main() { int calif, contador=0; do { printf(Introduzca la primer calificacin ); scanf(%d,&calif); contador= contador+1; }while(contador<10); } Tipos de ciclos

do()-while
Sintaxis: do { Sentencia 1; Sentencia 2; Sentencia 3; : : Sentencia n; } while(condicion);
3

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


El ciclo do_while repite una sentencia o varias sentencias mientras la expresin es cierta. Se detiene cuando la expresin de convierte falsa. El ciclo do_while siempre se ejecuta al menos una vez, dado que la expresin controladora del ciclo se checa al final de cada iteracin. Ejemplo: El siguiente programa pide una serie de nmeros, determinando para cada uno si son pares o impares, este terminar cuando se teclee un * . #include <stdio.h> #include <conio.h> void main() { int num; char centinela; do { printf(Teclea un nmero ); scanf(%,&num); if(num%2==0) printf(Nmero par ); else printf(Nmero impar ); printf(Teclee * si desea terminar ); scanf(%c,&centinela); }while(centinela !=*); }

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

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


sentencia 1; sentencia 2; . . . sentencia n;

cuerpo del ciclo

} 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

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


{ } printf (*); contador++;

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.

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION

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.

Por ejemplo: x=1; for (;x<=10;x++) printf("su valor es %d",x);

for (x=1;x<=10;x++) printf("su valor es %d",x);

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

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERIA PROGRAMACION


scanf(%d,&x); printf(%d %d\n,x); getch();

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).

Das könnte Ihnen auch gefallen