Aula 05 - Operadores aritméticos e relacionais

Introdução

A linguagem Ruby, bem como as outras linguagens, possui pelo menos três tipos de operadores: os aritméticos, os lógicos e os relacionais. Os operadores nos permitem realizar determinadas operações com os dados. Nesta aula, iremos aprender sobre os operadores aritméticos.

Operadores Aritméticos

Os operadores aritméticos são aqueles que aprendemos nas aulas de matemática: soma, subtração, multiplicação, divisão, entre outros. Em Ruby, nós temos seis operadores aritméticos a nossa disposição.

Tabela 1 - Operadores aritméticos
Nome Símbolo Descrição Exemplo
Adição ou soma + Soma dois valores 2 + 3 = 5
Subtração - Subtrai dois valores 4 - 2 = 2
Multiplicação * Multiplica dois valores 2 * 2 = 4
Divisão / Divide dois valores 13 / 4 = 3
Módulo (resto da divisão) % Calcula o resto da divisão entre dois valores 13 % 4 = 1
Potência ** Calcula a potência entre dois valores 2 ** 3 = 8

Observe abaixo alguns exemplos de uso dos operadores aritméticos.

  
    irb(main):001:0> 5 + 5
    => 10
    irb(main):002:0> 3 – 5
    => -2
    irb(main):003:0> 4 * 4
    => 16
    irb(main):004:0> 22 / 11
    => 2
    irb(main):005:0> 22 % 11
    => 0
    irb(main):006:0> 3 ** 2
    => 9
    irb(main):007:0> 12 / 0
        ZeroDivisionError: divided by 0
        from (irb):7:in `/’
        from (irb):7
        from C:/Ruby22-x64/bin/irb:11:in `<main>’
  

Observe que, quando tentamos calcular 12 / 0, o Ruby apresentou um erro: ZeroDivisionError. Esse erro ocorreu porque não é possível dividir nem um valor por zero.

Atividade 5.1

Crie um script Ruby usando o Atom ou seu editor de código preferido. Nesse script, realize, pelo menos, uma operação com cada um dos operadores aritméticos apresentados.

Operadores aritméticos e variáveis

Lembra-se das variáveis? Também é possível utilizar os operadores aritméticos com variáveis. Confira abaixo o Exemplo de código 1.

  
    a = 4
    b = 2
    puts a + b
    puts a - b
    puts a * b
    puts a / b
    puts a % b
    puts a ** b
  

Exemplo de código 1 - Operadores aritméticos

Nas linhas 1 e 2 do Exemplo de código 1, criamos duas variáveis a e b e atribuímos valores a elas. Em seguida, usamos os operadores aritméticos para fazer operações matemáticas com os valores dessas variáveis. Observe que usamos o método puts para apresentar os resultados das operações.

Atividade 5.2

Crie um script Ruby usando o Atom ou seu editor de código preferido. Nesse script, realize pelo menos uma operação com cada um dos operadores aritméticos usando variáveis, conforme ilustrado no Exemplo de código 1.

Operadores Aritméticos e Variáveis Definidas pelo Usuário

Agora vamos um pouco além: vamos permitir que o usuário digite os valores das variáveis a e b e, em seguida, vamos usar esses valores para realizar operações matemáticas usando os operadores aritméticos. Observe abaixo o Exemplo de código 2.

  
    puts "Digite um valor"
    a = gets.chomp.to_i
    puts "Digite outro valor"
    b = gets.chomp.to_i

    puts a + b
    puts a - b
    puts a * b
    puts a / b
    puts a % b
    puts a ** b
  

Exemplo de código 2 - Usando operadores com valores definidos pelo usuário

Observe que, nas linhas 1 e 3, usamos o método puts para apresentar uma mensagem na tela solicitando que o usuário digite um valor. Nas linhas 2 e 4, usamos os métodos gets.chomp.to_i para permitir que o usuário digite um valor numérico no teclado. Esses valores digitados pelo usuário são guardados nas variáveis a e b.

Atividade 5.3

Crie um script Ruby usando o Atom ou seu editor de código preferido. Nesse script, digite o código apresentado no Exemplo de código 2, execute-o e verifique os resultados.

