Lista de Desafios de Fixação e Gabaritos (20 Capítulos)

Estes desafios espelham exatamente o “🔥 Desafio de Fixação” apresentado ao final de cada capítulo — servem como cola rápida de correção para o professor ou para o atendimento de alunos que concluem as atividades principais antes do tempo previsto.


🟢 Módulo 1: Fundamentos da Computação (Cap 01 a 04)

Capítulo 01 - Painel de Boas-Vindas

  • Enunciado: Crie um programa "BoasVindas_Filial" que desenhe uma placa de boas-vindas com moldura dupla para os motoristas terceirizados que chegam na filial de Curitiba.
  • Gabarito:
1
2
3
4
5
6
7
8
algoritmo "BoasVindas_Filial"
var
inicio
   escreval("******************************************")
   escreval("*   BEM-VINDO À FASTLOG - FILIAL SUL     *")
   escreval("*   Curitiba / PR - Hub Logístico 04     *")
   escreval("******************************************")
fimalgoritmo

Capítulo 02 - Apólice de Frete Internacional

  • Enunciado: Crie um algoritmo declarando dados para um frete marítimo: paisOrigem, paisDestino, conteineres (inteiro), valorDolar (real) e alfandegaLiberada (logico).
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Frete_Internacional"
var
   paisOrigem, paisDestino : caractere
   conteineres : inteiro
   valorDolar : real
   alfandegaLiberada : logico
inicio
   paisOrigem <- "Brasil"
   paisDestino <- "Alemanha"
   conteineres <- 4
   valorDolar <- 18500.00
   alfandegaLiberada <- VERDADEIRO

   escreval("Origem: ", paisOrigem, " -> Destino: ", paisDestino)
   escreval("Contêineres: ", conteineres, " | Valor: US$ ", valorDolar)
   escreval("Alfandega Liberada? ", alfandegaLiberada)
fimalgoritmo

Capítulo 03 - Conversão de Horas e Minutos com mod

  • Enunciado: 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:
 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

Capítulo 04 - Comprovante de Pagamento de Diária

  • Enunciado: Crie um algoritmo que peça o nome do motorista, a quantidade de horas extras trabalhadas no mês e o valor da hora normal. Calcule as horas extras com 50% de acréscimo e exiba o holerite simplificado.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Holerite_HorasExtras"
var
   nomeMotorista : caractere
   valorHoraNormal, horasExtras, valorHoraExtra, totalExtra : real
inicio
   escreva("Nome do Motorista: ") leia(nomeMotorista)
   escreva("Valor da Hora Normal (R$): ") leia(valorHoraNormal)
   escreva("Horas Extras Trabalhadas: ") leia(horasExtras)

   valorHoraExtra <- valorHoraNormal * 1.50
   totalExtra <- horasExtras * valorHoraExtra

   escreval("")
   escreval("Colaborador: ", nomeMotorista)
   escreval("Valor da Hora Extra (50%): R$ ", valorHoraExtra:6:2)
   escreval("Total a Receber em Horas Extras: R$ ", totalExtra:8:2)
fimalgoritmo

🟡 Módulo 2: Estruturas de Decisão (Cap 05 a 08)

Capítulo 05 - Desconto para Fretes Acima de R$ 5.000

  • Enunciado: Crie um algoritmo que receba o valor de um frete. Se o frete for superior a R$ 5.000,00, conceda 8% de desconto comercial e exiba o novo valor com desconto.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Desconto_Frete"
var
   valorOriginal, desconto, valorFinal : real
inicio
   escreva("Valor do Frete (R$): ")
   leia(valorOriginal)

   valorFinal <- valorOriginal

   se (valorOriginal > 5000.00) entao
      desconto <- valorOriginal * 0.08
      valorFinal <- valorOriginal - desconto
      escreval("Desconto Comercial (8%): R$ ", desconto:8:2)
   fimse

   escreval("Valor a Pagar: R$ ", valorFinal:8:2)
fimalgoritmo

Capítulo 06 - Calculadora de Categoria de CNH

  • Enunciado: Crie um algoritmo que receba o peso bruto do caminhão em toneladas e a quantidade de passageiros, e informe qual categoria mínima de CNH é exigida para dirigir o veículo:
    • Acima de 6 toneladas: Categoria C.
    • Acima de 8 passageiros: Categoria D.
    • Veículos com reboque/carreta acoplada: Categoria E.
    • Outros veículos leves: Categoria B.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
