Está en la página 1de 28

Control de flujo de programa

Referencias documentales
Luis

Joyanes Aguilar e Ignacio Zahonero Martnez, Programacin en C Metodologa, algoritmos y estructura de datos, Mc Graw Hill, pp. 123-197

Estructuras de control
Controlan

la secuencia o flujo de ejecucin de las sentencias. Las estructuras de control se dividen en tres grandes categoras en funcin del flujo de ejecucin: secuencia, seleccin y repeticin.

3.1.- Control secuencial

Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ({ y }) que se utiliza para especificar un flujo secuencial. { sentencia1; sentencia2; sentencia3; } El control fluye de la sentencia1 a la sentencia2 y as sucesivamente.

3.2 Control selectivo


Operadores relacionales
Los

operadores relacionales se usan normalmente en sentencias de seleccin (if) o de iteracin (while, for), que sirven para comprobar una condicin. Utilizando operadores relacionales se realizan operaciones de igualdad, desigualdad y diferencias relativas. < <= > >= == !=

Las sentencias if e if-else


Sentencia If
Cuando

se alcanza la sentencia if dentro de un programa, se evala la expresin entre parntesis que viene a continuacin de if. Si Expresin es verdadera, se ejecuta Accin; en caso contrario no se ejecuta Accin.

Sentencia if
Expresin falso

verdadero Accin

Sentencia if-else
En

este formato Accin1 y Accin2 son individualmente, o bien una nica sentencia que termina en un punto y coma (;) o un grupo de sentencias encerrado entre llaves. Cuando se ejecuta la sentencia if -else, se evala Expresin. Si Expresin es verdadera, se ejecuta Accin1 y en caso contrario se ejecuta Accin2

Sentencia if-else
Expresin

verdadero Accin1

falso Accin2

Ejemplo:
Printf("obtener el mayor de 2 nmeros"); If(a>b) printf("%f es mayor a %f",a,b); Else printf("%f es mayor a %f",b,a);

Operadores lgicos
Los operadores lgicos de C son: not ( ! ), and (&&) y or (||).
El

operador lgico ! (not, no) produce falso (cero) si su operando es verdadero (distinto de cero) y viceversa.

El

operador lgico && (and, y) produce verdadero slo si ambos operandos son verdadero (no cero); si cualquiera de los operandos es falso produce falso.

El

operador lgico I I(or, o) produce verdadero si cualquiera de los operandos es verdadero (distinto de cero) y produce falso slo si ambos operandos son falsos.

Operadores condicionales
El

operador condicional, ? : , es un operador que devuelve un resultado cuyo valor depende de la condicin comprobada. El operador condicional se utiliza para reemplazar a la sentencia ifelse lgica en algunas situaciones. El formato del operador condicional es: expresin-c ? expresin-v : expresin-f;

Seleccin mltiple-if anidados y sentencias switch


Una

sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a su vez una sentencia if. Una sentencia if anidada se puede utilizar para implementar decisiones con varias alternativas o multi-alternativas.

Ejemplo:
Printf("obtener el mayor de 3 nmeros"); if(a>b) { if(a>c) printf("%f es el numero mayor",a); else printf("%f es el numero mayor",c); } else { if(b>c) printf("%f es el numero mayor",b); else printf("%f es el numero mayor",c); }

Sentencia switch

La sentencia switch es una sentencia C que se utiliza para seleccionar una de entre mltiples alternativas. La sentencia switch es especialmente til cuando la seleccin se basa en el valor de una variable simple o de una expresin simple denominada expresin de control o selector. El valor de esta expresin puede ser de tipo int o char, pero no de tipo float ni double.

Ejemplo:
puts("imprimir, 1.-cuadrado, 2.-rectngulo o 3.-circulo"); scanf("%f",&o); switch(o) {

case 1: case 2: case 3: default:

puts("cuadrado"); break; puts("rectngulo"); break; puts("circulo"); break; puts("opcin no valida"); break;

3.3 Control repetitivo


Un

ciclo es cualquier construccin de programa que repite una sentencia o secuencia de sentencias un nmero de veces. La sentencia (o grupo de sentencias) que se repiten en un bloque se denomina cuerpo del ciclo y cada repeticin del cuerpo del ciclo se llama iteracin del ciclo.

Sentencia while
Las

sentencias del cuerpo del ciclo se repiten mientras que la expresin lgica (condicin del ciclo) sea verdadera. Cuando se evala la expresin lgica y resulta falsa, se termina y se sale del ciclo y se ejecuta la siguiente sentencia de programa despus de la sentencia while.

Sentencia while
Condicin
falso

verdadero
sentencia

Ejemplo:
int o=1,n=0; while(o==1) { n+=1; printf("%f",n); puts("mostrar siguiente numero?1.-si,0.-no"); scanf("%f",&o); }

Sentencia do-while
La

sentencia do-while se utiliza para especificar un ciclo condicional que se ejecuta al menos una vez. Esta situacin se suele dar en algunas circunstancias en las que se ha de tener la seguridad de que una determinada accin se ejecutar una o varias veces, pero al menos una vez.

Sentencia do-while

sentencia

verdadero

Condicin falso

Ejemplo:
Int o, n=0; do { n+=1; printf("%f",n); puts("mostrar siguiente numero?1.-si,0.-no"); scanf("%f",&o); } while(o==1)

Sentencia for

La sentencia for es un mtodo para ejecutar un bloque de sentencias un nmero fijo de veces. El bucle for se diferencia del bucle while en que las operaciones de control del bucle se sitan en un solo sitio: la cabecera de la sentencia.

for ( Inicializacin; Condicin/Iteracin ; Incremento)

Ejemplo:
puts(Imprimir los primeros n nmeros enteros);

puts(introducir la cantidad de nmeros); scanf(%f,&n); for(i=1;i<n;i++) printf(i=%f,i);

Ciclos anidados
Es

posible anidar ciclos. Los bucles anidados constan de un ciclo externo con uno o ms ciclos internos. Cada vez que se repite el ciclo externo, los ciclos internos se repiten, se vuelven a evaluar los componentes de control y se ejecutan todas las iteraciones requeridas.

Ejemplo:
puts("Introduce 2 numeros"); scanf("%d",&Xultimo); scanf("%d",&Yultimo); for (x=1; x<=Xultimo; x++) for (y=1; y<=Yultimo; y++) { int producto; producto = x*y; printf(" %d * %d = %d\n", x,y,producto); }

También podría gustarte