Aulas de Python

Apresentação

Para o desenvolvimento das aulas de programação, busca-se focar em uma linguagem mais simples e apresentar às alunas os principais conceitos de lógica de programação, mas fazendo de tal modo para essas alunas não se sintam desmotivadas pela complexidade inicial de um código. Por conta de sua simplicidade e a experiência do IntroComp em ensinar programação para adolescentes, Python foi a linguagem escolhida para as aulas, já que a linguagem é mais baseada apenas na lógica, sem uma sintaxe muito complicada.

Materiais Usados

Para as aulas utilizamos um conjunto de materiais:

(1) Google Meet: todas as aulas síncronas aconteciam em salas de aula virtuais do Meet, sempre no mesmo horário e mesmo link, duas vezes na semana. Nessas aulas eram explicados os conteúdos para as alunas, que podiam tirar dúvidas sobre a matéria e pedir exemplos, e também eram resolvidos uma série de exercícios sobre o conteúdo que elas estavam aprendendo na semana.

(2) Google Colab: o Google Colaboratory, ou Google Colab, é uma extensão da Google que permite unir em um mesmo arquivo células de texto e células executáveis de código. Dessa forma as alunas tinham acesso a um arquivo (que chamávamos de “notebook”) com todos os conteúdos ensinados nas aulas, com explicações e exemplos. Esses notebooks foram fornecidos pela equipe do projeto de extensão Introcomp, da UFES, que tem como objetivo ensinar Python para alunos do ensino médio;

(3) Replit: usamos também o site (replit), uma IDE online na qual as alunas podiam programar de modo fácil e intuitivo, sem a necessidade de baixar e instalar programas em seus computadores. No replit as alunas apenas precisavam criar uma conta no site e já poderiam usar para escrever, compilar e executar seus códigos.

(4) Run Codes: também utilizamos o site (run.codes), uma plataforma de correção automática de programas. Nesse site eram disponibilizados os exercícios que as alunas deveriam fazer durante a semana; quando concluíssem, elas deviam submeter o arquivo com o código no site e seriam rodados uma série de testes em cima do código, respondendo para a aluna de forma rápida se sua resolução estava correta ou não.

Com o uso de todos os materiais acima descritos, foi possível desenvolver um projeto interessante e proveitoso e também observar o progresso semanal das alunas a cada vez que aprendiam um novo tópico ou uma nova funcionalidade da linguagem python, ou quando concluíam um novo exercício dentre os propostos no site.

Diário De Aulas

São ao todo um total de 10 aulas, de aproximadamente 1 hora e 30 minutos cada, que ocorrem duas vezes por semana em dias e horários fixos.

Aula 1

A primeira aula aborda a introdução da programação, falando sobre conceitos básicos de lógica e algoritmos. Essa aula foi adaptada do notebook 01 do projeto de extensão Introcomp, e incluiu os tópicos:

  1. O que são algoritmos;
  2. Entrada e saída de dados;
  3. O que são expressões aritméticas e como utilizá-las na programação;
  4. O que são variáveis;
  5. O que são estruturas de fluxo em algoritmos;
  6. O que são linguagens de programação e quais são as mais usadas;
  7. Quais as principais plataformas de programação.

Durante a aula também é apresentado para as alunas os materiais que elas usariam durante o curso.

EF07MA15 EF05MA07 EM13MAT321 EM13MAT315

Aula 2

A segunda aula apresentou conteúdos mais específicos da linguagem que seria ensinada, Python. Essa aula foi adaptada do notebook 02 do projeto de extensão Introcomp e abordou os seguintes temas:

  1. O que é um programa?
  2. Como surgiu e como funciona a linguagem Python;
  3. Uso de variáveis em Python;
  4. Como atribuir valores à variáveis;
  5. Tipos de dados: o que são e quais tipos existem;
    • Tipo int: lida com números inteiros;
    • Tipo float: lida com números reais;
    • Tipo str: lida com strings (textos, palavras, caracteres, etc);
    • Tipo bool: lida com valores booleanos (verdadeiro/falso);
  6. O que são strings: como criá-las e manipulá-las dentro de um programa.

Durante a aula são feitos diversos exemplos de cada tópico acima, mostrando na teoria e na prática como cada um desses conteúdos são usados na construção de um programa.

EF07MA03 EF07MA15 EM13MAT405 EM13MAT321

Aula 3

