◇ OpenCyber Academy
Engenharia · Capítulo 4 · Português

Capítulo 4 — Programação I

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 4 — Programação I

Mapa da aula

Aula 04 publicada. Mapa, exemplo, EX010.

flowchart TD
  N0["4.1 Lendo arquivos de dados"]
  N1["4.2 Validação no código"]
  N2["4.4 Código legível"]
  N0 --> N1 --> N2
  N2 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX010"]

Desenho lógico

flowchart LR
  N0["4.1 Lendo arquivos de dados"]
  N1["4.2 Validação no código"]
  N2["4.4 Código legível"]
  N0 --> N1 --> N2 --> Q["EX010"]
[4.1 Lendo arquivos de dados]
    |
    v
[4.2 Validação no código]
    |
    v
[4.4 Código legível]
    |
    v
[Exemplo resolvido] --> [Exercício EX010]

Objetivos de aprendizagem

Você vai (1) escrever scripts que leem e validam arquivos de dados; (2) tratar erros de forma explícita; (3) manter o código legível para revisores.

4.1 Lendo arquivos de dados

Kofi escreve seus primeiros scripts em Python usando o módulo csv da biblioteca padrão para ler leituras sintéticas de medidores. Cada linha tem um identificador de medidor, um carimbo de data e hora, uma leitura e uma unidade. Ele aprende a ler os arquivos linha a linha, converter textos em números com cuidado e guardar os valores originais para fins de rastreabilidade. A Profa. Varga exige dados sintéticos em todos os exercícios, porque scripts de estudantes costumam imprimir dados durante a depuração e nunca devem expor informações reais de clientes. Cada script também imprime, ao final, quantas linhas foram lidas, aceitas e rejeitadas.

4.2 Validação no código

Kofi acrescenta verificações: o identificador do medidor precisa seguir um padrão, o carimbo de data e hora precisa ser interpretável, a leitura precisa ser um número não negativo e a unidade precisa ser metros cúbicos. As linhas que falham vão para um arquivo de rejeitos, com o motivo, e não são descartadas em silêncio. Ele explica que o descarte silencioso esconde problemas de qualidade dos donos dos dados, enquanto um arquivo de rejeitos lhes dá evidências para corrigir a origem. Contar os rejeitos por motivo também mostra quais problemas são mais comuns. O motivo mais frequente na primeira execução é a falta de unidade.

4.3 Tratando erros

Quando falta uma coluna em um arquivo, o script de Kofi para com uma mensagem clara, em vez de adivinhar. Quando uma única linha está malformada, ele registra o problema e continua. Ele distingue os erros que tornam todo o resultado não confiável dos erros que afetam apenas um registro. A Profa. Varga chama isso de falhar alto na estrutura e falhar baixo no conteúdo, e observa que a governança depende de scripts que tornam os problemas visíveis, em vez de produzir resultados confiantes a partir de entradas quebradas. Os dois comportamentos são testados com arquivos propositalmente defeituosos.

4.4 Código legível

Kofi dá nomes claros às variáveis, escreve uma docstring explicando o que cada script lê e produz e mantém as funções curtas. Um colega revisa o código e encontra um erro de deslocamento de uma unidade (off-by-one) no tratamento dos carimbos de data e hora, que Kofi corrige e cobre com um teste. Ele aprende que a revisão de código é um controle de qualidade do próprio código que impõe a qualidade dos dados, e que código legível é mais fácil de revisar, manter e confiar quando outras pessoas dependem do resultado. O teste agora roda automaticamente sempre que alguém altera a função de carimbo de data e hora.

Exemplo resolvido

Kofi lê arquivos de medidores com csv, valida quatro campos, grava rejeitos com motivos, interrompe a execução em erros estruturais e corrige, com um teste, um defeito de carimbo de data e hora encontrado na revisão.

Caso sintético. Os arquivos são sintéticos.

Erros e limites

As regras de validação no código se afastam das regras escritas; revise as duas juntas.

Exercícios

Continue estudando — aula 04 (capítulo 04 de 50)

← Capítulo 03 · Índice das aulas · Capítulo 05 →

Continue para a próxima aula já escrita.