Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

sentencia if

Sentencia if-then

La instrucción if-then es la forma más simple de instrucción de control, utilizada con frecuencia en la toma de decisiones y para cambiar el flujo de control de la ejecución del programa.

La sintaxis de la instrucción if-then es:

if condición then sentencias;

Donde condición es una condición booleana o relacional y sentencias es una instrucción simple o compuesta. Un ejemplo de una instrucción if-then es:

if a <= 20 then
   c := c+1;

Si la condición de la expresión booleana se evalúa como verdadera, se ejecutará el bloque de código dentro de la instrucción if. Si la expresión booleana se evalúa como falsa, se ejecutará el primer conjunto de código después del final de la instrucción if.

Miremos con un ejemplo completo:

Ejemplo

program ifExample;

var a: integer;

begin
  a:= 10;

  // se puede usar parentesis
  //
  // if (a < 20) then
  //
  if a < 20 then
      writeln("a menor que 20");
end.

salida

la salida será algo como:

minipas v.1.9.0
a menor que 20

Sentencia if-then-else

Una instrucción if-then puede ir seguida de una instrucción else opcional, que se ejecuta cuando la expresión booleana es falsa.

La sintaxis de la instrucción if-then-else es:

if condición then Sentencias1; else Sentencias2;

Donde Sentencias1 y Sentencias2 son sentencias diferentes.

En las sentencias if-then-else, cuando la condición de prueba es verdadera, se ejecuta la sentencia Sentencias1 y se omite Sentencias2, cuando la condición de prueba es falsa, se omite Sentencias1 y se ejecuta la sentencia Sentencias2.


A tener en cuenta:

En Minipas, cada sentencia debe terminar en punto y coma (;).

Ejemplo

program ifElseExample;
var
  a : integer;

begin
  a := 100;
  // se puede usar parentesis
  //
  // if (a < 20) then
  //
  if a < 20 then
      writeln("a es menor que 20");
  else
      writeln("a es mayor, el valor de a es:", a);
end.

salida

la salida será algo como:

minipas v.1.9.0
a es mayor, el valor de a es: 100

Sentencias if-then else if-then

Una instrucción if-then puede ir seguida de una instrucción else if-then-else opcional, lo cual resulta muy útil para comprobar varias condiciones utilizando una única instrucción if-then-else.

Ejemplo

program ifElse_ifElseExample;
var
  a: integer;

begin
  a := 100;

  if a = 10 then
      writeln("el valor de a es: 10");
  else if a = 20 then
      writeln("el valor de a es: 20");
  else if a = 30 then
      writeln("el valor de a es: 30");
  else
      writeln("Ninguno de los valores coincide.");
end.

salida

la salida será algo como:

minipas v.1.9.0
Ninguno de los valores coincide.

Instrucciones simples ó compuestas

Una instrucción simple es una línea de código que realiza una única acción. Estas instrucciones son directas:

if a <= 20 then
   c := c+1; // <- instrucción simple

Una instrucción compuesta es un bloque de código que puede contener cero o más instrucciones simples, ó incluso instrucciones compuestas dentro (anidadas). Se utiliza para agrupar varias acciones bajo un mismo control de flujo.

La sintaxis de una instrucción compuesta incluye begin y end, que delimitan el bloque de instrucciones:

if a <= 20 then begin // <- 'begin' indica el inicio del bloque
   c := c+1;
   writeln("El valor de C es:", c);
end // <- 'end' indica el fin del bloque

A tener en cuenta:

En minipas, cada bloque begin debe terminar con un end, pero este end no debe llevar punto y coma (;) al final.


Los ejemplos anteriores se componen de sentencias simples, ahora veamos un ejemplo utilizando sentencias compuestas:

Ejemplo

program ifStatemensExample;

var a: integer;

begin
  a := 50;

  if a = 10 then begin
      writeln("el valor de a es 10");
      a := a + 1;
      writeln("el valor de a es:", a);
  end
  else if a = 20 then begin
      writeln("el valor de a es 20");
      a := a * 2;
      writeln("el valor de a es:", a);
  end
  else begin
      writeln("el valor de a es diferente de 10 y 20");
      a := a - 1;
      writeln("el valor de a es:", a);
  end
end.

salida

la salida será algo como:

minipas v.1.9.0
el valor de a es diferente de 10 y 20
el valor de a es: 49

A tener en cuenta:

Se recomienda usar un bloque begin/end, cuando se tenga dos ó más instrucciones en un bloque if-then, if-then-else etc…

Sentencias if anidadas

Siempre es legal anidar sentencias if-else, lo que significa que se puede utilizar una sentencia if o else if dentro de otra sentencia if o else if. Minipas permite anidar hasta cualquier nivel, sin embargo, las sentencias anidadas pueden volverse complicadas, así que es importante mantener el código legible y organizado.

La sintaxis de una instrucción if anidada es la siguiente:

if condicion_1 then
   if condicion_2 then sentencias1;
else
   sentencias2;

otro ejemplo:

if condicion_1 then
   if condicion_2 then begin
      sentencias1
      sentencias2
   end
else begin
   if condicion_3 then begin
     if condicion_4 then begin
       sentencias3;
       sentencias4;
     end
   end
end

A tener en cuenta:

Recuerda que las sentencias anidadas pueden volverse complicadas, así que es importante mantener el código legible y organizado.

Ejemplo

program NestedIfElseExample;
var
   a, b: integer;

begin
   a := 100;
   b := 200;

   if a = 100 then
      if b = 200 then
         writeln("el valor de a es 100 y el valor de b es 200");
end.

salida

la salida será algo como:

minipas v.1.9.0
el valor de a es 100 y el valor de b es 200

Uso de if Anidadas en Situaciones Prácticas

Las sentencias if anidadas son útiles, por ejemplo, en situaciones donde deban verificarse múltiples criterios para cumplir con ciertas condiciones lógicas. Esto puede incluir:

  • Validaciones en entradas de usuario.
  • Cálculos que dependen de diferentes rangos.
  • Procesamiento de datos donde ciertos parámetros dependen de otros.

Consideraciones

  • Legibilidad: Las sentencias anidadas pueden volverse complicadas, así que es importante mantener el código legible y organizado. si anidas mucho, considera el uso de bloques begin/end.
  • Indentación: Usar una buena indentación ayuda a visualizar mejor la estructura anidada y la lógica del flujo del programa.
  • Manejo de Errores: Las sentencias anidadas pueden dificultar la identificación de errores, así que es aconsejable descomponer problemas complejos en funciones más manejables cuando sea posible.