Operador Ternário (ou condicional) -----> ?:

Olá de novo pessoal…

Continuando minhas dúvidas de usualidade de alguns operadores…

Alguém me diz onde vou usar um operador como este:

?:

por exemplo essa expressão eu entendo.
Expressão usando o Operador ternário ?:

[code]

//a, b e c são do tipo int, e x é do tipo boolean.

a = x ? b : c;[/code]

a mesma operação escrita por um ser humano, ou seja de forma legível:

if (x){ a=b; } else { a = c }

Se alguém puder reescrever essa expressão usando if/else eu agradeço. A expressão é esta:

a = b ? c ? d : e ? f : g : h ? i : j ? k : l;

té +

eu geralmente uso o ?: pra evitar escrever algumas linhas por causa de algo simples…

o ?: testa a condicao antes do ?, caso ela seja verdadeira, retorna o q estiver antes do :, caso seja falsa retorna o q estiver depois…

e o seu codigo equivale a isso:

if (b){
 if (c) a = d;
 else{
  if (e) a = f;
  else a = g;
 }
}
else{
 if (h)  a = i;
 else if (j) a = k
 else a = l
}

[quote=“feliperod”]Olá de novo pessoal…

Continuando minhas dúvidas de usualidade de alguns operadores…

Alguém me diz onde vou usar um operador como este:

?:

por exemplo essa expressão eu entendo.
Expressão usando o Operador ternário ?:

[code]

//a, b e c são do tipo int, e x é do tipo boolean.

a = x ? b : c;[/code]

a mesma operação escrita por um ser humano, ou seja de forma legível:

if (x){ a=b; } else { a = c }

Se alguém puder reescrever essa expressão usando if/else eu agradeço. A expressão é esta:

a = b ? c ? d : e ? f : g : h ? i : j ? k : l;

té +[/quote]

Depois que vc se acostuma ele fica claro de se entender, uma ajuda é colocar parentesis:
pelo seu primeiro exemplo:

a = (x ? b : c);

Bem simples, preticamente não mudou nada, mas veja para o que vc achou complicado:

a = (b ? (c ? d : (e ? f : g)) : (h ? i : (j ? k : l)));

Agora o que realmente significa a composição do operador?
tomando o exemplo mais simples que é a base do mesmo:

x ? b : c

Isso significa que:

[quote]Caso a expressão “x” seja verdadeira, então avalie a expressão “b”
Caso a expressão “x” seja falsa, então avalie a expressão “c”[/quote]

Vamos organizar melhor o código do Felipe apenas pra entendimento (Desculpe Felipe só acrescentei mas chaves - desnecessárias para o código mas facilitadores do entendimento):

if (b) {
    if (c) {
        a = d;
    } else if (e) {
        a = f; 
    } else {
        a = g; 
    } 
} else { 
    if (h) {
        a = i; 
    } else if (j) {
        a = k;
    } else {
        a = l;
    }
}

Valeu mesmo em pessoal…

Agora eu consegui entender melhor esse operador…

Realmente em alguns casos fica um código menor, porém, dificulta a leitura por outro programador.

No livro que estou estudando para a certificação diz que o uso deste operador não é recomendado nas empresas, por motivo de dificultar a leitura do código por um programador menos experiente…

O que acha disso?

valeu hein

té +

operador ternário rulez!!! hahahaha, aqui na minha empresa é direto, po, ele é simples, como vai dificultar…? a não ser q tenha doido q faça assim:

expressao1 ? x1 : expressa1 ? x2 : expressao3 : x3 : x4;

ps: tem um doido aqui q faz hahaha :lol:

[quote=“feliperod”]Valeu mesmo em pessoal…

Agora eu consegui entender melhor esse operador…

Realmente em alguns casos fica um código menor, porém, dificulta a leitura por outro programador.

No livro que estou estudando para a certificação diz que o uso deste operador não é recomendado nas empresas, por motivo de dificultar a leitura do código por um programador menos experiente…

O que acha disso?

valeu hein

té +[/quote]

Se uma empresa está nivelando o seus programadores pelo menos experiente, tem algo errado.