Introdução à programação
com Python em um contexto visual


Material didático para usar com Thonny IDE e py5

Elementos fundamentais

  • 0.0.0

    0.0.0 O que é e como instalar o py5 e o Thonny IDE

  • 0.0.1

    0.0.1 Sumário traduzido da referência do py5

  • Primeiros passos

  • 1.0.0

    1.0.0 Primeiros passos e desenho básico

  • 1.0.1

    1.0.1 Variáveis

  • 1.0.2

    1.0.2 Desenhando polígonos

  • 1.0.3

    1.0.3 O que é indentação? - primeiro contato com setup() e draw()

  • 1.0.4

    1.0.4 Mais sobre cores(RGB e HSB)

  • Execução condicional, aleatoriedade e movimento

  • 1.1.0

    1.1.0 Execução condicional (if/else), operadores relacionais e operadores lógicos

  • 1.1.1

    1.1.1 Mais movimento e interatividade com setup() e draw()

  • 1.1.2

    1.1.2 Qual a diferença entre = (atribuição) e == (comparação)?

  • 1.1.3

    1.1.3 Criando uma animação

  • 1.1.4

    1.1.4 Escopo de variáveis(local e global)

  • 1.1.5

    1.1.5 Aleatoriedade: random e números "sorteados"

  • 1.1.6

    1.1.6 Divisão por zero e o resto da divisão

  • Definindo novas funções

  • 1.2.0

    1.2.0 Definindo novas funções

  • 1.2.1

    1.2.1 Funções com argumentos padrão(ou opcionais)

  • 1.2.2

    1.2.2 Condições aninhadas e outras estruturas condicionais

  • 1.2.3

    1.2.3 Modificando o sistema de coordenadas com translate(), rotate(), scale() e mais!

  • 1.2.4

    1.2.4 Funções recursivas e a recursividade no seu desenho

  • 1.2.5

    1.2.5 Primeiros passos de desenho em 3D - size(…, …, P3D)

  • Laços de repetição

  • 1.3.0

    1.3.0 Repetição com laços for

  • 1.3.1

    1.3.1 Grades retangulares: filas e colunas de elementos

  • 1.3.2

    1.3.2 Mais sobre sequências de elementos e fatias

  • 1.3.3

    1.3.3 Mais sobre polígonos

  • 1.3.4

    1.3.4 Desenhando formas curvas

  • 1.3.5

    1.3.5 Laço de repetição com while

  • Tipos de valores

  • 1.4.0

    1.4.0 Tipos de valores como texto (strings) e números inteiros (int) ou de ponto flutuante (float)

  • 1.4.1

    1.4.1 Textos no programa, no console e na tela: strings

  • 1.4.2

    1.4.2 Trabalhando com fontes e outros ajustes do texto

  • 1.4.3

    1.4.3 Métodos dos objetos string e f-strings

  • 1.4.4

    1.4.4 O valor especial None

  • 1.4.5

    1.4.5 Números inteiros (int) e números de ponto flutuante (float)

  • Mais interação com teclado e mouse

  • 1.5.0

    1.5.0 Input com teclado e mouse

  • 1.5.1

    1.5.1 Detectando teclas simultâneas

  • 1.5.2

    1.5.2 Um botão simples

  • 1.5.3

    1.5.3 Arrastando círculos

  • 1.5.4

    1.5.4 Usando a rodinha do mouse(mouse wheel)

  • 1.5.5

    1.5.5 Parando o draw()

  • Orientação a objetos

  • 2.1.1

    2.1.1 Primeiros passos de orientação a objetos: usando a classe Slider

  • 2.2.1

    2.2.1 Um botão com orientação a objetos

  • 2.3.1

    2.3.1 Uma classe de partículas simples

  • 2.4.1

    2.4.1 Operações com vetores e a classe Py5Vector

  • 2.5.1

    2.5.1 Introdução a orientação a objetos com bandeirinhas

  • Mais sobre estruturas de dados

  • 3.1.1

    3.1.1 Métodos das listas

  • 3.2.1

    3.2.1 Mais estruturas de dados: dicionário (dict)

  • 3.3.1

    3.3.1 Mais estruturas de dados: conjunto (set)

  • 3.4.1

    3.4.1 Compreensão de listas e outras comprehensions

  • 3.5.1

    3.5.1 Removendo itens de coleções

  • Aprofundando ideias anteriores

  • 4.1.0

    4.1.0 Mais sobre aleatoriedade e as diferenças ente o random do py5 e o do Python

  • 4.1.1

    4.1.1 Perlin Noise (ruído de Perlin) um tipo especial de número pseudoaleatório

  • 4.2.1

    4.2.1 Mais sobre atributos gráficos

  • 4.4.1

    4.4.1 Como usar seno sin(), cosseno cos() e arco tangente atan2()

  • 4.5.1

    4.5.1 Manipulando números com remap() e lerp() e também interpolando cores

  • 4.6.1

    4.6.1 O que é easing? - transições de movimento

  • 4.7.1

    4.7.1 Funções como argumentos de outras funções - sort() e funções lambda

  • 4.7.2

    4.7.2 Detectando a sobreposição de elementos geométricos - o problema das "colisões"

  • 4.7.3

    4.7.3 Desenhando em um espaço fora da tela (offscreen buffer)

  • 4.7.4

    4.7.4 Recortando e mascarando imagens

  • Exportação de imagens e outras saídas

  • 5.1.1

    5.1.1 Exportando imagens (bitmap/raster)

  • 5.2.1

    5.2.1 Exportando PDF (saída vetorial)

  • 5.3.1

    5.3.1 Exportando SVG (saída vetorial)

  • 5.4.1

    5.4.1 Exportando animações (vídeos ou GIF)

  • Lendo e escrevendo arquivos externos

  • 6.1.0

    6.1.0 Carregado formas de um arquivo vetorial (SVG)

  • 6.2.0

    6.2.0 Lendo arquivos de imagem(bitmap/raster)

  • 6.2.1

    6.2.1 Criando retículas a partir de amostras de pixels de image

  • 6.2.2

    6.2.2 Lendo todas as imagens da pasta data e sorteando uma

  • 6.2.3

    6.2.3 Lendo todas as imagens de uma pasta selecionada pela pessoa usuária (avançado)

  • 6.3.0

    6.3.0 Lendo e escrevendo texto em arquivos (file IO)

  • 6.3.1

    6.3.1 Lendo e escrevendo dados "tabulados" em CSV

  • Questões mais avançadas das ferramentas

  • 7.1.0

    7.1.0 Os "modos de uso" da biblioteca py5

  • 7.1.1

    7.1.1 Usando várias abas no IDE e importando código de outros módulos

  • 7.2.1

    7.2.1 Dicas para portar exemplos de Processing para Python com py5

  • 7.3.1

    7.3.1 Manipulando a janela - Tela cheia, redimensionamento e múltiplas janelas

  • 7.4.1

    7.4.1 Uma janela de diálogo com um campo de texto

  • Pequenos projetos e outros exemplos

  • Módulos de Truchet - Azulejos e rotações

  • Jogo PONG - Estudos para o fazer um jogo

  • L-System - Sistema de Lindenmayer

  • Autômatos Celulares - Jogo da vida de Conway (Conway's Game of Life)

  • Lousa mágica - Desenho com Arduino e potenciômetros

  • Paper Objects with Processing and Python - Volumes para cortar e montar

  • Arc, tangents & Bezier studies - Como desenhar linhas tangentes entre arcos e polígonos com arredondamentos

  • Simulações física 2D com PyMunk - Pinball

  • Sobre este material

    Para quem quer aprender ou ensinar programação em um contexto visual, existem hoje diversas possibilidades. Aqui exploramos inicialmente uma combinação de Python e Processing, ou outras ferramentas que combinam Python, desenho e modelos tridimensionas. Veja abaixo com obter algumas delas:

    • Para obter a biblioteca py5, que recomendamos para a versão mais recente deste material, siga as instruções de instalação usando Thonny IDE + plugin.

    • O projeto pyp5js, que combina pyodide e p5js, pode ser usado a partir de um editor online, que na variante do link tenta adaptar os nomes das funções para que fiquem semelhantes aos da biblioteca py5.

    • Você pode explorar outras opções em Resources-for-teaching-programming

    Este material começou usando Processing modo Python, uma ferramenta com a sintaxe de Python dentro do Processing IDE, e que não é mais ativamente mantida. Por conta disso, a versão mais antiga do material, desenvolvida entre 2019 e 2022, não tem sido mais atualizada, permanecendo no entanto disponível aqui.

    Como colaborar e contribuir?

    Este material didático pode ser modificado e usado para dar aulas. Leia as instruções para colaborar com este repositório e abra issues apontando problemas, sugerindo assuntos e melhorias, ou contribua com Pull Requests para o repositório.

    Se você quer apoiar a continuidade deste projeto, que produz material didático aberto, faça um PIX 46c37783-5edb-4f1c-b3a8-1309db11488c, doação de qualquer valor aqui ou também com Wise!

    Recursos relacionados

    Quebra-cabeças de Parsons com resultado visual

    • Fanzines e pôsters desenho() """Para desenhar com código, para desenhar junto, com o computador e com outras pessoas!"""

    • Desenhos diários com código: sketch-a-day

    NumPy para leigos[Trabalho em andamento]

    Outros recursos e livros de Processing e Python


    Licenças

    Texto e imagens: © 2021-2025 Alexandre B A Villares - Licença CC BY-SA 4.0, para o material acrescentado a partir de 2022 (usando a biblioteca py5), exceto onde indicado, confira atribuições em cada página para materiais adaptados/remixados de outras fontes. Agradeço aos colaboradores do repositório que doam suas contribuições nestes termos!

    Código: GNU GPL v3.0, exceto onde for indicado, por alguma razão.