4.3 Control del flujo de un programa

El flujo (orden en que se ejecutan las sentencias de un programa) es secuencial si no se especifica otra cosa. Este tipo de flujo significa que las sentencias se ejecutan en secuencia, una después de otra, en el orden en que se sitúan dentro del programa. Para cambiar esta situación se utilizan las estructuras que permiten modificar el flujo secuencial del programa. Así, las estructuras de selección se utilizan para seleccionar las sentencias que se han de ejecutar a continuación y las estructuras de repetición (repetitivas o iterativas) se utilizan para repetir un conjunto de sentencias.

4.3.1 Estructura secuencial

Una estructura secuencial es aquella en la cual una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se sitúan las instrucciones.

4.3.2 Estructura selectiva

Una estructura selectiva es aquella en que se ejecutan unas acciones u otras según se cumpla o no una determinada condición.

Simple: Se evalúa la condición y si ésta da como resultado verdad se ejecuta una determinada acción o grupo de acciones; en caso contrario se saltan dicho grupo de acciones.

Doble: Cuando el resultado de evaluar la condición es verdad se ejecutará una determinada acción o grupo de acciones y si el resultado es falso otra acción o grupo de acciones diferentes.

4.3.3 Estructura repetitiva

Las acciones del cuerpo del bucle se repiten mientras o hasta que se cumpla una determinada condición. Es frecuente el uso de contadores o banderas para controlar un bucle.

Mientras: Lo que caracteriza este tipo de estructura es que las acciones del cuerpo del bucle se realizan cuando la condición es cierta. Además, se pregunta por la condición al principio.

4.3.4 Anidamiento

Tanto las estructuras selectivas como las repetitivas pueden ser anidadas, e introducidas unas en el interior de otras. Una estructura selectiva múltiple es un caso especial de varias estructuras selectivas dobles anidadas.

si <condición 1> entonces
  <acciones 1>
si_no
  si <condición 2> entonces
    <acciones 2>
  si_no
    si <condición 3> entonces
      <acciones 3>
    si_no
      <acciones X>
    fin_si
  fin_si
fin_si

Cuando se inserta un bucle dentro de otro la estructura interna ha de estar totalmente incluida dentro de la externa.

mientras <expresión lógica 1> hacer
  mientras <expresión lógica 2> hacer
    <acciones>
  fin_mientras
fin_mientras

¿Si la expresión lógica 1 siempre es verdadera un \(n_1\) número de veces y la expresión lógica 2 siempre es verdadera un número de veces \(n_2\), las acciones que componen el bucle más interno cuántas veces se ejecutarán?