Capítulo 06: Condicionais Compostas e Aninhadas (SE-ENTAO-SENAO)

🎯 Objetivo da Aula

Na vida real e nos negócios, quando uma condição não é atendida, quase nunca ficamos sem fazer nada: tomamos um caminho alternativo.

  • Se o caminhão passar na vistoria, liberamos a viagem; senão, encaminhamos o veículo para a oficina mecânica.

Nesta aula, você aprenderá a:

  1. Dominar a estrutura condicional composta se ... entao ... senao ... fimse (If / Else).
  2. Construir Condicionais Aninhadas (Encadeadas) para classificar dados em 3 ou mais categorias.
  3. Evitar erros comuns de sintaxe no fechamento de múltiplos blocos fimse.
  4. Desenvolver sistemas de classificação de risco e roteirização inteligente.

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


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

Situação: A seguradora parceira da FastLog exige uma classificação de risco rigorosa para todas as cargas transportadas:

  • Cargas com valor acima de R$ 100.000,00: Risco Alto (Exige Escolta Armada Obrigatória).
  • Cargas com valor entre R$ 30.000,00 e R$ 100.000,00: Risco Médio (Exige Rastreador Satelital Ativo).
  • Cargas com valor abaixo de R$ 30.000,00: Risco Padrão (Sem exigências adicionais).

Missão: Você deve construir o Classificador de Apólices FastLog, recebendo o valor da mercadoria e devolvendo o protocolo exato de segurança exigido pela seguradora.


🧠 Fundamentos: A Lógica da Bifurcação de Caminhos

1. A Estrutura Composta: se ... entao ... senao

A cláusula senao (Else) define o bloco de instruções que será executado obrigatoriamente quando a condição do se for Falsa:

graph TD
    A[Início: Avaliar Carga] --> B{Valor > R$ 100.000?}
    B -- "Sim (VERDADEIRO)" --> C["Caminho do SE:<br/>Exigir Escolta Armada"]
    B -- "Não (FALSO)" --> D{Valor >= R$ 30.000?}
    D -- "Sim (VERDADEIRO)" --> E["Caminho do SENAO (com novo SE aninhado):<br/>Exigir Rastreador Satelital"]
    D -- "Não (FALSO)" --> F["Caminho do SENAO Final:<br/>Risco Padrão"]
    C --> G[Fim do Algoritmo]
    E --> G
    F --> G
    
    style B fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
    style D fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff
    style C fill:#c0392b,stroke:#fff,stroke-width:2px,color:#fff
    style E fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
    style F fill:#217346,stroke:#fff,stroke-width:2px,color:#fff

2. A Sintaxe de Condicionais Aninhadas no VisuAlg

1
2
3
4
5
6
7
8
9
se (condicao_1) entao
   // Executa se condicao_1 for VERDADEIRO
senao
   se (condicao_2) entao
      // Executa se condicao_1 for FALSO e condicao_2 for VERDADEIRO
   senao
      // Executa se NENHUMA das anteriores for verdadeira
   fimse
fimse

Regra dos Pares de Fimse:
Para cada palavra se que você abrir no seu código, você deve ter exatamente um fimse correspondente para fechar o bloco.


📖 Exemplo Guiado: Classificador de Seguro e Risco

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
algoritmo "Classificador_Seguro"
var
   codigoCarga : caractere
   valorMercadoria : real

inicio
   escreval("=== SISTEMA DE GESTÃO DE RISCO FASTLOG ===")
   escreva("Código do Conhecimento de Transporte (CT-e): ")
   leia(codigoCarga)
   escreva("Valor Total Declarado da Carga (R$): ")
   leia(valorMercadoria)

   escreval("")
   escreval("--- PROTOCOLO DE SEGURANÇA ASSEGURADO ---")

   se (valorMercadoria > 100000.00) entao
      escreval("CATEGORIA : RISCO ALTO [CLASSE A]")
      escreval("EXIGÊNCIA : Escolta Armada com 2 Viaturas + Isca Eletrônica")
   senao
      se (valorMercadoria >= 30000.00) entao
         escreval("CATEGORIA : RISCO MÉDIO [CLASSE B]")
         escreval("EXIGÊNCIA : Rastreador Satelital com Trava de Baú Remota")
      senao
         escreval("CATEGORIA : RISCO PADRÃO [CLASSE C]")
         escreval("EXIGÊNCIA : Monitoramento Padrão de Pátio")
      fimse
   fimse

   escreval("==========================================")
fimalgoritmo

✅ Exemplo de Execução no Console (F9):

1
2
3
4
5
6
7
8
=== SISTEMA DE GESTÃO DE RISCO FASTLOG ===
Código do Conhecimento de Transporte (CT-e): CTE-8890
Valor Total Declarado da Carga (R$): 65000

--- PROTOCOLO DE SEGURANÇA ASSEGURADO ---
CATEGORIA : RISCO MÉDIO [CLASSE B]
EXIGÊNCIA : Rastreador Satelital com Trava de Baú Remota
==========================================

