Condicional (programación informática)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Declaración de flujo de control que ejecuta el código de acuerdo a algunas condiciones (s)
Si-entonces el diagrama de flujo
Un anidado si – entonces-else diagrama de flujo

En informática, los condicionales (es decir, declaraciones condicionales, expresiones condicionales y construcciones condicionales) son Comandos del lenguaje de programación para el manejo de decisiones. Específicamente, los condicionales realizan diferentes cálculos o acciones dependiendo de si una condición booleana definida por el programador se evalúa como verdadera o falsa. En términos de flujo de control, la decisión siempre se logra alterando selectivamente el flujo de control en función de alguna condición (aparte del caso de predicación de rama). Aunque el envío dinámico no suele clasificarse como una construcción condicional, es otra forma de seleccionar entre alternativas en tiempo de ejecución. Las declaraciones condicionales son los puntos de control del programa que determinan el comportamiento según la situación.

Terminología

En lenguajes de programación imperativos, el término "declaración condicional" se usa generalmente, mientras que en programación funcional, los términos "expresión condicional" o "construcción condicional" Se prefieren los términos porque todos estos términos tienen significados distintos.

Si–entonces(–si no)

La construcción if–then (a veces llamada if–then–else) es común en muchos lenguajes de programación. Aunque la sintaxis varía de un idioma a otro, la estructura básica (en forma de pseudocódigo) se ve así:

Si (condicionamiento pulmonar) Entonces...(consecuente)
Else(alternativa)
Fin Si

Por ejemplo:

Si stock=0 Entonces...mensaje= orden nuevo stock
Elsemensaje= hay acciones
Fin Si

En el código de ejemplo anterior, la parte representada por (condición booleana) constituye una expresión condicional, que tiene un valor intrínseco (por ejemplo, puede ser sustituida por cualquiera de las valores True o False) pero no tienen ningún significado intrínseco. Por el contrario, la combinación de esta expresión, el If y el Then que la rodean, y el consecuente que sigue después constituyen una declaración condicional, que tiene valores intrínsecos. significado (por ejemplo, expresar una regla lógica coherente) pero ningún valor intrínseco.

Cuando un intérprete encuentra un If, espera una condición booleana – por ejemplo, x > 0, que significa "la variable x contiene un número mayor que cero" – y evalúa esa condición. Si la condición es true, se ejecutan las declaraciones que siguen a then. De lo contrario, la ejecución continúa en la siguiente rama, ya sea en el bloque else (que suele ser opcional) o, si no hay ninguna rama else, después de . finalizar si.

Después de ejecutar cualquiera de las ramas, el control regresa al punto después del end If.

Historia y desarrollo

En los primeros lenguajes de programación, especialmente en algunos dialectos de BASIC en las computadoras domésticas de la década de 1980, una declaración if–then solo podía contener declaraciones GOTO (equivalente a una instrucción de bifurcación). Esto llevó a un estilo de programación difícil de leer conocido como programación espagueti, con programas en este estilo llamados código espagueti. Como resultado, la programación estructurada, que permite colocar declaraciones (virtualmente) arbitrarias en bloques de declaraciones dentro de una declaración if, ganó popularidad, hasta que se convirtió en la norma incluso en la mayoría de los círculos de programación BÁSICA. Dichos mecanismos y principios se basaron en la familia de lenguajes ALGOL, más antigua pero más avanzada, y los lenguajes similares a ALGOL, como Pascal y Modula-2, influyeron en las variantes BASIC modernas durante muchos años. Si bien es posible usar sólo declaraciones GOTO en declaraciones if–then para escribir programas que no sean código espagueti y que estén tan bien estructurados y legibles como los programas escritos en un formato estructurado. lenguaje de programación, la programación estructurada lo hace más fácil y lo refuerza. Las declaraciones estructuradas if–then–else como el ejemplo anterior son uno de los elementos clave de la programación estructurada y están presentes en los lenguajes de programación de alto nivel más populares, como C, Java, JavaScript y Visual Basic..

Did you mean:

The "dangling else#34; problem

La palabra clave else está diseñada para apuntar a una declaración if–then específica que la precede, pero para declaraciones if–then anidadas, la programación clásica lenguajes como ALGOL 60 lucharon por definir a qué declaración específica apuntar. Sin límites claros para qué declaración es cuál, una palabra clave else podría apuntar a cualquier declaración if–then anterior en el nido, tal como se analiza.

