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
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
algoritmo em pseudocódigo
avaliacao
estrutura de dados · tipos de dados
Revisar conceitos de tipos de dados e estruturas de dados em programação.
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.
ciencia_tecnologia
criatividade
cientifico
Questões parecidas com resolução
- Projete um algoritmo que, a partir de uma sequência de leituras de sensores (cada leitura: timestamp, sensorID, valor)…
- Elabore um algoritmo em pseudocódigo que receba uma matriz 'sensores' (linhas = locais, colunas = dias) em que cada…
- Escreva um algoritmo em pseudocódigo que leia uma sequência de dados numéricos de sensores, calcule a média e o desvio…
- Desenvolva um algoritmo em pseudocódigo que receba um registro composto por leituras numéricas de sensores, uma…
- Projete um algoritmo em pseudocódigo que receba uma lista de leituras numéricas (dados) e identifique leituras anômalas…
- Descreva com precisão o algoritmo e as estruturas (registros, listas, matrizes) para um programa que consolide dados de…
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
