Universidade Tecnológica Federal do Paraná
Campus Siqueira Campos
Revolução Digital:
Desvendando Algoritmos, Reconectando Humanidade
Material Didático para Professores do 1º ao 3º Ano

CARTA DE ABERTURA DO BIMESTRE

ATENÇÃO, TURMA DO 3º ANO! 🕶️🔥

Senta que lá vem história.

Vocês já construíram castelos digitais. Já descobriram que esses castelos foram feitos PARA CONTROLAR vocês. Já planejaram a revolução. Já executaram. Já codificaram o futuro.

Agora, chega.

CHEGA.

Este é o ÚLTIMO BIMESTRE de vocês no Ensino Médio. A última janela. A última chance de olhar para trás e ver o quanto mudaram e olhar para frente e ver o que ainda podem construir.

Este bimestre, vocês não vão mais estudar sobre o mundo digital. Vocês vão CRIAR O MUNDO DIGITAL QUE VOCÊS QUEREM VER. E não, não estou falando de um site genérico. Estou falando de um PROJETO COMPLETO. Do zero. No ar. Com a cara de vocês. E COM PROPÓSITO.

Vocês vão:

  • DESMONTAR a Matrix de uma vez por todas entender quem realmente manda no feed de vocês (spoiler: não são vocês).
  • CRIAR um projeto que não é só código é um manifesto. Um grito. Uma revolução silenciosa (mas codificada).
  • APRESENTAR esse projeto para o mundo e provar que vocês não são mais apenas usuários vocês são ARQUITETOS DO FUTURO DIGITAL.

E no final? Vocês vão ter um PRODUTO FINAL no ar. Para mostrar para o mundo. Para provar que vocês são capazes de CRIAR não só consumir.

A revolução não vai ser televisionada. Ela vai ser CODIFICADA.

E, spoiler: o código que vocês vão escrever NÃO vai ser bonito. Vai ser funcional. Vai ser caótico. Vai ser VOCÊS.

MAPEAMENTO BIMESTRE

Semana Título da Aula (e o subtítulo irreverente) Habilidades BNCC (Matemática) Habilidades BNCC (LP) Habilidades BNCC (Outras) Pilares do Pensamento Computacional
1 "O Último Planejamento" Ou: como transformar sua revolta em um projeto que não vai morrer no GitHub EM13MAT101 EM13LP01 EM13CO07 Abstração
2 "HTML: A Estrutura do Adeus" Ou: como construir a espinha dorsal do seu projeto sem chorar (ou chorando, a gente não julga) EM13MAT102 EM13LP02 EM13CO03 Decomposição
3 "CSS: O Estilo da Despedida" Ou: como fazer seu projeto ficar bonito (ou intencionalmente feio, se for a vibe) EM13MAT301 EM13LP04 EM13CO05 Reconhecimento de Padrões
4 "JavaScript: A Mágica que Não Acaba" Ou: como fazer seu projeto ganhar vida (e talvez te fazer chorar de alegria) EM13MAT302 EM13LP05 EM13CO06 Algoritmos
5 "DOM: O Controle Remoto do Fim" Ou: como manipular cada pedacinho do seu projeto como um deus digital EM13MAT201 EM13LP06 EM13CO04 Abstração + Algoritmos
6 "Eventos: Quando o Usuário Toca no Fim" Ou: como fazer seu projeto reagir a cliques, teclas e (quem sabe) lágrimas EM13MAT303 EM13LP07 EM13CO02 Decomposição + Algoritmos
7 "Dados e Arrays: A Biblioteca do Fim" Ou: como organizar a bagunça dos seus dados em listas que fazem sentido EM13MAT304 EM13LP08 EM13CO05 Abstração + Reconhecimento
8 "Funções: O Exército do Adeus" Ou: como ensinar seu código a fazer truques novos sem repetir a mesma coisa 500 vezes EM13MAT401 EM13LP09 EM13CO07 Algoritmos
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 EM13LP10 EM13CO09 Decomposição + Algoritmos
10 "Lançamento Oficial: O Mundo Vai Ver (e Chorar)" Ou: como apresentar sua revolução para o mundo e sair de cabeça erguida EM13MAT501 EM13LP11 EM13CO08 Todos os Pilares

PLANO SINTÉTICO

Semana Título da Aula Conceito Atividade Principal
1 "O Último Planejamento" Um bom projeto não começa com código começa com uma pergunta que dói: "Que problema eu quero resolver?" "O Mapa da Revolução" cada grupo escolhe um problema real da cultura digital (vício em redes, fake news, cyberbullying, privacidade, vigilância) e planeja um projeto completo para resolvê-lo, aplicando os 4 Pilares do PC e definindo o MVP.
2 "HTML: A Estrutura do Adeus" HTML é a espinha dorsal sem ele, o site é um esqueleto sem carne. E esqueleto não convence ninguém. "Construindo a Base" os grupos constroem a estrutura HTML do seu projeto, com todas as seções necessárias (cabeçalho, navegação, conteúdo principal, seções, rodapé), usando tags semânticas e boas práticas de acessibilidade.
3 "CSS: O Estilo da Despedida" CSS transforma um bloco de texto em uma experiência visual que gruda na retina. Feio até funciona, mas bonito encanta. "Operação Beleza" cada grupo estiliza seu projeto com personalidade, usando variáveis CSS, Flexbox/Grid, responsividade e um design system próprio.
4 "JavaScript: A Mágica que Não Acaba" JS é a alma da interatividade o site responde ao usuário como um ser vivo. Sem JS, é só um cartaz bonito. "O Despertar" os grupos adicionam interatividade básica ao projeto: botões que fazem coisas, mensagens personalizadas, contadores, e a primeira função que realmente faz algo útil.
5 "DOM: O Controle Remoto do Fim" O DOM é a árvore da página manipular é ter controle remoto sobre cada elemento. Você é o jardineiro. "Caça ao Elemento" os grupos aprendem a selecionar, modificar, criar e remover elementos via JS, dominando getElementById, querySelector, classList e createElement.
6 "Eventos: Quando o Usuário Toca no Fim" Eventos são cliques, teclas, mouse dominá-los é dominar a interação. O usuário toca, o site responde. "A Hora do Clique" os grupos adicionam eventos completos ao projeto: cliques em botões, teclas pressionadas (atalhos), mouse passando por cima de elementos, e feedback visual imediato.
7 "Dados e Arrays: A Biblioteca do Fim" Arrays são listas organizadas para guardar dados sem eles, o código vira um caos. E caos é inimigo da revolução. "Organizando o Caos" os grupos implementam arrays para gerenciar dados no projeto: lista de tarefas, itens, posts, etc., usando push, pop, shift, unshift, splice e percorrendo com forEach.
8 "Funções: O Exército do Adeus" Funções reutilizam código e deixam tudo mais limpo são os soldados da sua revolução. Código repetido é o caminho mais curto para o inferno do desenvolvedor. "Modularizando a Revolução" os grupos refatoram o código do projeto para usar funções, identificando partes repetidas e transformando-as em funções reutilizáveis com parâmetros e retorno.
9 "Debug e Polimento: A Batalha Final" Testar, encontrar bugs e refatorar são partes do processo não são fracasso, são aprendizado. Debug é o que separa os amadores dos profissionais. "Caça aos Bugs" os grupos testam, depuram e polinem seus projetos, usando console.log, debugger e ferramentas do DevTools para identificar e corrigir erros de sintaxe, lógica e referência.
10 "Lançamento Oficial: O Mundo Vai Ver (e Chorar)" Apresentar o projeto final e celebrar a jornada a revolução não é revolução se ninguém vê. "A Grande Estreia" apresentações no formato Shark Tank, com pitch de 3 minutos, demonstração ao vivo, perguntas da banca, autoavaliação, premiação nas categorias: 🏆 Mais Criativo, 🧠 Mais Técnico, 🎨 Mais Bonito, 🤯 Mais Impactante, ❤️ Mais Empático, 🔥 Mais Revolucionário.

PLANOS DE AULA DETALHADOS

Clique em cada semana e veja os detalhes completos com códigos comentados, minuto a minuto e muito mais.

🎯 Título

"O Último Planejamento" Ou: como transformar sua revolta em um projeto que não vai morrer no GitHub (e olha que 92% dos projetos open source morrem no primeiro ano, mas vocês vão ser os 8% que sobrevivem porque vocês são especiais. Não, não é papo de coach. É estatística.)

🎯 Objetivos Operacionais

  • Compreender que um bom projeto não começa com código começa com uma pergunta que dói: "Que problema eu quero resolver?" (e não, "o que eu quero criar" não é a mesma coisa criar por criar é vaidade, resolver problema é revolução).
  • Identificar um problema real da cultura digital que afeta a comunidade escolar: vício em redes, fake news, cyberbullying, privacidade, vigilância digital, desinformação algorítmica, saúde mental e redes sociais e não vale falar de "vício em celular" sem dados, sem história, sem sangue nos olhos.
  • Planejar um projeto completo em equipe definindo: objetivo, público-alvo (e não vale "todo mundo" todo mundo é ninguém), funcionalidades essenciais (MVP), cronograma factível e divisão de tarefas como um verdadeiro founder de startup.
  • Aplicar os 4 Pilares do Pensamento Computacional ao planejamento mas não como decoreba, como ferramenta viva para transformar caos em ordem.
  • Bônus: entender que planejamento não é perda de tempo é o que separa os que sonham dos que realizam. E, spoiler: sonhar é barato, realizar é caro. Vocês vão pagar o preço. E vai valer cada centavo.

📚 Conteúdo Programático

  • 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.
  • 3. Os 4 Pilares do PC aplicados ao planejamento:
    • Decomposição: dividir o projeto em partes menores (HTML, CSS, JS, design, conteúdo)
    • Reconhecimento de Padrões: identificar padrões em projetos similares
    • Abstração: definir o essencial do projeto o MVP (Produto Mínimo Viável)
    • Algoritmos: criar um cronograma passo a passo
  • 4. Design Thinking aplicado à tecnologia Empatia, definição, ideação, prototipagem, teste.
  • 5. O MVP (Produto Mínimo Viável) a versão mais simples que ainda funciona.
  • 6. Cultura Digital e Cidadania Digital Compreender que todo projeto tecnológico carrega uma dimensão ética e política. Como bem define o Referencial Curricular do Paraná (RCP-PR), a Cultura Digital compreende "as relações humanas que são fortemente mediadas pelas tecnologias e comunicações digitais". Não se trata apenas de usar tecnologia trata-se de entender tecnologia, suas implicações e seu poder de transformação social.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Abstração Os alunos abstraem o problema escolhido para um modelo simplificado, definindo o MVP o que é essencial e o que pode esperar (ou ser jogado fora com coragem).
Decomposição Decompõem o projeto em partes menores: estrutura (HTML), estilo (CSS), interatividade (JS), design, conteúdo, testes.
Reconhecimento de Padrões Identificam padrões em projetos similares (o que funciona, o que não funciona) e aplicam ao seu.
Algoritmos Criam um cronograma passo a passo para o desenvolvimento do projeto.

📜 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 Referencial Curricular do Paraná segue a estrutura da BNCC, ressaltando a realidade paranaense no currículo. O objetivo deste documento é estabelecer direitos de aprendizagem a todos os estudantes do estado em uma perspectiva de equidade."

O RCP-PR estrutura a Educação Digital nos três eixos da BNCC-Computação: Pensamento Computacional, Mundo Digital e Cultura Digital. O RCP-PR orienta que a Educação Digital vá "além da transmissão de conhecimentos", promovendo protagonismo e autoria na vida pessoal e coletiva. A Cultura Digital é um dos três eixos do complemento da BNCC que trata da Computação, homologado pelo MEC em 2022.

💻 Código Comentado Planejamento em JavaScript

(Nesta semana, o "código" é o planejamento. Mas que fique claro: o planejamento é o código mais importante que vocês vão escrever.)

// ================================================================
// SEMANA 1 O ÚLTIMO PLANEJAMENTO
// "Se você não sabe onde quer chegar, qualquer caminho serve."
// E qualquer caminho te leva a lugar nenhum.
// ================================================================

// ================================================================
// PASSO 1: Defina o PROBLEMA que você quer resolver
// Não vale problema genérico. Vale problema que DÓI.
// ================================================================

const problema = {
  descricao: "Os alunos do 3º ano passam em média 5h/dia em redes sociais, com impactos na saúde mental e no rendimento escolar.",
  afeta: "estudantes do último ano do Ensino Médio",
  impacto: "ansiedade, depressão, queda no rendimento, isolamento social",
  dados: "pesquisa com 50 colegas mostrou que 85% se sentem ansiosos após 2h de rolagem",
  historia: "A Ana deixou de estudar para o vestibular porque passava 6h por dia no TikTok"
};

// ================================================================
// PASSO 2: Aplique os 4 PILARES para estruturar sua solução
// ================================================================

const pilares = {
  abstracao: {
    oQueEssencial: "Um sistema que monitora e limita o tempo de tela com gamificação",
    oQuePodeEsperar: "Sistema de recomendação de conteúdo saudável, chat comunitário",
    mantra: "Feito é melhor que perfeito. Perfeito é inimigo do feito."
  },
  decomposicao: {
    estrutura: "HTML cabeçalho, dashboard, configurações, rodapé",
    estilo: "CSS cores calmas, tipografia amigável, interface minimalista",
    interatividade: "JS temporizador, bloqueio de apps, relatórios de uso",
    design: "Wireframe no papel antes de codificar",
    conteudo: "Base de dados com atividades alternativas saudáveis"
  },
  reconhecimentoDePadroes: {
    exemplos: "Apps como Forest, Digital Wellbeing, Space",
    oQueFunciona: "Gamificação, feedback visual, recompensas",
    oQueNaoFunciona: "Textão explicativo, interfaces complexas"
  },
  algoritmos: {
    passo1: "Semana 1-2: Planejamento e estrutura HTML",
    passo2: "Semana 3: Estilização CSS",
    passo3: "Semana 4-6: Lógica JS e interatividade",
    passo4: "Semana 7-8: Arrays e funções",
    passo5: "Semana 9: Testes e correções",
    passo6: "Semana 10: Apresentação"
  }
};

// ================================================================
// PASSO 3: Defina o MVP (Produto Mínimo Viável)
// ================================================================

const mvp = {
  obrigatorio: [
    "Dashboard com tempo de tela atual",
    "Botão 'Iniciar Bloqueio' que ativa um temporizador",
    "Exibição de estatísticas (tempo total, média diária)",
    "Design responsivo (funciona no celular)"
  ],
  desejavel: [
    "Histórico de uso diário",
    "Ranking de 'dias de sucesso'",
    "Notificações de alerta"
  ],
  corte: "Gamificação avançada e sistema de recompensas fica para a versão 2.0"
};

// ================================================================
// PASSO 4: Perguntas que vão salvar seu projeto
// ================================================================

const perguntasQueDoem = [
  "Qual é a pergunta que seu projeto responde?",
  "Quem vai usar isso? (E não vale 'todo mundo' todo mundo é ninguém)",
  "O que acontece se o usuário fizer TUDO ERRADO? Seu projeto sobrevive?",
  "Qual é a parte mais difícil de fazer? (Encare ela primeiro)",
  "O que vocês vão fazer se não conseguirem fazer a parte mais difícil?",
  "Por que VOCÊS se importam com isso?"
];

// ================================================================
// PASSO 5: Cultura Digital Por que isso importa?
// ================================================================

const culturaDigital = {
  oQueE: "Não é sobre usar tecnologia. É sobre ENTENDER tecnologia.",
  porQueImporta: "Porque tecnologia não é neutra. Ela reflete valores. Como afirma o RCP-PR, a Cultura Digital envolve 'as relações humanas que são fortemente mediadas pelas tecnologias e comunicações digitais'.",
  oQueVocesVaoFazer: "Construir algo que NÃO controla as pessoas, mas as LIBERTA.",
  desafio: "Seu projeto vai vigiar ou vai proteger? Vai manipular ou vai conscientizar?"
};

