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

Desenvolva um algoritmo em pseudocódigo que receba um conjunto de registros de sensores heterogêneos (cada…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO01

Identificar as principais formas de organizar e representar a informação de maneira estruturada (matrizes, registros, listas e grafos) ou não estruturada (números, palavras, valores verdade).

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Desenvolva um algoritmo em pseudocódigo que receba um conjunto de registros de sensores heterogêneos (cada registro contém id, timestamp, leitura, tipo_leitura, e estado_bateria) e retorne: (a) uma lista de registros normalizados com tipos de dados adequados (inteiro, float, string, booleano, lista); (b) a média das leituras numéricas por tipo_leitura; e (c) um histórico por id como lista ordenada por timestamp. Indique as variáveis e estruturas de dados usadas.

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

Resposta esperada

Resposta modelo (pseudocódigo): função parse_valor(valor_raw, tipo_leitura): se valor_raw é nulo ou vazio: retornar nulo se tipo_leitura em {"temperatura","umidade","pressao"}: retornar float(valor_raw) se tipo_leitura == "contador": retornar int(valor_raw) se tipo_leitura == "categoria": retornar string(valor_raw).strip() retornar valor_raw função parse_bateria(estado_raw): se estado_raw em {"ok","1","true"}: retornar True se estado_raw em {"fail","0","false"}: retornar False retornar False função normalizar_registros(registros): registros_norm = lista vazia medias = mapa vazio // chave: tipo_leitura -> (soma, contador) historicos = mapa vazio // chave: id -> lista de (timestamp, registro) para cada r em registros: id = int(r.id) ts = string(r.timestamp) // manter como string padronizada valor = parse_valor(r.leitura, r.tipo_leitura) bateria = parse_bateria(r.estado_bateria) registro_norm = {"id": id, "timestamp": ts, "valor": valor, "tipo": r.tipo_leitura, "bateria_ok": bateria} anexar registro_norm a registros_norm se tipo_leitura permitir números e valor não for nulo: atualizar medias[tipo_leitura].soma += valor incrementar medias[tipo_leitura].contador anexar (ts, registro_norm) a historicos[id] // calcular médias medias_final = mapa vazio para cada tipo, (soma, contador) em medias: medias_final[tipo] = (soma / contador) se contador > 0 senão nulo // ordenar históricos por timestamp para cada id em historicos: ordenar historicos[id] por timestamp crescente substituir cada entrada por apenas o registro (manter lista) retornar {"registros_normalizados": registros_norm, "medias_por_tipo": medias_final, "historico_por_id": historicos} Observações e escolhas de projeto: - Estruturas: usar lista para registros normalizados, mapa/dicionário para agregações por tipo e por id; histórico é lista ordenada. - Tipos: id -> inteiro; timestamp -> string padronizada (ou datetime se disponível); valor -> float/int/string conforme tipo; bateria -> booleano; histórico -> lista de registros. - Tratamento de faltantes: representar leituras ausentes como nulo e ignorar em médias. - Complexidade: O(n) em número de registros para normalização e agregação; ordenação de históricos domina se muitos registros por id (sum m_i log m_i).

Explicação

A solução apresentada utiliza funções específicas para normalizar os dados, garantindo que cada tipo de leitura seja tratado de forma adequada, o que é essencial para a integridade dos dados. Além disso, a implementação de médias e a organização dos históricos por id e timestamp demonstram uma abordagem eficiente para a análise dos registros, permitindo fácil acesso e interpretação das informações. A escolha das estruturas de dados, como listas e mapas, otimiza o desempenho e a clareza do código, facilitando a manutenção e a escalabilidade 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

algoritmo em pseudocódigo

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estrutura de dados · tipos de dados

📚 Reveja

Revisar conceitos de tipos de dados e estruturas de dados em programação.

⚠️ Erro mais comum

O aluno pode confundir os tipos de dados ao normalizar os registros, utilizando tipos inadequados para cada campo, como usar string para valores numéricos.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

criatividade

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de Organização e representação da informação

🔎 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.