Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 17 Febrero 2013, 18:35 pm



Título: [Aporte] Operador condicional
Publicado por: anonimo12121 en 17 Febrero 2013, 18:35 pm
Os dejo aquí este aporte mio sobre el operador condicional para que aprendaís puesto que poca gente lo usa, se puede deber a que muchos tutoriales no lo explican o directamente al poco uso.

Código
  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc,char *argv[]){
  4.    string saludo=(9>28 && 2<9) ? "Hola" : "adios";
  5.    cout << saludo;
  6.  
  7.  
  8. }
si la expresion primera es verdadera se asignara "hola" si no "adios"

Saludos


Título: Re: [Aporte] Operador condicional
Publicado por: leogtz en 17 Febrero 2013, 19:02 pm
Se conoce mejor como operador ternario.

Saludos.


Título: Re: [Aporte] Operador condicional
Publicado por: elkiy en 17 Febrero 2013, 21:06 pm
si es el operador ternario, en el codigo tenes un error el el cout ultimo las comillas. este operador es un operador de seleccion como if... else, podes usar los dos pero si es por un mensaje, podes usarlo después si es por una funcion con más codigo te recomiendo usar if....else


Título: Re: [Aporte] Operador condicional
Publicado por: leosansan en 17 Febrero 2013, 21:16 pm
Os dejo aquí este aporte mio sobre el operador condicional para que aprendaís puesto que poca gente lo usa, se puede deber a que muchos tutoriales no lo explican o directamente al poco uso.


Se agradece la intensión, pero ¿de dónde sacas que se usa poco?.

Por ejemplo:

http://foro.elhacker.net/programacion_cc/help_calcular_maximo_de_3_numeros_usando_funcion-t383403.0.html

Y si quieres el máximo de cuatro números introducidos separados por un espacio:


Código
  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4. main()
  5. {
  6.    int a,b,c,d,mayor;
  7.    char ch,cad[100]/*= "17 32 15 27"*/;
  8.    cout <<"Introduzca cuatro numeros separados por un espacio:"<< endl;
  9.    gets (cad);
  10.    sscanf(cad, "%d%c%d%c%d%c%d",&a, &ch ,&b,&ch, &c,&ch, &d  );
  11.    if ((a= a>b ? a:b)>(c= c>d ? c:d))
  12.        cout << a << endl;
  13.    else
  14.        cout << "mayor = " << c << endl;
  15.    return 0;
  16. }
  17.  


Y así un porrón de ejemplos que han salido ya.

Saluditos!.

P.D: Te doy la razón en el nombre: operador condicional.



Título: Re: [Aporte] Operador condicional
Publicado por: anonimo12121 en 17 Febrero 2013, 21:35 pm
pues un monton de códigos que descargo y veo nunca los veo
xDD
El objetivo es q8ue lo vea los nuevos programadores!

Saludos


Título: Re: [Aporte] Operador condicional
Publicado por: 0xDani en 17 Febrero 2013, 22:05 pm
@Xafi se agradece el esfuerzo, pero te podias haber explayado un poco mas y haber puesto mas ejemplos, sobre todo para los que empiezan.

Pero de buen rollo xD


Título: Re: [Aporte] Operador condicional
Publicado por: anonimo12121 en 18 Febrero 2013, 00:44 am
Ya pero con eso supongo que es suficiente desde mi punto de vista solo hace falta desarrollar el condicional y luego a la parte izquierda es el valor si la condicion es cierta, la de la derecha es falsa.


Título: Re: [Aporte] Operador condicional
Publicado por: Sputnik_ en 18 Febrero 2013, 01:25 am
En el libro que estoy leyendo de C++ lo menciona una vez y lo deja en el olvido, yo lo veo como una herramienta muy útil a la hora de programar, gracias por el aporte.

Saludos


Título: Re: [Aporte] Operador condicional
Publicado por: bemone en 19 Febrero 2013, 01:34 am
Yo lo uso mucho para hacer funciones de 1 sola linea.