console.log("🚀 PLANEJAMENTO CONCLUÍDO. AGORA É MÃO NA MASSA.");
console.log("⚠️ Lembre-se: o planejamento não é o fim é o COMEÇO.");
console.log("🔥 A revolução não vai ser televisionada. Vai ser CODIFICADA.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Inspira 🚀 Professor entra com energia de palco, óculos escuros, trilha sonora de filme de despedida: "Vocês passaram 3 anos entendendo o problema. Agora é hora de RESOLVÊ-LO. Esta é a ÚLTIMA CHANCE de vocês. Não é mais sobre reclamar é sobre AGIR. E agir começa com um PLANO."
5-10 A Pergunta que Tudo Muda ❓ Professor escreve no quadro em letras garrafais: "QUE PROBLEMA EU QUERO RESOLVER?" "Um bom projeto não começa com código. Começa com uma PERGUNTA. Se você não sabe qual problema está resolvendo, você está só digitando teclas aleatórias."
10-15 Brainstorm de Problemas 💡 Em grupos de 4-5, os alunos listam problemas REAIS da cultura digital que afetam a comunidade escolar. Regra: nada de problemas genéricos. "Se não tem dado, não tem problema. Se não tem história, não tem dor."
15-20 Escolha do Desafio 🎯 Cada grupo escolhe UM problema para resolver. Critérios: (1) é real? (2) afeta pessoas reais? (3) é viável resolver em 10 semanas? "Escolham algo que VOCÊS se importam. Porque se vocês não se importam, ninguém vai."
20-30 Aplicação dos 4 Pilares 🧩 Cada grupo produz um mapa visual mostrando como cada pilar será aplicado. Professor circula e provoca: "Mostrem que vocês entendem a ferramenta. Não é sobre decorar nome é sobre USAR."
30-38 O Plano da Revolução 📋 Cada grupo define: (1) Objetivo do projeto (UMA frase), (2) Público-alvo (específico), (3) Funcionalidades principais (MVP), (4) Divisão de tarefas, (5) Cronograma.
38-45 Pitch da Revolução 🎤 Cada grupo apresenta sua ideia em 2 minutos para a turma. A turma vota nas melhores ideias. "Se vocês não conseguirem convencer a turma, não vão conseguir convencer o mundo."
45-48 Check-in da Alma 💪 "Como você se sente agora que tem um plano? O medo é normal. O que importa é o que você faz com ele."
48-50 Fechamento + Provocação 🚀 "O planejamento está feito. Na semana que vem: MÃO NA MASSA. E não se esqueçam: FEITO É MELHOR QUE PERFEITO."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Forneça materiais em braille ou áudio; use fontes grandes (mínimo 24px) e alto contraste; descreva os mapas e cronogramas verbalmente.
Deficiência Auditiva Use feedback visual em todas as instruções; disponibilize roteiro escrito COMPLETO com antecedência; use intérprete de Libras se disponível.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos e flexíveis; garanta que todos os materiais estejam ao alcance.
TDAH Divida em sprints de 5 minutos com intervalos; use cronômetros visuais GIGANTES; checklist física para cada etapa.
TEA Envie as instruções com antecedência (24h antes); use perguntas estruturadas e previsíveis; ambiente com poucos estímulos sensoriais.
Altas Habilidades Desafio extra: "Além do protótipo, desenvolva um plano de negócios ou um modelo de sustentabilidade para o projeto."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Escolha do Desafio Escolheu um problema relevante, bem definido, com impacto real e dados que comprovem sua existência. 0-2
Aplicação dos Pilares Aplicou corretamente os 4 pilares no mapa, com justificativas claras e exemplos concretos. 0-3
Planejamento Criou um plano de projeto coerente, completo, com prazos realistas e divisão de tarefas clara. 0-3
Pitch Apresentou a ideia de forma clara, convincente, envolvente e no tempo estipulado. 0-2
Colaboração Trabalhou bem em grupo, respeitando as ideias dos colegas, contribuindo ativamente. 0-1
Total 0-10

🎯 Título

"HTML: A Estrutura do Adeus" Ou: como construir a espinha dorsal do seu projeto sem perder a sanidade (e sem esquecer de fechar as tags, porque uma tag aberta é um convite ao caos e caos é inimigo da revolução).

🎯 Objetivos Operacionais

  • Compreender o papel do HTML como estrutura de um site a espinha dorsal que sustenta tudo.
  • 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>).
  • Construir a estrutura completa do projeto em HTML, com todas as seções necessárias e não, "fazer depois" não é opção.
  • Aplicar boas práticas de indentação, organização e comentários no código. Código bonito é código que você não tem vergonha de mostrar.
  • Bônus: entender que HTML não é programação é marcação. E isso é um superpoder que permite estruturar qualquer ideia. Como bem diz o RCP-PR, a competência de "utilizar diferentes ferramentas e ambientes de programação para construir soluções" (EM13CO03) começa exatamente aqui.

📚 Conteúdo Programático

  • 1. Revisão de HTML Estrutura básica, tags essenciais, atributos. O mínimo que você precisa saber para não passar vergonha.
  • 2. HTML Semântico Uso de tags semânticas (<header>, <nav>, <main>, <section>, <article>, <aside>, <footer>) para organização e acessibilidade. Não é sobre ser bonito é sobre ser correto. Leitores de tela e mecanismos de busca agradecem.
  • 3. Estrutura do Projeto Como organizar o HTML do projeto: cabeçalho, navegação, conteúdo principal, seções, rodapé. A arquitetura da revolução.
  • 4. Boas Práticas Indentação, comentários, nomes de classes e IDs significativos. Código que se explica sozinho é código que não vira pesadelo.
  • 5. Acessibilidade em HTML Uso de alt em imagens, lang no html, aria-label quando necessário. Inclusão não é opcional é obrigação ética.
  • 6. Cultura Digital e Inclusão Refletir sobre como a estrutura de um site pode incluir ou excluir pessoas. A tecnologia não é neutra: ela pode ser uma ponte ou um muro.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Decomposição Os alunos decompõem a página em partes menores: cabeçalho, navegação, conteúdo principal, seções, rodapé.
Abstração O HTML abstrai a complexidade do navegador o aluno não precisa saber como o navegador renderiza, só precisa saber quais tags usar.
Reconhecimento de Padrões Identificam o padrão de abertura e fechamento de tags <tag></tag> e a hierarquia de headings (<h1> → <h6>).
Algoritmos A ordem de construção do HTML segue uma sequência lógica: DOCTYPE → <html> → <head> → <body> → conteúdo.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT102 Analisar tabelas, gráficos e amostras de pesquisas estatísticas apresentadas em diferentes meios de comunicação.

BNCC Linguagens:

Código Habilidade
EM13LP02 Estabelecer relações entre as partes de um texto, identificando repetições ou substituições que contribuem para a continuidade do texto.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO03 Utilizar diferentes ferramentas e ambientes de programação para construir soluções, respeitando princípios estéticos, éticos e de acessibilidade.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "utilizar diferentes ferramentas e ambientes de programação para construir soluções" (EM13CO03). A construção de uma estrutura HTML semântica dialoga diretamente com o eixo Cultura Digital ao promover acessibilidade e inclusão digital. O RCP-PR enfatiza que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais", e estruturar um site com semântica adequada é um ato de cidadania digital.

"A Educação Digital no RCP-PR propõe a formação de sujeitos autônomos, críticos e criativos, capazes de usar a tecnologia como ferramenta de transformação social."

💻 Código Comentado Template HTML

<!-- ============================================================
SEMANA 2 HTML: A ESTRUTURA DO ADEUS
"Sem estrutura, o site é uma ameba disforme."
============================================================ -->

<!-- PASSO 1: A ESTRUTURA MÍNIMA OBRIGATÓRIA -->
<!DOCTYPE html>
<!-- ↑ Diz ao navegador: "Isso é HTML5, não brinca comigo" -->
<html lang="pt-BR">
<!-- ↑ lang é para acessibilidade. Leitores de tela usam isso.
O RCP-PR reforça que a acessibilidade é um pilar da Cultura Digital. -->

<head>
  <!-- O <head> é o "backstage" do site. O usuário não vê, mas sem ele o site não funciona. -->
  <meta charset="UTF-8">
  <!-- ↑ Define a codificação de caracteres. Sem isso, acentos viram símbolos estranhos. -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- ↑ ESSENCIAL para responsividade. Sem isso, seu site fica horrível no celular. -->
  <title>🚀 Meu Último Projeto A Revolução</title>
  <!-- ↑ O título aparece na aba do navegador. É a primeira impressão. Capriche. -->
  <link rel="stylesheet" href="style.css">
  <!-- ↑ Conecta o CSS. Sem isso, é só texto preto no fundo branco. -->
</head>

<body>
  <!-- ============================================================
  PASSO 2: Use TAGS SEMÂNTICAS
  Não é sobre ser bonito. É sobre ser CORRETO.
  ============================================================ -->

  <header>
    <!-- Cabeçalho: logotipo, título, navegação principal -->
    <h1>🚀 Meu Último Projeto</h1>
    <!-- ↑ Use UM <h1> por página. É o título principal. -->
    <nav>
      <!-- Navegação: o "menu" do site -->
      <ul>
        <li><a href="sobre">Sobre</a></li>
        <li><a href="projeto">Projeto</a></li>
        <li><a href="dashboard">Dashboard</a></li>
        <li><a href="contato">Contato</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <!-- CONTEÚDO PRINCIPAL. Só DEVE haver um <main> por página. -->
    <section id="sobre">
      <h2>📖 Sobre o Projeto</h2>
      <p>Este é o meu projeto final do Ensino Médio. Aqui eu aplico tudo o que aprendi sobre HTML, CSS e JavaScript.</p>
    </section>

    <section id="projeto">
      <h2>🎯 O Projeto</h2>
      <p>Descreva aqui o que seu projeto faz e por que ele é importante.</p>
      <!-- Área interativa (será preenchida pelo JS) -->
      <div id="area-interativa">
        <p>⚠️ Aguardando interação...</p>
      </div>
    </section>

    <section id="dashboard">
      <h2>📊 Dashboard</h2>
      <!-- Aqui vão os dados e estatísticas do projeto -->
      <div id="estatisticas">
        <p>Carregando dados...</p>
      </div>
    </section>
  </main>

  <footer>
    <!-- Rodapé: informações de copyright, contato, links úteis -->
    <p>&copy; 2026 Turma do 3º Ano. A revolução foi codificada.</p>
  </footer>

  <!-- ============================================================
  PASSO 3: Conecte o JavaScript
  O JS fica no final do <body> para não bloquear o carregamento
  ============================================================ -->
  <script src="script.js"></script>
</body>
</html>

<!-- ============================================================
CHECKLIST DO HTML PERFEITO:
[x] DOCTYPE declarado
[x] lang="pt-BR" no html
[x] meta charset="UTF-8"
[x] meta viewport
[x] title descritivo
[x] Pelo menos UM <main>
[x] Tags semânticas (header, nav, section, footer)
[x] labels conectados a inputs (se houver)
[x] alt em imagens (se houver)
[x] Código indentado e comentado
============================================================ -->

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Estrutura 🏗️ "O que vem primeiro, o esqueleto ou a pele? O HTML é o esqueleto. Sem ele, o site é uma ameba disforme. Hoje vocês vão construir a espinha dorsal da revolução." Professor exibe uma página sem HTML semântico (só divs) e outra com tags semânticas e pergunta: "Qual dessas duas um cego entende? Qual o Google entende melhor?"
5-10 Revisão Relâmpago de HTML ⚡ Revisão rápida das tags essenciais. "Não é novidade, mas é FUNDAMENTAL. Quem não sabe isso, não passa da porta." Destaque para a hierarquia de headings (<h1> a <h6>) e a diferença entre tags de bloco e inline.
10-15 HTML Semântico A Nova Onda 🌊 Introdução às tags semânticas com exemplos práticos. "Não é só para organizar é para que leitores de tela e mecanismos de busca entendam o que vocês estão fazendo. Vocês querem que o Google ache seu projeto ou querem que ele se perca no esquecimento?"
15-40 Construindo a Base 🔨 Cada grupo constrói a estrutura HTML do seu projeto. Professor circula, ajuda, provoca: "Onde fica a navegação? E a acessibilidade? Cadê o label do input? O que acontece se eu diminuir a tela?"
40-45 Revisão de Estrutura 🔍 Cada grupo troca de lugar com outro e revisa a estrutura HTML. "Seja cruel. A crítica construtiva é a que faz crescer. Não tenha medo de apontar o erro você está ajudando seu colega."
45-48 Check-in Técnico 💻 "Como vocês estão se sentindo com o HTML? O HTML é a parte mais fácil e a mais importante. Se a estrutura estiver ruim, o resto desaba. É igual construir uma casa: se a fundação é de papelão, o telhado não segura."
48-50 Fechamento + Provocação 🚀 "A estrutura está pronta. Na semana que vem: CSS o estilo da despedida. Porque até a revolução precisa de um visual que cause impacto."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela (NVDA) para testar a estrutura; use fontes grandes (mínimo 24px) e alto contraste; descreva a estrutura verbalmente.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito; use legendas em vídeos tutoriais.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física.
TDAH Divida em sprints de 10 minutos; use cronômetros visuais; checklist física.
TEA Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos.
Altas Habilidades Desafio extra: "Adicione microdados (schema.org) ao seu HTML para melhorar o SEO do projeto."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Estrutura Básica Criou a estrutura HTML completa com <!DOCTYPE>, <html>, <head>, <body>. 0-2
Tags Semânticas Usou tags semânticas (<header>, <nav>, <main>, <section>, <footer>) corretamente. 0-3
Organização O código está indentado, organizado e com comentários claros. 0-2
Conteúdo Incluiu todas as seções necessárias (Sobre, Projeto, Dashboard, Contato). 0-2
Acessibilidade Usou alt em imagens, lang no html, label conectado a inputs (quando aplicável). 0-1
Total 0-10

🎯 Título

"CSS: O Estilo da Despedida" Ou: como fazer seu projeto ficar bonito (ou intencionalmente feio, se for a vibe) e não parecer que foi feito em 1995 (a menos que 1995 seja sua estética e aí, respeito, mas saiba que você está fazendo uma escolha, não um acidente).

🎯 Objetivos Operacionais

  • Compreender o papel do CSS na estilização e na experiência visual de uma página. Não é só sobre cores é sobre emoção, sobre primeiro impacto. Como dizem os designers: "Você nunca tem uma segunda chance para causar uma primeira impressão."
  • Aplicar seletores básicos (elemento, classe, ID) e propriedades essenciais (cor, fonte, espaçamento, borda, sombra, fundo, flexbox, grid). O kit de ferramentas do estilizador moderno.
  • Estilizar o projeto com personalidade que reflita a identidade da equipe. Seu projeto tem que ter cara própria não pode ser mais um site genérico com fonte Arial e fundo branco.
  • Aplicar CSS nas formas inline, interno e externo (arquivo .css). Cada uma tem seu lugar mas, spoiler: o arquivo externo é o que você vai usar 99% do tempo. É o profissional.
  • Bônus: entender que CSS é arte com regras e regras foram feitas para serem quebradas (com consciência). O RCP-PR enfatiza o desenvolvimento da habilidade de "utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções" (EM13CO05). A criatividade em CSS é exatamente isso.

📚 Conteúdo Programático

  • 1. Revisão de CSS Sintaxe, seletores, propriedades, cascata e especificidade. O básico que todo mundo acha que sabe, mas 80% erra na hora da prova.
  • 2. CSS Moderno Flexbox, Grid, variáveis CSS (--var), transições, animações. Chega de float isso é coisa do passado. Bem-vindo ao futuro.
  • 3. Design Responsivo @media queries para adaptação a diferentes tamanhos de tela. Seu site tem que funcionar no celular da vovó. Ponto.
  • 4. Design System Cores, tipografia, espaçamento, consistência visual. A revolução também precisa de identidade visual.
  • 5. Personalização Como fazer o projeto ter a cara da equipe. Não seja mais um clone de site seja autêntico.
  • 6. Cultura Digital e Estética Refletir sobre como o design digital influencia percepções e comportamentos. A cor de um botão pode mudar a taxa de cliques em 30%. Isso não é besteira é poder. O RCP-PR destaca que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais", e o design é uma dessas implicações.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Reconhecimento de Padrões Identificação do padrão seletor { propriedade: valor; } uma regra que se repete em todo lugar.
Decomposição Dividir a estilização em partes isoladas: fonte, cor, espaçamento, borda, layout. Um problema de cada vez.
Abstração As variáveis CSS (--cor-primaria, --fonte-titulo) abstraem valores repetidos mude em um lugar, mude em todos.
Algoritmos A cascata do CSS segue uma ordem lógica: inline → interno → externo → específico → genérico.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT301 Resolver e elaborar problemas do cotidiano que envolvem equações lineares, inequações e sistemas.

BNCC Linguagens:

Código Habilidade
EM13LP04 Analisar os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO05 Utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "utilizar recursos computacionais de forma crítica e criativa" (EM13CO05). O eixo Cultura Digital é fortalecido quando os alunos discutem a importância da estética, da identidade visual e da acessibilidade em suas produções. O RCP-PR afirma que a Educação Digital deve "promover protagonismo e autoria na vida pessoal e coletiva" e um projeto com design intencional é um ato de autoria.

"O RCP-PR orienta que as tecnologias digitais sejam compreendidas como ferramentas de expressão, criação e transformação social."

💻 Código Comentado CSS do Projeto

/* ================================================================
SEMANA 3 CSS: O ESTILO DA DESPEDIDA
"Primeiro impacto é visual. Faça valer."
================================================================ */

/* ================================================================
PASSO 1: VARIÁVEIS CSS O DESIGN SYSTEM
Defina suas cores e fontes UMA VEZ. Use em TODO LUGAR.
================================================================ */

:root {
  /* Cores principais a identidade visual do projeto */
  --cor-primaria: 2D2D44; /* Roxo escuro sofisticação */
  --cor-secundaria: 6C63FF; /* Roxo vibrante ação */
  --cor-destaque: FF6B6B; /* Vermelho alerta, urgência */
  --cor-sucesso: 4ECDC4; /* Verde-água confiança */
  --cor-fundo: F8F9FA; /* Cinza claro base limpa */
  --cor-texto: 1A1A2E; /* Quase preto legibilidade */

  /* Tipografia a voz do seu projeto */
  --fonte-principal: 'Segoe UI', system-ui, -apple-system, sans-serif;
  --fonte-titulo: 'Montserrat', 'Segoe UI', sans-serif;

  /* Espaçamento consistência é tudo */
  --espacamento-padrao: 1rem;
  --espacamento-grande: 2rem;
  --raio-borda: 12px;
  --sombra-padrao: 0 4px 6px rgba(0, 0, 0, 0.1);
}

/* ================================================================
PASSO 2: RESET Limpe antes de construir
"Um bom arquiteto não constrói sobre terreno sujo."
================================================================ */

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* ↑ ESSENCIAL: faz com que padding e border não aumentem o tamanho do elemento. */
}

/* ================================================================
PASSO 3: ESTILOS GLOBAIS
================================================================ */

body {
  font-family: var(--fonte-principal);
  background-color: var(--cor-fundo);
  color: var(--cor-texto);
  line-height: 1.6;
  padding: var(--espacamento-padrao);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* ================================================================
PASSO 4: LAYOUT COM FLEXBOX
"Flexbox é vida. Quem não usa, está preso em 2010."
================================================================ */

header {
  background: linear-gradient(135deg, var(--cor-primaria), var(--cor-secundaria));
  color: white;
  padding: var(--espacamento-grande);
  border-radius: var(--raio-borda);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: var(--espacamento-grande);
  box-shadow: var(--sombra-padrao);
}

header h1 {
  font-family: var(--fonte-titulo);
  font-size: 1.8rem;
  letter-spacing: -0.5px;
}

/* ================================================================
PASSO 5: NAVEGAÇÃO
================================================================ */

nav ul {
  display: flex;
  gap: var(--espacamento-padrao);
  list-style: none;
}

nav a {
  color: white;
  text-decoration: none;
  padding: 0.5rem 1rem;
  border-radius: 8px;
  transition: all 0.3s ease;
}

nav a:hover {
  background-color: rgba(255, 255, 255, 0.2);
  transform: translateY(-2px);
  /* ↑ Pequena animação: o link "sobe" quando o mouse passa. Detalhes que fazem diferença. */
}

/* ================================================================
PASSO 6: SEÇÕES
================================================================ */

main {
  flex: 1;
  max-width: 1200px;
  margin: 0 auto;
  width: 100%;
  padding: 0 var(--espacamento-padrao);
}

section {
  background: white;
  padding: var(--espacamento-grande);
  border-radius: var(--raio-borda);
  box-shadow: var(--sombra-padrao);
  margin-bottom: var(--espacamento-grande);
}

section h2 {
  font-family: var(--fonte-titulo);
  color: var(--cor-primaria);
  margin-bottom: var(--espacamento-padrao);
  border-bottom: 3px solid var(--cor-secundaria);
  padding-bottom: 0.5rem;
}

/* ================================================================
PASSO 7: RESPONSIVIDADE @media QUERIES
"Seu site tem que funcionar no celular. Ponto."
================================================================ */

@media (max-width: 768px) {
  header {
    flex-direction: column;
    text-align: center;
    gap: var(--espacamento-padrao);
  }
  nav ul {
    flex-direction: column;
    gap: 0.5rem;
  }
  section {
    padding: var(--espacamento-padrao);
  }
}

/* ================================================================
CHECKLIST DO CSS PERFEITO:
[x] Reset com box-sizing: border-box
[x] Variáveis CSS definidas
[x] Layout com Flexbox ou Grid
[x] Pelo menos uma transição ou animação
[x] Pelo menos uma @media query
[x] Cores consistentes (design system)
[x] Código comentado e organizado
================================================================ */

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Impressiona 💄 Professor exibe um site "feio" (sem CSS) ao lado do mesmo site estilizado. "Isso é um site ou uma lista de supermercado? Vocês já viram um site com fundo branco, texto preto e fonte Arial? Isso não é design é preguiça. Hoje vocês vão dar PERSONALIDADE a isso."
5-10 Revisão Relâmpago de CSS ⚡ Revisão de seletores (elemento, classe, ID), propriedades essenciais, cascata e especificidade. "Entender especificidade é entender por que seu CSS não funciona 80% das vezes."
10-15 CSS Moderno Flexbox e Grid 🎨 Introdução ao Flexbox (layout unidimensional) e Grid (layout bidimensional). "Chega de float isso é coisa do passado. Flexbox e Grid são o presente e o futuro." Demonstração prática ao vivo com o DevTools.
15-40 Operação Beleza 💅 Cada grupo estiliza seu projeto. Professor circula com uma atitude de "juiz do Fashion Police": "Por que você escolheu essa cor? Isso é uma escolha intencional ou foi 'a primeira que veio'? E a responsividade? O que acontece se eu diminuir a tela?"
40-45 Galeria dos Projetos Estilizados 🖼️ Cada grupo mostra seu projeto estilizado em 1 minuto. A turma vota em três categorias: 🏆 Mais Bonita, 🎨 Mais Criativa (que ousou), 📐 Mais Coerente (design system bem aplicado).
45-48 Check-in de Estilo 🎨 "O CSS é onde a personalidade aparece. Não tenham medo de ousar. Um projeto com identidade visual forte é um projeto que as pessoas lembram. Cores podem mudar a percepção vermelho é urgência, azul é confiança, verde é tranquilidade. Vocês estão comunicando algo. O quê?"
48-50 Fechamento + Provocação 🚀 "O estilo está pronto. Na semana que vem: JavaScript a mágica que não acaba. Porque o que é bonito mas não reage, é só uma estátua."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use alto contraste; use fontes grandes (mínimo 16px); teste com leitores de tela; evite informações apenas por cor (use ícones ou texto adicional).
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito; use exemplos visuais claros.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; garanta acessibilidade física.
TDAH Divida em sprints de 10 minutos; use cronômetros visuais; checklist física.
TEA Envie as instruções com antecedência; use perguntas estruturadas; ambiente com poucos estímulos sensoriais.
Altas Habilidades Desafio extra: "Adicione animações CSS com @keyframes e transições para surpreender o usuário mas sem prejudicar a usabilidade. Animações devem servir, não atrapalhar."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Vínculo do CSS Vinculou o arquivo .css ao HTML corretamente (ou usou CSS interno/inline de forma intencional). 0-2
Uso de Seletores Aplicou os 3 tipos de seletor: elemento, classe e ID com critério. 0-2
Propriedades Essenciais Usou pelo menos 5 propriedades diferentes (cor, fonte, padding, margin, border, etc.). 0-2
Layout Moderno Usou Flexbox ou Grid para organizar o layout (nada de tabelas ou floats). 0-2
Responsividade Adicionou pelo menos uma regra @media para adaptação a telas menores. 0-1
Personalização Criativa A estilização tem personalidade, é coerente e intencional não parece um template genérico. 0-1
Total 0-10

🎯 Título

"JavaScript: A Mágica que Não Acaba" Ou: como fazer seu projeto ganhar vida (e talvez te fazer chorar de alegria ou de frustração, a gente não julga). Preparem-se: a partir de agora, o computador vai começar a obedecer vocês. E isso é assustador e maravilhoso ao mesmo tempo.

🎯 Objetivos Operacionais

  • Compreender o papel do JavaScript na interatividade e no comportamento dinâmico de uma página. HTML é o esqueleto, CSS é a roupa, JS é o cérebro. Sem JS, seu site é um belo adereço de museu.
  • Utilizar variáveis, tipos de dados (string, number, boolean) e operadores. A base de tudo: guardar informações para usar depois.
  • Criar funções simples que executam ações. Funções são como receitas de bolo você escreve uma vez e usa quantas vezes quiser.
  • Manipular o HTML via JavaScript usando document.getElementById() e .innerHTML. É aqui que a mágica acontece: seu código vai falar com a página.
  • Bônus: entender que errar é parte do processo e o console.log() é seu melhor amigo. Programar não é sobre acertar de primeira é sobre testar, errar, corrigir e tentar de novo. O RCP-PR reforça essa postura ao promover uma Educação Digital que valoriza o "protagonismo e a autoria", e ninguém vira protagonista sem errar bastante.

📚 Conteúdo Programático

  • 1. O que é JavaScript? A alma da página, o que torna um site vivo. Diferente de HTML e CSS, JS é uma linguagem de programação de verdade. Com ela, você pode calcular, tomar decisões e reagir ao usuário.
  • 2. Variáveis e Tipos var, let, const, string, number, boolean. Aprenda a diferença entre let (mutável) e const (imutável) e esqueça var, que é do tempo dos dinossauros.
  • 3. Funções Declaração, chamada, parâmetros, retorno. Como criar seus próprios comandos.
  • 4. Manipulação do DOM document.getElementById(), .innerHTML, .textContent. É aqui que o JS encontra o HTML.
  • 5. Eventos Básicos onclick (introdução). O clique do usuário vai disparar suas funções.
  • 6. Cultura Digital e Autonomia Refletir sobre como o JavaScript permite que os usuários passem de consumidores para criadores. O RCP-PR destaca que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais". Com JS, vocês deixam de ser apenas usuários de aplicativos e se tornam criadores de aplicativos. Isso é poder.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Algoritmos Sequência lógica de passos que o computador executa ao clicar no botão uma função é um pequeno algoritmo.
Decomposição O problema "fazer algo acontecer" é decomposto em: (1) selecionar o elemento, (2) modificar seu conteúdo, (3) reagir ao evento.
Reconhecimento de Padrões O padrão function nome() { código } se repete a estrutura é sempre a mesma, o que muda é o que está dentro.
Abstração A função abstrai a complexidade: você chama saudacao() e o código executa, sem precisar saber como ele funciona internamente a cada vez.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT302 Construir modelos matemáticos para descrever fenômenos e situações do cotidiano.

BNCC Linguagens:

Código Habilidade
EM13LP05 Produzir textos de diferentes gêneros, considerando a adequação ao contexto de produção e circulação.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO06 Compreender e utilizar os conceitos de variáveis, constantes, operadores, estruturas condicionais e de repetição, funções e eventos na construção de soluções computacionais.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "compreender e utilizar conceitos fundamentais de programação" (EM13CO06). O eixo Pensamento Computacional é diretamente fortalecido com a criação de algoritmos simples que são exatamente o que vocês vão fazer hoje. O RCP-PR também enfatiza que a Educação Digital deve "promover a autoria e o protagonismo", e aprender JS é o primeiro passo para se tornar um verdadeiro criador digital.

"A programação é uma forma de expressão e de solução de problemas. O RCP-PR a coloca como ferramenta essencial para a formação de jovens autônomos e críticos."

💻 Código Comentado JavaScript Básico

// ================================================================
// SEMANA 4 JAVASCRIPT: A MÁGICA QUE NÃO ACABA
// "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO."
// ================================================================

// ================================================================
// PASSO 1: VARIÁVEIS As caixas onde guardamos as coisas
// ================================================================

let nomeDoUsuario = "Visitante";
let contadorDeCliques = 0;
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;
  let display = document.getElementById("displayContador");
  if (display) {
    display.textContent = "Cliques: " + contador;
  }
  console.log("Contador atual:", contador);
}

function resetarContador() {
  contador = 0;
  let display = document.getElementById("displayContador");
  if (display) {
    display.textContent = "Cliques: 0";
  }
  console.log("Contador resetado!");
}

// ================================================================
// PASSO 5: ESTRUTURAS CONDICIONAIS Tomando decisões
// ================================================================

function verificarIdade() {
  let input = document.getElementById("idadeInput");
  if (!input) return;
  let idade = Number(input.value);
  if (isNaN(idade) || idade <= 0) {
    alert("Por favor, digite uma idade válida.");
    return;
  }
  let resultado;
  if (idade < 18) {
    resultado = "Você é menor de idade. A revolução espera por você!";
  } else if (idade >= 18 && idade < 60) {
    resultado = "Você está no auge. A revolução precisa de você AGORA!";
  } else {
    resultado = "Você tem experiência. A revolução precisa da sua sabedoria!";
  }
  let elemento = document.getElementById("resultadoIdade");
  if (elemento) {
    elemento.textContent = resultado;
  }
}

