Recursos para professores e bibliotecários
Introdução à Programação em Python
Guia de condução para oficinas, bibliotecas e salas de aula
Este currículo foi escrito para o adulto que conduz o encontro: equipe de biblioteca tocando um clube de programação, um professor acrescentando uma unidade extra, uma pessoa voluntária em oficina ou um pai orientando um único estudante. Não é preciso ter formação em programação: cada aula diz o que falar e o que observar.
Antes de começar
- Para quem é
- 3º ao 6º ano, sem experiência necessária
- Duração
- 8 aulas, 50 a 60 minutos cada
O que os estudantes precisam
- Um computador, notebook ou Chromebook com um navegador moderno (Chrome, Edge, Safari ou Firefox).
- Uma conexão com a internet para abrir as páginas das aulas e carregar a área de treino de Python no navegador.
- Opcional: papel para planejar o código e fones de ouvido, se as aulas forem feitas individualmente.
Como conduzir uma sessão na biblioteca ou na sala de aula
- Abra a página da aula da semana e leiam juntos, em grupo, A ideia e o vocabulário.
- Demonstre o código inicial uma vez em uma tela compartilhada, executando para todo mundo ver a saída.
- Dê tempo para os estudantes executarem o código inicial sozinhos e tentarem o minidesafio.
- Circule enquanto eles trabalham, usando as perguntas sugeridas para checar o entendimento.
- Feche com o desafio de depuração e a pergunta de reflexão como discussão com a turma inteira.
- Reserve de 50 a 60 minutos. Se o tempo apertar, o minidesafio ou a reflexão podem ir para casa.
Como apoiar estudantes que nunca programaram
- Deixe claro que mensagens de erro são parte normal de programar, e não sinal de fracasso.
- Incentive a digitar as mudanças à mão em vez de copiar, para a sintaxe realmente fixar.
- Coloque quem está programando pela primeira vez em dupla, ou sente essa pessoa onde você possa acompanhar de perto.
- Leia o código em voz alta em português simples ("print mostra este texto na tela") para construir vocabulário.
- Deixe quem terminar antes tentar o desafio de aprofundamento em vez de esperar a turma.
Guia de condução aula por aula
Uma seção por semana. Cada uma foi escrita para você conduzir mesmo sem saber programar.
Semana 1
O que é Python?
Objetivo da aula
Os estudantes entendem que código é um conjunto de instruções em ordem e escrevem o primeiro programa usando print().
Materiais necessários
- Computadores ou tablets com um navegador
- A página da aula da Semana 1 aberta na área de treino
- Opcional: um quadro branco para escrever juntos exemplos de linhas print()
O que explicar
- Um programa é uma lista de instruções que o computador segue em ordem, de cima para baixo.
- print() mostra na tela exatamente o que está dentro das aspas.
- Todo print() precisa de parênteses, e o texto precisa de aspas em volta.
Erros comuns dos estudantes
- Esquecer as aspas em volta do texto, como print(Olá) em vez de print("Olá").
- Parênteses faltando ou desemparelhados.
- Esperar que o computador adivinhe o sentido: ele imprime exatamente o que foi digitado.
Perguntas para fazer
- O que você acha que esta linha vai imprimir antes de a gente executar?
- O que acontece se a gente trocar a ordem de duas linhas print?
- Por que o computador mostrou um erro nesta linha?
Extensão opcional
Acrescente uma linha em branco ao seu cartão escrevendo print() sem nada dentro dos parênteses. Use isso para dividir o cartão em duas partes organizadas.
Se houver poucos computadores
Brinquem de "instruções de robô": um estudante dá ao outro comandos falados, passo a passo, para desenhar uma forma simples. Passos faltando ou fora de ordem mostram o quanto os computadores seguem instruções ao pé da letra.
Semana 2
Variáveis e tipos de dados
Objetivo da aula
Os estudantes guardam informações em variáveis e as usam para montar frases com print().
Materiais necessários
- Computadores com navegador e a página da aula da Semana 2
- Opcional: envelopes etiquetados ou post-its para representar variáveis como caixas
O que explicar
- Uma variável é uma caixa com etiqueta que guarda um valor que dá para reutilizar.
- Valores de texto (strings) vão entre aspas; valores numéricos não.
- Uma f-string permite colocar uma variável dentro de uma frase usando chaves.
Erros comuns dos estudantes
- Colocar aspas em volta do nome de uma variável dentro de uma f-string, o que imprime o nome em vez do valor.
- Colocar aspas em números que deveriam continuar numéricos.
- Nomear variáveis de forma inconsistente, com espaços ou letras maiúsculas soltas.
Perguntas para fazer
- O que está guardado nesta variável agora?
- Quais desses valores são texto e quais são números?
- Como a gente poderia descrever outra pessoa sem reescrever cada linha?
Extensão opcional
Acrescente uma variável numérica chamada recorde e imprima uma frase que use nome e recorde, como: O melhor resultado do Alex é 25.
Se houver poucos computadores
Distribua envelopes etiquetados (nome, idade, animal favorito) e peça aos estudantes que coloquem um papelzinho dentro de cada um. Ler os envelopes em voz alta representa como uma variável guarda e reutiliza um valor.
Semana 3
Entrada e interação
Objetivo da aula
Os estudantes usam input() para coletar respostas e reagir a elas, transformando um programa em uma conversa de mão dupla.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 3
- Opcional: um roteiro impresso para a dramatização do chatbot sem computador
O que explicar
- input() faz uma pergunta e pausa até a pessoa digitar uma resposta e apertar Enter.
- A resposta pode ser guardada em uma variável e usada depois no programa.
- input() sempre devolve texto.
Erros comuns dos estudantes
- Esquecer as aspas em volta do texto da pergunta dentro de input().
- Esperar que o programa siga em frente antes de a pessoa apertar Enter.
- Tentar fazer conta com uma resposta sem convertê-la em número (isso vem na próxima semana).
Perguntas para fazer
- Onde o programa para e espera o usuário?
- Em que isso é diferente do programa da semana passada, que só imprimia?
- O que o programa deveria responder usando a resposta?
Extensão opcional
Pergunte o nome do jogador e o jogo favorito dele, depois imprima uma frase que use os dois, como: Alex está pronto para jogar futebol!
Se houver poucos computadores
Façam uma dramatização de chatbot: um estudante é o programa e só pode responder usando um roteiro impresso mais as respostas que o usuário der. Isso mostra como a entrada alimenta a resposta.
Semana 4
Condicionais
Objetivo da aula
Os estudantes usam if, elif e else para o programa fazer coisas diferentes conforme a resposta.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 4
- Opcional: um quadro branco ou espaço no chão para desenhar ou percorrer uma árvore de decisão
O que explicar
- Uma condição é uma pergunta que é verdadeira ou falsa.
- O código indentado embaixo de um if só roda quando a condição dele é verdadeira.
- elif e else cuidam dos outros casos.
- Comparar valores usa dois sinais de igual (==); um sinal de igual (=) guarda um valor.
Erros comuns dos estudantes
- Usar = em vez de == ao comparar dois valores.
- Esquecer de indentar o código embaixo de if, elif ou else.
- Esquecer que comparações de texto diferenciam maiúsculas ("Terra" não é "terra").
Perguntas para fazer
- Qual condição a gente está checando aqui?
- Qual ramo vai rodar se a resposta for esta?
- Por que o programa escolheu aquela resposta?
Extensão opcional
Transforme em um teste de personalidade: faça uma pergunta do tipo "o que você prefere" e imprima um resultado diferente para cada escolha usando if, elif e else.
Se houver poucos computadores
Montem uma árvore de decisão no chão com fita ou placas: os estudantes respondem a uma pergunta de sim ou não e caminham até o ramo correspondente. Isso torna o if/elif/else visível.
Semana 5
Laços
Objetivo da aula
Os estudantes usam um laço while para repetir ações e dar ao jogador mais de uma tentativa.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 5
- Opcional: papel para o jogo de adivinhação maior/menor sem computador
O que explicar
- Um laço repete o código para você não ter que reescrever.
- Um laço while continua enquanto a condição dele se mantiver verdadeira.
- Alguma coisa dentro do laço precisa, em algum momento, tornar a condição falsa, senão ele roda para sempre.
- int() transforma o texto digitado em número para dar para comparar.
Erros comuns dos estudantes
- Escrever um laço cuja condição nunca fica falsa (um laço infinito).
- Esquecer o int(), então um "7" digitado nunca é igual ao número 7 e o laço nunca acaba.
- Esquecer os dois-pontos no fim da linha do while.
Perguntas para fazer
- O que precisa acontecer para este laço parar?
- O que muda a cada volta do laço?
- Por que este laço poderia rodar para sempre, e como a gente consertaria?
Extensão opcional
Mude o intervalo para 1 a 100 e dê ao jogador apenas 7 tentativas. Pare o laço e imprima Acabaram as tentativas! se elas se esgotarem.
Se houver poucos computadores
Joguem um jogo de adivinhação no papel: um estudante pensa em um número de 1 a 10 enquanto o outro chuta e ouve "maior" ou "menor". Contar os chutes representa o laço e a comparação.
Semana 6
Funções
Objetivo da aula
Os estudantes definem e chamam funções para reutilizar código e manter os programas organizados.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 6
- Opcional: um cartão de receita impresso para representar uma função reutilizável
O que explicar
- Uma função é uma receita reutilizável: defina uma vez e depois chame sempre que precisar.
- def cria uma função; escrever o nome dela com parênteses a chama.
- Um parâmetro é uma entrada que a função aceita, listada dentro dos parênteses dela.
- Definir uma função não a executa; chamá-la sim.
Erros comuns dos estudantes
- Definir uma função e nunca chamá-la.
- Chamar uma função sem o argumento que ela exige.
- Esquecer os dois-pontos depois da linha do def, ou não indentar o corpo da função.
Perguntas para fazer
- O que esta função faz, e do que ela precisa para fazer o trabalho dela?
- Onde a função é definida, e onde ela é chamada?
- Como este programa ficaria se a gente não pudesse usar funções?
Extensão opcional
Escreva uma função proximo_nivel(nivel) que imprima uma linha como Você chegou ao nível 5! usando o número que você passar, e depois chame-a com alguns níveis diferentes.
Se houver poucos computadores
Escrevam uma receita simples (por exemplo, dobrar um aviãozinho de papel) como passos com nome, e depois "chamem" essa receita duas vezes com entradas diferentes, como papéis de cores diferentes. Isso mostra o definir-uma-vez, reutilizar-muitas.
Semana 7
Listas e aleatoriedade
Objetivo da aula
Os estudantes guardam muitos valores em uma lista e usam random.choice() para deixar os programas imprevisíveis.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 7
- Opcional: uma sacola ou tigela com papeizinhos para sortear
O que explicar
- Uma lista guarda muitos valores em uma variável só, escrita entre colchetes.
- import random traz a caixa de ferramentas do acaso.
- random.choice() escolhe um item da lista ao acaso, então cada execução pode ser diferente.
Erros comuns dos estudantes
- Esquecer o import random lá em cima ("random não está definido").
- Faltar vírgulas ou colchetes ao escrever uma lista.
- Esperar a mesma saída a cada execução e achar que a aleatoriedade é um bug.
Perguntas para fazer
- Quantos resultados diferentes este programa poderia produzir?
- O que faz cada execução ser diferente?
- O que a gente poderia acrescentar à lista para mudar o jogo?
Extensão opcional
Pergunte o nome do jogador com input() no começo e depois use esse nome na história aleatória, para a aventura parecer que é sobre ele.
Se houver poucos computadores
Coloquem vários papeizinhos com desfechos em uma sacola e peçam aos estudantes que sorteiem um para montar uma história aleatória em voz alta. Isso representa uma lista mais uma escolha aleatória.
Semana 8
Construtor do jogo final
Objetivo da aula
Os estudantes planejam e criam o próprio minijogo, combinando tudo do curso.
Materiais necessários
- Computadores com navegador e a página da aula da Semana 8
- Papel para planejar o jogo antes de programar
O que explicar
- Programas de verdade combinam muitas ideias pequenas que foram aprendidas separadamente.
- Comece com um plano curto por escrito, depois acrescente um recurso por vez e teste conforme avança.
- Um jogo pequeno que funciona vale mais que um ambicioso que não roda.
Erros comuns dos estudantes
- Tentar escrever o jogo inteiro de uma vez em vez de em passos pequenos e testados.
- Reintroduzir bugs antigos (dois-pontos faltando, = versus ==, esquecer o int()).
- Pular o plano e travar.
Perguntas para fazer
- Qual é a menor versão do seu jogo que já rodaria?
- Qual ideia de qual semana você vai usar aqui?
- Você bateu num erro: o que a mensagem está te dizendo?
Extensão opcional
Redesenhe o esqueleto no seu próprio jogo: uma rodada de perguntas, uma história com escolhas ou uma disputa por recorde. Use pelo menos uma lista, uma função e um laço.
Se houver poucos computadores
Peça aos estudantes que desenhem o jogo no papel primeiro: o objetivo, o que o jogador digita e o que o programa responde. Quem estiver sem computador ainda consegue concluir e apresentar o projeto.