Download - Control de flujo de programa
![Page 1: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/1.jpg)
Control de flujo de programa
![Page 2: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/2.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/3.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/4.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/5.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/6.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/7.jpg)
Sentencia if
Expresión
Acción
verdadero
falso
![Page 8: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/8.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/9.jpg)
Sentencia if-else
Expresión
Acción1
verdadero falso
Acción2
![Page 10: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/10.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/11.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/12.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/13.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/14.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/15.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/16.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/17.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/18.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/19.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/20.jpg)
Sentencia while
Condición
sentencia
verdadero
falso
![Page 21: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/21.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/22.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/23.jpg)
Sentencia do-while
Condición
sentencia
verdadero
falso
![Page 24: Control de flujo de programa](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/24.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/25.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/26.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/27.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022081718/5571f97949795991698fa5e8/html5/thumbnails/28.jpg)
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);
}