Else/es

From Free Pascal wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru)

Else at Language Reference

Else es una keyword que estable que acción hacer si la condición evaluada es false.

If then else

  if (condition)
  then true_statement
  else false_statement;

Se evalúa el valor de condition, si resulta ser verdadero (true), se ejecuta true_statement, caso contrario se ejecuta false_statement. Si el valor del condicional no arroja un valor booleano ocurrirá un error.

Más sentencias en la sentencia "if then else"

Si se necesitan dos o más sentencias para true_statement o false_statement, el grupo de sentencias deben ubicarse dentro de un Block begin ... end.

  if boolean_condition then
    begin
      statement_one;
      statement_two;
    end 
  else
    begin
      statement_three;
      statement_four;
    end;

Normalmente la sentencia "else" es una excepción especial a la regla que establece que cada sentencia debe ser seguida por un punto y coma. Ni la palabra reservada "else" ni la sentencia que la precede inmediatamente deben ser seguidas por punto y coma. En el ejemplo precedente, la primer sentencia "end" no es seguida por punto y coma pero la última sí.

Sin embargo, en el caso de sentencias "if" anidadas, si el else corresponde al if "interno", no debe haber un punto y coma antes del else, pero si el else corresponde hacia fuera del else, sí debe haber un punto y coma antes:

  if a then //comienza if a
      if b then //comienza if b (si a = True)
        begin
           (..) //bloque para if b = True
        end;  //fin de if b
    else  //else de if a porque lo precede un sentencia end finalizada en punto y coma
      begin
         (..) //bloque para if a = False
      end;

En este caso, "else" corresponde a "if a".

  if a then  //comienza if a
      if b then  //comienza if b (si a = True)
        begin
           (..) //bloque para if b = True
        end
      else  //else de if b porque lo precede una sentencia que no finaliza en punto y coma
        begin
           (..)  //bloque para if b = False
        end;

En este caso, el else corresponde a "if b". Si esto casusa una ambigüedad, se puede resolver con una sentencia "else" vacía:

  if a then  //comienzo if a
      if b then  //comienzo de if b (si a = True)
        begin
           (..)  //bloque para if b = True
        end
      else //else "vacío" de if b
  else //else de if a (si a = false)
      begin
           (..) //bloque para if a = False
      end;

También se puede resolver utilizando bloques begin..end.

  if a then  
    begin //comienzo if a (si a = True)
      if b then  //comienzo de if b (si a = True)
        begin
           (..)  //bloque para if b = True
        end;
    end //fin de if a (si a = True)
  else //else de if a (si a = false)
    begin
         (..) //bloque para if a = False
    end;


Keywords: begindoelseendforifrepeatthenuntilwhile