Capitulo 5 - Operadores e Expressões
[1]Copyright © 2026 Alyce Suza.
Aritméticos, Relacionais e Lógicos
5.1 O que é uma Expressão?
Em Portugol, as expressões podem ser puramente aritméticas para produzir números matemáticos, relacionais para produzir resultados de verdadeiro ou falso, ou totalmente lógicas para combinar e avaliar estados compostos. Eu vejo muitos estudantes ignorando essa base matemática, mas o domínio firme dessa estrutura evita erros invisíveis mais à frente.
5.2 Operadores Aritméticos: Calculando
Os operadores aritméticos formam o alicerce matemático da programação estruturada. Eles permitem que o computador processe dados numéricos executando as operações fundamentais que conhecemos da álgebra básica.
| Operador | Uso | Exemplos |
|---|---|---|
+ (adição) |
a + b |
5 + 3 = 8 | 10.5 + 2 = 12.5 |
- (subtração) |
a - b |
10 - 4 = 6 | 5.0 - 8.5 = -3.5 |
* (multiplicação) |
a * b |
3 * 7 = 21 | 2.5 * 4 = 10.0 |
/ (divisão) |
a / b |
15 / 4 = 3 (inteiro!) | 15.0 / 4 = 3.75 |
% (módulo ou resto) |
a % b |
15 % 4 = 3 | 10 % 2 = 0 | 7 % 3 = 1 |
inteiro, o cálculo 15 / 4 = 3 descarta totalmente a fração decimal sem arredondar. Se PELO MENOS UM dos operandos for do tipo real, o cálculo 15.0 / 4 = 3.75 preserva a precisão matemática original.
Isso afeta cálculos de média de forma drástica. Processar (7 + 8) / 2 resulta em 7, o que está errado. Enquanto isso, o processamento de (7.0 + 8.0) / 2 resulta em 7.5, que está absolutamente correto. Sempre declare as variáveis como real quando precisar de uma divisão precisa e exata.
O operador % retorna o RESTO da divisão inteira. É um dos recursos mais utilizados na rotina de programação para descobrir padrões matemáticos e criar ciclos lógicos de execução contínua.
| Uso Prático | Exemplo Aplicado |
|---|---|
| Verificar número par | numero % 2 == 0 resulta que é par (resto 0) |
| Verificar ímpar | numero % 2 != 0 resulta que é ímpar (resto 1) |
| Verificar divisibilidade | n % 5 == 0 resulta que n é divisível por 5 |
| Obter dígitos soltos | 123 % 10 = 3 separa o último dígito numérico |
| Ciclos limitados | horas % 24 converte o relógio para o formato 0 a 23 |
| Distribuição em grupos | indice % 3 gera as repetições estruturadas 0, 1, 2, 0, 1, 2 |
// Exemplos praticos do operador %
escreva(17 % 5) // = 2 (17 = 3*5 + 2)
escreva(20 % 4) // = 0 (divisivel por 4)
escreva(10 % 3) // = 1 (10 = 3*3 + 1)
escreva(7 % 2) // = 1 (7 e impar)
escreva(8 % 2) // = 0 (8 e par)
escreva(365 % 7) // = 1 (365 dias = 52 semanas + 1 dia)
5.3 Precedência de Operadores
Assim como nas regras estritas da matemática tradicional, há uma hierarquia formal de precedência no processamento computacional. Operadores de maior prioridade são invariavelmente avaliados primeiro pelo sistema do computador. Me impressiona como o esquecimento de um simples parêntese nesta fase pode desmoronar toda uma arquitetura de cálculos complexos.
| Prioridade Lógica | Operadores Avaliados |
|---|---|
| 1a (maior) | Parênteses ( ) |
| 2a | Multiplicação *, Divisão /, Módulo % |
| 3a (menor) | Adição +, Subtração estrita |
// Sem parenteses o sistema faz a multiplicacao primeiro
escreva(2 + 3 * 4) // = 2 + 12 = 14
// Com parenteses a operacao de soma acontece primeiro
escreva((2 + 3) * 4) // = 5 * 4 = 20
// Media ERRADA que divide nota2 por 2 e depois soma a nota1
real media = 7 + 9 / 2 // = 7 + 4.5 = 11.5 (ERRADO!)
// Media CORRETA que soma primeiro e depois divide pelo total
real media = (7 + 9) / 2 // = 16 / 2 = 8.0 (CORRETO!)
// Expressao complexa executando a leitura da esquerda para a direita no mesmo nivel
escreva(10 - 3 - 2) // = (10 - 3) - 2 = 5 (nao 10 - (3-2) = 9)
// Parenteses aninhados com o processamento fluindo de dentro para fora
escreva(((2 + 3) * (4 - 1)) / 3) // = (5 * 3) / 3 = 15 / 3 = 5
5.4 Operadores Relacionais: Comparando Valores
Os operadores relacionais têm a função exclusiva de comparar dois valores e retornar um estado de verdadeiro ou falso. Eles formam o alicerce absoluto de toda a tomada de decisão em programação de software, baseados integralmente na álgebra booleana formalizada por George Boole em 1854.
| Operador | Sintaxe | Exemplos de Avaliação |
|---|---|---|
== (igual a) |
a == b |
5==5 resulta V | 5==3 resulta F | "a"=="a" resulta V |
!= (diferente de) |
a != b |
5!=3 resulta V | 5!=5 resulta F |
> (maior que) |
a > b |
7>3 resulta V | 2>5 resulta F | 5>5 resulta F |
< (menor que) |
a < b |
2<5 resulta V | 7<3 resulta F |
>= (maior ou igual) |
a >= b |
5>=5 resulta V | 3>=5 resulta F |
<= (menor ou igual) |
a <= b |
3<=5 resulta V | 7<=5 resulta F |
== e = O símbolo = (um sinal de igual) representa estritamente ATRIBUIÇÃO, onde x = 5 coloca fisicamente o número 5 dentro da variável x. O símbolo == (dois sinais de igual) representa estritamente COMPARAÇÃO, onde x == 5 verifica se x vale 5 e retorna um valor lógico puro.
Escrever se (x = 5) quando a intenção mecânica era se (x == 5) é um erro clássico e perigoso. É evidente para quem sente na pele a depuração de sistemas complexos que essa pequena confusão gera bugs silenciosos dificílimos de rastrear.
inteiro idade = 17
real nota = 7.5
real saldo = -50.0
// Resultados de comparacoes armazenados em variaveis do tipo logico
logico ehMaior = (idade >= 18) // = falso
logico ehAprovado = (nota >= 6.0) // = verdadeiro
logico ehDevedor = (saldo < 0) // = verdadeiro
// Comparando dados com resultado direto de operacao matematica
logico mediaCima = ((nota + 8.0) / 2 >= 7.0) // = falso
// Usando o resultado relacional diretamente no comando de escreva
escreva("Maior de idade? ", ehMaior, "\n")
escreva("Aprovado? ", ehAprovado)
5.5 Operadores Lógicos: Combinando Condições
Operadores lógicos permitem combinar expressões booleanas singulares em estruturas de decisão muito mais abrangentes e complexas. Todo esse mecanismo se apoia na Álgebra Booleana, provando que formulações teóricas criam aplicações diretas na construção do pensamento da máquina.
Operador e (AND): A regra da obrigatoriedade total
A regra deste operador é engessada e estrita, ditando que o resultado final só é classificado como VERDADEIRO quando AMBOS os operandos envolvidos são verdadeiros. Basta que apenas um deles seja falso para que toda a expressão desmorone e se torne falsa. Como analogia prática de cofre de banco, para abrir a porta você precisa da chave física e da senha digital ao mesmo tempo. A ausência de qualquer uma das duas impede o acesso integralmente.
| Expressão Avaliada | Resultado Lógico |
|---|---|
V e V |
= VERDADEIRO |
V e F |
= FALSO |
F e V |
= FALSO |
F e F |
= FALSO |
inteiro idade = 20
real renda = 3000.0
// Aprovado para credito garantindo obrigatoriamente ser maior de 18 E com renda acima de 2000
logico aprovado = (idade >= 18) e (renda > 2000.0)
// = verdadeiro e verdadeiro = VERDADEIRO
// Outra verificacao restrita exigindo ser menor de 60 E simultaneamente maior de 18
logico adultoJovem = (idade >= 18) e (idade < 60)
// = verdadeiro e verdadeiro = VERDADEIRO
Operador ou (OR): A regra da permissividade condicional
A regra deste operador é amplamente mais permissiva e flexível. O resultado final é classificado como VERDADEIRO sempre que PELO MENOS UM dos operandos listados for verdadeiro. A expressão inteira só se torna falsa na situação extrema em que todos os operandos são simultaneamente falsos. Trazendo para a vida real de forma bem direta, para entrar em uma festa exclusiva você precisa de um convite nominal ou estar na lista de convidados VIP. Possuir apenas um dos dois requisitos já é plenamente suficiente para liberar sua entrada no evento.
| Expressão Avaliada | Resultado Lógico |
|---|---|
V ou V |
= VERDADEIRO |
V ou F |
= VERDADEIRO |
F ou V |
= VERDADEIRO |
F ou F |
= FALSO |
inteiro nota = 5
inteiro faltas = 20
// O aluno e reprovado no sistema se a nota for < 6 OU se as faltas passarem do limite de 15
logico reprovado = (nota < 6) ou (faltas > 15)
// = verdadeiro ou verdadeiro = VERDADEIRO
// O cliente tem acesso liberado imediato se ele for socio do clube OU se ele pagou o ingresso avulso
logico temAcesso = (ehSocio) ou (pagouIngresso)
Operador nao (NOT): A regra da inversão de estado
A diretriz funcional deste operador é simples e cirúrgica, atuando apenas para inverter o valor lógico original de uma variável. O que era um estado verdadeiro vira instantaneamente falso e o que era falso converte para verdadeiro. Diferente dos operadores conectivos anteriores, o inversor necessita de apenas um operando solitário para executar sua função de espelhamento estrutural no código.
| Expressão Avaliada | Resultado Lógico |
|---|---|
nao verdadeiro |
= FALSO |
nao falso |
= VERDADEIRO |
logico ligado = verdadeiro
logico desligado = nao ligado // = nao verdadeiro = FALSO
// Verificar ativamente se um numero especifico NAO e par para confirmar que e impar
inteiro n = 7
logico ehImpar = nao (n % 2 == 0) // inverte o resultado de falso convertendo para verdadeiro
Precedência dos Operadores Lógicos
| Prioridade Executiva | Operador Ativo |
|---|---|
| 1a (maior) | nao |
| 2a | e |
| 3a (menor) | ou |
// Sem os parenteses organizacionais o sistema segue a ordem de prioridade nativa as cegas
logico r1 = nao falso e verdadeiro ou falso
// = (nao falso) e verdadeiro ou falso
// = verdadeiro e verdadeiro ou falso
// = verdadeiro ou falso = VERDADEIRO
// Recomendacao profissional inegociavel para garantir a clareza visual impecavel da sua logica
logico r2 = (nao falso) e (verdadeiro ou falso)
5.6 Expressões Mistas: Combinando Tipos de Operadores
Nos sistemas reais de larga escala, as expressões sempre combinam de forma entrelaçada os operadores aritméticos, relacionais e lógicos. A ordem rigorosa de avaliação matemática segue uma diretriz inquebrável estipulando que os processamentos aritméticos rodam primeiro, seguidos obrigatoriamente pelas avaliações relacionais, e finalizando o fluxo algorítmico com os lógicos.
inteiro a = 5, b = 3, c = 8
// Avaliacao de expressoes mistas respeitando a ordem cronologica exigida pelo compilador
logico r1 = (a + b > c) // (8 > 8) = falso
logico r2 = (a * 2 >= b + 5) // (10 >= 8) = verdadeiro
logico r3 = (a > b) e (c > a) // (verdadeiro) e (verdadeiro) = verdadeiro
// Exemplo pratico e real validando um sistema logico de analise estrita de faixas de IMC
real peso = 70, altura = 1.75
real imc = peso / (altura * altura)
logico saudavel = (imc >= 18.5) e (imc < 25.0)
escreva("O paciente possui atualmente um IMC considerado saudavel? ", saudavel)
5.7 Exercícios do Capítulo 5
O gabarito consolidado e comentado está posicionado no final deste documento.
Anote suas tentativas falhas exaustivamente. Comparar seu raciocínio natural de erro com a solução técnica estruturada é o que solidifica de verdade o aprendizado da programação.
Calcule e exiba as seguintes respostas rigorosas: soma, diferença direta, produto gerado, divisão e o resto exato da divisão através do processamento de módulo.
Para extrair o módulo computacional de forma coerente, converta os valores capturados para o formato inteiro antes da operação central, pois o operador específico de % no Portugol exige exclusivamente números de formato inteiro. A divisão também precisa ser devidamente blindada na lógica, determinando que se o segundo número enviado for zero absoluto, o sistema deve exibir uma mensagem descritiva de erro na tela em vez de tentar realizar a divisão e colapsar a aplicação.
Dica: A declaração paralela de variáveis inteiras extraindo a parte inteira dos números reais realiza a conversão estrutural descartando as casas decimais flutuantes. Isso limpa perfeitamente os dados para o uso do % de forma estável.
Usando especificamente as engrenagens conjuntas dos operadores lógicos combinados, verifique os dados e exiba na saída final:
-
Se o número exato está posicionado na faixa entre 1 e 100 de forma totalmente inclusiva.
-
Se o número possui a característica técnica de ser par E positivo ao mesmo tempo.
-
Se o número é um múltiplo matemático comprovado de 3 OU um múltiplo exato de 5.
-
Se o número testado rigorosamente NÃO é enquadrado como divisível por 7 na tabuada.
Dica: O uso massivo e organizado do operador relacional % é o caminho perfeito para atestar a divisibilidade exata sem permitir sobras matemáticas.
Calcule rigorosamente a média ponderada acionando a fórmula padronizada multiplicando cada nota por seu respectivo peso somando todas as fatias, e logo após dividindo esse bloco pela soma exata dos três pesos.
Exiba o valor numérico puro da média calculada e informe de forma clara e estruturada com respostas lógicas do tipo Verdadeiro ou Falso se o desempenho atinge concretamente os conceitos de classificação Excelente para nota maior ou igual a 9, Bom para nota maior ou igual a 7, Regular para nota maior ou igual a 5, ou Insuficiente para qualquer registro infeliz abaixo da margem de 5.
Dica: Para o funcionamento prático da fórmula não falhar no compilador, a soma integral dos pesos obrigatoriamente precisa ser usada de forma matemática como o divisor constante geral.
Gabarito do Capítulo 5
real na base primária para proteger a equação e garantir uma divisão exata que não sofra truncamento acidental no caminho. O operador % só é lido pelo processador do Portugol com o tipo inteiro, portanto a estratégia de conversão de dados prévia se torna estritamente inegociável.
programa
{
funcao inicio()
{
real a, b
escreva("Variavel A: ") leia(a)
escreva("Variavel B: ") leia(b)
escreva("Resultado da Soma estruturada: ", a+b, "\n")
escreva("Resultado da Diferenca absoluta: ", a-b, "\n")
escreva("Resultado do Produto gerado: ", a*b, "\n")
se (b != 0) { escreva("Resultado da Divisao calculada: ", a/b, "\n") }
senao { escreva("Aviso critico de sistema: Divisao logicamente impossivel por b=0\n") }
inteiro ia = a, ib = b
se (ib != 0) { escreva("Calculo exato do Resto modular: ", ia % ib, "\n") }
}
}
A linha de comando extraindo os dados para uma nova declaração inteira realiza a operação essencial de converter a essência de forma limpa pelo truncamento da parte decimal com extrema segurança operacional, impedindo o programa de estourar.
programa
{
funcao inicio()
{
inteiro n
escreva("Insira o Numero focado no teste de validacao: ") leia(n)
escreva("Status de intervalo restrito entre 1 e 100: ", (n >= 1) e (n <= 100), "\n")
escreva("Status de numero classificado Par e simultaneamente Positivo: ", (n % 2 == 0) e (n > 0), "\n")
escreva("Status de equivalencia matematica a Multiplo de 3 ou 5: ", (n % 3 == 0) ou (n % 5 == 0), "\n")
escreva("Status exclusivo e logico de NAO ser divisivel por 7: ", nao (n % 7 == 0), "\n")
}
}
Realizando um teste de mesa rápido e mental com o valor prático de entrada igual a 15, verificamos o acerto matemático constatando que a localização entre 1 e 100 emite um valor Verdadeiro. A ausência de paridade emite um valor Falso cravado, e a filiação exata à classe de múltiplos de 3 e 5 emite mais uma vez o Verdadeiro com absoluto sucesso.
programa
{
funcao inicio()
{
real n1, n2, n3, mp
escreva("Insira a Nota N1 (sujeita ao peso fixo de 2): ") leia(n1)
escreva("Insira a Nota N2 (sujeita ao peso fixo de 3): ") leia(n2)
escreva("Insira a Nota N3 (sujeita ao peso fixo de 5): ") leia(n3)
mp = (n1*2 + n2*3 + n3*5) / 10
escreva("O processamento bruto da Media ponderada finaliza em: ", mp, "\n")
se (mp >= 9) { escreva("Resultado conceitual de classe academica Excelente\n") }
senao se (mp >= 7) { escreva("Resultado conceitual de classe academica Bom\n") }
senao se (mp >= 5) { escreva("Resultado conceitual de classe academica Regular\n") }
senao { escreva("Resultado conceitual de classe Insuficiente apresentando risco de reprovacao\n") }
}
}
Um rápido cenário de teste validando o fluxo de dados com a inserção rotineira das notas 8, 7 e 9 engatilha imediatamente o cálculo bruto somando 16, 21 e 45, antes de fatiar isso por 10. Isso acaba gerando a fração calculada cravada no decimal exato 8.2, que classifica com folga estatística o desempenho global do aluno na categoria de classe Bom sem nenhuma distorção interpretativa.
Copyright © 2026 Alyce Suza. Todos os direitos reservados nos termos da Lei 9.610/98. O conteúdo publicado no site https://wiki.suzacybersecurity.com/ é protegido pelas diretrizes brasileiras de propriedade intelectual e a sua autoria é reconhecida desde o momento da criação técnica. O compartilhamento, a reprodução e a distribuição deste material são permitidos e incentivados apenas para finalidades educacionais, acadêmicas ou de consulta técnica, sendo estritamente vedado qualquer tipo de uso comercial. Para que a replicação seja validada e legal, você deve obrigatoriamente atribuir os devidos créditos a Alyce Suza e fornecer um link direto e acessível para a publicação original. A utilização deste material para obter lucro, monetização, venda de materiais ou qualquer vantagem financeira constitui violação de direitos autorais e está sujeita às sanções legais cabíveis, assim como alterações que modifiquem o sentido original das explicações sobre segurança da informação. Para eventuais dúvidas sobre permissões de uso, parcerias ou para reportar replicações indevidas, envie um e-mail para alycesuza@gmail.com. ↩︎