control de flujo de programa

28
Control de flujo de programa

Upload: ariel-galvan

Post on 29-Jun-2015

592 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Control de flujo de programa

Control de flujo de programa

Page 2: Control de flujo de programa

Referencias documentalesLuis Joyanes Aguilar e Ignacio

Zahonero Martínez, “Programación en C Metodología, algoritmos y estructura de datos”, Mc Graw Hill, pp. 123-197

Page 3: Control de flujo de programa

Estructuras de controlControlan la secuencia o flujo

de ejecución de las sentencias. Las estructuras de control se dividen en tres grandes categorías en función del flujo de ejecución: secuencia, selección y repetición.

Page 4: Control de flujo de programa

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.

Page 5: Control de flujo de programa

3.2 Control selectivo

Operadores relacionales

Los operadores relacionales se usan normalmente en sentencias de selección (if) o de iteración (while, for), que sirven para comprobar una condición. Utilizando operadores relacionales se realizan operaciones de igualdad, desigualdad y diferencias relativas.

< <= > >= == !=

Page 6: Control de flujo de programa

Las sentencias if e if-elseSentencia If Cuando se alcanza la sentencia if dentro

de un programa, se evalúa la expresión entre paréntesis que viene a continuación de if. Si Expresión es verdadera, se ejecuta Acción; en caso contrario no se ejecuta Acción.

Page 7: Control de flujo de programa

Sentencia if

Expresión

Acción

verdadero

falso

Page 8: Control de flujo de programa

Sentencia if-else En este formato Acción1 y Acción2 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 evalúa Expresión. Si Expresión es verdadera, se ejecuta Acción1 y en caso contrario se ejecuta Acción2

Page 9: Control de flujo de programa

Sentencia if-else

Expresión

Acción1

verdadero falso

Acción2

Page 10: Control de flujo de programa

Ejemplo:Printf("obtener el mayor de 2 números");

If(a>b)printf("%f es mayor a %f",a,b);

Elseprintf("%f es mayor a %f",b,a);

Page 11: Control de flujo de programa

Operadores lógicos

Los operadores lógicos de C son: not ( ! ), and (&&) y or (||).

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

Page 12: Control de flujo de programa

El operador lógico && (and, y) produce verdadero sólo si ambos operandos son verdadero (no cero); si cualquiera de los operandos es falso produce falso.

El operador lógico I I(or, o) produce verdadero si cualquiera de los operandos es verdadero (distinto de cero) y produce falso sólo si ambos operandos son falsos.

Page 13: Control de flujo de programa

Operadores condicionalesEl operador condicional, ? : , es un

operador que devuelve un resultado cuyo valor depende de la condición comprobada.

El operador condicional se utiliza para reemplazar a la sentencia if-else lógica en algunas situaciones. El formato del operador condicional es:

expresión-c ? expresión-v : expresión-f;

Page 14: Control de flujo de programa

Selección múltiple-if anidados y sentencias switchUna 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.

Page 15: Control de flujo de programa

Ejemplo:Printf("obtener el mayor de 3 números");if(a>b){

if(a>c)printf("%f es el numero mayor",a);

elseprintf("%f es el numero mayor",c);

}else{

if(b>c)printf("%f es el numero mayor",b);

elseprintf("%f es el numero mayor",c);

}

Page 16: Control de flujo de programa

Sentencia switch La sentencia switch es una sentencia C

que se utiliza para seleccionar una de entre múltiples alternativas.

La sentencia switch es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector. El valor de esta expresión puede ser de tipo int o char, pero no de tipo float ni double.

Page 17: Control de flujo de programa

Ejemplo:puts("imprimir, 1.-cuadrado, 2.-rectángulo o 3.-circulo");

scanf("%f",&o);

switch(o){

case 1:puts("cuadrado");break;case 2:puts("rectángulo");break;case 3:puts("circulo");break;default:puts("opción no valida");break;

}

Page 18: Control de flujo de programa

3.3 Control repetitivo Un ciclo es cualquier construcción de

programa que repite una sentencia o secuencia de sentencias un número de veces. La sentencia (o grupo de sentencias) que se repiten en un bloque se denomina cuerpo del ciclo y cada repetición del cuerpo del ciclo se llama iteración del ciclo.

Page 19: Control de flujo de programa

Sentencia whileLas sentencias del cuerpo del ciclo

se repiten mientras que la expresión lógica (condición del ciclo) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se termina y se sale del ciclo y se ejecuta la siguiente sentencia de programa después de la sentencia while.

Page 20: Control de flujo de programa

Sentencia while

Condición

sentencia

verdadero

falso

Page 21: Control de flujo de programa

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

}

Page 22: Control de flujo de programa

Sentencia do-whileLa sentencia do-while se utiliza para

especificar un ciclo condicional que se ejecuta al menos una vez. Esta situación se suele dar en algunas circunstancias en las que se ha de tener la seguridad de que una determinada acción se ejecutará una o varias veces, pero al menos una vez.

Page 23: Control de flujo de programa

Sentencia do-while

Condición

sentencia

verdadero

falso

Page 24: Control de flujo de programa

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)

Page 25: Control de flujo de programa

Sentencia for La sentencia for es un método para

ejecutar un bloque de sentencias un número fijo de veces. El bucle for se diferencia del bucle while en que las operaciones de control del bucle se sitúan en un solo sitio: la cabecera de la sentencia.

for ( Inicialización; Condición/Iteración ; Incremento)

Page 26: Control de flujo de programa

Ejemplo:

puts(“Imprimir los primeros n números enteros“);

puts(“introducir la cantidad de números“);scanf(“%f“,&n);

for(i=1;i<n;i++)printf(“i=%f“,i);

Page 27: Control de flujo de programa

Ciclos anidados Es posible anidar ciclos. Los bucles

anidados constan de un ciclo externo con uno o más 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.

Page 28: Control de flujo de programa

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

}