Capítulo 03: Operadores Matemáticos, Expressões e Atribuição (=)

🎯 Objetivo da Aula

Na gestão logística e na administração, quase todas as decisões dependem de contas matemáticas rigorosas: cálculo de rentabilidade por quilômetro rodado, consumo de diesel da frota, divisão de lotes de paletes em caminhões e apuração de tributos.

Nesta aula, você aprenderá a:

  1. Compreender o funcionamento do Operador de Atribuição (=).
  2. Utilizar todos os Operadores Aritméticos do Portugol Studio: soma (+), subtração (-), multiplicação (*), divisão (/) e resto da divisão (%).
  3. Dominar os Operadores Unários e Compostos: incremento (++), decremento (--), atribuição aditiva (+=) e subtrativa (-=).
  4. Aplicar a Ordem de Precedência Matemática com parênteses para cálculos exatos.

📥 Material de Apoio e Código-Fonte da Aula:


🏢 O Cenário Prático (Seu Desafio)

Situação: A frota pesada da FastLog concluiu uma rota de transporte de 920 km entre São Paulo e Florianópolis. O caminhão consumiu 310 litros de diesel a R$ 5,90/litro, pagou R$ 280,00 de pedágios e faturou R$ 4,50 por quilômetro rodado.

Missão: Você deve construir um programa que calcule:

  1. O Faturamento Bruto Total da viagem.
  2. O Consumo Médio de Combustível (KM/L).
  3. O Lucro Líquido Operacional da transportadora.

🧠 Fundamentos: A Matemática no Portugol Studio

1. O Operador de Atribuição (=)

No Portugol Studio e na família de linguagens C/Java, o sinal de igual simples = representa a Atribuição:

$$\text{VariavelDestino} = \text{ExpressaoMatematica};$$

  • total = 10 + 5 (Lê-se: Calcule 10 + 5 e guarde o resultado 15 dentro da variável total).

Atribuição (=) vs Comparação (==):

  • x = 10 ➔ Guarda o valor 10 na variável x.
  • x == 10 ➔ Pergunta lógica (“x é igual a 10?”).

2. Tabela de Operadores Aritméticos

OperadorOperaçãoExemplo no CódigoResultado se a=7 e b=2
+Adiçãoa + b9
-Subtraçãoa - b5
*Multiplicaçãoa * b14
/Divisãoa / b3.5 (se as variáveis forem real)
%Módulo (Resto da Divisão)a % b1 (pois 7 / 2 dá 3 e sobra 1)

Divisão Inteira: o resultado é truncado, não arredondado
Se a e b forem do tipo inteiro, o operador / descarta a parte decimal do resultado — não arredonda para cima nem para baixo, simplesmente corta. Por exemplo, inteiro a = 7, b = 2 e a / b resulta em 3 (não 3.5 e não 4). Para saber o que “sobrou” dessa divisão, use o % junto: 7 / 2 é 3, e 7 % 2 é 1.

graph TD
    A["Expressão: 7 / 2 (Divisão Real)"] --> B["Resultado: 3.5"]
    C["Expressão: 7 % 2 (Módulo / Resto)"] --> D["Resto Inteiro: 1"]
    
    style B fill:#2980b9,stroke:#fff,color:#fff
    style D fill:#f39c12,stroke:#fff,color:#fff

3. Operadores Compostos de Incremento

O Portugol Studio suporta os operadores de atalho da linguagem C:

  • contador++ ➔ O mesmo que contador = contador + 1 (Incremento de 1 em 1).
  • contador-- ➔ O mesmo que contador = contador - 1 (Decremento).
  • total += valor ➔ O mesmo que total = total + valor (Acumulador).
  • saldo -= gasto ➔ O mesmo que saldo = saldo - gasto.

4. A Ordem de Precedência Matemática

O computador avalia expressões matemáticas seguindo a regra universal:

  1. ( ) Parênteses: Sempre executados em primeiro lugar.
  2. *, /, %: Multiplicações, divisões e restos (da esquerda para a direita).
  3. +, -: Somas e subtrações.

📖 Exemplo Guiado: Balanço Financeiro da Rota

Código do Programa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
programa 
{
	funcao inicio() 
	{
		// 1. Dados de Entrada da Rota
		real distanciaKm = 920.0
		real dieselLitros = 310.0
		real precoDieselLitro = 5.90
		real pedagioTotal = 280.00
		real tarifaPorKm = 4.50

		// 2. Cálculos Matemáticos
		real faturamentoBruto = distanciaKm * tarifaPorKm
		real gastoCombustivel = dieselLitros * precoDieselLitro
		real lucroLiquido = faturamentoBruto - (gastoCombustivel + pedagioTotal)
		real consumoKmLitro = distanciaKm / dieselLitros

		// 3. Emissão do Relatório Financeiro
		escreva("=== BALANÇO DE VIAGEM: SP -> FLORIANÓPOLIS ===\n")
		escreva("Distância Percorrida  : ", distanciaKm, " KM\n")
		escreva("Consumo Médio da Frota: ", consumoKmLitro, " KM/L\n")
		escreva("----------------------------------------------\n")
		escreva("Faturamento Bruto     : R$ ", faturamentoBruto, "\n")
		escreva("(-) Custo Combustível : R$ ", gastoCombustivel, "\n")
		escreva("(-) Custo de Pedágios : R$ ", pedagioTotal, "\n")
		escreva("==============================================\n")
		escreva("LUCRO LÍQUIDO FINAL   : R$ ", lucroLiquido, "\n")
	}
}

✅ Resultado Esperado no Console (Shift + F6):

1
2
3
4
5
6
7
8
9
=== BALANÇO DE VIAGEM: SP -> FLORIANÓPOLIS ===
Distância Percorrida  : 920.0 KM
Consumo Médio da Frota: 2.967741935483871 KM/L
----------------------------------------------
Faturamento Bruto     : R$ 4140.0
(-) Custo Combustível : R$ 1829.0
(-) Custo de Pedágios : R$ 280.0
==============================================
LUCRO LÍQUIDO FINAL   : R$ 2031.0

🛠️ Prática Obrigatória 1: Cotação de Frete por Peso e Volume

Passo 1: O Desafio

Crie um programa cotacao_frete.por que calcule o frete cobrado aplicando a fórmula: $$\text{Frete} = (\text{pesoKg} \times 2.80) + (\text{volumeM3} \times 40.00) + \text{taxaSeguro}$$ Considere:

  • pesoKg = 520.0
  • volumeM3 = 6.5
  • taxaSeguro = 150.00

✅ Resultado Esperado (Prática 1):

1
2
3
4
5
6
=== COTAÇÃO DE FRETE CUBADO ===
Custo por Peso  : R$ 1456.0
Custo por Volume: R$ 260.0
Taxa de Seguro  : R$ 150.0
------------------------------
VALOR TOTAL DO FRETE: R$ 1866.0

🛠️ Prática Obrigatória 2: Otimização de Paletização com Módulo (%)

Um operador precisa estocar 145 caixas no galpão. Cada palete padrão comporta exatamente 12 caixas. Crie um programa paletizacao.por que utilize a divisão inteira e o operador módulo (%) para calcular:

  1. Quantos paletes cheios serão formados.
  2. Quantas caixas avulsas sobrarão fora dos paletes.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_03_SeuNome_SeuSobrenome.por.
  2. No Portugol Studio, execute com Shift + F6 e confira a exatidão das contas.
  3. No Microsoft Teams, envie na tarefa “Portugol Cap 03 - Operadores Matemáticos”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de dominar a Aritmética de Ponto Flutuante e Divisão Modular. O operador % é utilizado em criptografia de chaves públicas (como RSA e criptografia bancária SSL/TLS), em hashing e no balanceamento de carga de servidores na nuvem.


🔥 Desafio de Fixação: Conversor de Minutos para Horas e Minutos

Crie um programa que receba a duração total de uma viagem em minutos (ex: 495 minutos) e converta para o formato: X horas e Y minutos utilizando divisão inteira e % 60.


🔑 Gabarito de Código Completo

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
programa {
	funcao inicio() {
		real pesoKg = 520.0, volumeM3 = 6.5, taxaSeguro = 150.00
		real custoPeso = pesoKg * 2.80
		real custoVolume = volumeM3 * 40.00
		real freteTotal = custoPeso + custoVolume + taxaSeguro

		escreva("=== COTAÇÃO DE FRETE CUBADO ===\n")
		escreva("Custo por Peso  : R$ ", custoPeso, "\n")
		escreva("Custo por Volume: R$ ", custoVolume, "\n")
		escreva("Taxa de Seguro  : R$ ", taxaSeguro, "\n")
		escreva("------------------------------\n")
		escreva("VALOR TOTAL DO FRETE: R$ ", freteTotal, "\n")
	}
}

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
programa {
	funcao inicio() {
		inteiro totalCaixas = 145
		inteiro caixasPorPalete = 12

		inteiro paletesCheios = totalCaixas / caixasPorPalete
		inteiro caixasAvulsas = totalCaixas % caixasPorPalete

		escreva("=== OTIMIZAÇÃO DE PALETES ===\n")
		escreva("Total de Caixas a Carregar: ", totalCaixas, "\n")
		escreva("Paletes 100% Completos    : ", paletesCheios, " paletes\n")
		escreva("Caixas Avulsas Restantes  : ", caixasAvulsas, " caixas\n")
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
programa {
	funcao inicio() {
		inteiro minutosTotais = 495
		inteiro horas = minutosTotais / 60
		inteiro minutosRestantes = minutosTotais % 60

		escreva("Duração da Viagem : ", minutosTotais, " minutos\n")
		escreva("Tempo Formatado   : ", horas, "h ", minutosRestantes, "min\n")
	}
}

📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.

  1. Qual é a diferença entre o operador = e o operador ==, segundo o quadro de aviso do capítulo?
  2. O que o operador % (módulo) calcula? Qual é o resultado de 7 % 2, conforme o exemplo do capítulo?
  3. Escreva a forma equivalente do operador composto contador++ usando o operador de atribuição =.
  4. O que faz o operador composto total += valor? Escreva sua forma equivalente com =.
  5. Segundo a Ordem de Precedência Matemática apresentada no capítulo, o que é avaliado primeiro: parênteses, multiplicação/divisão, ou soma/subtração?
  6. Na Prática Obrigatória 2 (Otimização de Paletização), qual operador deve ser usado para descobrir quantas caixas avulsas sobram fora dos paletes completos?
  7. No Exemplo Guiado (Balanço Financeiro da Rota), qual operação matemática foi usada para calcular o faturamentoBruto?
  8. Segundo o Checkpoint de Lógica, em quais áreas da computação (citadas no texto) o operador módulo (%) é utilizado?
  9. Na tabela de operadores aritméticos, qual é o resultado de a - b se a=7 e b=2?
  10. O que representa a divisão a / b quando as variáveis envolvidas são do tipo real, segundo a tabela de operadores?