◇ 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 Primeiro programa de análise"]
  N1["Laboratório — Resumo das contagens semanais de repor"]
  N2["4.2 Tratar dados pessoais"]
  N3["4.3 Ler o resultado"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX010"]

Desenho lógico

flowchart LR
  N0["4.1 Primeiro programa de análise"]
  N1["Laboratório — Resumo das contagens semanais de repor"]
  N2["4.2 Tratar dados pessoais"]
  N3["4.3 Ler o resultado"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX010"]
[4.1 Primeiro programa de análise]
    |
    v
[Laboratório — Resumo das contagens semanais de repor]
    |
    v
[4.2 Tratar dados pessoais]
    |
    v
[4.3 Ler o resultado]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX010]

Objetivos de aprendizagem

Você vai (1) escrever programas simples para analisar dados de comportamento; (2) tratar dados pessoais com cuidado no código; (3) testar programas com casos conhecidos.

4.1 Primeiro programa de análise

Aiko escreve seu primeiro programa em Python para resumir contagens semanais sintéticas de reportes feitos pelo botão de reporte da Greyford. O programa lê uma lista de números, calcula o total, a média e a semana com mais reportes e imprime o resultado. Ela o testa com uma lista curta cuja resposta conhece de cabeça. Testar com casos conhecidos é um hábito básico de engenharia, porque um programa que roda sem erros ainda pode dar respostas erradas se um laço pular a última semana ou dividir pela contagem errada.

Laboratório — Resumo das contagens semanais de reportes

# Summarise weekly report-button counts after a campaign (synthetic).
weeks = [12, 30, 41, 35, 27, 22, 19, 18, 17, 17, 16, 16]
total = sum(weeks); peak = max(weeks); pw = weeks.index(peak) + 1
print(f"weeks {len(weeks)}, total {total}, average {total / len(weeks):.1f}, peak week {pw} ({peak})")
for i, w in enumerate(weeks, 1): print(f"week {i:2d} {'#' * (w // 2)} {w}")

Execute com python3 lab_weekly.py. Saída verificada:

weeks 12, total 270, average 22.5, peak week 3 (41)
week  1 ###### 12
week  2 ############### 30
week  3 #################### 41
week  4 ################# 35
week  5 ############# 27
week  6 ########### 22
week  7 ######### 19
week  8 ######### 18
week  9 ######## 17
week 10 ######## 17
week 11 ######## 16
week 12 ######## 16

4.2 Tratar dados pessoais

A Profa. Kerr adverte que dados de comportamento podem ser pessoais. O programa de Aiko trabalha com contagens por semana, e não com nomes. Se algum dia ela precisar de registros individuais, substituirá os nomes por códigos aleatórios e guardará a chave separadamente. Ela escreve essa regra no topo do script. Programas que processam dados de funcionários devem coletar o mínimo necessário, porque, uma vez numa planilha, os dados tendem a ser copiados, e cópias são difíceis de rastrear ou apagar. A Profa. Kerr confere a regra durante a revisão de código.

4.3 Ler o resultado

O laboratório mostra doze semanas de reportes, com pico na semana três, depois de uma campanha, e estabilização em um nível mais baixo. Aiko observa que a média esconde esse formato, por isso acrescenta uma barra simples impressa para cada semana. Ver o formato confirma seu modelo de cálculo do capítulo 1. Ela aprende que a saída de um programa deve apoiar a decisão em questão: aqui, quando agendar o próximo lembrete, algo que as barras semanais tornam óbvio. Ela salva a saída com a data, para que campanhas futuras possam ser comparadas com o mesmo padrão semanal e a mesma linha de base.

Exemplo resolvido

Aiko escreve e testa um programa que resume os reportes semanais, limita-o a contagens em vez de nomes e acrescenta uma exibição simples em barras para revelar o formato.

Caso sintético. As contagens são sintéticas.

Erros e limites

Médias escondem padrões. Dados pseudonimizados ainda podem identificar pessoas em grupos pequenos.

Exercícios

Síntese

Programas simples e testados, sobre um mínimo de dados, podem revelar padrões que sustentam decisões práticas.

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.