Últimamente varias personas me han consultado que significa por ejemplo esta sentencia en C/C++:
x=1;
x= (x == 1) ? 0:1;
Pues bien, esto se llama "Operación Ternaria de "?"", y en si es un método bastante popular pues se ha implementado en otros lenguajes de programación como Java o C#.
En si es bastante simple, no es mas que la abreviación y abstracción del clásico if...else...if que podemos encontrar en prácticamente todos los lenguajes de programación de alto nivel (HLPL - High Level Programming Language).
De lo que se trata es de tener 3 expresiones (a modo básico, se pueden anidar mas) donde las escribimos de esta forma:
E1 ? E2:E3;
E1: La condición que íria como argumento de un bloque if.
E2: En caso que E1 sea true.
E3: En caso que E1 sea false.
Si lo convertimos en nuestros bloques comunes queda algo como:
if (E1) {E2;} else {E3;}
Como ven, es una forma bastante abstracta de escribir lo mismo y que sirve principalmente para condicionar de manera rápida una expresión, por ejemplo:
for (i = 0; i != n; i++)
printf ("%6d%c", a[i], (i%10==9 || i==n-1) ? '\n' : ' ');
o mas útil aún:
printf ( "Tienes %d item%s.\n", n, n==1 ? "" : "s");
Espero que eso resuelva algunas dudas, el uso de este método de abstracción es idéntico en Java.
____________________________
Enlances:
http://www.zator.com/Cpp/E4_9_6.htm
http://www.cafeaulait.org/course/week2/43.html
x=1;
x= (x == 1) ? 0:1;
Pues bien, esto se llama "Operación Ternaria de "?"", y en si es un método bastante popular pues se ha implementado en otros lenguajes de programación como Java o C#.
En si es bastante simple, no es mas que la abreviación y abstracción del clásico if...else...if que podemos encontrar en prácticamente todos los lenguajes de programación de alto nivel (HLPL - High Level Programming Language).
De lo que se trata es de tener 3 expresiones (a modo básico, se pueden anidar mas) donde las escribimos de esta forma:
E1 ? E2:E3;
E1: La condición que íria como argumento de un bloque if.
E2: En caso que E1 sea true.
E3: En caso que E1 sea false.
Si lo convertimos en nuestros bloques comunes queda algo como:
if (E1) {E2;} else {E3;}
Como ven, es una forma bastante abstracta de escribir lo mismo y que sirve principalmente para condicionar de manera rápida una expresión, por ejemplo:
for (i = 0; i != n; i++)
printf ("%6d%c", a[i], (i%10==9 || i==n-1) ? '\n' : ' ');
o mas útil aún:
printf ( "Tienes %d item%s.\n", n, n==1 ? "" : "s");
Espero que eso resuelva algunas dudas, el uso de este método de abstracción es idéntico en Java.
____________________________
Enlances:
http://www.zator.com/Cpp/E4_9_6.htm
http://www.cafeaulait.org/course/week2/43.html

0 comentarios:
Publicar un comentario en la entrada