![]()
Uma das coisas mais importantes em qualquer linguagem de programação é seu suporte a operações matemáticas. Com Perl não é diferente: a linguagem oferece suporte a maioria das operações matemáticas que você vai precisar em sua vida acadêmica e profissional, e eu vou comentar aqui as mais básicas, para que você seja capaz de seguir com as próprias pernas.
O Perl dá suporte a diversos tipos de dados numéricos. Abaixo, alguns exemplos de uso:
10 # integer
-10 # negative integer
123.45 # floating point (float)
6.2E2 # scientific notation
0xffff # hexadecimal (starting with "0x")
0377 # octal (starts with "0")
0b100111101 # binary (starts with "0b")
5_232_999_435 # large numbers arranged with underscores
Internamente, no entanto, ele trabalha como se todos os números fossem de ponto flutuante. Ou seja, 1 vira 1.0, 2 vira 2.0, e assim por diante.
O Perl também tem suporte a diferentes funções matemáticas, como soma, subtração, multiplicação, divisão, exponenciação e resto da divisão. Vejamos o que cada um deles faz.
A adição, como o próprio nome diz, se trata de você somar dois números para formar um terceiro. A expressão matemática 23 + 32, por exemplo, tem como resultado 55. Também temos que ter em mente que números negativos também podem ser somados, mas o efeito dessa soma será o mesmo de uma subtração de um inteiro positivo, ou seja, a expressão 32 + (-23) terá como resultado 9. Observe abaixo os exemplos:
print 23 + 32, "\n"; # 55
print 32 + (-23), "\n"; # 9
Agora a subtração. A subtração se trata de fazer a operação inversa da divisão, ou seja, se 23 + 32 = 55, então 55 - 32 = 23. A mesma regra do número negativo prevalece, ou seja, se o número for negativo, a função vai ser alterada, logo, 9 - (-23) = 32. Confira os exemplos abaixo:
print 55 - 32, "\n"; # 23
print 9 - (-23), "\n"; # 32
A multiplicação seria o mesmo que um processo de somas consecutivas, ou seja, 2 * 3 é a mesma coisa que 2 + 2 + 2, ou que 3 + 3. Nesse caso, ter um número negativo na operação só fará que o resultado final seja negativo (ou seja, 2 * -2 = -4), enquanto ter dois números negativos fará o resultado ficar positivo (ou seja, -2 * -2 = 4). Observe os exemplos abaixo:
print 2 * 3, "\n"; # 6
print 2 * -3, "\n"; # -6
print -2 * -3, "\n"; # 6
A divisão é algo um pouco mais complexo. Dividir um número por outro seria encontrar qual número que multiplicado pelo divisor daria o número que foi dividido (sim, o conceito é confuso, mas já vou te dar exemplos). Pense no seguinte: 4 / 2 = 2 porque 2 * 2 = 4, 8 / 2 = 4 porque 4 * 2 = 8, e assim por diante.
Porém, nesse caso, existe uma pequena diferença. E se tentarmos fazer 2 / 4? O resultado, nesse caso, será 0.5, um número de ponto flutuante, e 0.5 * 4 = 2. Olhe os exemplos:
print 4 / 2, "\n"; # 2
print 2 / 4, "\n"; # 0.5
print 8 / 2, "\n"; # 4
Mas e o que é o resto da divisão? Para sabermos isso, teremos que entender o conceito de divisão inteira. Na matemática para computação, existem dois tipos de divisão: a convencional, de ponto flutuante, e a inteira, que trata apenas de números inteiros. Ou seja, enquanto em uma divisão convencional, 2 / 4 = 0.5, em uma divisão inteira seria 2 / 4 = 0. Ok, mas e o resto da divisão? Simples, como a operação de pegar o resto da divisão, em Perl, é definida pelo caractere %, a operação final ficará assim: 2 % 4 = 2.
Esse tipo de operação é usado, por exemplo, para verificar se um número é par ou impar: se o resto da divisão de um número por 2 for 0, o número é par, senão, é ímpar. Veja alguns exemplos:
print 4 % 2, "\n"; # 0
print 4 % 3, "\n"; # 1
print 2 % 5, "\n"; # 2
print 3 % 2, "\n"; # 1
print 3 % 5, "\n"; # 3
print 4 % 2 == 0 ? "true" : "false", "\n"; # true
print 3 % 2 == 0 ? "true" : "false", "\n"; # false
print 2 % 2 == 0 ? "true" : "false", "\n"; # true
print 0 % 2 == 0 ? "true" : "false", "\n"; # true
print 50 % 2 == 0 ? "true" : "false", "\n"; # true
Potenciação (identificada por ** em Perl) se trata de multiplicar um número por ele mesmo x vezes, ou seja, 2 ** 2 é a mesma coisa que 2 * 2, e 2 ** 3 é o mesmo que 2 * 2 * 2. Veja alguns exemplos abaixo:
print 2 ** 2, "\n"; # 4
print 5 ** 2, "\n"; # 25
print 2 ** 3, "\n"; # 8
print 2.5 ** 2, "\n"; # 6.25
print 0.5 ** 5, "\n"; # 0.03125
Agora que temos exemplos de números, que tal tentar algumas operações matemáticas? Vamos começar pelo mais simples. Tente rodar as seguintes fórmulas, e veja seus resultados:
- 4 ** 3
- 5 + 4 + 3 + 2 -1
- 2 / 4
- 3 * 25
- 5 % 3
Agora vamos aprender um pouco sobre precedência de operações. Qual o resultado de 1 + 2 * 3? Para alguns, pode ser 9, porque vão calcular primeiro 1 + 2 (que vai dar 3), e depois 3 * 3, que vai dar 9, enquanto para outros o resultado vai ser 7, porque vão calcular primeiro 2 * 3, que vai dar 6, e depois 1 + 6, que vai dar 7. Mas qual é a forma correta? Vamos tentar usando Perl. Rode o seguinte comando no seu shell:
perl -e 'print 1 + 2 * 3, "\n";'
O resultado foi 7, e isso é por causa da precedência de operadores. A precedência em Perl (e na maioria das linguagens) segue a seguinte ordem de precedência:

Os operadores que você não conhece, não se preocupe: você aprenderá nos próximos tutoriais.
E então? Ficou alguma dúvida? Tem alguma crítica, elogio ou comentário? Deixa aí embaixo, sua opinião é muito importante para mim 😄☺️