Na terceira aula, são revisados os conteúdos ensinados nas aulas anteriores (tipos de dados, manipulação de strings, entrada e saída de dados - função print() - e uso de variáveis), e também seguimos o conteúdo do curso. Essa aula foi adaptada do notebook 02 do projeto Introcomp e abordou os tópicos a seguir:

  1. Operações aritméticas com números (soma, subtração, multiplicação, divisão e resto);
  2. Uso da biblioteca Math: como importar para seu código e quando usar;
  3. Saída de dados: formas de formatação de dados e a função format;
  4. Entrada de dados: função input e como converter seus dados de entrada para valores do tipo float ou int;
  5. Uso de operadores lógicos: o que são expressões lógicas, uso de valores booleanos e quais são os operadores mais usados.

Essa aula é acompanhada da realização de vários exemplos e exercícios, pois se trata de uma aula com muitos conceitos que podem ser cansativos para as alunas acompanharem caso elas não consigam ver com clareza o uso de cada um deles. É fortemente recomendado que o professor faça muitas perguntas e resolva muitos exercícios durante a aula para manter a atenção das alunas.

Também é disponibilizado uma playlist do canal no Youtube do projeto de extensão Introcomp, com vídeos de resolução dos exercícios da semana (incluindo conteúdos mostrados nas aulas 02 e 03) caso encontrem dificuldade na hora de fazê-los.

EF09MA04 EM13MAT301 EM13MAT321

Aula 4

Nesta aula são abordados conteúdos de lógica relacional, e revisados os conteúdos apresentados nas aulas anteriores. Essa aula foi adaptada do notebook 03 do projeto Introcomp e trata dos seguintes temas:

  1. Lógica relacional: comparação de valores e a saída booleana;
  2. Operadores lógicos: ‘maior que’, ‘menor que’;
  3. Operadores lógicos: ‘igual a’, diferença entre (=) e (==), ‘maior ou igual que’, ‘menor ou igual que’;
  4. Operadores lógicos: ‘diferente de’;
  5. Comparações entre strings: diferença entre letras maiúsculas e minúsculas;
  6. Comparações entre tipos distintos.

Nessa aula é recomendável fazer vários exemplos de comparações usando os diferentes tipos de operadores lógicos, explicando por que a saída é um valor booleano e como isso pode ser útil para a criação de códigos mais complexos.

A videoaula desse assunto esta junto com a aula 5, no proximo tópico estará o link para o vídeo no youtube.

EM13MAT101 EM13MAT301 EM13MAT321

Aula 5

Esta aula é uma continuação da anterior, revisando os conteúdos e abordando o assunto de Álgebra Booleana. Essa aula também é uma adaptação do notebook 03 do projeto Introcomp e trata dos assuntos abaixo:

  1. Álgebra booleana: o que é e para que usar;
  2. Operador OR: como e quando usar;
  3. Operador AND: como e quando usar;
  4. Operador NOT: como e quando usar;
  5. Combinando expressões com mais de um operador lógico;
  6. Uso de lógica booleana em strings: funções ‘isupper’, ‘islower’ e ‘isdecimal’.

Nessa aula é recomendável que o professor construa as tabelas-verdade de cada operador lógico para que os alunos possam visualizar com maior facilidade o funcionamento dos operadores. A realização de exemplos e exercícios também é muito importante para o entendimento desse conteúdo.

Também é disponibilizado uma playlist do canal no Youtube do projeto de extensão Introcomp, com vídeos de resolução dos exercícios da semana (incluindo conteúdos mostrados nas aulas 04 e 05) caso encontrem dificuldade na hora de fazê-los.

EM13MAT405 EM13MAT301 EM13MAT321

Aula 6

Nesta aula apresenta-se um conceito extremamente útil para a construção de programas, que são as estruturas condicionais, que podem alterar o fluxo de execução de um código de programação. Essa aula foi adaptada do notebook 04 do projeto Introcomp e inclui os assuntos:

  1. Revisar os operadores condicionais (OR, AND e NOT, maior que, menor que, igual a, diferente de…): o resultado booleano das comparações usando esses operadores serão muito usadas nas estruturas condicionais;
  2. Operador if: o que faz, como e quando usar;
  3. Operador else: o que faz, como e quando usar;
  4. Operador elif: o que faz, como e quando usar.

Sugerimos que sejam feitos muitos exemplos do uso de cada um dos operadores, para que o aluno compreenda quando usar e a diferença entre eles.

A video aula deste assunto também está junto com a próxima aula.

EM13MAT405 EM13MAT301 EM13MAT321

Aula 7

Nesta aula apresenta-se um conceito também muito importante e útil para a programação, que são as estruturas de repetição, que também alteram o fluxo de execução de um programa. Essa aula também foi adaptada do notebook 04 do projeto Introcomp e inclui os assuntos:

  1. Laços de repetição: o que são e para que servem;
  2. O que é uma condição de parada e como são úteis para criar uma estrutura de repetição;
  3. O que são contadores e como são úteis para criar uma estrutura de repetição;
  4. Operador While: como e quando usar.

