Comandos de entrada e saída independentes de plataforma
Em pseudocódigo essencial, a ideia de entrada e saída é descrever o diálogo do algoritmo com o “mundo externo” (usuário, arquivo, sensor, API) sem amarrar a uma linguagem específica. Para isso, usamos comandos genéricos e consistentes:
LEIA: obtém um valor de entrada e armazena em uma variável.ESCREVAouIMPRIMA: exibe uma mensagem ou valor para o usuário.
O objetivo é que qualquer pessoa consiga traduzir o pseudocódigo para uma linguagem real (Python, Java, C, etc.) mantendo o mesmo fluxo de interação.
ESCREVA/IMPRIMA: mensagens, prompts e formatação
Use ESCREVA para comunicar claramente o que está acontecendo. Diferencie dois tipos de saída:
- Prompt: mensagem que pede um dado (ex.: “Digite sua idade:”).
- Mensagem/relatório: retorno do algoritmo (ex.: “Idade válida.”, “Total: 123”).
Boas práticas para prompts e mensagens:
- Seja específico sobre o que deve ser digitado (tipo, unidade, faixa).
- Quando houver validação, informe o formato esperado antes de ler e repita a instrução quando a entrada for inválida.
- Evite mensagens ambíguas como “Digite um valor”. Prefira “Digite um inteiro positivo (1, 2, 3...)”.
Exemplo de saída com texto e valores:
- Ouça o áudio com a tela desligada
- Ganhe Certificado após a conclusão
- + de 5000 cursos para você explorar!
Baixar o aplicativo
ESCREVA "Subtotal: ", subtotal, " reais"Se o seu padrão preferir, você pode adotar IMPRIMA como sinônimo de ESCREVA, mas mantenha consistência no capítulo inteiro.
LEIA: capturando dados de forma explícita
LEIA representa a captura de um valor. Em pseudocódigo essencial, é útil registrar:
- Qual variável recebe o valor.
- Qual formato é esperado (inteiro, real, texto, data).
- Se há restrições (positivo, intervalo, lista de opções).
Um padrão simples e traduzível é:
ESCREVA "Digite sua idade (inteiro entre 0 e 120): "; LEIA idadeSe preferir separar para ficar mais legível:
ESCREVA "Digite sua idade (inteiro entre 0 e 120): "
LEIA idadeQuando o curso/ebook adota a regra de não usar quebras de linha no texto final, você ainda pode manter a separação visual dentro de blocos <pre> como acima, pois isso é parte do pseudocódigo exibido.
Validação de entrada como parte do algoritmo
Validação é o conjunto de checagens que garante que a entrada atende ao formato e às regras do problema. Em pseudocódigo essencial, a validação deve aparecer explicitamente no algoritmo, não apenas como observação.
Tipos comuns de validação
- Tipo/formato: é número? é inteiro? é texto não vazio?
- Faixa: está entre mínimo e máximo?
- Conjunto de opções: é “S” ou “N”? é “A”, “B” ou “C”?
- Consistência: data final não pode ser anterior à inicial; quantidade não pode exceder estoque.
Como indicar formatos esperados
Indique o formato esperado de duas formas complementares:
- No prompt: “Digite um inteiro positivo”.
- Na lógica: checagens como
valor > 0e, quando necessário, checagem de “é inteiro”.
Quando o pseudocódigo não possui funções prontas, você pode usar predicados descritivos e traduzíveis, por exemplo:
EH_INTEIRO(x)EH_REAL(x)EH_VAZIO(texto)
Esses predicados deixam claro o que deve ser implementado na linguagem final.
Padrão prático: repetir até a entrada ser válida
O padrão mais comum é: pedir, ler, validar; se inválido, informar e repetir. Um esqueleto traduzível:
REPITA
ESCREVA "... (formato esperado) ...: "
LEIA valor
SE NAO (condicao_de_validade) ENTAO
ESCREVA "Entrada inválida. ... (regras) ..."
FIMSE
ATE condicao_de_validadeEsse padrão evita que o algoritmo prossiga com dados incorretos e torna o fluxo de interação previsível.
Passo a passo: construindo uma leitura validada (inteiro positivo)
Objetivo: ler um inteiro positivo (maior que zero) e só aceitar quando estiver correto.
Passo 1: escrever um prompt específico
ESCREVA "Digite um inteiro positivo (1, 2, 3...): "Passo 2: ler para uma variável
LEIA nPasso 3: validar tipo e regra
Se o ambiente de entrada pode fornecer texto, valide tipo e regra. Exemplo com predicado:
valido <- EH_INTEIRO(n) E (n > 0)Passo 4: repetir até válido
REPITA
ESCREVA "Digite um inteiro positivo (1, 2, 3...): "
LEIA n
SE NAO (EH_INTEIRO(n) E (n > 0)) ENTAO
ESCREVA "Entrada inválida. Informe um número inteiro maior que zero."
FIMSE
ATE EH_INTEIRO(n) E (n > 0)Observação prática: em algumas traduções, LEIA já retorna um número; em outras, retorna texto. O pseudocódigo acima continua válido porque deixa explícita a intenção de checar formato.
Passo a passo: validação por conjunto de opções (S/N)
Objetivo: ler uma resposta que deve ser “S” ou “N” (sim/não), aceitando também minúsculas.
Passo 1: normalizar a entrada
Use um predicado/função descritiva para normalização:
resp <- MAIUSCULO(resp)Passo 2: validar contra opções
REPITA
ESCREVA "Deseja continuar? (S/N): "
LEIA resp
resp <- MAIUSCULO(resp)
SE NAO (resp = "S" OU resp = "N") ENTAO
ESCREVA "Entrada inválida. Digite S para sim ou N para não."
FIMSE
ATE (resp = "S" OU resp = "N")Miniprojeto 1: Cadastro simples com validação e relatório
Problema: coletar nome, idade e salário; validar; imprimir um relatório com classificação de maioridade e salário anual.
Regras
- Nome: texto não vazio.
- Idade: inteiro entre 0 e 120.
- Salário mensal: real maior que 0.
Pseudocódigo (traduzível)
ESCREVA "=== Cadastro ==="
REPITA
ESCREVA "Nome (não vazio): "
LEIA nome
SE EH_VAZIO(nome) ENTAO
ESCREVA "Entrada inválida. Informe um nome."
FIMSE
ATE NAO EH_VAZIO(nome)
REPITA
ESCREVA "Idade (inteiro de 0 a 120): "
LEIA idade
SE NAO (EH_INTEIRO(idade) E idade >= 0 E idade <= 120) ENTAO
ESCREVA "Entrada inválida. Informe um inteiro entre 0 e 120."
FIMSE
ATE EH_INTEIRO(idade) E idade >= 0 E idade <= 120
REPITA
ESCREVA "Salário mensal (real > 0): "
LEIA salarioMensal
SE NAO (EH_REAL(salarioMensal) E salarioMensal > 0) ENTAO
ESCREVA "Entrada inválida. Informe um número maior que zero."
FIMSE
ATE EH_REAL(salarioMensal) E salarioMensal > 0
salarioAnual <- salarioMensal * 12
SE idade >= 18 ENTAO
status <- "maior de idade"
SENAO
status <- "menor de idade"
FIMSE
ESCREVA "=== Relatório ==="
ESCREVA "Nome: ", nome
ESCREVA "Idade: ", idade, " (", status, ")"
ESCREVA "Salário mensal: ", salarioMensal
ESCREVA "Salário anual: ", salarioAnualChecklist de tradução
EH_VAZIO,EH_INTEIRO,EH_REAL,MAIUSCULOviram funções auxiliares na linguagem escolhida.- As mensagens já documentam o formato esperado, reduzindo dúvidas do usuário.
Miniprojeto 2: Boletim com N notas, validação e resumo
Problema: ler a quantidade de notas, depois ler cada nota (0 a 10), calcular média e imprimir um resumo.
Regras
- Quantidade de notas: inteiro positivo.
- Cada nota: real entre 0 e 10.
Pseudocódigo (traduzível)
ESCREVA "=== Boletim ==="
REPITA
ESCREVA "Quantas notas deseja informar? (inteiro > 0): "
LEIA qtd
SE NAO (EH_INTEIRO(qtd) E qtd > 0) ENTAO
ESCREVA "Entrada inválida. Informe um inteiro maior que zero."
FIMSE
ATE EH_INTEIRO(qtd) E qtd > 0
soma <- 0
PARA i DE 1 A qtd FACA
REPITA
ESCREVA "Nota ", i, " (0 a 10): "
LEIA nota
SE NAO (EH_REAL(nota) E nota >= 0 E nota <= 10) ENTAO
ESCREVA "Entrada inválida. Informe um número entre 0 e 10."
FIMSE
ATE EH_REAL(nota) E nota >= 0 E nota <= 10
soma <- soma + nota
FIMPARA
media <- soma / qtd
ESCREVA "=== Resumo ==="
ESCREVA "Quantidade de notas: ", qtd
ESCREVA "Média: ", media
SE media >= 7 ENTAO
ESCREVA "Situação: aprovado"
SENAO
ESCREVA "Situação: reprovado"
FIMSEMiniprojeto 3: Relatório de consumo (validação + cálculo + mensagens claras)
Problema: ler distância percorrida (km) e combustível gasto (litros), validar, calcular consumo (km/l) e classificar.
Regras
- Distância: real > 0.
- Combustível: real > 0.
- Consumo = distância / combustível.
Pseudocódigo (traduzível)
ESCREVA "=== Consumo de combustível ==="
REPITA
ESCREVA "Distância percorrida em km (real > 0): "
LEIA km
SE NAO (EH_REAL(km) E km > 0) ENTAO
ESCREVA "Entrada inválida. Informe um número maior que zero."
FIMSE
ATE EH_REAL(km) E km > 0
REPITA
ESCREVA "Combustível gasto em litros (real > 0): "
LEIA litros
SE NAO (EH_REAL(litros) E litros > 0) ENTAO
ESCREVA "Entrada inválida. Informe um número maior que zero."
FIMSE
ATE EH_REAL(litros) E litros > 0
consumo <- km / litros
ESCREVA "=== Relatório ==="
ESCREVA "Distância (km): ", km
ESCREVA "Combustível (L): ", litros
ESCREVA "Consumo (km/L): ", consumo
SE consumo >= 12 ENTAO
ESCREVA "Classificação: econômico"
SENAO
ESCREVA "Classificação: alto consumo"
FIMSETabela de padrões recomendados (rápida consulta)
| Objetivo | Padrão em pseudocódigo | Mensagem sugerida |
|---|---|---|
| Pedir inteiro positivo | REPITA ... ATE EH_INTEIRO(x) E x > 0 | “Digite um inteiro positivo (1, 2, 3...)” |
| Pedir real em faixa | REPITA ... ATE EH_REAL(x) E x >= min E x <= max | “Digite um número entre min e max” |
| Pedir opção (menu) | REPITA ... ATE x = "A" OU x = "B" | “Escolha A ou B” |
| Normalizar texto | x <- MAIUSCULO(x) | “(S/N)” ou “(A/B/C)” |