Difference between revisions of "Else/es"

From Lazarus wiki
Jump to navigationJump to search
m (→‎If then else: Fixed syntax highlighting)
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:
  
 
= [[If]] [[Then|then]] else =
 
= [[If]] [[Then|then]] else =
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
   if (condition)
 
   if (condition)
 
   then true_statement
 
   then true_statement
Line 18: Line 19:
 
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|begin]] ... [[End|end]].
 
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|begin]] ... [[End|end]].
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   if boolean_condition then
 
   if boolean_condition then
 
     begin
 
     begin
Line 35: Line 36:
 
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:
 
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:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   if a then //comienza if a
 
   if a then //comienza if a
 
       if b then //comienza if b (si a = True)
 
       if b then //comienza if b (si a = True)
Line 48: Line 49:
  
 
En este caso, "else" corresponde a "if a".
 
En este caso, "else" corresponde a "if a".
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
   if a then  //comienza if a
 
   if a then  //comienza if a
 
       if b then  //comienza if b (si a = True)
 
       if b then  //comienza if b (si a = True)
Line 59: Line 61:
 
         end;
 
         end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
En este caso, el ''else'' corresponde a "if b". Si esto casusa una ambigüedad, se puede resolver con una sentencia "else" vacía:
 
En este caso, el ''else'' corresponde a "if b". Si esto casusa una ambigüedad, se puede resolver con una sentencia "else" vacía:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
   if a then  //comienzo if a
 
   if a then  //comienzo if a
 
       if b then  //comienzo de if b (si a = True)
 
       if b then  //comienzo de if b (si a = True)
Line 73: Line 76:
 
       end;
 
       end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
También se puede resolver utilizando bloques begin..end.
 
También se puede resolver utilizando bloques begin..end.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
   if a then   
 
   if a then   
 
     begin //comienzo if a (si a = True)
 
     begin //comienzo if a (si a = True)

Latest revision as of 07:41, 14 January 2020

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