Apresentando melhor os resultados

Se você realizou a Atividade 5.3, deve ter observado que a execução do script apresentou algo parecido com o seguinte resultado.

  
    Digite um valor
    2
    Digite outro valor
    3
    5
    -1
    6
    0
    2
  

O resultado apresentado pelo script não deixa claro para o usuário quais foram as operações matemáticas realizadas. Para ver quais foram as operações aritméticas realizadas, o usuário teria de ver o código do script. Contudo, é possível melhorar a apresentação dos resultados. Para isso, iremos utilizar a substituição de expressões (RUBY, 2015).

A substituição de expressões permite-nos incluir expressões dentro de Strings. Observe abaixo o Exemplo de código 3.

  
    puts "Digite um valor"
    a = gets.chomp.to_i
    puts "Digite outro valor"
    b = gets.chomp.to_i
    puts "Calculando a soma entre #{a} e #{b}..."
    puts "O resultado da soma é #{a + b}"
  

Exemplo de código 3 - Exemplo com substituição de expressões

Atividade 5.4

Crie um script Ruby usando o Atom ou seu editor de código preferido. Nesse script, digite o código apresentado no Exemplo de código 3, execute-o e verifique os resultados.

Ao realizar o exercício proposto na Atividade 5.4, você deve ter observado um resultado parecido com o apresentado abaixo.

  
    Digite um valor
    2
    Digite outro valor
    3
    Calculando a soma entre 2 e 3...
    O resultado da soma é 5
  

Observe que o resultado apresentado não inclui #{a}, #{b} e #{a + b} que aparecem nas linhas 5 e 6 do Exemplo de código 3. Na realidade, #{a} foi substituído pelo valor da variável a, #{b} foi substituído pelo valor da variável b, e #{a + b} foi substituído pelo resultado da soma entre a e b.

Compreendido como funciona a substituição de expressões, agora podemos melhorar o nosso código. Observe a seguir o Exemplo de código 4.

  
    puts "Digite um valor"
    a = gets.chomp.to_i
    puts "Digite outro valor"
    b = gets.chomp.to_i
    puts "Você digitou os valores #{a} e #{b}, calculando..."

    puts "A soma entre #{a} e #{b} é #{a + b}"
    puts "A subtração entre #{a} e #{b} é #{a - b}"
    puts "A multiplicação entre #{a} e #{b} é #{a * b}"
    puts "A divisão entre #{a} e #{b} é #{a + b}"
    puts "O resto da divisão entre #{a} e #{b} é #{a % b}"
    puts "A potência entre #{a} e #{b} é #{a ** b}"
  

Exemplo de código 4 - Melhorando nosso código

Atividade 5.5

Crie um script Ruby usando o Atom ou seu editor de código preferido. Nesse script, digite o código apresentado no Exemplo de código 4, execute-o e verifique os resultados.

Ao realizar o exercício proposto na Atividade 5.5, você deve visualizar resultados parecidos com estes apresentados abaixo.

  
    Digite um valor
    2
    Digite outro valor
    3
    Você digitou os valores 2 e 3, calculando...
    A soma entre 2 e 3 é 5
    A subtração entre 2 e 3 é -1
    A multiplicação entre 2 e 3 é 6
    A divisão entre 2 e 3 é 5
    O resto da divisão entre 2 e 3 é 2
    A potência entre 2 e 3 é 8
  

Bem melhor, concorda? Observe que usamos bastante a substituição de expressões, no código, para que o Ruby substituísse os nomes das variáveis pelos seus respectivos valores, bem como as operações matemáticas pelos seus respectivos resultados.

Operadores Relacionais

Os operadores relacionais, também conhecidos como operadores de comparação, permitem-nos realizar comparações entre dois valores distintos (ou duas variáveis). Mas, antes de começarmos a discutir sobre esses operadores, vamos aprender um pouco sobre valores booleanos.

Um valor booleano é um tipo de dado primitivo que só pode assumir dois possíveis valores: verdadeiro, também conhecido como 1 (um) ou true; e falso, também conhecido como 0 (zero) ou false. Os valores booleanos vêm da Lógica de Boole, criada pelo inglês George Boole (LÓGICA, 2015).

