CARTA DE ABERTURA
ATENÇÃO, TURMA DO 2º ANO! 🕶️🔥
No ano passado, vocês construíram castelos digitais (HTML, CSS, JS). Depois, descobriram que esses castelos foram feitos PARA CONTROLAR vocês (algoritmos, dados, vigilância). E, finalmente, planejaram a revolução.
Agora, esqueçam tudo. De novo.
Este ano, 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.
Neste bimestre, vocês vão:
- PLANEJAR uma revolução digital do zero (não, não é só um trabalho de escola, é um MANIFESTO).
- CODIFICAR uma aplicação web completa com HTML, CSS e JS puros sem firulas, sem frameworks, sem muletas.
- DESCONSTRUIR o algoritmo que te prende e construir um que te liberta.
- ANALISAR o impacto das redes na sua saúde mental e criar ferramentas de bem-estar.
- DEBATER o futuro da IA, da ética e da privacidade.
- E, no final, vocês vão APRESENTAR esse projeto para o mundo. E vão provar que, sim, a revolução é possível.
Aviso: Este material contém doses altas de sarcasmo, referências à
cultura pop, e a crença inabalável de que um dia os alunos vão
lembrar que <div> não é uma divindade, mas uma
ferramenta de libertação.
MAPEAMENTO BIMESTRE
| Semana | Título da Aula | Habilidades BNCC (Matemática) | Habilidades BNCC (LP) | Habilidades BNCC (Outras) | Pilares do PC |
|---|---|---|---|---|---|
| 1 |
"Do Caos ao Código: O Planejamento da Revolução" Ou: como transformar uma ideia maluca em um projeto que realmente funciona (e não morre no caminho) |
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 da Resistência" Ou: como construir a espinha dorsal do seu projeto sem perder a sanidade (e sem esquecer de fechar as tags) |
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 Revolução" Ou: como fazer seu projeto ficar bonito (ou caótico, 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 da Interatividade" Ou: como fazer seu projeto ganhar vida (e talvez falar com você) |
EM13MAT302 Construir modelos matemáticos para descrever fenômenos | EM13LP05 Produzir textos em diferentes gêneros | EM13LGG303 Utilizar recursos tecnológicos para produção | Algoritmos lógica de programação e sequenciamento |
| 5 |
"DOM: O Controle Remoto da Sua Página" 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 na Tela" Ou: como fazer seu projeto reagir a cliques, teclas e (quem sabe) respirações |
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 da Revolução" 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 da Revolução" 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" Ou: como apresentar sua revolução para o mundo (e sobreviver às perguntas) |
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 | "Do Caos ao Código: O Planejamento da Revolução" | Um bom projeto não começa com código começa com uma pergunta: "Que problema eu quero resolver?" | "O Mapa da Revolução" cada grupo escolhe um problema real da cultura digital e planeja um projeto completo para resolvê‑lo, aplicando os 4 Pilares do PC e definindo o MVP. |
| 2 | "HTML: A Estrutura da Resistência" | 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, usando tags semânticas e boas práticas de acessibilidade. |
| 3 | "CSS: O Estilo da Revolução" | 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 da Interatividade" | 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 da Sua Página" | O DOM é a árvore da página manipulá‑lo é 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 na Tela" | 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 da Revolução" | 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, usando `push`, `pop`, `shift`, `unshift`, `splice` e percorrendo com `forEach`. |
| 8 | "Funções: O Exército da Revolução" | 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. |
| 10 | "Lançamento Oficial: O Mundo Vai Ver" | 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 e premiação nas categorias. |
PLANOS DE AULA DETALHADOS 2º ANO BIMESTRE 4
Clique em cada semana e veja os detalhes completos com códigos comentados, minuto a minuto e muito mais.
🎯 Título
"Do Caos ao Código: O Planejamento da Revolução" Ou: como transformar uma ideia maluca em um projeto que realmente funciona (e não morre no caminho porque ninguém merece ver seu sonho virar um repositório abandonado no GitHub, e olha que 92% dos projetos open source morrem no primeiro ano, mas vocês vão ser os 8% que sobrevivem).
🎯 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. Se não tem dado, não tem problema. Se não tem história, não tem dor.
- 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, não como um aluno fazendo trabalho para ganhar nota. Startups mudam o mundo. Trabalhos escolares, nem sempre.
- Aplicar os 4 Pilares do Pensamento Computacional ao planejamento mas não como decoreba, como ferramenta viva para transformar caos em ordem. Pilar sem aplicação é palavra bonita. Pilar com aplicação é superpoder.
- 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
- 1. 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).
- 2. 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. E se dói, merece ser resolvido.
-
3. Os 4 Pilares do PC aplicados ao planejamento:
- Decomposição: dividir o projeto em partes menores (HTML, CSS, JS, design, conteúdo) como desmontar um Lego para entender como ele foi construído. E depois reconstruir melhor.
- Reconhecimento de Padrões: identificar padrões em projetos similares o que funciona, o que não funciona, o que é hype e o que é real. Não reinvente a roda. Melhore a roda.
- Abstração: definir o essencial do projeto o MVP (Produto Mínimo Viável) e ter coragem de cortar o que não é essencial (sim, vai doer. Vai doer como cortar um braço. Mas é necessário).
- Algoritmos: criar um cronograma passo a passo porque "vou fazendo" não é plano, é desculpa. E desculpa não constrói nada.
- 4. Design Thinking aplicado à tecnologia Empatia, definição, ideação, prototipagem, teste. Não é moda, é método. E funciona. (E sim, vocês vão ouvir "empatia" até enjoar. Mas é porque funciona.)
- 5. O MVP (Produto Mínimo Viável) a versão mais simples que ainda funciona. Se você consegue explicar seu projeto em uma frase, você está no caminho certo. Se precisa de um parágrafo, volte para a prancheta. E se precisa de um capítulo, desista e recomece.
- 6. Cultura Digital e Cidadania Digital Compreender que todo projeto tecnológico carrega uma dimensão ética e política. Não existe tecnologia neutra. Toda ferramenta digital reflete valores, intenções e visões de mundo. O que vocês estão construindo não é apenas código é uma declaração de como o mundo deveria ser. E isso é pesado. E é lindo.
📜 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. Nesta aula, os alunos desenvolvem a habilidade de planejar e executar projetos de desenvolvimento de software (EM13CO07) e reconhecer e aplicar os princípios da abstração, decomposição, reconhecimento de padrões e algoritmos (EM13CO04). A Cultura Digital um dos três eixos da BNCC Computação é o pano de fundo que conecta o planejamento técnico à realidade social dos estudantes. 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.
🧩 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). Abstrair é separar o joio do trigo. E o joio, nesse caso, é tudo que não resolve o problema. |
| Decomposição | Decompõem o projeto em partes menores: estrutura (HTML), estilo (CSS), interatividade (JS), design, conteúdo, testes cada parte, um time. Cada time, uma missão. Dividir para conquistar não é só ditado, é método. |
| Reconhecimento de Padrões | Identificam padrões em projetos similares (o que funciona, o que não funciona) e aplicam ao seu porque reinventar a roda é perda de tempo, mas melhorar a roda é genialidade. E vocês são gênios. (Ou vão se tornar.) |
| Algoritmos | Criam um cronograma passo a passo para o desenvolvimento do projeto porque sem passo a passo, é só uma lista de desejos. E lista de desejos não muda o mundo. |
💻 Código Comentado
Nesta semana, o "código" é o planejamento. Mas que fique claro: o planejamento é o código mais importante que vocês vão escrever. Se o planejamento estiver bugado, o resto vai desabar.
// ============================================================
// SEMANA 1 O PLANEJAMENTO DA REVOLUÇÃO
// "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 2º ano passam em média 4h/dia em redes sociais sem filtrar informações",
afeta: "estudantes da minha escola",
impacto: "desinformação, ansiedade, queda no rendimento escolar",
dados: "pesquisa informal com 30 colegas mostrou que 80% não verificam fontes",
// 👆 Se não tem dado, não tem problema. Se não tem história, não tem dor.
historia: "A Maria quase reprovou porque acreditou numa fake news sobre o Enem"
};
// ============================================================
// PASSO 2: Aplique os 4 PILARES para estruturar sua solução
// ============================================================
const pilares = {
abstracao: {
oQueEssencial: "Um sistema que mostra se uma notícia é confiável ou não",
oQuePodeEsperar: "Sistema de recomendação, chat comunitário, gamificação",
// Cortar dói. Mas é necessário.
// Um MVP não é um projeto incompleto é um projeto COMPLETO na sua versão mais simples.
mantra: "Feito é melhor que perfeito. Perfeito é inimigo do feito."
},
decomposicao: {
estrutura: "HTML cabeçalho, formulário, resultados, rodapé",
estilo: "CSS cores que transmitem confiança, tipografia limpa",
interatividade: "JS verificar fonte, mostrar resultado, contador de verificações",
design: "Wireframe no papel antes de codificar",
conteudo: "Base de dados com fontes confiáveis e não confiáveis"
},
reconhecimentoDePadroes: {
exemplos: "Sites como 'Fake News Checker', 'Lupa', 'Aos Fatos'",
oQueFunciona: "Mostrar a fonte original, dar selo de confiabilidade",
oQueNaoFunciona: "Textão explicativo que ninguém lê",
// 👆 Aprenda com os erros dos outros. É mais barato.
licao: "Design não é sobre ser bonito. É sobre ser INTENCIONAL."
},
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: [
"Página com formulário para inserir link da notícia",
"Botão 'Verificar' que executa a análise",
"Exibição do resultado (confiável / não confiável / duvidoso)",
"Design responsivo (funciona no celular)"
],
desejavel: [
"Histórico de verificações",
"Compartilhamento do resultado",
"Ranking de fontes mais confiáveis"
],
corte: "Gamificação e sistema de pontos isso fica para a versão 2.0",
// 👆 Cortar dói. Mas é necessário.
// Um MVP não é um projeto incompleto é um projeto COMPLETO na sua versão mais simples.
};
// ============================================================
// PASSO 4: Perguntas que vão salvar seu projeto
// Responda isso com seu grupo. Sem enrolação.
// ============================================================
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?",
// 👆 Plano B não é fraqueza. É inteligência.
"Por que VOCÊS se importam com isso? (Se não for por paixão, desistam agora)"
];
// ============================================================
// PASSO 5: Cultura Digital Por que isso importa?
// ============================================================
const culturaDigital = {
// A BNCC define Cultura Digital como a capacidade de
// "utilizar e criar tecnologias digitais de informação e comunicação
// de forma crítica, significativa, reflexiva e ética"
oQueE: "Não é sobre usar tecnologia. É sobre ENTENDER tecnologia.",
porQueImporta: "Porque tecnologia não é neutra. Ela reflete valores.",
oQueVocesVaoFazer: "Construir algo que NÃO controla as pessoas, mas as LIBERTA.",
// 👆 Isso é revolucionário. E é por isso que vocês estão aqui.
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 (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Inspira 🚀 | Professor entra com energia de palco, óculos escuros, trilha sonora de Matrix: "Vocês passaram 3 bimestres entendendo o problema. Agora é hora de RESOLVÊ-LO. Vocês vão criar algo que vai conscientizar, impactar e, quem sabe, mudar o mundo digital. Não é mais sobre reclamar é sobre AGIR. E agir começa com um PLANO. Quem aqui já começou um projeto sem planejar e se arrependeu? (Todos levantam a mão) Pois é. Hoje a gente faz diferente." |
| 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. E tecla aleatória não muda o mundo." |
| 10-15 | Brainstorm de Problemas 💡 | Em grupos de 4-5, os alunos listam problemas REAIS da cultura digital que afetam a comunidade escolar: vício em redes, fake news, cyberbullying, privacidade de dados, vigilância digital, desinformação algorítmica, saúde mental, etc. Regra: nada de problemas genéricos. "Não existe problema pequeno existe problema que ainda não foi resolvido. E se dói em alguém, é grande o suficiente." |
| 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. E se ninguém se importa, por que fazer?" |
| 20-30 | Aplicação dos 4 Pilares 🧩 | Cada grupo produz um mapa visual mostrando como cada pilar será aplicado: "Como vamos decompor? Que padrões vamos reconhecer? O que vamos abstrair? Que algoritmos vamos criar?" Professor circula e provoca: "Mostrem que vocês entendem a ferramenta. Não é sobre decorar nome é sobre USAR. Se não usar, não aprendeu." |
| 30-38 | O Plano da Revolução 📋 | Cada grupo define: (1) Objetivo do projeto (UMA frase), (2) Público-alvo (específico, não "todo mundo"), (3) Funcionalidades principais (MVP), (4) Divisão de tarefas (quem faz o quê), (5) Cronograma (o que em cada semana). "O plano não precisa ser perfeito precisa ser REAL. E real significa que vocês vão conseguir fazer." |
| 38-45 | Pitch da Revolução 🎤 | Cada grupo apresenta sua ideia em 2 minutos para a turma. A turma vota nas melhores ideias. "Convençam a gente. Se vocês não conseguirem convencer a turma, não vão conseguir convencer o mundo. E o mundo é mais difícil que a turma." |
| 45-48 | Check-in da Alma 💪 | "Como você se sente agora que tem um plano? Empolgado? Ansioso? Pronto para começar? O medo é normal. O que importa é o que você faz com ele. Todo mundo que já fez algo incrível teve medo. A diferença é que eles fizeram mesmo com medo." |
| 48-50 | Fechamento + Provocação 🚀 | "O planejamento está feito. Na semana que vem: MÃO NA MASSA. Tragam seus materiais, suas ideias e sua criatividade. E não se esqueçam: FEITO É MELHOR QUE PERFEITO. Perfeito é inimigo do feito. E o feito é o que muda o mundo." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
"Um projeto que só funciona para um tipo de pessoa não é um projeto é um clube exclusivo. E a gente não faz clubes exclusivos."
| 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; utilize ferramentas de voz para registro das ideias; forneça o código em formato de áudio. |
| 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; utilize chat ou quadro para comunicações principais; garanta legendas em vídeos. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos e flexíveis; garanta que todos os materiais estejam ao alcance; utilize ferramentas de ditado de voz para registro; garanta navegação por teclado. |
| TDAH | Divida em sprints de 5 minutos com intervalos; use cronômetros visuais GIGANTES na tela; checklist física para cada etapa; minimize distrações visuais e sonoras; use perguntas estruturadas. |
| TEA | Envie as instruções com antecedência (24h antes); use perguntas estruturadas e previsíveis; ambiente com poucos estímulos sensoriais; forneça roteiros sociais para a dinâmica de grupo; use cronogramas visuais. |
| Altas Habilidades | Desafio extra: "Além do protótipo, desenvolva um plano de negócios ou um modelo de sustentabilidade para o projeto. Como ele se manteria vivo após o bimestre? Como ele escalaria?" |
📊 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 |
🎯 Título
"HTML: A Estrutura da Resistência" 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 porque código bagunçado é código que ninguém entende, nem você daqui a uma semana. E código que ninguém entende é código que ninguém mantém.
- Bônus: entender que HTML não é programação é marcação. E isso é um superpoder que permite estruturar qualquer ideia. É a fundação. E fundação bem feita sustenta arranha-céu. Fundação mal feita sustenta... nada.
📚 Conteúdo Programático
- 1. Revisão de HTML Estrutura básica, tags essenciais, atributos. "Não é novidade, mas é FUNDAMENTAL. Quem pula etapa, tropeça. E quem tropeça, cai. E quem cai, perde tempo."
-
2. HTML Semântico Uso de tags semânticas
(
<header>,<nav>,<main>,<section>,<article>,<aside>,<footer>) para organização e acessibilidade. "Não é só para organizar é para que leitores de tela e mecanismos de busca entendam o que vocês estão fazendo. E se você não se importa com eles, por que eles se importariam com você?" - 3. Estrutura do Projeto Como organizar o HTML do projeto: cabeçalho, navegação, conteúdo principal, seções, rodapé. "É igual a um livro: introdução, desenvolvimento, conclusão. Seu site também. Se não tem estrutura, não tem história."
- 4. Boas Práticas Indentação, comentários, nomes de classes e IDs significativos. "Código limpo não é frescura é respeito com quem vai ler depois (inclusive você). E você vai se odiar daqui a um mês se não fizer isso."
-
5. Acessibilidade em HTML Uso de
altem imagens,langno html,aria-labelquando necessário. "Acessibilidade não é opcional. É direito. E se você não pensa em acessibilidade, você está excluindo pessoas. E exclusão não é revolucionário." - 6. Cultura Digital e Inclusão Refletir sobre como a estrutura de um site pode incluir ou excluir pessoas. Um site mal estruturado é uma barreira. Um site bem estruturado é uma ponte. Vocês vão construir pontes.
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT102 | Analisar tabelas, gráficos e amostras de pesquisas estatísticas apresentadas em diferentes meios de comunicação, identificando inadequações que possam induzir a erros de interpretação. |
BNCC Linguagens e suas Tecnologias:
| 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) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na construção da estrutura HTML do projeto. A construção de uma estrutura HTML semântica também dialoga com o eixo Cultura Digital ao promover acessibilidade e inclusão digital, garantindo que todos possam acessar e interagir com as soluções criadas.
🧩 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é cada parte é uma tag ou conjunto de tags. "Dividir para conquistar" não é só ditado, é método. E método é o que separa o amador do profissional. |
| 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. "Você não precisa entender o motor para dirigir o carro. Mas se entender, dirige melhor." |
💻 Código Comentado
<!-- ============================================================
SEMANA 2 HTML: A ESTRUTURA DA RESISTÊNCIA
"Sem estrutura, o site é uma ameba disforme."
============================================================ -->
<!-- ============================================================
PASSO 1: A ESTRUTURA MÍNIMA OBRIGATÓRIA
Todo site precisa disso. Não é opcional. É lei.
============================================================ -->
<!DOCTYPE html>
<!-- ↑ Diz ao navegador: "Isso é HTML5, não brinca comigo" -->
<html lang="pt-BR">
<!-- ↑ lang é para acessibilidade. Leitores de tela usam isso.
Se você não coloca, você está excluindo alguém. -->
<head>
<!-- ========================================================
O <head> é o "backstage" do site. O usuário não vê,
mas sem ele o site não funciona direito.
======================================================== -->
<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>🔍 VerificaFake A Revolução Digital</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>
<!-- ========================================================
O <body> é onde TUDO que o usuário vê vai estar.
É o palco. O resto é bastidor.
======================================================== -->
<!-- ============================================================
PASSO 2: Use TAGS SEMÂNTICAS
Não é sobre ser bonito. É sobre ser CORRETO.
============================================================ -->
<header>
<!-- Cabeçalho: logotipo, título, navegação principal -->
<h1>🔍 VerificaFake</h1>
<!-- ↑ Use UM <h1> por página. É o título principal.
O Google usa isso para entender do que a página trata. -->
<nav>
<!-- Navegação: o "menu" do site -->
<ul>
<li><a href="sobre">Sobre</a></li>
<li><a href="verificar">Verificar</a></li>
<li><a href="historico">Histórico</a></li>
<li><a href="contato">Contato</a></li>
</ul>
</nav>
</header>
<main>
<!-- CONTEÚDO PRINCIPAL.
Só DEVE haver um <main> por página.
É o coração do site. -->
<section id="sobre">
<!-- <section> é para agrupar conteúdo relacionado -->
<h2>Sobre o Projeto</h2>
<p>Nosso projeto ajuda você a identificar se uma notícia é confiável ou não.</p>
</section>
<section id="verificar">
<h2>Verificar Notícia</h2>
<form id="formVerificacao">
<!-- action="" por enquanto. Depois a gente mexe. -->
<label for="urlNoticia">Cole o link da notícia:</label>
<!-- ↑ label é ESSENCIAL para acessibilidade.
O "for" conecta ao input pelo ID. -->
<input type="url" id="urlNoticia" placeholder="https://..." required>
<!-- ↑ type="url" valida se é uma URL.
required impede envio vazio. -->
<button type="submit">Verificar</button>
</form>
<div id="resultado">
<!-- O resultado da verificação vai aparecer aqui -->
<p>⚠️ Aguardando verificação...</p>
</div>
</section>
<section id="historico">
<h2>Histórico de Verificações</h2>
<ul id="listaHistorico">
<li>Nenhuma verificação ainda.</li>
</ul>
</section>
</main>
<footer>
<!-- Rodapé: informações de copyright, contato, links úteis -->
<p>© 2026 Turma do 2º Ano. A revolução será codificada.</p>
<!-- © é o símbolo de copyright.
Pequeno detalhe que faz diferença. -->
</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
[x] alt em imagens (se houver)
[x] Código indentado e comentado
[x] Estrutura que conta uma história
============================================================ -->
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Estrutura 🏗️ | Professor pergunta: "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. E não, não vale pular essa parte porque 'é chato'. É chato igual a base de um prédio. E sem base, o prédio cai. E ninguém quer ver o castelo desabar." |
| 5-10 | Revisão Relâmpago de HTML ⚡ |
Revisão rápida das tags essenciais:
<!DOCTYPE>,
<html>, <head>,
<title>, <body>,
<h1> a <h6>,
<p>, <ul>,
<ol>, <li>,
<div>. "Não é novidade, mas é
FUNDAMENTAL. Quem não sabe isso, não passa da porta."
|
| 10-15 | HTML Semântico A Nova Onda 🌊 |
Introdução às tags semânticas:
<header>, <nav>,
<main>, <section>,
<article>,
<aside>, <footer>.
"Não é só para organizar é para que leitores de tela e
mecanismos de busca entendam o que vocês estão fazendo.
E se você não se importa com eles, por que eles se
importariam com você?"
|
| 15-40 | Construindo a Base 🔨 | Cada grupo constrói a estrutura HTML do seu projeto. Devem incluir: cabeçalho com título, navegação, seção "Sobre", seção "Projeto" (com a funcionalidade principal), seção "Contato", rodapé. Professor circula, ajuda, provoca: "Onde fica a navegação? O que vem primeiro? Como você organiza isso? E a acessibilidade? Cadê o label do input? E se eu for cego, como vou saber o que é esse campo?" |
| 40-45 | Revisão de Estrutura 🔍 | Cada grupo troca de lugar com outro e revisa a estrutura HTML. "O que está faltando? O que está sobrando? O que está mal organizado? O que não é semântico? Seja cruel. A crítica construtiva é a que faz crescer. E crescer é o que importa." |
| 45-48 | Check-in Técnico 💻 | "Como vocês estão se sentindo com o HTML? Confiantes? Perdidos? O HTML é a parte mais fácil e a mais importante. Se a estrutura estiver ruim, o resto desaba. E ninguém quer ver o castelo desabar." |
| 48-50 | Fechamento + Provocação 🚀 | "A estrutura está pronta. Na semana que vem: CSS a maquiagem dos deuses. Vamos deixar isso bonito. Porque feio até funciona, mas bonito encanta. E encantamento move o mundo." |
♿ 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 e alto contraste; descreva a estrutura
verbalmente; forneça o código em formato de áudio;
garanta que todas as imagens tenham
alt descritivo.
|
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use legendas em vídeos tutoriais; utilize chat para dúvidas; garanta que todas as instruções sejam visuais. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize editores de código com suporte a teclado; garanta que todos os elementos sejam acessíveis via teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações; use perguntas estruturadas. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta; use roteiros sociais. |
| Altas Habilidades | Desafio extra: "Adicione microdados (schema.org) ao seu HTML para melhorar o SEO do projeto. Pesquise como fazer e implemente. Depois, explique para a turma o que você fez e por quê." |
📊 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, Contato, etc.). | 0-2 |
| Acessibilidade |
Usou alt em imagens, lang no
html, label conectado a inputs, etc.
|
0-1 |
| Total | 0-10 |
🎯 Título
"CSS: O Estilo da Revolução" Ou: como fazer seu projeto ficar bonito (ou caótico, 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 porque primeiro impacto é visual, e primeiro impacto é tudo. A primeira impressão é a que fica. E a primeira impressão do seu projeto vai ser visual.
- Aplicar seletores básicos (elemento, classe, ID) e propriedades essenciais (cor, fonte, espaçamento, borda, sombra, fundo, flexbox, grid). Cada propriedade é uma ferramenta. Cada ferramenta tem um propósito.
- Estilizar o projeto com personalidade que reflita a identidade da equipe. "Seu site tem que ter a cara de vocês. Não a cara do Bootstrap. Bootstrap é bonito, mas é genérico. Vocês não são genéricos."
-
Aplicar CSS nas formas inline, interno e externo (arquivo
.css) e saber quando usar cada um (spoiler: quase sempre externo. Inline é para emergências. Interno é para protótipos. Externo é para profissionais). - Bônus: entender que CSS é arte com regras e regras foram feitas para serem quebradas (com consciência). Quebrar regra sem saber o que está fazendo não é rebeldia, é amadorismo. Quebrar regra com intenção é arte.
📚 Conteúdo Programático
- 1. Revisão de CSS Sintaxe, seletores, propriedades, cascata e especificidade. "A cascata não é sua inimiga. Ela só quer que você entenda como ela funciona. E quando você entende, ela vira sua aliada."
-
2. CSS Moderno Flexbox, Grid, variáveis CSS
(
--var), transições, animações. "Chega defloateclearisso é coisa do passado. Se você ainda usafloatpara layout, você está dirigindo um Fusca na Autobahn. E o Fusca não vai ganhar." -
3. Design Responsivo
@mediaqueries para adaptação a diferentes tamanhos de tela. "Seu site tem que funcionar no celular. Ponto. Não é opção. 60% do tráfego da internet vem de celular. Se você ignora o celular, você ignora 60% do mundo." - 4. Design System Cores, tipografia, espaçamento, consistência visual. "A estética de um site não é sobre ser bonito é sobre ser COERENTE. Coerência é o que transforma um site em uma experiência. Incoerência transforma em um pesadelo."
- 5. Personalização Como fazer o projeto ter a cara da equipe. "Copia e cola é para quem não tem opinião. Vocês têm. Mostrem."
- 6. Cultura Digital e Estética Refletir sobre como o design digital influencia percepções, comportamentos e emoções. Um design pode manipular ou pode libertar. Pode confundir ou pode clarear. A escolha é de vocês.
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT301 | Resolver e elaborar problemas do cotidiano, da Matemática e de outras áreas do conhecimento, que envolvem equações lineares, inequações e sistemas, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP04 | Analisar os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos em diferentes textos, considerando a função social e os efeitos de sentido pretendidos. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| Código | Habilidade |
|---|---|
| EM13CO05 | Utilizar, de forma crítica e criativa, diferentes recursos computacionais 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 recursos computacionais de forma crítica e criativa (EM13CO05), aplicada aqui na estilização do projeto. 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.
🧩 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 para cada elemento estilizado. "É um
padrão. Decore ele. Use ele. Viva ele."
|
| Decomposição | Dividir a estilização em partes isoladas: fonte, cor, espaçamento, borda, layout cada parte é resolvida separadamente. "Resolva um problema de cada vez. Não tente estilizar o mundo de uma vez." |
💻 Código Comentado
/* ================================================================
SEMANA 3 CSS: O ESTILO DA REVOLUÇÃO
"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
================================================================ */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
/* ↑ ESSENCIAL: faz com que padding e border não aumentem o tamanho do elemento.
Sem isso, seu layout vai quebrar. SEMPRE. */
}
/* ================================================================
PASSO 3: ESTILOS GLOBAIS
================================================================ */
body {
font-family: var(--fonte-principal);
background-color: var(--cor-fundo);
color: var(--cor-texto);
line-height: 1.6;
/* ↑ Espaçamento entre linhas.
Leitura confortável = 1.5 a 1.8. Menos que isso é sufocante. */
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));
/* ↑ Gradiente: de uma cor para outra.
Dá profundidade sem precisar de imagem. */
color: white;
padding: var(--espacamento-grande);
border-radius: var(--raio-borda);
display: flex;
justify-content: space-between;
/* ↑ Espaça os itens: título de um lado, nav do outro */
align-items: center;
/* ↑ Alinha verticalmente ao centro */
flex-wrap: wrap;
/* ↑ Permite que os itens quebrem para a linha de baixo em telas pequenas */
margin-bottom: var(--espacamento-grande);
box-shadow: var(--sombra-padrao);
}
header h1 {
font-family: var(--fonte-titulo);
font-size: 1.8rem;
/* ↑ Use REM, não PX. REM é relativo ao tamanho da fonte do navegador.
Isso respeita as preferências de acessibilidade do usuário. */
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);
}
/* ================================================================
PASSO 6: 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);
}
button {
align-self: stretch;
}
}
/* ================================================================
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
[x] Design que conta uma história
================================================================ */
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Impressiona 💄 | Professor exibe um site "feio" (sem CSS) e pergunta: "Isso é um site ou uma lista de supermercado? O que falta pra isso ficar com a cara de vocês?" Introduz o CSS como "maquiagem" mas uma maquiagem que FAZ DIFERENÇA. "Feio até funciona, mas bonito encanta. E encantamento vende. E vender muda o mundo." |
| 5-10 | Revisão Relâmpago de CSS ⚡ | Revisão de seletores (elemento, classe, ID), propriedades essenciais (color, background, font, padding, margin, border), cascata e especificidade. "A cascata não é sua inimiga. Ela só quer que você entenda como ela funciona." |
| 10-15 | CSS Moderno Flexbox e Grid 🎨 |
Introdução ao Flexbox (para layouts flexíveis) e Grid
(para layouts em grade). "Chega de float e
clear isso é coisa do passado. Se você
ainda usa float para layout, você está
dirigindo um Fusca na Autobahn."
|
| 15-40 | Operação Beleza 💅 | Cada grupo estiliza seu projeto. Devem definir: paleta de cores, tipografia, espaçamento, layout (Flexbox/Grid), responsividade. Professor circula, ajuda, provoca: "Por que você escolheu essa cor? O que essa fonte diz sobre você? Isso é responsivo? E se eu diminuir a tela? E se eu for daltônico, vou conseguir entender?" |
| 40-45 | Galeria dos Projetos Estilizados 🖼️ | Cada grupo mostra seu projeto estilizado. A turma vota na "mais bonita", "mais criativa", "mais caótica (mas funcional)" e "mais coerente". "Design não é sobre ser bonito é sobre ser INTENCIONAL." |
| 45-48 | Check-in de Estilo 🎨 | "Como vocês se sentem com o CSS? Satisfeitos? Querem mudar tudo? O CSS é a parte mais divertida e a mais viciante. É onde a personalidade aparece. Não tenham medo de ousar." |
| 48-50 | Fechamento + Provocação 🚀 | "O estilo está pronto. Na semana que vem: JavaScript a mágica acontece. Vamos fazer isso ganhar VIDA. E quando algo ganha vida, tudo muda." |
♿ 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, preferencialmente 1.2rem); teste com leitores de tela; evite informações apenas por cor; use padrões além de cores. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; garanta que todas as instruções sejam visuais. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; garanta que todos os elementos interativos sejam acessíveis via teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades |
Desafio extra: "Adicione animações CSS com
@keyframes e transições para surpreender o
usuário. Crie um micro-interação em cada elemento
interativo. Depois, documente suas escolhas de design."
|
📊 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.
|
0-2 |
| Uso de Seletores | Aplicou os 3 tipos de seletor: elemento, classe e ID. | 0-2 |
| Propriedades Essenciais | Usou pelo menos 5 propriedades diferentes (cor, fonte, padding, borda, etc.). | 0-2 |
| Layout Moderno | Usou Flexbox ou Grid para organizar o layout. | 0-2 |
| Responsividade |
Adicionou pelo menos uma regra @media para
adaptar a página a telas menores.
|
0-1 |
| Personalização Criativa | A estilização tem personalidade, foge do padrão básico, é coerente e intencional. | 0-1 |
| Total | 0-10 |
🎯 Título
"JavaScript: A Mágica da Interatividade" Ou: como fazer seu projeto ganhar vida (e talvez falar com você e não, não é assustador, é só código. Mas código que faz coisas é basicamente magia. E magia, quando você entende como funciona, vira ciência. E ciência muda o mundo).
🎯 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. E sem cérebro, o corpo não faz nada. (Exceto respirar. Mas seu site não respira. Ainda.)
-
Utilizar variáveis, tipos de dados (
string,number,boolean) e operadores a gramática básica da linguagem. É como aprender o alfabeto antes de escrever um romance. Sem alfabeto, não há romance. - Criar funções simples que executam ações porque função é a unidade básica de organização no JS. É como uma receita de bolo: você escreve uma vez, usa várias. E todo mundo gosta de bolo.
-
Manipular o HTML via JavaScript usando
document.getElementById()e.innerHTMLo primeiro contato com o DOM. É como aprender a apertar um botão e ver uma luz acender. E quando a luz acende, você quer acender todas as luzes. -
Bônus: entender que errar é parte do processo e o
console.log()é seu melhor amigo. Use-o. Abuse dele. Ele não vai te julgar. Ele só vai mostrar a verdade. E a verdade, às vezes, é que você esqueceu um ponto e vírgula.
📚 Conteúdo Programático
- 1. O que é JavaScript? A alma da página, o que torna um site vivo. "Sem JS, o site é um manequim bonito, mas morto. E manequim não muda o mundo."
-
2. Variáveis e Tipos
var,let,const,string,number,boolean. "Cada variável é uma caixa. Coloque a coisa certa na caixa certa. E não confunda caixas isso é receita para desastre." - 3. Funções Declaração, chamada, parâmetros, retorno. "Função é uma receita de bolo. Escreva uma vez, use várias. E se você errar a receita, o bolo não cresce."
-
4. Manipulação do DOM
document.getElementById(),.innerHTML,.textContent. "Selecionar é poder. Modificar é controle. E controle é o que faz a revolução acontecer." -
5. Eventos Básicos
onclick(introdução). "O clique é a interação mais básica. Domine ele, e o resto vem. É como aprender a andar antes de correr." - 6. Cultura Digital e Autonomia Refletir sobre como o JavaScript permite que os usuários passem de consumidores para criadores de experiências digital. "Vocês não estão mais apenas usando a internet vocês estão construindo ela."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT302 | Construir modelos matemáticos para descrever fenômenos e situações do cotidiano, utilizando funções e equações, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP05 | Produzir textos de diferentes gêneros, considerando a adequação ao contexto de produção e circulação, a composição, a estilística e a variedade linguística. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na introdução ao JavaScript. O eixo Pensamento Computacional é fortalecido com a criação de algoritmos simples e a manipulação de dados. O eixo Cultura Digital é abordado quando os alunos refletem sobre como a interatividade pode ser usada para engajar, conscientizar ou manipular usuários e como eles podem escolher o caminho ético.
🧩 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. "Cada função é uma receita. O computador é seu sous-chef. E sous-chef só faz o que você manda." |
| Decomposição | O problema "fazer algo acontecer" é decomposto em: (1) selecionar o elemento, (2) modificar seu conteúdo, (3) reagir ao evento. "Um passo de cada vez. É assim que se constrói. É assim que se revoluciona." |
💻 Código Comentado
// ================================================================
// SEMANA 4 JAVASCRIPT: A MÁGICA DA INTERATIVIDADE
// "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO."
// ================================================================
// ================================================================
// PASSO 1: VARIÁVEIS As caixas onde guardamos as coisas
// ================================================================
// let pode mudar de valor (variável)
let nomeDoUsuario = "Visitante";
let contadorDeCliques = 0;
// const NÃO pode mudar de valor (constante)
const URL_BASE = "https://meusite.com";
const COR_PADRAO = "#6C63FF";
// Tipos de dados:
let texto = "Olá, mundo!"; // string texto
let numero = 42; // number número
let estaLogado = false; // boolean verdadeiro ou falso
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;
}
// 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: MANIPULAÇÃO DE STRINGS Texto é poder
// ================================================================
function mostrarMensagemPersonalizada() {
let input = document.getElementById("nomeInput");
if (!input) {
console.error("❌ Input não encontrado!");
return;
}
let nome = input.value;
if (nome.trim() === "") {
nome = "Visitante";
}
let mensagem = `Olá, ${nome}! Você está oficialmente na revolução. 🚀`;
let mensagemElemento = document.getElementById("mensagemPersonalizada");
if (mensagemElemento) {
mensagemElemento.textContent = mensagem;
mensagemElemento.style.color = "#6C63FF";
mensagemElemento.style.fontWeight = "bold";
}
}
// ================================================================
// PASSO 6: 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 7: CULTURA DIGITAL Por que isso importa?
// ================================================================
const reflexaoInteratividade = {
// A BNCC define Cultura Digital como a capacidade de
// "utilizar e criar tecnologias digitais de informação e comunicação
// de forma crítica, significativa, reflexiva e ética"
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?",
// 👆 Essa é a pergunta que separa os que constroem dos que controlam.
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 (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Explode 💥 | Professor pergunta: "O que faz um site ser VIVO? Não é o design bonito é a REAÇÃO. Cada clique, cada movimento, cada interação. Hoje vocês vão dar VIDA ao projeto. E quando algo ganha vida, tudo muda." |
| 5-10 | O que é JavaScript? 🧠 | Explicação: "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO. Sem JS, o site é um manequim bonito, mas morto. E manequim não muda o mundo." |
| 10-15 | Variáveis e Funções 📝 |
Demonstração rápida:
let nome = "João"; function saudacao() { alert("Olá,
" + nome); }. "É assim que a mágica começa. Uma variável, uma
função, um clique e o mundo muda."
|
| 15-40 | O Despertar ⚡ | Cada grupo adiciona interatividade básica ao projeto: um botão que faz algo (mostra uma mensagem, muda uma cor, conta cliques, etc.). Professor circula, ajuda, provoca: "O que mais você quer que esse botão faça? O que seria LEGAL? O que seria ÚTIL? O que seria INESPERADO? O que seria REVOLUCIONÁRIO?" |
| 40-45 | Mostra de Interatividade 🎪 | Cada grupo mostra o que seu botão faz. Risadas garantidas com as ideias criativas. "Quem tem o botão mais útil? Quem tem o botão mais criativo? Quem tem o botão mais CAÓTICO? Quem tem o botão que mais surpreende?" |
| 45-48 | Check-in de Vida 💫 | "Como vocês se sentem vendo o projeto GANHAR VIDA? Empolgados? Querem fazer mais? O JS é viciante e vocês estão só começando. Daqui a pouco vocês vão querer fazer tudo com JS." |
| 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 manipular CADA PEDACINHO. E quando vocês controlarem cada pedacinho, vocês controlarão TUDO." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela; descreva o código verbalmente; use fontes grandes e alto contraste; utilize feedback sonoro para interações; garanta que todas as ações tenham equivalentes não-visuais. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; utilize mensagens na tela para todas as ações; garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize editores com suporte a teclado; garanta que todos os elementos interativos sejam acessíveis via teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações; use perguntas estruturadas. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta; use roteiros sociais. |
| Altas Habilidades | Desafio extra: "Crie uma função que recebe parâmetros e retorna um valor use-a em diferentes lugares do projeto. Depois, crie uma função que chama outra função. Documente tudo." |
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Variáveis |
Declarou variáveis corretamente (let,
const).
|
0-2 |
| Função | Criou pelo menos uma função que executa uma ação. | 0-3 |
| Manipulação do DOM |
Usou document.getElementById() e
.textContent ou .innerHTML.
|
0-3 |
| Evento |
Usou onclick ou
addEventListener para reagir a um clique.
|
0-2 |
| Total | 0-10 |
🎯 Título
"DOM: O Controle Remoto da Sua Página" 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. E código de verdade é mais poderoso que metáfora).
🎯 Objetivos Operacionais
- Compreender o DOM (Document Object Model) como uma árvore que representa a página HTML a árvore genealógica do seu site. Cada tag é um parente. Cada parente tem um papel. E você vai aprender a mandar em todos eles.
-
Utilizar métodos de seleção:
getElementById(),querySelector(),querySelectorAll()cada um com seu superpoder. Saber qual usar é o que separa os novatos dos mestres. E vocês não são mais novatos. - Modificar atributos, classes e estilos via JavaScript porque mudar a aparência dinamicamente é o que faz o site parecer vivo. E vivo é o que importa.
-
Criar e remover elementos dinamicamente com
createElement(),appendChild(),removeChild()você é o jardineiro dessa árvore. Plante, regue, pode. E às vezes, arranque pela raiz. - Bônus: você é o jardineiro dessa árvore regue com criatividade e pode com responsabilidade. Poder sem responsabilidade é só vandalismo digital. E vandalismo não é revolução.
📚 Conteúdo Programático
- 1. O que é o DOM? A representação da página em forma de árvore. "O DOM não é o HTML. O DOM é o que o navegador ENTENDE do HTML. São primos, não gêmeos."
-
2. Métodos de Seleção
getElementById(),querySelector(),querySelectorAll(). "Cada ferramenta tem seu uso. Não use um martelo para apertar um parafuso." -
3. Manipulação de Classes
classList.add(),classList.remove(),classList.toggle(). "Classes são etiquetas. Coloque, tire, troque. É assim que você veste seu site." -
4. Manipulação de Estilos
element.style.propriedade = valor. "Estilo inline via JS é poderoso, mas use com moderação. É o tempero, não o prato principal." -
5. Criação e Remoção
createElement(),appendChild(),removeChild(),remove(). "Criar do nada é o superpoder máximo. Use para dar vida." - 6. Cultura Digital e Autonomia Refletir sobre como a manipulação do DOM permite que os usuários criem experiências personalizadas e acessíveis. "Vocês não estão mais apenas visitando a web vocês estão construindo ela, elemento por elemento."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| 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 e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP06 | Analisar, em diferentes textos, os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos, considerando a função social e os efeitos de sentido pretendidos. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na manipulação da árvore DOM. O eixo Mundo Digital é fortalecido quando os alunos compreendem como a página é estruturada internamente e como podem interagir com essa estrutura.
🧩 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, não com o renderizador. "Você não precisa entender o motor do carro para dirigir. Mas se entender, dirige melhor." |
| Algoritmos | Sequência de passos para selecionar, modificar, criar e remover elementos cada ação é um pequeno algoritmo. "Selecionar → Modificar → Atualizar. Repita. É assim que se constrói." |
💻 Código Comentado
// ================================================================
// SEMANA 5 DOM: O CONTROLE REMOTO DA SUA PÁGINA
// "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) {
const novoItem = document.createElement("li");
novoItem.textContent = texto;
novoItem.classList.add("item-lista");
novoItem.style.padding = "0.5rem";
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();
console.log(`🗑️ Elemento "${id}" removido.`);
}
// ================================================================
// PASSO 6: EXEMPLO PRÁTICO TODO 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 (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Controla 🎮 | Professor pergunta: "Vocês já imaginaram ter um CONTROLE REMOTO da página? Poder mudar cor, esconder coisas, criar do nada?" Apresenta o DOM como esse controle. "O DOM é a árvore genealógica da página cada elemento é um parente. E vocês vão aprender a mandar em cada um deles." |
| 5-10 | O que é o DOM? 🌳 | Explicação: "O DOM é a representação da página em forma de árvore. Cada tag é um nó. E você pode manipular CADA NÓ." Demonstração no DevTools: "Olhem aqui, no inspetor. Cada tag que vocês veem é um nó. E vocês vão poder mexer em todos eles." |
| 10-15 | Métodos de Seleção 🎯 |
Apresentação de getElementById(),
querySelector(),
querySelectorAll(). "Cada um tem seu uso
escolha a ferramenta certa.
getElementById é o mais rápido,
querySelector é o mais flexível. Use com
sabedoria."
|
| 15-40 | Caça ao Elemento 🔍 | Cada grupo pratica a manipulação do DOM no projeto: selecionar elementos, mudar cores, esconder/mostrar, criar novos elementos, remover elementos. Professor circula, ajuda, provoca: "E se você criasse um elemento NOVO? E se você removesse algo? E se você mudasse a classe de um elemento? E se você criasse algo que se autodestrói?" |
| 40-45 | Mostra de Manipulação 🎪 | Cada grupo mostra o que conseguiu manipular. "Quem criou algo do nada? Quem escondeu algo? Quem mudou a cor de tudo? Quem fez algo que explode? (metaforicamente)" |
| 45-48 | Check-in de Poder ⚡ | "Como vocês se sentem tendo CONTROLE sobre a página? Poderosos? Assustados? O DOM é um superpoder use com responsabilidade. Com grandes poderes vêm grandes responsabilidades. E a responsabilidade é fazer algo que valha a pena." |
| 48-50 | Fechamento + Provocação 🚀 | "Agora vocês controlam a página. Na semana que vem: EVENTOS quando o usuário toca na tela. Vamos fazer o projeto REAGIR. E reagir é o que faz algo estar VIVO." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela; descreva a árvore DOM verbalmente; use fontes grandes e alto contraste; use feedback sonoro para manipulações; garanta que todas as ações tenham equivalentes não-visuais. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; use mensagens na tela; garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize atalhos de teclado; garanta que todos os elementos interativos sejam acessíveis via teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades | Desafio extra: "Crie um elemento que se autodestrói após 5 segundos e explique por que isso pode ser útil em um projeto real. Depois, crie um sistema que clona elementos infinitamente." |
📊 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
(getElementById,
querySelector,
querySelectorAll).
|
0-2 |
| Manipulação de Estilos |
Modificou estilos inline ou classes com
classList.
|
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 (mensagem, cores) ao usuário. | 0-1 |
| Bônus: Criatividade | Fez algo além do esperado (animações, clones, etc.). | 0-2 |
| Total | 0-10 |
🎯 Título
"Eventos: Quando o Usuário Toca na Tela" 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. Mas código bem escrito parece mágica. E mágica, quando você entende, vira ferramenta. E ferramenta muda o mundo.
🎯 Objetivos Operacionais
- Compreender o que são eventos e por que eles são a ponte entre o usuário e a máquina a interface onde o humano encontra o digital. É onde a revolução acontece.
-
Utilizar
addEventListener()a forma moderna, flexível e recomendada de escutar eventos. "Esqueçaonclickno HTML. Isso é coisa do passado. O futuro éaddEventListener." -
Dominar eventos essenciais:
click,keydown,mouseover,mouseoutcada um abre uma porta diferente de interação. E cada porta leva a um mundo diferente. - Adicionar eventos completos ao projeto interação com o usuário em múltiplas frentes. "Um site que não reage é um cartaz. E cartaz não convence ninguém."
- Bônus: eventos são a alma da interatividade trate-os com respeito. Eles são a voz do usuário no seu código. E toda voz merece ser ouvida.
📚 Conteúdo Programático
- 1. O que são eventos? Interações do usuário que disparam ações. "Evento é tudo o que o usuário FAZ. Clique, tecla, movimento, gesto. Se o usuário fez, é evento."
-
2. Tipos de Eventos
click,keydown,keyup,mouseover,mouseout,mouseenter,mouseleave. "Cada evento tem sua personalidade. Conheça todos. E escolha os que fazem sentido para você." -
3.
addEventListener()A forma moderna e recomendada. "Não useonclickno HTML. Isso é 2010. Estamos em 2026." -
4. O Objeto
eventInformações sobre o evento (qual tecla, posição do mouse, elemento alvo). "O evento traz dados. Use esses dados. Dados são poder." - 5. Eventos no Projeto Como integrar eventos ao projeto de cada grupo. "Teoria é legal, mas PRÁTICA é o que importa. E prática é o que vai mudar o mundo."
- 6. Cultura Digital e Interação Refletir sobre como os eventos moldam a experiência do usuário e como podem ser usados para criar experiências mais humanas e acessíveis.
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT303 | Resolver e elaborar problemas que envolvem funções polinomiais de 1º e 2º graus, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP07 | Analisar, em textos de diferentes gêneros, marcas que expressam a posição do enunciador frente àquilo que é dito. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| Código | Habilidade |
|---|---|
| EM13CO02 | Construir soluções computacionais para problemas do cotidiano, de forma autônoma e colaborativa, utilizando linguagens de programação. |
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), aplicada aqui na criação de interações com o usuário. O eixo Cultura Digital é fortalecido quando os alunos discutem como as interfaces reagem aos usuários e como isso afeta a experiência digital.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Decomposição | Cada interação (clique, tecla, mouse) é decomposta em: (1) detectar o evento, (2) executar a ação, (3) atualizar a interface. "Detectar → Processar → Reagir. É o ciclo da vida digital." |
| Algoritmos | Cada evento segue uma sequência lógica: ouvir → processar → reagir. "Não é aleatório. É algorítmico. E algoritmo é ordem no caos." |
💻 Código Comentado
// ================================================================
// SEMANA 6 EVENTOS: QUANDO O USUÁRIO TOCA NA TELA
// "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
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();
const valor = evento.target.value;
alert(`Você digitou: "${valor}" e pressionou Enter!`);
evento.target.value = "";
}
});
// 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'); // closest procura o ancestral mais próximo
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) {
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";
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 (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Reage 👆 | Professor pergunta: "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 vocês vão aprender a dominar TODOS ELES. O usuário toca, o site responde. É o diálogo entre humano e máquina." |
| 5-10 | O que são Eventos? 📡 |
Explicação: "Eventos são sinais que o navegador dispara
quando o usuário interage. onclick é o
velho, addEventListener é o novo e é
MELHOR. Esqueça onclick no HTML. Isso é
2010. Estamos em 2026."
|
| 10-15 | Tipos de Eventos 📋 |
Apresentação dos principais eventos: click,
keydown, mouseover,
mouseout. "Cada um tem seu uso escolha o
certo para o que você quer fazer. E lembre-se: o evento
traz dados com ele. Use esses dados."
|
| 15-40 | A Hora do Clique 🖱️ | Cada grupo adiciona eventos completos ao projeto: cliques em botões, teclas pressionadas, mouse passando por cima de elementos. Professor circula, ajuda, provoca: "O que acontece quando o usuário clica AQUI? E se ele passar o mouse ALI? E se ele apertar ENTER? E se ele fizer CTRL+SHIFT+R?" |
| 40-45 | Mostra de Eventos 🎪 | Cada grupo mostra o que seus eventos fazem. "Quem tem o evento mais criativo? Quem tem o evento mais útil? Quem tem o evento mais CAÓTICO? Quem fez um jogo com eventos?" |
| 45-48 | Check-in de Interação 🎮 | "Como vocês se sentem vendo o projeto REAGIR a vocês? É como dar vida a uma criatura e vocês são os criadores. Cada reação é uma prova de que o código está vivo." |
| 48-50 | Fechamento + Provocação 🚀 | "O projeto agora REAGE. Na semana que vem: DADOS E ARRAYS a biblioteca do caos. Vamos organizar a bagunça. Porque dados bagunçados são inúteis. Dados organizados são poder." |
♿ 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; descreva as interações verbalmente; use mensagens de áudio para ações; garanta que todas as ações tenham equivalentes não-visuais. |
| Deficiência Auditiva | Use feedback visual para todos os eventos (mudança de cor, animação, mensagem na tela); garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Garanta navegação por teclado; use atalhos de teclado; botões com tamanho adequado (mínimo 44px); garanta que eventos de mouse tenham equivalentes de teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades |
Desafio extra: "Implemente um evento de
keydown que executa uma ação diferente para
cada tecla pressionada. Crie um 'modo desenvolvedor' com
atalhos secretos."
|
📊 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 (click, keydown, mouseover, etc.).
|
0-3 |
| Eventos de Clique | Implementou eventos de clique em botões ou elementos. | 0-2 |
| Eventos de Teclado | Implementou pelo menos 1 evento de teclado (keydown, keyup). | 0-2 |
| Eventos de Mouse | Implementou pelo menos 1 evento de mouse (mouseover, mouseout). | 0-1 |
| Feedback ao Usuário | O código fornece feedback visual para todas as interações. | 0-1 |
| Bônus: Criatividade | Fez algo além do esperado com eventos (jogo, atalhos, animações). | 0-1 |
| Total | 0-10 |
🎯 Título
"Dados e Arrays: A Biblioteca da Revolução" 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 e olha que 80% dos projetos de software falham por má gestão de dados, mas vocês vão ser os 20% que sabem organizar a bagunça).
🎯 Objetivos Operacionais
- Compreender o conceito de arrays (listas) como estruturas para armazenar e organizar dados a caixa de ferramentas do programador. Sem arrays, o código é um amontoado de variáveis soltas. Com arrays, é uma biblioteca organizada.
-
Utilizar métodos fundamentais:
push(),pop(),shift(),unshift(),splice(),lengthcada um com sua função, cada um com seu momento. É como ter um conjunto de chaves: cada uma serve para um tipo de parafuso. -
Percorrer arrays com
forEach()eforporque dados parados não servem para nada. Dados percorridos viram informação. E informação é poder. - Implementar arrays no projeto para gerenciar dados (lista de tarefas, itens, posts, etc.) transformar teoria em prática. Porque teoria sem prática é só conversa. E conversa não muda o mundo.
- Bônus: arrays são caixas de ferramentas mantenha a sua organizada. Uma caixa de ferramentas bagunçada é inútil. Uma organizada é poder. E poder é o que move a revolução.
📚 Conteúdo Programático
- 1. O que são Arrays? Listas ordenadas de valores (números, strings, objetos, etc.). "Array é uma lista. E lista é organização. E organização é poder."
-
2. Criação e Acesso
[], acesso por índice (base 0),.length. "Lembre-se: o primeiro é 0. O segundo é 1. Isso confunde todo mundo no começo. Depois vira natural. E natural é o que importa." -
3. Métodos Essenciais
push(),pop(),unshift(),shift(),splice(). "Cada método é uma ferramenta. Use a certa para o trabalho certo. Não use um martelo para apertar um parafuso." -
4. Percorrendo Arrays
forEach(),for. "Percorrer é como folhear um livro. Você vai página por página, vendo cada item. E cada item tem uma história." - 5. Arrays no Projeto Como usar arrays para gerenciar dados no projeto. "Dados sem estrutura são ruído. Arrays dão estrutura ao ruído. E estrutura é o que transforma ruído em música."
- 6. Cultura Digital e Dados Refletir sobre como os dados são coletados, armazenados e usados na era digital. "Seus dados são valiosos. Empresas pagam por eles. Vocês vão aprender a gerenciar os seus."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT304 | Analisar e construir modelos matemáticos para descrever fenômenos e situações do cotidiano, utilizando funções, equações e inequações, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP08 | Produzir textos de diferentes gêneros, com adequação ao contexto de produção e circulação, a composição, a estilística e a variedade linguística. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| Código | Habilidade |
|---|---|
| EM13CO05 | Utilizar, de forma crítica e criativa, diferentes recursos computacionais 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 recursos computacionais de forma crítica e criativa (EM13CO05), aplicada aqui na organização e manipulação de dados com arrays. O eixo Cultura Digital é fortalecido quando os alunos refletem sobre a importância dos dados na sociedade contemporânea e como podem ser usados de forma ética e responsável.
🧩 Pilares do Pensamento Computacional trabalhados na aula
| Pilar | Aplicação na aula |
|---|---|
| Abstração | O array abstrai a complexidade de gerenciar múltiplos dados em vez de variáveis soltas, temos uma lista estruturada. "Em vez de 20 variáveis, um array. Muito mais limpo. Muito mais poderoso." |
| Reconhecimento de Padrões | O padrão de manipulação de listas (adicionar, remover, percorrer) se repete em diversos contextos. "Uma vez que você aprende a mexer em um array, você sabe mexer em todos. É um padrão universal." |
💻 Código Comentado
// ================================================================
// SEMANA 7 DADOS E ARRAYS: A BIBLIOTECA DA REVOLUÇÃO
// "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. Cada valor tem um índice.
// O PRIMEIRO índice é 0 (ZERO). Isso é importante.
// ================================================================
// 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
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); // Adiciona 35 e 36 no índice 2
console.log("Numeros após adição:", numeros); // [10, 20, 35, 36, 40, 50]
// Substituir elementos
numeros.splice(3, 2, 37, 38); // Remove 2 a partir do índice 3 e adiciona 37, 38
console.log("Numeros após substituição:", numeros); // [10, 20, 35, 37, 38, 50]
// ================================================================
// PASSO 5: PERCORRENDO ARRAYS ForEach e For
// ================================================================
const cores = ["Vermelho", "Azul", "Verde", "Amarelo"];
// forEach() executa uma função para cada item
console.log("=== forEach ===");
cores.forEach(function(cor, indice) {
console.log(`Cor ${indice + 1}: ${cor}`);
});
// forEach com arrow function (forma moderna)
console.log("=== forEach (arrow) ===");
cores.forEach((cor, indice) => {
console.log(`${indice}: ${cor}`);
});
// for loop forma clássica (mais controle)
console.log("=== for loop ===");
for (let i = 0; i < cores.length; i++) {
console.log(`Índice ${i}: ${cores[i]}`);
}
// for...of forma moderna (mais simples)
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)
console.log(`Índice do 99: ${numeros2.indexOf(99)}`); // -1 (não encontrado)
// 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
// ================================================================
// Array de objetos (cada objeto representa algo)
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(), // ID único baseado no timestamp
descricao: descricao,
prioridade: prioridade, // "alta", "normal", "baixa"
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:");
console.log(" - adicionarTarefa(descricao, prioridade)");
console.log(" - listarTarefas()");
console.log(" - concluirTarefa(id)");
console.log(" - removerTarefa(id)");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Organiza 📚 | Professor pergunta: "Quem aqui já perdeu uma tarefa importante porque anotou num papel e perdeu? E se a gente construísse um sistema que NUNCA perde nada? Com arrays, a gente pode guardar, organizar e manipular dados como num passe de mágica. Dados organizados são poder. Dados bagunçados são só barulho." |
| 5-10 | O que são Arrays? 📦 | Explicação: "Arrays são listas ordenadas. Cada item tem um número (índice). O primeiro é 0, o segundo é 1, e assim por diante. É como uma caixa de ferramentas com divisórias. Cada ferramenta no seu lugar." |
| 10-15 | Métodos Essenciais 🛠️ |
Demonstração de push(), pop(),
unshift(), shift(),
splice(), length. "push
coloca no final, pop tira do final são como
uma pilha de pratos. unshift coloca no
início, shift tira do início como uma fila
de banco. E splice é o canivete suíço: faz
tudo."
|
| 15-40 | Organizando o Caos 📋 |
Cada grupo implementa arrays no projeto para gerenciar
dados: lista de tarefas, itens, posts, etc. Devem usar
push, pop, shift,
unshift e percorrer com
forEach. Professor circula, ajuda, provoca:
"O que mais você pode guardar num array? Como você pode
exibir isso na tela? E se você adicionar um item? E se
você remover? E se você filtrar?"
|
| 40-45 | Mostra de Arrays 🎪 | Cada grupo mostra como usou arrays no projeto. "Quem tem o array mais útil? Quem tem o array mais criativo? Quem tem o array mais CAÓTICO (mas que funciona)? Quem usou objetos dentro do array?" |
| 45-48 | Check-in de Organização 📊 | "Como vocês se sentem organizando dados com arrays? É como ter uma biblioteca pessoal e vocês são os bibliotecários. Dados organizados são a base de qualquer sistema que presta." |
| 48-50 | Fechamento + Provocação 🚀 | "Os dados estão organizados. Na semana que vem: FUNÇÕES o exército da revolução. Vamos modularizar o código e deixar tudo mais limpo. Porque código limpo é código que não dá dor de cabeça." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela; descreva a estrutura dos arrays verbalmente; use fontes grandes e alto contraste; forneça exemplos em áudio; garanta que todas as operações tenham feedback não-visual. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize editores com suporte a teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades |
Desafio extra: "Implemente um sistema de busca dentro do
array usando filter e find.
Depois, crie um sistema de ordenação com
sort."
|
📊 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. | 0-2 |
| Métodos de Adição |
Utilizou push e/ou
unshift para adicionar itens.
|
0-2 |
| Métodos de Remoção |
Utilizou pop e/ou shift para
remover itens.
|
0-2 |
| Percorrimento |
Usou forEach ou for para
percorrer o array e exibir dados.
|
0-2 |
| Manipulação do DOM | Atualizou a interface com base nos dados do array. | 0-2 |
| Total | 0-10 |
🎯 Título
"Funções: O Exército da Revolução" Ou: como ensinar seu código a fazer truques novos sem repetir a mesma coisa 500 vezes (e sem enlouquecer no processo, porque código repetido é o caminho mais curto para o inferno do desenvolvedor e o inferno do desenvolvedor é um lugar onde tudo se repete e nada funciona).
🎯 Objetivos Operacionais
- Compreender o conceito de funções como blocos de código reutilizáveis a unidade básica de organização no JavaScript. "Função é uma receita de bolo. Escreva uma vez, use várias. E se você errar a receita, o bolo não cresce."
- Criar funções com parâmetros e retorno de valores porque função que não recebe nada e não devolve nada é igual a um grito no vazio. Faz barulho, mas não produz nada.
- Utilizar funções para organizar e modularizar o código do projeto transformar um macarrão em uma obra de arte. "Código organizado é código que você não tem vergonha de mostrar."
- Refatorar o código do projeto para usar funções porque código refatorado é código que você não tem vergonha de mostrar. E código que você não tem vergonha de mostrar é código que muda o mundo.
- Bônus: funções são os blocos de construção sem elas, o código vira um macarrão. E macarrão é gostoso de comer, mas horrível de programar. E horrível de programar é horrível de manter.
📚 Conteúdo Programático
- 1. O que são Funções? Sub-rotinas que realizam uma tarefa específica. "Uma função é uma máquina. Você coloca algo nela, ela processa, e devolve algo. Ou não. Mas o importante é que ela FAZ algo."
-
2. Anatomia de uma Função
function nome(parâmetros) { corpo }. "Nome, parâmetros, corpo. É a trindade da função." - 3. Parâmetros vs Argumentos O que a função espera vs o que é passado. "Parâmetro é o que a função espera. Argumento é o que você dá a ela. São namorados, mas não são a mesma coisa."
-
4. Retorno
returno que a função devolve. "Sem return, a função devolveundefined. Eundefinednão serve para quase nada." - 5. Refatoração Como transformar código repetido em funções reutilizáveis. "Código repetido é código que você vai ter que corrigir em 5 lugares quando algo quebrar. Não seja essa pessoa."
- 6. Cultura Digital e Colaboração Refletir sobre como funções permitem que equipes colaborem de forma mais eficiente. "Funções são como capítulos de um livro. Cada um escreve um capítulo, e no final, temos uma história completa."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT401 | Aplicar conceitos matemáticos (funções, equações, gráficos, etc.) na compreensão e resolução de problemas de outras áreas do conhecimento, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP09 | Produzir textos de diferentes gêneros, com adequação ao contexto de produção e circulação, a composição, a estilística e a variedade linguística. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na modularização e organização do código com funções. O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a decompor problemas complexos em funções menores e mais gerenciáveis.
🧩 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. "Uma função é um algoritmo em miniatura. E algoritmos são a base de tudo." |
| Decomposição | O problema "fazer o projeto funcionar" é decomposto em funções menores e especializadas. "Dividir para conquistar. Cada função resolve um pedaço do problema." |
💻 Código Comentado
// ================================================================
// SEMANA 8 FUNÇÕES: O EXÉRCITO DA REVOLUÇÃO
// "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?
// Funções são blocos de código que realizam uma tarefa específica.
// Elas podem receber dados (parâmetros) e devolver resultados (return).
// ================================================================
// 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 (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Modulariza 🧩 | Professor pergunta: "Quem aqui já copiou e colou o mesmo código 5 vezes? Quem já sentiu que o código estava virando um MACARRÃO?" Apresenta funções como a solução: "Funções são como receitas de bolo você escreve uma vez e usa quantas vezes quiser. E quando você precisa corrigir, corrige em UM lugar. Não em 50." |
| 5-10 | O que são Funções? 🧠 | Explicação: "Funções são blocos de código que realizam uma tarefa. Elas recebem parâmetros (ingredientes), processam e retornam um resultado (o bolo). Função sem parâmetro e sem retorno é igual a um grito no vazio faz barulho, mas não produz nada." |
| 10-15 | Anatomia de uma Função 🔬 |
Demonstração:
function saudacao(nome) { return "Olá, " + nome;
}. "Veja: parâmetro, processamento, retorno. É assim que
se faz. E se você não tem retorno, a função devolve
undefined. E undefined não
serve para quase nada."
|
| 15-40 | Modularizando a Revolução 🔨 | Cada grupo refatora o código do projeto para usar funções. Devem identificar partes repetidas e transformá-las em funções reutilizáveis. Professor circula, ajuda, provoca: "O que se repete? O que pode virar uma função? O que ficaria mais LIMPO com funções? E se você criasse uma função que chama outra função?" |
| 40-45 | Mostra de Funções 🎪 | Cada grupo mostra como refatorou o código. "Quem tem a função mais útil? Quem tem a função mais criativa? Quem tem a função mais BEM ESCRITA? Quem reduziu o código em 50% com funções?" |
| 45-48 | Check-in de Modularização 🧹 | "Como vocês se sentem com o código mais organizado? É como arrumar o quarto dá trabalho, mas fica MELHOR. E quando o quarto está arrumado, você encontra tudo mais fácil." |
| 48-50 | Fechamento + Provocação 🚀 | "O código está modularizado. Na semana que vem: DEBUG E POLIMENTO a batalha final. Vamos caçar bugs e deixar o projeto PRONTO para o mundo. Porque projeto com bug é projeto que não funciona. E projeto que não funciona é projeto que não muda nada." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela; descreva a estrutura das funções verbalmente; use fontes grandes e alto contraste; forneça exemplos em áudio. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize editores com suporte a teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades | Desafio extra: "Crie uma função de ordem superior que recebe outra função como parâmetro. Use-a para criar um sistema de filtros personalizáveis." |
📊 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. | 0-3 |
| Parâmetros e Retorno | As funções recebem parâmetros e retornam valores corretamente. | 0-2 |
| Modularização | O código está dividido em funções com responsabilidades claras. | 0-3 |
| Refatoração | Refatorou código repetido para usar funções. | 0-2 |
| Total | 0-10 |
🎯 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 porque ninguém merece ver seu projeto pegar fogo na apresentação. E olha que 70% dos projetos de software falham na fase de testes, mas vocês vão ser os 30% que sabem testar).
🎯 Objetivos Operacionais
- Compreender a importância de testar e depurar como parte essencial do desenvolvimento não é fracasso, é processo. "Debug é o processo de remover bugs. Programação é o processo de colocá-los. Os dois andam juntos."
-
Utilizar ferramentas de debug:
console.log(),debugger, breakpoints, DevTools o arsenal do caçador de bugs. "O console é seu melhor amigo. Use-o. Abuse dele. Ele não vai te julgar." - Identificar e corrigir diferentes tipos de erro: sintaxe, lógica e referência cada um com sua personalidade, cada um com sua solução. "Cada erro é um professor disfarçado. Preste atenção no que ele ensina."
- Refatorar o código para melhorar legibilidade e manutenibilidade porque código legível é código que você não tem vergonha de mostrar. E código que você não tem vergonha de mostrar é código que muda o mundo.
- Polir o projeto para a apresentação final os últimos 10% que fazem a diferença entre "ok" e "uau". "Os detalhes são o que separa o profissional do amador."
- Bônus: errar é humano o computador só faz o que você manda, não o que você quer. E quando você aprende a errar, você aprende a acertar.
📚 Conteúdo Programático
- 1. Tipos de Erro Sintaxe, referência, lógica, runtime. "Cada erro é um professor disfarçado. Preste atenção no que ele ensina."
-
2. Ferramentas de Debug
console.log(),console.error(),console.warn(),debugger, breakpoints. "O console é seu melhor amigo. Use-o. Abuse dele. Ele não vai te julgar." - 3. Estratégias de Debug Isolar o problema, reproduzir o erro, ler as mensagens de erro. "Debug é uma arte. E arte se aprende praticando."
- 4. Refatoração Reescrever código para melhorar sem mudar o comportamento. "Refatorar não é consertar erro. É melhorar o que já funciona."
- 5. Polimento Final Últimos ajustes de design, usabilidade, acessibilidade. "Os detalhes são o que separa o profissional do amador."
- 6. Cultura Digital e Qualidade Refletir sobre a importância da qualidade e da confiabilidade em produtos digitais. "Um projeto com bugs é um projeto que não respeita seus usuários."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT402 | Utilizar o raciocínio lógico e a linguagem matemática para compreender e resolver problemas de outras áreas do conhecimento, com ou sem apoio de tecnologias digitais. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP10 | Revisar e editar textos produzidos, considerando a adequação ao contexto de produção e circulação, a composição, a estilística e a variedade linguística. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na depuração e refinamento do projeto. O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a identificar e corrigir erros de forma sistemática.
🧩 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 para identificar onde está o erro. "Divida o problema. Teste cada parte. Encontre o culpado." |
| Algoritmos | O processo de debug segue uma sequência lógica: reproduzir → isolar → corrigir → testar. "Debug é um algoritmo. Siga os passos." |
💻 Código Comentado
// ================================================================
// 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
}
// 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);
}
}
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
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 3: Iniciando soma...");
for (let i = 0; i < notas.length; i++) {
console.log(` - Adicionando notas[${i}] = ${notas[i]}`);
soma += notas[i];
}
console.log("🔍 PASSO 4: Soma total =", soma);
const media = soma / notas.length;
console.log("🔍 PASSO 5: Média calculada =", media);
return media;
}
// ================================================================
// PASSO 4: VALIDAÇÃO DE DADOS Prevenindo bugs antes deles acontecerem
// ================================================================
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 sem mudar o comportamento
// ================================================================
// ANTES: Código confuso
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
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: CULTURA DIGITAL Qualidade é respeito
// ================================================================
const reflexaoDebug = {
pergunta: "O que significa entregar um produto de qualidade?",
reflexao: "Qualidade é respeito pelo usuário.",
desafio: "O que você pode fazer para garantir que seu projeto seja confiável?",
conclusao: "Um projeto sem bugs é um projeto que respeita seus usuários."
};
console.log("✅ Debug finalizado. Código polido e pronto.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição (com a irreverência necessária) |
|---|---|---|
| 0-5 | O Gancho que Corrige 🐛 | Professor diz: "Vocês já passaram horas tentando descobrir por que o código não funciona? Se sim, vocês já são CAÇADORES DE BUGS. O problema não é ter erros é não saber como ENCONTRÁ-LOS. E hoje vocês vão aprender a caçar. E quando vocês aprenderem a caçar, nenhum bug vai escapar." |
| 5-10 | Tipos de Erro 🎯 | Explicação: "Erro de sintaxe = você escreveu errado. Erro de referência = você usou algo que não existe. Erro de lógica = o código roda, mas faz a coisa ERRADA. Cada erro é um professor disfarçado. Preste atenção no que ele ensina." |
| 10-15 | Ferramentas de Debug 🛠️ |
Demonstração: console.log(),
console.error(),
console.table(), debugger,
breakpoints no DevTools. "O console é seu melhor amigo.
Use-o. Abuse dele. Ele não vai te julgar. Ele só vai
mostrar a verdade."
|
| 15-40 | Caça aos Bugs 🔍 |
Cada grupo testa seu projeto, identifica bugs e os
corrige. Devem usar console.log para
investigar e documentar os bugs encontrados. Professor
circula, ajuda, provoca: "O que está quebrado? Como você
descobriu? O que você fez para corrigir? O que você
aprendeu com isso? Qual foi o bug mais ridículo que você
encontrou?"
|
| 40-45 | Mostra de Debug 🎪 | Cada grupo compartilha o bug mais ridículo que encontrou e como corrigiu. Risadas garantidas. "Quem teve o bug mais idiota? Quem teve o bug mais difícil? Quem aprendeu mais com um bug?" |
| 45-48 | Check-in de Resiliência 💪 | "Como vocês se sentem depois de caçar bugs? Exaustos? Satisfeitos? O debug é parte do processo e vocês são MELHORES por causa disso. Cada bug corrigido é um nível ganho." |
| 48-50 | Fechamento + Provocação 🚀 | "O projeto está polido. Na semana que vem: LANÇAMENTO OFICIAL o mundo vai ver. Preparem-se para brilhar. Porque vocês construíram algo. E construir é o que importa." |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Use leitores de tela; descreva as mensagens de erro verbalmente; use fontes grandes e alto contraste; forneça feedback não-visual para depuração. |
| Deficiência Auditiva | Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros; garanta que nenhuma informação seja transmitida apenas por som. |
| Deficiência Motora | Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física; utilize editores com suporte a teclado. |
| TDAH | Divida em sprints de 10 minutos; use cronômetros visuais; checklist física; minimize distrações. |
| TEA | Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; forneça exemplos prontos para consulta. |
| Altas Habilidades |
Desafio extra: "Crie um sistema de testes automatizados
para seu projeto. Use try...catch para
testar diferentes cenários."
|
📊 Critérios Operacionais de Avaliação com pontuação
| Critério | Descrição | Pontuação |
|---|---|---|
| Identificação de Bugs | Encontrou e documentou bugs no projeto. | 0-3 |
| Correção de Bugs | Corrigiu os bugs de forma correta e funcional. | 0-3 |
| Uso do Console |
Utilizou console.log ou ferramentas de
debug para investigar erros.
|
0-2 |
| Refatoração | Melhorou a legibilidade do código (renomeou variáveis, extraiu funções, comentou). | 0-2 |
| Total | 0-10 |
🎯 Título
"Lançamento Oficial: O Mundo Vai Ver" 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, porque o que importa não é o código, é a história que vocês têm para contar. E história bem contada muda o mundo).
🎯 Objetivos Operacionais
- Apresentar o projeto final para a turma e convidados (formato Shark Tank/Demo Day) porque revolução que ninguém vê não é revolução, é só ensaio. E ensaio não muda o mundo.
- Demonstrar o protótipo em ação ao vivo, sem rede de segurança porque o mundo real não tem rede de segurança. E é no mundo real que a revolução acontece.
- Refletir sobre o processo de aprendizagem o que aprenderam, o que foi difícil, o que mudou. "O que vocês eram antes e o que são agora?"
- Celebrar as conquistas do bimestre e reconhecer o esforço de cada um porque celebrar é tão importante quanto construir. E construção sem celebração é só trabalho.
- Bônus: entender que o fim é só o começo de algo maior. "Vocês não são mais os mesmos. E o mundo não é mais o mesmo."
📚 Conteúdo Programático
- 1. Pitch Como apresentar um projeto de forma convincente (3 minutos). "Menos é mais. Se você não consegue explicar em 3 minutos, você não entendeu direito."
- 2. Demonstração ao Vivo Mostrar o projeto funcionando (e lidar com os imprevistos). "O demo ao vivo é onde o herói se prova. E herói não desiste quando algo dá errado."
- 3. Perguntas e Respostas Como responder à banca com confiança. "Não saber é humano. Inventar é desonesto. Seja humano."
- 4. Autoavaliação Refletir sobre o que aprendeu. "O que você era antes e o que você é agora?"
- 5. Celebração Reconhecer o esforço e a evolução de cada um. "Vocês construíram algo. Isso é mais do que a maioria das pessoas faz."
- 6. Cultura Digital e Protagonismo Refletir sobre o papel de cada um como criador digital. "Vocês não são mais usuários. Vocês são criadores."
📜 Habilidades BNCC e RCP-PR
BNCC Matemática e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13MAT501 | Comunicar ideias matemáticas de forma clara, precisa e contextualizada, utilizando diferentes linguagens e representações. |
BNCC Linguagens e suas Tecnologias:
| Código | Habilidade |
|---|---|
| EM13LP11 | Apresentar e defender pontos de vista em situações de debate, considerando a relevância dos argumentos e a adequação ao contexto. |
BNCC Computação (Complemento à BNCC) Resolução CNE/CEB nº 1/2022:
| 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), aplicada aqui na apresentação final do projeto. O eixo Cultura Digital é fortalecido quando os alunos reconhecem seu papel como protagonistas e criadores no mundo digital.
🧩 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: como abstraíram o problema, decompuseram a solução, reconheceram padrões e criaram algoritmos. "É a culminação de tudo que vocês aprenderam." |
💻 Código Comentado
// ================================================================
// 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."
// ================================================================
// ================================================================
// 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].",
solucao: "Nossa solução é [DESCRIÇÃO DA SOLUÇÃO].",
demonstracao: "Vamos demonstrar como funciona.",
impacto: "O impacto que queremos gerar é [IMPACTO DESEJADO].",
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.",
voz: "Fale devagar. Projete a voz. Pausas são poderosas.",
demonstracao: "Mostre o projeto funcionando. Se algo der errado, respire e continue.",
perguntas: "Escute a pergunta completa. Pense antes de responder. Não invente se não souber.",
tempo: "3 minutos é pouco. Seja direto. Corte o que não é essencial.",
paixao: "Mostre que você se importa. Paixão é contagiante."
};
console.table(dicasApresentacao);
// ================================================================
// PASSO 3: AUTOAVALIAÇÃO Refletindo sobre o processo
// ================================================================
function autoavaliacao() {
console.log("📝 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("🎬 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");
console.log("\n🔹 O PROBLEMA (30 segundos)");
console.log("- Qual problema vocês identificaram?");
console.log("- Por que esse problema é importante?");
console.log("- Quem ele afeta?");
console.log("\n🔹 A SOLUÇÃO (30 segundos)");
console.log("- O que vocês criaram?");
console.log("- Como funciona? (explicação breve)");
console.log("- Quais tecnologias usaram?");
console.log("\n🔹 DEMONSTRAÇÃO (60 segundos)");
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?");
console.log("- O que vocês aprenderam?");
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");
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."
},
{
pergunta: "Qual foi a maior dificuldade técnica?",
dica: "Seja honesto. Mostre que você aprendeu com os desafios."
},
{
pergunta: "O que vocês fariam diferente?",
dica: "Reflita sobre o processo. Ninguém é perfeito. O importante é aprender."
},
{
pergunta: "Como isso pode ser usado na prática?",
dica: "Dê um exemplo concreto. Mostre que você pensou no usuário."
},
{
pergunta: "O que vocês mais aprenderam?",
dica: "Conte uma história. Aprendizado é mais interessante que código."
},
{
pergunta: "Se tivessem mais tempo, o que adicionariam?",
dica: "Mostre que você tem visão de futuro. Um projeto nunca está 100% pronto."
}
];
console.log("❓ 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.");
}
// ================================================================
// PASSO 7: CULTURA DIGITAL Protagonismo
// ================================================================
const reflexaoProtagonismo = {
pergunta: "O que significa ser um criador digital?",
reflexao: "Vocês não são mais usuários. São criadores.",
desafio: "Como você vai usar esse poder para construir um mundo melhor?",
conclusao: "A revolução não vai ser televisionada. Vai ser codificada. E vocês são os codificadores."
};
console.log("🎤 Apresentação carregada. Pronto para brilhar.");
⏱️ Detalhamento Minuto a Minuto (50 min)
| Minuto | Atividade | Descrição (com a irreverência necessária) |
|---|---|---|
| 0-5 | Abertura Épica 🎬 | Trilha sonora épica. Luzes baixas (se possível). Professor entra com energia: "Hoje é o dia. O dia em que vocês mostram ao mundo o que construíram. Não é sobre o código é sobre a história que vocês têm para contar. E que história vocês vão contar?" |
| 5-10 | Preparação Final ⏳ | Últimos ajustes. Nervosismo e empolgação no ar. "Respirem fundo. Vocês estão prontos. Lembrem-se: o ensaio é o que separa o profissional do amador. E vocês são profissionais." |
| 10-35 | Apresentações Shark Tank Digital 🎤 | Cada grupo tem 3 minutos para o pitch + 2 minutos de perguntas. Formato Shark Tank. Banca composta por professores, convidados e alunos. "Não é sobre ser perfeito. É sobre ser AUTÊNTICO. Mostre sua história." |
| 35-40 | Feedback Coletivo 🗣️ | "Quais projetos mais chamaram atenção? O que foi inspirador? O que surpreendeu? O que vocês aprenderam vendo os outros?" |
| 40-43 | Votação e Premiação 🏆 | Categorias: 🏆 Mais Criativo, 🧠 Mais Técnico, 🎨 Mais Bonito, 🤯 Mais Impactante, ❤️ Mais Empático, 🔥 Mais Revolucionário. |
| 43-46 | Autoavaliação 📝 | Cada aluno preenche a ficha de autoavaliação. "O que você era antes e o que você é agora? Essa é a pergunta mais importante." |
| 46-48 | Check-in Emocional 😭 | "Como vocês se sentem agora? Orgulhosos? Aliviados? Empolgados para o próximo? Essa sensação é o que move a vida." |
| 48-50 | Fechamento Emocional 🚀 | Discurso de encerramento. "Vocês são incríveis. Construíram, erraram, aprenderam, evoluíram. Lembrem-se: o código é só a ferramenta. O que importa é o que vocês criam com ela. Vocês não são mais usuários. Vocês são CRIADORES. Parabéns, guerreiros digitais! 🚀" |
♿ Orientações para Adaptações e Inclusão Exemplos Práticos
| Público | Adaptações Sugeridas |
|---|---|
| Deficiência Visual | Forneça descrições detalhadas dos slides; use fontes grandes e alto contraste; permita que o aluno apresente com apoio de um colega; use feedback não-visual. |
| Deficiência Auditiva | Garanta intérprete de Libras se disponível; use legendas em tempo real; disponibilize transcrição da apresentação; use feedback visual. |
| Deficiência Motora | Permita que o aluno apresente sentado; use controle remoto para slides; garanta acessibilidade física do palco; permita tempo extra se necessário. |
| TDAH | Ofereça um roteiro estruturado; use cronômetros visíveis; minimize distrações; permita pausas durante a apresentação. |
| TEA | Envie o roteiro com antecedência; use perguntas estruturadas; ambiente com poucos estímulos; permita que o aluno apresente de forma que se sinta confortável. |
| Altas Habilidades | Desafio extra: "Além da apresentação, produza um vídeo de 1 minuto sobre o processo de criação do projeto. Compartilhe nas redes sociais da escola." |
📊 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. | 0-2 |
| Demonstração Funcional | O projeto foi demonstrado ao vivo e funcionou (ou lidou bem com imprevistos). | 0-2 |
| Storytelling | Contou uma história envolvente (contexto, desafios, soluções, impacto). | 0-2 |
| Justificativa | Explicou as escolhas técnicas e de design. | 0-1 |
| Trabalho em Equipe | Todos os membros participaram ativamente. | 0-1 |
| Respostas às Perguntas | Respondeu com segurança, conhecimento e humildade. | 0-1 |
| Autoavaliação | Refletiu criticamente sobre o próprio aprendizado. | 0-1 |
| Total | 0-10 |
ORIENTAÇÕES PARA ADAPTAÇÕES E INCLUSÃO
"Se só funciona pro aluno premium, não é projeto, é um grupo fechado de ego. Aqui não tem círculo VIP, tem rede."
| Público | Adaptações Sugeridas |
|---|---|
| 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
| 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 | Protótipo funcional, criativo, bem executado e com bom design/experiência do usuário. | Protótipo funcional, mas com pouca criatividade ou usabilidade. | Protótipo parcialmente funcional. | Protó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.