si a entonces si b entonces s más s2

puede analizarse como

si a entonces ()si b entonces s) más s2

o

si a entonces ()si b entonces s más s2)

dependiendo de si el else está asociado con el primer if o el segundo if. Esto se conoce como el problema del else pendiente y se resuelve de varias maneras, dependiendo del idioma (comúnmente mediante la instrucción end if o los corchetes {...}).

Si no

Al utilizar else if, es posible combinar varias condiciones. Sólo se ejecutarán las declaraciones que siguen a la primera condición que se considere verdadera. Se omitirán todas las demás declaraciones.

si condición entonces - Declaracionessi condición entonces - más declaracionessi condición entonces - más declaraciones;...
más - otras declaraciones;terminar si;

Por ejemplo, para una tienda que ofrece hasta un 30 % de descuento en un artículo:

si descuento entoncesimprimir (tiene que pagar $30)
si descuento21% entoncesimprimir (tiene que pagar 20 dólares)
si descuento 31% entoncesimprimir (tiene que pagar $10)
terminar si;

En el ejemplo anterior, si el descuento es del 10 %, entonces la primera declaración if se evaluará como verdadera y "tendrá que pagar $30" se imprimirá. Todas las demás declaraciones debajo de la primera declaración if se omitirán.

La declaración elseif, en el lenguaje Ada, por ejemplo, es simplemente azúcar sintáctico para else seguido de if. En Ada, la diferencia es que solo se necesita un end if, si se usa elseif en lugar de else seguido de if. PHP utiliza la palabra clave elseif tanto para sus llaves como para su sintaxis de dos puntos. Perl proporciona la palabra clave elsif para evitar la gran cantidad de llaves que requerirían múltiples declaraciones if y else. Python usa la palabra clave especial elif porque la estructura se indica mediante sangría en lugar de llaves, por lo que un uso repetido de else y if requeriría una mayor sangría después cada condición. Algunas implementaciones de BASIC, como Visual Basic, también usan ElseIf. De manera similar, los shells UNIX anteriores (posteriormente reunidos en la sintaxis del shell POSIX) también usan elif, pero dan la opción de delimitar con espacios, saltos de línea o ambos.

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

Esta elección de diseño tiene un ligero "coste". Cada rama else if agrega efectivamente un nivel de anidamiento adicional. Esto complica el trabajo del compilador (o de las personas que escriben el compilador), porque el compilador debe analizar e implementar cadenas else if arbitrariamente largas de forma recursiva.

Si todos los términos en la secuencia de condicionales prueban el valor de una sola expresión (por ejemplo, if x=0... si no x=1.... else if x=2...), una alternativa es la sentencia switch, también llamada sentencia-case o sentencia-select. Por el contrario, en lenguajes que no tienen una declaración de cambio, éstas pueden producirse mediante una secuencia de declaraciones else if.

Expresiones si-entonces-si no

Muchos lenguajes admiten expresiones if, que son similares a las declaraciones if, pero devuelven un valor como resultado. Por lo tanto, son expresiones verdaderas (que se evalúan como un valor), no declaraciones (que pueden no estar permitidas en el contexto de un valor).

Familia Algol

ALGOL 60 y algunos otros miembros de la familia ALGOL permiten if–then–else como expresión:

 mivariable:= si x

Dialectos ceceos

En dialectos de Lisp – Scheme, Racket y Common Lisp – el primero de los cuales se inspiró en gran medida en ALGOL:

; Plan()definir mivariable ()si () x 12) 1 2) ; Asignaciones 'mivariables' a 1 o 2, dependiendo del valor de 'x'
; Lisp Común()Deja ()x 10) ()setq mivariable ()si () x 12) 2 4)) ; Assigns 'myvariable' a 2

Haskell

En Haskell 98, sólo hay una expresión if, no una declaración if, y la parte else es obligatoria, ya que toda expresión debe tener algún valor. La lógica que se expresaría con condicionales en otros lenguajes generalmente se expresa con coincidencia de patrones en funciones recursivas.

Debido a que Haskell es vago, es posible escribir estructuras de control, como if, como expresiones ordinarias; la evaluación diferida significa que una función if puede evaluar solo la condición y la rama adecuada (donde un lenguaje estricto evaluaría las tres). Se puede escribir así:

