Operador Condicional Ternario

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 2

OPERADOR CONDICIONAL TERNARIO?

:
En C, existe el operador condicional ( ?: ) el cual es conocido por su estructura
como ternario. El comportamiento de dicho operador es el mismo que una
estructura if - then - else del lenguaje BASIC (y de la funcin IIf de Visual Basic).
El operador condicional?: es til para evaluar situaciones tales como:
Si se cumple tal condicin entonces haz esto, de lo contrario haz esto otro.
Pues bien, el operador ternario toma tres operandos. Despus del primer operando se coloca el smbolo "?", y
entre el segundo y el tercero el smbolo ":". Es decir, toma la forma
a?b:c
El primer operando (a) debe ser una expresin que se evale a un valor booleano. El segundo y el tercero
pueden ser de cualquier tipo, pero la mayora de los lenguajes exigen que sean del mismo tipo.
Cuando escribimos una expresin de ese estilo, el compilador o intrprete evalan el primer operando (a), y si
es verdadero, el resultado de toda la expresin es el valor del segundo operando (b), y en caso de ser falso, el
resultado de toda la expresin es el tercer operando (c).
Bueno, bien... Y para qu vale?.... pues veamos algunos ejemplos:
En este trozo de cdigo, asignaremos valor a una variable dependiendo de una condicin:
if (z>9)
{
k=3;
}
else
{
k=8+z;
}
Pero poda haberse escrito utilizando el operador ternario de sta forma:
k=(z>9)?3:(8+z);
Otro ejemplo, dependiendo de una condicin queremos imprimir una frase u otra:
if (k==12)
{
Console.WriteLine("La variable k tiene un valor igual a 12");
}
else
{
Console.WriteLine("La variable k tiene un valor distinto de 12");
}
Nuevamente, podramos haber utilizado el operador ternario, por ejemplo:
Console.WriteLine("La variable k tiene un valor "
+(k==12)?"igual a":"distinto de"
+" 12");
Devolviendo un valor de retorno en un mtodo o funcin:
if (j>=45)
{
z=a+3;
}
else
{
z=a-30;
}

return z;
Podramos sustituirlo por:
z=(j>=45)?(a+3):(a-30);
return z;
O incluso por:
return ((j>=45)?(a+3):(a-30));
En fin... Los usos de ste operador son muy variados, y como se puede apreciar, en muchas ocasiones
simplifica bastante en cdigo. Aunque en sto, como en todo, hay opiniones para todos los gustos.
En cuanto a la eficiencia, se debe destacar que en muchas ocasiones, los compiladores son capaces de crear
cdigo bastante optimizado cuando se lo encuentran.
Quiz ests pensando que el funcionamiento del operador ternario se podra emular con una funcin o un
mtodo que aceptase tres parmetros: uno booleano y otros dos del mismo tipo. S... en efecto es as, pero
con salvedades. Algunos lenguajes ya disponen de ese mtodo... pero no es lo mismo que utilizar un
operador. Se nos plantean un par de problemas: en primer lugar, Qu tipo deberamos poner para el
segundo y tercer parmetro?, y en segundo lugar, un mtodo o funcin siempre implican trasiego a travs de
la pila, cosa que el operador ahorra.
En definitiva, si tu lenguaje dispone del operador ternario y te gusta, salo. Si no te gusta o no disponemos de
l, siempre podemos utilizar un if.

El operador condicional es el nico operador ternario de la gramtica


C++ y sirve para tomar
decisiones. Proporciona un resultado entre dos posibilidades en
funcin de una condicin.
El operador condicional ? : produce un resultado. En la expresin
E1 ? E2 : E3, E1 es una expresin
relacional que se evala primero. Si el resultado es cierto, entonces se
evala E2 y este es el
resultado. En caso contrario (si E1 resulta falso), entonces se evala
E3 y este es el resultado. Si la
premisa E1 es cierta, entonces no llega a evaluarse la expresin E3.
E2 y E3 deben seguir las reglas siguientes:
1. Si E2 y E3 son de tipos distintos, se realiza una conversin de tipo
estndar, de forma que el
resultado ser siempre del mismo tipo, con independencia de E1.
2. Si E2 y E3 son de tipos unin o estructuras compatibles. El
resultado es una unin o estructura del
tipo de E2 y E3.
3. Si E2 y E3 son de tipo void, el resultado es void

También podría gustarte