algoritmo "Categoria_CNH"
var
   pesoToneladas : real
   passageiros : inteiro
   temCarreta : logico
inicio
   escreva("Peso Bruto do Veículo (toneladas): ") leia(pesoToneladas)
   escreva("Capacidade de Passageiros: ") leia(passageiros)
   escreva("Possui carreta/reboque acoplado? (V/F): ") leia(temCarreta)

   se (temCarreta) entao
      escreval("CNH MÍNIMA EXIGIDA: CATEGORIA E")
   senao
      se (passageiros > 8) entao
         escreval("CNH MÍNIMA EXIGIDA: CATEGORIA D")
      senao
         se (pesoToneladas > 6.0) entao
            escreval("CNH MÍNIMA EXIGIDA: CATEGORIA C")
         senao
            escreval("CNH MÍNIMA EXIGIDA: CATEGORIA B")
         fimse
      fimse
   fimse
fimalgoritmo

Capítulo 07 - Avaliador de Bônus Trimestral

  • Enunciado: Crie um algoritmo que verifique se uma equipe de logística tem direito ao bônus anual:
    • A meta de entregas deve ser batida (entregasFeitas >= metaEntregas) E
    • O índice de reclamações no SAC deve ser menor que 3 E
    • O custo com combustível deve estar dentro do orçamento (gastoDiesel <= orcamentoDiesel).
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
algoritmo "Bonus_Trimestral"
var
   entregasFeitas, metaEntregas, reclamacoesSAC : inteiro
   gastoDiesel, orcamentoDiesel : real
   temDireitoBonus : logico
inicio
   metaEntregas <- 1000
   orcamentoDiesel <- 45000.00

   escreva("Total de Entregas Realizadas: ") leia(entregasFeitas)
   escreva("Reclamações Registradas no SAC: ") leia(reclamacoesSAC)
   escreva("Gasto Total com Diesel (R$): ") leia(gastoDiesel)

   temDireitoBonus <- (entregasFeitas >= metaEntregas) e (reclamacoesSAC < 3) e (gastoDiesel <= orcamentoDiesel)

   escreval("")
   se (temDireitoBonus) entao
      escreval(">>> PARABÉNS! BÔNUS TRIMESTRAL APROVADO PARA TODA A EQUIPE.")
   senao
      escreval(">>> BÔNUS NÃO LIBERADO. Uma ou mais metas corporativas foram violadas.")
   fimse
fimalgoritmo

Capítulo 08 - Calculadora de Descontos por Categoria de Cliente

  • Enunciado: Crie um algoritmo que receba o valor total da compra e a categoria do cliente:
    • Categoria 1 (Bronze): 5% de desconto.
    • Categoria 2 (Prata): 10% de desconto.
    • Categoria 3 (Ouro): 15% de desconto.
    • Categoria 4 (Diamante VIP): 20% de desconto.
    • outrocaso: Sem desconto (preço integral).
  • Gabarito:
 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
algoritmo "Desconto_Categorias"
var
   categoria : inteiro
   valorBruto, percentualDesconto, valorDesconto, valorLiquido : real
inicio
   escreva("Valor Total da Carga (R$): ") leia(valorBruto)
   escreva("Categoria do Cliente (1-Bronze | 2-Prata | 3-Ouro | 4-Diamante): ")
   leia(categoria)

   escolha categoria
      caso 1
         percentualDesconto <- 0.05
      caso 2
         percentualDesconto <- 0.10
      caso 3
         percentualDesconto <- 0.15
      caso 4
         percentualDesconto <- 0.20
      outrocaso
         percentualDesconto <- 0.0
   fimescolha

   valorDesconto <- valorBruto * percentualDesconto
   valorLiquido <- valorBruto - valorDesconto

   escreval("")
   escreval("Desconto Comercial: R$ ", valorDesconto:8:2, " (", (percentualDesconto*100):4:1, "%)")
   escreval("VALOR LÍQUIDO A FATURAR: R$ ", valorLiquido:8:2)
fimalgoritmo

🟠 Módulo 3: Laços de Repetição (Cap 09 a 12)

Capítulo 09 - Simulador de Financiamento de Frota

  • Enunciado: Crie um algoritmo que receba o saldo devedor de um caminhão (ex: R$ 80.000,00) e o valor fixo da parcela mensal (ex: R$ 2.500,00). Use um laço enquanto para abater a dívida mês a mês e exibir quantos meses serão necessários para quitar o veículo integralmente.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