si ' :: Bool - a - a - asi ' Cierto. x ¿Qué? = xsi ' Falso ¿Qué? Sí. = Sí.

Lenguajes tipo C

C y los lenguajes similares a C tienen un operador ternario especial (?:) para expresiones condicionales con una función que puede describirse mediante una plantilla como esta:

condition ? evaluated-when-true: evaluated-when-false

Esto significa que se puede insertar en expresiones, a diferencia de las sentencias if, en lenguajes tipo C:

mi_variable = x  10 ? "foo" : "bar"; // En idiomas C

que se puede comparar con las expresiones if-then–else de la familia Algol (en contraste con una declaración) (y similar en Ruby y Scala, entre otros).

Para lograr lo mismo usando una declaración if, esto requeriría más de una línea de código (según las convenciones de diseño típicas) y requeriría mencionar "my_variable" dos veces:

si ()x  10) mi_variable = "foo";más mi_variable = "bar";

Algunos argumentan que la declaración explícita si/entonces es más fácil de leer y que puede compilarse en un código más eficiente que el operador ternario, mientras que otros argumentan que las expresiones concisas son más fáciles de leer que las declaraciones distribuidas en varias líneas que contienen repetición.

Pequeño Básico

x = TextWindow.ReadNumber()Si ()x  10) Entonces... TextWindow.WriteLine()"Mi variable se llama "foo".)Else TextWindow.WriteLine()"Mi variable se llama "bar".)EndIf

Primero, cuando el usuario ejecuta el programa, aparece un cursor esperando que el lector escriba un número. Si ese número es mayor que 10, el texto "Mi variable se llama 'foo'." se muestra en la pantalla. Si el número es menor que 10, aparecerá el mensaje "Mi variable se llama 'bar'." está impreso en la pantalla.

Visual Básico

En Visual Basic y algunos otros lenguajes, se proporciona una función llamada IIf, que puede usarse como expresión condicional. Sin embargo, no se comporta como una expresión condicional verdadera, porque siempre se evalúan tanto la rama verdadera como la falsa; es solo que el resultado de uno de ellos se desecha, mientras que el resultado del otro lo devuelve la función IIf.

Tcl

En Tcl if no es una palabra clave sino una función (en Tcl se conoce como comando o proc). Por ejemplo

si {}$x  10} {} puts "¡Foo!"}

invoca una función llamada if pasando 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 función if recibe la condición como un valor de cadena y es responsable de evaluar esta cadena como una expresión en el alcance de la persona que llama.

Este comportamiento es posible utilizando los comandos uplevel y expr:

Uplevel hace posible implementar nuevos constructos de control como procedimientos Tcl (por ejemplo, el nivel de up se podría utilizar para implementar el mientras se construye como un procedimiento Tcl).

Debido a que if es en realidad una función, también devuelve un valor:

El valor de retorno del comando es el resultado del script corporal que fue ejecutado, o una cadena vacía si ninguna de las expresiones era no cero y no había bodyN.

Óxido

En Rust, if es siempre una expresión. Se evalúa según el valor de cualquier rama que se ejecute, o según el tipo de unidad () si no se ejecuta ninguna rama. Si una rama no proporciona un valor de retorno, se evalúa como () de forma predeterminada. Para garantizar que el tipo de expresión if se conozca en el momento de la compilación, cada rama debe evaluarse como un valor del mismo tipo. Por esta razón, una rama else es efectivamente obligatoria a menos que las otras ramas evalúen (), porque un if sin un else siempre puede evaluarse como () de forma predeterminada.

// Asignar mi_variable algún valor, dependiendo del valor de xDeja mi_variable = si x  20 {} 1} más {} 2};// Esta variante no se compilará porque 1 y () tienen diferentes tiposDeja mi_variable = si x  20 {} 1};// Los valores pueden omitirse cuando no son necesariossi x  20 {} ¡Imprimir!()"x es mayor que 20");}

Aritmética si

Hasta Fortran 77, el lenguaje Fortran tenía un carácter "aritmético si" declaración que está a medio camino entre un IF calculado y una declaración de caso, basada en la tricotomía x < 0, x = 0, x > 0. Esta fue la primera declaración condicional en Fortran:

IF ()e) etiqueta1, etiqueta2, label3

Donde e es cualquier expresión numérica (no necesariamente un número entero); esto es equivalente a

