Entrada e saída no pseudocódigo essencial: LEIA, ESCREVA e validação

Capítulo 6

Tempo estimado de leitura: 8 minutos

+ Exercício

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.
  • ESCREVA ou IMPRIMA: 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:

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

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 idade

Se preferir separar para ficar mais legível:

ESCREVA "Digite sua idade (inteiro entre 0 e 120): "
LEIA idade

Quando 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 > 0 e, 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_validade

Esse 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 n

Passo 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: ", salarioAnual

Checklist de tradução

  • EH_VAZIO, EH_INTEIRO, EH_REAL, MAIUSCULO viram 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"
FIMSE

Miniprojeto 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"
FIMSE

Tabela de padrões recomendados (rápida consulta)

ObjetivoPadrão em pseudocódigoMensagem sugerida
Pedir inteiro positivoREPITA ... ATE EH_INTEIRO(x) E x > 0“Digite um inteiro positivo (1, 2, 3...)”
Pedir real em faixaREPITA ... 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 textox <- MAIUSCULO(x)“(S/N)” ou “(A/B/C)”

Agora responda o exercício sobre o conteúdo:

Ao construir uma leitura validada em pseudocódigo essencial, qual sequência descreve melhor o padrão recomendado para garantir que o algoritmo só prossiga com uma entrada válida?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O padrão recomendado é pedir, ler e validar dentro de um laço, exibindo uma mensagem de erro quando necessário e repetindo até a condição de validade ser verdadeira.

Próximo capitúlo

Condicionais no pseudocódigo essencial: SE, SENÃO SE, SENÃO e casos limites

Arrow Right Icon
Capa do Ebook gratuito Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções
40%

Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.