Nesta aula estudaremos o Operador Ternário e aprenderemos como podemos escolher uma dentre 2 opções de forma menos verbosa, utilizando uma notação inline, isto é, uma notação onde toda a expressão será definida numa única linha.

OPERADOR TERNÁRIO

O Operador Ternário verifica uma condição e retorna um dentre dois valores pré-definidos em sua estrutura. Esta é uma notação chamada inline para as vezes em que seja necessário avaliar expressões e decidir por um dentre 2 valores.

A principal razão da existência do Operador Ternário, é servir como uma atalho linguístico. Até porque, tudo que é feito com o Operador Ternário pode ser escrito utilizando a Tomada de Decisão, ou seja, a instrução if. Porém, com a instrução if, utilizamos 4 linhas de código pra escolher uma dentre 2 opções, enquanto que com o operador ternário, sendo o mesmo um operador inline, obtemos o mesmo resultado utilizando uma única linha.

SITUAÇÃO PRÁTICA

O Operador Ternário se justifica em situações onde, por exemplo, temos 10 condições a serem verificadas e é necessário em todas, escolher um valor dentre 2 opções. Se, trabalharmos com a instrução if, utilizaremos, no mínimo, 40 linhas de código. Porém, com a Operação Ternária, conseguimos o mesmo resultado, utilizando apenas 10 linhas.

É verdade que a instrução if pode ser trabalhada de maneira inline, ou seja, escrever toda a expressão numa única linha. Porém, ainda que seja funcional, a leitura é prejudicada e novamente, o Operador Ternário se justifica.

A seguir, temos um exemplo onde inicialmente escolhemos um valor dentre 2 opções com a instrução if e em seguida, vamos escrever a mesma expressão, porém, utilizando o Operador Ternário.

int num = (caractere=='a') ?   65   :   66;
<valor> =        < x >     ? (True) : (False)

Inicialmente, estamos declarando uma variável de nome num do tipo int e estamos adicionando a mesma o valor resultante da resolução da estrutura do Operador Ternário.

O sinal de interrogação deve ser lido como: "A expressão é verdadeira?", ou seja, como o sinal denota, de fato estamos questionando o resultado da expressão lógica. Se o Valor Lógico for True o número 65 será retornado, senão, ou seja, o sinal de dois pontos : está substituindo a instrução else. Logo, devemos ler "senão", retorna o segundo valor definido na estrutura da Operação Ternária.

Por fim, temos que ler a expressão da seguinte maneira: O Valor Lógico da expressão é verdadeiro? Se sim, retorna o primeiro valor : senão, retorna o segundo valor. A seguir, vamos temos dois códigos que estão realizando a mesma tarefa, porém, um está escrito com a instrução if, enquanto o segundo, com o Operador Ternário.

//utilizando o Operador Ternário
int num = (caractere=='a') ? 65 : 66;

//utilizando a instrução "if"
if (caractere=='a')
    num = 65
else
    num = 66;

Por fim, se você compreendeu o uso da Tomada de Decisão, ou seja, da instrução if, conseguirás assimilar rapidamente essa notação. Até porque, a lógica de funcionamento é a mesma, a diferença está no "esquema" de cada estrutura.

SITUAÇÃO PRÁTICA

Agora, vamos desenvolver 2 códigos que realizam a mesma tarefa, porém, utilizando estruturas diferentes. Inicialmente, vamos trabalhar com a instrução if e em seguida, escreveremos o mesmo programa, porém, utilizando o Operador Ternário.

O programa que faremos, definirá uma variável do tipo char e inicializará a mesma com o caractere 'A' (maiúsculo). Em seguida, utilizando a instrução if e o Operador Ternário, avaliaremos uma expressão e retornaremos um valor.

IMPLEMENTANDO COM A INSTRUÇÃO if

Vamos escrever um código onde é necessário verificar se o número que o usuário informou é menor do que 0. Caso o valor informado seja menor, iremos resetar o valor atribuindo zero para a variável, do contrário, não faremos nada.

Então, o nosso objetivo é definir 0 caso o valor seja menor do que 0.

Inicialmente, vamos desenvolver um código utilizando a estrutura de Tomada de Decisão if e em seguida, vamos alterar o nosso código utilizando o Operador Ternário.

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int num, num2;

  printf("Informe um numero: ");
  scanf("%d", &num);

  if(num < 0)
    num2 =  0;
  else
    num2 = num;

  printf("O valor de num2 eh: %d \n\n", num2);

  return 0;
}

IMPLEMENTANDO COM O OPERADOR TERNÁRIO

#include <stdio.h>
#include <stdlib.h>

int main (void )
{
  int num;

  printf("Informe um numero: ");
  scanf("%d", &num);

  int num2;
  num2 = (num < 0) ? 0 : num;
  //num >= 0 ? num++ : num--;

  printf("O valor de num2 e: %d \n\n", num2);

  return 0;
}


Tags curso, c, operador, operador ternário, condição, blog

Comentários

comments powered by Disqus