El operador ?

Mientras hacia mi tarea de Programación junto con mis compañeros como responsables alumnos de ingeniería (algo que procuramos no hacer ya que nos quita valioso tiempo para jugar Mortal Kombat y Mario Kart), nos topamos con un operador de un amplio uso y potencial que cualquier programador amaría, que por desgracia es poco conocido o al menos ninguno de nosotros habia escuchado de él antes, asi que hemos decidido que este operador merece su entrada en el blog para que pueda ser amado por todos…aunque no tengo idea cuando se decidió que yo lo postearia.

El operador “?:” o “?” (signo de interrogacion…si, no estoy preguntado por el operador, asi se llama) es un operador ternario en C++, el cual sirve para tomar decisiones basadas en una expresión lógica o relacional, la cual será evaluada y, dependiendo de su resultado de orden booleano, ejecutará la expresión correspondiente. Su sintaxis es:

(expresión relacional) ? (expresion1) : (expresion2)

En donde la expresion1 es la acción que se ejecutará cuando el resultado de la expresión relacional sea verdadero (True, 1, etc.), y la expresion2 es la acción a ejecutarse en caso de ser falsa (False, 0, etc.) Y ahi esta la definicion toda wikipediana, esa que sólo te sirve para entregar la tarea pero que nunca entiendes ni madres…y de hecho yo tampoco, ni siquiera se que es ternario pero me suena a ternero, osea que es como el operador vaquita de C++, pero sea vaca o caballo o pato o lo que sea, eso no importa y ahora explicaré lo que sí importa.

El uso principal de este operador es el de tomar decisiones y arrojar los 2 posibles resultados (verdadero y falso), todo en una simple línea de código. Recordemos que, para tomar decisiones en cualquier lenguaje, se utiliza el clásico if else. Veamos ahora un ejemplo en donde se encuentra el valor mayor de un par de números y lo imprime, usando el if else.

if (a>b)

cout<<a;

else

cout<<b;

Si contamos, utilizamos 4 líneas y 2 palabras reservadas para llegar al resultado…muy simple y corto, no? Ahora veamos el mismo ejemplo utilizando el operador “?”, que también sirve para tomar decisiones como ya mencionamos.

(a>b) ? cout<<a : cout<<b;

Ahora contemos…1 línea de código, ninguna palabra reservada, 2 simbolitos y hasta un ; menos que el ejemplo pasado, y llegamos al mismo resultado. Ven ahora la diferencia? El operador “?” sirve principalmente para reducir la sintaxis de un if a una simple y fácil de entender linea de código, que ahorra tanto tiempo como espacio, y con un toque que te hace sentir el más pro de C++. Pero esperen, que no es todo lo que hace esta cosita.

Veamos ahora un ejemplo de un programa que, dependiendo de la decisión, realiza una operación, en un if else.

if (a>3)

a = (a-3)*0.25;

z = a+1.25;

else

z = a*2.5;

Y el mismo ejemplo con el mismo resultado, pero ahora, con el infame operador.

z = (a>3) ? (((a-3)*0.25)+1.25) : (a*2.5);

Así es, no sólo se utiliza para reducir una simple decisión a una sola línea, sino que también automáticamente puede ser usada para asignarle un valor a una variable, y todo, en la misma línea donde se utiliza la decisión. El operador “?” no solo reduce la expresión de un if, sino que la convierte a una expresión matemática la cual puede ser usada para todo lo que se te ocurra. No tienen idea de como sería eso? He aqui un simple ejemplo del gran potencial que puede tener.

x = (((a>3) ? ((a-3)*0.25)+1.25 : a*2.5) + ((z!=0 && z<100) ? 250 : 100)) / (pow(z,3));

Sea lo que sea eso, traten de hacerlo con if else y haber cuantas lineas de codigo se tomarán. Y solo si tienen curiosidad, el resultado es 2.02 si a=1 y z=5. Agradezcanle al tan genial operador por poder darnos la respuesta tan rápidamente.

Y muy bien, ahora este operador a más-que-superado al if, en rapidez, sencillez, y eficacia, pero de seguro pensarán “Si aca muy muy, pero a que no se mete con los ifs anidados”. De acuerdo, dejemne decirles que yo pensé lo mismo, pero esto de seguro los hará cambiar de parecer:

a = (x<y) ? ((y<z) ? z : y) : ((x<z) ? z : x);

Y cuanto a que “a” va a tener el valor máximo de los 3 numeros. De hecho, gracias al operador “?”, acabo de resolver el clásico problema de encontrar el valor mayor de 3 numeros, en una simple línea de codigo, y sin ningún problema.

Y claro, debo decir que hay veces en donde la sentencia if es mas útil o al menos te ayuda a localizar una decisión con más rapidez, y no hay que ignorarla o reemplazarla completamente…pero, si te encuentras con uno de esos profes que dicen que el if (o hasta el switch) es lo más rapido y sencillo para resolver decisiones, ya sabes que hacer con ellos😀 Y cuando menos te des cuenta, estarás usando una de estas.

?’s will take over the world o-o

Memoin.blogEntry.End

Explore posts in the same categories: Programacion, Software

Etiquetas: , , , , , ,

You can skip to the end and leave a response. Pinging is currently not allowed.

6 comentarios en “El operador ?”

  1. AnGsT Says:

    gracias no tenia ni idea para q funcionaba el bendito signo d interrogación

  2. Juanpe Says:

    Putos sudacas, no os enteráis de nada


  3. excelente blog me fue de mucha ayuda gracias..!

  4. System-Factory Says:

    Exelente

  5. Visitante4 Says:

    Sorry, me falto aclarar que al menos para C(Supongo que también para C++) es el único operador ternario que existe.
    Ejemplo:
    ++, –. UNARIOS

    +=, -=, /=, %=, *=, =, +, -, /, %, *, , =, !=, &&, ||, ==.
    BINARIOS.

    Y el único ternario como ya dijeron es el (expersion)?:;

    PD: El -“variable” podria tambien ser unario… no??

  6. Visitante4 Says:

    Nahhh… Yo estoy aprendiendo programación en la facultad tambien y este operador me lo enseñaron como a las 3 semanas.
    No es tan raro
    Bueno me gusto su blog, me la he pasado medio dia leyendolo =)


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: