Módulo 1 · Lógica de Programação — Capítulo 04

Operadores e Expressões

Operadores são os verbos da programação: eles combinam valores para produzir novos valores. Aqui você aprende os três grupos universais — aritméticos, relacionais e lógicos — e a ordem em que eles são avaliados dentro de uma expressão.

1. O que é uma expressão

Uma expressão é qualquer combinação de valores, variáveis e operadores que, quando avaliada, produz um único resultado. 2 + 3 é uma expressão que produz 5. idade >= 18 é uma expressão que produz VERDADEIRO ou FALSO. Todo SE, ENQUANTO e atribuição que você vai escrever depende de expressões.

2. Operadores aritméticos

Fazem contas com números inteiros ou reais — a base de qualquer cálculo em um algoritmo.

OperadorOperaçãoExemploResultado
+Soma5 + 27
-Subtração5 - 23
*Multiplicação5 * 210
/Divisão5 / 22.5
DIVDivisão inteira (descarta o resto)5 DIV 22
MODResto da divisão5 MOD 21
Comparando com o que você já sabe

Em JavaScript, o operador de resto é % (5 % 2 também dá 1), e a divisão inteira não tem operador próprio — você faz Math.floor(5 / 2). Praticamente toda linguagem tem algum jeito de calcular resto e divisão inteira, porque essas duas operações são a base de coisas como "verificar se um número é par" (n MOD 2 == 0) ou paginação de listas.

3. Operadores relacionais

Comparam dois valores e sempre produzem um resultado lógico (VERDADEIRO ou FALSO). São a base de toda decisão que um algoritmo toma.

OperadorSignificadoExemploResultado
=Igual a5 = 5VERDADEIRO
Diferente de5 ≠ 3VERDADEIRO
>Maior que5 > 3VERDADEIRO
<Menor que5 < 3FALSO
>=Maior ou igual a5 >= 5VERDADEIRO
<=Menor ou igual a5 <= 4FALSO
Atenção

Repare que em pseudocódigo usamos = tanto para atribuição (quando escrito como ) quanto para comparação de igualdade — mas são coisas diferentes e este curso usa símbolos diferentes de propósito para evitar confusão. Isso importa porque em várias linguagens reais (incluindo C, C# e outras) o operador de atribuição é = e o de comparação é == — confundir os dois é um dos erros mais comuns de quem está aprendendo, mesmo entre programadores experientes trocando de linguagem.

4. Operadores lógicos

Combinam expressões lógicas entre si para formar condições mais complexas. Os três operadores lógicos universais são E, OU e NÃO.

OperadorRegraExemplo
EVerdadeiro somente se ambos os lados forem verdadeirosidade >= 18 E temCarteira
OUVerdadeiro se pelo menos um dos lados for verdadeiroehFeriado OU ehFimDeSemana
NÃOInverte o valor lógicoNÃO estaChovendo
PSEUDOCÓDIGO operadores-logicos.txt
INÍCIO
    idade ← 20
    temCarteira ← VERDADEIRO

    SE idade >= 18 E temCarteira ENTÃO
        ESCREVA "Pode dirigir."
    SENÃO
        ESCREVA "Não pode dirigir."
    FIM SE
FIM

5. Precedência de operadores

Quando uma expressão mistura vários operadores, a ordem em que eles são avaliados importa — isso se chama precedência. A regra geral, praticamente universal entre linguagens de programação, segue esta ordem (do que é avaliado primeiro para o que é avaliado por último):

OrdemOperadoresTipo
( )Parênteses — sempre avaliados primeiro
* / DIV MODAritméticos de multiplicação/divisão
+ -Aritméticos de soma/subtração
> < >= <= = Relacionais
NÃOLógico de negação
ELógico E
OULógico OU

Essa ordem é a mesma, com pouquíssima variação, em JavaScript, C#, Python e praticamente qualquer linguagem — porque todas herdam a convenção da matemática básica (multiplicação antes de soma) e estendem ela para comparações e lógica.

PSEUDOCÓDIGO precedencia.txt
resultado ← 2 + 3 * 4        // multiplicação primeiro: 2 + 12 = 14
resultado ← (2 + 3) * 4      // parênteses primeiro: 5 * 4 = 20

podeEntrar ← idade >= 18 E idade <= 65 OU temAutorizacao
// avaliado como: (idade >= 18 E idade <= 65) OU temAutorizacao
Nota

Quando uma expressão lógica fica complexa, use parênteses mesmo que não sejam estritamente necessários. (idade >= 18 E temCarteira) OU temAutorizacaoEspecial é muito mais fácil de ler do que confiar de cabeça na ordem de precedência entre E e OU. Isso vale para qualquer linguagem que você for programar depois.

6. Símbolos comuns entre linguagens

Para fechar o capítulo, uma tabela de referência rápida — o mesmo operador lógico ou relacional, escrito como aparece de fato em diferentes linguagens populares:

ConceitoPseudocódigo (curso)JavaScriptOutras linguagens comuns
Igualdade====== em C#, Python, Java
Diferença!==!= na maioria
E lógicoE&&and (Python), && (C#, Java)
OU lógicoOU||or (Python), || (C#, Java)
NÃO lógicoNÃO!not (Python), ! (C#, Java)
Resto da divisãoMOD%% na maioria

Note como o conceito nunca muda — só o símbolo. É exatamente esse tipo de tradução mecânica, sem precisar reaprender lógica, que você vai fazer o tempo todo quando trocar de linguagem na prática.

📌 Resumo do capítulo

  • Expressão é qualquer combinação de valores e operadores que produz um único resultado.
  • Operadores aritméticos (+ - * / DIV MOD) fazem cálculos com números.
  • Operadores relacionais (= ≠ > < >= <=) comparam valores e sempre resultam em VERDADEIRO ou FALSO.
  • Operadores lógicos (E OU NÃO) combinam expressões lógicas entre si.
  • A ordem de precedência é praticamente universal: parênteses, depois aritméticos, depois relacionais, depois lógicos.
  • Use parênteses para deixar expressões lógicas complexas explícitas, mesmo quando não são obrigatórios.
  • Os símbolos mudam de linguagem para linguagem, mas o conceito por trás de cada operador é sempre o mesmo.

✏️ Praticando

  1. Calcule à mão o resultado de 10 + 2 * 3 - 1 e depois de (10 + 2) * (3 - 1), aplicando a precedência correta.
  2. Escreva uma expressão lógica em pseudocódigo que verifique se uma pessoa pode entrar em um cinema de graça: idade menor que 5 anos OU (é aniversariante E está acompanhado de um adulto).
  3. Determine se um número é par usando o operador MOD, escrevendo o algoritmo completo em pseudocódigo.
  4. Reescreva a tabela da seção 6 de cabeça, sem olhar, para os operadores de igualdade, E e OU.