Permite seleccionar o reproducir expresiones mediante estructuras de control. Si bien las expresiones analizadas en el capítulo anterior permiten escribir programas totalmente lineales y secuenciales, en la mayoría de los programas se debe decidir si ejecutar o no ciertas órdenes según los datos, mediante estructuras condicionales y repetir la ejecución de los conjuntos de órdenes utilizando estructuras repetitivas. El objetivo de este capítulo es la redacción y uso de estas estructuras en lenguaje C.
Entre las estructuras condicionales, las más utilizadas son dos y el lenguaje C tiene dos estructuras (if) y una opción (switch). En la primera se elige entre dos ramas en función del valor de una expresión lógica. En la segunda, sin embargo, se pueden poner tantas ramas como se desee.
C es muy rico en estructuras repetitivas, ya que tiene tres tipos: mientras (while), estribillo (do/while) y cambiando (for). Sus características serán analizadas más adelante.
Esta estructura o sentencia está en cualquier lenguaje y en C mata las características generales, es decir, se evalúa una expresión lógica y se ejecuta la rama correspondiente a la siguiente o en su defecto ri (else) en función del resultado.
La sintaxis estructural es la siguiente:
Como puede observarse, el ramal es opcional, distinguiendo la estructura completa o simple en función de la aparición.
Por ejemplo, la estructura if que aparece en la parte siguiente del programa es sencilla.
En cambio, en la siguiente parte tenemos toda la estructura:
Hay que tener en cuenta los siguientes matices:
Esta estructura permite generar el número de ramas que deseamos según el valor de una expresión, comenzando cada rama por una palabra clave case (excepto la última, que puede empezar por la palabra clave default). La sintaxis correspondiente es:
Como se puede observar, las expresiones en las ramas son opcionales como el ramal default. Si en una rama se coloca más de una expresión, no hay que poner{ y}, pero cada uno debe acabar con el carácter.
Cuando se encuentra un swicth en la ejecución se evalúa la expresión de baldin y se busca en función del valor en que rama la expresión contable tiene el mismo valor. Si se encuentran estas ramas, se realizan las sentencias correspondientes a esa rama y a las siguientes. En la estructura “case” de Pascal se realizan únicamente las expresiones correspondientes a la rama. No obstante, si C lo desea, la última expresión de las ramas será breas
...Si el valor de la expresión no se encuentra en las ramas, se realizarán las expresiones de la rama default, si se ha escrito esta rama.
En el programa 2 se explica el uso convencional del switch (utilizado por el break).
La estructura repetitiva más general es como la sentencia “while-do” de Pascal. Desde el punto de vista sintáctico:
Se evalúa la expresión de baldin y si es cierta (no Ø) se realizan las expresiones propias de la estructura y se vuelve a evaluar la expresión, formando un bigal.
Cuando la evaluación de la expresión es falsa pasa a la siguiente sentencia.
La expresión entre paréntesis es la condición de repetición y el cuerpo en el que se repite la otra expresión o conjunto de expresiones. Si el cuerpo tiene varias sentencias al principio y al final son necesarias. En el programa 4 se puede ver un uso.
While
en esta modificación de la estructura, la evaluación de la condición se produce al final del ablandamiento. Por tanto, en esta estructura de do-while el cuerpo se ejecuta al menos una vez. Por el contrario, en la estructura while puede ocurrir que la primera evaluación sea falsa. En el resto son exactamente iguales.
La sintaxis de la estructura es la siguiente:
En el programa 5 se pueden ver los cambios realizados en el programa del factorial do-while.
if
se utiliza la nueva para que los factoriales de Ø y 1 se ejecuten correctamente.
En el siguiente capítulo continuaremos con las estructuras y con la ayuda de ejemplos profundizaremos en el uso de estructuras de control.