algoritmo "Financiamento_Frota"
var
   saldoDevedor, valorParcela : real
   meses : inteiro
inicio
   escreva("Saldo Devedor do Veículo (R$): ") leia(saldoDevedor)
   escreva("Valor da Parcela Mensal (R$): ") leia(valorParcela)

   meses <- 0

   enquanto (saldoDevedor > 0.0) faca
      meses <- meses + 1
      saldoDevedor <- saldoDevedor - valorParcela
      se (saldoDevedor < 0.0) entao
         saldoDevedor <- 0.0
      fimse
      escreval("Mês ", meses:2, " | Parcela Paga: R$ ", valorParcela:8:2, " | Saldo Restante: R$ ", saldoDevedor:8:2)
   fimenquanto

   escreval("")
   escreval(">>> VEÍCULO 100% QUITADO EM ", meses, " MESES!")
fimalgoritmo

Capítulo 10 - Caixa Rápido de Abastecimento

  • Enunciado: Crie um programa com repita-ate que simule a bomba de diesel do pátio:
    • Exibe menu com: 1 - Abastecer 50 Litros (R$ 290,00), 2 - Abastecer 100 Litros (R$ 580,00) e 0 - Fechar Conta.
    • O programa vai acumulando os abastecimentos até o motorista pedir para fechar a conta.
  • Gabarito:
 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
32
33
34
35
algoritmo "Bomba_Diesel"
var
   opcao, totalLitros : inteiro
   totalPagar : real
inicio
   totalLitros <- 0
   totalPagar <- 0.0

   repita
      escreval("=== POSTO INTERNO FASTLOG ===")
      escreval(" [1] Abastecer 50 Litros (R$ 290.00)")
      escreval(" [2] Abastecer 100 Litros (R$ 580.00)")
      escreval(" [0] Finalizar Abastecimento")
      escreva("Opção: ")
      leia(opcao)

      escolha opcao
         caso 1
            totalLitros <- totalLitros + 50
            totalPagar <- totalPagar + 290.00
            escreval(">> 50L adicionados ao tanque.")
         caso 2
            totalLitros <- totalLitros + 100
            totalPagar <- totalPagar + 580.00
            escreval(">> 100L adicionados ao tanque.")
         caso 0
            escreval(">> Processando fechamento de abastecimento...")
      fimescolha
   ate (opcao = 0)

   escreval("")
   escreval("=== COMPROVANTE DE ABASTECIMENTO ===")
   escreval("Volume Total Abastecido: ", totalLitros, " Litros")
   escreval("TOTAL A DEBITAR NA FROTA : R$ ", totalPagar:8:2)
fimalgoritmo

Capítulo 11 - Simulador de Juros Compostos

  • Enunciado: Crie um algoritmo que receba um investimento inicial (ex: R$ 10.000,00) e uma taxa de rendimento mensal (ex: 1% ou 0.01). Use um laço para de 1 até 12 para calcular e exibir o saldo acumulado mês a mês durante 1 ano.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
algoritmo "Juros_Compostos"
var
   mes : inteiro
   saldo, taxa : real
inicio
   saldo <- 10000.00
   taxa <- 0.01 // 1% ao mês

   escreval("=== EVOLUÇÃO PATRIMONIAL FASTLOG (1 ANO) ===")
   escreval("Saldo Inicial: R$ ", saldo:9:2)
   escreval("--------------------------------------------")

   para mes de 1 ate 12 faca
      saldo <- saldo * (1.0 + taxa)
      escreval("Mês ", mes:2, " | Saldo Atualizado: R$ ", saldo:9:2)
   fimpara

   escreval("============================================")
   escreval("Saldo Final Consolidado: R$ ", saldo:9:2)
fimalgoritmo

Capítulo 12 - Desenho de Pirâmide de Carregamento

  • Enunciado: Crie um algoritmo que utilize laços aninhados para desenhar uma pirâmide de caixas com asteriscos *:
    • Linha 1: *
    • Linha 2: * *
    • Linha 3: * * *
    • Linha 4: * * * *
    • Linha 5: * * * * *
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
algoritmo "Piramide_Caixas"
var
   linha, coluna : inteiro