Mas por que estamos discutindo valores booleanos? Porque os operadores relacionais, na maioria das vezes, dão como retorno (resposta) valores booleanos. Ou seja, quando você fizer a comparação entre dois valores ou variáveis usando operadores relacionais, o resultado será true (verdadeiro) ou false (falso). Há um único operador que resulta em um valor inteiro ao invés de um valor booleano, que será apresentado a seguir.

A linguagem Ruby conta com sete operadores relacionais, apresentados na Tabela 2.

Tabela 1 - Operadores relacionais
Operador Nome Exemplo Descrição
== Igualdade a == b Resulta true se a for igual a b, resulta false caso contrário
!= Diferente a != b Resulta true se a for diferente de b, resulta false caso contrário
> Maior que a > b Resulta true se a for maior que b, resulta false caso contrário
< Menor que a < b Resulta true se a for menor que b, resulta false caso contrário
>= Maior ou igual a >= b Resulta true se a for maior ou igual a b, resulta false caso contrário
<= Menor ou igual a <= b Resulta true se a for menor ou igual a b, resulta false caso contrário
<=> - a <=> b Resulta 0 se a for igual a b. Retorna 1 se a for maior que b e retorna -1 se a for menor que b

Vamos ilustrar o uso dos operadores relacionais através de alguns exemplos. Confira a seguir.

  
    irb(main):001:0> 1 == 1
    => true
    irb(main):002:0> 1 == 2
    => false
    irb(main):003:0> 1 != 1
    => false
    irb(main):004:0> 1 != 2
    => true
    irb(main):005:0> 2 > 3
    => false
    irb(main):006:0> 2 < 3
    => true
    irb(main):007:0> 2 >= 3
    => false
    irb(main):008:0> 2 <= 3
    => true
    irb(main):009:0> 5 <= 5
    => true
    irb(main):010:0> 4 <=> 8
    => -1
    irb(main):011:0> 10 <=> 2
    => 1
    irb(main):012:0> 12 <=> 12
    => 0
  

Observe que o operador <=> é o único que retorna um valor inteiro e não um valor booleano. Observe os exemplos a seguir para ver como os operadores relacionais também podem ser usados com variáveis.

  
    a = 2
    b = 4
    puts a == b
    puts a != b
    puts a < b
    puts a > b
    puts a <= b
    puts a >= b
    puts a <=> b
  

Exemplo de código 5 - Usando operadores relacionais com variáveis

Atividade 5.6

Crie um script Ruby e digite o código ilustrado no Exemplo de código 5. Por fim, execute o código e verifique o resultado apresentado pelo script.

Após executar o script apresentado no Exemplo de código 5, você deve observar o seguinte resultado.

  
    false
    true
    true
    false
    true
    false
    -1
  

Atividade 5.7

Crie um script Ruby e digite o código ilustrado no Exemplo de código 5. Por fim, execute o código e verifique o resultado apresentado pelo script.

  
    Digite um número inteiro:
    2
    Digite outro número inteiro:
    3
    2 é igual que 3? false
    2 é diferente que 3? true
    2 é menor que 3? true
    2 é maior que 3? false
    2 é menor ou igual que 3? true
    2 é maior ou igual que 3? false
  

Referências

POINT, T. Ruby Operators. Tutorials Point. 2015. Disponível em: http://www.tutorialspoint.com/ruby/ruby_operators.htm. Acesso em: 3 nov. 2015.

POINT, T. Ruby Strings. Tutorials Point. 2015. Disponível em: http://www.tutorialspoint.com/ruby/ruby_strings.htm. Acesso em: 4 nov. 2015.

SOUZA, L. Ruby: aprenda a programar na linguagem mais divertida. 1. ed. São Paulo: Casa do Código, 2012. v. I.

TECMUNDO. Lógica booleana? Saiba um pouco mais sobre esta lógica e como ela funciona. Disponivel em: http://www.tecmundo.com.br/programacao/1527-logica-booleana-saiba-um-pouco-mais-sobre-esta-logica-e-como-ela-funciona.htm. Acesso em: 13 nov. 2015.