IF ()e .LT. 0) GOTO etiqueta1IF ()e .EQ. 0) GOTO etiqueta2GOTO label3

Debido a que este IF aritmético es equivalente a múltiples declaraciones GOTO que podrían saltar a cualquier lugar, se considera una declaración de control no estructurada y no debe usarse si se pueden usar declaraciones más estructuradas. En la práctica, se ha observado que la mayoría de las declaraciones aritméticas IF hacían referencia a la siguiente declaración con una o dos de las etiquetas.

Esta fue la única declaración de control 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 ramificación tenía tres direcciones para esos tres estados. Otras computadoras tendrían "bandera" registros como positivo, cero, negativo, par, desbordamiento, acarreo, asociados con las últimas operaciones aritméticas y usarían instrucciones como 'Rama si el acumulador es negativo' luego 'Rama si acumulador cero' o similar. Tenga en cuenta que la expresión se evalúa sólo una vez y, en casos como la aritmética de enteros donde puede producirse un desbordamiento, también se considerarán los indicadores de desbordamiento o acarreo.

Implementación orientada a objetos en Smalltalk

A diferencia de otros lenguajes, en Smalltalk la declaración condicional no es una construcción del lenguaje sino que se define en la clase Boolean como un método abstracto que toma dos parámetros, ambos cierres. Boolean tiene dos subclases, True y False, que definen el método, True ejecuta solo el primer cierre, False ejecutando solo el segundo cierre.

Var = condición siTrue: [ 'foo ' ]
 siFalse: [ 'bar ' ]

JavaScript

JavaScript utiliza declaraciones if-else similares a las de los lenguajes C. Se acepta un valor booleano entre paréntesis entre la palabra clave reservada if y una llave izquierda.

si ()Matemáticas.al azar() . 0.5) {} consola.log()"¡Tienes cabezas!");} más {} consola.log()"¡Tienes Tails!");}

El ejemplo anterior toma el condicional de Math.random() < 0.5 que genera true si un valor flotante aleatorio entre 0 y 1 es mayor que 0,5. La declaración lo utiliza para elegir aleatoriamente entre enviar ¡Tienes cara! o ¡Tienes colas! a la consola. Las declaraciones else y else-if también se pueden encadenar después de la llave de la declaración que la precede tantas veces como sea necesario, como se muestra a continuación:

Var x = Matemáticas.al azar();si ()x . 1/3) {} consola.log()"¡Una persona ganó!");} más si ()x . 2/3) {} consola.log()"¡Dos personas ganaron!");} más {} consola.log()"¡Es una corbata de tres vías!");}

Cálculo lambda

En el cálculo Lambda, el concepto de un condicional si-entonces-si no se puede expresar usando las siguientes expresiones:

verdadero = λx. λy. x
falso = λx.
siThenElse = (λc. λx. λy. (c x y))
  1. verdadera toma hasta dos argumentos y una vez que ambos se proporcionan (ver currying), devuelve el primer argumento dado.
  2. falsa toma hasta dos argumentos y una vez que ambos se proporcionan (ver currying), devuelve el segundo argumento dado.
  3. siThenElse toma hasta tres argumentos y una vez que todos son proporcionados, pasa el segundo y tercer argumento al primer argumento (que es una función que dio dos argumentos, y produce un resultado). Esperamos que ThenElse sólo tome verdad o falso como un argumento, ambos de los cuales proyectan los dos argumentos dados a su argumento único preferido, que luego es devuelto.

nota: si a ifThenElse se le pasan dos funciones como condicionales izquierdo y derecho; es necesario pasar también una tupla vacía () al resultado de ifThenElse para poder llamar realmente a la función elegida; de lo contrario, ifThenElse simplemente devolverá el objeto de función sin ser llamado.

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

 ()λtrue. λfalse. λifThenElse. ()Si verdadero 2 3) )λx. λy. x)λx. λy. Sí.)λc. λl. λr. c l r)

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

Una analogía funcional de JavaScript (usando solo funciones de una sola variable para mayor rigor) es la siguiente:

 Var resultado = ()- Sí. = _false = - ¿Por qué? =  - ¿Por qué?()- Sí.)2)3)  )x = Sí. = x)x = Sí. = Sí.)c = x = Sí. = c()x)Sí.));

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

 Var resultado = ()- Sí., _false, - ¿Por qué?) = - ¿Por qué?()- Sí., 2, 3) ()x, Sí.) = x, ()x, Sí.) = Sí., ()c, x, Sí.) = c()x, Sí.));