console.log("✅ JavaScript carregado com sucesso!");
console.log("🔥 A revolução não vai ser televisionada. Vai ser CODIFICADA.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Explode 💥 Professor entra com um site "morto" (sem JS) e um "vivo" (com JS). Clica no botão do site morto nada acontece. Clica no vivo boom, reação. "O que faz um site ser VIVO? Não é o design bonito é a REAÇÃO. Hoje vocês vão dar VIDA ao projeto. Preparem-se para ver o computador obedecer."
5-10 O que é JavaScript? 🧠 "HTML é o esqueleto, CSS é a roupa, JS é o CÉREBRO. Sem JS, o site é um manequim bonito, mas morto. Com JS, ele pensa, reage, calcula, decide." Explicação da diferença entre linguagem de marcação (HTML), estilo (CSS) e programação (JS).
10-15 Variáveis e Funções A Base 📝 Demonstração ao vivo: criar uma variável (let nome = "João"), uma função simples (function dizerOi() { alert("Oi"); }), e chamar a função. "É assim que a mágica começa. Vocês vão comandar a máquina."
15-40 O Despertar da Máquina ⚡ Cada grupo adiciona interatividade básica ao projeto. Tarefa mínima: um botão que, ao ser clicado, muda um texto na tela. Professor circula provocando: "E se o botão mudasse de cor? E se aparecesse uma mensagem diferente? E se ele contasse quantas vezes foi clicado? Vão além do mínimo."
40-45 Mostra de Interatividade 🎪 Cada grupo mostra o que seu botão faz ou o que tentou fazer (e falou, porque errar também é aprendizado). "Quem tem o botão mais útil? Mais criativo? Mais CAÓTICO? O erro mais épico?"
45-48 Check-in de Vida 💫 "O JS é viciante. Vocês acabaram de dar o primeiro passo no universo da programação. Lembrem-se: console.log() é seu melhor amigo. Quando algo der errado (e vai dar), chame ele."
48-50 Fechamento + Provocação 🚀 "O projeto está vivo. Na semana que vem: DOM o controle remoto da página. Vocês vão poder criar, modificar e destruir elementos como deuses digitais."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela para ler o código; descreva o código verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (sem dependência de mouse).
TDAH Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha um ambiente com poucos estímulos sonoros.
Altas Habilidades Desafio extra: "Crie uma função que recebe parâmetros, retorna um valor, e use-a em diferentes lugares do projeto mostre versatilidade."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Variáveis Declarou variáveis corretamente usando let e const (nada de var). 0-2
Função Criou pelo menos uma função que executa uma ação (ex: mudar texto, mudar cor). 0-3
Manipulação do DOM Usou document.getElementById() e .textContent ou .innerHTML corretamente. 0-3
Evento Usou onclick (ou addEventListener como bônus) para reagir a um clique. 0-2
Total 0-10

🎯 Título

"DOM: O Controle Remoto do Fim" Ou: como manipular cada pedacinho do seu projeto como um deus digital (com o poder de criar, modificar e destruir elementos e não, não é uma metáfora, é código de verdade). Se o HTML é a estrutura e o CSS é o estilo, o DOM é o campo de batalha onde a mágica acontece. Vocês vão aprender a encontrar qualquer elemento da página e fazer o que quiserem com ele.

🎯 Objetivos Operacionais

  • Compreender o DOM (Document Object Model) como uma árvore que representa a página HTML. A página não é um bloco monolítico é uma estrutura hierárquica que você pode navegar e manipular.
  • Utilizar métodos de seleção: document.getElementById() o mais rápido, o preferido; document.querySelector() o mais flexível, o curinga; document.querySelectorAll() para caçar todos os elementos de um tipo.
  • Modificar atributos, classes e estilos via JavaScript. Mudar a cor, esconder, mostrar, adicionar uma classe tudo em tempo real.
  • Criar e remover elementos dinamicamente com createElement(), appendChild(), removeChild(). Você vai poder criar coisas do nada e destruir outras. É o poder da criação e da destruição.
  • Bônus: você é o jardineiro dessa árvore regue com criatividade e pode com responsabilidade. O DOM é um superpoder, e com grandes poderes vêm grandes responsabilidades. O RCP-PR destaca que o eixo Mundo Digital é fortalecido quando os alunos compreendem como a página é estruturada internamente e é exatamente isso que o DOM ensina.

📚 Conteúdo Programático

  • 1. O que é o DOM? A representação da página em forma de árvore. Cada tag HTML é um nó que pode ter filhos, irmãos e pais. Entender a árvore é entender o jogo.
  • 2. Métodos de Seleção Como encontrar qualquer elemento: getElementById(), querySelector(), querySelectorAll(). A arte da caça ao elemento.
  • 3. Manipulação de Classes classList.add(), classList.remove(), classList.toggle(). O kit de ferramentas para mudar o visual rapidamente.
  • 4. Manipulação de Estilos element.style.propriedade = valor. Mudar a aparência na hora, sem precisar tocar no CSS.
  • 5. Criação e Remoção createElement(), appendChild(), removeChild(), remove(). Criar, inserir, deletar. O ciclo de vida dos elementos.
  • 6. Cultura Digital e Autonomia Refletir sobre como a manipulação do DOM permite criar experiências personalizadas e acessíveis. O RCP-PR enfatiza que a Educação Digital deve "promover a autonomia e a autoria" e quando você manipula o DOM, você não é mais um mero visitante da página; você é o arquiteto.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Abstração O DOM abstrai a complexidade do navegador o programador interage com uma árvore lógica, sem se preocupar com como o navegador renderiza cada pixel.
Algoritmos Sequência de passos: (1) selecionar o elemento, (2) modificar, (3) criar ou remover. Cada manipulação é um pequeno algoritmo.
Decomposição O problema "manipular a página" é decomposto em: selecionar, modificar classe, modificar estilo, criar, remover. Cada parte é resolvida separadamente.
Reconhecimento de Padrões O padrão document.querySelector() se repete; a estrutura de criação (criar → configurar → adicionar) também se repete.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT201 Interpretar dados estatísticos apresentados em diferentes mídias e suportes, avaliando a confiabilidade das informações e as implicações éticas do uso de dados.

BNCC Linguagens:

Código Habilidade
EM13LP06 Analisar, em diferentes textos, os efeitos de sentido decorrentes do uso de recursos linguísticos e multissemióticos.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO04 Reconhecer e aplicar os princípios da abstração, decomposição, reconhecimento de padrões e algoritmos na resolução de problemas.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "reconhecer e aplicar os princípios do Pensamento Computacional" (EM13CO04). O eixo Mundo Digital é diretamente fortalecido quando os alunos compreendem como a página é estruturada internamente o DOM é a representação viva desse mundo. O RCP-PR também destaca que a Educação Digital deve promover "a compreensão crítica das tecnologias", e entender o DOM é entender como os sites realmente funcionam por baixo dos panos.

"O RCP-PR propõe que a Educação Digital vá além do uso de ferramentas, promovendo a compreensão dos fundamentos que sustentam o mundo digital."

💻 Código Comentado Manipulação do DOM

// ================================================================
// SEMANA 5 DOM: O CONTROLE REMOTO DO FIM
// "O DOM é a árvore. Você é o jardineiro."
// ================================================================

console.log("🌳 DOM carregado. Pronto para manipulação.");

// ================================================================
// PASSO 1: MÉTODOS DE SELEÇÃO Como encontrar elementos
// "Se você não consegue encontrar, você não consegue manipular."
// ================================================================

// 1. getElementById() O MAIS RÁPIDO
const tituloPrincipal = document.getElementById("titulo");

// 2. querySelector() O MAIS FLEXÍVEL
const primeiroBotao = document.querySelector(".botao-principal");
const formulario = document.querySelector("#formulario");
const primeiroParagrafo = document.querySelector("p");

// 3. querySelectorAll() PARA VÁRIOS ELEMENTOS
const todosOsBotoes = document.querySelectorAll("button");
console.log(`Encontrados ${todosOsBotoes.length} botões`);

// ================================================================
// PASSO 2: MANIPULAÇÃO DE CLASSES Vestindo o elemento
// ================================================================

function alternarTema() {
  const body = document.querySelector("body");
  if (!body) return;
  body.classList.toggle("tema-escuro");
  console.log("Tema alternado!");
}

function destacarElemento(id) {
  const elemento = document.getElementById(id);
  if (!elemento) {
    console.error(`❌ Elemento "${id}" não encontrado.`);
    return;
  }
  elemento.classList.add("destaque");
  setTimeout(() => {
    elemento.classList.remove("destaque");
  }, 2000);
}

// ================================================================
// PASSO 3: MANIPULAÇÃO DE ESTILOS Mudando a aparência na hora
// ================================================================

function mudarCorFundo(cor) {
  const body = document.querySelector("body");
  if (body) {
    body.style.backgroundColor = cor;
  }
}

function animarBotao(id) {
  const botao = document.getElementById(id);
  if (!botao) return;
  botao.style.transform = "scale(1.1)";
  botao.style.transition = "transform 0.3s ease";
  botao.style.boxShadow = "0 8px 16px rgba(0,0,0,0.2)";
  setTimeout(() => {
    botao.style.transform = "scale(1)";
    botao.style.boxShadow = "none";
  }, 500);
}

// ================================================================
// PASSO 4: CRIAÇÃO DE ELEMENTOS Fazendo do nada
// ================================================================

function adicionarItemNaLista(texto) {
  // PASSO 1: Criar o elemento
  const novoItem = document.createElement("li");
  // PASSO 2: Adicionar conteúdo
  novoItem.textContent = texto;
  novoItem.classList.add("item-lista");
  novoItem.style.padding = "0.5rem";
  // PASSO 3: Encontrar o pai e adicionar
  const lista = document.getElementById("minhaLista");
  if (!lista) {
    console.error("❌ Lista não encontrada!");
    return;
  }
  lista.appendChild(novoItem);
  console.log(`✅ Item "${texto}" adicionado à lista.`);
}

function criarCard(titulo, conteudo) {
  const card = document.createElement("div");
  card.className = "card";
  const tituloEl = document.createElement("h3");
  tituloEl.textContent = titulo;
  const conteudoEl = document.createElement("p");
  conteudoEl.textContent = conteudo;
  const botaoEl = document.createElement("button");
  botaoEl.textContent = "Saiba mais";
  botaoEl.onclick = function() {
    alert(`Você clicou no card: ${titulo}`);
  };
  card.appendChild(tituloEl);
  card.appendChild(conteudoEl);
  card.appendChild(botaoEl);
  return card;
}

function adicionarCardNoContainer() {
  const container = document.getElementById("containerCards");
  if (!container) {
    console.error("❌ Container não encontrado!");
    return;
  }
  const novoCard = criarCard("Revolução Digital", "O futuro é codificado.");
  container.appendChild(novoCard);
}

// ================================================================
// PASSO 5: REMOÇÃO DE ELEMENTOS O poder de destruir
// ================================================================

function removerUltimoItem() {
  const lista = document.getElementById("minhaLista");
  if (!lista) {
    console.error("❌ Lista não encontrada!");
    return;
  }
  if (lista.children.length === 0) {
    alert("A lista já está vazia!");
    return;
  }
  const ultimoItem = lista.lastElementChild;
  lista.removeChild(ultimoItem);
  console.log("🗑️ Último item removido.");
}

function removerElementoPorId(id) {
  const elemento = document.getElementById(id);
  if (!elemento) {
    console.error(`❌ Elemento "${id}" não encontrado.`);
    return;
  }
  elemento.remove();
  console.log(`🗑️ Elemento "${id}" removido.`);
}

// ================================================================
// PASSO 6: EXEMPLO PRÁTICO To-Do List Dinâmica
// ================================================================

let tarefas = [];

function adicionarTarefa() {
  const input = document.getElementById("inputTarefa");
  if (!input) return;
  const texto = input.value.trim();
  if (texto === "") {
    alert("Digite uma tarefa!");
    return;
  }
  tarefas.push(texto);
  const lista = document.getElementById("listaTarefas");
  if (!lista) return;
  const item = document.createElement("li");
  item.textContent = texto;
  const btnRemover = document.createElement("button");
  btnRemover.textContent = "✕";
  btnRemover.style.marginLeft = "1rem";
  btnRemover.onclick = function() {
    lista.removeChild(item);
    const index = tarefas.indexOf(texto);
    if (index > -1) {
      tarefas.splice(index, 1);
    }
    console.log("Tarefas restantes:", tarefas);
  };
  item.appendChild(btnRemover);
  lista.appendChild(item);
  input.value = "";
  input.focus();
  console.log(`✅ Tarefa "${texto}" adicionada. Total: ${tarefas.length}`);
}

console.log("✅ DOM manipulador carregado. Poder ativado.");
console.log("⚠️ Com grandes poderes vêm grandes responsabilidades.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Controla 🎮 Professor abre o DevTools e mostra a árvore DOM em tempo real. "Vocês já imaginaram ter um CONTROLE REMOTO da página? Poder mudar cor, esconder coisas, criar do nada? O DOM é isso. Cada tag que vocês veem na tela é um nó em uma árvore que vocês podem navegar e modificar. Hoje vocês vão se tornar os mestres dessa árvore."
5-10 O que é o DOM? 🌳 Explicação visual: desenhe uma árvore invertida com <html> na raiz, <head> e <body> como galhos, e os elementos dentro como folhas. "A página não é um bloco é uma árvore. E vocês vão aprender a subir nela." Demonstração no DevTools: expandir e contrair nós.
10-15 Métodos de Seleção Caça ao Elemento 🎯 Apresentação de getElementById(), querySelector(), querySelectorAll(). "getElementById é o mais rápido use quando tiver ID. querySelector é o mais flexível use quando precisar de seletores CSS. querySelectorAll é para pegar todos de uma vez." Demonstração ao vivo.
15-40 Caça ao Elemento Mão na Massa 🔍 Cada grupo pratica a manipulação do DOM no projeto. Tarefas mínimas: (1) Mudar o texto de um elemento ao clicar; (2) Adicionar uma classe para mudar a cor; (3) Criar um novo elemento na lista; (4) Remover um elemento. Professor provoca: "E se você criasse um elemento NOVO? E se você removesse algo? E se você clonasse um elemento e adicionasse em outro lugar?"
40-45 Mostra de Manipulação 🎪 Cada grupo mostra o que conseguiu manipular de preferência a parte mais criativa ou inusitada. "Quem criou o elemento mais inútil? Quem destruiu algo que não devia?"
45-48 Check-in de Poder ⚡ "O DOM é um superpoder use com responsabilidade. Vocês podem criar, modificar e destruir. Mas lembrem-se: cada ação tem uma reação. Testem, console.log() é seu aliado."
48-50 Fechamento + Provocação 🚀 "Na semana que vem: EVENTOS quando o usuário toca na tela. Porque manipular é bom, mas REAGIR ao usuário é melhor ainda."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela para narrar a árvore DOM; descreva a estrutura verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor.
Deficiência Auditiva Use feedback visual em todas as instruções; disponibilize roteiro escrito passo a passo; use mensagens de console e alertas visuais.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; utilize atalhos de teclado e evite dependência de mouse.
TDAH Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos.
Altas Habilidades Desafio extra: "Crie um elemento que se autodestrói após 5 segundos. Ou uma função que clona toda a seção e duplica na página."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Seleção de Elementos Usou pelo menos 2 métodos diferentes de seleção (ex: getElementById e querySelector). 0-2
Manipulação de Estilos Modificou estilos inline ou classes com classList (add, remove, toggle). 0-2
Criação Dinâmica Criou pelo menos 1 elemento com createElement() e appendChild(). 0-2
Remoção de Elementos Removeu elementos com removeChild() ou remove(). 0-1
Feedback ao Usuário O código fornece feedback visual (mudança de cor, texto, etc.) para as interações. 0-1
Bônus: Criatividade Fez algo além do esperado (animações, clones, criação de múltiplos elementos, etc.). 0-2
Total 0-10

🎯 Título

"Eventos: Quando o Usuário Toca no Fim" Ou: como fazer seu projeto reagir a cliques, teclas e (quem sabe) respirações e não, não é mágica, é só código bem escrito. Até agora, vocês mandavam no código. Agora, o usuário vai mandar e vocês vão ter que ouvir o que ele tem a dizer. Eventos são a ponte entre o ser humano e a máquina. E essa ponte, meus caros, é onde a magia realmente acontece.

🎯 Objetivos Operacionais

  • Compreender o que são eventos e por que eles são a ponte entre o usuário e a máquina. Um evento é tudo o que acontece na página que o usuário pode sentir: um clique, uma tecla pressionada, o mouse passando por cima.
  • Utilizar addEventListener() a forma moderna, flexível e recomendada de ouvir eventos. Esqueça onclick no HTML isso é 2010. Vocês são do futuro.
  • Dominar eventos essenciais: click o mais famoso; keydown / keyup quando o usuário digita; mouseover / mouseout quando o mouse passeia; submit quando um formulário é enviado.
  • Adicionar eventos completos ao projeto não só um clique genérico, mas interações que fazem sentido para a experiência do usuário.
  • Bônus: eventos são a alma da interatividade trate-os com respeito. O RCP-PR destaca que a habilidade de "construir soluções computacionais para problemas do cotidiano" (EM13CO02) passa diretamente por entender como os usuários interagem com seus sistemas.

📚 Conteúdo Programático

  • 1. O que são eventos? Interações do usuário que disparam ações no código. O clique, a tecla, o movimento do mouse tudo isso é um evento.
  • 2. Tipos de Eventos click, keydown, keyup, mouseover, mouseout, mouseenter, mouseleave, submit. O cardápio completo da interação.
  • 3. addEventListener() A forma moderna e recomendada de registrar eventos. Diferente de onclick (que só permite um evento por elemento), addEventListener é flexível, permite múltiplos eventos e é mais fácil de remover.
  • 4. O Objeto event Informações sobre o evento que aconteceu. Onde o mouse clicou? Qual tecla foi pressionada? Tudo está dentro do objeto event.
  • 5. Eventos no Projeto Como integrar eventos ao projeto de forma inteligente, não apenas "colocar um botão que dá alerta".
  • 6. Cultura Digital e Interação Refletir sobre como os eventos moldam a experiência do usuário. O RCP-PR enfatiza que o eixo Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais" e uma interface que reage bem ao usuário é uma interface que respeita o ser humano.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Decomposição Cada interação é decomposta em: (1) detectar o evento, (2) executar a ação, (3) atualizar a interface.
Algoritmos Cada evento segue uma sequência lógica: ouvir → processar → reagir. É um mini-algoritmo.
Abstração O addEventListener abstrai a complexidade do navegador você não precisa saber como o navegador detecta o clique, só precisa saber o que fazer quando ele acontece.
Reconhecimento de Padrões O padrão elemento.addEventListener('evento', função) se repete para qualquer tipo de evento.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT303 Resolver e elaborar problemas que envolvem funções polinomiais de 1º e 2º graus.

BNCC Linguagens:

Código Habilidade
EM13LP07 Analisar, em textos de diferentes gêneros, marcas que expressam a posição do enunciador.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO02 Construir soluções computacionais para problemas do cotidiano.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "construir soluções computacionais para problemas do cotidiano" (EM13CO02). O eixo Cultura Digital é fortalecido quando os alunos discutem como as interfaces reagem aos usuários porque uma interface que não reage é uma interface que ignora quem a usa. O RCP-PR também destaca a importância da "autonomia e do protagonismo", e criar interações significativas é um ato de protagonismo digital.

"O RCP-PR propõe que a Educação Digital desenvolva a capacidade de usar a tecnologia como ferramenta de expressão e de transformação social."

💻 Código Comentado Eventos

// ================================================================
// SEMANA 6 EVENTOS: QUANDO O USUÁRIO TOCA NO FIM
// "Detectar → Processar → Reagir. O ciclo da vida digital."
// ================================================================

console.log("👂 Ouvindo eventos. Pronto para reagir.");

// ================================================================
// PASSO 1: addEventListener() A forma REVOLUCIONÁRIA
// ================================================================

// Exemplo 1: Click em um botão (com função anônima)
const botaoAlerta = document.getElementById("botaoAlerta");
if (botaoAlerta) {
  botaoAlerta.addEventListener('click', function() {
    alert("Você clicou no botão! 🚀");
  });
}

// Exemplo 2: Usando uma função nomeada (mais organizado)
function mostrarMensagem() {
  console.log("Botão clicado!");
  const mensagem = document.getElementById("mensagemEvento");
  if (mensagem) {
    mensagem.textContent = "Evento detectado! O botão foi clicado.";
    mensagem.style.color = "#6C63FF";
  }
}
const botaoMensagem = document.getElementById("botaoMensagem");
if (botaoMensagem) {
  botaoMensagem.addEventListener('click', mostrarMensagem);
}

// ================================================================
// PASSO 2: O OBJETO EVENT Informações sobre o que aconteceu
// ================================================================

const botaoInfo = document.getElementById("botaoInfo");
if (botaoInfo) {
  botaoInfo.addEventListener('click', function(evento) {
    console.log("Tipo do evento:", evento.type);
    console.log("Elemento alvo:", evento.target);
    console.log("Coordenadas X:", evento.clientX);
    console.log("Coordenadas Y:", evento.clientY);
    const info = document.getElementById("infoEvento");
    if (info) {
      info.innerHTML = `
        Evento: ${evento.type}
Elemento: ${evento.target.tagName}
Posição: (${evento.clientX}, ${evento.clientY}) `; } }); } // ================================================================ // PASSO 3: EVENTOS DE TECLADO Quando o usuário digita // ================================================================ const inputTeclado = document.getElementById("inputTeclado"); if (inputTeclado) { inputTeclado.addEventListener('keydown', function(evento) { console.log(`Tecla pressionada: ${evento.key} (código: ${evento.code})`); if (evento.key === 'Enter') { evento.preventDefault(); // Impede o comportamento padrão (enviar formulário) const valor = evento.target.value; alert(`Você digitou: "${valor}" e pressionou Enter!`); evento.target.value = ""; // Limpa o campo } }); 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 para resetar o jogo) document.addEventListener('keydown', function(evento) { if (evento.ctrlKey && evento.shiftKey && evento.key === 'R') { evento.preventDefault(); alert("Atalho ativado! Revolução em andamento. 🚀"); } }); // ================================================================ // PASSO 4: EVENTOS DE MOUSE Interações com o ponteiro // ================================================================ const elementoMouse = document.getElementById("elementoMouse"); if (elementoMouse) { elementoMouse.addEventListener('mouseover', function() { this.style.backgroundColor = "#6C63FF"; this.style.color = "white"; this.textContent = "🐭 O mouse está AQUI!"; console.log("Mouse entrou no elemento"); }); elementoMouse.addEventListener('mouseout', function() { this.style.backgroundColor = "#f0f0f0"; this.style.color = "#333"; this.textContent = "Passe o mouse aqui 👆"; console.log("Mouse saiu do elemento"); }); } // ================================================================ // PASSO 5: EVENTOS DE FORMULÁRIO Quando o usuário envia // ================================================================ const formulario = document.getElementById("formularioEvento"); if (formulario) { formulario.addEventListener('submit', function(evento) { evento.preventDefault(); // Impede o recarregamento da página console.log("Formulário enviado!"); const nome = document.getElementById("nomeForm")?.value || ""; const email = document.getElementById("emailForm")?.value || ""; if (nome.trim() === "" || email.trim() === "") { alert("Preencha todos os campos!"); return; } alert(`Formulário enviado com sucesso!\nNome: ${nome}\nEmail: ${email}`); formulario.reset(); }); } // ================================================================ // PASSO 6: DELEGAÇÃO DE EVENTOS Uma técnica poderosa // ================================================================ const listaDelegacao = document.getElementById("listaDelegacao"); if (listaDelegacao) { listaDelegacao.addEventListener('click', function(evento) { const item = evento.target.closest('li'); if (item) { alert(`Você clicou no item: ${item.textContent}`); item.style.backgroundColor = "#FF6B6B"; setTimeout(() => { item.style.backgroundColor = ""; }, 500); } }); } // ================================================================ // PASSO 7: EXEMPLO PRÁTICO Jogo de Clique (o famoso "clique no alvo") // ================================================================ let pontos = 0; let jogoAtivo = false; function iniciarJogo() { jogoAtivo = true; pontos = 0; atualizarPlacar(); const botaoAlvo = document.getElementById("botaoAlvo"); if (botaoAlvo) { botaoAlvo.style.display = "block"; botaoAlvo.textContent = "Clique aqui! 🎯"; botaoAlvo.style.backgroundColor = "#4ECDC4"; } console.log("Jogo iniciado!"); } function clicarAlvo() { if (!jogoAtivo) return; pontos++; atualizarPlacar(); const botao = document.getElementById("botaoAlvo"); if (botao) { // Move o botão para uma posição aleatória const maxX = window.innerWidth - 150; const maxY = window.innerHeight - 150; const x = Math.random() * maxX; const y = Math.random() * maxY; botao.style.position = "fixed"; botao.style.left = x + "px"; botao.style.top = y + "px"; // Muda a cor do botão aleatoriamente const cores = ["#FF6B6B", "#4ECDC4", "#6C63FF", "#FFD93D", "#FF8A5C"]; botao.style.backgroundColor = cores[Math.floor(Math.random() * cores.length)]; } } function atualizarPlacar() { const placar = document.getElementById("placarJogo"); if (placar) { placar.textContent = `Pontos: ${pontos}`; } } function finalizarJogo() { jogoAtivo = false; const botaoAlvo = document.getElementById("botaoAlvo"); if (botaoAlvo) { botaoAlvo.style.display = "none"; } alert(`Fim de jogo! Você fez ${pontos} pontos! 🏆`); } console.log("✅ Eventos configurados. O usuário agora tem voz."); console.log("🎮 Jogo de clique disponível. Use 'iniciarJogo()' para começar.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Reage 👆 Professor abre um site interativo e um estático. "O que faz um site ser INTERATIVO? Não é o design é a REAÇÃO. Cada clique, cada tecla, cada movimento do mouse é um EVENTO. E hoje vocês vão aprender a OUVIR esses eventos. O usuário fala vocês respondem." Demonstração: clicar num botão, ver a reação. Depois pressionar teclas e ver o console mostrar cada tecla.
5-10 O que são Eventos? 📡 "Eventos são sinais que o navegador dispara quando o usuário interage. Pode ser um clique, uma tecla, o mouse passando, um formulário sendo enviado. Esqueça onclick no HTML isso é coisa de 2010. A forma moderna, flexível e poderosa é addEventListener(). Vocês são do futuro. Usem o futuro."
10-15 Tipos de Eventos O Cardápio 📋 Apresentação dos principais eventos: click, keydown, keyup, mouseover, mouseout, submit. Mostrar exemplos ao vivo de cada um. "Cada evento tem um propósito. Clique é para ações. Teclado é para entrada de dados. Mouse é para navegação. Formulário é para envio de dados. Escolham o evento certo para cada situação."
15-40 A Hora do Clique (e das Teclas e do Mouse) 🖱️ Cada grupo adiciona eventos completos ao projeto. Tarefas mínimas: (1) Um botão que, ao ser clicado, altera a página; (2) Um campo de texto que mostra ao vivo o que o usuário está digitando; (3) Um elemento que reage quando o mouse passa por cima. Professor provoca: "E se o usuário apertar ENTER no campo de texto? E se o mouse passar por cima da imagem? E se o formulário for enviado com campos vazios? Testem tudo!"
40-45 Mostra de Eventos O Festival da Interatividade 🎪 Cada grupo mostra o que seus eventos fazem. "Quem criou o evento mais útil? O mais criativo? O mais CAÓTICO? (Aquele que buga tudo é sempre o favorito da turma)."
45-48 Check-in de Interação 🎮 "Cada reação é uma prova de que o código está vivo. Eventos são o que fazem o usuário sentir que o site está ouvindo. Quando você clica e algo acontece, é uma conversa entre humano e máquina. E essa conversa só acontece porque vocês escreveram o código certo."
48-50 Fechamento + Provocação 🚀 "Na semana que vem: DADOS E ARRAYS a biblioteca do caos. Porque interagir é bom, mas GUARDAR os dados para usar depois é melhor ainda."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use feedback sonoro ou tátil para eventos (ex: alert com mensagem de áudio); descreva as interações verbalmente; garanta que eventos de teclado funcionem com leitores de tela.
Deficiência Auditiva Use feedback visual para todos os eventos (mudança de cor, animação, texto na tela); evite depender apenas de alertas sonoros.
Deficiência Motora Garanta navegação por teclado (todos os eventos devem funcionar com Enter, não apenas com clique); botões com tamanho adequado (mínimo 44px); evite dependência de mouse.
TDAH Divida em sprints de 10 minutos com intervalos; use cronômetros visuais gigantes; checklist física.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente com poucos estímulos sensoriais.
Altas Habilidades Desafio extra: "Implemente um evento de keydown que executa uma ação diferente para cada tecla crie um pequeno 'atalho de teclado' personalizado."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Uso de addEventListener Utilizou addEventListener() para pelo menos 3 eventos diferentes (não usou onclick no HTML). 0-3
Eventos de Clique Implementou eventos de clique em botões ou elementos que alteram a página de forma significativa. 0-2
Eventos de Teclado Implementou pelo menos 1 evento de teclado (keydown ou keyup) com efeito prático. 0-2
Eventos de Mouse Implementou pelo menos 1 evento de mouse (mouseover ou mouseout) com efeito prático. 0-1
Feedback ao Usuário O código fornece feedback visual (mudança de cor, texto, animação) para todas as interações. 0-1
Bônus: Criatividade Fez algo além do esperado com eventos (jogo, atalhos de teclado, delegação de eventos, etc.). 0-1
Total 0-10

🎯 Título

"Dados e Arrays: A Biblioteca do Caos" Ou: como organizar a bagunça dos seus dados em listas que fazem sentido (e não deixar tudo virar um caos, porque caos é inimigo da revolução). Até agora, vocês interagiam com o usuário, mas não guardavam nada. Toda interação era efêmera um clique, uma reação, e pronto. Agora vocês vão aprender a armazenar, organizar e manipular dados. E dados, meus caros, são o petróleo do século XXI. Vamos perfurar?

🎯 Objetivos Operacionais

  • Compreender o conceito de arrays (listas) como estruturas para armazenar e organizar dados. Um array é uma caixa de ferramentas você coloca coisas dentro e pode pegar, adicionar ou remover quando quiser.
  • Utilizar métodos fundamentais: push() adiciona no final; pop() remove do final; unshift() adiciona no início; shift() remove do início; splice() adiciona/remove no meio; length quantos itens tem?
  • Percorrer arrays com forEach() e for. Saber andar pela lista é essencial é como passear pelos corredores da biblioteca.
  • Implementar arrays no projeto para gerenciar dados: lista de tarefas, histórico de usuários, registros de eventos, o que sua imaginação permitir.
  • Bônus: arrays são caixas de ferramentas mantenha a sua organizada. O RCP-PR destaca a importância de "utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções" (EM13CO05), e arrays são um desses recursos fundamentais.

📚 Conteúdo Programático

  • 1. O que são Arrays? Listas ordenadas de valores. Diferente de variáveis simples, que guardam UM valor, arrays guardam VÁRIOS valores em uma única estrutura.
  • 2. Criação e Acesso [] para criar, acesso por índice (base 0 o primeiro é 0, o segundo é 1, e assim por diante). length para saber quantos itens.
  • 3. Métodos Essenciais push(), pop(), unshift(), shift(), splice(). O kit de sobrevivência para manipular listas.
  • 4. Percorrendo Arrays forEach() (a forma moderna) e for (a forma clássica). Cada uma tem seu lugar.
  • 5. Arrays no Projeto Como usar arrays para gerenciar dados do mundo real: lista de tarefas, carrinho de compras, histórico de navegação, perfis de usuários.
  • 6. Cultura Digital e Dados Refletir sobre como os dados são coletados, armazenados e usados na sociedade digital. O RCP-PR enfatiza que a Cultura Digital envolve "a compreensão crítica das tecnologias e suas implicações sociais" e dados são uma das implicações mais importantes. Quem controla os dados, controla o poder.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Abstração O array abstrai a complexidade de gerenciar múltiplos dados você não precisa criar uma variável para cada item, apenas uma lista.
Reconhecimento de Padrões O padrão de manipulação de listas se repete em diversos contextos: adicionar, remover, percorrer. Uma vez aprendido, serve para qualquer projeto.
Decomposição Gerenciar dados com arrays envolve decompor o problema em: (1) criar a lista, (2) adicionar itens, (3) remover itens, (4) percorrer a lista.
Algoritmos Cada método (push, pop, forEach) é um pequeno algoritmo que resolve um problema específico.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT304 Analisar e construir modelos matemáticos para descrever fenômenos e situações do cotidiano.

BNCC Linguagens:

Código Habilidade
EM13LP08 Produzir textos de diferentes gêneros, com adequação ao contexto de produção e circulação.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO05 Utilizar, de forma crítica e criativa, diferentes recursos computacionais para construir soluções.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "utilizar recursos computacionais de forma crítica e criativa" (EM13CO05). O eixo Cultura Digital é fortalecido quando os alunos refletem sobre a importância dos dados na sociedade contemporânea. O RCP-PR também destaca a necessidade de "compreender os impactos sociais das tecnologias digitais" e os dados são o centro dessa compreensão. Saber armazenar e manipular dados é o primeiro passo para entender como eles são usados (e abusados) no mundo digital.

"O RCP-PR propõe que a Educação Digital vá além do uso instrumental, promovendo uma compreensão crítica dos fundamentos, implicações e responsabilidades associadas à tecnologia."

💻 Código Comentado Arrays

// ================================================================
// SEMANA 7 DADOS E ARRAYS: A BIBLIOTECA DO CAOS
// "Dados sem estrutura são ruído. Arrays dão estrutura ao ruído."
// ================================================================

// ================================================================
// PASSO 1: O QUE SÃO ARRAYS?
// Arrays são listas ordenadas de valores. O PRIMEIRO índice é 0.
// ================================================================

// Criando um array vazio
const listaVazia = [];

// Criando um array com valores
const frutas = ["Maçã", "Banana", "Laranja", "Uva"];
// Índices:          0        1          2        3

console.log("Frutas:", frutas);
console.log("Primeira fruta:", frutas[0]); // "Maçã"
console.log("Última fruta:", frutas[frutas.length - 1]); // "Uva"
console.log("Total de frutas:", frutas.length); // 4

// Arrays podem ter diferentes tipos de dados
const misturado = ["Texto", 42, true, null, { nome: "João" }];
console.log("Array misturado:", misturado);

// ================================================================
// PASSO 2: MÉTODOS DE ADIÇÃO Colocando coisas no array
// ================================================================

const tarefas = [];

// push() adiciona no FINAL
tarefas.push("Estudar JavaScript");
tarefas.push("Fazer o projeto");
tarefas.push("Revisar o código");
console.log("Tarefas (após push):", tarefas);
// Resultado: ["Estudar JavaScript", "Fazer o projeto", "Revisar o código"]

// unshift() adiciona no INÍCIO
tarefas.unshift("Tomar café");
console.log("Tarefas (após unshift):", tarefas);
// Resultado: ["Tomar café", "Estudar JavaScript", "Fazer o projeto", "Revisar o código"]

// ================================================================
// PASSO 3: MÉTODOS DE REMOÇÃO Tirando coisas do array
// ================================================================

// pop() remove o ÚLTIMO elemento e o retorna
const ultimaTarefa = tarefas.pop();
console.log("Tarefa removida (pop):", ultimaTarefa);
console.log("Tarefas (após pop):", tarefas);
// Resultado: ["Tomar café", "Estudar JavaScript", "Fazer o projeto"]

// shift() remove o PRIMEIRO elemento e o retorna
const primeiraTarefa = tarefas.shift();
console.log("Tarefa removida (shift):", primeiraTarefa);
console.log("Tarefas (após shift):", tarefas);
// Resultado: ["Estudar JavaScript", "Fazer o projeto"]

// ================================================================
// PASSO 4: MÉTODOS DE MANIPULAÇÃO Mexendo no meio do array
// ================================================================

// splice() remove, adiciona ou substitui elementos
// splice(índice, quantidadeRemover, ...itensAdicionar)
const numeros = [10, 20, 30, 40, 50];
console.log("Numeros original:", numeros);

// Remove 1 elemento a partir do índice 2 (o número 30)
const removido = numeros.splice(2, 1);
console.log("Elemento removido:", removido); // [30]
console.log("Numeros após splice:", numeros); // [10, 20, 40, 50]

// Adicionar elementos no meio
numeros.splice(2, 0, 35, 36);
console.log("Numeros após adição:", numeros); // [10, 20, 35, 36, 40, 50]

// ================================================================
// PASSO 5: PERCORRENDO ARRAYS ForEach e For
// ================================================================

const cores = ["Vermelho", "Azul", "Verde", "Amarelo"];

// forEach() executa uma função para cada item (forma moderna)
console.log("=== forEach ===");
cores.forEach(function(cor, indice) {
  console.log(`Cor ${indice + 1}: ${cor}`);
});

// for loop forma clássica (mais controle, mais flexível)
console.log("=== for loop ===");
for (let i = 0; i < cores.length; i++) {
  console.log(`Índice ${i}: ${cores[i]}`);
}

// for...of forma moderna e simples (menos controle, mais legível)
console.log("=== for...of ===");
for (const cor of cores) {
  console.log(cor);
}

// ================================================================
// PASSO 6: MÉTODOS ÚTEIS Busca, filtro, transformação
// ================================================================

const numeros2 = [5, 12, 8, 130, 44, 8];

// indexOf() encontra o índice de um elemento
const posicao = numeros2.indexOf(8);
console.log(`Índice do 8: ${posicao}`); // 2 (primeiro 8)

// includes() verifica se existe
console.log(`Tem 44? ${numeros2.includes(44)}`); // true
console.log(`Tem 100? ${numeros2.includes(100)}`); // false

// filter() cria um novo array com elementos que passam no teste
const maioresQue10 = numeros2.filter(function(numero) {
  return numero > 10;
});
console.log("Maiores que 10:", maioresQue10); // [12, 130, 44]

// map() transforma cada elemento em algo novo
const dobrados = numeros2.map(function(numero) {
  return numero * 2;
});
console.log("Dobrados:", dobrados); // [10, 24, 16, 260, 88, 16]

// ================================================================
// PASSO 7: ARRAYS DE OBJETOS Dados estruturados de verdade
// ================================================================

const usuarios = [
  { id: 1, nome: "Ana", idade: 17 },
  { id: 2, nome: "Bruno", idade: 18 },
  { id: 3, nome: "Carla", idade: 16 },
  { id: 4, nome: "Daniel", idade: 19 }
];

// Percorrendo e acessando propriedades
usuarios.forEach(usuario => {
  console.log(`${usuario.nome} tem ${usuario.idade} anos`);
});

// Filtrar maiores de idade
const maioresDeIdade = usuarios.filter(usuario => usuario.idade >= 18);
console.log("Maiores de idade:", maioresDeIdade);

// Encontrar um usuário específico
const usuarioEncontrado = usuarios.find(usuario => usuario.id === 3);
console.log("Usuário ID 3:", usuarioEncontrado);

// ================================================================
// PASSO 8: EXEMPLO PRÁTICO Lista de Tarefas com Array
// ================================================================

let listaTarefas = [];

function adicionarTarefa(descricao, prioridade = "normal") {
  const novaTarefa = {
    id: Date.now(),
    descricao: descricao,
    prioridade: prioridade,
    concluida: false,
    dataCriacao: new Date().toLocaleString()
  };
  listaTarefas.push(novaTarefa);
  console.log(`✅ Tarefa adicionada: "${descricao}"`);
  return novaTarefa;
}

function listarTarefas() {
  if (listaTarefas.length === 0) {
    console.log("📭 Nenhuma tarefa cadastrada.");
    return;
  }
  console.log("=== LISTA DE TAREFAS ===");
  listaTarefas.forEach((tarefa, indice) => {
    const status = tarefa.concluida ? "✅" : "⬜";
    console.log(`${indice + 1}. ${status} ${tarefa.descricao} (${tarefa.prioridade})`);
  });
  console.log(`Total: ${listaTarefas.length} tarefas`);
}

function concluirTarefa(id) {
  const tarefa = listaTarefas.find(t => t.id === id);
  if (tarefa) {
    tarefa.concluida = true;
    console.log(`✅ Tarefa "${tarefa.descricao}" concluída!`);
  } else {
    console.log(`❌ Tarefa com ID ${id} não encontrada.`);
  }
}

function removerTarefa(id) {
  const indice = listaTarefas.findIndex(t => t.id === id);
  if (indice !== -1) {
    const removida = listaTarefas.splice(indice, 1)[0];
    console.log(`🗑️ Tarefa "${removida.descricao}" removida.`);
  } else {
    console.log(`❌ Tarefa com ID ${id} não encontrada.`);
  }
}

console.log("✅ Arrays carregados. Dados organizados.");
console.log("📊 Use as funções para gerenciar tarefas.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Organiza 📚 "Quem aqui já perdeu uma tarefa importante? Já esqueceu uma senha? Já se perdeu na lista de coisas para fazer? A vida é um caos de informações e arrays são a forma de organizar esse caos. Hoje vocês vão aprender a construir a BIBLIOTECA dos seus dados." Professor faz uma lista no quadro e pergunta: "Como a gente guardaria isso em código?"
5-10 O que são Arrays? 📦 "Arrays são listas ordenadas. O primeiro elemento é SEMPRE o índice 0. O segundo é 1. E assim por diante. É como uma estante de livros: cada livro tem sua posição." Demonstração ao vivo: criar um array, acessar elementos, usar length.
10-15 Métodos Essenciais O Kit de Sobrevivência 🛠️ Demonstração de push() (adicionar no final), pop() (remover do final), unshift() (adicionar no início), shift() (remover do início), splice() (mexer no meio). "Esses são os movimentos básicos. É como aprender a abrir a porta, fechar a porta, guardar e pegar coisas. Sem isso, você não entra na biblioteca."
15-40 Organizando o Caos 📋 Cada grupo implementa arrays no projeto. Tarefas mínimas: (1) Criar um array para armazenar algo (tarefas, usuários, registros); (2) Adicionar itens ao array; (3) Remover ou modificar itens; (4) Percorrer o array e exibir na tela. Professor provoca: "O que mais você pode guardar num array? Nomes, notas, históricos, cliques, tudo! Seus dados merecem organização."
40-45 Mostra de Arrays A Grande Biblioteca 🎪 Cada grupo mostra como usou arrays no projeto. "Quem criou o array mais útil? O mais criativo? Quem perdeu todos os dados porque esqueceu que índice começa em 0?"
45-48 Check-in de Organização 📊 "Dados organizados são a base de qualquer sistema que presta. Se seus dados estão bagunçados, seu sistema vai quebrar. Arrays são seus primeiros passos para se tornar um mestre dos dados. E dados são poder. Saber guardá-los e manipulá-los é o que separa um bom programador de um programador que passa raiva."
48-50 Fechamento + Provocação 🚀 "Na semana que vem: FUNÇÕES o exército da revolução. Vocês vão aprender a criar seus próprios comandos. Porque código repetido é código que dá preguiça e preguiça é inimiga da revolução."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela para ler os arrays; descreva a estrutura verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (atalhos para navegação).
TDAH Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos.
Altas Habilidades Desafio extra: "Implemente um sistema de busca dentro do array usando filter e find para encontrar itens específicos. Ou crie um array de objetos com múltiplas propriedades e percorra-o."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Criação do Array Criou um array para armazenar dados no projeto (ex: tarefas, usuários, registros). 0-2
Métodos de Adição Utilizou push() e/ou unshift() para adicionar itens ao array. 0-2
Métodos de Remoção Utilizou pop() e/ou shift() para remover itens do array. 0-2
Percorrimento Usou forEach() ou for para percorrer o array e exibir dados na interface. 0-2
Manipulação do DOM Atualizou a interface (HTML) com base nos dados do array (ex: exibir lista de tarefas). 0-2
Total 0-10

🎯 Título

"Funções: O Exército do Adeus" Ou: como ensinar seu código a fazer truques novos sem repetir a mesma coisa 500 vezes (e sem enlouquecer no processo). Até agora, vocês escreveram código que funciona, mas provavelmente é um grande bloco de instruções que se repetem. Funções são a solução para esse caos. Elas são como receitas de bolo você escreve uma vez, testa, e usa quantas vezes quiser. E o melhor: se precisar mudar, muda em um lugar só. Isso se chama eficiência. E eficiência é o que separa os amadores dos profissionais.

🎯 Objetivos Operacionais

  • Compreender o conceito de funções como blocos de código reutilizáveis. Uma função é um mini-programa dentro do seu programa.
  • Criar funções com parâmetros (o que a função espera receber) e retorno de valores (o que a função devolve). Parâmetros são os ingredientes; retorno é o bolo pronto.
  • Utilizar funções para organizar e modularizar o código do projeto. Código organizado é código que você não tem vergonha de mostrar no GitHub.
  • Refatorar o código do projeto para usar funções transformar código repetido em funções reutilizáveis. Essa é a arte de melhorar sem mudar o comportamento.
  • Bônus: funções são os blocos de construção sem elas, o código vira um macarrão. O RCP-PR enfatiza a habilidade de "planejar e executar projetos de desenvolvimento de software" (EM13CO07), e funções são essenciais para um bom planejamento.

📚 Conteúdo Programático

  • 1. O que são Funções? Sub-rotinas que realizam uma tarefa específica. Elas recebem, processam e devolvem. É a unidade básica de organização do código.
  • 2. Anatomia de uma Função function nome(parâmetros) { corpo }. A estrutura é sempre a mesma; o que muda é o que vai dentro.
  • 3. Parâmetros vs Argumentos O que a função espera (parâmetros) vs o que é passado na chamada (argumentos). Entender essa diferença é crucial.
  • 4. Retorno (return) O que a função devolve para quem a chamou. Sem return, a função só executa, mas não dá resposta.
  • 5. Refatoração Como transformar código repetido em funções reutilizáveis. O processo de limpar a bagunça.
  • 6. Cultura Digital e Colaboração Refletir sobre como funções permitem que equipes colaborem em projetos grandes. O RCP-PR destaca que a Educação Digital deve "promover o protagonismo e a autoria", e em projetos reais, ninguém escreve um sistema inteiro sozinho funções permitem que cada pessoa trabalhe em uma parte específica.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Algoritmos Cada função é um pequeno algoritmo: recebe entradas, processa, retorna saída.
Decomposição O problema é decomposto em funções menores e especializadas cada função resolve uma parte do problema.
Abstração A função abstrai a complexidade: quem chama a função não precisa saber como ela faz, só precisa saber o que ela faz.
Reconhecimento de Padrões O padrão function nome() { } se repete; a estrutura de parâmetros e retorno também é um padrão.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT401 Aplicar conceitos matemáticos (funções, equações, gráficos) na compreensão e resolução de problemas.

BNCC Linguagens:

Código Habilidade
EM13LP09 Produzir textos de diferentes gêneros, com adequação ao contexto.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO07 Planejar e executar projetos de desenvolvimento de software, considerando aspectos como usabilidade, acessibilidade, ética e sustentabilidade.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "planejar e executar projetos de software" (EM13CO07). O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a decompor problemas em funções. O RCP-PR também destaca a importância da "organização e modularização" no desenvolvimento de soluções computacionais. Funções são a base dessa organização. Além disso, o RCP-PR enfatiza que a Educação Digital deve "preparar os estudantes para atuar em projetos colaborativos" e funções são a forma como times de desenvolvimento dividem o trabalho.

"O RCP-PR propõe que a Educação Digital desenvolva competências para o trabalho colaborativo e a construção coletiva de soluções."

💻 Código Comentado Funções

// ================================================================
// SEMANA 8 FUNÇÕES: O EXÉRCITO DO ADEUS
// "Função é uma receita de bolo. Escreva uma vez, use várias."
// ================================================================

console.log("🧠 Funções carregadas. Prontas para serem usadas.");

// ================================================================
// PASSO 1: O QUE SÃO FUNÇÕES?
// Estrutura básica:
// function nomeDaFuncao(parametro1, parametro2) {
//   // corpo da função
//   return resultado;
// }
// ================================================================

// Exemplo 1: Função simples (sem parâmetros, sem retorno)
function saudacao() {
  console.log("Olá, revolucionário! 🚀");
}
saudacao();

// Exemplo 2: Função com parâmetros (sem retorno)
function saudacaoPersonalizada(nome) {
  console.log(`Olá, ${nome}! A revolução precisa de você.`);
}
saudacaoPersonalizada("Ana");
saudacaoPersonalizada("Bruno");

// Exemplo 3: Função com parâmetros e retorno
function calcularDobro(numero) {
  return numero * 2;
}
const resultado = calcularDobro(10);
console.log("O dobro de 10 é:", resultado); // 20

// Exemplo 4: Função com múltiplos parâmetros
function calcularMedia(nota1, nota2, nota3) {
  const soma = nota1 + nota2 + nota3;
  const media = soma / 3;
  return media;
}
const mediaAluno = calcularMedia(7, 8, 9);
console.log("Média do aluno:", mediaAluno);

// ================================================================
// PASSO 2: PARÂMETROS VS ARGUMENTOS
// ================================================================

function saudacaoCompleta(nome, saudacao = "Olá") {
  return `${saudacao}, ${nome}!`;
}
console.log(saudacaoCompleta("Maria")); // "Olá, Maria!"
console.log(saudacaoCompleta("João", "Bem-vindo")); // "Bem-vindo, João!"

function potencia(base, expoente = 2) {
  return Math.pow(base, expoente);
}
console.log(potencia(3)); // 9 (3²)
console.log(potencia(3, 3)); // 27 (3³)

// ================================================================
// PASSO 3: ESCOPO DE VARIÁVEIS Onde as variáveis "vivem"
// ================================================================

let variavelGlobal = "Estou em todo lugar!";
function exemploEscopo() {
  let variavelLocal = "Estou só dentro da função!";
  console.log("Dentro da função:");
  console.log("- Global:", variavelGlobal);
  console.log("- Local:", variavelLocal);
}
exemploEscopo();
console.log("Fora da função:");
console.log("- Global:", variavelGlobal);
// console.log(variavelLocal); // ERRO! variavelLocal não existe aqui

// ================================================================
// PASSO 4: FUNÇÕES COM RETORNO O que elas devolvem
// ================================================================

function calcularIMC(peso, altura) {
  return peso / (altura * altura);
}
function classificarIMC(imc) {
  if (imc < 18.5) return "Abaixo do peso";
  if (imc < 25) return "Peso normal";
  if (imc < 30) return "Sobrepeso";
  if (imc < 35) return "Obesidade grau I";
  if (imc < 40) return "Obesidade grau II";
  return "Obesidade grau III";
}
function avaliarPeso(peso, altura) {
  const imc = calcularIMC(peso, altura);
  const classificacao = classificarIMC(imc);
  return `IMC: ${imc.toFixed(1)} ${classificacao}`;
}
console.log(avaliarPeso(70, 1.75)); // "IMC: 22.9 Peso normal"

// ================================================================
// PASSO 5: FUNÇÕES QUE CHAMAM OUTRAS FUNÇÕES Composição
// ================================================================

function formatarNome(nome) {
  return nome.trim().toUpperCase();
}
function gerarSaudacao(nome) {
  return `Olá, ${formatarNome(nome)}!`;
}
function gerarDespedida(nome) {
  return `Até logo, ${formatarNome(nome)}!`;
}
function interagirComUsuario(nome, acao) {
  const nomeFormatado = formatarNome(nome);
  if (acao === "saudacao") {
    return gerarSaudacao(nomeFormatado);
  } else if (acao === "despedida") {
    return gerarDespedida(nomeFormatado);
  } else {
    return `Olá, ${nomeFormatado}! O que você deseja?`;
  }
}
console.log(interagirComUsuario(" ana ", "saudacao")); // "Olá, ANA!"
console.log(interagirComUsuario(" carlos ", "despedida")); // "Até logo, CARLOS!"

// ================================================================
// PASSO 6: FUNÇÕES ANÔNIMAS E ARROW FUNCTIONS Formas modernas
// ================================================================

// Função anônima (sem nome) atribuída a uma variável
const somar = function(a, b) {
  return a + b;
};
console.log("Soma (anônima):", somar(5, 3));

// Arrow function forma moderna, mais concisa
const multiplicar = (a, b) => {
  return a * b;
};
console.log("Multiplicação (arrow):", multiplicar(5, 3));

// Arrow function com retorno implícito (sem {} e sem return)
const dividir = (a, b) => a / b;
console.log("Divisão (arrow implícita):", dividir(10, 2));

// Arrow function com um parâmetro (pode omitir parênteses)
const quadrado = x => x * x;
console.log("Quadrado:", quadrado(5));

// ================================================================
// PASSO 7: REFATORAÇÃO Transformando código repetido em funções
// ================================================================

// ANTES: Código repetido (problema!)
function antes() {
  const lado1 = 5;
  const area1 = lado1 * lado1;
  console.log("Área 1:", area1);
  const lado2 = 7;
  const area2 = lado2 * lado2;
  console.log("Área 2:", area2);
  const lado3 = 3;
  const area3 = lado3 * lado3;
  console.log("Área 3:", area3);
}

// DEPOIS: Código refatorado (solução!)
function calcularAreaQuadrado(lado) {
  return lado * lado;
}
function depois() {
  const areas = [5, 7, 3];
  areas.forEach((lado, indice) => {
    const area = calcularAreaQuadrado(lado);
    console.log(`Área ${indice + 1}:`, area);
  });
}
console.log("\nANTES DA REFATORAÇÃO");
antes();
console.log("\nDEPOIS 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;
}

console.log("✅ Funções carregadas. Exército pronto para a batalha.");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Modulariza 🧩 "Quem aqui já copiou e colou o mesmo código 5 vezes? Quem já passou raiva tendo que corrigir o mesmo erro em 10 lugares diferentes? Funções são como RECEITAS DE BOLO: você escreve uma vez, testa, e usa quantas vezes quiser. Hoje vocês vão aprender a criar suas próprias receitas e nunca mais vão repetir código desnecessariamente."
5-10 O que são Funções? 🧠 "Funções recebem parâmetros (ingredientes), processam (preparam) e retornam um resultado (servem o bolo). Elas são o CORAÇÃO da programação moderna. Sem funções, seu código é um bloco único e monolítico que ninguém entende. Com funções, seu código vira um LEGO cada peça encaixa na outra."
10-15 Anatomia de uma Função A Receita 🔬 Demonstração de function com parâmetros e retorno. Mostrar a diferença entre função que só executa (sem return) e função que devolve um valor (com return). "Se você não usa return, sua função faz algo, mas não fala com você de volta. É como fazer um bolo e não provar você nunca sabe se ficou bom."
15-40 Modularizando a Revolução 🔨 Cada grupo refatora o código do projeto para usar funções. Tarefas mínimas: (1) Identificar código repetido e transformar em função; (2) Criar funções com parâmetros para operações comuns; (3) Usar funções para organizar o fluxo do programa. Professor provoca: "O que se repete? O que pode virar uma função? E se você tivesse uma função que recebe dados e devolve HTML formatado? E se você criasse uma função de validação?"
40-45 Mostra de Funções O Exército em Ação 🎪 Cada grupo mostra como refatorou o código. "Quem tem a função mais elegante? A mais útil? A mais criativa? Quem transformou 50 linhas de código em 10 linhas bem organizadas?"
45-48 Check-in de Modularização 🧹 "Código organizado é código que você não tem vergonha de mostrar. Funções são a base da organização. Quando você escreve funções, está se preparando para trabalhar em equipe cada um cuida de uma função, e tudo se encaixa. Isso é profissionalismo."
48-50 Fechamento + Provocação 🚀 "Na semana que vem: DEBUG E POLIMENTO a batalha final. Porque código perfeito não existe, mas código bem testado e polido é o que separa os projetos que funcionam dos projetos que explodem na cara do usuário."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela para ler o código; descreva a estrutura das funções verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito passo a passo; use exemplos visuais claros.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado (atalhos para navegação e auto-complete).
TDAH Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física para cada etapa.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos.
Altas Habilidades Desafio extra: "Crie uma função de ordem superior que recebe outra função como parâmetro por exemplo, uma função 'executarComLog' que executa qualquer função e registra o que aconteceu."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Declaração de Funções Criou pelo menos 5 funções diferentes no projeto (com nomes significativos). 0-3
Parâmetros e Retorno As funções recebem parâmetros e retornam valores corretamente (uso de return). 0-2
Modularização O código está dividido em funções com responsabilidades claras (cada função faz uma coisa). 0-3
Refatoração Refatorou código repetido para usar funções reduziu duplicação. 0-2
Total 0-10

🎯 Título

"Debug e Polimento: A Batalha Final" Ou: como transformar um projeto quebrado em uma obra-prima (ou pelo menos em algo que não explode quando alguém clica). Até agora, vocês construíram, estilizaram, deram vida e organizaram. Mas o código nunca funciona de primeira. Programar não é sobre escrever código perfeito é sobre encontrar e corrigir erros até que o código funcione. E isso, meus caros, é a verdadeira arte da programação. Hoje vocês vão aprender a caçar bugs como verdadeiros detetives digitais.

🎯 Objetivos Operacionais

  • Compreender a importância de testar e depurar como parte essencial do desenvolvimento. Debug não é uma etapa opcional é tão importante quanto escrever o código.
  • Utilizar ferramentas de debug: console.log(), console.error(), debugger, breakpoints no DevTools. O arsenal do caçador de bugs.
  • Identificar e corrigir diferentes tipos de erro: Sintaxe você escreveu algo errado (falta vírgula, parêntese, chave); Referência você usou algo que não existe (variável não declarada); Lógica o código roda, mas faz a coisa ERRADA (o pior de todos); Runtime o código quebra durante a execução (tipo null que não tem propriedade).
  • Refatorar o código para melhorar legibilidade e manutenibilidade. Código limpo é código que você consegue entender 6 meses depois.
  • Bônus: errar é humano o computador só faz o que você manda, não o que você quer. O RCP-PR enfatiza a habilidade de "refletir sobre o processo de construção de soluções computacionais, identificando aprendizados, desafios e possibilidades de melhoria" (EM13CO09). Debug é reflexão em ação.

📚 Conteúdo Programático

  • 1. Tipos de Erro Sintaxe, referência, lógica, runtime. Conheça seu inimigo antes de combatê-lo.
  • 2. Ferramentas de Debug console.log(), console.error(), console.table(), debugger, breakpoints no DevTools. Cada ferramenta tem um propósito.
  • 3. Estratégias de Debug Isolar o problema, reproduzir o erro, ler as mensagens de erro. O método científico aplicado ao código.
  • 4. Refatoração Reescrever código para melhorar sem mudar o comportamento. Deixar mais limpo, mais legível, mais eficiente.
  • 5. Polimento Final Últimos ajustes de design, usabilidade, acessibilidade. Os detalhes que fazem a diferença entre "funciona" e "é incrível".
  • 6. Cultura Digital e Qualidade Refletir sobre a importância da qualidade em produtos digitais. O RCP-PR destaca que a Educação Digital deve "promover a compreensão crítica das tecnologias" e qualidade é uma questão ética. Produtos digitais mal feitos excluem, frustram e podem até causar danos.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Decomposição O problema "o código não funciona" é decomposto em partes menores: isolar a função, testar a entrada, testar a saída, verificar cada linha.
Algoritmos O processo de debug segue uma sequência lógica: reproduzir → isolar → corrigir → testar. É um algoritmo de resolução de problemas.
Abstração Durante o debug, você abstrai o que deveria acontecer e compara com o que está acontecendo. A diferença é onde está o bug.
Reconhecimento de Padrões Erros se repetem. Reconhecer padrões de erro (ex: undefined geralmente significa que você esqueceu de declarar ou atribuir) acelera a correção.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT402 Utilizar o raciocínio lógico e a linguagem matemática para compreender e resolver problemas.

BNCC Linguagens:

Código Habilidade
EM13LP10 Revisar e editar textos produzidos, considerando a adequação ao contexto.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO09 Refletir sobre o processo de construção de soluções computacionais, identificando aprendizados, desafios e possibilidades de melhoria.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "refletir sobre o processo de construção de soluções" (EM13CO09). O eixo Pensamento Computacional é fortalecido quando os alunos aprendem a identificar e corrigir erros porque errar é humano, mas saber corrigir é uma habilidade que se aprende. O RCP-PR também destaca que a Educação Digital deve "promover a autonomia e a resiliência" e nada ensina resiliência como passar 30 minutos procurando um ponto-e-vírgula faltando.

"O RCP-PR propõe que os estudantes desenvolvam a capacidade de aprender com os erros e de persistir na busca por soluções."

💻 Código Comentado Debug

// ================================================================
// SEMANA 9 DEBUG E POLIMENTO: A BATALHA FINAL
// "Debug é o processo de remover bugs. Programação é o processo de colocá-los."
// ================================================================

console.log("🐛 Caçadores de bugs, preparem-se!");

// ================================================================
// PASSO 1: TIPOS DE ERRO Conheça seu inimigo
// ================================================================

// 1. ERRO DE SINTAXE Você escreveu algo errado
// Exemplo: falta de fechamento de parênteses
// function minhaFuncao() { // ← ESSA LINHA DARIA ERRO
//   console.log("Olá"
// } // ← Faltou fechar o parêntese do console.log

// 2. ERRO DE REFERÊNCIA Você usou algo que não existe
function exemploReferencia() {
  try {
    console.log(variavelInexistente); // ReferenceError!
  } catch (erro) {
    console.error("❌ Erro de referência:", erro.message);
    console.log("💡 Solução: A variável não foi declarada.");
  }
}
exemploReferencia();

// 3. ERRO DE LÓGICA O código roda, mas faz a coisa ERRADA
function calcularMediaErrada(notas) {
  let soma = 0;
  for (let i = 0; i <= notas.length; i++) { // <= é o problema!
    soma += notas[i];
  }
  return soma / notas.length; // Vai dar NaN ou valor errado
}
// Versão corrigida:
function calcularMediaCorreta(notas) {
  let soma = 0;
  for (let i = 0; i < notas.length; i++) {
    soma += notas[i];
  }
  return soma / notas.length;
}

// 4. ERRO DE RUNTIME O código quebra durante a execução
function dividirPorZero() {
  try {
    const objeto = null;
    console.log(objeto.propriedade); // TypeError!
  } catch (erro) {
    console.error("❌ Erro de runtime:", erro.message);
    console.log("💡 Solução: Verifique se o objeto não é null antes de acessar propriedades.");
  }
}
dividirPorZero();

// ================================================================
// PASSO 2: FERRAMENTAS DE DEBUG O arsenal do caçador
// ================================================================

// 1. console.log() O MAIS USADO
console.log("🔍 Isso é um log normal.");
console.warn("⚠️ Isso é um aviso.");
console.error("❌ Isso é um erro.");
console.info("ℹ️ Isso é uma informação.");

// 2. console.table() Mostra arrays/objetos em tabela (MUITO útil)
const usuariosDebug = [
  { nome: "Ana", idade: 17 },
  { nome: "Bruno", idade: 18 },
  { nome: "Carla", idade: 16 }
];
console.table(usuariosDebug);

// 3. console.group() Agrupa logs relacionados
console.group("🔍 Debug da Função Soma");
console.log("Parâmetros recebidos:", 5, 3);
console.log("Resultado calculado:", 5 + 3);
console.log("Resultado esperado:", 8);
console.groupEnd();

// 4. debugger Pausa a execução (se o DevTools estiver aberto)
function funcaoComDebugger(a, b) {
  debugger; // A execução PARA aqui. Você pode inspecionar variáveis.
  const resultado = a + b;
  console.log("Resultado:", resultado);
  return resultado;
}

// 5. try...catch Captura erros graciosamente
function executarComSeguranca(funcao) {
  try {
    return funcao();
  } catch (erro) {
    console.error("❌ Algo deu errado:", erro.message);
    console.log("💡 Mas não se preocupe o programa continua!");
    return null;
  }
}
const resultadoSeguro = executarComSeguranca(() => {
  return variavelQueNaoExiste;
});
console.log("Resultado seguro:", resultadoSeguro);

// ================================================================
// PASSO 3: ESTRATÉGIAS DE DEBUG Como encontrar o bug
// ================================================================

function encontrarBug(notas) {
  console.log("🔍 PASSO 1: Verificando entrada:", notas);
  if (!Array.isArray(notas) || notas.length === 0) {
    console.warn("⚠️ Lista de notas inválida!");
    return 0;
  }
  let soma = 0;
  console.log("🔍 PASSO 2: Iniciando soma...");
  for (let i = 0; i < notas.length; i++) {
    console.log(` - Adicionando notas[${i}] = ${notas[i]}`);
    soma += notas[i];
  }
  console.log("🔍 PASSO 3: Soma total =", soma);
  const media = soma / notas.length;
  console.log("🔍 PASSO 4: Média calculada =", media);
  return media;
}

// ================================================================
// PASSO 4: VALIDAÇÃO DE DADOS Prevenindo bugs
// ================================================================

function validarNumero(valor, nome = "valor") {
  if (typeof valor !== "number") {
    throw new Error(`${nome} deve ser um número. Recebido: ${typeof valor}`);
  }
  if (isNaN(valor)) {
    throw new Error(`${nome} não pode ser NaN (Not a Number)`);
  }
  if (!isFinite(valor)) {
    throw new Error(`${nome} não pode ser infinito`);
  }
  return true;
}

function processarDadosSeguro(nome, idade) {
  try {
    if (typeof nome !== "string" || nome.trim() === "") {
      throw new Error("Nome deve ser uma string não vazia");
    }
    validarNumero(idade, "Idade");
    if (idade < 0 || idade > 150) {
      throw new Error("Idade deve estar entre 0 e 150 anos");
    }
    return `Usuário ${nome} tem ${idade} anos. Válido! ✅`;
  } catch (erro) {
    console.error("❌ Erro de validação:", erro.message);
    return null;
  }
}
console.log(processarDadosSeguro("Ana", 17)); // ✅
console.log(processarDadosSeguro("", 17)); // ❌
console.log(processarDadosSeguro("Bruno", -5)); // ❌

// ================================================================
// PASSO 5: REFATORAÇÃO Melhorando o código
// ================================================================

// ANTES: Código confuso, difícil de entender
function antesRefatoracao(array) {
  let a = 0;
  for (let i = 0; i < array.length; i++) {
    if (array[i] > 0) {
      a = a + array[i];
    }
  }
  let b = a / array.length;
  return b;
}

// DEPOIS: Código claro, cada parte faz uma coisa
function calcularMediaPositivos(numeros) {
  const positivos = numeros.filter(num => num > 0);
  if (positivos.length === 0) return 0;
  const soma = positivos.reduce((acumulador, num) => acumulador + num, 0);
  return soma / positivos.length;
}
console.log("Média dos positivos:", calcularMediaPositivos([-5, 10, -3, 8, 12]));

// ================================================================
// PASSO 6: CHECKLIST DE POLIMENTO O que revisar antes de lançar
// ================================================================

const checklistPolimento = {
  codigo: [
    "✅ Removeu todos os console.log() de debug (ou deixou apenas os importantes)?",
    "✅ Nomes de variáveis e funções são claros e descritivos?",
    "✅ Código está indentado e organizado?",
    "✅ Não há código comentado (morto) que deveria ser removido?"
  ],
  design: [
    "✅ O site funciona em celular (responsividade)?",
    "✅ As cores têm contraste suficiente (acessibilidade)?",
    "✅ As fontes são legíveis (tamanho mínimo 16px)?",
    "✅ Os botões são grandes o suficiente para clicar (mínimo 44px)?"
  ],
  usabilidade: [
    "✅ O usuário sabe o que fazer quando entra no site?",
    "✅ Há feedback visual para cada ação do usuário?",
    "✅ Os erros são explicados de forma amigável?"
  ],
  acessibilidade: [
    "✅ As imagens têm alt text?",
    "✅ O HTML usa tags semânticas?",
    "✅ O site pode ser navegado pelo teclado (sem mouse)?"
  ]
};

console.log("✅ Debug finalizado. Código polido e pronto.");
console.log("📋 Use o checklist antes de apresentar!");

⏱️ Detalhamento Minuto a Minuto (50 min)

Minuto Atividade Descrição
0-5 O Gancho que Corrige 🐛 Professor entra com um código cheio de erros e pergunta: "Quem aqui já passou HORAS tentando descobrir por que o código não funciona? O problema não é ter erros é não saber como ENCONTRÁ-LOS. Hoje vocês vão se tornar CAÇADORES DE BUGS. E vou dizer uma verdade que dói: programar é 10% escrever código e 90% descobrir por que ele não funciona. Bem-vindos aos 90%."
5-10 Tipos de Erro Conheça seu Inimigo 🎯 Explicação dos 4 tipos de erro: Sintaxe (erro de escrita), Referência (variável não existe), Lógica (faz errado), Runtime (quebra durante a execução). Mostrar exemplos ao vivo de cada um. "O pior é o erro de lógica o código roda, não dá erro, mas o resultado está ERRADO. E aí você passa horas achando que o problema é em outro lugar."
10-15 Ferramentas de Debug O Arsenal 🛠️ Demonstração de console.log() (o básico), console.table() (mostra dados em tabela), console.group() (organiza), debugger (pausa a execução), breakpoints no DevTools. "Cada ferramenta tem um propósito. Use a certa para cada situação."
15-40 Caça aos Bugs A Grande Expedição 🔍 Cada grupo testa, identifica e corrige bugs no seu projeto. Tarefas: (1) Executar o projeto e anotar todos os bugs; (2) Classificar os bugs por tipo (sintaxe, referência, lógica, runtime); (3) Corrigir os bugs; (4) Refatorar código repetido. Professor provoca: "O que está quebrado? Como você descobriu? Qual foi o bug mais ridículo? (aquele que estava na sua cara o tempo todo)."
40-45 Mostra de Debug O Festival dos Bugs 🎪 Cada grupo compartilha o bug mais ridículo que encontrou aquele que fez todo mundo rir (ou chorar). "Quem achou o bug mais absurdo? Quem teve o erro mais 'carinha de humilhação'?"
45-48 Check-in de Resiliência 💪 "Cada bug corrigido é um nível ganho. Debug é sobre resiliência sobre não desistir quando as coisas não funcionam. E vocês passaram no teste. Vocês são caçadores de bugs."
48-50 Fechamento + Provocação 🚀 "Na semana que vem: LANÇAMENTO OFICIAL o mundo vai ver (e chorar). Preparem seus pitches, suas demonstrações, e suas caras de 'eu sei o que estou fazendo' mesmo que o código esteja segurando com fita adesiva."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Use leitores de tela para narrar as mensagens de erro; descreva as mensagens de erro verbalmente; use fontes grandes (mínimo 20px) e alto contraste no editor.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito passo a passo; use mensagens de console visíveis e bem formatadas.
Deficiência Motora Permita respostas verbais; use grupos com papéis definidos; utilize editores com suporte a teclado e auto-complete para reduzir digitação.
TDAH Divida em sprints de 10 minutos com intervalos de 2 minutos; use cronômetros visuais gigantes; checklist física com etapas claras.
TEA Envie as instruções com antecedência (24h); use perguntas estruturadas e previsíveis; mantenha ambiente calmo e com poucos estímulos.
Altas Habilidades Desafio extra: "Crie um sistema de testes automatizados para seu projeto funções que testam outras funções automaticamente."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Identificação de Bugs Encontrou e documentou pelo menos 3 bugs no projeto (com descrição do problema). 0-3
Correção de Bugs Corrigiu os bugs de forma correta e funcional (o código passou a funcionar como esperado). 0-3
Uso do Console Utilizou console.log() ou outras ferramentas de debug (console.table, console.group, debugger) de forma estratégica. 0-2
Refatoração Melhorou a legibilidade do código (renomeou variáveis, organizou funções, removeu código morto). 0-2
Total 0-10

🎯 Título

"Lançamento Oficial: O Mundo Vai Ver (e Chorar)" Ou: como apresentar sua revolução para o mundo (e sobreviver às perguntas e sair de cabeça erguida, mesmo se o código pifar na hora). Chegou o dia. O dia em que todo o suor, lágrimas, noites em claro e bugs corrigidos se transformam em algo que o mundo pode ver, tocar e (com sorte) usar. Hoje vocês não são mais alunos. Hoje vocês são fundadores, criadores, revolucionários digitais. O palco é de vocês.

🎯 Objetivos Operacionais

  • Apresentar o projeto final para a turma e convidados em um formato de Shark Tank / Demo Day. Vocês venderão sua ideia como se o futuro do mundo dependesse disso porque, de certa forma, depende.
  • Demonstrar o protótipo em ação ao vivo sem rede de segurança, sem edição, sem "deixa eu tentar de novo". Mostrar o projeto funcionando (ou lidar com graça se ele não funcionar). A vida real não tem ctrl+z.
  • Refletir sobre o processo de aprendizagem o que aprenderam, o que foi difícil, o que mudou. A jornada é tão importante quanto o destino.
  • Celebrar as conquistas do bimestre e reconhecer o esforço de cada um. Vocês construíram algo do zero. Isso merece ser celebrado.
  • Bônus: entender que o fim é só o começo de algo maior. O RCP-PR enfatiza a habilidade de "comunicar e compartilhar soluções computacionais, considerando diferentes públicos e contextos" (EM13CO08). Hoje vocês vão fazer exatamente isso.

📚 Conteúdo Programático

  • 1. Pitch Como apresentar um projeto de forma convincente em 3 minutos. A arte de vender uma ideia.
  • 2. Demonstração ao Vivo Mostrar o projeto funcionando (e lidar com imprevistos). É aqui que o código encontra o mundo real.
  • 3. Perguntas e Respostas Como responder à banca com confiança. Não saber tudo é OK saber como lidar com isso é o que importa.
  • 4. Autoavaliação Refletir sobre o que aprendeu e como cresceu. A nota que você dá a si mesmo vale mais do que qualquer nota de professor.
  • 5. Celebração Reconhecer o esforço e a evolução de cada um. Vocês merecem.
  • 6. Cultura Digital e Protagonismo Refletir sobre o papel de cada um como criador digital. O RCP-PR destaca que a Cultura Digital envolve "o protagonismo e a autoria na vida pessoal e coletiva". Hoje vocês são protagonistas.

🧩 Pilares do Pensamento Computacional trabalhados na aula

Pilar Aplicação na aula
Todos os Pilares A apresentação integrada exige que os alunos demonstrem compreensão de todos os pilares abstração (explicar o MVP), decomposição (explicar as partes do projeto), reconhecimento de padrões (justificar escolhas), algoritmos (explicar o fluxo).
Abstração O pitch exige abstrair o projeto em sua essência o que ele faz, por que importa, e como funciona sem se perder em detalhes técnicos desnecessários.
Algoritmos O fluxo da apresentação é um algoritmo: abertura → problema → solução → demo → fechamento → perguntas.

📜 Habilidades BNCC e RCP-PR

BNCC Matemática:

Código Habilidade
EM13MAT501 Comunicar ideias matemáticas de forma clara, precisa e contextualizada.

BNCC Linguagens:

Código Habilidade
EM13LP11 Apresentar e defender pontos de vista em situações de debate.

BNCC Computação (Complemento à BNCC):

Código Habilidade
EM13CO08 Comunicar e compartilhar soluções computacionais, considerando diferentes públicos e contextos.

RCP-PR (Referencial Curricular do Paraná, 2025):

O RCP-PR orienta o desenvolvimento da habilidade de "comunicar e compartilhar soluções computacionais" (EM13CO08). O eixo Cultura Digital é fortalecido quando os alunos reconhecem seu papel como protagonistas na criação digital. O RCP-PR destaca que a Educação Digital deve "promover o protagonismo e a autoria" e apresentar um projeto criado por vocês é a expressão máxima desse protagonismo.

"O RCP-PR propõe que a Educação Digital desenvolva a capacidade de usar a tecnologia para expressar ideias, resolver problemas e transformar a realidade."

💻 Código Comentado Preparação para o Pitch

// ================================================================
// SEMANA 10 LANÇAMENTO OFICIAL: O MUNDO VAI VER
// "O que importa não é o código. É a história que você tem para contar."
// ================================================================

console.log("🎤 Modo apresentação ativado. Preparem-se para brilhar.");

// ================================================================
// PASSO 1: PREPARAÇÃO PARA O PITCH O roteiro da apresentação
// ================================================================

const estruturaPitch = {
  abertura: "Olá, somos [NOME DO GRUPO] e criamos [NOME DO PROJETO].",
  problema: "O problema que identificamos foi [PROBLEMA REAL com dados e história].",
  solucao: "Nossa solução é [DESCRIÇÃO DA SOLUÇÃO o que faz e como funciona].",
  demonstracao: "Vamos demonstrar como funciona ao vivo.",
  impacto: "O impacto que queremos gerar é [IMPACTO DESEJADO quem vai mudar e como].",
  agradecimento: "Obrigado pela atenção. Estamos abertos a perguntas."
};

console.log("🎤 Estrutura do pitch carregada.");

// ================================================================
// PASSO 2: GUIAS DE APRESENTAÇÃO Dicas para os apresentadores
// ================================================================

const dicasApresentacao = {
  postura: "Fique em pé. Olhe para a plateia. Respire fundo. Você é o dono da sala.",
  voz: "Fale devagar. Projete a voz. Pausas são poderosas use-as para criar suspense.",
  demonstracao: "Mostre o projeto funcionando. Se algo der errado, respire e continue. O imprevisto faz parte do show.",
  perguntas: "Escute a pergunta completa. Pense antes de responder. Não invente se não souber diga 'não sei, mas vou descobrir'.",
  tempo: "3 minutos é pouco. Seja direto. Corte o que não é essencial. O tempo é seu inimigo vença-o.",
  paixao: "Mostre que você se importa. Paixão é contagiante. Se você não acredita no seu projeto, ninguém vai acreditar."
};

console.table(dicasApresentacao);

// ================================================================
// PASSO 3: AUTOAVALIAÇÃO Refletindo sobre o processo
// ================================================================

function autoavaliacao() {
  console.log("\n📝 AUTOAVALIAÇÃO DO BIMESTRE");
  console.log("==============================");
  const perguntas = [
    "1. O que você aprendeu neste bimestre que não sabia antes?",
    "2. Qual foi o maior desafio que você enfrentou?",
    "3. Como você superou esse desafio?",
    "4. O que você faria diferente se pudesse começar de novo?",
    "5. Qual parte do projeto você mais se orgulha?",
    "6. Como você se sente agora em relação à programação?",
    "7. O que você vai levar deste projeto para sua vida?",
    "8. Você se vê fazendo algo assim no futuro?"
  ];
  perguntas.forEach(pergunta => {
    console.log(`\n${pergunta}`);
    console.log("Resposta: [ESCREVA AQUI SUA REFLEXÃO]");
    console.log("-".repeat(50));
  });
  console.log("\n📊 Nota para si mesmo (0-10): [____]");
  console.log("Justificativa da nota: [ESCREVA AQUI]");
}

// ================================================================
// PASSO 4: A GRANDE ESTREIA Roteiro da apresentação
// ================================================================

function roteiroApresentacao() {
  console.log("\n🎬 ROTEIRO DA APRESENTAÇÃO");
  console.log("==========================");
  console.log("\n🔹 ABERTURA (30 segundos)");
  console.log("- Cumprimente a plateia");
  console.log("- Apresente seu grupo");
  console.log("- Diga o nome do projeto");
  console.log("- Faça uma pergunta que prende a atenção (um gancho emocional)");
  console.log("\n🔹 O PROBLEMA (30 segundos)");
  console.log("- Qual problema vocês identificaram?");
  console.log("- Por que esse problema é importante? (use dados, histórias)");
  console.log("- Quem ele afeta? (público-alvo específico)");
  console.log("\n🔹 A SOLUÇÃO (30 segundos)");
  console.log("- O que vocês criaram? (descrição simples)");
  console.log("- Como funciona? (explicação em alto nível)");
  console.log("- Quais tecnologias usaram? (HTML, CSS, JS)");
  console.log("\n🔹 DEMONSTRAÇÃO (60 segundos) O MOMENTO DA VERDADE");
  console.log("- Mostre o projeto funcionando AO VIVO");
  console.log("- Destaque as funcionalidades principais");
  console.log("- Mostre um caso de uso real");
  console.log("- SE DER ERRADO: respire, continue, mostre que você sabe lidar");
  console.log("\n🔹 IMPACTO E APRENDIZADO (30 segundos)");
  console.log("- Qual o impacto esperado? (na escola, na comunidade, na vida das pessoas)");
  console.log("- O que vocês aprenderam com o processo?");
  console.log("- Como isso mudou vocês?");
  console.log("\n🔹 FECHAMENTO (30 segundos)");
  console.log("- Recapitule os pontos principais");
  console.log("- Agradeça a atenção");
  console.log("- Abra para perguntas (e NÃO diga 'perguntas? aceite-as como parte do show)");
  console.log("\n⏱️ TOTAL: 3 MINUTOS");
  console.log("⚠️ ENSAIE! TREINE! O ensaio é o que separa o profissional do amador.");
}

// ================================================================
// PASSO 5: PERGUNTAS FREQUENTES Prepare-se para a banca
// ================================================================

const perguntasFrequentes = [
  {
    pergunta: "Por que vocês escolheram esse problema?",
    dica: "Fale sobre a relevância e o impacto real do problema. Conte a história que motivou vocês."
  },
  {
    pergunta: "Qual foi a maior dificuldade técnica?",
    dica: "Seja honesto. Mostre que vocês aprenderam com os desafios. A jornada é mais interessante que o destino."
  },
  {
    pergunta: "O que vocês fariam diferente?",
    dica: "Reflita sobre o processo. Ninguém é perfeito. O importante é aprender e melhorar."
  },
  {
    pergunta: "Como isso pode ser usado na prática?",
    dica: "Dê um exemplo concreto. Mostre que vocês pensaram no usuário final."
  },
  {
    pergunta: "O que vocês mais aprenderam com o projeto?",
    dica: "Conte uma história. Aprendizado é mais interessante que código. Mostre crescimento."
  },
  {
    pergunta: "Se tivessem mais tempo, o que adicionariam?",
    dica: "Mostre que vocês têm visão de futuro. Um projeto nunca está 100% pronto e isso é OK."
  }
];

console.log("\n❓ Prepare-se para as perguntas:");
perguntasFrequentes.forEach(p => {
  console.log(`\nP: ${p.pergunta}`);
  console.log(`Dica: ${p.dica}`);
});

// ================================================================
// PASSO 6: CELEBRAÇÃO Reconhecendo a jornada
// ================================================================

function celebrar() {
  console.log("\n🎉🎊 PARABÉNS! 🎊🎉");
  console.log("=".repeat(50));
  console.log("\nVocês chegaram ao fim de uma jornada incrível!");
  console.log("Não importa se o código tem bugs.");
  console.log("Não importa se o design não ficou perfeito.");
  console.log("O que importa é que VOCÊS FIZERAM.");
  console.log("\nVocês construíram algo do zero.");
  console.log("Vocês aprenderam HTML, CSS e JavaScript.");
  console.log("Vocês planejaram, executaram, erraram e aprenderam.");
  console.log("Vocês são programadores. E programadores mudam o mundo.");
  console.log("\n🚀 O mundo digital nunca mais será o mesmo.");
  console.log("E vocês nunca mais serão os mesmos.");
  console.log("\nA revolução foi codificada.");
  console.log("E vocês foram os criadores.");
  console.log("\n" + "=".repeat(50));
  console.log("🏁 FIM DA JORNADA MAS A REVOLUÇÃO CONTINUA.");
}

console.log("🎤 Apresentação carregada. Pronto para brilhar.");

// ================================================================
// BÔNUS: A frase que você vai ouvir no futuro
// ================================================================

const frasesDoFuturo = [
  "Lembra quando a gente não sabia nem o que era HTML?",
  "Eu nunca imaginei que seria capaz de fazer isso.",
  "O que a gente aprendeu nesse bimestre mudou minha vida.",
  "Eu quero fazer mais projetos assim.",
  "Programar é muito mais legal do que eu pensava.",
  "Eu vou levar isso para a faculdade.",
  "A gente construiu isso. A GENTE."
];

console.log("\n💬 Frases que vocês vão ouvir nos próximos anos:");
frasesDoFuturo.forEach((frase, i) => {
  console.log(`${i + 1}. "${frase}"`);
});

⏱️ Detalhamento Minuto a Minuto (50 min) Sessão de Apresentações

Minuto Atividade Descrição
0-5 Abertura Épica 🎬 Trilha sonora épica tocando. Professor entra com energia de palco: "Hoje é o dia. O dia em que vocês mostram ao mundo o que construíram. Vocês passaram 9 semanas planejando, codificando, errando, aprendendo. Hoje, vocês não são mais alunos. Hoje vocês são FUNDADORES. Criadores. Revolucionários. O palco é de vocês. O mundo está assistindo."
5-10 Preparação Final O Último Suspiro ⏳ Últimos ajustes. Nervosismo e empolgação no ar. Professor circula: "Respirem fundo. Olhem um para o outro. Vocês chegaram até aqui. Isso já é uma vitória."
10-35 Apresentações Shark Tank Digital 🎤 Cada grupo tem 3 minutos para o pitch + 2 minutos de perguntas da banca (professor + colegas). Ordem sorteada. Banca com critérios claros (veja abaixo). "Mostrem o projeto, contem a história, mostrem paixão. E lembrem-se: se o código pifar, continuem como se nada tivesse acontecido é a vida real."
35-40 Feedback Coletivo O Que Aprendemos 🗣️ "Quais projetos mais chamaram atenção? O que foi inspirador? O que vocês levarão para a vida?" Discussão guiada pelo professor.
40-43 Votação e Premiação 🏆 Categorias especiais: 🏆 Mais Criativo, 🧠 Mais Técnico (código mais elegante), 🎨 Mais Bonito (design), 🤯 Mais Impactante (problema mais relevante), ❤️ Mais Empático (foco no usuário), 🔥 Mais Revolucionário (escolha do professor).
43-46 Autoavaliação 📝 Cada aluno preenche a ficha de autoavaliação em silêncio. "A nota mais importante é a que você dá para si mesmo. Seja honesto, seja gentil consigo mesmo."
46-48 Check-in Emocional O Último Suspiro 😭 "Como vocês se sentem agora? Como era o 'você' de 10 semanas atrás? Como é o 'você' de hoje?"
48-50 Fechamento Emocional O Discurso Final 🚀 Professor faz um discurso de encerramento: "Vocês não são mais usuários. Vocês são CRIADORES. Vocês codificaram a revolução. E o mundo nunca mais será o mesmo porque vocês estarão lá para mudá-lo. Eu estou orgulhoso. Muito orgulhoso."

♿ Orientações para Adaptações e Inclusão Exemplos Práticos

Público Adaptações Sugeridas
Deficiência Visual Descreva os projetos verbalmente; permita apresentações em áudio; use descrições detalhadas das telas; permita que o grupo descreva o que está acontecendo na demo.
Deficiência Auditiva Use feedback visual; disponibilize roteiro escrito da apresentação; permita apresentações com slides escritos; use legendas em tempo real se possível.
Deficiência Motora Permita pausas durante a demonstração; use ferramentas com suporte a teclado; permita que outro membro do grupo opere o computador se necessário.
TDAH Use cronômetros visuais gigantes; divida a apresentação em blocos curtos; checklist física para cada etapa; permita movimentação durante a apresentação.
TEA Use roteiros sociais com antecedência; mantenha ambiente calmo (luzes suaves, pouco barulho); use perguntas estruturadas e previsíveis.
Altas Habilidades Desafio extra: "Apresente uma versão estendida do projeto para um público diferente ou proponha um plano de negócios completo."

📊 Critérios Operacionais de Avaliação com pontuação

Critério Descrição Pontuação
Clareza da Apresentação Explicou o projeto de forma clara, organizada e envolvente a plateia entendeu o que foi apresentado. 0-2
Demonstração Funcional O projeto foi demonstrado ao vivo e funcionou (ou lidou bem com imprevistos com graça e profissionalismo). 0-2
Storytelling Contou uma história envolvente (contexto → desafios → solução → impacto). Fez a plateia se importar. 0-2
Justificativa Explicou as escolhas técnicas e de design de forma coerente (por que usaram o que usaram). 0-1
Trabalho em Equipe Todos os membros participaram ativamente da apresentação (não foi só um falando). 0-1
Respostas às Perguntas Respondeu com segurança, conhecimento e humildade "não sei" é uma resposta válida se acompanhada de "mas vou descobrir". 0-1
Autoavaliação Refletiu criticamente sobre o próprio aprendizado e crescimento. 0-1
Total 0-10

🏆 Categorias Especiais de Premiação

Categoria Critério
🏆 Mais Criativo Projeto com a ideia mais original e inovadora.
🧠 Mais Técnico Código mais elegante, bem organizado e com boas práticas.
🎨 Mais Bonito Melhor design visual e experiência do usuário.
🤯 Mais Impactante Projeto que aborda o problema mais relevante e urgente.
❤️ Mais Empático Projeto que melhor considera as necessidades do usuário final.
🔥 Mais Revolucionário Escolha do professor o projeto que mais se destacou.

ORIENTAÇÕES PARA ADAPTAÇÕES E INCLUSÃO EXEMPLOS PRÁTICOS

"Se a pessoa precisa se encaixar no seu projeto, o problema não é a pessoa: é a caixa que você chamou de solução."

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 (BIMESTRE COMPLETO)

Critério Excelente (10) Bom (7) Regular (5) Insuficiente (3)
Compreensão do Problema Identificou e analisou profundamente o problema da Cultura Digital, com dados e exemplos concretos. Identificou o problema, mas com análise superficial. Identificou o problema de forma vaga. Não identificou ou compreendeu o problema.
Aplicação dos Pilares do PC Aplicou os 4 pilares de forma criativa e eficaz, com justificativas claras em cada etapa. Aplicou a maioria dos pilares corretamente. Aplicou alguns pilares, mas com falhas. Não aplicou os pilares ou aplicou incorretamente.
Desenvolvimento do Protótipo 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)

"Não são mais só cliques. São construtores do amanhã. Usem o poder com cérebro, com deboche e com muito café. O resto é interface, e interface não segura o rojão." 🚀