Na aula anterior aprendemos a utilizar variáveis para guardar informação e vimos que os valores podem ser de diferentes tipos, como texto, números inteiros, números decimais ou valores lógicos.
Guardar informação é importante, mas normalmente queremos fazer alguma coisa com ela.
Se tivermos o preço e a quantidade de um produto, podemos calcular o total da compra. Se tivermos duas classificações, podemos calcular a média. Se soubermos a idade de uma pessoa, podemos verificar se tem determinada idade mínima.
Para realizar estas operações, as linguagens de programação utilizam operadores.
Nesta aula vamos conhecer os principais operadores do PHP e perceber como podemos utilizá-los para realizar cálculos, atribuir valores e construir expressões que mais tarde permitirão aos nossos programas tomar decisões.
1. O que é um operador?
Um operador é um símbolo que indica ao PHP que deve realizar determinada operação sobre um ou mais valores.
Já utilizámos um operador nas aulas anteriores:
$nome = "João";
O símbolo:
=
é o operador de atribuição.
Indica que o valor "João" deve ser guardado na variável $nome.
Mas existem muitos outros operadores.
Por exemplo:
$total = 10 + 5;
Neste caso temos dois operadores:
Primeiro é calculado:
10 + 5
e o resultado:
15
é guardado em $total.
2. Operadores aritméticos
Os operadores aritméticos permitem realizar cálculos matemáticos.
| Operador | Operação | Exemplo | Resultado |
|---|---|---|---|
+ | Adição | 10 + 5 | 15 |
- | Subtração | 10 - 5 | 5 |
* | Multiplicação | 10 * 5 | 50 |
/ | Divisão | 10 / 5 | 2 |
% | Resto da divisão | 10 % 3 | 1 |
** | Potência | 2 ** 3 | 8 |
Exemplo:
Resultado:
3. Um exemplo mais próximo de uma aplicação real
Imagine que estamos a desenvolver uma loja online.
Temos:
Para calcular o valor da compra:
Podemos depois apresentar:
O programa adapta automaticamente o resultado se alterarmos o preço ou a quantidade.
Por exemplo:
Mais tarde aprenderemos também a formatar valores monetários para que sejam apresentados com duas casas decimais.
4. O operador módulo %
Um operador que inicialmente pode parecer estranho é:
%
O operador módulo devolve o resto de uma divisão inteira.
Por exemplo:
Resultado:
1
Porque:
10 ÷ 3 = 3
e sobra:
1
Outro exemplo:
$resto = 20 % 5;
Resultado:
0
Este operador é muito útil para descobrir, por exemplo, se um número é par ou ímpar.
Um número par dividido por 2 tem sempre resto:
0
Por isso:
produz:
0
Na próxima aula poderemos utilizar este resultado numa condição.
5. Prioridade das operações
Tal como na Matemática, as operações não são necessariamente executadas da esquerda para a direita.
Observe:
$resultado = 10 + 5 * 2;
O resultado é:
20
e não:
30
A multiplicação é realizada primeiro:
Se quisermos realizar primeiro a soma:
$resultado = (10 + 5) * 2;
Resultado:
30
Quando uma expressão começa a ficar mais complexa, utilizar parênteses também ajuda a tornar o código mais fácil de compreender.
6. Operadores de atribuição
Já conhecemos:
=
Exemplo:
$idade = 17;
Mas existem formas abreviadas de alterar o valor de uma variável.
Imagine:
$saldo = 100;
Queremos adicionar 20:
$saldo = $saldo + 20;
Depois desta instrução:
$saldo → 120
PHP permite escrever a mesma operação de forma abreviada:
$saldo += 20;
Temos vários operadores deste tipo:
| Forma abreviada | Equivalente |
|---|---|
$x += 5 | $x = $x + 5 |
$x -= 5 | $x = $x - 5 |
$x *= 5 | $x = $x * 5 |
$x /= 5 | $x = $x / 5 |
$x %= 5 | $x = $x % 5 |
Exemplo:
Resultado:
17
Foram retiradas três unidades ao stock.
7. Incremento e decremento
É muito frequente precisarmos de aumentar ou diminuir uma variável em apenas uma unidade.
Podemos escrever:
$contador = $contador + 1;
ou:
$contador += 1;
Mas existe uma forma ainda mais simples:
$contador++;
O operador:
++
incrementa o valor em 1.
Exemplo:
Resultado:
11
Para diminuir uma unidade utilizamos:
$contador--;
Exemplo:
Resultado:
9
Estes operadores serão muito utilizados quando chegarmos aos ciclos.
8. Operadores de comparação
Até agora os operadores produziram principalmente números.
Mas os programas também precisam de comparar valores.
Por exemplo:
A idade é igual a 18?
O preço é superior a 100?
O stock é diferente de 0?
Estas comparações produzem um resultado lógico:
true
ou:
false
Os principais operadores são:
| Operador | Significado |
|---|---|
== | Igual |
=== | Igual em valor e tipo |
!= | Diferente |
<> | Diferente |
!== | Diferente em valor ou tipo |
> | Maior |
< | Menor |
>= | Maior ou igual |
<= | Menor ou igual |
9. Comparar valores
Exemplo:
Resultado:
Porque 17 não é maior nem igual a 18.
Se tivermos:
obtemos:
Podemos experimentar outras comparações:
Resultados:
Por enquanto estamos apenas a observar os resultados.
Na próxima aula vamos utilizar estas comparações para tomar decisões.
10. Atenção: = não é o mesmo que ==
Esta é uma das diferenças que mais erros provoca quando começamos a programar.
=
significa:
atribuir
Enquanto:
==
significa:
comparar
Por exemplo:
$idade = 17;
significa:
Guarda 17 na variável $idade.
Enquanto:
$idade == 17
significa:
O valor de $idade é igual a 17?
Portanto:
É importante não confundir estas duas operações.
11. == e ===
PHP possui duas formas muito comuns de verificar igualdade.
Considere:
Visualmente, os dois valores parecem representar o mesmo número.
Mas os tipos são diferentes:
Se fizermos:
var_dump($numero == $texto);
obtemos:
true
Com ==, PHP compara os valores fazendo conversões de tipo quando aplicável.
Mas:
var_dump($numero === $texto);
produz:
false
Porque === exige que o valor e o tipo sejam iguais.
Podemos resumir:
Esta distinção será importante quando começarmos a receber dados através de formulários.
12. Operadores lógicos
Às vezes uma decisão depende de mais do que uma condição.
Imagine:
O utilizador tem 18 anos e possui autorização?
ou:
O pagamento pode ser efetuado por cartão ou MB WAY?
Para combinar condições utilizamos operadores lógicos.
Os principais são:
| Operador | Significado |
|---|---|
&& | E |
|| | OU |
! | NÃO |
Também existem as palavras and, or e xor, mas nesta fase utilizaremos principalmente &&, || e !, evitando misturar formas diferentes.
13. Operador AND &&
Com:
&&
as duas condições têm de ser verdadeiras.
Exemplo:
Temos:
Logo:
true && true → true
Se uma delas for falsa:
true && false → false
14. Operador OR ||
Com:
||
basta que uma das condições seja verdadeira.
Resultado:
true
Apesar de $temCartao ser false, $temMbWay é true.
15. Operador NOT !
O operador:
!
inverte um valor lógico.
Se:
$esgotado = false;
então:
var_dump(!$esgotado);
produz:
true
Podemos interpretar:
!$esgotado
como:
não está esgotado.
16. Tabela lógica simples
AND
| A | B | A && B |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
OR
| A | B | A || B |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
Uma forma simples de memorizar:
AND (&&) → todas têm de ser verdadeiras.
OR (||) → pelo menos uma tem de ser verdadeira.
17. Operador de concatenação
Já utilizámos este operador na aula anterior:
.
Permite juntar strings e outros valores.
Resultado:
O aluno João tem 17 anos.
Também existe a atribuição com concatenação:
É equivalente a:
$mensagem = $mensagem . " João";
No final:
Olá João
18. Exemplo prático — Uma compra
Vamos juntar vários conceitos.
O interessante é que os valores são calculados.
Se alterarmos:
$quantidade = 5;
o subtotal e o total serão novamente calculados sem termos de alterar mais nenhuma parte do programa.
19. Pequeno desafio durante a aula
Cria:
Calcula a média das três classificações.
Teremos de pensar na expressão:
Em PHP:
$media = ($nota1 + $nota2 + $nota3) / 3;
Apresenta:
Depois utiliza var_dump() para testar:
$media >= 10
e:
$media >= 18
Observa os resultados.
Na próxima aula aprenderemos a fazer o programa reagir automaticamente a esses resultados.