Fundamentos de Lógica e Algoritmos
Base sólida de lógica, variáveis, tipos, operadores e estruturas de controle
Rotina progressiva com teoria, exercícios, comandos reais, código e revisão inteligente — alinhada ao edital e ao Design System turquesa da saúde.
Links que você pediu para estudar componentes e tokens de cor junto com o plano.
Paleta turquesa, status, spacing, tipografia, sombras e gradientes usados nesta página.
Toast, modal, accordion, tabs, cards, alerts, stepper, timeline e muito mais.
Tipografia, cores, estados, acessibilidade, formulários e padrões modernos do Design System Saúde.
Clique em um card ou use as abas para abrir o detalhamento diário completo.
Base sólida de lógica, variáveis, tipos, operadores e estruturas de controle
Conceito → exemplo → exercício → implementação → problema real → variação difícil
Python como linguagem principal; Java/C#/PHP só para comparação conceitual
Modelagem conceitual/lógica/física e SELECT/WHERE/ORDER/GROUP/HAVING
Trilha progressiva SQL completa exigida no edital (DDL, DML, DCL)
Frontend do edital + formulários, validação e pequenos projetos
Cliente → API → Banco; GET/POST/PUT/DELETE; curl/PowerShell/Python
Ciclo de vida, requisitos, UML, testes, depuração e versionamento
TCP/IP, protocolos, serviços e comandos Windows/Linux do cotidiano de suporte
Windows Server/Linux, permissões, autenticação, firewall, backup e Lei 13.709/2018
PDTI, ITIL, COBIT, IaaS/PaaS/SaaS, ética, sigilo e suporte
Projeto integrador completo + simulados + revisão dos pontos fracos (<7/10)
Semana 1 de 12
Base sólida de lógica, variáveis, tipos, operadores e estruturas de controle
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Algoritmos, lógica e variáveis | 45' | 45' | 60' | 30' |
| Terça | Estruturas de decisão (if/else) e resolução de problemas | 45' | 45' | 60' | 30' |
| Quarta | Estruturas de repetição (for / while) | 45' | 45' | 60' | 30' |
| Quinta | Funções, procedimentos e primeiros testes | 45' | 45' | 60' | 30' |
| Sexta | Revisão inteligente + desafio integrado (Semana 1) | 45' | 45' | 60' | 30' |
Por quê: Sem domínio de algoritmos e tipos de dados, todo o restante do desenvolvimento fica superficial.
python --version
Verificar a versão do interpretador Python instalado
python --version | python -V
python --version
Ex.: Python 3.12.x
Execute e anote a versão instalada
Liste pacotes instalados com: pip list
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Código do dia — média e classificação
n1 = float(input("Nota 1: "))
n2 = float(input("Nota 2: "))
n3 = float(input("Nota 3: "))
media = (n1 + n2 + n3) / 3
print(f"Média: {media:.2f}")
if media >= 7:
print("Aprovado")
elif media >= 5:
print("Recuperação")
else:
print("Reprovado")
Crie um programa que leia nome, idade e salário, valide os dados e exiba um resumo formatado. Trate erro se idade/salário não forem numéricos.
Por quê: Decisões condicionais são a base de regras de negócio em qualquer sistema.
python nome_arquivo.py
Executar um script Python
python <arquivo.py>
python calculadora.py
Programa executa no terminal
Execute seus 4 exercícios
Crie um menu que só encerra com opção 0
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
op = input("Operação (+ - * /): ")
a = float(input("A: "))
b = float(input("B: "))
if op == "+":
print(a + b)
elif op == "-":
print(a - b)
elif op == "*":
print(a * b)
elif op == "/":
if b == 0:
print("Erro: divisão por zero")
else:
print(a / b)
else:
print("Operação inválida")
Simule um caixa eletrônico: sacar, depositar, consultar saldo, com validações.
Por quê: Laços permitem processar listas, validar dados e automatizar tarefas repetitivas.
dir / python -c
Listar arquivos e executar comando Python rápido
dir | python -c "print(sum(range(1,11)))"
python -c "print([i*i for i in range(1,6)])"
Lista [1, 4, 9, 16, 25]
Use python -c para somar 1..100
Gere os 10 primeiros números pares via -c
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
senha_correta = "admin123"
tentativas = 0
while tentativas < 3:
senha = input("Senha: ")
if senha == senha_correta:
print("Acesso liberado")
break
tentativas += 1
print(f"Restam {3 - tentativas} tentativas")
else:
print("Conta bloqueada")
Jogo de adivinhação: número secreto, dicas maior/menor, limite de tentativas e pontuação.
Por quê: Funções organizam código, evitam repetição e facilitam testes — base da engenharia de software.
git --version
Verificar se o Git está instalado (preparação para versionamento)
git --version
git --version
git version 2.x.x
Confirme a instalação do Git
Crie pasta do projeto da semana e rode git init (só init)
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
def fatorial(n):
if n < 0:
raise ValueError("N negativo")
if n in (0, 1):
return 1
return n * fatorial(n - 1)
for i in range(0, 7):
print(i, fatorial(i))
Crie funções para um mini-sistema de biblioteca: cadastrar livro, emprestar, devolver (em memória).
Por quê: Consolidar fundamentos antes de avançar para estruturas de dados e POO.
cls (Windows) / clear
Limpar a tela do terminal para organizar a prática
cls
cls
Terminal limpo
Organize a sessão de revisão com cls entre exercícios
Crie um README.md listando o que estudou na semana
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Esqueleto do desafio semanal — complete as funções
def cadastrar_aluno(lista):
pass # nome + 3 notas + média
def listar_aprovados(lista):
pass # média >= 7
def media_turma(lista):
pass
# menu while até sair
PROJETO 1 (início): Sistema de notas completo com menu, funções, validação e relatório. Versionar com git init + 1º commit.
Semana 2 de 12
Conceito → exemplo → exercício → implementação → problema real → variação difícil
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Vetores/listas: inserção, remoção, busca e ordenação básica | 45' | 45' | 60' | 30' |
| Terça | Pilhas (Stack) — LIFO | 45' | 45' | 60' | 30' |
| Quarta | Filas (Queue) — FIFO | 45' | 45' | 60' | 30' |
| Quinta | Árvores — conceitos e percorrimentos + POO introdutória | 45' | 45' | 60' | 30' |
| Sexta | Revisão ED + desafio integrado | 45' | 45' | 60' | 30' |
Por quê: Listas são a estrutura mais usada no dia a dia do programador.
python -i script.py
Abrir interpretador interativo após carregar o script
python -i arquivo.py
python -i listas.py
Prompt >>> com funções carregadas
Teste suas funções no modo -i
Meça len() e tempo mental de N=1000
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
def busca_linear(lista, alvo):
for i, v in enumerate(lista):
if v == alvo:
return i
return -1
dados = [10, 25, 7, 40, 25]
print(busca_linear(dados, 25))
Implemente busca binária em lista ordenada e compare com linear.
Por quê: Pilhas aparecem em undo/redo, parsing, chamada de funções e validação de expressões.
git status
Ver estado do repositório
git status
git status
Arquivos modificados/não rastreados
Rode após criar pilha.py
git add + commit da pilha
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
class Pilha:
def __init__(self):
self._dados = []
def push(self, x): self._dados.append(x)
def pop(self):
if not self._dados:
raise IndexError("Pilha vazia")
return self._dados.pop()
def peek(self):
return self._dados[-1]
def vazia(self):
return len(self._dados) == 0
Use pilha para converter decimal → binário.
Por quê: Filas modelam atendimento, impressão, filas de mensagens e processamento assíncrono.
git log --oneline
Ver histórico compacto de commits
git log --oneline
git log --oneline -5
Lista de commits curtos
Veja seus commits da semana
Escreva mensagem de commit clara (por quê)
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
from collections import deque
class Fila:
def __init__(self):
self._dados = deque()
def enqueue(self, x): self._dados.append(x)
def dequeue(self):
if not self._dados:
raise IndexError("Fila vazia")
return self._dados.popleft()
def frente(self):
return self._dados[0]
Simule call center com 2 filas (VIP e comum) e regra de atendimento 2:1.
Por quê: Árvores fundamentam índices, hierarquias e buscas; POO organiza as estruturas.
git diff
Ver diferenças desde o último commit
git diff
git diff arvore.py
Linhas +/− alteradas
Altere um método e veja o diff
Commit apenas do arquivo da árvore
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
class No:
def __init__(self, valor):
self.valor = valor
self.esq = None
self.dir = None
def em_ordem(no):
if no:
em_ordem(no.esq)
print(no.valor, end=" ")
em_ordem(no.dir)
Monte uma árvore de categorias de produtos e percorra imprimindo hierarquia.
Por quê: Fechar o ciclo de estruturas de dados com problema profissional.
git branch / git switch
Criar e trocar de branch
git branch nome | git switch nome
git branch feature-fila git switch feature-fila
Branch ativa alterada
Crie branch da revisão
Merge de volta para main/master
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Desafio: estoque + undo
# produtos = [] # lista de dicts
# historico = Pilha() # estados anteriores
# operações: adicionar, remover, desfazer
PROJETO 2 (base): Sistema OO de estoque com lista de produtos, pilha de undo e fila de pedidos.
Semana 3 de 12
Python como linguagem principal; Java/C#/PHP só para comparação conceitual
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Classes, objetos, atributos, métodos e construtores | 45' | 45' | 60' | 30' |
| Terça | Encapsulamento e abstração | 45' | 45' | 60' | 30' |
| Quarta | Herança e polimorfismo | 45' | 45' | 60' | 30' |
| Quinta | POO + UML leve + tratamento de erros | 45' | 45' | 60' | 30' |
| Sexta | Revisão POO + Projeto OO | 45' | 45' | 60' | 30' |
Por quê: POO é exigida no edital e é o padrão de sistemas corporativos.
python -m pip install --upgrade pip
Atualizar gerenciador de pacotes
python -m pip install --upgrade pip
python -m pip install --upgrade pip
pip atualizado
Execute e confira versão
Crie requirements.txt vazio comentado
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
class ContaBancaria:
def __init__(self, titular, saldo=0.0):
self.titular = titular
self.saldo = saldo
def depositar(self, valor):
if valor <= 0:
raise ValueError("Valor inválido")
self.saldo += valor
def sacar(self, valor):
if valor > self.saldo:
raise ValueError("Saldo insuficiente")
self.saldo -= valor
Adicione extrato (lista de movimentações) à ContaBancaria.
Por quê: Protege dados e esconde detalhes — essencial para segurança e manutenção.
whoami
Identificar usuário logado no SO (paralelo com autenticação)
whoami
whoami
domínio\usuário
Execute no PowerShell
Compare com identidade de um objeto Usuario
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
class Usuario:
def __init__(self, login, senha):
self.login = login
self.__senha = senha
def autenticar(self, senha):
return self.__senha == senha
def alterar_senha(self, atual, nova):
if not self.autenticar(atual):
raise PermissionError("Senha atual incorreta")
self.__senha = nova
Implemente níveis de acesso (admin, operador, leitor) com encapsulamento.
Por quê: Reuso e extensibilidade — manutenção evolutiva do edital.
tree /F (ou Get-ChildItem -Recurse)
Visualizar hierarquia de pastas (análogo a herança)
tree /F
tree /F
Árvore de diretórios
Organize pastas do projeto OO
Estruture src/, tests/, docs/
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
class Funcionario:
def __init__(self, nome, salario):
self.nome = nome
self.salario = salario
def bonus(self):
return self.salario * 0.10
class Gerente(Funcionario):
def bonus(self):
return self.salario * 0.25
equipe = [Funcionario("Ana", 3000), Gerente("Bruno", 5000)]
for f in equipe:
print(f.nome, f.bonus()) # polimorfismo
Modele Produto, Servico e Pedido com herança/polimorfismo de cálculo de total.
Por quê: O edital exige UML e tratamento de exceções no desenvolvimento.
git commit -m "mensagem"
Registrar snapshot do código
git add .\ngit commit -m "feat: classes de domínio"
git commit -m "fix: valida saldo no saque"
Novo commit no histórico
Faça 2 commits semânticos
Use prefixos feat/fix/docs
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Código COM ERRO (corrija)
class Pedido:
def __init__(self, itens):
self.itens = itens
def total(self):
soma = 0
for item in self.itens:
soma += item["preco"] * item["qtd"]
return soma
# Bug proposital no uso:
p = Pedido([{"preco": 10, "qtd": 2}, {"preco": "5", "qtd": 1}])
print(p.total()) # TypeError — corrija com validação
Documente o diagrama de classes e um caso de uso 'Registrar Pedido'.
Por quê: Consolidar POO antes de web e banco de dados.
git merge
Integrar branch ao ramo principal
git switch main\ngit merge feature-oo
git merge feature-oo
Históricos unidos (ou conflito)
Pratique merge sem conflito
Simule conflito e resolva
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Esqueleto PROJETO 2
# classes: Usuario, Produto, Pedido, Estoque
# regras: autenticação simples, estoque, total do pedido
# extras: exceções personalizadas + undo
Finalize PROJETO 2 e escreva um mini manual de uso (documentação técnica).
Semana 4 de 12
Modelagem conceitual/lógica/física e SELECT/WHERE/ORDER/GROUP/HAVING
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Modelagem conceitual, lógica e física | 45' | 45' | 60' | 30' |
| Terça | SQL Nível 1 — SELECT, WHERE, ORDER BY | 45' | 45' | 60' | 30' |
| Quarta | GROUP BY, HAVING e agregações | 45' | 45' | 60' | 30' |
| Quinta | Integridade, índices (conceito) e segurança básica de dados | 45' | 45' | 60' | 30' |
| Sexta | Revisão SQL N1 + desafio integrado | 45' | 45' | 60' | 30' |
Por quê: Gerenciar bases de dados é atribuição explícita do Analista de Sistemas.
sqlite3 (ou psql / mysql)
Abrir cliente do SGBD
sqlite3 app.db
sqlite3 pedidos.db
Prompt SQL
Crie um arquivo .db e conecte
.tables após criar 2 tabelas
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
-- DDL inicial
CREATE TABLE usuarios (
id INTEGER PRIMARY KEY,
login TEXT NOT NULL UNIQUE,
ativo INTEGER NOT NULL DEFAULT 1
);
CREATE TABLE produtos (
id INTEGER PRIMARY KEY,
nome TEXT NOT NULL,
preco REAL NOT NULL
);
Complete o modelo com pedidos e itens_pedido (FK).
Por quê: Consultas são o dia a dia de suporte e desenvolvimento.
SELECT * FROM usuarios WHERE ativo = 1;
Listar usuários ativos
SELECT colunas FROM tabela WHERE condição;
SELECT login FROM usuarios WHERE ativo = 1 ORDER BY login;
Conjunto de linhas filtradas
Altere para ativos com login começando por 'a'
Traga top 5 produtos mais caros
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
SELECT id, login
FROM usuarios
WHERE ativo = 1
ORDER BY login ASC;
Crie 5 consultas diferentes sobre o mesmo banco e documente o objetivo de cada uma.
Por quê: Relatórios gerenciais usam agregação o tempo todo.
SELECT COUNT(*) FROM usuarios;
Agregar quantidade de registros
SELECT AGG(col) FROM t [GROUP BY ...] [HAVING ...]
SELECT ativo, COUNT(*) FROM usuarios GROUP BY ativo;
Totais por grupo
Conte produtos por faixa de preço (CASE)
Relatório: ticket médio por cliente
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
SELECT u.login, COUNT(p.id) AS qtd_pedidos
FROM usuarios u
LEFT JOIN pedidos p ON p.usuario_id = u.id
GROUP BY u.login
HAVING COUNT(p.id) >= 1
ORDER BY qtd_pedidos DESC;
Explique o plano mental da consulta acima passo a passo.
Por quê: Edital exige integridade, segurança das informações e backup.
VACUUM; (SQLite) / BACKUP (conceito SQL Server)
Manutenção/backup conforme SGBD
Depende do SGBD (mencionado no edital: PostgreSQL, MySQL, SQL Server, Oracle)
.backup backup.db (sqlite CLI)
Cópia de segurança gerada
Faça um backup do seu .db
Escreva procedimento de restauração
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
CREATE INDEX idx_usuarios_login ON usuarios(login);
-- Explique: acelera busca por login; custo em INSERT/UPDATE
Elabore checklist de segurança do banco (acesso, backup, integridade).
Por quê: Fechar modelagem + consultas básicas com caso real.
.schema (SQLite)
Ver estrutura das tabelas
.schema [tabela]
.schema pedidos
DDL das tabelas
Documente o schema no README
Proponha melhoria de normalização
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
-- Desafio: complete
-- 1) top produtos
-- 2) usuários sem pedidos
-- 3) faturamento por dia
Inicie PROJETO 3: CRUD SQL (ainda via scripts) do domínio do edital.
Semana 5 de 12
Trilha progressiva SQL completa exigida no edital (DDL, DML, DCL)
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | INSERT, UPDATE, DELETE e transações (conceito) | 45' | 45' | 60' | 30' |
| Terça | JOINs — INNER e LEFT + subconsultas | 45' | 45' | 60' | 30' |
| Quarta | DDL, views e procedures/funções | 45' | 45' | 60' | 30' |
| Quinta | DCL, permissões, backup/recuperação e segurança | 45' | 45' | 60' | 30' |
| Sexta | Revisão SQL completa + PROJETO 3 CRUD | 45' | 45' | 60' | 30' |
Por quê: DML é essencial para manutenção e aplicações CRUD.
BEGIN; ... COMMIT;
Agrupar operações atomicamente
BEGIN; UPDATE ...; INSERT ...; COMMIT;
BEGIN; UPDATE produtos SET preco=preco*1.1; COMMIT;
Alterações confirmadas em bloco
Faça UPDATE + INSERT em uma transação
Force um erro e use ROLLBACK
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
BEGIN;
INSERT INTO pedidos(usuario_id, data) VALUES (1, DATE('now'));
INSERT INTO itens_pedido(pedido_id, produto_id, qtd, preco)
VALUES (last_insert_rowid(), 2, 1, 50.0);
COMMIT;
Implemente cancelamento de pedido com rollback mental documentado.
Por quê: Consultas reais quase sempre envolvem relacionamentos.
SELECT ... INNER JOIN ...
Combinar tabelas relacionadas
SELECT ... FROM A INNER JOIN B ON A.id = B.a_id
SELECT u.login, p.id FROM usuarios u INNER JOIN pedidos p ON p.usuario_id = u.id;
Somente combinações existentes
Reescreva com LEFT JOIN e compare
3 tabelas: usuarios-pedidos-itens
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
SELECT u.login, p.id AS pedido, pr.nome, i.qtd
FROM usuarios u
INNER JOIN pedidos p ON p.usuario_id = u.id
INNER JOIN itens_pedido i ON i.pedido_id = p.id
INNER JOIN produtos pr ON pr.id = i.produto_id;
Crie visão gerencial: faturamento por usuário com LEFT JOIN.
Por quê: Edital cita procedures, funções, views e administração de SGBD.
CREATE VIEW ... AS SELECT ...;
Encapsular consulta reutilizável
CREATE VIEW nome AS SELECT ...;
CREATE VIEW vw_usuarios_ativos AS SELECT id, login FROM usuarios WHERE ativo = 1;
View consultável como tabela
Crie view de produtos caros
View com JOIN de pedidos
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
CREATE VIEW vw_faturamento_usuario AS
SELECT u.login, SUM(i.qtd * i.preco) AS total
FROM usuarios u
LEFT JOIN pedidos p ON p.usuario_id = u.id
LEFT JOIN itens_pedido i ON i.pedido_id = p.id
GROUP BY u.login;
Documente quando NÃO usar view (complexidade/performance).
Por quê: Integra banco + segurança exigidos no cargo.
GRANT SELECT ON tabela TO usuario; (conceito)
Conceder permissão (DCL)
GRANT privilegio ON objeto TO usuario;
GRANT SELECT ON vw_usuarios_ativos TO app_read;
Usuário só lê a view
Desenhe grants do seu sistema
Proponha menor privilégio possível
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
-- Pseudopolítica
-- app_read: SELECT em views
-- app_write: SELECT/INSERT/UPDATE (sem DROP)
-- dba: ALL + BACKUP
Fluxo: APLICAÇÃO → API → AUTENTICAÇÃO → BD → CONTROLE DE ACESSO → BACKUP (explique cada etapa).
Por quê: Transformar SQL em capacidade prática de CRUD.
EXPLAIN QUERY PLAN ... (SQLite) / EXPLAIN
Inspecionar estratégia de execução
EXPLAIN QUERY PLAN SELECT ...;
EXPLAIN QUERY PLAN SELECT * FROM usuarios WHERE login = 'ana';
Uso ou não de índice
Compare com e sem índice
Otimize uma consulta lenta mentalmente
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
-- CRUD checklist
-- Create: INSERT
-- Read: SELECT/JOIN
-- Update: UPDATE
-- Delete: soft delete UPDATE ativo=0
Entregue pasta sql/ com schema, seed, consultas e backup.
Semana 6 de 12
Frontend do edital + formulários, validação e pequenos projetos
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | HTML semântico e formulários | 45' | 45' | 60' | 30' |
| Terça | CSS — layout e usabilidade | 45' | 45' | 60' | 30' |
| Quarta | JavaScript — validação e DOM | 45' | 45' | 60' | 30' |
| Quinta | Cliente/servidor e integração frontend conceitual | 45' | 45' | 60' | 30' |
| Sexta | Revisão Web + PROJETO 4 | 45' | 45' | 60' | 30' |
Por quê: Base de aplicações web e interfaces de sistemas corporativos.
start index.html (Windows)
Abrir página no navegador padrão
start arquivo.html
start index.html
Página renderizada
Abra e inspecione (F12)
Use DevTools para ver o DOM
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
<!DOCTYPE html>
<html lang="pt-br">
<head><meta charset="UTF-8"><title>Cadastro</title></head>
<body>
<h1>Cadastro de Usuário</h1>
<form id="formUser">
<label>Login <input name="login" required></label>
<label>E-mail <input type="email" name="email" required></label>
<button type="submit">Salvar</button>
</form>
</body>
</html>
Monte wireframe HTML do sistema usuários/produtos/pedidos.
Por quê: Interface utilizável reduz erros do usuário e suporte.
DevTools → Elements/Styles
Inspecionar e ajustar CSS ao vivo
F12 no navegador
Alterar margin/padding e observar
Feedback visual imediato
Ajuste espaçamento do form
Deixe o form usável em 360px de largura
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
form { max-width: 420px; display: grid; gap: 12px; }
label { display: grid; gap: 4px; font-weight: 600; }
input { padding: 8px; border: 1px solid #90A4AE; }
button { background: #0B3D91; color: #fff; border: 0; padding: 10px; }
Crie página de consulta com tabela estilizada.
Por quê: Validação client-side e interação são parte do desenvolvimento web do edital.
console.log() / debugger
Depurar JavaScript no navegador
console.log(valor)
console.log(form.login.value)
Valor exibido no Console
Logue o objeto do formulário no submit
Use breakpoint no handler
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
const form = document.getElementById("formUser");
form.addEventListener("submit", (e) => {
e.preventDefault();
const login = form.login.value.trim();
if (login.length < 3) {
alert("Login deve ter ao menos 3 caracteres");
return;
}
console.log({ login, email: form.email.value });
});
Valide e-mail com regex simples e senha mínima 8 caracteres.
Por quê: Preparar terreno para APIs REST da próxima semana.
curl (preview) / Invoke-WebRequest
Preparar prática de requisições HTTP
curl https://exemplo.com
curl -I https://example.com
Headers HTTP
Faça um GET de headers em site público
No PowerShell: Invoke-WebRequest -Uri ... -Method Head
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
// Mock CRUD
let usuarios = [];
function criar(u) { usuarios.push({ id: Date.now(), ...u, ativo: true }); }
function listar() { return usuarios.filter(u => u.ativo); }
function desativar(id) {
const u = usuarios.find(x => x.id === id);
if (u) u.ativo = false;
}
Ligue o HTML do cadastro ao mock CRUD e liste na tabela.
Por quê: Entregar aplicação web mínima funcional.
git add / commit do projeto web
Versionar frontend
git add web/ git commit -m "feat: CRUD web mock"
git commit -m "feat: validação de formulário"
Projeto web no histórico
Organize commits por feature
Crie branch feature-web e faça merge
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
<!-- Checklist de entrega PROJETO 4
[ ] index.html navegável
[ ] form validado em JS
[ ] listagem
[ ] exclusão lógica
[ ] README de uso
-->
Publicar pasta web/ pronta para demonstração local.
Semana 7 de 12
Cliente → API → Banco; GET/POST/PUT/DELETE; curl/PowerShell/Python
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Fundamentos de APIs REST e HTTP | 45' | 45' | 60' | 30' |
| Terça | Criar API simples (Python) + JSON | 45' | 45' | 60' | 30' |
| Quarta | API + Banco de Dados | 45' | 45' | 60' | 30' |
| Quinta | Autenticação, erros e integração frontend↔API | 45' | 45' | 60' | 30' |
| Sexta | Revisão APIs + PROJETOS 5 e 6 | 45' | 45' | 60' | 30' |
Por quê: Edital exige APIs, serviços web e integração entre sistemas.
curl -X GET URL
Consumir API via HTTP
curl -X METODO URL [-H header] [-d body]
curl -X GET https://jsonplaceholder.typicode.com/users/1
JSON do usuário
Faça GET e salve em arquivo
POST de um recurso mock
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# PowerShell
Invoke-RestMethod -Method GET -Uri "https://jsonplaceholder.typicode.com/users/1"
Documente 6 endpoints do seu domínio com método, path, body e status.
Por quê: Saber criar E consumir APIs — competência prática do programador.
curl -X POST -H "Content-Type: application/json" -d "{...}" URLEnviar JSON para API
curl -X POST URL -H "Content-Type: application/json" -d "{\"login\":\"ana\"}"curl -X POST http://127.0.0.1:8000/usuarios -H "Content-Type: application/json" -d "{\"login\":\"ana\"}"201 + JSON criado
Crie 3 usuários via POST
Atualize um com PUT
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Exemplo conceitual FastAPI
from fastapi import FastAPI
app = FastAPI()
usuarios = []
@app.get("/usuarios")
def listar():
return usuarios
@app.post("/usuarios", status_code=201)
def criar(u: dict):
usuarios.append(u)
return u
Adicione autenticação simples por token em header (conceito).
Por quê: Fluxo profissional completo Cliente → API → BD → JSON.
curl + SQL dump check
Validar efeito da API no banco
curl ... && sqlite3 app.db "SELECT * FROM usuarios;"
Após POST, SELECT deve mostrar linha
Persistência confirmada
Trace 1 POST até o SELECT
Endpoint de relatório com JOIN
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Pseudofluxo
# Cliente → POST /pedidos (JSON)
# API valida → BEGIN → INSERT pedido/itens → COMMIT
# API → 201 + JSON do pedido
Implemente /pedidos com itens e integridade FK.
Por quê: Segurança aplicada ao desenvolvimento e integração de sistemas.
curl -H "Authorization: Bearer TOKEN"
Chamar rota autenticada
curl URL -H "Authorization: Bearer <token>"
curl http://127.0.0.1:8000/usuarios -H "Authorization: Bearer demo"
200 se válido; 401 se inválido
Teste com e sem token
Expire o token e trate na UI
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
fetch("http://127.0.0.1:8000/usuarios", {
headers: { "Authorization": "Bearer demo" }
})
.then(r => {
if (!r.ok) throw new Error(r.status);
return r.json();
})
.then(data => console.log(data))
.catch(err => console.error(err));
Escreva política mínima: quem pode GET/POST/DELETE.
Por quê: Fechar API REST + app integrada a banco.
netstat -ano | findstr :8000
Verificar porta da API no Windows
netstat -ano | findstr :PORTA
netstat -ano | findstr :8000
Processo escutando a porta
Confirme se a API está up
Libere a porta encerrando processo antigo com segurança
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Coleção mínima de testes
# GET /health
# POST /usuarios
# GET /usuarios
# PUT /usuarios/{id}
# DELETE /usuarios/{id}
Entregar Postman/arquivo .http ou script PowerShell de teste da API.
Semana 8 de 12
Ciclo de vida, requisitos, UML, testes, depuração e versionamento
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Ciclo de vida, metodologias e requisitos | 45' | 45' | 60' | 30' |
| Terça | UML e modelagem de processos | 45' | 45' | 60' | 30' |
| Quarta | Testes, depuração e manutenção | 45' | 45' | 60' | 30' |
| Quinta | Git — ciclo completo obrigatório | 45' | 45' | 60' | 30' |
| Sexta | Revisão ES/UML/Testes/Git + desafio integrado | 45' | 45' | 60' | 30' |
Por quê: Atribuição central do Analista: levantamento, análise e especificação.
git clone
Copiar repositório existente
git clone URL
git clone https://github.com/org/projeto.git
Cópia local do projeto
Clone um repo público de estudo
Explore histórico com git log
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Template RF
# RF01 - O sistema deve permitir cadastro de usuários
# RF02 - O sistema deve autenticar usuários
# RNF01 - Senhas não devem ser armazenadas em texto puro
# RNF02 - Tempo de resposta de consulta < 2s (meta)
Situação do edital: controlar usuários, permissões, produtos e pedidos — entregue RF, RNF, fluxo e casos de uso.
Por quê: Edital exige casos de uso, classes, sequência, atividades e fluxogramas.
git checkout / git switch -c
Criar branch de documentação/modelagem
git switch -c docs-uml
git switch -c docs-uml
Branch nova
Commit dos diagramas em /docs
Abra PR mental: o que revisaria?
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Caso de uso: Autenticar Usuário
# Ator: Operador
# Pré: usuário cadastrado
# Fluxo: informar login/senha → validar → criar sessão
# Exceção: credencial inválida → mensagem e log
Modele manutenção corretiva vs evolutiva em cima do mesmo sistema.
Por quê: Testes unitários/integração/homologação e manutenção estão no edital.
python -m pytest (ou unittest)
Executar testes automatizados
python -m pytest -q
python -m pytest tests/
passed/failed
Crie 3 testes da ContaBancaria
Teste de API (integração) com cliente HTTP
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
def test_saque_ok():
c = ContaBancaria("Ana", 100)
c.sacar(40)
assert c.saldo == 60
def test_saque_insuficiente():
c = ContaBancaria("Ana", 10)
try:
c.sacar(50)
assert False, "deveria falhar"
except ValueError:
assert True
Entregue relatório: erro encontrado → causa → correção → teste.
Por quê: Versionamento com Git é exigência explícita (Analista Programador).
git pull / git push / git reset (cuidado)
Sincronizar e desfazer com critério
git pull git push git reset --soft HEAD~1
git reset --soft HEAD~1 # desfaz commit mantendo arquivos
Histórico ajustado localmente
Pratique diff + reset --soft em branch de teste
Escreva guia interno de Git do time (1 página)
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
git init
git add .
git commit -m "chore: projeto inicial"
# altere arquivos
git diff
git add .
git commit -m "feat: regra de pedido"
git switch -c feature-desconto
# altere e commit
git switch main
git merge feature-desconto
PROJETO 7: repositório organizado do sistema integrado com tags de versão v0.1.
Por quê: Unir análise + código + qualidade + versionamento.
git log --graph --oneline --all
Visualizar histórico e merges
git log --graph --oneline --all
git log --graph --oneline --all
Grafo de branches
Capture print do grafo da semana
Explique cada nó do grafo
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Pacote de entrega da semana
# /docs requisitos + UML
# /tests
# /src
# histórico Git limpo
Pacote completo: requisitos + UML + código testado + Git.
Semana 9 de 12
TCP/IP, protocolos, serviços e comandos Windows/Linux do cotidiano de suporte
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Fundamentos de redes e arquitetura TCP/IP | 45' | 45' | 60' | 30' |
| Terça | Protocolos e diagnóstico (ping, tracert, netstat) | 45' | 45' | 60' | 30' |
| Quarta | DNS, DHCP, ARP e resolução de nomes | 45' | 45' | 60' | 30' |
| Quinta | Comandos Linux equivalentes + systeminfo/whoami | 45' | 45' | 60' | 30' |
| Sexta | Revisão de redes + desafio integrado | 45' | 45' | 60' | 30' |
Por quê: Edital exige redes, TCP/IP e administração de rede lógica.
ipconfig
Exibir configuração IP no Windows
ipconfig /all
ipconfig /all
IPv4, máscara, gateway, DNS
Anote IPv4 e DNS
Explique cada campo relevante do /all
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Interpretação mental de ipconfig /all
# IPv4, Gateway e DNS Servers
Compare saída de ipconfig com ip addr (Linux) conceitualmente.
Por quê: Suporte à plataforma de rede lógica exige diagnóstico.
ping / tracert / netstat
Diagnosticar conectividade, rota e portas
ping host tracert host netstat -ano
ping 8.8.8.8 tracert www.google.com netstat -ano | findstr :443
Latência, hops e conexões
Execute os 3 e interprete
Relacione uma porta aberta ao serviço da sua API
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
ping -n 4 127.0.0.1
tracert -d 8.8.8.8
netstat -ano
Elabore um fluxo: site não abre — DNS, gateway, firewall ou serviço?
Por quê: Serviços essenciais de rede citados no escopo de infraestrutura.
nslookup / arp / hostname
Resolver nomes, ver ARP e hostname
nslookup dominio arp -a hostname
nslookup example.com
Endereço IP associado ao nome
Resolva 3 domínios
No Linux: dig/nslookup e compare
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
nslookup example.com
hostname
arp -a
Monte tabela: sintoma → comando → interpretação.
Por quê: Edital cita Windows Server e Linux.
systeminfo / whoami / ip addr
Inventário e identidade; IP no Linux
systeminfo whoami ip addr
systeminfo | findstr /B /C:"OS Name" /C:"Total Physical Memory"
Dados do SO e hardware
Extraia 5 informações úteis de suporte
Crie cheat-sheet bilíngue Windows/Linux
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
whoami
systeminfo
# Linux:
# ip addr
# ss -tulpn
# ip route
Simule atendimento: usuário sem rede — roteiro de comandos.
Por quê: Unir diagnóstico de rede com aplicação web/API.
curl -I / Invoke-WebRequest -Method Head
Verificar disponibilidade HTTP
curl -I http://127.0.0.1:8000/health
curl -I http://127.0.0.1:8000/health
Status HTTP e headers
Teste health da API
Documente runbook de indisponibilidade
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
curl -I http://127.0.0.1:8000/health
netstat -ano | findstr :8000
Runbook: sintoma → 5 comandos → possíveis causas → ação.
Semana 10 de 12
Windows Server/Linux, permissões, autenticação, firewall, backup e Lei 13.709/2018
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | SO: usuários, grupos, permissões e processos | 45' | 45' | 60' | 30' |
| Terça | Segurança: autenticação, autorização e controle de acesso | 45' | 45' | 60' | 30' |
| Quarta | Firewall, criptografia, backup e continuidade | 45' | 45' | 60' | 30' |
| Quinta | LGPD (Lei 13.709/2018) + segurança em aplicações e BD | 45' | 45' | 60' | 30' |
| Sexta | Revisão SO/Segurança + PROJETO 8 | 45' | 45' | 60' | 30' |
Por quê: Administração básica de SO e permissões está no edital.
Get-Service / Get-Process
Listar serviços e processos no Windows
Get-Service Get-Process | Sort-Object CPU -Descending
Get-Service | Where-Object {$_.Status -eq 'Running'}Serviços em execução
Liste 10 serviços Running
Identifique serviço relacionado a banco/web se existir
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
Get-Process | Select-Object -First 10 Name, Id, CPU
Get-Service | Where-Object Status -eq 'Running' | Select -First 10
Política: quem pode instalar serviço e por quê.
Por quê: Definir procedimentos e controles de segurança é atribuição do cargo.
whoami /groups (ou whoami /all)
Ver grupos do usuário Windows
whoami /groups
whoami /all
SID e grupos
Interprete seus grupos
Proponha grupos do sistema de pedidos
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Papéis
# admin: CRUD total + usuários
# operador: CRUD pedidos/produtos
# leitor: GET relatórios
Situação: sistema com níveis de acesso — riscos, permissões, autenticação, controles, política básica.
Por quê: Itens explícitos de segurança da informação no edital.
netsh advfirewall show allprofiles
Ver estado do firewall Windows
netsh advfirewall show allprofiles
netsh advfirewall show allprofiles
Estado On/Off por perfil
Verifique o perfil ativo
Proponha regra: só localhost no BD
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Política mínima
# BD: bind localhost ou rede privada
# API: HTTPS em produção (conceito)
# Backup diário + restore mensal testado
Escreva plano de continuidade de 1 página para o sistema de pedidos.
Por quê: A Lei nº 13.709/2018 e alterações estão mencionadas no material do edital.
Select-String / findstr em logs (cuidado)
Auditar se logs expõem segredos
Select-String -Path logs\*.log -Pattern 'senha|password|token'
Select-String -Path .\*.log -Pattern 'token'
Ocorrências suspeitas
Varra logs do projeto
Crie regra: nunca logar senha/token
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Checklist LGPD técnico (prático)
# [ ] minimização de campos
# [ ] acesso por perfil
# [ ] autenticação
# [ ] backup protegido
# [ ] logs sem segredos
Documento: inventário de dados pessoais do sistema de estudos.
Por quê: Fechar autenticação e controle de acesso de ponta a ponta.
icacls (Windows) / chmod (Linux)
Ver/ajustar permissões de arquivos
icacls pasta chmod 640 arquivo
icacls .\dados
ACLs/permissões
Verifique permissões da pasta do BD
Aplique menor privilégio na pasta de backups
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Entrega PROJETO 8
# - login
# - papéis
# - rotas protegidas
# - backup script
# - política básica.md
Apresente o sistema seguro em demonstração de 10 minutos.
Semana 11 de 12
PDTI, ITIL, COBIT, IaaS/PaaS/SaaS, ética, sigilo e suporte
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Governança de TI, PDTI e gestão de projetos | 45' | 45' | 60' | 30' |
| Terça | ITIL e COBIT (noções) + gerenciamento de serviços | 45' | 45' | 60' | 30' |
| Quarta | Computação em nuvem, virtualização e containers | 45' | 45' | 60' | 30' |
| Quinta | Ética, sigilo, documentação e atendimento ao usuário | 45' | 45' | 60' | 30' |
| Sexta | Revisão governança/cloud/ética + desafio integrado | 45' | 45' | 60' | 30' |
Por quê: Bloco explícito do edital de Analista de Sistemas.
Não há comando único — artefactos
Produzir documentação de governança
Modelo: objetivo → escopo → riscos → cronograma → indicadores
PDTI_resumo.md
Documento direcionador
Escreva objetivos de TI para 90 dias
Defina 3 indicadores de sucesso
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Mini PDTI
# 1. Diagnóstico
# 2. Objetivos
# 3. Projetos prioritários
# 4. Riscos
# 5. Indicadores
Caso: contratar desenvolvimento externo — o que exigir em contrato/serviço.
Por quê: Edital pede noções de ITIL e COBIT e gerenciamento de serviços de TI.
Get-EventLog / journalctl (conceito)
Apoiar diagnóstico de incidentes
Get-EventLog -LogName System -Newest 20
Get-EventLog -LogName Application -Newest 20
Eventos recentes
Colete evidências de um 'incidente' simulado
Preencha relatório de incidente com linha do tempo
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Ticket
# ID / Abertura / Impacto / Urgência
# Sintoma / Evidências (comandos)
# Ação / Resolução / Pendências
Simulado: queda do BD — incidente ITIL + controles COBIT (acesso/backup).
Por quê: Bloco de cloud e tecnologias modernas do edital.
docker --version (se instalado) / systeminfo
Verificar suporte a virtualização/containers no ambiente
docker --version systeminfo | findstr /C:"Hyper-V"
docker --version
Ferramenta disponível ou não
Registre o que há no seu PC
Proponha deploy PaaS conceitual da API
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
Modelo | Responsabilidade | Exemplo
IaaS | Infraestrutura | Servidor virtual
PaaS | Plataforma | Ambiente p/ app
SaaS | Software | App pronta
Justifique escolha IaaS ou PaaS para o CRUD do concurso.
Por quê: Ética/sigilo e suporte/treinamento aparecem nas atribuições e no conteúdo.
Out-File / Set-Content (documentar)
Registrar procedimentos e evidências
"texto" | Out-File relatorio.md -Encoding utf8
"Incidente API 12/08" | Out-File incidente.md
Arquivo de relatório
Gere relatório do último lab
Modelo padrão de atendimento do setor
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Manual do usuário (índice)
# 1. Login
# 2. Cadastros
# 3. Pedidos
# 4. Dúvidas frequentes
# 5. Como abrir chamado
Situação-problema: colega pede senha de produção — analise eticamente e responda.
Por quê: Consolidar o bloco de gestão e comportamento profissional.
git tag v1.0
Marcar versão homologável
git tag -a v1.0 -m "baseline estudos semana 11"
git tag -a v1.0 -m "release estudos"
Tag no histórico
Etiquete o estado atual
Escreva notas de release
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Pacote semana 11
# PDTI_mini.md
# catalogo_servicos.md
# comparativo_cloud.md
# manual_usuario.md
# etica_casos.md
Apresentação executiva de 5 slides (ou seções) para homologação.
Semana 12 de 12
Projeto integrador completo + simulados + revisão dos pontos fracos (<7/10)
| Dia | Conteúdo | Teoria | Exercícios | Prática | Revisão |
|---|---|---|---|---|---|
| Segunda | Projeto integrador — requisitos, modelo e Git | 45' | 45' | 60' | 30' |
| Terça | Implementação intensiva — POO + Web + API + BD | 45' | 45' | 60' | 30' |
| Quarta | Segurança, redes, SO e operação | 45' | 45' | 60' | 30' |
| Quinta | Simulado misto + correção de pontos fracos | 45' | 45' | 60' | 30' |
| Sexta | Revisão geral do ciclo + desafio integrador final | 45' | 45' | 60' | 30' |
Por quê: Unir engenharia + versionamento antes da implementação final.
git switch -c release-integrador
Isolar entrega final
git switch -c release-integrador
git switch -c release-integrador
Branch de release
Crie a branch
Defina commits atômicos do dia
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# MVP integrador
# Web + API + BD + Auth + Git + docs + testes
Checklist de cobertura do edital (marque o que o projeto demonstra).
Por quê: Prática concentrada gera capacidade real.
curl + sqlite3/psql smoke test
Validar integração contínua
curl ... && sql SELECT COUNT(*)
POST usuário → SELECT confirma
Fluxo íntegro
Smoke test completo
Automatize smoke test em .ps1
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# smoke.ps1 (ideia)
# Invoke-RestMethod POST /usuarios
# Invoke-RestMethod GET /usuarios
Cobrir o fluxo feliz de pedido ponta a ponta.
Por quê: Fechar pilares de infraestrutura e segurança no projeto.
ipconfig + netstat + whoami + backup
Pacote operacional do dia
Sequência do runbook
ipconfig → netstat :porta → backup BD
Evidências de operação
Anexe saídas no /docs/evidencias
Simule incidente e registre
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# evidencias/
# 01_ipconfig.txt
# 02_netstat.txt
# 03_backup.log
# 04_restore_ok.txt
Assine (registre) a política básica de segurança do MVP.
Por quê: Regra de adaptação: domínio <7 exige reforço antes de encerrar.
Comando do tema mais fraco
Reforço deliberado
Depende do registro de desempenho
Se SQL <7: revisitar JOINs com EXPLAIN
Melhora mensurável
Execute 5 tarefas do tema crítico
Suba a nota do tema fraco em autoavaliação honesta
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Registro
# Tema: ____ Nota antes: __ Depois: __
# Erros: ...
# Plano: ...
Criar deck de 20 perguntas de recuperação ativa personalizadas.
Por quê: Fechar o ciclo de 12 semanas com evidência de capacidade prática.
git log --oneline --graph --all
Evidenciar histórico profissional do projeto
git log --oneline --graph --all
git log --oneline --graph --all
Linha do tempo da evolução
Revise a qualidade das mensagens
Escreva retrospectiva da jornada (1 página)
Explique → altere → corrija → melhore. Não abra gabarito antes de tentar.
# Capacidade final (auto check)
# [ ] explicar conceitos
# [ ] resolver exercícios
# [ ] escrever código
# [ ] executar comandos
# [ ] interpretar resultados
# [ ] achar/corrigir erros
# [ ] modelar sistemas
# [ ] SQL
# [ ] Git
# [ ] APIs
# [ ] redes
# [ ] segurança
# [ ] BD
# [ ] apps
# [ ] documentar
# [ ] analisar problemas
Entrega final: repositório + docs + evidências + nota de domínio por módulo.
Visão rápida para revisão — mesma lógica dos DOCX, agora interativa.
Evoluem do fundamental ao sistema autenticado com Git e segurança.
Sistema de notas + menu + validação
Usuários, produtos, pedidos, undo
Schema, seed, views, backup
HTML/CSS/JS + validação
JSON, status HTTP, curl
Web + API + BD
Ciclo completo + tags
Auth, RBAC, política, LGPD
Quando o tema exigir mais prática, reduza teoria e aumente o laboratório.