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.
| Operador | Operação | Exemplo | Resultado |
|---|---|---|---|
+ | Soma | 5 + 2 | 7 |
- | Subtração | 5 - 2 | 3 |
* | Multiplicação | 5 * 2 | 10 |
/ | Divisão | 5 / 2 | 2.5 |
DIV | Divisão inteira (descarta o resto) | 5 DIV 2 | 2 |
MOD | Resto da divisão | 5 MOD 2 | 1 |
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.
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
= | Igual a | 5 = 5 | VERDADEIRO |
≠ | Diferente de | 5 ≠ 3 | VERDADEIRO |
> | Maior que | 5 > 3 | VERDADEIRO |
< | Menor que | 5 < 3 | FALSO |
>= | Maior ou igual a | 5 >= 5 | VERDADEIRO |
<= | Menor ou igual a | 5 <= 4 | FALSO |
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.
| Operador | Regra | Exemplo |
|---|---|---|
| E | Verdadeiro somente se ambos os lados forem verdadeiros | idade >= 18 E temCarteira |
| OU | Verdadeiro se pelo menos um dos lados for verdadeiro | ehFeriado OU ehFimDeSemana |
| NÃO | Inverte o valor lógico | NÃO estaChovendo |
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):
| Ordem | Operadores | Tipo |
|---|---|---|
| 1º | ( ) | Parênteses — sempre avaliados primeiro |
| 2º | * / DIV MOD | Aritméticos de multiplicação/divisão |
| 3º | + - | Aritméticos de soma/subtração |
| 4º | > < >= <= = ≠ | Relacionais |
| 5º | NÃO | Lógico de negação |
| 6º | E | Lógico E |
| 7º | OU | Ló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.
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
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:
| Conceito | Pseudocódigo (curso) | JavaScript | Outras linguagens comuns |
|---|---|---|---|
| Igualdade | = | === | == em C#, Python, Java |
| Diferença | ≠ | !== | != na maioria |
| E lógico | E | && | and (Python), && (C#, Java) |
| OU lógico | OU | || | or (Python), || (C#, Java) |
| NÃO lógico | NÃO | ! | not (Python), ! (C#, Java) |
| Resto da divisão | MOD | % | % 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.