Tiene que haber alguna forma de saber dónde termina la condición y comienza la rama. Hay muchas formas diferentes de hacerlo.
En algunos idiomas, no hay condicionales en absoluto , por ejemplo, en Smalltalk, Ser, la neolengua, Io, Ioke, Seph y Fancy. La ramificación condicional se implementa simplemente como un método normal como cualquier otro método. El método se implementa en objetos booleanos y se llama en un booleano. De esa manera, la condición es simplemente el receptor del método, y las dos ramas son dos argumentos, por ejemplo, en Smalltalk:
aBooleanExpression ifTrue: [23] ifFalse: [42].
En caso de que esté más familiarizado con Java, esto es equivalente a lo siguiente:
aBooleanExpression.ifThenElse(() -> 23, () -> 42);
En la familia de lenguajes Lisp, la situación es similar: los condicionales son solo funciones normales (en realidad, macros) y el primer argumento es la condición, el segundo y el tercer argumento son las ramas, por lo que son solo argumentos de funciones normales, y hay no se necesita nada especial para delimitarlos:
(if aBooleanExpression 23 42)
Algunos idiomas usan palabras clave como delimitadores, por ejemplo, Algol, Ada, BASIC, Pascal, Modula-2, Oberon, Oberon-2, Oberon activo, Componente Pascal, Zonnon, Modula-3:
IF aBooleanExpression THEN RETURN 23 ELSE RETURN 42;
En Ruby, puede usar una palabra clave o un separador de expresión (punto y coma o nueva línea):
if a_boolean_expression then 23 else 42 end
if a_boolean_expression; 23 else 42 end
# non-idiomatic, the minimum amount of whitespace required syntactically
if a_boolean_expression
23 else 42 end
# idiomatic, although only the first newline is required syntactically
if a_boolean_expression
23
else
42
end
Ir requiere que las ramas sean bloques y no permite expresiones o declaraciones, lo que hace que las llaves sean obligatorias. Por lo tanto, no se requieren paréntesis, aunque puede agregarlos si lo desea; Perl6 y Rust son similares a este respecto:
if aBooleanExpression { return 23 } else { return 42 }
Algunos idiomas usan otros caracteres no alfanuméricos para delimitar la condición, por ejemplo, Python:
if aBooleanExpression: return 23
else: return 42
La conclusión es: necesita alguna forma de saber dónde termina la condición y comienza la rama. Hay muchas formas de hacerlo, los paréntesis son solo uno de ellos.
THEN
).