CARTA DE ABERTURA
ATENÇÃO, TURMA DO 3º ANO! 🕶️🔥
Senta que lá vem história.
Vocês já construíram castelos digitais. Já descobriram que esses castelos foram feitos PARA CONTROLAR vocês. Já planejaram a revolução. Já executaram. Já codificaram o futuro.
Agora, chega.
CHEGA.
Este é o ÚLTIMO BIMESTRE de vocês no Ensino Médio. A última janela. A última chance de olhar para trás e ver o quanto mudaram e olhar para frente e ver o que ainda podem construir.
Este bimestre, vocês não vão mais estudar sobre o mundo digital. Vocês vão CRIAR O MUNDO DIGITAL QUE VOCÊS QUEREM VER. E não, não estou falando de um site genérico. Estou falando de um PROJETO COMPLETO. Do zero. No ar. Com a cara de vocês. E COM PROPÓSITO.
Vocês vão:
- DESMONTAR a Matrix de uma vez por todas entender quem realmente manda no feed de vocês (spoiler: não são vocês).
- CRIAR um projeto que não é só código é um manifesto. Um grito. Uma revolução silenciosa (mas codificada).
- APRESENTAR esse projeto para o mundo e provar que vocês não são mais apenas usuários vocês são ARQUITETOS DO FUTURO DIGITAL.
E no final? Vocês vão ter um PRODUTO FINAL no ar. Para mostrar para o mundo. Para provar que vocês são capazes de CRIAR não só consumir.
A revolução não vai ser televisionada. Ela vai ser CODIFICADA.
E, spoiler: o código que vocês vão escrever NÃO vai ser bonito. Vai ser funcional. Vai ser caótico. Vai ser VOCÊS.
MAPEAMENTO BIMESTRE
| Semana | Título da Aula (e o subtítulo irreverente) | Habilidades BNCC (Matemática) | Habilidades BNCC (LP) | Habilidades BNCC (Outras) | Pilares do Pensamento Computacional |
|---|---|---|---|---|---|
| 1 | "O Último Planejamento" Ou: como transformar sua revolta em um projeto que não vai morrer no GitHub | EM13MAT101 Interpretar criticamente situações que envolvem variação de grandezas | EM13LP01 Analisar contexto de produção de textos | EM13CO07 Planejar e executar projetos de software | Abstração modelar o problema e definir o MVP |
| 2 | "HTML: A Estrutura do Adeus" Ou: como construir a espinha dorsal do seu projeto sem chorar (ou chorando, a gente não julga) | EM13MAT102 Analisar tabelas e gráficos em diferentes mídias | EM13LP02 Estabelecer relações entre partes de um texto | EM13CO03 Utilizar ferramentas de programação | Decomposição estruturar a página em partes |
| 3 | "CSS: O Estilo da Despedida" Ou: como fazer seu projeto ficar bonito (ou intencionalmente feio, se for a vibe) | EM13MAT301 Resolver problemas com equações e sistemas | EM13LP04 Analisar efeitos de sentido de recursos linguísticos | EM13CO05 Utilizar recursos computacionais de forma crítica | Reconhecimento de Padrões estilização consistente e design system |
| 4 | "JavaScript: A Mágica que Não Acaba" Ou: como fazer seu projeto ganhar vida (e talvez te fazer chorar de alegria) | EM13MAT302 Construir modelos matemáticos para descrever fenômenos | EM13LP05 Produzir textos em diferentes gêneros | EM13CO06 Compreender variáveis, funções e eventos | Algoritmos lógica de programação e sequenciamento |
| 5 | "DOM: O Controle Remoto do Fim" Ou: como manipular cada pedacinho do seu projeto como um deus digital | EM13MAT201 Interpretar dados estatísticos e implicações éticas | EM13LP06 Analisar efeitos de sentido em diferentes textos | EM13CO04 Reconhecer e aplicar princípios da computação | Abstração + Algoritmos manipulação da árvore DOM |
| 6 | "Eventos: Quando o Usuário Toca no Fim" Ou: como fazer seu projeto reagir a cliques, teclas e (quem sabe) lágrimas | EM13MAT303 Resolver problemas com funções polinomiais | EM13LP07 Analisar marcas de posicionamento do enunciador | EM13CO02 Construir soluções computacionais | Decomposição + Algoritmos eventos e respostas |
| 7 | "Dados e Arrays: A Biblioteca do Fim" Ou: como organizar a bagunça dos seus dados em listas que fazem sentido | EM13MAT304 Construir modelos matemáticos para situações do cotidiano | EM13LP08 Produzir textos com adequação ao contexto | EM13CO05 Utilizar recursos computacionais de forma crítica | Abstração + Reconhecimento de Padrões arrays e loops |
| 8 | "Funções: O Exército do Adeus" Ou: como ensinar seu código a fazer truques novos sem repetir a mesma coisa 500 vezes | EM13MAT401 Aplicar conceitos matemáticos em outras áreas | EM13LP09 Produzir textos em diferentes gêneros | EM13CO07 Planejar e executar projetos de software | Algoritmos modularização com funções |
| 9 | "Debug e Polimento: A Batalha Final" Ou: como transformar um projeto quebrado em uma obra-prima (ou pelo menos em algo que não explode) | EM13MAT402 Utilizar raciocínio lógico e linguagem matemática | EM13LP10 Revisar e editar textos produzidos | EM13CO09 Refletir sobre o processo de construção | Decomposição + Algoritmos depuração e refatoração |
| 10 | "Lançamento Oficial: O Mundo Vai Ver (e Chorar)" Ou: como apresentar sua revolução para o mundo e sair de cabeça erguida | EM13MAT501 Comunicar ideias matemáticas de forma clara | EM13LP11 Apresentar e defender pontos de vista | EM13CO08 Comunicar e compartilhar soluções computacionais | Todos os Pilares apresentação integrada e reflexão |
PLANO SINTÉTICO
| Semana | Título da Aula | Conceito | Atividade Principal |
|---|---|---|---|
| 1 | "O Último Planejamento" | Um bom projeto não começa com código começa com uma pergunta que dói: "Que problema eu quero resolver?" | "O Mapa da Revolução" cada grupo escolhe um problema real da cultura digital (vício em redes, fake news, cyberbullying, privacidade, vigilância) e planeja um projeto completo para resolvê-lo, aplicando os 4 Pilares do PC e definindo o MVP. |
| 2 | "HTML: A Estrutura do Adeus" | HTML é a espinha dorsal sem ele, o site é um esqueleto sem carne. E esqueleto não convence ninguém. | "Construindo a Base" os grupos constroem a estrutura HTML do seu projeto, com todas as seções necessárias (cabeçalho, navegação, conteúdo principal, seções, rodapé), usando tags semânticas e boas práticas de acessibilidade. |
| 3 | "CSS: O Estilo da Despedida" | CSS transforma um bloco de texto em uma experiência visual que gruda na retina. Feio até funciona, mas bonito encanta. | "Operação Beleza" cada grupo estiliza seu projeto com personalidade, usando variáveis CSS, Flexbox/Grid, responsividade e um design system próprio. |
| 4 | "JavaScript: A Mágica que Não Acaba" | JS é a alma da interatividade o site responde ao usuário como um ser vivo. Sem JS, é só um cartaz bonito. | "O Despertar" os grupos adicionam interatividade básica ao projeto: botões que fazem coisas, mensagens personalizadas, contadores, e a primeira função que realmente faz algo útil. |
| 5 | "DOM: O Controle Remoto do Fim" | O DOM é a árvore da página manipular é ter controle remoto sobre cada elemento. Você é o jardineiro. | "Caça ao Elemento" os grupos aprendem a selecionar, modificar, criar e remover elementos via JS, dominando `getElementById`, `querySelector`, `classList` e `createElement`. |
| 6 | "Eventos: Quando o Usuário Toca no Fim" | Eventos são cliques, teclas, mouse dominá-los é dominar a interação. O usuário toca, o site responde. | "A Hora do Clique" os grupos adicionam eventos completos ao projeto: cliques em botões, teclas pressionadas (atalhos), mouse passando por cima de elementos, e feedback visual imediato. |
| 7 | "Dados e Arrays: A Biblioteca do Fim" | Arrays são listas organizadas para guardar dados sem eles, o código vira um caos. E caos é inimigo da revolução. | "Organizando o Caos" os grupos implementam arrays para gerenciar dados no projeto: lista de tarefas, itens, posts, etc., usando `push`, `pop`, `shift`, `unshift`, `splice` e percorrendo com `forEach`. |
| 8 | "Funções: O Exército do Adeus" | Funções reutilizam código e deixam tudo mais limpo são os soldados da sua revolução. Código repetido é o caminho mais curto para o inferno do desenvolvedor. | "Modularizando a Revolução" os grupos refatoram o código do projeto para usar funções, identificando partes repetidas e transformando-as em funções reutilizáveis com parâmetros e retorno. |
| 9 | "Debug e Polimento: A Batalha Final" | Testar, encontrar bugs e refatorar são partes do processo não são fracasso, são aprendizado. Debug é o que separa os amadores dos profissionais. | "Caça aos Bugs" os grupos testam, depuram e polinem seus projetos, usando `console.log`, `debugger` e ferramentas do DevTools para identificar e corrigir erros de sintaxe, lógica e referência. |
| 10 | "Lançamento Oficial: O Mundo Vai Ver (e Chorar)" | Apresentar o projeto final e celebrar a jornada a revolução não é revolução se ninguém vê. | "A Grande Estreia" apresentações no formato Shark Tank, com pitch de 3 minutos, demonstração ao vivo, perguntas da banca, autoavaliação, premiação nas categorias: 🏆 Mais Criativo, 🧠 Mais Técnico, 🎨 Mais Bonito, 🤯 Mais Impactante, ❤️ Mais Empático, 🔥 Mais Revolucionário. |
PLANOS DE AULA DETALHADOS
Clique em cada semana e veja os detalhes completos com códigos comentados, minuto a minuto e muito mais.
🎯 Título
"O Último Planejamento" Ou: como transformar sua revolta em um projeto que não vai morrer no GitHub (e olha que 92% dos projetos open source morrem no primeiro ano, mas vocês vão ser os 8% que sobrevivem porque vocês são especiais. Não, não é papo de coach. É estatística.)
🎯 Objetivos Operacionais
- Compreender que um bom projeto não começa com código começa com uma pergunta que dói: "Que problema eu quero resolver?" (e não, "o que eu quero criar" não é a mesma coisa criar por criar é vaidade, resolver problema é revolução).
- Identificar um problema real da cultura digital que afeta a comunidade escolar: vício em redes, fake news, cyberbullying, privacidade, vigilância digital, desinformação algorítmica, saúde mental e redes sociais e não vale falar de "vício em celular" sem dados, sem história, sem sangue nos olhos.
- Planejar um projeto completo em equipe definindo: objetivo, público-alvo (e não vale "todo mundo" todo mundo é ninguém), funcionalidades essenciais (MVP), cronograma factível e divisão de tarefas como um verdadeiro founder de startup.
- Aplicar os 4 Pilares do Pensamento Computacional ao planejamento mas não como decoreba, como ferramenta viva para transformar caos em ordem.
- Bônus: entender que planejamento não é perda de tempo é o que separa os que sonham dos que realizam. E, spoiler: sonhar é barato, realizar é caro. Vocês vão pagar o preço. E vai valer cada centavo.
📚 Conteúdo Programático
- O que é um projeto? Definição, etapas, a importância de começar com o "porquê" (Sim, Simon Sinek, vocês vão ouvir isso até cansar. E vai fazer sentido. O "porquê" é o que sustenta o projeto quando o "como" fica difícil).
- Como escolher um problema que vale a pena Identificação de problemas reais da cultura digital na comunidade escolar. Não vale problema inventado. Vale problema que dói em alguém.
-
Os 4 Pilares do PC aplicados ao planejamento:
- Decomposição: dividir o projeto em partes menores (HTML, CSS, JS, design, conteúdo)
- Reconhecimento de Padrões: identificar padrões em projetos similares
- Abstração: definir o essencial do projeto o MVP (Produto Mínimo Viável)
- Algoritmos: criar um cronograma passo a passo
- Design Thinking aplicado à tecnologia Empatia, definição, ideação, prototipagem, teste.
- O MVP (Produto Mínimo Viável) a versão mais simples que ainda funciona.
- Cultura Digital e Cidadania Digital Compreender que todo projeto tecnológico carrega uma dimensão ética e política. Como bem define o Referencial Curricular do Paraná (RCP-PR), a Cultura Digital compreende "as relações humanas que são fortemente mediadas pelas tecnologias e comunicações digitais". Não se trata apenas de usar tecnologia trata-se de entender tecnologia, suas implicações e seu poder de transformação social.
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT101 | Interpretar criticamente situações que envolvam a variação de grandezas, pela análise dos gráficos das funções representadas e das taxas de variação, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP01 | Analisar o contexto de produção, circulação e recepção de textos, considerando as diferentes linguagens, mídias e suportes. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| Código | Habilidade |
|---|---|
| EM13CO01 | Explorar e construir a solução de problemas por meio da reutilização de partes de soluções existentes. |
| EM13CO04 | Reconhecer e aplicar os princípios da abstração, decomposição, reconhecimento de padrões e algoritmos na resolução de problemas. |
| EM13CO07 | Planejar e executar projetos de desenvolvimento de software, considerando aspectos como usabilidade, acessibilidade, ética e sustentabilidade. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR estrutura a Educação Digital nos três eixos da BNCC-Computação: Pensamento Computacional, Mundo Digital e Cultura Digital. O RCP-PR orienta que a Educação Digital vá "além da transmissão de conhecimentos", promovendo protagonismo e autoria na vida pessoal e coletiva. A Cultura Digital é um dos três eixos do complemento da BNCC que trata da Computação, homologado pelo MEC em 2022.
"O Referencial Curricular do Paraná segue a estrutura da BNCC, ressaltando a realidade paranaense no currículo. O objetivo deste documento é estabelecer direitos de aprendizagem a todos os estudantes do estado em uma perspectiva de equidade."
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Abstração | Os alunos abstraem o problema escolhido para um modelo simplificado, definindo o MVP o que é essencial e o que pode esperar (ou ser jogado fora com coragem). |
| Decomposição | Decompõem o projeto em partes menores: estrutura (HTML), estilo (CSS), interatividade (JS), design, conteúdo, testes. |
| Reconhecimento de Padrões | Identificam padrões em projetos similares (o que funciona, o que não funciona) e aplicam ao seu. |
| Algoritmos | Criam um cronograma passo a passo para o desenvolvimento do projeto. |
💻 Código Comentado Planejamento em JavaScript
(Nesta semana, o "código" é o planejamento. Mas que fique claro: o planejamento é o código mais importante que vocês vão escrever.)
// ================================================================
// SEMANA 1 O ÚLTIMO PLANEJAMENTO
// "Se você não sabe onde quer chegar, qualquer caminho serve."
// E qualquer caminho te leva a lugar nenhum.
// ================================================================
// ================================================================
// PASSO 1: Defina o PROBLEMA que você quer resolver
// Não vale problema genérico. Vale problema que DÓI.
// ================================================================
const problema = {
descricao: "Os alunos do 3º ano passam em média 5h/dia em redes sociais, com impactos na saúde mental e no rendimento escolar.",
afeta: "estudantes do último ano do Ensino Médio",
impacto: "ansiedade, depressão, queda no rendimento, isolamento social",
dados: "pesquisa com 50 colegas mostrou que 85% se sentem ansiosos após 2h de rolagem",
historia: "A Ana deixou de estudar para o vestibular porque passava 6h por dia no TikTok"
};
// ================================================================
// PASSO 2: Aplique os 4 PILARES para estruturar sua solução
// ================================================================
const pilares = {
abstracao: {
oQueEssencial: "Um sistema que monitora e limita o tempo de tela com gamificação",
oQuePodeEsperar: "Sistema de recomendação de conteúdo saudável, chat comunitário",
mantra: "Feito é melhor que perfeito. Perfeito é inimigo do feito."
},
decomposicao: {
estrutura: "HTML cabeçalho, dashboard, configurações, rodapé",
estilo: "CSS cores calmas, tipografia amigável, interface minimalista",
interatividade: "JS temporizador, bloqueio de apps, relatórios de uso",
design: "Wireframe no papel antes de codificar",
conteudo: "Base de dados com atividades alternativas saudáveis"
},
reconhecimentoDePadroes: {
exemplos: "Apps como Forest, Digital Wellbeing, Space",
oQueFunciona: "Gamificação, feedback visual, recompensas",
oQueNaoFunciona: "Textão explicativo, interfaces complexas"
},
algoritmos: {
passo1: "Semana 1-2: Planejamento e estrutura HTML",
passo2: "Semana 3: Estilização CSS",
passo3: "Semana 4-6: Lógica JS e interatividade",
passo4: "Semana 7-8: Arrays e funções",
passo5: "Semana 9: Testes e correções",
passo6: "Semana 10: Apresentação"
}
};
// ================================================================
// PASSO 3: Defina o MVP (Produto Mínimo Viável)
// ================================================================
const mvp = {
obrigatorio: [
"Dashboard com tempo de tela atual",
"Botão 'Iniciar Bloqueio' que ativa um temporizador",
"Exibição de estatísticas (tempo total, média diária)",
"Design responsivo (funciona no celular)"
],
desejavel: [
"Histórico de uso diário",
"Ranking de 'dias de sucesso'",
"Notificações de alerta"
],
corte: "Gamificação avançada e sistema de recompensas fica para a versão 2.0"
};
// ================================================================
// PASSO 4: Perguntas que vão salvar seu projeto
// ================================================================
const perguntasQueDoem = [
"Qual é a pergunta que seu projeto responde?",
"Quem vai usar isso? (E não vale 'todo mundo' todo mundo é ninguém)",
"O que acontece se o usuário fizer TUDO ERRADO? Seu projeto sobrevive?",
"Qual é a parte mais difícil de fazer? (Encare ela primeiro)",
"O que vocês vão fazer se não conseguirem fazer a parte mais difícil?",
"Por que VOCÊS se importam com isso?"
];
// ================================================================
// PASSO 5: Cultura Digital Por que isso importa?
// ================================================================
const culturaDigital = {
oQueE: "Não é sobre usar tecnologia. É sobre ENTENDER tecnologia.",
porQueImporta: "Porque tecnologia não é neutra. Ela reflete valores. Como afirma o RCP-PR, a Cultura Digital envolve 'as relações humanas que são fortemente mediadas pelas tecnologias e comunicações digitais'.",
oQueVocesVaoFazer: "Construir algo que NÃO controla as pessoas, mas as LIBERTA.",
desafio: "Seu projeto vai vigiar ou vai proteger? Vai manipular ou vai conscientizar?"
};
console.log("🚀 PLANEJAMENTO CONCLUÍDO. AGORA É MÃO NA MASSA.");
console.log("⚠️ Lembre-se: o planejamento não é o fim é o COMEÇO.");
console.log("🔥 A revolução não vai ser televisionada. Vai ser CODIFICADA.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Inspira 🚀 | Professor entra com energia de palco, óculos escuros, trilha sonora de filme de despedida: "Vocês passaram 3 anos entendendo o problema. Agora é hora de RESOLVÊ-LO. Esta é a ÚLTIMA CHANCE de vocês. Não é mais sobre reclamar é sobre AGIR. E agir começa com um PLANO." |
| 5-10 | A Pergunta que Tudo Muda ❓ | Professor escreve no quadro em letras garrafais: "QUE PROBLEMA EU QUERO RESOLVER?" "Um bom projeto não começa com código. Começa com uma PERGUNTA. Se você não sabe qual problema está resolvendo, você está só digitando teclas aleatórias." |
| 10-15 | Brainstorm de Problemas 💡 | Em grupos de 4-5, os alunos listam problemas REAIS da cultura digital que afetam a comunidade escolar. Regra: nada de problemas genéricos. "Se não tem dado, não tem problema. Se não tem história, não tem dor." |
| 15-20 | Escolha do Desafio 🎯 | Cada grupo escolhe UM problema para resolver. Critérios: (1) é real? (2) afeta pessoas reais? (3) é viável resolver em 10 semanas? "Escolham algo que VOCÊS se importam. Porque se vocês não se importam, ninguém vai." |
| 20-30 | Aplicação dos 4 Pilares 🧩 | Cada grupo produz um mapa visual mostrando como cada pilar será aplicado. Professor circula e provoca: "Mostrem que vocês entendem a ferramenta. Não é sobre decorar nome é sobre USAR." |
| 30-38 | O Plano da Revolução 📋 | Cada grupo define: (1) Objetivo do projeto (UMA frase), (2) Público-alvo (específico), (3) Funcionalidades principais (MVP), (4) Divisão de tarefas, (5) Cronograma. |
| 38-45 | Pitch da Revolução 🎤 | Cada grupo apresenta sua ideia em 2 minutos para a turma. A turma vota nas melhores ideias. "Se vocês não conseguirem convencer a turma, não vão conseguir convencer o mundo." |
| 45-48 | Check-in da Alma 💪 | "Como você se sente agora que tem um plano? O medo é normal. O que importa é o que você faz com ele." |
| 48-50 | Fechamento + Provocação 🚀 | "O planejamento está feito. Na semana que vem: MÃO NA MASSA. E não se esqueçam: FEITO É MELHOR QUE PERFEITO." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Forneça materiais em braille ou áudio; use fontes grandes (mínimo 24px) e alto contraste; descreva os mapas e cronogramas verbalmente. |
| Deficiência Auditiva | Use feedback visual em todas as instruções; disponibilize roteiro escrito COMPLETO com antecedência; use intérprete de Libras se disponível. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos e flexíveis; garanta que todos os materiais estejam ao alcance. |
| TDAH | Divida em sprints de 5 minutos com intervalos; use cronômetros visuais GIGANTES; checklist física para cada etapa. |
| TEA | Envie as instruções com antecedência (24h antes); use perguntas estruturadas e previsíveis; ambiente com poucos estímulos sensoriais. |
| Altas Habilidades | Desafio extra: "Além do protótipo, desenvolva um plano de negócios ou um modelo de sustentabilidade para o projeto." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Escolha do Desafio | Escolheu um problema relevante, bem definido, com impacto real e dados que comprovem sua existência. | 0-2 |
| Aplicação dos Pilares | Aplicou corretamente os 4 pilares no mapa, com justificativas claras e exemplos concretos. | 0-3 |
| Planejamento | Criou um plano de projeto coerente, completo, com prazos realistas e divisão de tarefas clara. | 0-3 |
| Pitch | Apresentou a ideia de forma clara, convincente, envolvente e no tempo estipulado. | 0-2 |
| Colaboração | Trabalhou bem em grupo, respeitando as ideias dos colegas, contribuindo ativamente. | 0-1 |
| Total | 0-10 |
⏸️ Fim da Semana 1
🎯 Título
"HTML: A Estrutura do Adeus" Ou: como construir a espinha dorsal do seu projeto sem perder a sanidade (e sem esquecer de fechar as tags, porque uma tag aberta é um convite ao caos e caos é inimigo da revolução).
🎯 Objetivos Operacionais
- Compreender o papel do HTML como estrutura de um site a espinha dorsal que sustenta tudo. Sem ela, o site é uma ameba disforme. E ameba não convence ninguém.
-
Identificar e utilizar tags estruturais (
<!DOCTYPE html>,<html>,<head>,<body>) e tags de conteúdo (<h1>a<h6>,<p>,<ul>,<ol>,<li>,<div>,<section>,<header>,<footer>,<nav>,<main>,<article>). Cada tag tem um propósito. Cada propósito tem uma tag. - Construir a estrutura completa do projeto em HTML, com todas as seções necessárias e não, "fazer depois" não é opção. Depois nunca chega.
- Aplicar boas práticas de indentação, organização e comentários no código. Código bonito é código que você não tem vergonha de mostrar.
- Bônus: entender que HTML não é programação é marcação. E isso é um superpoder que permite estruturar qualquer ideia. Como bem diz o RCP-PR, a competência de "utilizar diferentes ferramentas e ambientes de programação para construir soluções" (EM13CO03) começa exatamente aqui.
📚 Conteúdo Programático
- Revisão de HTML Estrutura básica, tags essenciais, atributos. O mínimo que você precisa saber para não passar vergonha.
-
HTML Semântico Uso de tags semânticas
(
<header>,<nav>,<main>,<section>,<article>,<aside>,<footer>) para organização e acessibilidade. Não é sobre ser bonito é sobre ser correto. Leitores de tela e mecanismos de busca agradecem. - Estrutura do Projeto Como organizar o HTML do projeto: cabeçalho, navegação, conteúdo principal, seções, rodapé. A arquitetura da revolução.
- Boas Práticas Indentação, comentários, nomes de classes e IDs significativos. Código que se explica sozinho é código que não vira pesadelo.
-
Acessibilidade em HTML Uso de
altem imagens,langno html,aria-labelquando necessário. Inclusão não é opcional é obrigação ética. - Cultura Digital e Inclusão Refletir sobre como a estrutura de um site pode incluir ou excluir pessoas. A tecnologia não é neutra: ela pode ser uma ponte ou um muro.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Decomposição | Os alunos decompõem a página em partes menores: cabeçalho, navegação, conteúdo principal, seções, rodapé. |
| Abstração | O HTML abstrai a complexidade do navegador o aluno não precisa saber como o navegador renderiza, só precisa saber quais tags usar. |
| Reconhecimento de Padrões |
Identificam o padrão de abertura e fechamento de tags
<tag></tag> e a hierarquia de
headings (<h1> →
<h6>).
|
| Algoritmos |
A ordem de construção do HTML segue uma sequência
lógica: DOCTYPE →
<html> → <head> →
<body> → conteúdo.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT102 | Analisar tabelas, gráficos e amostras de pesquisas estatísticas apresentadas em diferentes meios de comunicação. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP02 | Estabelecer relações entre as partes de um texto, identificando repetições ou substituições que contribuem para a continuidade do texto. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO03 | Utilizar diferentes ferramentas e ambientes de programação para construir soluções, respeitando princípios estéticos, éticos e de acessibilidade. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "utilizar diferentes ferramentas e ambientes de programação para construir soluções" (EM13CO03). A construção de uma estrutura HTML semântica dialoga diretamente com o eixo Cultura Digital ao promover acessibilidade e inclusão digital. O RCP-PR enfatiza que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais", e estruturar um site com semântica adequada é um ato de cidadania digital.
"A Educação Digital no RCP-PR propõe a formação de sujeitos autônomos, críticos e criativos, capazes de usar a tecnologia como ferramenta de transformação social."
💻 Código Comentado Template HTML (Estrutura Básica)
<!-- ============================================================
SEMANA 2 HTML: A ESTRUTURA DO ADEUS
"Sem estrutura, o site é uma ameba disforme."
============================================================ -->
<!-- PASSO 1: A ESTRUTURA MÍNIMA OBRIGATÓRIA -->
<!DOCTYPE html>
<!-- ↑ Diz ao navegador: "Isso é HTML5, não brinca comigo" -->
<html lang="pt-BR">
<!-- ↑ lang é para acessibilidade. Leitores de tela usam isso.
O RCP-PR reforça que a acessibilidade é um pilar da Cultura Digital. -->
<head>
<!-- O <head> é o "backstage" do site. O usuário não vê, mas sem ele o site não funciona. -->
<meta charset="UTF-8">
<!-- ↑ Define a codificação de caracteres. Sem isso, acentos viram símbolos estranhos. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ↑ ESSENCIAL para responsividade. Sem isso, seu site fica horrível no celular. -->
<title>🚀 Meu Último Projeto A Revolução</title>
<!-- ↑ O título aparece na aba do navegador. É a primeira impressão. Capriche. -->
<link rel="stylesheet" href="style.css">
<!-- ↑ Conecta o CSS. Sem isso, é só texto preto no fundo branco. -->
</head>
<body>
<!-- ============================================================
PASSO 2: Use TAGS SEMÂNTICAS
Não é sobre ser bonito. É sobre ser CORRETO.
============================================================ -->
<header>
<!-- Cabeçalho: logotipo, título, navegação principal -->
<h1>🚀 Meu Último Projeto</h1>
<!-- ↑ Use UM <h1> por página. É o título principal. -->
<nav>
<!-- Navegação: o "menu" do site -->
<ul>
<li><a href="sobre">Sobre</a></li>
<li><a href="projeto">Projeto</a></li>
<li><a href="dashboard">Dashboard</a></li>
<li><a href="contato">Contato</a></li>
</ul>
</nav>
</header>
<main>
<!-- CONTEÚDO PRINCIPAL. Só DEVE haver um <main> por página. -->
<section id="sobre">
<h2>📖 Sobre o Projeto</h2>
<p>Este é o meu projeto final do Ensino Médio. Aqui eu aplico tudo o que aprendi sobre HTML, CSS e JavaScript.</p>
</section>
<section id="projeto">
<h2>🎯 O Projeto</h2>
<p>Descreva aqui o que seu projeto faz e por que ele é importante.</p>
<!-- Área interativa (será preenchida pelo JS) -->
<div id="area-interativa">
<p>⚠️ Aguardando interação...</p>
</div>
</section>
<section id="dashboard">
<h2>📊 Dashboard</h2>
<!-- Aqui vão os dados e estatísticas do projeto -->
<div id="estatisticas">
<p>Carregando dados...</p>
</div>
</section>
</main>
<footer>
<!-- Rodapé: informações de copyright, contato, links úteis -->
<p>© 2026 Turma do 3º Ano. A revolução foi codificada.</p>
</footer>
<!-- ============================================================
PASSO 3: Conecte o JavaScript
O JS fica no final do <body> para não bloquear o carregamento
============================================================ -->
<script src="script.js"></script>
</body>
</html>
<!-- ============================================================
CHECKLIST DO HTML PERFEITO:
[x] DOCTYPE declarado
[x] lang="pt-BR" no html
[x] meta charset="UTF-8"
[x] meta viewport
[x] title descritivo
[x] Pelo menos UM <main>
[x] Tags semânticas (header, nav, section, footer)
[x] labels conectados a inputs (se houver)
[x] alt em imagens (se houver)
[x] Código indentado e comentado
============================================================ -->
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Estrutura 🏗️ | "O que vem primeiro, o esqueleto ou a pele? O HTML é o esqueleto. Sem ele, o site é uma ameba disforme. Hoje vocês vão construir a espinha dorsal da revolução." Professor exibe uma página sem HTML semântico (só divs) e outra com tags semânticas e pergunta: "Qual dessas duas um cego entende? Qual o Google entende melhor?" |
| 5-10 | Revisão Relâmpago de HTML ⚡ |
Revisão rápida das tags essenciais. "Não é novidade, mas
é FUNDAMENTAL. Quem não sabe isso, não passa da porta."
Destaque para a hierarquia de headings (<h1>
a <h6>) e a diferença entre tags de
bloco e inline.
|
| 10-15 | HTML Semântico A Nova Onda 🌊 | Introdução às tags semânticas com exemplos práticos. "Não é só para organizar é para que leitores de tela e mecanismos de busca entendam o que vocês estão fazendo. Vocês querem que o Google ache seu projeto ou querem que ele se perca no esquecimento?" |
| 15-40 | Construindo a Base 🔨 | Cada grupo constrói a estrutura HTML do seu projeto. Professor circula, ajuda, provoca: "Onde fica a navegação? E a acessibilidade? Cadê o label do input? O que acontece se eu diminuir a tela?" |
| 40-45 | Revisão de Estrutura 🔍 | Cada grupo troca de lugar com outro e revisa a estrutura HTML. "Seja cruel. A crítica construtiva é a que faz crescer. Não tenha medo de apontar o erro você está ajudando seu colega." |
| 45-48 | Check-in Técnico 💻 | "Como vocês estão se sentindo com o HTML? O HTML é a parte mais fácil e a mais importante. Se a estrutura estiver ruim, o resto desaba. É igual construir uma casa: se a fundação é de papelão, o telhado não segura." |
| 48-50 | Fechamento + Provocação 🚀 | "A estrutura está pronta. Na semana que vem: CSS o estilo da despedida. Porque até a revolução precisa de um visual que cause impacto." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela (NVDA) para testar a estrutura; use fontes grandes (mínimo 24px) e alto contraste; descreva a estrutura verbalmente. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use legendas em vídeos tutoriais. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos. |
| Altas Habilidades | Desafio extra: "Adicione microdados (schema.org) ao seu HTML para melhorar o SEO do projeto." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Estrutura Básica |
Criou a estrutura HTML completa com
<!DOCTYPE>,
<html>, <head>,
<body>.
|
0-2 |
| Tags Semânticas |
Usou tags semânticas (<header>,
<nav>, <main>,
<section>,
<footer>) corretamente.
|
0-3 |
| Organização | O código está indentado, organizado e com comentários claros. | 0-2 |
| Conteúdo | Incluiu todas as seções necessárias (Sobre, Projeto, Dashboard, Contato). | 0-2 |
| Acessibilidade |
Usou alt em imagens, lang no
html, label conectado a inputs (quando
aplicável).
|
0-1 |
| Total | 0-10 |
⏸️ Fim da Semana 2
🎯 Título
"CSS: O Estilo da Despedida" Ou: como fazer seu projeto ficar bonito (ou intencionalmente feio, se for a vibe) e não parecer que foi feito em 1995 (a menos que 1995 seja sua estética e aí, respeito, mas saiba que você está fazendo uma escolha, não um acidente).
🎯 Objetivos Operacionais
- Compreender o papel do CSS na estilização e na experiência visual de uma página. Não é só sobre cores é sobre emoção, sobre primeiro impacto. Como dizem os designers: "Você nunca tem uma segunda chance para causar uma primeira impressão."
- Aplicar seletores básicos (elemento, classe, ID) e propriedades essenciais (cor, fonte, espaçamento, borda, sombra, fundo, flexbox, grid). O kit de ferramentas do estilizador moderno.
- Estilizar o projeto com personalidade que reflita a identidade da equipe. Seu projeto tem que ter cara própria não pode ser mais um site genérico com fonte Arial e fundo branco.
-
Aplicar CSS nas formas inline, interno e externo (arquivo
.css). Cada uma tem seu lugar mas, spoiler: o arquivo externo é o que você vai usar 99% do tempo. É o profissional. - Bônus: entender que CSS é arte com regras e regras foram feitas para serem quebradas (com consciência). O RCP-PR enfatiza o desenvolvimento da habilidade de "utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções" (EM13CO05). A criatividade em CSS é exatamente isso.
📚 Conteúdo Programático
- Revisão de CSS Sintaxe, seletores, propriedades, cascata e especificidade. O básico que todo mundo acha que sabe, mas 80% erra na hora da prova.
-
CSS Moderno Flexbox, Grid, variáveis CSS
(
--var), transições, animações. Chega defloatisso é coisa do passado. Bem-vindo ao futuro. -
Design Responsivo
@mediaqueries para adaptação a diferentes tamanhos de tela. Seu site tem que funcionar no celular da vovó. Ponto. - Design System Cores, tipografia, espaçamento, consistência visual. A revolução também precisa de identidade visual.
- Personalização Como fazer o projeto ter a cara da equipe. Não seja mais um clone de site seja autêntico.
- Cultura Digital e Estética Refletir sobre como o design digital influencia percepções e comportamentos. A cor de um botão pode mudar a taxa de cliques em 30%. Isso não é besteira é poder. O RCP-PR destaca que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais", e o design é uma dessas implicações.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Reconhecimento de Padrões |
Identificação do padrão
seletor { propriedade: valor; } uma regra
que se repete em todo lugar.
|
| Decomposição | Dividir a estilização em partes isoladas: fonte, cor, espaçamento, borda, layout. Um problema de cada vez. |
| Abstração |
As variáveis CSS (--cor-primaria,
--fonte-titulo) abstraem valores repetidos
mude em um lugar, mude em todos.
|
| Algoritmos | A cascata do CSS segue uma ordem lógica: inline → interno → externo → específico → genérico. |
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT301 | Resolver e elaborar problemas do cotidiano que envolvem equações lineares, inequações e sistemas. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP04 | Analisar os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO05 | Utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "utilizar recursos computacionais de forma crítica e criativa" (EM13CO05). O eixo Cultura Digital é fortalecido quando os alunos discutem a importância da estética, da identidade visual e da acessibilidade em suas produções. O RCP-PR afirma que a Educação Digital deve "promover protagonismo e autoria na vida pessoal e coletiva" e um projeto com design intencional é um ato de autoria.
"O RCP-PR orienta que as tecnologias digitais sejam compreendidas como ferramentas de expressão, criação e transformação social."
💻 Código Comentado CSS do Projeto (Base com Design System)
/* ================================================================
SEMANA 3 CSS: O ESTILO DA DESPEDIDA
"Primeiro impacto é visual. Faça valer."
================================================================ */
/* ================================================================
PASSO 1: VARIÁVEIS CSS O DESIGN SYSTEM
Defina suas cores e fontes UMA VEZ. Use em TODO LUGAR.
================================================================ */
:root {
/* Cores principais a identidade visual do projeto */
--cor-primaria: 2D2D44; /* Roxo escuro sofisticação */
--cor-secundaria: 6C63FF; /* Roxo vibrante ação */
--cor-destaque: FF6B6B; /* Vermelho alerta, urgência */
--cor-sucesso: 4ECDC4; /* Verde-água confiança */
--cor-fundo: F8F9FA; /* Cinza claro base limpa */
--cor-texto: 1A1A2E; /* Quase preto legibilidade */
/* Tipografia a voz do seu projeto */
--fonte-principal: 'Segoe UI', system-ui, -apple-system, sans-serif;
--fonte-titulo: 'Montserrat', 'Segoe UI', sans-serif;
/* Espaçamento consistência é tudo */
--espacamento-padrao: 1rem;
--espacamento-grande: 2rem;
--raio-borda: 12px;
--sombra-padrao: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* ================================================================
PASSO 2: RESET Limpe antes de construir
"Um bom arquiteto não constrói sobre terreno sujo."
================================================================ */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
/* ↑ ESSENCIAL: faz com que padding e border não aumentem o tamanho do elemento. */
}
/* ================================================================
PASSO 3: ESTILOS GLOBAIS
================================================================ */
body {
font-family: var(--fonte-principal);
background-color: var(--cor-fundo);
color: var(--cor-texto);
line-height: 1.6;
padding: var(--espacamento-padrao);
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* ================================================================
PASSO 4: LAYOUT COM FLEXBOX
"Flexbox é vida. Quem não usa, está preso em 2010."
================================================================ */
header {
background: linear-gradient(135deg, var(--cor-primaria), var(--cor-secundaria));
color: white;
padding: var(--espacamento-grande);
border-radius: var(--raio-borda);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
margin-bottom: var(--espacamento-grande);
box-shadow: var(--sombra-padrao);
}
header h1 {
font-family: var(--fonte-titulo);
font-size: 1.8rem;
letter-spacing: -0.5px;
}
/* ================================================================
PASSO 5: NAVEGAÇÃO
================================================================ */
nav ul {
display: flex;
gap: var(--espacamento-padrao);
list-style: none;
}
nav a {
color: white;
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 8px;
transition: all 0.3s ease;
}
nav a:hover {
background-color: rgba(255, 255, 255, 0.2);
transform: translateY(-2px);
/* ↑ Pequena animação: o link "sobe" quando o mouse passa. Detalhes que fazem diferença. */
}
/* ================================================================
PASSO 6: SEÇÕES
================================================================ */
main {
flex: 1;
max-width: 1200px;
margin: 0 auto;
width: 100%;
padding: 0 var(--espacamento-padrao);
}
section {
background: white;
padding: var(--espacamento-grande);
border-radius: var(--raio-borda);
box-shadow: var(--sombra-padrao);
margin-bottom: var(--espacamento-grande);
}
section h2 {
font-family: var(--fonte-titulo);
color: var(--cor-primaria);
margin-bottom: var(--espacamento-padrao);
border-bottom: 3px solid var(--cor-secundaria);
padding-bottom: 0.5rem;
}
/* ================================================================
PASSO 7: RESPONSIVIDADE @media QUERIES
"Seu site tem que funcionar no celular. Ponto."
================================================================ */
@media (max-width: 768px) {
header {
flex-direction: column;
text-align: center;
gap: var(--espacamento-padrao);
}
nav ul {
flex-direction: column;
gap: 0.5rem;
}
section {
padding: var(--espacamento-padrao);
}
}
/* ================================================================
CHECKLIST DO CSS PERFEITO:
[x] Reset com box-sizing: border-box
[x] Variáveis CSS definidas
[x] Layout com Flexbox ou Grid
[x] Pelo menos uma transição ou animação
[x] Pelo menos uma @media query
[x] Cores consistentes (design system)
[x] Código comentado e organizado
================================================================ */
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Impressiona 💄 | Professor exibe um site "feio" (sem CSS) ao lado do mesmo site estilizado. "Isso é um site ou uma lista de supermercado? Vocês já viram um site com fundo branco, texto preto e fonte Arial? Isso não é design é preguiça. Hoje vocês vão dar PERSONALIDADE a isso." |
| 5-10 | Revisão Relâmpago de CSS ⚡ | Revisão de seletores (elemento, classe, ID), propriedades essenciais, cascata e especificidade. "Entender especificidade é entender por que seu CSS não funciona 80% das vezes." |
| 10-15 | CSS Moderno Flexbox e Grid 🎨 |
Introdução ao Flexbox (layout unidimensional) e Grid
(layout bidimensional). "Chega de
float isso é coisa do passado. Flexbox e
Grid são o presente e o futuro." Demonstração prática ao
vivo com o DevTools.
|
| 15-40 | Operação Beleza 💅 | Cada grupo estiliza seu projeto. Professor circula com uma atitude de "juiz do Fashion Police": "Por que você escolheu essa cor? Isso é uma escolha intencional ou foi 'a primeira que veio'? E a responsividade? O que acontece se eu diminuir a tela?" |
| 40-45 | Galeria dos Projetos Estilizados 🖼️ | Cada grupo mostra seu projeto estilizado em 1 minuto. A turma vota em três categorias: 🏆 Mais Bonita, 🎨 Mais Criativa (que ousou), 📐 Mais Coerente (design system bem aplicado). |
| 45-48 | Check-in de Estilo 🎨 | "O CSS é onde a personalidade aparece. Não tenham medo de ousar. Um projeto com identidade visual forte é um projeto que as pessoas lembram. Cores podem mudar a percepção vermelho é urgência, azul é confiança, verde é tranquilidade. Vocês estão comunicando algo. O quê?" |
| 48-50 | Fechamento + Provocação 🚀 | "O estilo está pronto. Na semana que vem: JavaScript a mágica que não acaba. Porque o que é bonito mas não reage, é só uma estátua." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use alto contraste; use fontes grandes (mínimo 16px); teste com leitores de tela; evite informações apenas por cor (use ícones ou texto adicional). |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos sensoriais. |
| Altas Habilidades |
Desafio extra: "Adicione animações CSS com
@keyframes e transições para surpreender o
usuário mas sem prejudicar a usabilidade. Animações
devem servir, não atrapalhar."
|
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Vínculo do CSS |
Vinculou o arquivo .css ao HTML
corretamente (ou usou CSS interno/inline de forma
intencional).
|
0-2 |
| Uso de Seletores | Aplicou os 3 tipos de seletor: elemento, classe e ID com critério. | 0-2 |
| Propriedades Essenciais | Usou pelo menos 5 propriedades diferentes (cor, fonte, padding, margin, border, etc.). | 0-2 |
| Layout Moderno | Usou Flexbox ou Grid para organizar o layout (nada de tabelas ou floats). | 0-2 |
| Responsividade |
Adicionou pelo menos uma regra @media para
adaptação a telas menores.
|
0-1 |
| Personalização Criativa | A estilização tem personalidade, é coerente e intencional não parece um template genérico. | 0-1 |
| Total | 0-10 |
⏸️ Fim da Semana 3
🎯 Título
"JavaScript: A Mágica que Não Acaba" Ou: como fazer seu projeto ganhar vida (e talvez te fazer chorar de alegria ou de frustração, a gente não julga). Preparem-se: a partir de agora, o computador vai começar a obedecer vocês. E isso é assustador e maravilhoso ao mesmo tempo.
🎯 Objetivos Operacionais
- Compreender o papel do JavaScript na interatividade e no comportamento dinâmico de uma página. HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO. Sem JS, seu site é um belo adereço de museu.
-
Utilizar variáveis, tipos de dados (
string,number,boolean) e operadores. A base de tudo: guardar informações para usar depois. - Criar funções simples que executam ações. Funções são como receitas de bolo você escreve uma vez e usa quantas vezes quiser.
-
Manipular o HTML via JavaScript usando
document.getElementById()e.innerHTML. É aqui que a mágica acontece: seu código vai falar com a página. -
Bônus: entender que errar é parte do processo e o
console.log()é seu melhor amigo. Programar não é sobre acertar de primeira é sobre testar, errar, corrigir e tentar de novo. O RCP-PR reforça essa postura ao promover uma Educação Digital que valoriza o "protagonismo e a autoria", e ninguém vira protagonista sem errar bastante.
📚 Conteúdo Programático
- O que é JavaScript? A alma da página, o que torna um site vivo. Diferente de HTML e CSS, JS é uma linguagem de programação de verdade. Com ela, você pode calcular, tomar decisões e reagir ao usuário.
-
Variáveis e Tipos
var,let,const,string,number,boolean. Aprenda a diferença entrelet(mutável) econst(imutável) e esqueçavar, que é do tempo dos dinossauros. - Funções Declaração, chamada, parâmetros, retorno. Como criar seus próprios comandos.
-
Manipulação do DOM
document.getElementById(),.innerHTML,.textContent. É aqui que o JS encontra o HTML. -
Eventos Básicos
onclick(introdução). O clique do usuário vai disparar suas funções. - Cultura Digital e Autonomia Refletir sobre como o JavaScript permite que os usuários passem de consumidores para criadores. O RCP-PR destaca que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais". Com JS, vocês deixam de ser apenas usuários de aplicativos e se tornam criadores de aplicativos. Isso é poder.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Algoritmos | Sequência lógica de passos que o computador executa ao clicar no botão uma função é um pequeno algoritmo. |
| Decomposição | O problema "fazer algo acontecer" é decomposto em: (1) selecionar o elemento, (2) modificar seu conteúdo, (3) reagir ao evento. |
| Reconhecimento de Padrões |
O padrão function nome() { codigo } se
repete a estrutura é sempre a mesma, o que muda é o que
está dentro.
|
| Abstração |
A função abstrai a complexidade: você chama
saudacao() e o código executa, sem precisar
saber como ele funciona internamente a cada vez.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT302 | Construir modelos matemáticos para descrever fenômenos e situações do cotidiano. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP05 | Produzir textos de diferentes gêneros, considerando a adequação ao contexto de produção e circulação. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO06 | Compreender e utilizar os conceitos de variáveis, constantes, operadores, estruturas condicionais e de repetição, funções e eventos na construção de soluções computacionais. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "compreender e utilizar conceitos fundamentais de programação" (EM13CO06). O eixo Pensamento Computacional é diretamente fortalecido com a criação de algoritmos simples que são exatamente o que vocês vão fazer hoje. O RCP-PR também enfatiza que a Educação Digital deve "promover a autoria e o protagonismo", e aprender JS é o primeiro passo para se tornar um verdadeiro criador digital.
"A programação é uma forma de expressão e de solução de problemas. O RCP-PR a coloca como ferramenta essencial para a formação de jovens autônomos e críticos."
💻 Código Comentado JavaScript Básico (Variáveis, Funções e DOM)
// ================================================================
// SEMANA 4 JAVASCRIPT: A MÁGICA QUE NÃO ACABA
// "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO."
// ================================================================
// ================================================================
// PASSO 1: VARIÁVEIS As caixas onde guardamos as coisas
// ================================================================
let nomeDoUsuario = "Visitante"; // string texto
let contadorDeCliques = 0; // number número
const URL_BASE = "https://meusite.com"; // const NÃO muda
const COR_PADRAO = "6C63FF";
let estaLogado = false; // boolean true/false
let listaVazia = []; // array lista (vamos ver na semana 7)
// ================================================================
// PASSO 2: CONSOLE.LOG() Seu melhor amigo
// "Se você não sabe o que está acontecendo, console.log()"
// ================================================================
console.log("🚀 O JavaScript está funcionando!");
console.log("O nome do usuário é:", nomeDoUsuario);
console.log("Contador de cliques:", contadorDeCliques);
// ================================================================
// PASSO 3: FUNÇÕES Receitas que fazem coisas
// ================================================================
// Função que NÃO recebe parâmetros e NÃO retorna nada
function saudacaoSimples() {
alert("Olá, visitante! Bem-vindo ao projeto.");
}
// Função que RECEBE parâmetros
function saudacaoPersonalizada(nome) {
let mensagem = "Olá, " + nome + "! Seja bem-vindo!";
console.log(mensagem);
return mensagem; // return devolve o valor para quem chamou
}
// Função que faz algo com o DOM (Document Object Model)
function mudarTextoDoBotao() {
let botao = document.getElementById("botaoPrincipal");
if (botao) {
botao.textContent = "Você clicou! 🎉";
botao.style.backgroundColor = "4ECDC4";
botao.style.color = "white";
} else {
console.error("❌ Botão não encontrado! Verifique o ID.");
}
}
// ================================================================
// PASSO 4: EXEMPLO PRÁTICO Contador de Cliques
// ================================================================
let contador = 0;
function incrementarContador() {
contador = contador + 1; // ou contador++
let display = document.getElementById("displayContador");
if (display) {
display.textContent = "Cliques: " + contador;
}
console.log("Contador atual:", contador);
}
function resetarContador() {
contador = 0;
let display = document.getElementById("displayContador");
if (display) {
display.textContent = "Cliques: 0";
}
console.log("Contador resetado!");
}
// ================================================================
// PASSO 5: ESTRUTURAS CONDICIONAIS Tomando decisões
// ================================================================
function verificarIdade() {
let input = document.getElementById("idadeInput");
if (!input) return;
let idade = Number(input.value);
if (isNaN(idade) || idade <= 0) {
alert("Por favor, digite uma idade válida.");
return;
}
let resultado;
if (idade < 18) {
resultado = "Você é menor de idade. A revolução espera por você!";
} else if (idade >= 18 && idade < 60) {
resultado = "Você está no auge. A revolução precisa de você AGORA!";
} else {
resultado = "Você tem experiência. A revolução precisa da sua sabedoria!";
}
let elemento = document.getElementById("resultadoIdade");
if (elemento) {
elemento.textContent = resultado;
}
}
// ================================================================
// PASSO 6: CULTURA DIGITAL Por que isso importa?
// ================================================================
const reflexaoInteratividade = {
pergunta: "Como a interatividade pode ser usada para manipular?",
exemplo: "Redes sociais usam 'likes' para prender sua atenção.",
desafio: "Seu projeto vai usar interatividade para prender ou para libertar?",
conclusao: "Interatividade é poder. Use com responsabilidade."
};
console.log("✅ JavaScript carregado com sucesso!");
console.log("🔥 A revolução não vai ser televisionada. Vai ser CODIFICADA.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Explode 💥 | Professor entra com um site "morto" (sem JS) e um "vivo" (com JS). Clica no botão do site morto nada acontece. Clica no vivo boom, reação. "O que faz um site ser VIVO? Não é o design bonito é a REAÇÃO. Hoje vocês vão dar VIDA ao projeto. Preparem-se para ver o computador obedecer." |
| 5-10 | O que é JavaScript? 🧠 | "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO. Sem JS, o site é um manequim bonito, mas morto. Com JS, ele pensa, reage, calcula, decide." Explicação da diferença entre linguagem de marcação (HTML), estilo (CSS) e programação (JS). |
| 10-15 | Variáveis e Funções A Base 📝 |
Demonstração ao vivo: criar uma variável (let nome = "João"), uma função simples (function dizerOi() { alert("Oi"); }), e chamar a função. "É assim que a mágica começa.
Vocês vão comandar a máquina."
|
| 15-40 | O Despertar da Máquina ⚡ | Cada grupo adiciona interatividade básica ao projeto. Tarefa mínima: um botão que, ao ser clicado, muda um texto na tela. Professor circula provocando: "E se o botão mudasse de cor? E se aparecesse uma mensagem diferente? E se ele contasse quantas vezes foi clicado? Vão além do mínimo." |
| 40-45 | Mostra de Interatividade 🎪 | Cada grupo mostra o que seu botão faz ou o que tentou fazer (e falhou, porque errar também é aprendizado). "Quem tem o botão mais útil? Mais criativo? Mais CAÓTICO? O erro mais épico?" |
| 45-48 | Check-in de Vida 💫 |
"O JS é viciante. Vocês acabaram de dar o primeiro passo
no universo da programação. Lembrem-se:
console.log() é seu melhor amigo. Quando
algo der errado (e vai dar), chame ele."
|
| 48-50 | Fechamento + Provocação 🚀 | "O projeto está vivo. Na semana que vem: DOM o controle remoto da página. Vocês vão poder criar, modificar e destruir elementos como deuses digitais." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela para ler o código; descreva o código verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (sem dependência de mouse). |
| TDAH | Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha um ambiente com poucos estímulos sonoros. |
| Altas Habilidades | Desafio extra: "Crie uma função que recebe parâmetros, retorna um valor, e use-a em diferentes lugares do projeto mostre versatilidade." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Variáveis |
Declarou variáveis corretamente usando
let e const (nada de
var).
|
0-2 |
| Função | Criou pelo menos uma função que executa uma ação (ex: mudar texto, mudar cor). | 0-3 |
| Manipulação do DOM |
Usou document.getElementById() e
.textContent ou
.innerHTML corretamente.
|
0-3 |
| Evento |
Usou onclick (ou
addEventListener como bônus) para reagir a
um clique.
|
0-2 |
| Total | 0-10 |
⏸️ Fim da Semana 4
🎯 Título
"DOM: O Controle Remoto do Fim" Ou: como manipular cada pedacinho do seu projeto como um deus digital (com o poder de criar, modificar e destruir elementos e não, não é uma metáfora, é código de verdade). Se o HTML é a estrutura e o CSS é o estilo, o DOM é o campo de batalha onde a mágica acontece. Vocês vão aprender a encontrar qualquer elemento da página e fazer o que quiserem com ele.
🎯 Objetivos Operacionais
- Compreender o DOM (Document Object Model) como uma árvore que representa a página HTML. A página não é um bloco monolítico é uma estrutura hierárquica que você pode navegar e manipular.
-
Utilizar métodos de seleção:
-
document.getElementById()o mais rápido, o preferido. -
document.querySelector()o mais flexível, o curinga. -
document.querySelectorAll()para caçar todos os elementos de um tipo.
-
- Modificar atributos, classes e estilos via JavaScript. Mudar a cor, esconder, mostrar, adicionar uma classe tudo em tempo real.
-
Criar e remover elementos dinamicamente com
createElement(),appendChild(),removeChild(). Você vai poder criar coisas do nada e destruir outras. É o poder da criação e da destruição. - Bônus: você é o jardineiro dessa árvore regue com criatividade e pode com responsabilidade. O DOM é um superpoder, e com grandes poderes vêm grandes responsabilidades. O RCP-PR destaca que o eixo Mundo Digital é fortalecido quando os alunos compreendem como a página é estruturada internamente e é exatamente isso que o DOM ensina.
📚 Conteúdo Programático
- O que é o DOM? A representação da página em forma de árvore. Cada tag HTML é um nó que pode ter filhos, irmãos e pais. Entender a árvore é entender o jogo.
-
Métodos de Seleção Como encontrar qualquer elemento:
getElementById(),querySelector(),querySelectorAll(). A arte da caça ao elemento. -
Manipulação de Classes
classList.add(),classList.remove(),classList.toggle(). O kit de ferramentas para mudar o visual rapidamente. -
Manipulação de Estilos
element.style.propriedade = valor. Mudar a aparência na hora, sem precisar tocar no CSS. -
Criação e Remoção
createElement(),appendChild(),removeChild(),remove(). Criar, inserir, deletar. O ciclo de vida dos elementos. - Cultura Digital e Autonomia Refletir sobre como a manipulação do DOM permite criar experiências personalizadas e acessíveis. O RCP-PR enfatiza que a Educação Digital deve "promover a autonomia e a autoria" e quando você manipula o DOM, você não é mais um mero visitante da página; você é o arquiteto.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Abstração | O DOM abstrai a complexidade do navegador o programador interage com uma árvore lógica, sem se preocupar com como o navegador renderiza cada pixel. |
| Algoritmos | Sequência de passos: (1) selecionar o elemento, (2) modificar, (3) criar ou remover. Cada manipulação é um pequeno algoritmo. |
| Decomposição | O problema "manipular a página" é decomposto em: selecionar, modificar classe, modificar estilo, criar, remover. Cada parte é resolvida separadamente. |
| Reconhecimento de Padrões |
O padrão document.querySelector() se
repete; a estrutura de criação (criar → configurar →
adicionar) também se repete.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT201 | Interpretar dados estatísticos apresentados em diferentes mídias e suportes, avaliando a confiabilidade das informações e as implicações éticas do uso de dados. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP06 | Analisar, em diferentes textos, os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO04 | Reconhecer e aplicar os princípios da abstração, decomposição, reconhecimento de padrões e algoritmos na resolução de problemas. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "reconhecer e aplicar os princípios do Pensamento Computacional" (EM13CO04). O eixo Mundo Digital é diretamente fortalecido quando os alunos compreendem como a página é estruturada internamente o DOM é a representação viva desse mundo. O RCP-PR também destaca que a Educação Digital deve promover "a compreensão crítica das tecnologias", e entender o DOM é entender como os sites realmente funcionam por baixo dos panos.
"O RCP-PR propõe que a Educação Digital vá além do uso de ferramentas, promovendo a compreensão dos fundamentos que sustentam o mundo digital."
💻 Código Comentado Manipulação do DOM (Seleção, Criação, Remoção)
// ================================================================
// SEMANA 5 DOM: O CONTROLE REMOTO DO FIM
// "O DOM é a árvore. Você é o jardineiro."
// ================================================================
console.log("🌳 DOM carregado. Pronto para manipulação.");
// ================================================================
// PASSO 1: MÉTODOS DE SELEÇÃO Como encontrar elementos
// "Se você não consegue encontrar, você não consegue manipular."
// ================================================================
// 1. getElementById() O MAIS RÁPIDO
const tituloPrincipal = document.getElementById("titulo");
// 2. querySelector() O MAIS FLEXÍVEL
const primeiroBotao = document.querySelector(".botao-principal");
const formulario = document.querySelector("formulario");
const primeiroParagrafo = document.querySelector("p");
// 3. querySelectorAll() PARA VÁRIOS ELEMENTOS
const todosOsBotoes = document.querySelectorAll("button");
console.log(`Encontrados ${todosOsBotoes.length} botões`);
// ================================================================
// PASSO 2: MANIPULAÇÃO DE CLASSES Vestindo o elemento
// ================================================================
function alternarTema() {
const body = document.querySelector("body");
if (!body) return;
body.classList.toggle("tema-escuro");
console.log("Tema alternado!");
}
function destacarElemento(id) {
const elemento = document.getElementById(id);
if (!elemento) {
console.error(`❌ Elemento "${id}" não encontrado.`);
return;
}
elemento.classList.add("destaque");
setTimeout(() => {
elemento.classList.remove("destaque");
}, 2000);
}
// ================================================================
// PASSO 3: MANIPULAÇÃO DE ESTILOS Mudando a aparência na hora
// ================================================================
function mudarCorFundo(cor) {
const body = document.querySelector("body");
if (body) {
body.style.backgroundColor = cor;
}
}
function animarBotao(id) {
const botao = document.getElementById(id);
if (!botao) return;
botao.style.transform = "scale(1.1)";
botao.style.transition = "transform 0.3s ease";
botao.style.boxShadow = "0 8px 16px rgba(0,0,0,0.2)";
setTimeout(() => {
botao.style.transform = "scale(1)";
botao.style.boxShadow = "none";
}, 500);
}
// ================================================================
// PASSO 4: CRIAÇÃO DE ELEMENTOS Fazendo do nada
// ================================================================
function adicionarItemNaLista(texto) {
// PASSO 1: Criar o elemento
const novoItem = document.createElement("li");
// PASSO 2: Adicionar conteúdo
novoItem.textContent = texto;
novoItem.classList.add("item-lista");
novoItem.style.padding = "0.5rem";
// PASSO 3: Encontrar o pai e adicionar
const lista = document.getElementById("minhaLista");
if (!lista) {
console.error("❌ Lista não encontrada!");
return;
}
lista.appendChild(novoItem);
console.log(`✅ Item "${texto}" adicionado à lista.`);
}
function criarCard(titulo, conteudo) {
const card = document.createElement("div");
card.className = "card";
const tituloEl = document.createElement("h3");
tituloEl.textContent = titulo;
const conteudoEl = document.createElement("p");
conteudoEl.textContent = conteudo;
const botaoEl = document.createElement("button");
botaoEl.textContent = "Saiba mais";
botaoEl.onclick = function() {
alert(`Você clicou no card: ${titulo}`);
};
card.appendChild(tituloEl);
card.appendChild(conteudoEl);
card.appendChild(botaoEl);
return card;
}
function adicionarCardNoContainer() {
const container = document.getElementById("containerCards");
if (!container) {
console.error("❌ Container não encontrado!");
return;
}
const novoCard = criarCard("Revolução Digital", "O futuro é codificado.");
container.appendChild(novoCard);
}
// ================================================================
// PASSO 5: REMOÇÃO DE ELEMENTOS O poder de destruir
// ================================================================
function removerUltimoItem() {
const lista = document.getElementById("minhaLista");
if (!lista) {
console.error("❌ Lista não encontrada!");
return;
}
if (lista.children.length === 0) {
alert("A lista já está vazia!");
return;
}
const ultimoItem = lista.lastElementChild;
lista.removeChild(ultimoItem);
console.log("🗑️ Último item removido.");
}
function removerElementoPorId(id) {
const elemento = document.getElementById(id);
if (!elemento) {
console.error(`❌ Elemento "${id}" não encontrado.`);
return;
}
elemento.remove(); // Método moderno não precisa do pai
console.log(`🗑️ Elemento "${id}" removido.`);
}
// ================================================================
// PASSO 6: EXEMPLO PRÁTICO To-Do List Dinâmica
// ================================================================
let tarefas = [];
function adicionarTarefa() {
const input = document.getElementById("inputTarefa");
if (!input) return;
const texto = input.value.trim();
if (texto === "") {
alert("Digite uma tarefa!");
return;
}
tarefas.push(texto);
const lista = document.getElementById("listaTarefas");
if (!lista) return;
const item = document.createElement("li");
item.textContent = texto;
const btnRemover = document.createElement("button");
btnRemover.textContent = "✕";
btnRemover.style.marginLeft = "1rem";
btnRemover.onclick = function() {
lista.removeChild(item);
const index = tarefas.indexOf(texto);
if (index > -1) {
tarefas.splice(index, 1);
}
console.log("Tarefas restantes:", tarefas);
};
item.appendChild(btnRemover);
lista.appendChild(item);
input.value = "";
input.focus();
console.log(`✅ Tarefa "${texto}" adicionada. Total: ${tarefas.length}`);
}
// ================================================================
// PASSO 7: CULTURA DIGITAL O poder de criar
// ================================================================
const reflexaoDOM = {
pergunta: "O que significa ter o poder de criar e destruir elementos?",
reflexao: "Com grandes poderes vêm grandes responsabilidades.",
desafio: "Como você pode usar esse poder para incluir, não excluir?",
conclusao: "Criar é revolucionário. Destruir também, quando necessário."
};
console.log("✅ DOM manipulador carregado. Poder ativado.");
console.log("⚠️ Com grandes poderes vêm grandes responsabilidades.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Controla 🎮 | Professor abre o DevTools e mostra a árvore DOM em tempo real. "Vocês já imaginaram ter um CONTROLE REMOTO da página? Poder mudar cor, esconder coisas, criar do nada? O DOM é isso. Cada tag que vocês veem na tela é um nó em uma árvore que vocês podem navegar e modificar. Hoje vocês vão se tornar os mestres dessa árvore." |
| 5-10 | O que é o DOM? 🌳 |
Explicação visual: desenhe uma árvore invertida com
<html> na raiz,
<head> e
<body> como galhos, e os elementos
dentro como folhas. "A página não é um bloco é uma
árvore. E vocês vão aprender a subir nela." Demonstração
no DevTools: expandir e contrair nós.
|
| 10-15 | Métodos de Seleção Caça ao Elemento 🎯 |
Apresentação de getElementById(),
querySelector(),
querySelectorAll(). "getElementById
é o mais rápido use quando tiver ID.
querySelector é o mais flexível use quando
precisar de seletores CSS.
querySelectorAll é para pegar todos de uma
vez." Demonstração ao vivo.
|
| 15-40 | Caça ao Elemento Mão na Massa 🔍 | Cada grupo pratica a manipulação do DOM no projeto. Tarefas mínimas: (1) Mudar o texto de um elemento ao clicar; (2) Adicionar uma classe para mudar a cor; (3) Criar um novo elemento na lista; (4) Remover um elemento. Professor provoca: "E se você criasse um elemento NOVO? E se você removesse algo? E se você clonasse um elemento e adicionasse em outro lugar?" |
| 40-45 | Mostra de Manipulação 🎪 | Cada grupo mostra o que conseguiu manipular de preferência a parte mais criativa ou inusitada. "Quem criou o elemento mais inútil? Quem destruiu algo que não devia?" |
| 45-48 | Check-in de Poder ⚡ |
"O DOM é um superpoder use com responsabilidade. Vocês
podem criar, modificar e destruir. Mas lembrem-se: cada
ação tem uma reação. Testem,
console.log() é seu aliado."
|
| 48-50 | Fechamento + Provocação 🚀 | "Na semana que vem: EVENTOS quando o usuário toca na tela. Porque manipular é bom, mas REAGIR ao usuário é melhor ainda." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela para narrar a árvore DOM; descreva a estrutura verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor. |
| Deficiência Auditiva | Use feedback visual em todas as instruções; disponibilize roteiro escrito passo a passo; use mensagens de console e alertas visuais. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; utilize atalhos de teclado e evite dependência de mouse. |
| TDAH | Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos. |
| Altas Habilidades | Desafio extra: "Crie um elemento que se autodestrói após 5 segundos. Ou uma função que clona toda a seção e duplica na página." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Seleção de Elementos |
Usou pelo menos 2 métodos diferentes de seleção (ex:
getElementById e
querySelector).
|
0-2 |
| Manipulação de Estilos |
Modificou estilos inline ou classes com
classList (add, remove, toggle).
|
0-2 |
| Criação Dinâmica |
Criou pelo menos 1 elemento com
createElement() e
appendChild().
|
0-2 |
| Remoção de Elementos |
Removeu elementos com removeChild() ou
remove().
|
0-1 |
| Feedback ao Usuário | O código fornece feedback visual (mudança de cor, texto, etc.) para as interações. | 0-1 |
| Bônus: Criatividade | Fez algo além do esperado (animações, clones, criação de múltiplos elementos, etc.). | 0-2 |
| Total | 0-10 |
"O DOM não é um documento morto. É uma árvore viva e você é o jardineiro." 🌳
⏸️ Fim da Semana 5
🎯 Título
"Eventos: Quando o Usuário Toca no Fim" Ou: como fazer seu projeto reagir a cliques, teclas e (quem sabe) respirações e não, não é mágica, é só código bem escrito. Até agora, vocês mandavam no código. Agora, o usuário vai mandar e vocês vão ter que ouvir o que ele tem a dizer. Eventos são a ponte entre o ser humano e a máquina. E essa ponte, meus caros, é onde a magia realmente acontece.
🎯 Objetivos Operacionais
- Compreender o que são eventos e por que eles são a ponte entre o usuário e a máquina. Um evento é tudo o que acontece na página que o usuário pode sentir: um clique, uma tecla pressionada, o mouse passando por cima.
-
Utilizar
addEventListener()a forma moderna, flexível e recomendada de ouvir eventos. Esqueçaonclickno HTML isso é 2010. Vocês são do futuro. -
Dominar eventos essenciais:
clicko mais famoso.-
keydown/keyupquando o usuário digita. -
mouseover/mouseoutquando o mouse passeia. -
submitquando um formulário é enviado.
- Adicionar eventos completos ao projeto não só um clique genérico, mas interações que fazem sentido para a experiência do usuário.
- Bônus: eventos são a alma da interatividade trate-os com respeito. O RCP-PR destaca que a habilidade de "construir soluções computacionais para problemas do cotidiano" (EM13CO02) passa diretamente por entender como os usuários interagem com seus sistemas.
📚 Conteúdo Programático
- O que são eventos? Interações do usuário que disparam ações no código. O clique, a tecla, o movimento do mouse tudo isso é um evento.
-
Tipos de Eventos
click,keydown,keyup,mouseover,mouseout,mouseenter,mouseleave,submit. O cardápio completo da interação. -
addEventListener()A forma moderna e recomendada de registrar eventos. Diferente deonclick(que só permite um evento por elemento),addEventListeneré flexível, permite múltiplos eventos e é mais fácil de remover. -
O Objeto
eventInformações sobre o evento que aconteceu. Onde o mouse clicou? Qual tecla foi pressionada? Tudo está dentro do objetoevent. - Eventos no Projeto Como integrar eventos ao projeto de forma inteligente, não apenas "colocar um botão que dá alerta".
- Cultura Digital e Interação Refletir sobre como os eventos moldam a experiência do usuário. O RCP-PR enfatiza que o eixo Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais" e uma interface que reage bem ao usuário é uma interface que respeita o ser humano.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Decomposição | Cada interação é decomposta em: (1) detectar o evento, (2) executar a ação, (3) atualizar a interface. |
| Algoritmos | Cada evento segue uma sequência lógica: ouvir → processar → reagir. É um mini-algoritmo. |
| Abstração |
O addEventListener abstrai a complexidade
do navegador você não precisa saber como o navegador
detecta o clique, só precisa saber o que fazer quando
ele acontece.
|
| Reconhecimento de Padrões |
O padrão
elemento.addEventListener('evento', função)
se repete para qualquer tipo de evento.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT303 | Resolver e elaborar problemas que envolvem funções polinomiais de 1º e 2º graus. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP07 | Analisar, em textos de diferentes gêneros, marcas que expressam a posição do enunciador. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO02 | Construir soluções computacionais para problemas do cotidiano. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "construir soluções computacionais para problemas do cotidiano" (EM13CO02). O eixo Cultura Digital é fortalecido quando os alunos discutem como as interfaces reagem aos usuários porque uma interface que não reage é uma interface que ignora quem a usa. O RCP-PR também destaca a importância da "autonomia e do protagonismo", e criar interações significativas é um ato de protagonismo digital.
"O RCP-PR propõe que a Educação Digital desenvolva a capacidade de usar a tecnologia como ferramenta de expressão e de transformação social."
💻 Código Comentado Eventos (addEventListener, Objeto event, Teclado, Mouse)
// ================================================================
// SEMANA 6 EVENTOS: QUANDO O USUÁRIO TOCA NO FIM
// "Detectar → Processar → Reagir. O ciclo da vida digital."
// ================================================================
console.log("👂 Ouvindo eventos. Pronto para reagir.");
// ================================================================
// PASSO 1: addEventListener() A forma REVOLUCIONÁRIA
// ================================================================
// Exemplo 1: Click em um botão (com função anônima)
const botaoAlerta = document.getElementById("botaoAlerta");
if (botaoAlerta) {
botaoAlerta.addEventListener('click', function() {
alert("Você clicou no botão! 🚀");
});
}
// Exemplo 2: Usando uma função nomeada (mais organizado)
function mostrarMensagem() {
console.log("Botão clicado!");
const mensagem = document.getElementById("mensagemEvento");
if (mensagem) {
mensagem.textContent = "Evento detectado! O botão foi clicado.";
mensagem.style.color = "6C63FF";
}
}
const botaoMensagem = document.getElementById("botaoMensagem");
if (botaoMensagem) {
botaoMensagem.addEventListener('click', mostrarMensagem);
}
// ================================================================
// PASSO 2: O OBJETO EVENT Informações sobre o que aconteceu
// ================================================================
const botaoInfo = document.getElementById("botaoInfo");
if (botaoInfo) {
botaoInfo.addEventListener('click', function(evento) {
console.log("Tipo do evento:", evento.type);
console.log("Elemento alvo:", evento.target);
console.log("Coordenadas X:", evento.clientX);
console.log("Coordenadas Y:", evento.clientY);
const info = document.getElementById("infoEvento");
if (info) {
info.innerHTML = `
Evento: ${evento.type}
Elemento: ${evento.target.tagName}
Posição: (${evento.clientX}, ${evento.clientY})
`;
}
});
}
// ================================================================
// PASSO 3: EVENTOS DE TECLADO Quando o usuário digita
// ================================================================
const inputTeclado = document.getElementById("inputTeclado");
if (inputTeclado) {
// keydown quando a tecla é pressionada
inputTeclado.addEventListener('keydown', function(evento) {
console.log(`Tecla pressionada: ${evento.key} (código: ${evento.code})`);
if (evento.key === 'Enter') {
evento.preventDefault(); // Impede o comportamento padrão
const valor = evento.target.value;
alert(`Você digitou: "${valor}" e pressionou Enter!`);
evento.target.value = ""; // Limpa o campo
}
});
// keyup quando a tecla é solta
inputTeclado.addEventListener('keyup', function(evento) {
const preview = document.getElementById("previewTeclado");
if (preview) {
preview.textContent = `Digitando: ${evento.target.value || "(vazio)"}`;
}
});
}
// Atalho de teclado global (Ctrl+Shift+R)
document.addEventListener('keydown', function(evento) {
if (evento.ctrlKey && evento.shiftKey && evento.key === 'R') {
evento.preventDefault();
alert("Atalho ativado! Revolução em andamento. 🚀");
}
});
// ================================================================
// PASSO 4: EVENTOS DE MOUSE Interações com o ponteiro
// ================================================================
const elementoMouse = document.getElementById("elementoMouse");
if (elementoMouse) {
elementoMouse.addEventListener('mouseover', function() {
this.style.backgroundColor = "6C63FF";
this.style.color = "white";
this.textContent = "🐭 O mouse está AQUI!";
console.log("Mouse entrou no elemento");
});
elementoMouse.addEventListener('mouseout', function() {
this.style.backgroundColor = "f0f0f0";
this.style.color = "333";
this.textContent = "Passe o mouse aqui 👆";
console.log("Mouse saiu do elemento");
});
}
// ================================================================
// PASSO 5: EVENTOS DE FORMULÁRIO Quando o usuário envia
// ================================================================
const formulario = document.getElementById("formularioEvento");
if (formulario) {
formulario.addEventListener('submit', function(evento) {
evento.preventDefault(); // Impede o recarregamento da página
console.log("Formulário enviado!");
const nome = document.getElementById("nomeForm")?.value || "";
const email = document.getElementById("emailForm")?.value || "";
if (nome.trim() === "" || email.trim() === "") {
alert("Preencha todos os campos!");
return;
}
alert(`Formulário enviado com sucesso!\nNome: ${nome}\nEmail: ${email}`);
formulario.reset();
});
}
// ================================================================
// PASSO 6: DELEGAÇÃO DE EVENTOS Uma técnica poderosa
// ================================================================
const listaDelegacao = document.getElementById("listaDelegacao");
if (listaDelegacao) {
listaDelegacao.addEventListener('click', function(evento) {
const item = evento.target.closest('li');
if (item) {
alert(`Você clicou no item: ${item.textContent}`);
item.style.backgroundColor = "FF6B6B";
setTimeout(() => {
item.style.backgroundColor = "";
}, 500);
}
});
}
// ================================================================
// PASSO 7: EXEMPLO PRÁTICO Jogo de Clique
// ================================================================
let pontos = 0;
let jogoAtivo = false;
function iniciarJogo() {
jogoAtivo = true;
pontos = 0;
atualizarPlacar();
const botaoAlvo = document.getElementById("botaoAlvo");
if (botaoAlvo) {
botaoAlvo.style.display = "block";
botaoAlvo.textContent = "Clique aqui! 🎯";
botaoAlvo.style.backgroundColor = "4ECDC4";
}
console.log("Jogo iniciado!");
}
function clicarAlvo() {
if (!jogoAtivo) return;
pontos++;
atualizarPlacar();
const botao = document.getElementById("botaoAlvo");
if (botao) {
// Move o botão para uma posição aleatória
const maxX = window.innerWidth - 150;
const maxY = window.innerHeight - 150;
const x = Math.random() * maxX;
const y = Math.random() * maxY;
botao.style.position = "fixed";
botao.style.left = x + "px";
botao.style.top = y + "px";
// Muda a cor do botão aleatoriamente
const cores = ["FF6B6B", "4ECDC4", "6C63FF", "FFD93D", "FF8A5C"];
botao.style.backgroundColor = cores[Math.floor(Math.random() * cores.length)];
}
}
function atualizarPlacar() {
const placar = document.getElementById("placarJogo");
if (placar) {
placar.textContent = `Pontos: ${pontos}`;
}
}
function finalizarJogo() {
jogoAtivo = false;
const botaoAlvo = document.getElementById("botaoAlvo");
if (botaoAlvo) {
botaoAlvo.style.display = "none";
}
alert(`Fim de jogo! Você fez ${pontos} pontos! 🏆`);
}
// ================================================================
// PASSO 8: CULTURA DIGITAL A voz do usuário
// ================================================================
const reflexaoEventos = {
pergunta: "O que significa dar voz ao usuário?",
reflexao: "Eventos são a ponte entre o humano e a máquina.",
desafio: "Como você pode usar eventos para criar experiências mais humanas?",
conclusao: "Interação é diálogo. E diálogo é o que nos torna humanos."
};
console.log("✅ Eventos configurados. O usuário agora tem voz.");
console.log("🎮 Jogo de clique disponível. Use 'iniciarJogo()' para começar.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Reage 👆 | Professor abre um site interativo e um estático. "O que faz um site ser INTERATIVO? Não é o design é a REAÇÃO. Cada clique, cada tecla, cada movimento do mouse é um EVENTO. E hoje vocês vão aprender a OUVIR esses eventos. O usuário fala vocês respondem." Demonstração: clicar num botão, ver a reação. Depois pressionar teclas e ver o console mostrar cada tecla. |
| 5-10 | O que são Eventos? 📡 |
"Eventos são sinais que o navegador dispara quando o
usuário interage. Pode ser um clique, uma tecla, o mouse
passando, um formulário sendo enviado. Esqueça
onclick no HTML isso é coisa de 2010. A
forma moderna, flexível e poderosa é
addEventListener(). Vocês são do futuro.
Usem o futuro."
|
| 10-15 | Tipos de Eventos O Cardápio 📋 |
Apresentação dos principais eventos: click,
keydown, keyup,
mouseover, mouseout,
submit. Mostrar exemplos ao vivo de cada
um. "Cada evento tem um propósito. Clique é para ações.
Teclado é para entrada de dados. Mouse é para navegação.
Formulário é para envio de dados. Escolham o evento
certo para cada situação."
|
| 15-40 | A Hora do Clique (e das Teclas e do Mouse) 🖱️ | Cada grupo adiciona eventos completos ao projeto. Tarefas mínimas: (1) Um botão que, ao ser clicado, altera a página; (2) Um campo de texto que mostra ao vivo o que o usuário está digitando; (3) Um elemento que reage quando o mouse passa por cima. Professor provoca: "E se o usuário apertar ENTER no campo de texto? E se o mouse passar por cima da imagem? E se o formulário for enviado com campos vazios? Testem tudo!" |
| 40-45 | Mostra de Eventos O Festival da Interatividade 🎪 | Cada grupo mostra o que seus eventos fazem. "Quem criou o evento mais útil? O mais criativo? O mais CAÓTICO? (Aquele que buga tudo é sempre o favorito da turma)." |
| 45-48 | Check-in de Interação 🎮 | "Cada reação é uma prova de que o código está vivo. Eventos são o que fazem o usuário sentir que o site está ouvindo. Quando você clica e algo acontece, é uma conversa entre humano e máquina. E essa conversa só acontece porque vocês escreveram o código certo." |
| 48-50 | Fechamento + Provocação 🚀 | "Na semana que vem: DADOS E ARRAYS a biblioteca do caos. Porque interagir é bom, mas GUARDAR os dados para usar depois é melhor ainda." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual |
Use feedback sonoro ou tátil para eventos (ex:
alert com mensagem de áudio); descreva as
interações verbalmente; garanta que eventos de teclado
funcionem com leitores de tela.
|
| Deficiência Auditiva | Use feedback visual para todos os eventos (mudança de cor, animação, texto na tela); evite depender apenas de alertas sonoros. |
| Deficiência Motora | Garanta navegação por teclado (todos os eventos devem funcionar com Enter, não apenas com clique); botões com tamanho adequado (mínimo 44px); evite dependência de mouse. |
| TDAH | Divida em sprints de 10 minutos com intervalos; use cronômetros visuais gigantes; checklist física. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente com poucos estímulos sensoriais. |
| Altas Habilidades |
Desafio extra: "Implemente um evento de
keydown que executa uma ação diferente para
cada tecla crie um pequeno 'atalho de teclado'
personalizado."
|
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Uso de addEventListener |
Utilizou addEventListener() para pelo menos
3 eventos diferentes (não usou onclick no
HTML).
|
0-3 |
| Eventos de Clique | Implementou eventos de clique em botões ou elementos que alteram a página de forma significativa. | 0-2 |
| Eventos de Teclado |
Implementou pelo menos 1 evento de teclado (keydown
ou keyup) com efeito prático.
|
0-2 |
| Eventos de Mouse |
Implementou pelo menos 1 evento de mouse (mouseover
ou mouseout) com efeito prático.
|
0-1 |
| Feedback ao Usuário | O código fornece feedback visual (mudança de cor, texto, animação) para todas as interações. | 0-1 |
| Bônus: Criatividade | Fez algo além do esperado com eventos (jogo, atalhos de teclado, delegação de eventos, etc.). | 0-1 |
| Total | 0-10 |
⏸️ Fim da Semana 6
🎯 Título
"Dados e Arrays: A Biblioteca do Caos" Ou: como organizar a bagunça dos seus dados em listas que fazem sentido (e não deixar tudo virar um caos, porque caos é inimigo da revolução). Até agora, vocês interagiam com o usuário, mas não guardavam nada. Toda interação era efêmera um clique, uma reação, e pronto. Agora vocês vão aprender a armazenar, organizar e manipular dados. E dados, meus caros, são o petróleo do século XXI. Vamos perfurar?
🎯 Objetivos Operacionais
- Compreender o conceito de arrays (listas) como estruturas para armazenar e organizar dados. Um array é uma caixa de ferramentas você coloca coisas dentro e pode pegar, adicionar ou remover quando quiser.
-
Utilizar métodos fundamentais:
push()adiciona no final.pop()remove do final.unshift()adiciona no início.shift()remove do início.splice()adiciona/remove no meio.lengthquantos itens tem?
-
Percorrer arrays com
forEach()efor. Saber andar pela lista é essencial é como passear pelos corredores da biblioteca. - Implementar arrays no projeto para gerenciar dados: lista de tarefas, histórico de usuários, registros de eventos o que sua imaginação permitir.
- Bônus: arrays são caixas de ferramentas mantenha a sua organizada. O RCP-PR destaca a importância de "utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções" (EM13CO05), e arrays são um desses recursos fundamentais.
📚 Conteúdo Programático
- O que são Arrays? Listas ordenadas de valores. Diferente de variáveis simples, que guardam UM valor, arrays guardam VÁRIOS valores em uma única estrutura.
-
Criação e Acesso
[]para criar, acesso por índice (base 0 o primeiro é 0, o segundo é 1, e assim por diante).lengthpara saber quantos itens. -
Métodos Essenciais
push(),pop(),unshift(),shift(),splice(). O kit de sobrevivência para manipular listas. -
Percorrendo Arrays
forEach()(a forma moderna) efor(a forma clássica). Cada uma tem seu lugar. - Arrays no Projeto Como usar arrays para gerenciar dados do mundo real: lista de tarefas, carrinho de compras, histórico de navegação, perfis de usuários.
- Cultura Digital e Dados Refletir sobre como os dados são coletados, armazenados e usados na sociedade digital. O RCP-PR enfatiza que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais" e dados são uma das implicações mais importantes. Quem controla os dados, controla o poder.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Abstração | O array abstrai a complexidade de gerenciar múltiplos dados você não precisa criar uma variável para cada item, apenas uma lista. |
| Reconhecimento de Padrões | O padrão de manipulação de listas se repete em diversos contextos: adicionar, remover, percorrer. Uma vez aprendido, serve para qualquer projeto. |
| Decomposição | Gerenciar dados com arrays envolve decompor o problema em: (1) criar a lista, (2) adicionar itens, (3) remover itens, (4) percorrer a lista. |
| Algoritmos |
Cada método (push, pop,
forEach) é um pequeno algoritmo que resolve
um problema específico.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT304 | Analisar e construir modelos matemáticos para descrever fenômenos e situações do cotidiano. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP08 | Produzir textos de diferentes gêneros, com adequação ao contexto de produção e circulação. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO05 | Utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "utilizar recursos computacionais de forma crítica e criativa" (EM13CO05). O eixo Cultura Digital é fortalecido quando os alunos refletem sobre a importância dos dados na sociedade contemporânea. O RCP-PR também destaca a necessidade de "compreender os impactos sociais das tecnologias digitais" e os dados são o centro dessa compreensão. Saber armazenar e manipular dados é o primeiro passo para entender como eles são usados (e abusados) no mundo digital.
"O RCP-PR propõe que a Educação Digital vá além do uso instrumental, promovendo uma compreensão crítica dos fundamentos, implicações e responsabilidades associadas à tecnologia."
💻 Código Comentado Arrays (Criação, Métodos, Percorrimento)
// ================================================================
// SEMANA 7 DADOS E ARRAYS: A BIBLIOTECA DO CAOS
// "Dados sem estrutura são ruído. Arrays dão estrutura ao ruído."
// ================================================================
// ================================================================
// PASSO 1: O QUE SÃO ARRAYS?
// Arrays são listas ordenadas de valores. O PRIMEIRO índice é 0.
// ================================================================
// Criando um array vazio
const listaVazia = [];
// Criando um array com valores
const frutas = ["Maçã", "Banana", "Laranja", "Uva"];
// Índices: 0 1 2 3
console.log("Frutas:", frutas);
console.log("Primeira fruta:", frutas[0]); // "Maçã"
console.log("Última fruta:", frutas[frutas.length - 1]); // "Uva"
console.log("Total de frutas:", frutas.length); // 4
// Arrays podem ter diferentes tipos de dados
const misturado = ["Texto", 42, true, null, { nome: "João" }];
console.log("Array misturado:", misturado);
// ================================================================
// PASSO 2: MÉTODOS DE ADIÇÃO Colocando coisas no array
// ================================================================
const tarefas = [];
// push() adiciona no FINAL
tarefas.push("Estudar JavaScript");
tarefas.push("Fazer o projeto");
tarefas.push("Revisar o código");
console.log("Tarefas (após push):", tarefas);
// Resultado: ["Estudar JavaScript", "Fazer o projeto", "Revisar o código"]
// unshift() adiciona no INÍCIO
tarefas.unshift("Tomar café");
console.log("Tarefas (após unshift):", tarefas);
// Resultado: ["Tomar café", "Estudar JavaScript", "Fazer o projeto", "Revisar o código"]
// ================================================================
// PASSO 3: MÉTODOS DE REMOÇÃO Tirando coisas do array
// ================================================================
// pop() remove o ÚLTIMO elemento e o retorna
const ultimaTarefa = tarefas.pop();
console.log("Tarefa removida (pop):", ultimaTarefa);
console.log("Tarefas (após pop):", tarefas);
// Resultado: ["Tomar café", "Estudar JavaScript", "Fazer o projeto"]
// shift() remove o PRIMEIRO elemento e o retorna
const primeiraTarefa = tarefas.shift();
console.log("Tarefa removida (shift):", primeiraTarefa);
console.log("Tarefas (após shift):", tarefas);
// Resultado: ["Estudar JavaScript", "Fazer o projeto"]
// ================================================================
// PASSO 4: MÉTODOS DE MANIPULAÇÃO Mexendo no meio do array
// ================================================================
// splice() remove, adiciona ou substitui elementos
// splice(índice, quantidadeRemover, ...itensAdicionar)
const numeros = [10, 20, 30, 40, 50];
console.log("Numeros original:", numeros);
// Remove 1 elemento a partir do índice 2 (o número 30)
const removido = numeros.splice(2, 1);
console.log("Elemento removido:", removido); // [30]
console.log("Numeros após splice:", numeros); // [10, 20, 40, 50]
// Adicionar elementos no meio
numeros.splice(2, 0, 35, 36);
console.log("Numeros após adição:", numeros); // [10, 20, 35, 36, 40, 50]
// ================================================================
// PASSO 5: PERCORRENDO ARRAYS ForEach e For
// ================================================================
const cores = ["Vermelho", "Azul", "Verde", "Amarelo"];
// forEach() executa uma função para cada item (forma moderna)
console.log("=== forEach ===");
cores.forEach(function(cor, indice) {
console.log(`Cor ${indice + 1}: ${cor}`);
});
// for loop forma clássica (mais controle, mais flexível)
console.log("=== for loop ===");
for (let i = 0; i < cores.length; i++) {
console.log(`Índice ${i}: ${cores[i]}`);
}
// for...of forma moderna e simples (menos controle, mais legível)
console.log("=== for...of ===");
for (const cor of cores) {
console.log(cor);
}
// ================================================================
// PASSO 6: MÉTODOS ÚTEIS Busca, filtro, transformação
// ================================================================
const numeros2 = [5, 12, 8, 130, 44, 8];
// indexOf() encontra o índice de um elemento
const posicao = numeros2.indexOf(8);
console.log(`Índice do 8: ${posicao}`); // 2 (primeiro 8)
// includes() verifica se existe
console.log(`Tem 44? ${numeros2.includes(44)}`); // true
console.log(`Tem 100? ${numeros2.includes(100)}`); // false
// filter() cria um novo array com elementos que passam no teste
const maioresQue10 = numeros2.filter(function(numero) {
return numero > 10;
});
console.log("Maiores que 10:", maioresQue10); // [12, 130, 44]
// map() transforma cada elemento em algo novo
const dobrados = numeros2.map(function(numero) {
return numero * 2;
});
console.log("Dobrados:", dobrados); // [10, 24, 16, 260, 88, 16]
// ================================================================
// PASSO 7: ARRAYS DE OBJETOS Dados estruturados de verdade
// ================================================================
const usuarios = [
{ id: 1, nome: "Ana", idade: 17 },
{ id: 2, nome: "Bruno", idade: 18 },
{ id: 3, nome: "Carla", idade: 16 },
{ id: 4, nome: "Daniel", idade: 19 }
];
// Percorrendo e acessando propriedades
usuarios.forEach(usuario => {
console.log(`${usuario.nome} tem ${usuario.idade} anos`);
});
// Filtrar maiores de idade
const maioresDeIdade = usuarios.filter(usuario => usuario.idade >= 18);
console.log("Maiores de idade:", maioresDeIdade);
// Encontrar um usuário específico
const usuarioEncontrado = usuarios.find(usuario => usuario.id === 3);
console.log("Usuário ID 3:", usuarioEncontrado);
// ================================================================
// PASSO 8: EXEMPLO PRÁTICO Lista de Tarefas com Array
// ================================================================
let listaTarefas = [];
function adicionarTarefa(descricao, prioridade = "normal") {
const novaTarefa = {
id: Date.now(),
descricao: descricao,
prioridade: prioridade,
concluida: false,
dataCriacao: new Date().toLocaleString()
};
listaTarefas.push(novaTarefa);
console.log(`✅ Tarefa adicionada: "${descricao}"`);
return novaTarefa;
}
function listarTarefas() {
if (listaTarefas.length === 0) {
console.log("📭 Nenhuma tarefa cadastrada.");
return;
}
console.log("=== LISTA DE TAREFAS ===");
listaTarefas.forEach((tarefa, indice) => {
const status = tarefa.concluida ? "✅" : "⬜";
console.log(`${indice + 1}. ${status} ${tarefa.descricao} (${tarefa.prioridade})`);
});
console.log(`Total: ${listaTarefas.length} tarefas`);
}
function concluirTarefa(id) {
const tarefa = listaTarefas.find(t => t.id === id);
if (tarefa) {
tarefa.concluida = true;
console.log(`✅ Tarefa "${tarefa.descricao}" concluída!`);
} else {
console.log(`❌ Tarefa com ID ${id} não encontrada.`);
}
}
function removerTarefa(id) {
const indice = listaTarefas.findIndex(t => t.id === id);
if (indice !== -1) {
const removida = listaTarefas.splice(indice, 1)[0];
console.log(`🗑️ Tarefa "${removida.descricao}" removida.`);
} else {
console.log(`❌ Tarefa com ID ${id} não encontrada.`);
}
}
// ================================================================
// PASSO 9: CULTURA DIGITAL Dados são poder
// ================================================================
const reflexaoArrays = {
pergunta: "O que acontece com seus dados quando você usa a internet?",
reflexao: "Empresas coletam, armazenam e vendem seus dados.",
desafio: "Como você pode usar arrays para proteger, não explorar, dados?",
conclusao: "Dados são poder. Use esse poder para libertar, não para controlar."
};
console.log("✅ Arrays carregados. Dados organizados.");
console.log("📊 Use as funções para gerenciar tarefas.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Organiza 📚 | "Quem aqui já perdeu uma tarefa importante? Já esqueceu uma senha? Já se perdeu na lista de coisas para fazer? A vida é um caos de informações e arrays são a forma de organizar esse caos. Hoje vocês vão aprender a construir a BIBLIOTECA dos seus dados." Professor faz uma lista no quadro e pergunta: "Como a gente guardaria isso em código?" |
| 5-10 | O que são Arrays? 📦 |
"Arrays são listas ordenadas. O primeiro elemento é
SEMPRE o índice 0. O segundo é 1. E assim por diante. É
como uma estante de livros: cada livro tem sua posição."
Demonstração ao vivo: criar um array, acessar elementos,
usar length.
|
| 10-15 | Métodos Essenciais O Kit de Sobrevivência 🛠️ |
Demonstração de push() (adicionar no
final), pop() (remover do final),
unshift() (adicionar no início),
shift() (remover do início),
splice() (mexer no meio). "Esses são os
movimentos básicos. É como aprender a abrir a porta,
fechar a porta, guardar e pegar coisas. Sem isso, você
não entra na biblioteca."
|
| 15-40 | Organizando o Caos 📋 | Cada grupo implementa arrays no projeto. Tarefas mínimas: (1) Criar um array para armazenar algo (tarefas, usuários, registros); (2) Adicionar itens ao array; (3) Remover ou modificar itens; (4) Percorrer o array e exibir na tela. Professor provoca: "O que mais você pode guardar num array? Nomes, notas, históricos, cliques, tudo! Seus dados merecem organização." |
| 40-45 | Mostra de Arrays A Grande Biblioteca 🎪 | Cada grupo mostra como usou arrays no projeto. "Quem criou o array mais útil? O mais criativo? Quem perdeu todos os dados porque esqueceu que índice começa em 0?" |
| 45-48 | Check-in de Organização 📊 | "Dados organizados são a base de qualquer sistema que presta. Se seus dados estão bagunçados, seu sistema vai quebrar. Arrays são seus primeiros passos para se tornar um mestre dos dados. E dados são poder. Saber guardá-los e manipulá-los é o que separa um bom programador de um programador que passa raiva." |
| 48-50 | Fechamento + Provocação 🚀 | "Na semana que vem: FUNÇÕES o exército da revolução. Vocês vão aprender a criar seus próprios comandos. Porque código repetido é código que dá preguiça e preguiça é inimiga da revolução." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela para ler os arrays; descreva a estrutura verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (atalhos para navegação). |
| TDAH | Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos. |
| Altas Habilidades |
Desafio extra: "Implemente um sistema de busca dentro do
array usando filter e
find para encontrar itens específicos. Ou
crie um array de objetos com múltiplas propriedades e
percorra-o."
|
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Criação do Array | Criou um array para armazenar dados no projeto (ex: tarefas, usuários, registros). | 0-2 |
| Métodos de Adição |
Utilizou push() e/ou
unshift() para adicionar itens ao array.
|
0-2 |
| Métodos de Remoção |
Utilizou pop() e/ou
shift() para remover itens do array.
|
0-2 |
| Percorrimento |
Usou forEach() ou for para
percorrer o array e exibir dados na interface.
|
0-2 |
| Manipulação do DOM | Atualizou a interface (HTML) com base nos dados do array (ex: exibir lista de tarefas). | 0-2 |
| Total | 0-10 |
⏸️ Fim da Semana 7
🎯 Título
"Funções: O Exército do Adeus" Ou: como ensinar seu código a fazer truques novos sem repetir a mesma coisa 500 vezes (e sem enlouquecer no processo). Até agora, vocês escreveram código que funciona, mas provavelmente é um grande bloco de instruções que se repetem. Funções são a solução para esse caos. Elas são como receitas de bolo você escreve uma vez, testa, e usa quantas vezes quiser. E o melhor: se precisar mudar, muda em um lugar só. Isso se chama eficiência. E eficiência é o que separa os amadores dos profissionais.
🎯 Objetivos Operacionais
- Compreender o conceito de funções como blocos de código reutilizáveis. Uma função é um mini-programa dentro do seu programa.
- Criar funções com parâmetros (o que a função espera receber) e retorno de valores (o que a função devolve). Parâmetros são os ingredientes; retorno é o bolo pronto.
- Utilizar funções para organizar e modularizar o código do projeto. Código organizado é código que você não tem vergonha de mostrar no GitHub.
- Refatorar o código do projeto para usar funções transformar código repetido em funções reutilizáveis. Essa é a arte de melhorar sem mudar o comportamento.
- Bônus: funções são os blocos de construção sem elas, o código vira um macarrão. O RCP-PR enfatiza a habilidade de "planejar e executar projetos de desenvolvimento de software" (EM13CO07), e funções são essenciais para um bom planejamento.
📚 Conteúdo Programático
- O que são Funções? Sub-rotinas que realizam uma tarefa específica. Elas recebem, processam e devolvem. É a unidade básica de organização do código.
-
Anatomia de uma Função
function nome(parâmetros) { corpo }. A estrutura é sempre a mesma; o que muda é o que vai dentro. - Parâmetros vs Argumentos O que a função espera (parâmetros) vs o que é passado na chamada (argumentos). Entender essa diferença é crucial.
-
Retorno (
return) O que a função devolve para quem a chamou. Semreturn, a função só executa, mas não dá resposta. - Refatoração Como transformar código repetido em funções reutilizáveis. O processo de limpar a bagunça.
- Cultura Digital e Colaboração Refletir sobre como funções permitem que equipes colaborem em projetos grandes. O RCP-PR destaca que a Educação Digital deve "promover o protagonismo e a autoria", e em projetos reais, ninguém escreve um sistema inteiro sozinho funções permitem que cada pessoa trabalhe em uma parte específica.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Algoritmos | Cada função é um pequeno algoritmo: recebe entradas, processa, retorna saída. |
| Decomposição | O problema é decomposto em funções menores e especializadas cada função resolve uma parte do problema. |
| Abstração | A função abstrai a complexidade: quem chama a função não precisa saber como ela faz, só precisa saber o que ela faz. |
| Reconhecimento de Padrões |
O padrão function nome() { } se repete; a
estrutura de parâmetros e retorno também é um padrão.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT401 | Aplicar conceitos matemáticos (funções, equações, gráficos) na compreensão e resolução de problemas. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP09 | Produzir textos de diferentes gêneros, com adequação ao contexto. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO07 | Planejar e executar projetos de desenvolvimento de software, considerando aspectos como usabilidade, acessibilidade, ética e sustentabilidade. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "planejar e executar projetos de software" (EM13CO07). O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a decompor problemas em funções. O RCP-PR também destaca a importância da "organização e modularização" no desenvolvimento de soluções computacionais. Funções são a base dessa organização. Além disso, o RCP-PR enfatiza que a Educação Digital deve "preparar os estudantes para atuar em projetos colaborativos" e funções são a forma como times de desenvolvimento dividem o trabalho.
"O RCP-PR propõe que a Educação Digital desenvolva competências para o trabalho colaborativo e a construção coletiva de soluções."
💻 Código Comentado Funções (Declaração, Parâmetros, Retorno, Refatoração)
// ================================================================
// SEMANA 8 FUNÇÕES: O EXÉRCITO DO ADEUS
// "Função é uma receita de bolo. Escreva uma vez, use várias."
// ================================================================
console.log("🧠 Funções carregadas. Prontas para serem usadas.");
// ================================================================
// PASSO 1: O QUE SÃO FUNÇÕES?
// Estrutura básica:
// function nomeDaFuncao(parametro1, parametro2) {
// // corpo da função
// return resultado;
// }
// ================================================================
// Exemplo 1: Função simples (sem parâmetros, sem retorno)
function saudacao() {
console.log("Olá, revolucionário! 🚀");
}
saudacao();
// Exemplo 2: Função com parâmetros (sem retorno)
function saudacaoPersonalizada(nome) {
console.log(`Olá, ${nome}! A revolução precisa de você.`);
}
saudacaoPersonalizada("Ana");
saudacaoPersonalizada("Bruno");
// Exemplo 3: Função com parâmetros e retorno
function calcularDobro(numero) {
return numero * 2;
}
const resultado = calcularDobro(10);
console.log("O dobro de 10 é:", resultado); // 20
// Exemplo 4: Função com múltiplos parâmetros
function calcularMedia(nota1, nota2, nota3) {
const soma = nota1 + nota2 + nota3;
const media = soma / 3;
return media;
}
const mediaAluno = calcularMedia(7, 8, 9);
console.log("Média do aluno:", mediaAluno);
// ================================================================
// PASSO 2: PARÂMETROS VS ARGUMENTOS
// ================================================================
function saudacaoCompleta(nome, saudacao = "Olá") {
return `${saudacao}, ${nome}!`;
}
console.log(saudacaoCompleta("Maria")); // "Olá, Maria!"
console.log(saudacaoCompleta("João", "Bem-vindo")); // "Bem-vindo, João!"
function potencia(base, expoente = 2) {
return Math.pow(base, expoente);
}
console.log(potencia(3)); // 9 (3²)
console.log(potencia(3, 3)); // 27 (3³)
// ================================================================
// PASSO 3: ESCOPO DE VARIÁVEIS Onde as variáveis "vivem"
// ================================================================
let variavelGlobal = "Estou em todo lugar!";
function exemploEscopo() {
let variavelLocal = "Estou só dentro da função!";
console.log("Dentro da função:");
console.log("- Global:", variavelGlobal);
console.log("- Local:", variavelLocal);
}
exemploEscopo();
console.log("Fora da função:");
console.log("- Global:", variavelGlobal);
// console.log(variavelLocal); // ERRO! variavelLocal não existe aqui
// ================================================================
// PASSO 4: FUNÇÕES COM RETORNO O que elas devolvem
// ================================================================
function calcularIMC(peso, altura) {
return peso / (altura * altura);
}
function classificarIMC(imc) {
if (imc < 18.5) return "Abaixo do peso";
if (imc < 25) return "Peso normal";
if (imc < 30) return "Sobrepeso";
if (imc < 35) return "Obesidade grau I";
if (imc < 40) return "Obesidade grau II";
return "Obesidade grau III";
}
function avaliarPeso(peso, altura) {
const imc = calcularIMC(peso, altura);
const classificacao = classificarIMC(imc);
return `IMC: ${imc.toFixed(1)} ${classificacao}`;
}
console.log(avaliarPeso(70, 1.75)); // "IMC: 22.9 Peso normal"
// ================================================================
// PASSO 5: FUNÇÕES QUE CHAMAM OUTRAS FUNÇÕES Composição
// ================================================================
function formatarNome(nome) {
return nome.trim().toUpperCase();
}
function gerarSaudacao(nome) {
return `Olá, ${formatarNome(nome)}!`;
}
function gerarDespedida(nome) {
return `Até logo, ${formatarNome(nome)}!`;
}
function interagirComUsuario(nome, acao) {
const nomeFormatado = formatarNome(nome);
if (acao === "saudacao") {
return gerarSaudacao(nomeFormatado);
} else if (acao === "despedida") {
return gerarDespedida(nomeFormatado);
} else {
return `Olá, ${nomeFormatado}! O que você deseja?`;
}
}
console.log(interagirComUsuario(" ana ", "saudacao")); // "Olá, ANA!"
console.log(interagirComUsuario(" carlos ", "despedida")); // "Até logo, CARLOS!"
// ================================================================
// PASSO 6: FUNÇÕES ANÔNIMAS E ARROW FUNCTIONS Formas modernas
// ================================================================
// Função anônima (sem nome) atribuída a uma variável
const somar = function(a, b) {
return a + b;
};
console.log("Soma (anônima):", somar(5, 3));
// Arrow function forma moderna, mais concisa
const multiplicar = (a, b) => {
return a * b;
};
console.log("Multiplicação (arrow):", multiplicar(5, 3));
// Arrow function com retorno implícito (sem {} e sem return)
const dividir = (a, b) => a / b;
console.log("Divisão (arrow implícita):", dividir(10, 2));
// Arrow function com um parâmetro (pode omitir parênteses)
const quadrado = x => x * x;
console.log("Quadrado:", quadrado(5));
// ================================================================
// PASSO 7: REFATORAÇÃO Transformando código repetido em funções
// ================================================================
// ANTES: Código repetido (problema!)
function antes() {
const lado1 = 5;
const area1 = lado1 * lado1;
console.log("Área 1:", area1);
const lado2 = 7;
const area2 = lado2 * lado2;
console.log("Área 2:", area2);
const lado3 = 3;
const area3 = lado3 * lado3;
console.log("Área 3:", area3);
}
// DEPOIS: Código refatorado (solução!)
function calcularAreaQuadrado(lado) {
return lado * lado;
}
function depois() {
const areas = [5, 7, 3];
areas.forEach((lado, indice) => {
const area = calcularAreaQuadrado(lado);
console.log(`Área ${indice + 1}:`, area);
});
}
console.log("\n--- ANTES DA REFATORAÇÃO ---");
antes();
console.log("\n--- DEPOIS DA REFATORAÇÃO ---");
depois();
// ================================================================
// PASSO 8: EXEMPLO PRÁTICO Sistema de Tarefas com Funções
// ================================================================
let tarefasSistema = [];
function criarTarefa(descricao, prioridade = "normal") {
const novaTarefa = {
id: Date.now(),
descricao: descricao,
prioridade: prioridade,
concluida: false,
dataCriacao: new Date().toLocaleString()
};
tarefasSistema.push(novaTarefa);
return novaTarefa;
}
function listarTarefas(filtro = null) {
let lista = tarefasSistema;
if (filtro === "concluidas") {
lista = tarefasSistema.filter(t => t.concluida);
} else if (filtro === "pendentes") {
lista = tarefasSistema.filter(t => !t.concluida);
} else if (filtro === "alta") {
lista = tarefasSistema.filter(t => t.prioridade === "alta");
}
return lista;
}
function atualizarTarefa(id, novosDados) {
const tarefa = tarefasSistema.find(t => t.id === id);
if (!tarefa) return null;
if (novosDados.descricao) tarefa.descricao = novosDados.descricao;
if (novosDados.prioridade) tarefa.prioridade = novosDados.prioridade;
if (novosDados.concluida !== undefined) tarefa.concluida = novosDados.concluida;
return tarefa;
}
function deletarTarefa(id) {
const indice = tarefasSistema.findIndex(t => t.id === id);
if (indice === -1) return false;
tarefasSistema.splice(indice, 1);
return true;
}
// ================================================================
// PASSO 9: CULTURA DIGITAL Código colaborativo
// ================================================================
const reflexaoFuncoes = {
pergunta: "Como funções permitem que equipes trabalhem juntas?",
reflexao: "Cada pessoa pode escrever uma função diferente.",
desafio: "Como você pode dividir o trabalho do seu projeto em funções?",
conclusao: "Funções são a base da colaboração. E colaboração é a base da revolução."
};
console.log("✅ Funções carregadas. Exército pronto para a batalha.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Modulariza 🧩 | "Quem aqui já copiou e colou o mesmo código 5 vezes? Quem já passou raiva tendo que corrigir o mesmo erro em 10 lugares diferentes? Funções são como RECEITAS DE BOLO: você escreve uma vez, testa, e usa quantas vezes quiser. Hoje vocês vão aprender a criar suas próprias receitas e nunca mais vão repetir código desnecessariamente." |
| 5-10 | O que são Funções? 🧠 | "Funções recebem parâmetros (ingredientes), processam (preparam) e retornam um resultado (servem o bolo). Elas são o CORAÇÃO da programação moderna. Sem funções, seu código é um bloco único e monolítico que ninguém entende. Com funções, seu código vira um LEGO cada peça encaixa na outra." |
| 10-15 | Anatomia de uma Função A Receita 🔬 |
Demonstração de function com parâmetros e
retorno. Mostrar a diferença entre função que só executa
(sem return) e função que devolve um valor
(com return). "Se você não usa
return, sua função faz algo, mas não fala
com você de volta. É como fazer um bolo e não provar
você nunca sabe se ficou bom."
|
| 15-40 | Modularizando a Revolução 🔨 | Cada grupo refatora o código do projeto para usar funções. Tarefas mínimas: (1) Identificar código repetido e transformar em função; (2) Criar funções com parâmetros para operações comuns; (3) Usar funções para organizar o fluxo do programa. Professor provoca: "O que se repete? O que pode virar uma função? E se você tivesse uma função que recebe dados e devolve HTML formatado? E se você criasse uma função de validação?" |
| 40-45 | Mostra de Funções O Exército em Ação 🎪 | Cada grupo mostra como refatorou o código. "Quem tem a função mais elegante? A mais útil? A mais criativa? Quem transformou 50 linhas de código em 10 linhas bem organizadas?" |
| 45-48 | Check-in de Modularização 🧹 | "Código organizado é código que você não tem vergonha de mostrar. Funções são a base da organização. Quando você escreve funções, está se preparando para trabalhar em equipe cada um cuida de uma função, e tudo se encaixa. Isso é profissionalismo." |
| 48-50 | Fechamento + Provocação 🚀 | "Na semana que vem: DEBUG E POLIMENTO a batalha final. Porque código perfeito não existe, mas código bem testado e polido é o que separa os projetos que funcionam dos projetos que explodem na cara do usuário." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela para ler o código; descreva a estrutura das funções verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito passo a passo; use exemplos visuais claros. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (atalhos para navegação e auto-complete). |
| TDAH | Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física para cada etapa. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos. |
| Altas Habilidades | Desafio extra: "Crie uma função de ordem superior que recebe outra função como parâmetro por exemplo, uma função 'executarComLog' que executa qualquer função e registra o que aconteceu." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Declaração de Funções | Criou pelo menos 5 funções diferentes no projeto (com nomes significativos). | 0-3 |
| Parâmetros e Retorno |
As funções recebem parâmetros e retornam valores
corretamente (uso de return).
|
0-2 |
| Modularização | O código está dividido em funções com responsabilidades claras (cada função faz uma coisa). | 0-3 |
| Refatoração | Refatorou código repetido para usar funções reduziu duplicação. | 0-2 |
| Total | 0-10 |
⏸️ Fim da Semana 8
🎯 Título
"Debug e Polimento: A Batalha Final" Ou: como transformar um projeto quebrado em uma obra-prima (ou pelo menos em algo que não explode quando alguém clica). Até agora, vocês construíram, estilizaram, deram vida e organizaram. Mas o código nunca funciona de primeira. Programar não é sobre escrever código perfeito é sobre encontrar e corrigir erros até que o código funcione. E isso, meus caros, é a verdadeira arte da programação. Hoje vocês vão aprender a caçar bugs como verdadeiros detetives digitais.
🎯 Objetivos Operacionais
- Compreender a importância de testar e depurar como parte essencial do desenvolvimento. Debug não é uma etapa opcional é tão importante quanto escrever o código.
-
Utilizar ferramentas de debug:
console.log(),console.error(),debugger, breakpoints no DevTools. O arsenal do caçador de bugs. -
Identificar e corrigir diferentes tipos de erro:
- Sintaxe você escreveu algo errado (falta vírgula, parêntese, chave).
- Referência você usou algo que não existe (variável não declarada).
- Lógica o código roda, mas faz a coisa ERRADA (o pior de todos).
-
Runtime o código quebra durante a execução (tipo
nullque não tem propriedade).
- Refatorar o código para melhorar legibilidade e manutenibilidade. Código limpo é código que você consegue entender 6 meses depois.
- Bônus: errar é humano o computador só faz o que você manda, não o que você quer. O RCP-PR enfatiza a habilidade de "refletir sobre o processo de construção de soluções computacionais, identificando aprendizados, desafios e possibilidades de melhoria" (EM13CO09). Debug é reflexão em ação.
📚 Conteúdo Programático
- Tipos de Erro Sintaxe, referência, lógica, runtime. Conheça seu inimigo antes de combatê-lo.
-
Ferramentas de Debug
console.log(),console.error(),console.table(),debugger, breakpoints no DevTools. Cada ferramenta tem um propósito. - Estratégias de Debug Isolar o problema, reproduzir o erro, ler as mensagens de erro. O método científico aplicado ao código.
- Refatoração Reescrever código para melhorar sem mudar o comportamento. Deixar mais limpo, mais legível, mais eficiente.
- Polimento Final Últimos ajustes de design, usabilidade, acessibilidade. Os detalhes que fazem a diferença entre "funciona" e "é incrível".
- Cultura Digital e Qualidade Refletir sobre a importância da qualidade em produtos digitais. O RCP-PR destaca que a Educação Digital deve "promover a compreensão crítica das tecnologias" e qualidade é uma questão ética. Produtos digitais mal feitos excluem, frustram e podem até causar danos.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Decomposição | O problema "o código não funciona" é decomposto em partes menores: isolar a função, testar a entrada, testar a saída, verificar cada linha. |
| Algoritmos | O processo de debug segue uma sequência lógica: reproduzir → isolar → corrigir → testar. É um algoritmo de resolução de problemas. |
| Abstração | Durante o debug, você abstrai o que deveria acontecer e compara com o que está acontecendo. A diferença é onde está o bug. |
| Reconhecimento de Padrões |
Erros se repetem. Reconhecer padrões de erro (ex:
undefined geralmente significa que você
esqueceu de declarar ou atribuir) acelera a correção.
|
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT402 | Utilizar o raciocínio lógico e a linguagem matemática para compreender e resolver problemas. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP10 | Revisar e editar textos produzidos, considerando a adequação ao contexto. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO09 | Refletir sobre o processo de construção de soluções computacionais, identificando aprendizados, desafios e possibilidades de melhoria. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "refletir sobre o processo de construção de soluções" (EM13CO09). O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a identificar e corrigir erros porque errar é humano, mas saber corrigir é uma habilidade que se aprende. O RCP-PR também destaca que a Educação Digital deve "promover a autonomia e a resiliência" e nada ensina resiliência como passar 30 minutos procurando um ponto-e-vírgula faltando.
"O RCP-PR propõe que os estudantes desenvolvam a capacidade de aprender com os erros e de persistir na busca por soluções."
💻 Código Comentado Debug (Tipos de Erro, Ferramentas, Estratégias)
// ================================================================
// SEMANA 9 DEBUG E POLIMENTO: A BATALHA FINAL
// "Debug é o processo de remover bugs. Programação é o processo de colocá-los."
// ================================================================
console.log("🐛 Caçadores de bugs, preparem-se!");
// ================================================================
// PASSO 1: TIPOS DE ERRO Conheça seu inimigo
// ================================================================
// 1. ERRO DE SINTAXE Você escreveu algo errado
// Exemplo: falta de fechamento de parênteses
// function minhaFuncao() { // ← ESSA LINHA DARIA ERRO
// console.log("Olá"
// } // ← Faltou fechar o parêntese do console.log
// 2. ERRO DE REFERÊNCIA Você usou algo que não existe
function exemploReferencia() {
try {
console.log(variavelInexistente); // ReferenceError!
} catch (erro) {
console.error("❌ Erro de referência:", erro.message);
console.log("💡 Solução: A variável não foi declarada.");
}
}
exemploReferencia();
// 3. ERRO DE LÓGICA O código roda, mas faz a coisa ERRADA
function calcularMediaErrada(notas) {
let soma = 0;
for (let i = 0; i <= notas.length; i++) { // <= é o problema!
soma += notas[i];
}
return soma / notas.length; // Vai dar NaN ou valor errado
}
// Versão corrigida:
function calcularMediaCorreta(notas) {
let soma = 0;
for (let i = 0; i < notas.length; i++) {
soma += notas[i];
}
return soma / notas.length;
}
// 4. ERRO DE RUNTIME O código quebra durante a execução
function dividirPorZero() {
try {
const objeto = null;
console.log(objeto.propriedade); // TypeError!
} catch (erro) {
console.error("❌ Erro de runtime:", erro.message);
console.log("💡 Solução: Verifique se o objeto não é null antes de acessar propriedades.");
}
}
dividirPorZero();
// ================================================================
// PASSO 2: FERRAMENTAS DE DEBUG O arsenal do caçador
// ================================================================
// 1. console.log() O MAIS USADO
console.log("🔍 Isso é um log normal.");
console.warn("⚠️ Isso é um aviso.");
console.error("❌ Isso é um erro.");
console.info("ℹ️ Isso é uma informação.");
// 2. console.table() Mostra arrays/objetos em tabela (MUITO útil)
const usuariosDebug = [
{ nome: "Ana", idade: 17 },
{ nome: "Bruno", idade: 18 },
{ nome: "Carla", idade: 16 }
];
console.table(usuariosDebug);
// 3. console.group() Agrupa logs relacionados
console.group("🔍 Debug da Função Soma");
console.log("Parâmetros recebidos:", 5, 3);
console.log("Resultado calculado:", 5 + 3);
console.log("Resultado esperado:", 8);
console.groupEnd();
// 4. debugger Pausa a execução (se o DevTools estiver aberto)
function funcaoComDebugger(a, b) {
debugger; // A execução PARA aqui. Você pode inspecionar variáveis.
const resultado = a + b;
console.log("Resultado:", resultado);
return resultado;
}
// 5. try...catch Captura erros graciosamente
function executarComSeguranca(funcao) {
try {
return funcao();
} catch (erro) {
console.error("❌ Algo deu errado:", erro.message);
console.log("💡 Mas não se preocupe o programa continua!");
return null;
}
}
const resultadoSeguro = executarComSeguranca(() => {
return variavelQueNaoExiste;
});
console.log("Resultado seguro:", resultadoSeguro);
// ================================================================
// PASSO 3: ESTRATÉGIAS DE DEBUG Como encontrar o bug
// ================================================================
function encontrarBug(notas) {
console.log("🔍 PASSO 1: Verificando entrada:", notas);
if (!Array.isArray(notas) || notas.length === 0) {
console.warn("⚠️ Lista de notas inválida!");
return 0;
}
let soma = 0;
console.log("🔍 PASSO 2: Iniciando soma...");
for (let i = 0; i < notas.length; i++) {
console.log(` - Adicionando notas[${i}] = ${notas[i]}`);
soma += notas[i];
}
console.log("🔍 PASSO 3: Soma total =", soma);
const media = soma / notas.length;
console.log("🔍 PASSO 4: Média calculada =", media);
return media;
}
// ================================================================
// PASSO 4: VALIDAÇÃO DE DADOS Prevenindo bugs
// ================================================================
function validarNumero(valor, nome = "valor") {
if (typeof valor !== "number") {
throw new Error(`${nome} deve ser um número. Recebido: ${typeof valor}`);
}
if (isNaN(valor)) {
throw new Error(`${nome} não pode ser NaN (Not a Number)`);
}
if (!isFinite(valor)) {
throw new Error(`${nome} não pode ser infinito`);
}
return true;
}
function processarDadosSeguro(nome, idade) {
try {
if (typeof nome !== "string" || nome.trim() === "") {
throw new Error("Nome deve ser uma string não vazia");
}
validarNumero(idade, "Idade");
if (idade < 0 || idade > 150) {
throw new Error("Idade deve estar entre 0 e 150 anos");
}
return `Usuário ${nome} tem ${idade} anos. Válido! ✅`;
} catch (erro) {
console.error("❌ Erro de validação:", erro.message);
return null;
}
}
console.log(processarDadosSeguro("Ana", 17)); // ✅
console.log(processarDadosSeguro("", 17)); // ❌
console.log(processarDadosSeguro("Bruno", -5)); // ❌
// ================================================================
// PASSO 5: REFATORAÇÃO Melhorando o código
// ================================================================
// ANTES: Código confuso, difícil de entender
function antesRefatoracao(array) {
let a = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] > 0) {
a = a + array[i];
}
}
let b = a / array.length;
return b;
}
// DEPOIS: Código claro, cada parte faz uma coisa
function calcularMediaPositivos(numeros) {
const positivos = numeros.filter(num => num > 0);
if (positivos.length === 0) return 0;
const soma = positivos.reduce((acumulador, num) => acumulador + num, 0);
return soma / positivos.length;
}
console.log("Média dos positivos:", calcularMediaPositivos([-5, 10, -3, 8, 12]));
// ================================================================
// PASSO 6: CHECKLIST DE POLIMENTO O que revisar antes de lançar
// ================================================================
const checklistPolimento = {
codigo: [
"✅ Removeu todos os console.log() de debug (ou deixou apenas os importantes)?",
"✅ Nomes de variáveis e funções são claros e descritivos?",
"✅ Código está indentado e organizado?",
"✅ Não há código comentado (morto) que deveria ser removido?"
],
design: [
"✅ O site funciona em celular (responsividade)?",
"✅ As cores têm contraste suficiente (acessibilidade)?",
"✅ As fontes são legíveis (tamanho mínimo 16px)?",
"✅ Os botões são grandes o suficiente para clicar (mínimo 44px)?"
],
usabilidade: [
"✅ O usuário sabe o que fazer quando entra no site?",
"✅ Há feedback visual para cada ação do usuário?",
"✅ Os erros são explicados de forma amigável?"
],
acessibilidade: [
"✅ As imagens têm alt text?",
"✅ O HTML usa tags semânticas?",
"✅ O site pode ser navegado pelo teclado (sem mouse)?"
]
};
console.log("✅ Debug finalizado. Código polido e pronto.");
console.log("📋 Use o checklist antes de apresentar!");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | O Gancho que Corrige 🐛 | Professor entra com um código cheio de erros e pergunta: "Quem aqui já passou HORAS tentando descobrir por que o código não funciona? O problema não é ter erros é não saber como ENCONTRÁ-LOS. Hoje vocês vão se tornar CAÇADORES DE BUGS. E vou dizer uma verdade que dói: programar é 10% escrever código e 90% descobrir por que ele não funciona. Bem-vindos aos 90%." |
| 5-10 | Tipos de Erro Conheça seu Inimigo 🎯 | Explicação dos 4 tipos de erro: Sintaxe (erro de escrita), Referência (variável não existe), Lógica (faz errado), Runtime (quebra durante a execução). Mostrar exemplos ao vivo de cada um. "O pior é o erro de lógica o código roda, não dá erro, mas o resultado está ERRADO. E aí você passa horas achando que o problema é em outro lugar." |
| 10-15 | Ferramentas de Debug O Arsenal 🛠️ |
Demonstração de console.log() (o básico),
console.table() (mostra dados em tabela),
console.group() (organiza),
debugger (pausa a execução), breakpoints no
DevTools. "Cada ferramenta tem um propósito. Use a certa
para cada situação."
|
| 15-40 | Caça aos Bugs A Grande Expedição 🔍 | Cada grupo testa, identifica e corrige bugs no seu projeto. Tarefas: (1) Executar o projeto e anotar todos os bugs; (2) Classificar os bugs por tipo (sintaxe, referência, lógica, runtime); (3) Corrigir os bugs; (4) Refatorar código repetido. Professor provoca: "O que está quebrado? Como você descobriu? Qual foi o bug mais ridículo? (aquele que estava na sua cara o tempo todo)." |
| 40-45 | Mostra de Debug O Festival dos Bugs 🎪 | Cada grupo compartilha o bug mais ridículo que encontrou aquele que fez todo mundo rir (ou chorar). "Quem achou o bug mais absurdo? Quem teve o erro mais 'carinha de humilhação'?" |
| 45-48 | Check-in de Resiliência 💪 | "Cada bug corrigido é um nível ganho. Debug é sobre resiliência sobre não desistir quando as coisas não funcionam. E vocês passaram no teste. Vocês são caçadores de bugs." |
| 48-50 | Fechamento + Provocação 🚀 | "Na semana que vem: LANÇAMENTO OFICIAL o mundo vai ver (e chorar). Preparem seus pitches, suas demonstrações, e suas caras de 'eu sei o que estou fazendo' mesmo que o código esteja segurando com fita adesiva." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela para narrar as mensagens de erro; descreva as mensagens de erro verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis e bem formatadas. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado e auto-complete para reduzir digitação. |
| TDAH | Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física com etapas claras. |
| TEA | Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos. |
| Altas Habilidades | Desafio extra: "Crie um sistema de testes automatizados para seu projeto funções que testam outras funções automaticamente." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Identificação de Bugs | Encontrou e documentou pelo menos 3 bugs no projeto (com descrição do problema). | 0-3 |
| Correção de Bugs | Corrigiu os bugs de forma correta e funcional (o código passou a funcionar como esperado). | 0-3 |
| Uso do Console |
Utilizou console.log() ou outras
ferramentas de debug (console.table, console.group,
debugger) de forma estratégica.
|
0-2 |
| Refatoração | Melhorou a legibilidade do código (renomeou variáveis, organizou funções, removeu código morto). | 0-2 |
| Total | 0-10 |
⏸️ Fim da Semana 9
🎯 Título
"Lançamento Oficial: O Mundo Vai Ver (e Chorar)" Ou: como apresentar sua revolução para o mundo (e sobreviver às perguntas e sair de cabeça erguida, mesmo se o código pifar na hora). Chegou o dia. O dia em que todo o suor, lágrimas, noites em claro e bugs corrigidos se transformam em algo que o mundo pode ver, tocar e (com sorte) usar. Hoje vocês não são mais alunos. Hoje vocês são fundadores, criadores, revolucionários digitais. O palco é de vocês.
🎯 Objetivos Operacionais
- Apresentar o projeto final para a turma e convidados em um formato de Shark Tank / Demo Day. Vocês venderão sua ideia como se o futuro do mundo dependesse disso porque, de certa forma, depende.
-
Demonstrar o protótipo em ação ao vivo sem rede de
segurança, sem edição, sem "deixa eu tentar de novo".
Mostrar o projeto funcionando (ou lidar com graça se ele não
funcionar). A vida real não tem
ctrl+z. - Refletir sobre o processo de aprendizagem o que aprenderam, o que foi difícil, o que mudou. A jornada é tão importante quanto o destino.
- Celebrar as conquistas do bimestre e reconhecer o esforço de cada um. Vocês construíram algo do zero. Isso merece ser celebrado.
- Bônus: entender que o fim é só o começo de algo maior. O RCP-PR enfatiza a habilidade de "comunicar e compartilhar soluções computacionais, considerando diferentes públicos e contextos" (EM13CO08). Hoje vocês vão fazer exatamente isso.
📚 Conteúdo Programático
- Pitch Como apresentar um projeto de forma convincente em 3 minutos. A arte de vender uma ideia.
- Demonstração ao Vivo Mostrar o projeto funcionando (e lidar com imprevistos). É aqui que o código encontra o mundo real.
- Perguntas e Respostas Como responder à banca com confiança. Não saber tudo é OK saber como lidar com isso é o que importa.
- Autoavaliação Refletir sobre o que aprendeu e como cresceu. A nota que você dá a si mesmo vale mais do que qualquer nota de professor.
- Celebração Reconhecer o esforço e a evolução de cada um. Vocês merecem.
- Cultura Digital e Protagonismo Refletir sobre o papel de cada um como criador digital. O RCP-PR destaca que a Cultura Digital envolve "o protagonismo e a autoria na vida pessoal e coletiva". Hoje vocês são protagonistas.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Todos os Pilares | A apresentação integrada exige que os alunos demonstrem compreensão de todos os pilares abstração (explicar o MVP), decomposição (explicar as partes do projeto), reconhecimento de padrões (justificar escolhas), algoritmos (explicar o fluxo). |
| Abstração | O pitch exige abstrair o projeto em sua essência o que ele faz, por que importa, e como funciona sem se perder em detalhes técnicos desnecessários. |
| Algoritmos | O fluxo da apresentação é um algoritmo: abertura → problema → solução → demo → fechamento → perguntas. |
📜 Habilidades BNCC e RCP-PR
BNCC Matemática:
| Código | Habilidade |
|---|---|
| EM13MAT501 | Comunicar ideias matemáticas de forma clara, precisa e contextualizada. |
BNCC Linguagens:
| Código | Habilidade |
|---|---|
| EM13LP11 | Apresentar e defender pontos de vista em situações de debate. |
BNCC Computação (Complemento à BNCC):
| Código | Habilidade |
|---|---|
| EM13CO08 | Comunicar e compartilhar soluções computacionais, considerando diferentes públicos e contextos. |
RCP-PR (Referencial Curricular do Paraná, 2025):
O RCP-PR orienta o desenvolvimento da habilidade de "comunicar e compartilhar soluções computacionais" (EM13CO08). O eixo Cultura Digital é fortalecido quando os alunos reconhecem seu papel como protagonistas na criação digital. O RCP-PR destaca que a Educação Digital deve "promover o protagonismo e a autoria" e apresentar um projeto criado por vocês é a expressão máxima desse protagonismo.
"O RCP-PR propõe que a Educação Digital desenvolva a capacidade de usar a tecnologia para expressar ideias, resolver problemas e transformar a realidade."
💻 Código Comentado Preparação para o Pitch (Roteiro e Checklist)
// ================================================================
// SEMANA 10 LANÇAMENTO OFICIAL: O MUNDO VAI VER
// "O que importa não é o código. É a história que você tem para contar."
// ================================================================
console.log("🎤 Modo apresentação ativado. Preparem-se para brilhar.");
// ================================================================
// PASSO 1: PREPARAÇÃO PARA O PITCH O roteiro da apresentação
// ================================================================
const estruturaPitch = {
abertura: "Olá, somos [NOME DO GRUPO] e criamos [NOME DO PROJETO].",
problema: "O problema que identificamos foi [PROBLEMA REAL com dados e história].",
solucao: "Nossa solução é [DESCRIÇÃO DA SOLUÇÃO o que faz e como funciona].",
demonstracao: "Vamos demonstrar como funciona ao vivo.",
impacto: "O impacto que queremos gerar é [IMPACTO DESEJADO quem vai mudar e como].",
agradecimento: "Obrigado pela atenção. Estamos abertos a perguntas."
};
console.log("🎤 Estrutura do pitch carregada.");
// ================================================================
// PASSO 2: GUIAS DE APRESENTAÇÃO Dicas para os apresentadores
// ================================================================
const dicasApresentacao = {
postura: "Fique em pé. Olhe para a plateia. Respire fundo. Você é o dono da sala.",
voz: "Fale devagar. Projete a voz. Pausas são poderosas use-as para criar suspense.",
demonstracao: "Mostre o projeto funcionando. Se algo der errado, respire e continue. O imprevisto faz parte do show.",
perguntas: "Escute a pergunta completa. Pense antes de responder. Não invente se não souber diga 'não sei, mas vou descobrir'.",
tempo: "3 minutos é pouco. Seja direto. Corte o que não é essencial. O tempo é seu inimigo vença-o.",
paixao: "Mostre que você se importa. Paixão é contagiante. Se você não acredita no seu projeto, ninguém vai acreditar."
};
console.table(dicasApresentacao);
// ================================================================
// PASSO 3: AUTOAVALIAÇÃO Refletindo sobre o processo
// ================================================================
function autoavaliacao() {
console.log("\n📝 AUTOAVALIAÇÃO DO BIMESTRE");
console.log("==============================");
const perguntas = [
"1. O que você aprendeu neste bimestre que não sabia antes?",
"2. Qual foi o maior desafio que você enfrentou?",
"3. Como você superou esse desafio?",
"4. O que você faria diferente se pudesse começar de novo?",
"5. Qual parte do projeto você mais se orgulha?",
"6. Como você se sente agora em relação à programação?",
"7. O que você vai levar deste projeto para sua vida?",
"8. Você se vê fazendo algo assim no futuro?"
];
perguntas.forEach(pergunta => {
console.log(`\n${pergunta}`);
console.log("Resposta: [ESCREVA AQUI SUA REFLEXÃO]");
console.log("-".repeat(50));
});
console.log("\n📊 Nota para si mesmo (0-10): [____]");
console.log("Justificativa da nota: [ESCREVA AQUI]");
}
// ================================================================
// PASSO 4: A GRANDE ESTREIA Roteiro da apresentação
// ================================================================
function roteiroApresentacao() {
console.log("\n🎬 ROTEIRO DA APRESENTAÇÃO");
console.log("==========================");
console.log("\n🔹 ABERTURA (30 segundos)");
console.log("- Cumprimente a plateia");
console.log("- Apresente seu grupo");
console.log("- Diga o nome do projeto");
console.log("- Faça uma pergunta que prende a atenção (um gancho emocional)");
console.log("\n🔹 O PROBLEMA (30 segundos)");
console.log("- Qual problema vocês identificaram?");
console.log("- Por que esse problema é importante? (use dados, histórias)");
console.log("- Quem ele afeta? (público-alvo específico)");
console.log("\n🔹 A SOLUÇÃO (30 segundos)");
console.log("- O que vocês criaram? (descrição simples)");
console.log("- Como funciona? (explicação em alto nível)");
console.log("- Quais tecnologias usaram? (HTML, CSS, JS)");
console.log("\n🔹 DEMONSTRAÇÃO (60 segundos) O MOMENTO DA VERDADE");
console.log("- Mostre o projeto funcionando AO VIVO");
console.log("- Destaque as funcionalidades principais");
console.log("- Mostre um caso de uso real");
console.log("- SE DER ERRADO: respire, continue, mostre que você sabe lidar");
console.log("\n🔹 IMPACTO E APRENDIZADO (30 segundos)");
console.log("- Qual o impacto esperado? (na escola, na comunidade, na vida das pessoas)");
console.log("- O que vocês aprenderam com o processo?");
console.log("- Como isso mudou vocês?");
console.log("\n🔹 FECHAMENTO (30 segundos)");
console.log("- Recapitule os pontos principais");
console.log("- Agradeça a atenção");
console.log("- Abra para perguntas (e NÃO diga 'perguntas?' aceite-as como parte do show)");
console.log("\n⏱️ TOTAL: 3 MINUTOS");
console.log("⚠️ ENSAIE! TREINE! O ensaio é o que separa o profissional do amador.");
}
// ================================================================
// PASSO 5: PERGUNTAS FREQUENTES Prepare-se para a banca
// ================================================================
const perguntasFrequentes = [
{
pergunta: "Por que vocês escolheram esse problema?",
dica: "Fale sobre a relevância e o impacto real do problema. Conte a história que motivou vocês."
},
{
pergunta: "Qual foi a maior dificuldade técnica?",
dica: "Seja honesto. Mostre que vocês aprenderam com os desafios. A jornada é mais interessante que o destino."
},
{
pergunta: "O que vocês fariam diferente?",
dica: "Reflita sobre o processo. Ninguém é perfeito. O importante é aprender e melhorar."
},
{
pergunta: "Como isso pode ser usado na prática?",
dica: "Dê um exemplo concreto. Mostre que vocês pensaram no usuário final."
},
{
pergunta: "O que vocês mais aprenderam com o projeto?",
dica: "Conte uma história. Aprendizado é mais interessante que código. Mostre crescimento."
},
{
pergunta: "Se tivessem mais tempo, o que adicionariam?",
dica: "Mostre que vocês têm visão de futuro. Um projeto nunca está 100% pronto e isso é OK."
}
];
console.log("\n❓ Prepare-se para as perguntas:");
perguntasFrequentes.forEach(p => {
console.log(`\nP: ${p.pergunta}`);
console.log(`Dica: ${p.dica}`);
});
// ================================================================
// PASSO 6: CELEBRAÇÃO Reconhecendo a jornada
// ================================================================
function celebrar() {
console.log("\n🎉🎊 PARABÉNS! 🎊🎉");
console.log("=".repeat(50));
console.log("\nVocês chegaram ao fim de uma jornada incrível!");
console.log("Não importa se o código tem bugs.");
console.log("Não importa se o design não ficou perfeito.");
console.log("O que importa é que VOCÊS FIZERAM.");
console.log("\nVocês construíram algo do zero.");
console.log("Vocês aprenderam HTML, CSS e JavaScript.");
console.log("Vocês planejaram, executaram, erraram e aprenderam.");
console.log("Vocês são programadores. E programadores mudam o mundo.");
console.log("\n🚀 O mundo digital nunca mais será o mesmo.");
console.log("E vocês nunca mais serão os mesmos.");
console.log("\nA revolução foi codificada.");
console.log("E vocês foram os criadores.");
console.log("\n" + "=".repeat(50));
console.log("🏁 FIM DA JORNADA MAS A REVOLUÇÃO CONTINUA.");
}
console.log("🎤 Apresentação carregada. Pronto para brilhar.");
// ================================================================
// BÔNUS: A frase que você vai ouvir no futuro
// ================================================================
const frasesDoFuturo = [
"Lembra quando a gente não sabia nem o que era HTML?",
"Eu nunca imaginei que seria capaz de fazer isso.",
"O que a gente aprendeu nesse bimestre mudou minha vida.",
"Eu quero fazer mais projetos assim.",
"Programar é muito mais legal do que eu pensava.",
"Eu vou levar isso para a faculdade.",
"A gente construiu isso. A GENTE."
];
console.log("\n💬 Frases que vocês vão ouvir nos próximos anos:");
frasesDoFuturo.forEach((frase, i) => {
console.log(`${i + 1}. "${frase}"`);
});
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição |
|---|---|---|
| 0-5 | Abertura Épica 🎬 | Trilha sonora épica tocando. Professor entra com energia de palco: "Hoje é o dia. O dia em que vocês mostram ao mundo o que construíram. Vocês passaram 9 semanas planejando, codificando, errando, aprendendo. Hoje, vocês não são mais alunos. Hoje vocês são FUNDADORES. Criadores. Revolucionários. O palco é de vocês. O mundo está assistindo." |
| 5-10 | Preparação Final O Último Suspiro ⏳ | Últimos ajustes. Nervosismo e empolgação no ar. Professor circula: "Respirem fundo. Olhem um para o outro. Vocês chegaram até aqui. Isso já é uma vitória." |
| 10-35 | Apresentações Shark Tank Digital 🎤 | Cada grupo tem 3 minutos para o pitch + 2 minutos de perguntas da banca (professor + colegas). Ordem sorteada. Banca com critérios claros (veja abaixo). "Mostrem o projeto, contem a história, mostrem paixão. E lembrem-se: se o código pifar, continuem como se nada tivesse acontecido é a vida real." |
| 35-40 | Feedback Coletivo O Que Aprendemos 🗣️ | "Quais projetos mais chamaram atenção? O que foi inspirador? O que vocês levarão para a vida?" Discussão guiada pelo professor. |
| 40-43 | Votação e Premiação 🏆 | Categorias especiais: 🏆 Mais Criativo, 🧠 Mais Técnico (código mais elegante), 🎨 Mais Bonito (design), 🤯 Mais Impactante (problema mais relevante), ❤️ Mais Empático (foco no usuário), 🔥 Mais Revolucionário (escolha do professor). |
| 43-46 | Autoavaliação 📝 | Cada aluno preenche a ficha de autoavaliação em silêncio. "A nota mais importante é a que você dá para si mesmo. Seja honesto, seja gentil consigo mesmo." |
| 46-48 | Check-in Emocional O Último Suspiro 😭 | "Como vocês se sentem agora? Como era o 'você' de 10 semanas atrás? Como é o 'você' de hoje?" |
| 48-50 | Fechamento Emocional O Discurso Final 🚀 | Professor faz um discurso de encerramento: "Vocês não são mais usuários. Vocês são CRIADORES. Vocês codificaram a revolução. E o mundo nunca mais será o mesmo porque vocês estarão lá para mudá-lo. Eu estou orgulhoso. Muito orgulhoso." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Descreva os projetos verbalmente; permita apresentações em áudio; use descrições detalhadas das telas; permita que o grupo descreva o que está acontecendo na demo. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito da apresentação; permita apresentações com slides escritos; use legendas em tempo real se possível. |
| Deficiência Motora | Permita pausas durante a demonstração; use ferramentas com suporte a teclado; permita que outro membro do grupo opere o computador se necessário. |
| TDAH | Use cronômetros visuais gigantes; divida a apresentação em blocos curtos; checklist física para cada etapa; permita movimentação durante a apresentação. |
| TEA | Use roteiros sociais com antecedência; mantenha ambiente calmo (luzes suaves, pouco barulho); use perguntas estruturadas e previsíveis. |
| Altas Habilidades | Desafio extra: "Apresente uma versão estendida do projeto para um público diferente ou proponha um plano de negócios completo." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Clareza da Apresentação | Explicou o projeto de forma clara, organizada e envolvente a plateia entendeu o que foi apresentado. | 0-2 |
| Demonstração Funcional | O projeto foi demonstrado ao vivo e funcionou (ou lidou bem com imprevistos com graça e profissionalismo). | 0-2 |
| Storytelling | Contou uma história envolvente (contexto → desafios → solução → impacto). Fez a plateia se importar. | 0-2 |
| Justificativa | Explicou as escolhas técnicas e de design de forma coerente (por que usaram o que usaram). | 0-1 |
| Trabalho em Equipe | Todos os membros participaram ativamente da apresentação (não foi só um falando). | 0-1 |
| Respostas às Perguntas | Respondeu com segurança, conhecimento e humildade "não sei" é uma resposta válida se acompanhada de "mas vou descobrir". | 0-1 |
| Autoavaliação | Refletiu criticamente sobre o próprio aprendizado e crescimento. | 0-1 |
| Total | 0-10 |
🏆 Categorias Especiais de Premiação
| Categoria | Critério |
|---|---|
| 🏆 Mais Criativo | Projeto com a ideia mais original e inovadora. |
| 🧠 Mais Técnico | Código mais elegante, bem organizado e com boas práticas. |
| 🎨 Mais Bonito | Melhor design visual e experiência do usuário. |
| 🤯 Mais Impactante | Projeto que aborda o problema mais relevante e urgente. |
| ❤️ Mais Empático | Projeto que melhor considera as necessidades do usuário final. |
| 🔥 Mais Revolucionário | Escolha do professor o projeto que mais se destacou. |
⏸️ Fim da Semana 10 e do Material Completo
ORIENTAÇÕES PARA ADAPTAÇÕES E INCLUSÃO
"Se só funciona pro clone do criador, isso não é projeto, é autobiografia com prazo de validade."
Deficiência Visual
- Use leitores de tela (NVDA, VoiceOver); forneça materiais em braille ou áudio; use fontes grandes (mínimo 16px, preferencialmente 1.2rem) e alto contraste; descreva todos os elementos visuais verbalmente; forneça o código em formato de áudio; use feedback sonoro para interações.
Deficiência Auditiva
- Garanta legendas completas em vídeos; use intérprete de Libras (quando disponível); forneça transcrições escritas de todos os áudios; use feedback visual para todas as instruções; utilize chat ou quadro para comunicações principais; garanta que nenhuma informação seja transmitida apenas por som.
Deficiência Motora
- Divida em sprints curtos (15-20 min); use checklists visuais, cronômetros e papéis claramente definidos nos grupos; garanta navegação por teclado e botões com tamanho adequado (mínimo 44px); utilize ferramentas com suporte a teclado e ditado de voz; permita pausas durante as atividades.
TDAH
- Use roteiros sociais, cronogramas visuais, perguntas enviadas com antecedência e ambiente com poucos estímulos sensoriais; divida as atividades em blocos curtos com pausas; use cronômetros visuais GIGANTES; forneça checklist física para cada etapa.
TEA
- Ofereça mesas ajustáveis, materiais adaptados (tesouras, colas), participação verbal ativa e garantia de acessibilidade física na sala; use perguntas estruturadas e previsíveis; envie as instruções com 24h de antecedência; mantenha ambiente com poucos estímulos; forneça roteiros sociais para dinâmicas de grupo.
Altas Habilidades
- Ofereça desafios extras, projetos ampliados (complexidade técnica), mentoria e produção de conteúdo aprofundado (artigos, pesquisas); permita que o aluno atue como "líder técnico" da equipe; incentive a criação de funcionalidades extras não planejadas.
RUBRICA DE AVALIAÇÃO PROJETO FINAL (BIMESTRE COMPLETO)
| Critério | Excelente (10) | Bom (7) | Regular (5) | Insuficiente (3) |
|---|---|---|---|---|
| Compreensão do Problema | Identificou e analisou profundamente o problema da Cultura Digital, com dados e exemplos concretos. | Identificou o problema, mas com análise superficial. | Identificou o problema de forma vaga. | Não identificou ou compreendeu o problema. |
| Aplicação dos Pilares do PC | Aplicou os 4 pilares de forma criativa e eficaz, com justificativas claras em cada etapa. | Aplicou a maioria dos pilares corretamente. | Aplicou alguns pilares, mas com falhas. | Não aplicou os pilares ou aplicou incorretamente. |
| Desenvolvimento do Protótipo | Proótipo funcional, criativo, bem executado e com bom design/experiência do usuário. | Proótipo funcional, mas com pouca criatividade ou usabilidade. | Proótipo parcialmente funcional. | Proótipo não funcional ou incompleto. |
| Apresentação (Pitch) | Comunicação clara, envolvente, com domínio do conteúdo e boa demonstração. | Clara, mas com algumas hesitações ou falhas na demo. | Razoável, com dificuldades e sem demo convincente. | Confusa, tímida ou sem preparo. |
| Trabalho em Equipe | Colaboração excelente, divisão equilibrada e comunicação efetiva. | Boa colaboração, pequenos desequilíbrios. | Razoável, alguns conflitos ou desorganização. | Pouca colaboração ou trabalho individual. |
| Reflexão e Autoavaliação | Reflexão profunda e crítica sobre o processo, com aprendizados claros e aplicáveis. | Reflexão honesta, mas superficial. | Reflexão vaga ou genérica. | Sem reflexão ou autoavaliação. |
REFERÊNCIAS BIBLIOGRÁFICAS (ABNT)
- BRASIL. Ministério da Educação. Base Nacional Comum Curricular (BNCC). Brasília: MEC, 2018. Disponível em: https://basenacionalcomum.mec.gov.br/. Acesso em: 20 ago. 2026.
- BRASIL. Ministério da Educação. Conselho Nacional de Educação. Câmara de Educação Básica. Resolução CNE/CEB nº 1, de 4 de outubro de 2022. Institui normas sobre Computação na Educação Básica Complemento à Base Nacional Comum Curricular (BNCC). Brasília, DF: MEC/CNE, 2022.
- BRASIL. Ministério da Educação. Conselho Nacional de Educação. Resolução CNE/CEB nº 2, de 2025. Institui as Diretrizes Operacionais Nacionais sobre o uso de dispositivos digitais em espaços escolares e integração curricular de Educação Digital e Midiática. Brasília, DF: MEC/CNE, 2025.
- BRASIL. Lei nº 13.709, de 14 de agosto de 2018. Lei Geral de Proteção de Dados Pessoais (LGPD). Brasília, DF: Presidência da República, 2018.
- DELIZOICOV, Demétrio; ANGOTTI, José André; PERNAMBUCO, Marta Maria. Ensino de Ciências: fundamentos e métodos. 5. ed. São Paulo: Cortez, 2026.
- PARANÁ. Secretaria de Estado da Educação. Referencial Curricular do Paraná: Ensino Médio. Curitiba: SEED/PR, 2025.
- PARANÁ. Secretaria de Estado da Educação. Educação Digital e Computação no Referencial Curricular do Paraná. Curitiba: SEED/PR, 2025.
- WING, Jeannette M. Computational thinking. Communications of the ACM, v. 49, n. 3, p. 33-35, 2006.
- ZUBOFF, Shoshana. A Era do Capitalismo de Vigilância. Rio de Janeiro: Intrínseca, 2021.
"Revolução não é um evento. É um processo. E ele começa com uma pergunta: 'Que problema eu quero resolver?'"
Vocês já têm a resposta. Agora é colocar a mão na massa para sempre.
🚀 A revolução continua. E vocês estão no comando.
"Agora vocês não são mais apenas usuários. Vocês são arquitetos do futuro digital. Usem esse poder com sabedoria, com irreverência e, acima de tudo, com humanidade." 🔥