Articulo de referencia

Condicional (programación informática)

Diagrama de flujo if-then-else Un diagrama de flujo anidado if-then-else En programación informática , una instrucción condicional dirige el flujo de control del programa en fun...

Diagrama de flujo if-then-else
Un diagrama de flujo anidado if-then-else

En programación informática , una instrucción condicional dirige el flujo de control del programa en función del valor de una condición ; una expresión booleana . Una expresión condicional se evalúa a un valor sin modificar el flujo de control.

Muchos lenguajes de programación (como C ) tienen expresiones y sentencias condicionales específicas. En la programación funcional pura , una expresión condicional no tiene efectos secundarios; sin embargo, muchos lenguajes de programación funcional con expresiones condicionales (como Lisp) sí los admiten.

Declaración condicional

Sentencia if-then-else

Aunque la sintaxis de una instrucción if-then-else varía según el lenguaje, la sintaxis general se muestra a continuación como pseudocódigo . La parte representada por el marcador de posición de condición es una expresión que se evalúa como verdadera o falsa. Si es verdadera, el control pasa a consequent y, cuando se completa, a after end if. Si es falsa, el control pasa a alternative y, cuando se completa, a after end if. Como la cláusula else es opcional, esta parte puede omitirse. Normalmente, tanto consequent como alternative pueden ser una sola instrucción o un bloque de instrucciones.else alternative

si condición entonces consecuente sino alternativa fin si

El siguiente ejemplo, también en pseudocódigo, reemplaza los marcadores de posición con lógica de ejemplo.

Si stock = 0 entonces mensaje = 'pedir nuevo stock' sino mensaje = 'hay stock' fin si

Historia y desarrollo

En los primeros lenguajes de programación, especialmente en los dialectos de BASIC , una sentencia if-then-else solo podía contener sentencias goto, pero esto solía generar código espagueti difícil de leer . Como resultado, la programación estructurada , que admite el flujo de control mediante bloques de código, ganó popularidad hasta convertirse en la norma en la mayoría de las variantes de BASIC y en todos los lenguajes. Estos mecanismos y principios se basaron en la familia de lenguajes ALGOL , incluyendo Pascal y Modula-2 . Si bien es posible usar goto de forma estructurada, la programación estructurada lo facilita. Una sentencia if-then-else estructurada es uno de los elementos clave de la programación estructurada y está presente en la mayoría de los lenguajes populares como C , Java , JavaScript y Visual Basic .

Colgando otra cosa

Por convención, una elsecláusula, al igual que la thencláusula, responde a la cláusula precedente más cercana if. Sin embargo, la semántica de las condicionales anidadas en algunos lenguajes antiguos, como ALGOL 60, era poco clara; la sintaxis era insuficiente para especificar siempre la misma ifcláusula predicativa. Por lo tanto, el analizador sintáctico podía emparejar aleatoriamente la cláusula elsecon cualquiera de las posibles múltiples ifcláusulas en la jerarquía anidada prevista.

Por ejemplo, consideremos la siguiente afirmación:
Si A entonces si B entonces S sino S2
o la misma afirmación pero con sangría para mayor claridad:
Si A entonces si B entonces S sino S2
puede analizarse como significa:
si A entonces ( si B entonces S ) si no S2 fin
si A entonces ( si B entonces S ) si no S2 fin
o como significado:
si A entonces ( si B entonces S sino S2 )
si A entonces ( si B entonces S sino S2 ) fin

