Capítulo 04: Interação com o Usuário (Entrada e Saída de Dados com leia e escreva)
🎯 Objetivo da Aula
Um software profissional precisa ser dinâmico: ele conversa com o operador humano, solicita informações pelo teclado, processa os dados na memória RAM e devolve relatórios e faturas na tela.
Nesta aula, você aprenderá a:
- Compreender o ciclo de Entrada (
stdin), Processamento e Saída (stdout). - Capturar dados digitados pelo usuário com o comando
leia(). - Dominar a Concatenação de textos e variáveis com vírgulas no comando
escreva(). - Utilizar a biblioteca nativa
Matematicapara arredondar valores monetários com 2 casas decimais (mat.arredondar()).
📥 Material de Apoio e Código-Fonte da Aula:
- 📄 Arquivo Pronto (.por): Baixar Capitulo_04.por (abra diretamente no Portugol Studio)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_04.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: A recepção do Centro de Distribuição da FastLog precisa de um sistema de autoatendimento no balcão. O atendente digita os dados do despacho (nome do cliente, peso da mercadoria em kg e distância da entrega em km). O programa deve processar as tarifas em tempo real e emitir o Recibo Oficial de Conhecimento de Transporte (CT-e) na tela.
Missão: Programar o Terminal de Atendimento FastLog, capturando interativamente os dados pelo teclado e exibindo a fatura final com valores monetários devidamente arredondados.
🧠 Fundamentos: O Ciclo de Entrada e Saída
graph LR
Input["1. ENTRADA (leia)<br/>Teclado: peso, km"] --> Process["2. PROCESSAMENTO<br/>CPU / RAM: total = taxa + (km * 3.5)"]
Process --> Output["3. SAÍDA (escreva)<br/>Console: Recibo Formatado"]
style Input fill:#2980b9,stroke:#fff,color:#fff
style Process fill:#8e44ad,stroke:#fff,color:#fff
style Output fill:#27ae60,stroke:#fff,color:#fff1. O Comando leia()
O comando leia(variavel) pausa a execução do programa e aguarda o usuário digitar um valor e pressionar a tecla Enter:
Comandos na mesma linha
O Portugol Studio não usa ; para separar comandos, então escreva(...) e leia(...) também podem ficar juntos na mesma linha, como um atalho mais compacto:
As duas formas (linhas separadas ou combinadas) funcionam exatamente igual — você vai ver o estilo compacto em vários gabaritos de código deste curso a partir daqui.
2. Concatenação de Dados com escreva()
Para combinar textos fixos (entre aspas) e variáveis, separamos os elementos por vírgulas:
3. Arredondamento com a Biblioteca Matematica
Para evitar números com dízimas periódicas como 1500.3333333 no console, importamos a biblioteca nativa Matematica:
📖 Exemplo Guiado: Simulador de Frete Interativo
Código do Programa:
✅ Exemplo de Execução no Console (Shift + F6):
🛠️ Prática Obrigatória 1: Emissor de Romaneio de Carga
Passo 1: O Desafio
Crie um programa romaneio_expedicao.por que solicite pelo teclado:
numeroPedido(inteiro)descricaoItem(cadeia)quantidadeCaixas(inteiro)pesoUnitario(real)valorUnitario(real)
O programa deve calcular o Peso Total (quantidadeCaixas * pesoUnitario) e o Valor Assegurado (quantidadeCaixas * valorUnitario), exibindo o romaneio completo.
✅ Resultado Esperado (Prática 1):
🛠️ Prática Obrigatória 2: Rateio de Despesas de Viagem
Crie um programa rateio_despesas.por que receba:
- O total gasto com óleo diesel.
- O total gasto com pedágios e alimentação.
- A quantidade de passageiros na van corporativa. O programa deve somar todos os custos e informar o valor individual por passageiro arredondado em 2 casas decimais.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_04_SeuNome_SeuSobrenome.por. - Execute o código e valide se os valores digitados geram saídas perfeitas.
- No Microsoft Teams, envie na tarefa “Portugol Cap 04 - Entrada e Saída”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de dominar a comunicação bidirecional com o usuário. Softwares de terminal (CLIs) em ambientes de DevOps utilizam esse mesmo mecanismo para coletar parâmetros em scripts de automação e implantação (Deploy).
🔥 Desafio de Fixação: Holerite com Cálculo de Horas Extras
Crie um programa que receba o nome do motorista, o salário base e as horas extras trabalhadas. Calcule a hora extra com 50% de adicional e exiba o holerite com o salário líquido final.
🔑 Gabarito de Código Completo
Prática 1:
Prática 2:
Desafio:
📝 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.
- O que o comando
leia(variavel)faz quando executado, segundo o capítulo? - Quais são as três etapas do ciclo de Entrada, Processamento e Saída apresentado no diagrama do capítulo?
- Como se combinam textos fixos e variáveis dentro do comando
escreva()? Que símbolo separa os elementos? - Qual comando é usado para importar a biblioteca
Matematicano Portugol Studio, e qual apelido é dado a ela no exemplo do capítulo? - Qual função da biblioteca
Matematicaé usada para arredondar um valor com um número específico de casas decimais? Dê um exemplo de uso. - Na Prática Obrigatória 1 (Romaneio de Expedição), quais cinco dados o programa deve solicitar ao usuário pelo teclado?
- Como o Peso Total deve ser calculado na Prática Obrigatória 1, segundo a fórmula descrita?
- Na Prática Obrigatória 2 (Rateio de Despesas de Viagem), como deve ser calculado o valor individual por passageiro?
- Segundo o Checkpoint de Lógica, em que tipo de sistemas (citados no texto) esse mesmo mecanismo de entrada e saída pelo teclado é utilizado?
- Qual tecla o usuário deve pressionar após digitar um valor para que o comando
leia()capture a informação?