Capítulo 17: Procedimentos (Modularização I)

🎯 Objetivo da Aula

Programas reais podem ter milhares de linhas. Escrever tudo em um único bloco torna o código impossível de ler. Nesta aula, você aprenderá sobre Modularização. O objetivo é aprender a criar Procedimentos, organizando seu código em pequenos blocos independentes que realizam tarefas específicas.


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

Situação: O sistema da FastLog precisa exibir um cabeçalho padrão com o nome da empresa e a data em todas as telas. O Problema: Se você precisar mudar o nome da empresa, terá que alterar em todas as partes do código onde escreveu o cabeçalho.

Missão: Criar um procedimento chamado GerarCabecalho e “chamá-lo” sempre que precisar desenhar a interface.


🧠 Fundamentos: A Teoria Traduzida

1. O que é um Procedimento?

Pense em um procedimento como uma ordem direta para um funcionário. Ele executa a tarefa e volta, mas não te entrega nenhum objeto físico (valor) de volta.

💡 Exemplo 1: Cotidiano (Iluminação)

Você não precisa saber como a eletricidade funciona. Você apenas “chama” a ação ligar_interruptor e a luz acende.

📝 Exemplo 2: Técnico (Cabeçalho de Relatório)

Em vez de escrever os dados da empresa em 20 lugares, você cria o procedimento GerarCabecalho e o chama no topo de cada código.

graph TD
    A[Inicio do Algoritmo] -- Chamada --> B[Procedimento GerarCabecalho]
    B -- Escreve Dados da Empresa --> B
    B -- Retorna ao Fluxo --> A
    
    style B fill:#f39c12,stroke:#fff,color:#fff

2. A Sintaxe no VisuAlg

Os procedimentos devem ser criados na área de declarações, logo acima do inicio do algoritmo principal.

1
2
3
4
procedimento NomeDoProcedimento()
inicio
   // comandos aqui
fimprocedimento

📖 Exemplo Guiado: Sistema Modular

Procedimentos permitem organizar o código em blocos reutilizáveis. Eles devem ser declarados antes do inicio do algoritmo principal.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
algoritmo "Sistema_Modular"

procedimento GerarCabecalho()
inicio
   escreval("-----------------------------")
   escreval("   FASTLOG LOGÍSTICA S.A.    ")
   escreval("-----------------------------")
fimprocedimento

inicio
   GerarCabecalho()
   escreval("Bem-vindo ao Sistema de Gestão")
fimalgoritmo

🛠️ Prática Obrigatória 1: Exibir Menu

Crie um algoritmo que tenha um procedimento chamado ExibirMenu. Esse procedimento deve mostrar as opções: 1. Cadastrar | 2. Listar | 3. Sair. Chame esse procedimento no início do seu programa principal.

✅ Resultado Esperado

1
2
3
4
5
-----------------------------
1. Cadastrar
2. Listar
3. Sair
-----------------------------

🛠️ Prática Obrigatória 2: Calculadora de Imposto FastLog

Crie um procedimento chamado Calcular_ICMS(valor : real) que receba um valor como parâmetro e exiba na tela o cálculo de 18% de imposto sobre esse valor. Chame o procedimento 3 vezes no programa principal com valores diferentes.

✅ Resultado Esperado

1
2
3
Imposto calculado: R$ 18.0 (para valor 100)
Imposto calculado: R$ 90.0 (para valor 500)
...

🔥 Desafio de Fixação (Opcional): Desenhar Caixa

Crie um procedimento chamado DesenharCaixa que exiba um retângulo fixo feito de caracteres #. Use esse procedimento para emoldurar as mensagens de erro do seu sistema.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos:

  1. Procedimentos ajudam a evitar repetição de código (princípio DRY - Don’t Repeat Yourself).
  2. Salve os arquivos com a extensão .alg (Ex: Atividade_17_SeuNome.alg).
  3. Envie no Microsoft Teams na tarefa “VisuAlg Cap 17 - Procedimentos”.

🔑 Gabarito de Código

Prática 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "Menu"
procedimento ExibirMenu()
inicio
   escreval("1. Novo")
   escreval("2. Editar")
   escreval("3. Sair")
fimprocedimento

inicio
   ExibirMenu()
fimalgoritmo

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "ICMS"
procedimento Calcular_ICMS(v : real)
inicio
   escreval("Imposto ICMS (18%): R$ ", v * 0.18)
fimprocedimento

inicio
   Calcular_ICMS(100)
   Calcular_ICMS(500)
   Calcular_ICMS(1200)
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
algoritmo "Moldura"
procedimento DesenharCaixa()
inicio
   escreval("###########")
   escreval("#  AVISO  #")
   escreval("###########")
fimprocedimento

inicio
   DesenharCaixa()
fimalgoritmo