Esto se conoce como el problema del else colgante . Se resuelve de varias maneras, dependiendo del lenguaje (en algunos, mediante una sintaxis explícita de finalización de bloque (como end if) o un encapsulamiento de bloque, como llaves ( {}).

Encadenamiento

El encadenamiento de condicionales se suele proporcionar en un lenguaje mediante una estructura `else-if`. Solo se ejecutan las instrucciones que siguen a la primera condición que es verdadera. Las demás instrucciones se omiten. En pseudocódigo de ejemplo:

si condición1 entonces bloque1 sino si condición2 entonces bloque2 sino si condición3 entonces bloque3 ... sino bloque4 fin si

En el siguiente pseudocódigo, una tienda ofrece hasta un 30% de descuento en un artículo. Si el descuento es del 10%, entonces la primera condición if es verdadera y "Tienes que pagar 30 dólares." se imprime. Todas las demás instrucciones debajo de esa primera instrucción if se omiten.

Si el descuento es menor que el 11 % , entonces imprime "Tienes que pagar $30." Si no, si el descuento es menor que el 21 % , entonces imprime "Tienes que pagar $20." Si no , si el descuento es menor que el 31 % , entonces imprime "Tienes que pagar $10." Fin de la condición.

Solo end ifse necesita uno si se usa else ifen lugar de elseseguido de if.

En ALGOL 68 , el “Informe preliminar” de 1968 (distribuido como suplemento del Boletín ALGOL n.º 26) todavía utilizaba la palabra clave en negrita elsf en condicionales “contraídos”. [ 1 ] La ortografía elif se estandarizó posteriormente en el “Informe revisado sobre el lenguaje algorítmico ALGOL 68” (1973), que enumera tanto las palabras en negrita como sus símbolos “abreviados”, donde elif corresponde a en la forma compacta . [ 2 ]if ~ then ~ elif ~ else ~ fi|:( ~ | ~ |: ~ | ~ | ~ )

En Ada , la palabra clave elseif es azúcar sintáctico para las dos palabras . PHP también admite una palabra clave [ 3 ] tanto para sus sintaxis de llaves como de dos puntos. Perl y Ruby proporcionan la palabra clave para evitar la gran cantidad de llaves que requerirían múltiples sentencias and . Python usa la palabra clave especial porque la estructura se denota por la indentación en lugar de las llaves, por lo que un uso repetido de and requeriría una mayor indentación después de cada condición. Visual Basic admite . [ 4 ] De manera similar, los primeros shells UNIX (luego reunidos en la sintaxis de shell POSIX [ 5 ] ) también usan elif , pero dando la opción de delimitar con espacios, saltos de línea o ambos.elseifelseifelsififelseelifelseifElseIf

Sin embargo, en muchos lenguajes que descienden más directamente de Algol, como Simula , Pascal , BCPL y C , esta sintaxis especial para la else ifconstrucción no está presente, ni tampoco en los numerosos derivados sintácticos de C, como Java , ECMAScript , etc. Esto funciona porque en estos lenguajes, cualquier instrucción individualif cond... (en este caso ) puede seguir a una condicional sin estar encerrada en un bloque.

Si todos los términos de la secuencia de condicionales prueban el valor de una sola expresión (por ejemplo, if x = 0else if x = 1else if x = 2 ...), una alternativa es la instrucción switch . En un lenguaje que no tiene una instrucción switch, estas se pueden codificar como una cadena if-then-else.

Sentencia switch

Una instrucción switch admite ramificaciones múltiples, comparando a menudo el valor de una expresión con valores constantes y transfiriendo el control al código de la primera coincidencia. Generalmente, se incluye una acción predeterminada si no se encuentra ninguna coincidencia. Un compilador optimizador puede usar una tabla de control para implementar la lógica de una instrucción switch. En un lenguaje dinámico, los casos no se limitan a expresiones constantes y pueden extenderse a la coincidencia de patrones , como en el ejemplo de script de shell de la derecha, donde el '*)' implementa el caso predeterminado como una expresión regular que coincide con cualquier cadena.

Condicional cauteloso

El lenguaje de comandos protegidos (GCL) de Edsger Dijkstra admite la ejecución condicional como una lista de comandos que consta de una condición booleana (que corresponde a una condición ) y su instrucción correspondiente. En GCL, se evalúa exactamente una de las instrucciones cuyas condiciones son verdaderas, pero cuál es arbitraria. En este código

si G0 → S0 □ G1 → S1 ... □ Gn → Sn fi

Las G i son las condiciones y las S i son las sentencias. Si ninguna de las condiciones es verdadera, el comportamiento del programa es indefinido.

GCL está pensado principalmente para razonar sobre programas, pero se han implementado notaciones similares en Concurrent Pascal y occam .

Aritmética si

La primera instrucción condicional en Fortran, hasta Fortran 77 , fue la instrucción aritmética if que saltaba a una de tres etiquetas dependiendo de si un valor (de tipo entero, real o de doble precisión) era <0, 0 o >0. [ 6 ]

En el siguiente código, el control pasa a una de las etiquetas en función del valor de e.

SI ( e ) etiqueta1 , etiqueta2 , etiqueta3

Esto es equivalente a la siguiente secuencia.

e_temp = e SI ( e_temp . LT . 0 ) IR A etiqueta1 SI ( e_temp . EQ . 0 ) IR A etiqueta2 IR A etiqueta3

Como actúa como goto , aritmética if es no estructurada, no estructurada , programación. Era la única instrucción condicional en la implementación original de Fortran en la computadora IBM 704. En esa computadora, el código de operación de prueba y salto tenía tres direcciones para esos tres estados. Otras computadoras tendrían registros de "bandera" como positivo, cero, negativo, par, desbordamiento, acarreo, asociados con las últimas operaciones aritméticas y usarían instrucciones como 'Saltar si el acumulador es negativo' luego 'Saltar si el acumulador es cero' o similar. Nótese que la expresión se evalúa solo una vez , y en casos como la aritmética de enteros donde puede ocurrir un desbordamiento, las banderas de desbordamiento o acarreo también se considerarían.

La instrucción IF aritmética se consideró obsoleta a partir del estándar Fortran 90. Se eliminó del estándar Fortran 2018. No obstante, la mayoría de los compiladores aún la admiten para garantizar la compatibilidad con código heredado.

En Smalltalk

A diferencia de otros lenguajes, en Smalltalk la instrucción condicional no es una construcción del lenguaje, sino que se define en la clase Booleancomo un método abstracto que toma dos parámetros, ambos cierres . BooleanTiene dos subclases, Truey False, que definen el método, Trueejecutando solo el primer cierre y Falseejecutando solo el segundo. [ 7 ]

var = condición ifTrue: [ 'foo' ] ifFalse: [ 'bar' ] 

En JavaScript

JavaScript admite sentencias if-else similares a la sintaxis de C. El siguiente ejemplo tiene una condición que es verdadera si el número flotante aleatorio (valor entre 0 y 1) es mayor que 0.5. La sentencia la utiliza para elegir aleatoriamente entre mostrarMath.random()<0.5¡Te ha salido cara!o¡Te tocó Tails!.

if ( Math . random () < 0.5 ) { console . log ( "¡Salió cara!" ); } else { console . log ( "¡Salió cruz!" ); }

Las condiciones se pueden encadenar como se muestra a continuación:

var x = Math.random ( ); if ( x < 1 / 3 ) { console.log ( " ¡ Una persona ganó!" ) ; } else if ( x < 2 / 3 ) { console.log ( " ¡ Dos personas ganaron!" ); } else { console.log ( " ¡Hay un triple empate!" ); }

Cálculo lambda

En el cálculo lambda , el concepto de condicional if-then-else se puede expresar utilizando las siguientes expresiones:

verdadero = λx. λy. x falso = λx. λy. y ifThenElse = (λc. λx. λy. (cxy))
  1. La función true acepta hasta dos argumentos y, una vez que se proporcionan ambos (véase currificación ), devuelve el primer argumento proporcionado.
  2. false acepta hasta dos argumentos y, una vez que se proporcionan ambos (ver currying ), devuelve el segundo argumento proporcionado.
  3. La función ifThenElse acepta hasta tres argumentos y, una vez proporcionados todos, pasa el segundo y el tercer argumento al primero (que es una función que, con dos argumentos, produce un resultado). Esperamos que ifThenElse solo acepte true o false como argumento, los cuales transforman los dos argumentos dados en un único argumento, que luego se devuelve.

Nota : si a ifThenElse se le pasan dos funciones como condicionales izquierda y derecha, también es necesario pasar una tupla vacía al resultado de ifThenElse para que realmente se llame a la función elegida; de lo contrario, ifThenElse simplemente devolverá el objeto de la función sin que se llame.()

En un sistema donde los números se pueden usar sin definición (como Lisp, las matemáticas tradicionales en papel, etc.), lo anterior se puede expresar como un único cierre a continuación:

(( λverdadero. λfalso. λsiEntoncesSiNo. ( siEntoncesSiNo verdadero 2 3 ) )( λx. λy. x )( λx. λy. y )( λc. λl. λr. c l r ))

Aquí, verdadero, falso e ifThenElse están vinculados a sus respectivas definiciones que se pasan a su ámbito al final de su bloque.

Una analogía funcional en JavaScript (utilizando únicamente funciones de una sola variable para mayor rigor) es la siguiente:

var computationResult = (( _true => _false => _ifThenElse => _ifThenElse ( _true )( 2 )( 3 ) )( x => y => x )( x => y => y )( c => x => y => c ( x )( y )));

El código anterior con funciones multivariables se ve así:

var computationResult = (( _true , _false , _ifThenElse ) => _ifThenElse ( _true , 2 , 3 ) )(( x , y ) => x , ( x , y ) => y , ( c , x , y ) => c ( x , y ));

A continuación se muestra otra versión del ejemplo anterior sin un sistema en el que se asuman números.

El primer ejemplo muestra que se toma la primera rama, mientras que el segundo ejemplo muestra que se toma la segunda rama.

(( λverdadero. λfalso. λsiEntoncesSiNo. ( siEntoncesSiNo verdadero ( λPrimeraRama. PrimeraRama ) ( λSegundaRama. SegundaRama )) )( λx. λy. x )( λx. λy. y )( λc. λl. λr. c l r ))(( λverdadero. λfalso. λsiEntoncesSiNo. ( siEntoncesSiNo falso ( λPrimeraRama. PrimeraRama ) ( λSegundaRama. SegundaRama )) )( λx. λy. x )( λx. λy. y )( λc. λl. λr. c l r ))

Smalltalk utiliza una idea similar para sus representaciones de verdadero y falso, donde Truey Falseson objetos singleton que responden a los mensajes ifTrue/ifFalse de manera diferente.

Haskell solía usar este modelo exacto para su tipo booleano, pero en el momento de escribir esto, la mayoría de los programas Haskell usan una construcción de azúcar sintáctico que, a diferencia de ifThenElse, no se compone a menos que esté envuelta en otra función o se vuelva a implementar como se muestra en la sección de Haskell de esta página.ifathenbelsec

Expresión condicional

Muchos lenguajes admiten expresiones condicionales, que, a diferencia de una sentencia, evalúan un valor en lugar de controlar el flujo de ejecución. El concepto de expresión condicional fue desarrollado por primera vez por John McCarthy durante su investigación sobre el procesamiento simbólico y LISP a finales de la década de 1950.

Ejemplos

Algol

ALGOL 60 y algunos otros miembros de la familia ALGOL permiten if–then–elsecomo expresión. La idea de incluir expresiones condicionales fue sugerida por John McCarthy, aunque el comité de ALGOL decidió usar palabras en inglés en lugar de la sintaxis matemática de McCarthy:

mivariable := si x > 20 entonces 1 sino 2

Las expresiones compuestas se finalizan (se protegen) mediante corchetes de cierre distintivos:

  • Cláusulas condicionales de elección:
SI condición ENTONCES instrucciones [ SI NO instrucciones ] FI Forma "breve": ( condición | instrucciones | instrucciones )
SI condición1 ENTONCES instrucciones SINO SI condición2 ENTONCES instrucciones [ SINO instrucciones ] FI Forma "breve": ( condición1 | instrucciones |: condición2 | instrucciones | instrucciones )

Este esquema no solo evita el problema del else colgante , sino que también evita tener que usar BEGINy ENDen secuencias de instrucciones anidadas .

  • Cláusulas de elección de caso :
Sentencias CASE switch IN , sentencias,... [ OUT sentencias ] Forma "breve" de ESAC : ( switch | sentencias, sentencias,... | sentencias )
CASE switch1 IN instrucciones, instrucciones,... OUSE switch2 IN instrucciones, instrucciones,... [ OUT instrucciones ] ESAC Forma "abreviada" de la instrucción CASE : ( switch1 | instrucciones, instrucciones,... |: switch2 | instrucciones, instrucciones,... | instrucciones )

Ejemplo de cláusula Choice con símbolos Brief :

PROC días en el mes = ( INT año, mes) INT : (mes| 31, (año÷×4=0 ∧ año÷×100≠0 ∨ año÷×400=0 | 29 | 28 ), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

Ceceo

Las expresiones condicionales siempre han sido una parte fundamental de Lisp  . En LISP puro, CONDse utiliza la función. En dialectos como Scheme , Racket y Common Lisp  :

;; Esquema ( define ( myvariable x ) ( if ( > x 12 ) 1 2 )) ; Asigna 'myvariable' a 1 o 2, dependiendo del valor de 'x'
;; Common Lisp ( let (( x 10 )) ( setq myvariable ( if ( > x 12 ) 2 4 ))) ; Asigna 'myvariable' a 2

Haskell

En Haskell 98, solo hay una expresión if , no una sentencia if , y la elseparte es obligatoria, ya que toda expresión debe tener algún valor. [ 8 ] La lógica que se expresaría con condicionales en otros lenguajes se suele expresar con coincidencia de patrones en funciones recursivas.

Debido a que Haskell es perezoso , es posible escribir estructuras de control, como if , como expresiones ordinarias; la evaluación perezosa significa que una función if puede evaluar solo la condición y la rama propia (mientras que un lenguaje estricto evaluaría las tres). Se puede escribir así: [ 9 ]

if' :: Bool -> a -> a -> a if' True x _ = x if' False _ y = y

Lenguajes similares a C

C y lenguajes relacionados admiten un operador ternario que permite expresiones condicionales como:

condición ? valor-verdadero : valor-falso

Si la condición es verdadera, la expresión se evalúa como verdadera ; de lo contrario, como falsa . En el siguiente código, r se asigna a "foo" si x > 10, y a "bar" si no.

r = x > 10 ? "foo" : "bar" ;

Para lograr lo mismo usando una sentencia if, se necesitaría más de una sentencia y sería necesario mencionarlo rdos veces:

si ( x > 10 ) r = "foo" ; de lo contrario r = "bar" ;

Algunos argumentan que la instrucción if-then explícita es más fácil de leer y que puede compilarse a un código más eficiente que el operador ternario, [ 10 ] mientras que otros argumentan que las expresiones concisas son más fáciles de leer y mejores ya que tienen menos cláusulas repetidas.

Visual Basic

En Visual Basic y otros lenguajes, IIfse proporciona una función que puede usarse como expresión condicional. Sin embargo, no se comporta como una expresión condicional propiamente dicha, ya que tanto la rama verdadera como la falsa siempre se evalúan; simplemente, el resultado de una de ellas se descarta, mientras que el resultado de la otra es devuelto por la función IIf.

Tcl

En Tclif no es una palabra clave, sino una función (en Tcl conocida como comando o proc). Por ejemplo

if { $x > 10 } { puts "¡Foo!" }

Invoca una función llamada ifpasando 2 argumentos: el primero es la condición y el segundo es la rama verdadera. Ambos argumentos se pasan como cadenas (en Tcl, todo lo que está entre llaves es una cadena).

En el ejemplo anterior, la condición no se evalúa antes de llamar a la función. En cambio, la implementación de la iffunción recibe la condición como un valor de cadena y es responsable de evaluar esta cadena como una expresión en el ámbito de quien la llama. [ 11 ]

Este comportamiento es posible mediante el uso uplevelde exprcomandos. Uplevel permite implementar nuevas estructuras de control como procedimientos Tcl (por ejemplo, uplevel podría usarse para implementar la estructura while como un procedimiento Tcl). [ 12 ]

Como ifen realidad es una función, también devuelve un valor. El valor de retorno del comando es el resultado del script ejecutado, o una cadena vacía si ninguna de las expresiones era distinta de cero y no había bodyN. [ 13 ]

Óxido

En Rust , ifsiempre es una expresión. Se evalúa al valor de la rama que se ejecute, o al tipo de unidad ()si no se ejecuta ninguna rama. Si una rama no proporciona un valor de retorno, se evalúa como ()por defecto. Para garantizar que el iftipo de la expresión se conozca en tiempo de compilación , cada rama debe evaluarse a un valor del mismo tipo. Por esta razón, una elserama es efectivamente obligatoria a menos que las otras ramas se evalúen a (), porque una ifsin una elsesiempre puede evaluarse como ()por defecto. [ 14 ]

Lo siguiente asigna rel valor 1 o 2 dependiendo del valor de x.

sea ​​r = si x > 20 { 1 } sino { 2 };

Los valores pueden omitirse cuando no sean necesarios.

if x > 20 { println! ( "x es mayor que 20" ); }

Coincidencia de patrones

La coincidencia de patrones es una alternativa a las sentencias condicionales (como if-then-else y switch). Está disponible en muchos lenguajes con características de programación funcional, como Wolfram Language , ML y muchos otros. Aquí hay un ejemplo sencillo escrito en el lenguaje OCaml :

Combinar fruta con | "manzana" -> cocinar pastel | "coco" -> cocinar dango_mochi | "plátano" -> mezclar ;;

El poder de la coincidencia de patrones reside en la capacidad de relacionar de forma concisa no solo acciones, sino también valores, con patrones de datos. A continuación, se muestra un ejemplo escrito en Haskell que ilustra ambas características:

mapa _ [] = [] mapa f ( h : t ) = f h : mapa f t

Este código define una función llamada ` map` , que aplica el primer argumento (una función) a cada uno de los elementos del segundo argumento (una lista) y devuelve la lista resultante. Las dos líneas representan las definiciones de la función para los dos tipos de argumentos posibles en este caso: uno cuando la lista está vacía (simplemente devuelve una lista vacía) y otro cuando la lista no está vacía.

La coincidencia de patrones no siempre es, estrictamente hablando , una construcción de elección, ya que en Haskell es posible escribir una única alternativa que siempre coincidirá. En este caso, no se utiliza como una construcción de elección, sino simplemente como una forma de vincular nombres con valores. Sin embargo, se usa con frecuencia como una construcción de elección en los lenguajes en los que está disponible.

Condicionales basados ​​en mapas

En lenguajes de programación que tienen arreglos asociativos o estructuras de datos comparables, como Python , Perl , PHP u Objective-C , es habitual utilizarlos para implementar la asignación condicional. [ 15 ]

mascota = input ( "Ingrese el tipo de mascota que desea nombrar: " ) mascotas_conocidas = { "Perro" : "Fido" , "Gato" : "Meowsles" , "Pájaro" : "Tweety" , } mi_nombre = mascotas_conocidas [ mascota ]

En lenguajes que tienen funciones anónimas o que permiten a un programador asignar una función con nombre a una referencia de variable, el flujo condicional se puede implementar utilizando un diccionario como tabla de despacho .

Predicación de ramificación

Una alternativa a las instrucciones de salto condicional es la predicación de salto . La predicación es una característica arquitectónica que permite que las instrucciones se ejecuten condicionalmente en lugar de modificar el flujo de control .

Referencia cruzada del sistema de elección

Esta tabla hace referencia a la especificación más reciente de cada lenguaje. Para los lenguajes que no tienen especificación, se hace referencia a la última implementación oficial publicada.

  1. ^ Esto se refiere a la coincidencia de patrones como una construcción condicional distinta en el lenguaje de programación, a diferencia del simple soporte para la coincidencia de patrones de cadena, comopara expresiones regulares.
  2. 1 2 Una directiva #ELIF se utiliza en elsublenguajedel preprocesadorincluirotros archivos.
  3. 1 2 3 4 5 6 La estructura que se encuentra con frecuenciaen la familia de lenguajes C, así como en COBOL y Haskell, no es una característica del lenguaje, sino un conjunto deif then else, combinadas con una disposición particular del código fuente. Sin embargo, esto también significa que una estructura else-if distinta no es realmente necesaria en estos lenguajes.else if
  4. 1 2 3 Las expresiones case en Haskell y las expresiones match en F# y Haskell permiten el uso tanto de switch-case como de coincidencia de patrones.
  5. En Ruby ,case lade expresiones regulareses una de las alternativas de control de flujo condicional disponibles. Para ver un ejemplo, consulteestapregunta de Stack Overflow.
  6. 1 2 SQL tiene dos construcciones similares que cumplen ambas funciones, ambas introducidas enSQL-92expresión"buscadafunciona comoexpresión"simplefunciona como una instrucción switch. Para obtener detalles y ejemplos, consulteCase (SQL).CASECASEWHENcond1THENexpr1WHENcond2THENexpr2[...]ELSEexprDfltENDif ... else if ... elseCASECASEexprWHENval1THENexpr1[...]ELSEexprDfltEND
  7. ^ Fortran 90 añadió laMERGEfunción intrínseca. Fortran 2023 añadió el operador ternario tipo C.
  8. ^ La coincidencia de patrones se agregó en Ruby 3.0. [ 18 ] Algunas construcciones de coincidencia de patrones aún son experimentales.
  9. ^ La aritméticaifse marcó como obsoleta en Fortran 90. Se eliminó a partir del estándar Fortran 2018.

Véase también

Referencias

  1. ^ Borrador de informe sobre el lenguaje algorítmico ALGOL 68 (PDF) (Reporte). Mathematisch Centrum (Suplemento del Boletín Algol 26). 1968. pág.  55.
  2. "Informe revisado sobre el lenguaje algorítmico ALGOL 68" (PDF) . Boletín Algol (Suplemento 47) / Numer. Math.: 118–121 . 1973. Tablas de símbolos: "bold else if " → " elif "; "brief else if " → " | : ")
  3. Sintaxis de elseif en PHP
  4. Sintaxis ElseIf de Visual Basic
  5. Sintaxis estándar de shell POSIX
  6. "Lenguaje de programación estándar nacional estadounidense FORTRAN" . 3 de abril de 1978. Archivado del original el 11 de octubre de 2007. Consultado el 9 de septiembre de 2007 .
  7. "VisualWorks: Procesamiento condicional" . 16 de diciembre de 2006. Archivado del original el 22 de octubre de 2007. Consultado el 9 de septiembre de 2007 .
  8. Haskell 98 Lenguaje y bibliotecas: Informe revisado
  9. " Propuesta de If-then-else en HaskellWiki "
  10. "Consejos eficientes de C n.° 6: No utilice el operador ternario « Stack Overflow" . Embeddedgurus.com. 18 de febrero de 2009. Consultado el 7 de septiembre de 2012 . 
  11. "Nuevas estructuras de control" . Wiki de Tcler . Consultado el 21 de agosto de 2020 .
  12. "página del manual de actualización" . www.tcl.tk. Consultado el 21 de agosto de 2020 .
  13. "si página del manual" . www.tcl.tk. Consultado el 21 de agosto de 2020 .
  14. "Expresiones if y if let" . Consultado el 1 de noviembre de 2020 .
  15. "Forma pythónica de implementar sentencias switch/case" . Archivado del original el 20 de enero de 2015. Consultado el 19 de enero de 2015 .
  16. Java.sun.com , Especificación del lenguaje Java, 3.ª edición.
  17. Ecma-international.org Archivado el 12 de abril de 2015 en Wayback Machine Especificación del lenguaje ECMAScript, 5.ª edición.
  18. "Coincidencia de patrones" . Documentación para Ruby 3.0 .
  • Logotipo de Wikimedia CommonsContenido multimedia relacionado con la programación condicional en Wikimedia Commons .
  • SI NO (ActionScript 3.0) vídeo