IF-THEN-ELSE en Pascal

Dado que una condición produce un valor verdadero o falso, se necesita una sentencia de control que ejecute determinada sentencia si la condición es verdadera , y otra si es falsa. En Pascal esta alternativa se realiza con la sentencia IF-THEN-ELSE. A continuación se describe el diagrama de flujo y el formato de la sentencia.

Formatos de la sentencia IF:

if <condición>
  then
<instrucción_1>
  else
<instrucción_2>
if <condición> then
<instrucción_1>
  else
<instrucción_2>

En este caso, primero se evalúa condición y si el resultado arroja un valor de verdad(verdadero), se ejecuta instrucción_1 ; en caso contrario se ejecuta instrucción_2.

La condición es una expresión Booleana que puede ser verdadera o falsa (true o false). Una expresión Booleana se forma comparando valores de las expresiones utilizando operadores de relación (relacionales) o comparación y los operadores lógicos.

Ejemplos:

Omisión de cláusula else:

Program Edades;
Uses Crt;
Var edad:  integer ;
begin WriteLn('Escribe tu edad : ');
  ReadLn(edad);
  if edad >= 18 then WriteLn('!Eres Mayor de edad !');
  WriteLn('Esta instrucción siempre se ejecuta');
  ReadKeyend.

Nota: Antes de la palabra end no se debe anteponer un punto y coma como se muestra en este ejemplo. El hacerlo generaria una sentencia vacia (sentencia que no hace nada)

Utilización de cláusula else:

Program Edades;
Uses Crt;
Var edad : integer ;
begin WriteLn('Escribe tu edad : ') ;
  ReadLn(edad) ;
  if edad >= 18 then  WriteLn('!Eres Mayor de edad !')
  else WriteLn('!Eres Menor de edad !');
  WriteLn('Esta instrucción siempre se ejecuta'); 
  ReadKeyend.

Nota: Antes de la cláusula else no se antepone un punto y coma, si lo hubiese el compilador producirá un mensaje de error, puesto que no existe ninguna sentencia en Pascal que comience con else. La parte else es opcional, pero la ejecución siempre continuará en otra instrucción.

En lugar de utilizar instrucciones simples, se pueden usar bloques de instrucciones, como acontinuación se muestra:

Program Edades;
Uses Crt;
Var edad:  integer ;
begin WriteLn('Escribe tu edad : ') ;
  ReadLn(edad) ;
  if edad >= 18 then begin WriteLn('!Eres Mayor de edad !');
      WriteLn('!Ya puedes Votar!') 
    end else begin WriteLn('!Eres Menor de edad !');
      WriteLn('!Aún no puedes votar!')
    end;
  WriteLn('Esta instrucción siempre se ejecuta');
  ReadKeyend.

Sentencia IF anidadas:

Program NumMayor;
Uses Crt;
Var n1,n2,n3,mayor :  integer ;
begin  WriteLn('Escribe tres numeros enteros : '); 
  ReadLn(n1,n2,n3);
  if n1>n2 then if n1>n3 then  mayor:=n1 else mayor:=n3  else if n2>n3 then mayor:=n2 else  mayor:=n3;
  WriteLn('El mayor es ',mayor);
  ReadKeyend.