A continuación se muestra otra versión del ejemplo anterior sin un sistema donde se suponen números.

El primer ejemplo muestra la primera rama que se está tomando, mientras que el segundo ejemplo muestra la segunda rama que se está tomando.

 ()λtrue. λfalse. λifThenElse. ()Si verdadero ()λFirstBranch. FirstBranch) ()SecondBranch. SecondBranch) )λx. λy. x)λx. λy. Sí.)λc. λl. λr. c l r) ()λtrue. λfalse. λifThenElse. ()Si falso ()λFirstBranch. FirstBranch) ()SecondBranch. SecondBranch) )λx. λy. x)λx. λy. Sí.)λc. λl. λr. c l r)
Did you mean:

Smalltalk uses a similar idea for its true and false representations, with True and False being singleton objects that respond to messages if True/if False differently.

Haskell solía usar este modelo exacto para su tipo booleano, pero al momento de escribir este artículo, la mayoría de los programas de Haskell usan azúcar sintáctico "if a entonces b else c" construcción que a diferencia de ifThenElse no compone a menos que ya sea envuelto en otra función o reimplementado como se muestra en la sección Haskell de esta página.

Declaraciones de caso y cambio

Las declaraciones de cambio (en algunos idiomas, declaraciones de casos o ramas multidireccionales) comparan un valor dado con constantes específicas y toman medidas de acuerdo con la primera constante que coincida. Generalmente existe una disposición para que se tome una acción predeterminada ('de lo contrario', 'de lo contrario') si ninguna coincidencia tiene éxito. Las declaraciones de cambio pueden permitir optimizaciones del compilador, como tablas de búsqueda. En los lenguajes dinámicos, los casos pueden no limitarse a expresiones constantes y pueden extenderse a la coincidencia de patrones, como en el ejemplo del script de shell de la derecha, donde el símbolo '*)' implementa el caso predeterminado como una expresión regular que coincide con cualquier cadena.

Pascal: C: Shell script:
Caso algunos Char de 'a': acción OnA; 'x ': acción OnX; 'y ','z ':acción OnYandZ; más actionOnNoMatch;final;
interruptor ()algunos Char) {} Caso 'a': acción OnA; descanso; Caso 'x ': acción OnX; descanso; Caso 'y ': Caso 'z ': acción OnYandZ; descanso; por defecto: actionOnNoMatch;}
Caso $some Char dentro  a) acción OnA; ; x) acción OnX; ; [Yz]) acción OnYandZ; ; *) actionOnNoMatch ;esac

Coincidencia de patrones

La coincidencia de patrones puede verse como una alternativa a las declaraciones if–then–else y case. Está disponible en muchos lenguajes de programación con funciones de programación funcionales, como Wolfram Language, ML y muchos otros. Aquí hay un ejemplo simple escrito en el lenguaje OCaml:

partido fruta conSilencio "apple" - cocinar pastelSilencio "Coco" - cocinar dango_mochiSilencio "banana" - mezcla;

El poder de la coincidencia de patrones es la capacidad de hacer coincidir concisamente no solo acciones sino también valores con patrones de datos. Aquí hay un ejemplo escrito en Haskell que ilustra ambas características:

mapa ¿Qué? [] = []mapa f ()h : t) = f h : mapa f t

Este código define una función mapa, 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 son las dos definiciones de la función para los dos tipos de argumentos posibles en este caso: uno donde la lista está vacía (simplemente devuelve una lista vacía) y el otro caso donde la lista no está vacía.

La coincidencia de patrones no es estrictamente hablando siempre una construcción de elección, porque en Haskell es posible escribir solo una alternativa, que se garantiza que siempre coincidirá; en esta situación, no se utiliza como una construcción de elección, sino simplemente como una forma de vincular nombres a valores. Sin embargo, se utiliza con frecuencia como construcción de elección en los idiomas en los que está disponible.

Condicionales basadas en hash

(feminine)

En lenguajes de programación que tienen matrices asociativas o estructuras de datos comparables, como Python, Perl, PHP u Objective-C, es idiomático usarlos para implementar la asignación condicional.

mascota = entrada()"Introduzca el tipo de mascota que desea nombrar: ")known_pets = {} "Dog": "Fido", "Cat": "Meowsles", "Bird": "Tweety",}my_name = known_pets[mascota]

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

