GeraProva GeraProva Provas com IA para professores do Brasil
Computação8º anoBNCC EF08CO03Difícil⏱ longo

Descreva em pseudocódigo um algoritmo que recebe na variável 'dados' uma sequência de bytes ASCII e produz na…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF08CO03

Utilizar algoritmos clássicos de manipulação sobre listas.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Descreva em pseudocódigo um algoritmo que recebe na variável 'dados' uma sequência de bytes ASCII e produz na saída 'codificado' usando run-length encoding (RLE). Explique também como representar o contador em bytes e como realizar a decodificação.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Pseudocódigo: func RLE_codificar(dados): codificado ? lista vazia i ? 0 enquanto i < comprimento(dados): byte ? dados[i] contador ? 1 enquanto i+contador < comprimento(dados) e dados[i+contador] = byte e contador < 255: contador ? contador + 1 fim enquanto anexar codificado (byte, contador) // representado como dois bytes: valor do caractere seguido do contador i ? i + contador fim enquanto retornar codificado func RLE_decodificar(codificado): dados ? lista vazia para cada par (byte, contador) em codificado: repetir contador vezes: anexar byte a dados retornar dados Representação do contador: - Usar 1 byte para o contador (0–255). Se uma sequência tiver comprimento >255, dividir em vários pares com o mesmo byte e contadores que somem ao total. Observações de projeto: - RLE é eficiente quando há repetições consecutivas; para textos sem repetições pode aumentar o tamanho. Para evitar ambiguidade, o formato deve definir claramente a ordem (byte, contador) e limitar o contador a 255 por par. Decodificação simplesmente lê pares e repete o byte conforme o contador. Para interoperabilidade, pode-se prefixar o fluxo com um cabeçalho que indique uso de RLE.

Explicação

O pseudocódigo apresentado descreve claramente a lógica de compressão e descompressão usando RLE, abordando tanto a codificação quanto a decodificação de forma sistemática. A representação do contador em um único byte permite lidar com sequências de até 255 caracteres consecutivos, enquanto a explicação sobre a divisão de sequências maiores garante a integridade dos dados. Além disso, as observações sobre eficiência e formato ajudam a entender as limitações e a aplicação prática do algoritmo.

Raio-X da questão

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

run-length encoding

📌 Objetivo

avaliacao

🧱 Pré-requisitos

pseudocódigo · codificação de dados

📚 Reveja

Revisar algoritmos de compressão e representação de dados.

⚠️ Erro mais comum

O aluno pode confundir a lógica de contagem de caracteres, não implementando corretamente a parte do contador no algoritmo.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Programação - Algoritmos clássicos

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.