inicio
   escreval("=== PIRÂMIDE DE PALETIZAÇÃO ===")
   para linha de 1 ate 5 faca
      para coluna de 1 ate linha faca // O laço interno vai até o número da linha atual!
         escreva("* ")
      fimpara
      escreval("")
   fimpara
fimalgoritmo

🔴 Módulo 4: Vetores e Matrizes (Cap 13 a 16)

Capítulo 13 - Inversão de Ordem de Vetor

  • Enunciado: Crie um algoritmo que leia 5 números inteiros em um vetor e, em seguida, utilize um laço para ... passo -1 para exibir os elementos na ordem inversa daquela em que foram digitados.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
algoritmo "Inversao_Vetor"
var
   numeros : vetor [1..5] de inteiro
   i : inteiro
inicio
   escreval("Digite 5 números inteiros:")
   para i de 1 ate 5 faca
      escreva("Elemento [", i, "]: ")
      leia(numeros[i])
   fimpara

   escreval("")
   escreval("--- EXIBIÇÃO NA ORDEM INVERSA ---")
   para i de 5 ate 1 passo -1 faca
      escreval("Posição [", i, "] = ", numeros[i])
   fimpara
fimalgoritmo

Capítulo 14 - Menor Frete e Média da Frota

  • Enunciado: Modifique o algoritmo de quilometragem para encontrar simultaneamente o Motorista que mais rodou e o Motorista que menos rodou, exibindo também a média de KM de toda a equipe.
  • Gabarito:
 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
32
33
34
35
36
algoritmo "Maior_Menor_Media"
var
   nomes : vetor [1..5] de caractere
   km : vetor [1..5] de real
   i, posMaior, posMenor : inteiro
   maiorKm, menorKm, somaKm, mediaKm : real
inicio
   somaKm <- 0.0

   para i de 1 ate 5 faca
      escreva("Motorista [", i, "]: ") leia(nomes[i])
      escreva("KM [", i, "]: ") leia(km[i])
      somaKm <- somaKm + km[i]
   fimpara

   maiorKm <- km[1] ; posMaior <- 1
   menorKm <- km[1] ; posMenor <- 1

   para i de 2 ate 5 faca
      se (km[i] > maiorKm) entao
         maiorKm <- km[i]
         posMaior <- i
      fimse
      se (km[i] < menorKm) entao
         menorKm <- km[i]
         posMenor <- i
      fimse
   fimpara

   mediaKm <- somaKm / 5.0

   escreval("")
   escreval("MAIOR KM : ", nomes[posMaior], " com ", maiorKm:8:2, " km")
   escreval("MENOR KM : ", nomes[posMenor], " com ", menorKm:8:2, " km")
   escreval("MÉDIA KM : ", mediaKm:8:2, " km por veículo")
fimalgoritmo

Capítulo 15 - Matriz Identidade de Ordem 3

  • Enunciado: Crie um algoritmo que preencha automaticamente uma matriz 3×3 com a Matriz Identidade (colocando o valor 1 onde a linha for igual à coluna l = c, e 0 em todas as outras posições), imprimindo a grade na tela sem pedir digitação ao usuário.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
algoritmo "Matriz_Identidade_3x3"
var
   matrizIdentidade : vetor [1..3, 1..3] de inteiro
   l, c : inteiro
inicio
   // Preenchimento Lógico Automático
   para l de 1 ate 3 faca
      para c de 1 ate 3 faca
         se (l = c) entao
            matrizIdentidade[l, c] <- 1 // Diagonal Principal
         senao
            matrizIdentidade[l, c] <- 0
         fimse
      fimpara
   fimpara

   escreval("=== MATRIZ IDENTIDADE DE ORDEM 3 ===")
   para l de 1 ate 3 faca
      para c de 1 ate 3 faca
         escreva(matrizIdentidade[l, c]:4)
      fimpara
      escreval("")
   fimpara
fimalgoritmo

Capítulo 16 - Soma da Diagonal Principal

  • Enunciado: Crie um algoritmo que leia uma matriz 4×4 de números inteiros e calcule a soma exclusiva dos elementos que pertencem à Diagonal Principal (l = c).
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
algoritmo "Soma_Diagonal_Principal"
var
   matriz : vetor [1..4, 1..4] de inteiro
   l, c, somaDiagonal : inteiro
