Capítulo 03: Operadores Aritméticos, Expressões e Atribuição (<-)

🎯 Objetivo da Aula

Na administração e na logística, quase todas as decisões dependem de cálculos matemáticos: precificação de fretes por quilômetro, cálculo de consumo de diesel, divisão de despesas entre centros de custo e estimativas de tempo de viagem.

Nesta aula, você aprenderá a:

  1. Compreender o funcionamento do Operador de Atribuição (<-).
  2. Utilizar todos os Operadores Aritméticos do VisuAlg: soma (+), subtração (-), multiplicação (*), divisão real (/), divisão inteira (\), resto da divisão (mod) e exponenciação (^).
  3. Aplicar a Ordem de Precedência Matemática com parênteses para evitar erros de cálculo financeiro.
  4. Construir expressões matemáticas complexas aplicadas à rotina de transportes.

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


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

Situação: A equipe de frotas da FastLog precisa calcular a rentabilidade de uma viagem recente de 850 km entre São Paulo e Brasília. O caminhão consumiu 280 litros de óleo diesel, gastou R$ 340,00 em praças de pedágio e cobrou uma tarifa de R$ 4,20 por quilômetro.

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

  1. O Faturamento Bruto da viagem.
  2. O Consumo Médio do veículo em KM/L.
  3. O Lucro Líquido Operacional (Faturamento subtraído do combustível a R$ 5,80/L e dos pedágios).

🧠 Fundamentos: A Matemática da Computação

1. O Operador de Atribuição (<-)

No VisuAlg e na sintaxe Pascal, o símbolo <- (seta para a esquerda formada pelo sinal de menor < e o traço -) representa a Atribuição:

$$\text{VariávelDestino} \leftarrow \text{Expressão ou Valor}$$

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

Diferença entre Atribuição (<-) e Comparação (=):

  • x <- 10 é uma ordem de gravação (Atribuição).
  • x = 10 é uma pergunta lógica (“O valor de x é igual a 10?”). Nunca use = para atribuir valores no VisuAlg!

2. A Tabela de Operadores Aritméticos do VisuAlg

OperadorOperaçãoExemploResultadoObservação
+Adição10 + 515Soma valores numéricos.
-Subtração10 - 37Subtrai valores numéricos.
*Multiplicação4 * 2.510.0Multiplica valores.
/Divisão Real7 / 23.5Devolve número real (com casas decimais).
\Divisão Inteira7 \ 23Trunca o resultado, descartando a parte decimal.
modMódulo (Resto)7 mod 21Retorna o resto da divisão inteira.
^Exponenciação2 ^ 38Eleva a base à potência.
graph TD
    A["Expressão: 7 / 2"] --> B["Divisão Real (/) -> 3.5"]
    C["Expressão: 7 \ 2"] --> D["Divisão Inteira (\) -> Quociente = 3"]
    C --> E["Módulo (mod) -> Resto = 1"]
    
    style B fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
    style D fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff
    style E fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff

3. A Ordem de Precedência Matemática (PEMDAS)

Quando uma linha de código possui múltiplos operadores, o computador segue uma hierarquia rigorosa:

  1. ( ) Parênteses Internos: Sempre resolvidos em primeiro lugar.
  2. ^ Exponenciação.
  3. *, /, \, mod: Multiplicações, divisões e restos (da esquerda para a direita).
  4. +, -: Somas e subtrações (da esquerda para a direita).

Exemplo de Erro Clássico de Média:

  • media <- 8 + 6 / 2 ➔ Executa 6 / 2 = 3 primeiro, e depois 8 + 3 = 11 (ERRADO!).
  • media <- (8 + 6) / 2 ➔ Executa 8 + 6 = 14 primeiro, e depois 14 / 2 = 7 (CORRETO!).

Prévia: a máscara :largura:decimais
No código a seguir você verá números real impressos como kmPorLitro:5:2 ou faturamentoBruto:8:2. Esses dois números depois dos dois-pontos controlam quantos espaços o valor ocupa no console e quantas casas decimais aparecem — é a máscara de formatação numérica, que veremos em detalhe no Capítulo 04. Por enquanto, basta saber que :8:2 significa “exiba com 2 casas decimais”.


