Skip to content

Funções e ProcedimentosAtividades e Estratégias de Ensino

A aprendizagem ativa é especialmente eficaz neste tópico porque os alunos precisam de vivenciar a diferença entre passagem por valor e por referência através de manipulação prática de código. Ao trabalharem em equipa, os alunos experimentam diretamente como a modularização melhora a clareza e a manutenção do código.

12° AnoInovação Digital e Pensamento Computacional Avançado4 atividades20 min50 min

Objetivos de Aprendizagem

  1. 1Analisar como a modularização do código, através de funções e procedimentos, afeta a legibilidade e a facilidade de manutenção de um programa.
  2. 2Comparar a passagem de parâmetros por valor e por referência, explicando as implicações de cada método em diferentes cenários de programação.
  3. 3Criar funções e procedimentos com diferentes tipos de parâmetros para resolver problemas computacionais específicos.
  4. 4Explicar a importância da documentação de funções (docstrings) para a colaboração em equipa e a reutilização de código.
  5. 5Sintetizar o conceito de reutilização de código através da aplicação de funções e procedimentos em projetos de programação.

Pretende um plano de aula completo com estes objetivos? Gerar uma Missão

30 min·Pares

Pair Programming: Criar Função Modular

Os pares definem uma função para calcular estatísticas de uma lista, passando parâmetros por valor. Testam com dados variados e refatoram para incluir referência. Discutem melhorias na legibilidade.

Preparação e detalhes

Analise como a modularização do código melhora a sua manutenção e legibilidade.

Sugestão de Facilitação: Durante a Pair Programming, peça aos alunos que alternem entre o papel de condutor e observador a cada 10 minutos para garantir participação equitativa.

Setup: Disposição flexível para permitir a mudança de grupos

Materials: Textos de apoio para os grupos de especialistas, Guião para tomada de notas, Organizador gráfico para o resumo final

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão
45 min·Pequenos grupos

Small Groups: Refatorar Código Existente

Grupos recebem código monolítico e o dividem em funções e procedimentos documentados. Comparar versões antes/depois em termos de manutenção. Apresentam alterações à turma.

Preparação e detalhes

Compare a passagem de parâmetros por valor e por referência em diferentes contextos.

Sugestão de Facilitação: Na atividade de Refatorar Código Existente, forneça um código com pelo menos três funções não modularizadas para que os alunos pratiquem a divisão em blocos reutilizáveis.

Setup: Disposição flexível para permitir a mudança de grupos

Materials: Textos de apoio para os grupos de especialistas, Guião para tomada de notas, Organizador gráfico para o resumo final

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão
50 min·Turma inteira

Whole Class: Desafio de Colaboração

Turma constrói um programa coletivo: cada grupo cria uma função documentada e partilha. Integram num script principal, testando passagem por referência. Debatem erros comuns.

Preparação e detalhes

Explique a importância de documentar funções para facilitar a colaboração em equipa.

Sugestão de Facilitação: No Desafio de Colaboração, atribua funções com parâmetros por valor e por referência a diferentes grupos para que possam comparar resultados e discutir implicações.

Setup: Disposição flexível para permitir a mudança de grupos

Materials: Textos de apoio para os grupos de especialistas, Guião para tomada de notas, Organizador gráfico para o resumo final

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão
20 min·Individual

Individual: Documentar e Testar

Cada aluno documenta funções existentes e cria testes unitários. Partilham repositórios para revisão por pares, focando em legibilidade.

Preparação e detalhes

Analise como a modularização do código melhora a sua manutenção e legibilidade.

Sugestão de Facilitação: Na atividade Individual de Documentar e Testar, peça aos alunos que usem a ferramenta de comentários do editor de código para praticar formatação profissional.

Setup: Disposição flexível para permitir a mudança de grupos

Materials: Textos de apoio para os grupos de especialistas, Guião para tomada de notas, Organizador gráfico para o resumo final

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão

Ensinar Este Tópico

Ensine este tópico com foco em exemplos do mundo real, como manipulação de listas ou cálculo de médias, onde a passagem de parâmetros faz diferença visível. Evite começar com teoria abstrata; use analogias simples, como 'passar uma fotocópia (valor) vs. passar o original (referência)', mas não se prolongue nelas. Pesquisas mostram que alunos aprendem melhor quando manipulam código e observam resultados em tempo real, por isso privilegie a experimentação em detrimento de explicações longas.

O Que Esperar