inicio
   somaDiagonal <- 0

   escreval("Digite os números para a matriz 4x4:")
   para l de 1 ate 4 faca
      para c de 1 ate 4 faca
         escreva("[", l, ",", c, "]: ")
         leia(matriz[l, c])
         se (l = c) entao
            somaDiagonal <- somaDiagonal + matriz[l, c]
         fimse
      fimpara
   fimpara

   escreval("")
   escreval("Soma dos Elementos da Diagonal Principal (L=C): ", somaDiagonal)
fimalgoritmo

🔵 Módulo 5: Modularização e Projeto Final (Cap 17 a 20)

Capítulo 17 - Procedimento de Moldura com Caractere Customizável

  • Enunciado: Crie um procedimento DesenharCaixa(texto : caractere, simbolo : caractere) que receba o texto da mensagem e o símbolo de borda (ex: "#" ou "*"), desenhando uma caixa personalizada ao redor da mensagem.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Moldura_Customizada"

procedimento DesenharCaixa(msg : caractere; simbolo : caractere)
inicio
   escreval(simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo)
   escreval(simbolo, " ", msg)
   escreval(simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo, simbolo)
fimprocedimento

inicio
   DesenharCaixa("SISTEMA OK", "#")
   DesenharCaixa("ALERTA DOCA", "*")
fimalgoritmo

Capítulo 18 - Função de Conversão de Moeda (Dólar para Real)

  • Enunciado: Crie uma função ConverterDolar(valorUSD : real, cotacaoAtual : real) : real e utilize-a para cotar fretes internacionais cobrados em dólares.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
algoritmo "Conversor_Moedas"
var
   freteUSD, cotacao, freteBRL : real

funcao ConverterDolar(valorUSD, cotacao : real) : real
inicio
   retorne valorUSD * cotacao
fimfuncao

inicio
   escreval("=== COTAÇÃO DE FRETE INTERNACIONAL ===")
   escreva("Valor do Frete Marítimo (US$): ") leia(freteUSD)
   escreva("Cotação Atual do Dólar (R$): ") leia(cotacao)

   freteBRL <- ConverterDolar(freteUSD, cotacao)

   escreval("")
   escreval("Valor Original em Dólares : US$ ", freteUSD:9:2)
   escreval("VALOR CONVERTIDO EM REAIS : R$  ", freteBRL:9:2)
fimalgoritmo

Capítulo 19 - Função de Localização de Item Mais Valioso

  • Enunciado: Crie uma função ItemMaisValioso() : caractere que percorra o vetor de preços e retorne o nome do produto que possui o maior valor unitário cadastrado.
  • Gabarito:
 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
32
33
algoritmo "Item_Mais_Valioso"
var
   nomes : vetor [1..3] de caractere
   precos : vetor [1..3] de real
   totalCadastrado : inteiro

funcao ItemMaisValioso() : caractere
var
   maiorPreco : real
   posMaior, i : inteiro
inicio
   maiorPreco <- precos[1]
   posMaior <- 1
   para i de 2 ate totalCadastrado faca
      se (precos[i] > maiorPreco) entao
         maiorPreco <- precos[i]
         posMaior <- i
      fimse
   fimpara
   retorne nomes[posMaior]
fimfuncao

inicio
   nomes[1] <- "Palete Madeira"
   precos[1] <- 45.00
   nomes[2] <- "Fita Stretch"
   precos[2] <- 22.50
   nomes[3] <- "Caixa Papelão"
   precos[3] <- 8.90
   totalCadastrado <- 3

   escreval("Item de Maior Preço: ", ItemMaisValioso())
fimalgoritmo

Capítulo 20 - Sistema Integrado FastLog TMS (Projeto Final)

  • Enunciado: O Capítulo 20 é o Projeto Integrador Final e não tem um “Desafio de Fixação” tradicional — ele é substituído pelo "🛠️ Roteiro de Testes e Validação do Projeto", que cumpre o mesmo papel de checkpoint final do curso.
  • Gabarito: Não há gabarito de desafio separado — o próprio capítulo já traz o código-fonte completo do Sistema FastLog TMS. Use o Roteiro de Testes do capítulo (cadastrar 5 veículos, emitir relatório, apurar o motorista destaque e pesquisar por nome) para validar a entrega do aluno.

📥 Download dos Códigos Fonte (.alg)

Baixe os arquivos originais .alg estruturados para cada aula, prontos para abrir no VisuAlg 3.0: