Computación para Ingenieros Sentencias de control de flujo Las sentencias de un programa en C se ejecutan secuencialmente, esto es, cada una a continuación de la anterior empezando por la primera y acabando por la última. El lenguaje C dispone de varias sentencias para modificar este flujo secuencial para guiar la ejecución del programa, indicando al compilador cual es la próxima sentencia a ejecutar, cuantas veces deben ejecutarse un número de sentencias, qué camino debe seguir, etc. Sentencia IF/ELSE Se considera una sentencia de bifurcación o selección y permite ejecutar o no una sentencia o un conjunto de sentencias según se cumpla o no una determinada condición. Esta sentencia en su forma más simple sólo comprende un if [condición] que determina si se deben ejecutar o no las sentencias que vienen a continuación, dependiendo si se cumple o no dicha condición. Su forma básica sería la siguiente: If (expresión) sentencia; En esta sentencia se evalúa expresión. Si el resultado es verdadero, se ejecuta sentencia; si el resultado es falso, se salta a sentencia y se prosigue en la línea siguiente. Hay que recordar que sentencia puede ser una sentencia simple o un conjunto de sentencias (en caso de que fueran varias deberían ir contenidas en bloque entre llaves {…}) Ejemplo: Sentencia SWITCH Ésta es una sentencia de bifurcación o selección y es similar a la secuencia if/else con múltiples ramificaciones, aunque con algunas diferencias. En este caso se evalúa una expresión (condición) y dependiendo del valor que devuelva, que pueden ser múltiples valores, se ejecutará un bloque de sentencias y otro. En el caso de la sentencia if/else, se evaluaba una condición y sólo podían ejecutarse dos bloques de sentencias dependiendo de si esa condición se cumplía o no. La forma general de switch es la siguiente: Sentencias de control Ing. Tanya I. Arteaga Ricci Computación para Ingenieros switch (expresión){ case valor1: case valor2: ... case valorN: default: } sentencia; break; sentencia; break; sentencia; Break; sentencia; break; La sentencia switch debe interpretarse de la siguiente manera. En primer lugar, se evalúa expresión y se considera el valor resultante de dicha evaluación. Dependiendo de con qué coincida ese valor (valor1, valor2, …, valorN), se ejecutará un grupo de sentencias u otro. Si no coincide con ningún de los valores definidos, se ejecutará el grupo de sentencias se ejecutará el grupo de sentencias contenido en la opción default. La opción default es opcional, por lo que, si no existe y el valor de expresión no coincide con ninguna de las posibilidades, no se ejecutará ningún bloque de sentencias. Ejemplo: Sentencia WHILE (Iteración) Esta sentencia se considera una sentencia de tipo bucle que permite repetir una serie de veces la ejecución de un bloque de código. Esta repetición se realiza hasta que se cumpla una determinada condición de tipo lógico o aritmético. En su forma general seria: while (condición) { Sentencia1; Sentencia2; … } Sentencias de control Ing. Tanya I. Arteaga Ricci Computación para Ingenieros La condición se evalúa antes de la ejecución del bloque de sentencias y, en caso de que se cumpla dicha condición, es decir, que su resultado sea true, se ejecutará el bloque de sentencias contenido entre llaves. Se ejecutará de forma interactiva ese bloque de sentencias hasta que la condición sea falsa, en cuyo caso el programa ejecutará la siguiente línea de código que sigue al bloque. En este caso, la condición para decidir si sale o no del bucle está antes de las sentencias, por lo que es posible que esas sentencias no se lleguen a ejecutar ni una sola vez. Ejemplo: Sentencia DO..WHILE (Iteración) Se considera una sentencia de tipo bucle que se comporta exactamente igual que la sentencia while, con la diferencia de que dicha evaluación se realiza al final de cada pasada en lugar de al principio, por lo que se asegura que, al menos, se ejecutará una vez el bloque de sentencias. Su forma general es la siguiente: do { sentencia1; sentencia2; } while (condición); Ejemplo: Sentencias de control Ing. Tanya I. Arteaga Ricci Computación para Ingenieros Sentencia FOR (Iteración) La sentencia de control for se considera una sentencia de tipo bucle que, al igual que while, permite repetir una serie de veces la ejecución de un bloque de código. La ventaja de la sentencia for sobre while está en que en la cabecera de la construcción for se tiene toda la información sobre cómo se inicializan, controlan y actualizan las variables de bucle. La evaluación de la condición se realiza al principio de la ejecución. La forma general de esta sentencia es la siguiente: for (expresion1; expresion2; expresion3) { Sentencias; } En una sentencia for, antes de iniciarse el bucle, se ejecuta expresion1, que puede ser una o más sentencias que asignan valores iniciales a ciertas variables o contadores. A continuación se evalúa expresion2 y, si es false, se prosigue en la sentencia siguiente a la estructura for, es decir, se sale del bucle, si true, se ejecutan las sentencias inmediatamente seguidas al for, además de expresion3 y, seguidamente, se vuelve a evaluar expresion2. El proceso prosigue hasta que expresion2 sea false. Ejemplo: Sentencias de control Ing. Tanya I. Arteaga Ricci