Predicación

Una alternativa a las instrucciones de rama condicional es la predicación. La predicción es una característica arquitectónica que permite ejecutar instrucciones de forma condicional en lugar de modificar el flujo de control.

Referencia cruzada del sistema de elección

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

Lenguaje de programación Estructurado si interruptor–seleccionar–case Aritmética si Pattern matching
entonces más si
Ada Sí. Sí. Sí. Sí. No No
APL No Sí. Sí. Sí. No No
Bash shell Sí. Sí. Sí. Sí. No Sí.
C, C++ No Sí. sin necesidad Fall-through No No
C# No Sí. Sin necesidad Sí. No No
COBOL Sí. Sí. Sin necesidad Sí. No No
Eiffel Sí. Sí. Sí. Sí. No No
F# Sí. Sí. Sí. Sin necesidad No Sí.
Fortran 90 Sí. Sí. Sí. Sí. Sí. No
Vamos. No Sí. Sin necesidad Sí. No No
Haskell Sí. Necesidad Sin necesidad Sí, pero sin necesidad No Sí.
Java No Sí. Sin necesidad Fall-through No No
ECMAScript (JavaScript) No Sí. Sin necesidad Fall-through No No
Mathematica No Sí. Sí. Sí. No Sí.
Oberon Sí. Sí. Sí. Sí. No No
Perl No Sí. Sí. Sí. No No
PHP No Sí. Sí. Fall-through No No
Pascal, Object Pascal (Delphi) Sí. Sí. Sin necesidad Sí. No No
Python No Sí. Sí. No No Sí.
QuickBASIC Sí. Sí. Sí. Sí. No No
Ruby Sí. Sí. Sí. Sí. No Sí.
Rust No Sí. Sí. Sin necesidad No Sí.
Scala No Sí. Sin necesidad Fall-through No Sí.
SQL Sí. Sí. Sí. Sí. No No
Swift No Sí. Sí. Sí. No Sí.
Tcl No Sí. Sí. Sí. No Sí.
Visual Basic, clásico Sí. Sí. Sí. Sí. No No
Visual Basic.NET Sí. Sí. Sí. Sí. No No
Windows Power Shell No Sí. Sí. Fall-through No No
  1. ^ Esto se refiere a la combinación de patrones como un constructo condicional distinto en el lenguaje de programación – en lugar de la mera compatibilidad de patrón de cadena, como soporte de expresión regular.
  2. 1 2 Una directiva #ELIF se utiliza en el sub-idioma preprocesador que se utiliza para modificar el código antes de la compilación; e incluir otros archivos.
  3. 1 2 3 4 5 6 Los contados a menudo else if en la familia C de idiomas, y en COBOL y Haskell, no es una característica del lenguaje sino un conjunto de anidados e independientes si entonces más declaraciones combinadas con un código fuente en particular. Sin embargo, esto también significa que un edificio distinto –si no es realmente necesario en estos idiomas.
  4. 1 2 En Haskell y F#, una construcción de elección constante separada no es necesaria, porque la misma tarea se puede hacer con el patrón de coincidencia.
  5. ^ En un Ruby case construct, regular expression matching is among the conditional flow-control alternatives available. Por ejemplo, vea esta pregunta de flujo de Stack.
  6. 1 2 SQL tiene dos constructos similares que cumplen ambos roles, ambos introducidos en SQL-92. Una "buscada" CASE"expresión" CASE WHEN cond1 THEN expr1 WHEN cond2 THEN expr2 [...] ELSE exprDflt END obras como if... else if... else, mientras que un "simple CASE"expresión: CASE expr WHEN val1 THEN expr1 [...] ELSE exprDflt END funciona como una declaración de conmutación. Para más detalles y ejemplos ver Caso (SQL).
  7. ^ Arithmetic if es obsolescente en Fortran 90.
  8. ^ Pattern matching was added in Ruby 3.0. Algunos constructos de juego de patrones todavía son experimentales.

Contenido relacionado

Tarjeta perforada

Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones...

CPython

CPython es la implementación de referencia del lenguaje de programación Python. Escrito en C y Python, CPython es la implementación predeterminada y más...

Arquitectura Harvard

La Arquitectura Harvard es un modelo de arquitectura informática que separa físicamente la memoria de código de programa de la memoria de almacenamiento de...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save