Os alunos demonstram compreensão ao criar funções bem estruturadas, documentar parâmetros e justificar escolhas de design. Espera-se que colaborem eficazmente, identifiquem problemas de passagem de parâmetros e comuniquem soluções de forma clara.

Estas atividades são um ponto de partida. A missão completa é a experiência.

  • Guião completo de facilitação com falas do professor
  • Materiais imprimíveis para o aluno, prontos para a aula
  • Estratégias de diferenciação para cada tipo de aluno
Gerar uma Missão

Atenção a estes erros comuns

Erro comumDurante a Pair Programming: Criar Função Modular, alguns alunos podem assumir que funções e procedimentos são iguais por não terem ainda observado o retorno de valores.

O que ensinar em alternativa

Sugira que os pares criem uma função que calcula o máximo de dois números e devolva o resultado, e outro procedimento que apenas imprima o máximo. Peça-lhes que comparem os outputs e discutam quando usar cada um.

Erro comumDurante a Small Groups: Refatorar Código Existente, os alunos podem não notar a diferença entre passagem por valor e referência ao trabalharem com tipos simples como inteiros.

O que ensinar em alternativa

Inclua no código uma lista ou vetor e peça aos alunos que testem passar a estrutura por valor e por referência, observando mutações inesperadas e ajustando o código em conjunto.

Erro comumDurante o Whole Class: Desafio de Colaboração, os alunos podem subestimar a importância da documentação por acharem que o código é autoexplicativo.

O que ensinar em alternativa

Forneça dois exemplos de funções que realizam a mesma tarefa, um com documentação clara e outro sem. Peça aos grupos que discutam como cada versão facilita ou dificulta a colaboração e a manutenção futura.

Ideias de Avaliação

Bilhete de Saída

Após a atividade Individual: Documentar e Testar, entregue a cada aluno um pequeno trecho de código com uma função. Peça-lhes que completem: 1) Uma frase explicando o propósito da função. 2) Uma frase comparando passagem por valor e referência no contexto dessa função. 3) Uma sugestão de melhoria na documentação.

Questão para Discussão

Durante a Small Groups: Refatorar Código Existente, apresente dois exemplos de funções que realizam a mesma tarefa, uma bem documentada e outra não. Peça aos grupos que discutam qual é mais fácil de entender e reutilizar, e que tipo de informações adicionais seriam úteis.

Verificação Rápida

Durante a Pair Programming: Criar Função Modular, apresente um problema simples que pode ser resolvido com uma função. Peça aos alunos que, individualmente, escrevam o protótipo da função (nome, parâmetros, tipo de retorno) e uma breve descrição do seu propósito. Selecione alguns alunos para partilharem as suas respostas.

Extensões e Apoio

  • Challenge: Peça aos alunos que modifiquem uma função existente para aceitar um parâmetro opcional e documentem como isso afeta a reutilização do código.
  • Scaffolding: Para alunos que confundem passagem por valor e referência, forneça um código com listas e peça-lhes que prevejam e testem mutações antes de explicar a diferença.
  • Deeper: Proponha que os alunos criem uma pequena biblioteca de funções utilitárias para cálculos estatísticos e a documentem como se fosse para partilhar com a turma.

Vocabulário-Chave

FunçãoUm bloco de código nomeado que realiza uma tarefa específica e pode ser chamado (invocado) a partir de outras partes do programa. Funções podem retornar um valor.
ProcedimentoSemelhante a uma função, mas tipicamente não retorna um valor. É usado para executar uma sequência de ações. Em algumas linguagens, funções e procedimentos são tratados de forma unificada.
ModularizaçãoO processo de dividir um programa de computador em partes menores e independentes (módulos), como funções ou procedimentos, para melhorar a organização, a legibilidade e a manutenção.
Passagem por ValorUm método de passar argumentos para uma função onde uma cópia do valor do argumento é passada. Alterações ao parâmetro dentro da função não afetam a variável original.
Passagem por ReferênciaUm método de passar argumentos para uma função onde um ponteiro ou referência para a variável original é passada. Alterações ao parâmetro dentro da função afetam a variável original.
DocstringUma cadeia de caracteres usada para documentar funções, classes, módulos ou métodos. Explica o propósito, os parâmetros e o que a função retorna, facilitando a compreensão e o uso.

Preparado para lecionar Funções e Procedimentos?

Gere uma missão completa com tudo o que precisa

Gerar uma Missão