Nessa aula também sugerimos que sejam feitos muitos exemplos de uso da estrutura de repetição while, para que os alunos consigam compreender como funciona o fluxo de execução de um programa que possui esse laço, e, principalmente, a importância de adicionar uma condição de parada, para que não se crie acidentalmente uma estrutura de repetição com iterações infinitas.

Também é disponibilizado uma playlist do canal no Youtube do projeto de extensão Introcomp, com vídeos de resolução dos exercícios da semana (incluindo conteúdos mostrados nas aulas 06 e 07) caso encontrem dificuldade na hora de fazê-los.

EM13MAT301 EM13MAT321

Aula 8

Nesta aula, é apresentado um conceito muito interessante e importante da programação, que é o conceito de Listas, uma estrutura capaz de agrupar valores em um só vetor na memória, trazendo inúmeras facilidades para o dia-a-dia da programação. Essa aula foi adaptada do notebook 05 do projeto de extensão Introcomp e inclui os assuntos a seguir:

  1. Listas: o que são, como funcionam e como são criadas;
  2. Operador in;
  3. Sublistas ou fatias: o que são;
  4. Fatias com passo definido;
  5. Fatias com índice negativo;
  6. Como calcular o tamanho de uma lista: uso da função len;
  7. Como contar a quantidade de aparições de um item em uma lista: uso da função count;
  8. Como calcular o menor e o maior item de uma lista: uso das funções max e min;
  9. Como adicionar e remover itens de uma lista: uso das funções append, pop e remove;
  10. Como copiar itens de uma lista para outra: uso da função copy;
  11. Como ordenar itens em uma lista: uso da função sort;
  12. Revisitando o conceito de strings: o que elas são de verdade?
  13. O que é um caractere?
  14. Uso das funções aprendidas para manipular strings;
  15. Acesso a caracteres específicos de uma string e como fatiar uma string.

Como é possível ver, essa é uma aula bastante densa e complexa; portanto, é importante que o educador se preocupe em manter a atenção dos alunos durante as explicações. Durante essa aula, é recomendável pedir para que as alunas ajudem a fazer os exemplos e exercícios sobre o conteúdo para ter certeza de que estavam realmente compreendendo o uso de cada uma das funções.

Foi preparado um material escrito contendo todas as funções passadas na aula, a estrutura de escrita do código delas, quando e onde usar, para que tenham à mão um material bem resumido e direto do que tinham aprendido durante a aula. Segue abaixo o .pdf desse material:

EF08LI07 EM13MAT301 EM13MAT321

Aula 9

Nesta aula, volta-se ao conteúdo de estruturas de repetição, mostrando às alunas uma nova estrutura que agrega conteúdos de listas em sua gramática: o loop for. Essa aula também foi adaptada do notebook 05 do projeto de extensão Introcomp e inclui os assuntos a seguir:

  1. O que é iteração?
  2. A palavra-chave for: o que é e como podemos usá-la junto com listas;
  3. A função range: o que é e quais são seus principais usos;
  4. Como combinar for e range em uma junção perfeita;
  5. O que é um contador e como criar condições de parada efetivas;
  6. Desvios de fluxo: como usar e como são úteis dentro de loops;
  7. Loops aninhados: podemos criar loops dentro de outros loops?

Essa aula volta um pouco nas estruturas de repetição, porém traz para dentro dessas estruturas os conceitos vistos na aula anterior, apresentando uma forma mais eficiente e útil de criar estruturas de repetição, estruturas que percorrem todos os itens de uma lista, estruturas que tenham uma quantidade de iterações pré-definida pelo programador. Tudo isso será de fundamental importância para programadores na criação de códigos mais complexos.

Também é disponibilizado uma playlist do canal no Youtube do projeto de extensão Introcomp, com vídeos de resolução dos exercícios da semana (incluindo conteúdos mostrados nas aulas 08 e 09) caso encontrem dificuldade na hora de fazê-los.

EM13MAT102 EM13MAT301 EM13MAT321

Aula 10

Nesta aula, que foi adaptada do notebook 06 do projeto de extensão Introcomp revisamos todos os conteúdos passados até agora, fazendo exercícios sobre os seguintes tópicos:

  1. Problemas matemáticos;
  2. Manipulação de strings;
  3. Problemas envolvendo estruturas condicionais e estruturas de repetição;
  4. Problemas envolvendo listas.

EM13MAT316 EM13MAT301 EM13MAT321