📖 Exemplo Guiado: Simulador de Rentabilidade de Viagem

Código do Algoritmo:

 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
30
31
algoritmo "Simulador_Rentabilidade"
var
   distanciaKm, consumoDieselLitros, precoLitroDiesel : real
   tarifaPorKm, pedagioTotal : real
   faturamentoBruto, gastoCombustivel, lucroLiquido, kmPorLitro : real

inicio
   // 1. Dados da Viagem
   distanciaKm <- 850.0
   consumoDieselLitros <- 280.0
   precoLitroDiesel <- 5.80
   pedagioTotal <- 340.00
   tarifaPorKm <- 4.20

   // 2. Processamento Matemático
   faturamentoBruto <- distanciaKm * tarifaPorKm
   gastoCombustivel <- consumoDieselLitros * precoLitroDiesel
   lucroLiquido <- faturamentoBruto - (gastoCombustivel + pedagioTotal)
   kmPorLitro <- distanciaKm / consumoDieselLitros

   // 3. Relatório Financeiro
   escreval("=== BALANÇO DA VIAGEM SP -> BRASÍLIA ===")
   escreval("Distância Total: ", distanciaKm, " KM")
   escreval("Consumo Médio da Frota: ", kmPorLitro:5:2, " KM/L")
   escreval("----------------------------------------")
   escreval("Faturamento Bruto: R$ ", faturamentoBruto:8:2)
   escreval("(-) Custo Combustível: R$ ", gastoCombustivel:8:2)
   escreval("(-) Custo Pedágios: R$ ", pedagioTotal:8:2)
   escreval("========================================")
   escreval("LUCRO LÍQUIDO FINAL: R$ ", lucroLiquido:8:2)
fimalgoritmo

✅ Resultado Esperado no Console (F9):

1
2
3
4
5
6
7
8
9
=== BALANÇO DA VIAGEM SP -> BRASÍLIA ===
Distância Total: 850 KM
Consumo Médio da Frota:  3.04 KM/L
----------------------------------------
Faturamento Bruto: R$  3570.00
(-) Custo Combustível: R$  1624.00
(-) Custo Pedágios: R$   340.00
========================================
LUCRO LÍQUIDO FINAL: R$  1606.00

🛠️ Prática Obrigatória 1: Calculadora de Frete por Peso e Cubagem

Passo 1: O Desafio

Crie um algoritmo "Calculo_Frete_Cubagem" que calcule o valor cobrado para transportar uma carga. A fórmula é: $$\text{Frete} = (\text{PesoKg} \times \text{TaxaKg}) + (\text{VolumeM3} \times \text{TaxaM3}) + \text{TaxaSeguro}$$ Considere:

  • pesoKg = 450.0 | taxaKg = 2.50
  • volumeM3 = 8.0 | taxaM3 = 45.00
  • taxaSeguro = 120.00

✅ Resultado Esperado (Prática 1):

1
2
3
4
5
6
=== COTAÇÃO DE FRETE POR CUBAGEM ===
Custo por Peso: R$ 1125.00
Custo por Volume: R$ 360.00
Taxa de Seguro: R$ 120.00
------------------------------------
VALOR TOTAL DO FRETE: R$ 1605.00

🛠️ Prática Obrigatória 2: Divisão de Cargas em Paletes (\ e mod)

Um operador precisa despachar 125 caixas de mercadoria. Cada palete padrão comporta rigorosamente 18 caixas. Crie um algoritmo "Divisao_Paletes" que utilize a divisão inteira (\) e o módulo (mod) para calcular:

  1. Quantos paletes cheios e completos 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.alg.
  2. Execute o código no VisuAlg e verifique se as contas fecham com exatidão.
  3. No Microsoft Teams, envie na tarefa “VisuAlg Cap 03 - Operadores Aritméticos”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar a Unidade Lógica e Aritmética (ULA / ALU) do processador. Todo cálculo dentro de um computador é reduzido a operações binárias fundamentais na ULA em ciclos de clock de nanossegundos.


