Arquivo da tag: operador ternário

Operador Ternário

programacao

Se você precisa trabalhar com condições simples no seu código talvez fosse interessante utilizar operadores ternários para deixar o código mais enxuto.

Como você implementa a operação ternária depende da linguagem de programação. Nos meus exemplos vou utilizar a linguagem C/C++, porém acredito que todas as linguagens com sintaxe semelhante ao do C/C++ façam este tipo de operação, como o Java, Javascript, C# e PHP. Tem também em Python, mas a sintaxe é diferente.

variavel = condicao ? valor_verdadeiro : valor_falso;

Isto é equivalente a isto:

if (condicao)
    variavel = valor_verdadeiro;
else
    variavel = valor_falso;

Alguns exemplos:

// Se op for 'x' será retonado 1, caso contrário 2 em option.
option = op == 'x' ? 1 : 2;

// Se a primeira letra de name for "a" será retonado "A" para
// capitalizar, senão retorna a primeira letra mesmo.
// No caso falso houve uma atribuição desnecessária já que foi
// atribuído name[0] ao próprio name[0].
name[0] = name[0] == 'a' ? 'A' : name[0];

// Aqui se number for 1 ele será incrementado, senão decrementado.
// Repare que não é feita atribuição em uma variável.
number == 1 ? number++ : number--;

Agora um exemplo de um programa usando o operador ternário. O programa conta a quantidade de letras “a” na frase digitada pelo usuário.

#include<stdio.h>
#include<string.h>

int main () {
    char frase[50];
    int i;
    int a = 0;
    printf("Informe uma frase: ");
    gets(frase);
    for(i = 0; i < strlen(frase); i++)
        a += frase[i] == 'a' ? 1 : 0;
    printf("A frase possui %d \"A\"s\n", a);
    return 0;
}

Simples não? Mas pra quem está começando no mundo da programação normalmente vai torcer o nariz pra este tipo de coisa.

"Porque utilizar esse "troço" se posso fazer com um IF?"

A minha única resposta é porque o código fica mais enxuto e simples. Os meus exemplos são bobos e só demonstram a utilização e não a melhor utilização dos operadores ternários. Se há alguma diferença de performance isso eu já não sei, mas se tiver deve ser tão pequena que poderia ser irrelevante.

Lembrando que essa sintaxe funciona em Java, Javascript, C#, Ruby e PHP.

Python

Em especial vou mostrar como se faz em Python.

    variavel = valor_verdadeiro if condicao else valor_falso

Exemplo:

    blog = 'blog.qualquer.com'
    score = 10 if blog == 'blog.wektabyte.com' else 5
    print score # exibe 5

Algumas linguagens não possuem um operador ternário real, como é o caso do VB que usa o IIF. O IIF é na verdade uma função e não um operador.