🛠️ Prática Obrigatória 1: Controle de Acesso de Turno de Pátio

Passo 1: O Desafio

Crie um algoritmo "Controle_Turno" que receba a hora atual (número inteiro de 0 a 23). Classifique em:

  • Das 06h às 13h: Turno 1 - Manhã
  • Das 14h às 21h: Turno 2 - Tarde/Noite
  • Das 22h às 05h: Turno 3 - Madrugada (Adicional Noturno)

✅ Resultado Esperado (Prática 1):

1
2
Informe a hora atual (0 a 23): 15
TURNO OPERACIONAL: Turno 2 - Tarde/Noite

🛠️ Prática Obrigatória 2: Simulador de Desconto Progressivo por Volume

A FastLog oferece tabelas de desconto para clientes corporativos baseado no volume de caixas transportadas:

  • Acima de 500 caixas: 15% de desconto.
  • De 100 a 500 caixas: 10% de desconto.
  • Abaixo de 100 caixas: Sem desconto (preço cheio). Crie um algoritmo "Desconto_Volume" que receba a quantidade de caixas e o valor bruto do frete, calculando e exibindo o valor final com o respectivo desconto aplicado.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_SeuNome_SeuSobrenome.alg.
  2. Teste o código passando por todas as ramificações (se, senao se e senao).
  3. No Microsoft Teams, envie na tarefa “VisuAlg Cap 06 - Condicionais Compostas”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar o conceito de Árvore de Decisão (Decision Tree). Em Inteligência Artificial e Machine Learning, algoritmos como Random Forest e Gradient Boosting são compostos por milhares de árvores de se-senao interligadas para tomar decisões de crédito, fraude e diagnóstico médico.


🔥 Desafio de Fixação: Calculadora de Categoria de CNH

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 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
algoritmo "Controle_Turno"
var
   hora : inteiro
inicio
   escreva("Informe a hora atual (0 a 23): ")
   leia(hora)

   se (hora <= 5) entao
      escreval("TURNO OPERACIONAL: Turno 3 - Madrugada (Adicional Noturno)")
   senao
      se (hora <= 13) entao
         escreval("TURNO OPERACIONAL: Turno 1 - Manhã")
      senao
         se (hora <= 21) entao
            escreval("TURNO OPERACIONAL: Turno 2 - Tarde/Noite")
         senao
            escreval("TURNO OPERACIONAL: Turno 3 - Madrugada (Adicional Noturno)")
         fimse
      fimse
   fimse
fimalgoritmo

Prática 2:

 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
algoritmo "Desconto_Volume"
var
   caixas : inteiro
   valorBruto, taxaDesconto, valorDesconto, valorFinal : real
inicio
   escreva("Quantidade de Caixas: ") leia(caixas)
   escreva("Valor Bruto do Frete (R$): ") leia(valorBruto)

   se (caixas > 500) entao
      taxaDesconto <- 0.15
   senao
      se (caixas >= 100) entao
         taxaDesconto <- 0.10
      senao
         taxaDesconto <- 0.0
      fimse
   fimse

   valorDesconto <- valorBruto * taxaDesconto
   valorFinal <- valorBruto - valorDesconto

   escreval("")
   escreval("Desconto Aplicado (%): ", (taxaDesconto * 100):4:1, "%")
   escreval("Valor do Desconto: R$ ", valorDesconto:8:2)
   escreval("VALOR FINAL A PAGAR: R$ ", valorFinal:8:2)
fimalgoritmo

Desafio:

 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

📝 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. Segundo o capítulo, o que a cláusula senao (Else) define, e quando ela é obrigatoriamente executada?
  2. Segundo a “Regra dos Pares de Fimse”, o que deve corresponder a cada palavra se aberta no código?
  3. Na estrutura de Condicionais Aninhadas apresentada no capítulo, em que situação o bloco do senao mais interno é executado?
  4. No Cenário Prático da seguradora, qual protocolo de segurança é exigido para cargas com valor acima de R$ 100.000,00?
  5. No Exemplo Guiado (Classificador de Seguro e Risco), qual categoria de risco e qual exigência são atribuídas a uma carga no valor de R$ 65.000,00?
  6. Na Prática Obrigatória 1 (Controle de Acesso de Turno de Pátio), em qual faixa de horário se enquadra o “Turno 3 - Madrugada (Adicional Noturno)”?
  7. Na Prática Obrigatória 2 (Desconto Progressivo por Volume), qual percentual de desconto é aplicado para uma quantidade de caixas entre 100 e 500?
  8. Segundo o Checkpoint de Lógica, o que é uma Árvore de Decisão (Decision Tree), e quais algoritmos de Machine Learning o capítulo cita como exemplo?
  9. Segundo as Instruções de Entrega, o código deve ser testado passando por quais ramificações antes do envio da atividade?
  10. No Exemplo Guiado, qual comando foi utilizado para capturar do teclado o código do Conhecimento de Transporte (CT-e) e o valor declarado da carga?