Título: Re: [Aporte] Operador condicional
Publicado por: Khronos14 en 19 Febrero 2013, 14:21 pm
Pues a mi no me gusta nada, en muchos libros recomiendan no utilizarlo porque hace más confusa la sintaxis del código. Por eso muchos libros tan solo lo mencionan o lo pasan por alto, como el goto.

Saludos.


Título: Re: [Aporte] Operador condicional
Publicado por: anonimo12121 en 19 Febrero 2013, 16:26 pm
creo que no podemos comparar esto con el goto.


Título: Re: [Aporte] Operador condicional
Publicado por: 0xDani en 19 Febrero 2013, 16:55 pm
creo que no podemos comparar esto con el goto.

+1


Título: Re: [Aporte] Operador condicional
Publicado por: Miky Gonzalez en 19 Febrero 2013, 17:30 pm
Creo que no se necesita mucha programacion con este condicional (ternario), tan solo un poco de practica:
Código
  1. if (Numero > 2) return 0;
  2. else return 1;
Esto es lo mismo que:
Código
  1. (Numero > 2) ? return 0 : return 1;
Pseudocódigo para ambos:
Código
  1. Si ('Numero' es_mayor_a '2') Entonces_Hacer Devolver 0;
  2. De_Otro_Modo Entonces_Hacer Devolver 1;


Título: Re: [Aporte] Operador condicional
Publicado por: bemone en 19 Febrero 2013, 22:07 pm
Yo lo uso mucho para hacer funciones de 1 sola linea.
Por ej:

Código
  1. bool esPar(int a){
  2.    return a%2 == 0 ? true : false;
  3. }
  4.  


Título: Re: [Aporte] Operador condicional
Publicado por: anonimo12121 en 19 Febrero 2013, 23:22 pm
tiene mucho potencial xD


Título: Re: [Aporte] Operador condicional
Publicado por: engel lex en 19 Febrero 2013, 23:26 pm
lo que pasa es que los fieles de poca fe tienen miedo a aprender cosas diferentes y se rehúsan a usar el ternario :P yo lo uso mucho... aunque una vez vi en un sistema como 8 ternarios anidados y eso si es exageración ya


Título: Re: [Aporte] Operador condicional
Publicado por: rir3760 en 20 Febrero 2013, 02:03 am
en muchos libros recomiendan no utilizarlo porque hace más confusa la sintaxis del código. Por eso muchos libros tan solo lo mencionan o lo pasan por alto, como el goto.
Si se utiliza con sentido común el operador ternario hace mas fácil el seguimiento del código fuente. Las buenas costumbres recomiendan enfatizar la selección: de un valor con ese operador y de una sentencia o bloque mediante las sentencias condicionales.

Creo que no se necesita mucha programacion con este condicional (ternario), tan solo un poco de practica:
Código
  1. if (Numero > 2) return 0;
  2. else return 1;
Esto es lo mismo que:
Código
  1. (Numero > 2) ? return 0 : return 1;
No. Ese operador requiere de dos expresiones como sus operandos y del mismo tipo o uno compatible, una sentencia de retorno como "return 1" no lo es. Para que sea valida hay que cambiarla a:
Código
  1. return (Numero > 2) ? 0 : 1;

Yo lo uso mucho para hacer funciones de 1 sola linea.

Por ej:
Código
  1. bool esPar(int a){
  2.    return a%2 == 0 ? true : false;
  3. }
No es un buen ejemplo ya que el resultado de los operadores relacionales es uno si se cumple la condición y cero en caso contrario. Y cuando se convierte un entero a booleano los valores distintos de cero resultan en true, solo cero resulta en false. Considerando eso la función se reduce a:
Código
  1. bool esPar(int a){
  2.    return a % 2 == 0;
  3. }

Un saludo


Título: Re: [Aporte] Operador condicional
Publicado por: 85 en 21 Febrero 2013, 01:02 am
si no se usa es porque no es necesario , pero si se usa puede ser que sea porque se necesita. por ejemplo, el switch puede no usarse y en su lugar usar puros if+elseif+else , a pesar de las ventajas que da switch.