Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Control de Flujo de Programa
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.
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.
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. < <= > >= == !=
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;
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) {
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.
Ejemplo:
puts(Imprimir los primeros n nmeros enteros);
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); }