Estructuras de control

Las estructuras de control son pieza fundamental en la construcción de programas ya que son las encargadas de modificar el flujo del programa, así como de realizar ciertas acciones dependiendo de los valores de diversas variables. Existen dos tipos de estructuras de control:

  1. Condicionales (selección)
  2. Repetitivas (iteración)

Estructuras condicionales

Las estructuras de selección o condicionales sirven para elegir la dirección del flujo de programa o el estado de una variable dependiendo de otro valor, las mas usadas son  if, if..else y switch.

La sentencia if

Es un mecanismo de ramificación que permite a diferentes bloques de código ser ejecutados bajo diferentes condiciones. Las condiciones son evaluadas en orden, de manera que, si la primera condición a evaluar es verdadera la lista de sentencias pertenecientes a ese bloque serán ejecutadas. Si ninguna condición a evaluar es cierta y si la sentencia else esta presente, su bloque de sentencias será ejecutado. Recuerde que la sentencia else es opcional. Las llaves de bloque pueden ser omitidas si se trata de una sola sentencia.

Sintaxis:

Ejemplo 1.  Se desea construir un programa que nos permita determinar cuál es el mayor de dos números se podría hacer de la siguiente forma:

Ejemplo 2. Ahora supongamos que se desea construir un programa que nos muestre un mensaje en pantalla informándonos si la edad ingresada es considerada como mayoría de edad:

Ahora veamos otro ejemplo, supongamos que deseamos construir un programa que nos indique si la persona es menor de edad, adulto o adulto mayor, para ellos deberemos de capturar la edad y determinar el rango de edades, antes de 18 años son menores, de 18 a 59 años son adultos y de mas de 60 años son adultos mayores:

Problema practico 1: elaborar un programa que nos indique cual de 2 rectángulos tiene el área mayor. Ambos rectángulos cuentan con base y altura variables.

Problema practico 2: elaborar un programa que determine el menor valor de 3 números.

NOTA: cuando la sentencia if tiene que realizar mas de 2 acciones es necesario encerrar entre llaves { }  el conjunto de instrucciones que se van a realizar, de lo contrario solo se ejecutará la primer instrucción que se encuentre después del if. Para mayor claridad analiza el ejemplo 1 y el ejemplo 2.

La sentencia switch

Permite probar una expresión para varios valores, y es comúnmente usada como reemplazo para múltiples sentencias if anidadas. La sentencia break es requerida entre cada sentencia case, ya que de otra forma la ejecución de sentencias seguiría en cascada. El caso default es opcional y será seleccionado en caso de que no halla sido elegido por un caso precedente. Recuerde, la sentencia switch únicamente trabaja con expresiones enteras y carácter.

Sintaxis:

Ejemplo. Se desea construir un programa que permita determinar los días de la semana, por ejemplo, podríamos asociar el valor 1 al lunes, el 2 al martes y así sucesivamente. El usuario ingresara el valor desde teclado y mostraremos el día al que corresponde el valor.

Otro ejemplo sería construir un programa que nos indique el tipo de descuento aplicado a un precio de boleto, por ejemplo: los lunes, martes, y jueves antes de las 18:00 hrs. se aplica un descuento de 30%. Los miércoles son de 2x1, es decir un 50% de descuento todo el día. Y los fines de semana el precio antes de las 15:00 horas es de 20% menos, después de ésa hora incrementa un 30%.

Otra forma de uso es empleando los caracteres, por ejemplo, suponga que dependiendo del grupo al que pertenezca (“a”, “b”  ó “c”), le aplicaran un descuento proporcional, generaremos un programa que nos identifique en que bloque de descuento nos encontramos.

NOTA: La sentencia switch SI utiliza bloques de inicio y fin { } , de tal forma que la instrucción case NO requiere de estos bloques, no importa cuantas instrucciones se tengan que ejecutar.

Otro punto importante es que la sentencia switch solo puede evaluar valores ORDINALES, es decir, solo valores enteros o tipo carácter, NO son validos valores reales, booleanos o cadenas.