🔥 Desafio de Fixação: Conversão de Horas e Minutos com mod

Crie um algoritmo que receba o tempo total de viagem de um caminhão em minutos (ex: 385 minutos) e converta para o formato: X horas e Y minutos utilizando \ e mod 60.


🔑 Gabarito de Código Completo

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
algoritmo "Calculo_Frete_Cubagem"
var
   pesoKg, taxaKg, volumeM3, taxaM3, taxaSeguro : real
   custoPeso, custoVolume, freteTotal : real
inicio
   pesoKg <- 450.0
   taxaKg <- 2.50
   volumeM3 <- 8.0
   taxaM3 <- 45.00
   taxaSeguro <- 120.00

   custoPeso <- pesoKg * taxaKg
   custoVolume <- volumeM3 * taxaM3
   freteTotal <- custoPeso + custoVolume + taxaSeguro

   escreval("=== COTAÇÃO DE FRETE POR CUBAGEM ===")
   escreval("Custo por Peso: R$ ", custoPeso:8:2)
   escreval("Custo por Volume: R$ ", custoVolume:8:2)
   escreval("Taxa de Seguro: R$ ", taxaSeguro:8:2)
   escreval("------------------------------------")
   escreval("VALOR TOTAL DO FRETE: R$ ", freteTotal:8:2)
fimalgoritmo

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
algoritmo "Divisao_Paletes"
var
   totalCaixas, capacidadePorPalete : inteiro
   paletesCompletos, caixasAvulsas : inteiro
inicio
   totalCaixas <- 125
   capacidadePorPalete <- 18

   paletesCompletos <- totalCaixas \ capacidadePorPalete
   caixasAvulsas <- totalCaixas mod capacidadePorPalete

   escreval("=== OTIMIZAÇÃO DE PALETIZAÇÃO ===")
   escreval("Total de Caixas a Despachar: ", totalCaixas)
   escreval("Paletes 100% Completos: ", paletesCompletos, " paletes")
   escreval("Caixas Avulsas Restantes: ", caixasAvulsas, " caixas")
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "Conversor_Minutos"
var
   minutosTotais, horas, minutosRestantes : inteiro
inicio
   minutosTotais <- 385
   horas <- minutosTotais \ 60
   minutosRestantes <- minutosTotais mod 60

   escreval("Duração da Viagem: ", minutosTotais, " minutos")
   escreval("Tempo Equivalente: ", horas, "h ", minutosRestantes, "min")
fimalgoritmo

📝 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 símbolo representa o Operador de Atribuição no VisuAlg, e o que ele significa segundo o capítulo?
  2. Segundo o aviso do capítulo, qual é a diferença entre a Atribuição (<-) e a Comparação (=)?
  3. Qual é a diferença entre a divisão real (/) e a divisão inteira (\) no VisuAlg? Use os exemplos da tabela do capítulo.
  4. O que faz o operador mod, e qual é o resultado de 7 mod 2 segundo a Tabela de Operadores Aritméticos?
  5. Segundo a Ordem de Precedência Matemática apresentada no capítulo, o que é sempre resolvido em primeiro lugar numa expressão?
  6. No “Exemplo de Erro Clássico de Média”, por que a expressão media <- 8 + 6 / 2 resulta em 11 em vez do valor correto?
  7. No Exemplo Guiado, qual fórmula foi usada para calcular o Lucro Líquido Operacional da viagem entre São Paulo e Brasília?
  8. Na Prática Obrigatória 1 (Calculadora de Frete por Peso e Cubagem), qual é a fórmula do Frete apresentada no capítulo?
  9. Na Prática Obrigatória 2 (Divisão de Cargas em Paletes), quais dois operadores devem ser usados para calcular, respectivamente, os paletes completos e as caixas avulsas?
  10. Segundo o Checkpoint de Lógica, qual componente do processador é responsável por executar as operações matemáticas e lógicas dos cálculos?