Como utilizar o operador ternário na programação com Arduino

Operador Ternário na programação com Arduino

Objetivo

Nesta dica vamos mostrar como usar o operador ternário na programação com Arduino. O operador ternário é uma alternativa elegante e compacta para substituir a estrutura condicional if/else na seguinte situação específica:

1. Operador Ternário

1.1. Como já mencionamos acima, o operador ternário possui 3 operandos: Condição, Operação 1 se for verdadeiro e Operação 2 se for falso.

1.1.1 Observe que a operação 1 (se for verdadeiro) é precedida pelo sinal de interrogação (?). Já a operação 2 (se for falso) deve ser precedida do símbolo de dois pontos (:).

1.1.2. O operador ternário é utilizado na principais linguagens de programação empregadas atualmente.

1.2. Veja a seguir a sintaxe utilizada para criarmos um operador ternário na linguagem C++ e também na programação com Arduino:

Sintaxe:

 ?  : ;

2. Exemplo A

2.1 Neste exemplo, vamos calcular o imposto para duas condições de salário: salário maior que 2000, o imposto será de 20%, e salário menor ou igual a 2000, o imposto será de 10%.

void setup() {
 Serial.begin(9600);
 Serial.println("Digite o seu salário");
}

void loop() {
  if (Serial.available()) {
    int salario = Serial.parseInt();
    int imposto = salario > 2000 ? salario * 0.20 : salario * 0.1; 

  Serial.print("Salario = ");
  Serial.print(salario);
  Serial.print(" | Imposto = ");
  Serial.println(imposto);
  }
}

2.2. Observe que utilizamos o operador ternário para calcular o valor do imposto:

int imposto = salario > 2000 ? salario * 0.20 : salario * 0.1; 

2.2.1. No exemplo acima, temos:

2.2.1.1. condição:  salario > 2000

2.2.1.2. se a condição for verdadeira, retorna a operação 1: salario * 0.20

2.2.1.3. se a condição for falsa retorna a operação 2:  salario * 0.10

2.3. Abaixo, veja como ficaria o código com o condicional if/else.

 int imposto;
 if (salario > 2000) imposto = salario * 0.20;
   else imposto = salario * 0.10; 

2.3.1. Observe que no exemplo acima, onde usamos o operador condicional if/else, precisamos de no mínimo 2 linhas de código. Quando usamos o operador ternário, uma linha de código já é suficiente.

2.3.2. Observe que o uso de chaves {} para o operador condicional neste caso é opcional.

2.4. Copie o código nas 2 situações e rode na IDE do Arduino. Veja o resultado abaixo, para qualquer uma das situações (operador ternário ou operador condicional if/else):

3. Exemplo B

3.1 Neste exemplo, ao pressionarmos um botão (push button), podemos acender ou apagar um led.

const byte buttonPin = 2; // número do pino pushbutton
const byte ledPin = 8; // número do pino LED
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // pullup interno do Arduino
}
 
void loop(){
  if (!digitalRead(buttonPin)) { // verifica se o botão foi acionado    
    digitalRead(ledPin) ? digitalWrite(ledPin, LOW) : digitalWrite(ledPin, HIGH);
    while (!digitalRead(buttonPin)) {}
    delay(50);
  }
} 

3.2. Da mesma forma que no exemplo anterior, usamos o operador ternário:

digitalRead(ledPin) ? digitalWrite(ledPin, LOW) : digitalWrite(ledPin, HIGH);

 3.2.1. Resumindo o código acima temos:

3.2.1.1. Condição: Se o led estiver aceso (digitalRead(ledPin) == true)

3.2.1.2. se a condição for verdadeira retorna a operação 1:  digitalWrite(ledPin, LOW) - apaga o led

3.2.1.3. se a condição for falsa retorna a operação 2:  digitalWrite(ledPin, HIGH) - acende o led

3.3. Veja o mesmo código utilizando o operador if/else:

if (digitalRead(ledPin)) digitalWrite(ledPin, LOW);
    else digitalWrite(ledPin, HIGH); 

4. Documentação oficial

Estrutura de Controle If - Referência Arduino

Estrutura de Controle Else - Referência Arduino

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

{source}



style="display:block"
data-ad-client="ca-pub-0154803398463315"
data-ad-slot="6385083147"
data-ad-format="auto">


{/source}

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores