[ALEXANDRE VILLARES] Monografia
description
Transcript of [ALEXANDRE VILLARES] Monografia
![Page 1: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/1.jpg)
Escola da Cidade · Programa de pós graduação 2014-15 · “Arquitetura, Educação e Sociedade"
Trabalho de conclusão de curso
Alexandre B A Villares
Dezembro de 2015
![Page 2: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/2.jpg)
Para Sandra.
Meus agradecimentos aos queridos colegas professores
da Escola da Cidade que contribuíram de diversas
maneiras. Em especial agradeço à coordenação do curso,
Cris Muniz, Maira Rios e aos professores e amigos Omar
Dalank, Luis Felipe Abbud, Pedro Barros, Carolina Klocker
e João Gaspar.
Agradeço muitíssimo ao amigo Décio Otoni de Almeida.
1
![Page 3: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/3.jpg)
3 Introdução
12 Fichas de Aula - Introdução à programação com Processing Python Mode
36 Anexo I - Plataformas e linguagens
38 Anexo II - Bibliografia e referências
40 Anexo III - Referências comentadas
2
![Page 4: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/4.jpg)
3
![Page 5: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/5.jpg)
Illustração: Diana Lange, 2014 [acesse para ver em movimento] openprocessing.org/sketch/156164
Uma pessoa fluente no uso de tecnologia
aproveita todos os recursos disponíveis para
solucionar problemas com que se depara.
Uma das formas de ampliar a fluência
tecnológica é o ensino de programação, uma
vez que programar aumenta as possibilidades
de criação com ferramentas digitais.
Programar é criar, é fazer um dispositivo
eletrônico, computador, microcontrolador,
equipamento de automação ou robótica, se comportar de uma maneira nova.
A aluna se torna uma criadora de ferramentas e não apenas utilizadora de
ferramentas prontas, ganha maior domínio da tecnologia para utilizá-la a seu favor.
Aprender a programar é também uma excelente oportunidade de praticar a
habilidade de solucionar problemas.
4
![Page 6: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/6.jpg)
Illustração: Pequeno trecho do código de Diana Lange que gera a
imagem anterior, visto no IDE Processing.
Programação é como instruímos um
computador a executar uma série de ações.
As ações podem ser, por exemplo, fazer
cálculos, modificar uma sequência de letras e
números, mostrar textos ou imagens na tela,
aguardar a interação de uma pessoa com o
teclado e mouse para então executar mais
ações dependendo do que foi feito pela
utilizadora.
Todos os programas de computador usam instruções simples como ponto de partida.
Veja algumas, descritas em português:
● Faça isto, e depois aquilo;
● Se esta condição for verdadeira, faça isto, senão, faça esta outra coisa;
● Faça isto por este número de vezes;
● Fique fazendo isto enquanto esta condição for verdadeira.
Estas instruções podem ser combinadas para implementar regras, decisões, e ações
mais complexas. O conjunto de instruções, o código escrito numa linguagem de
programação, forma um programa de computador.
5
![Page 7: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/7.jpg)
Illustração: Diana Lange, Random L-system Plants
openprocessing.org/sketch/205214
Como ao usar matemática, ao programar
escrevemos numa linguagem formal para
representar as ideias . 1
Como na arquitetura, construímos algo a partir
de componentes, avaliando as vantagens e
desvantagens entre as alternativas.
Como cientistas, observamos o
comportamento de sistemas complexos,
formando hipóteses e testando previsões.
Mais importante do que aprender a programar em uma linguagem específica (e
existem muitas) é exercitar o raciocínio lógico e desenvolver habilidades para resolver
problemas por meio de pensamento computacional.
Um receio comum é de que para aprender a programar seja necessário um
conhecimento avançado de matemática. Na verdade começar a programar não
requer conhecimento muito além da aritmética simples.
1 Paráfrase/ Tradução do autor. Texto original: "Like mathematicians, computer scientists use formal languages to
denote ideas (specifically computations)." In: DOWNEY, Allen. Think Python: How to Think Like a Computer Scientist.
Needham, Massachusetts: Green Tea Press, 2012, p. 23. Disponível em:
< http://greenteapress.com/thinkpython/thinkpython.pdf >. Acesso em: 15. dez. 2015.
6
![Page 8: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/8.jpg)
Illustração: Tutorial Creating Geometry with SkechUp Ruby
sketchup.com/intl/en/developer/docs/tutorial_geometry
A solução de problemas requer a habilidade de
formular questões, pensar criativamente sobre
soluções possíveis e expressar uma solução de
forma clara e precisa.
Um algoritmo é uma lista passo a passo de
instruções que, caso seguidas, resolvem algum
problema com um número finito de passos.
Um dos objetivos trabalhados pela ciência da
computação é considerar um problema e
desenvolver um algoritmo que possa servir como uma solução genérica.
Uma vez obtida a solução, um computador pode ser usado para automatizar a
execução. Dessa forma, programação é a habilidade que permite pegar um algoritmo
e representá-lo em uma notação formal (o código escrito em uma linguagem de
programação) que pode ser executado por um computador.
7
![Page 9: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/9.jpg)
Illustração: OpenProcessing
openprocessing.org/browse/?viewBy=most&filter=favorited
O ensino de programação para alunos de artes
visuais, design e arquitetura conta com um
histórico de influentes experiências
educacionais.
O pioneiro Design by Numbers de John Maeda 2
no MIT, no final da década de 90, inspirou a
criação por Ben Fry e Casey Reas da linguagem
Processing, hoje utilizada por uma comunidade
enorme de artistas e educadores, mantida e
desenvolvida por um grande número de
colaboradores e amparada pela Fundação Processing : 3
Desde seu início em 2001, Processing procurou unir as culturas da arte e ciência,
tradicionalmente divididas. A missão da Fundação Processing é conectar estas duas culturas de
forma que elas possam ser usadas por uma comunidade diversa, através do desenvolvimento
do software Processing. Para aqueles com uma propensão a pensar com números, Processing
introduz a linguagem das artes visuais através do vocabulário mais familiar da ciência da
computação. Da mesma forma, o programa é estruturado através dum arcabouço baseado em
imagem, tornando-o acessível para pensadores visuais. Conceitos fundamentais de ciência da
computação como variáveis, funções e condicionais são ensinadas lado a lado com
fundamentos visuais como imagem, forma e cor.
2 Captura da página original do DBN no site do MIT. What is Design by Numbers? Disponível em:
< https://web.archive.org/web/20150515214548/http://dbn.media.mit.edu/whatisdbn.html >. Acesso em: 15 dez.
2015.
3 Tradução do autor. Texto original: "Since its inception in 2001, Processing has sought to bridge the traditionally
divided cultures of the arts and the sciences. The mission of the Processing Foundation is to link these two cultures
so they can be used within a diverse constituency, by way of developing the Processing software. For those with a
tendency to think in numbers, Processing introduces a language of the visual arts through a more familiar
computer science vocabulary. Likewise, the software is structured through an image-based framework, making it
accessible to visual thinkers. Core computer science concepts like variables, functions, and conditionals are taught
side by side with visual basics like image, shape, and color." in: Processing Foundation - Mission . Disponível em:
< https://processing.org/mission/ >. Acesso em: 15 dez. 2015.
8
![Page 10: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/10.jpg)
Imagem: Site da fundação Python www.python.org
Para a disciplina apresentada a seguir foi
escolhida a linguagem/plataforma Processing. A
primeira encarnação da disciplina foi realizada
usando o Processing tradicional, Processing Standard Mode / Java Mode , com a sintaxe da
linguagem Java, mas agora revisada para o
novo modo Python, Processing Python Mode , 4
com sintaxe da linguagem Python.
Python tem sido largamente adotada como
linguagem introdutória nas escolas de ciência
da computação (como pode também ser 5
confirmado com a leitura de Python in Education , indicado na bibliografia) aliado a
isso, Python abre portas para automação de diversos softwares de interesse para
arquitetos, como o Blender, Rhino, Revit, Dynamo e Vectorworks.
A linguagem Python, além de ser considerada muito adequada para iniciantes conta
com uma comunidade vibrante que contribui com uma infinidade de projetos Open
Source, inúmeras bibliotecas de código para exploração científica.
4 Site do Processing Python Mode. Disponível em: < http://py.processing.org >. Acesso em: 15 dez. 2015.
5 GUO, Philip. Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities.
Communications of the ACM , New York, 7 July 2014. Disponível em:
< http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at
-top-us-universities/fulltext >. Acesso em: 15 dez. 2015.
![Page 11: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/11.jpg)
Illustração: Possible, Plausible, Potential – Drawings of architecture
generated by code creativeapplications.net/processing/
Partindo da experiência de oficinas de
introdução à programação e à eletrônica,
grupos de estudos informais e uma disciplina
experimental ( Algoritmos para criação de formas: Introdução a programação para artistas) em 2013 na Escola da Cidade, este trabalho
pretende elencar algumas referências
relevantes para o ensino de programação,
fornecer material de apoio para uma disciplina
introdutória ( Fichas de Aula ) e uma breve
bibliografia comentada sobre o tema.
Existem muitas possibilidades para ensinar programação no contexto de um curso de
graduação de arquitetura, design ou artes plásticas. Especialmente convidativas são
as linguagens que existem embutidas em programas de desenho, programas de
CAD/BIM e modeladores 3D em geral. Também devem ser consideradas plataformas
criadas especificamente para o ensino ou para a criação de arte digital e interativa.
No Anexo I é apresentada uma tabela, definitivamente incompleta, de possibilidades,
plataformas e linguagens, para docentes interessados no assunto. O Anexo II sugere
bibliografia e outras referências a serem exploradas, algumas das quais são
brevemente comentadas no Anexo III .
9
![Page 12: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/12.jpg)
![Page 13: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/13.jpg)
Aula 00 Como usar este material
Estas Fichas de aula contém indicação de uma sequência sugerida de aulas com:
● Assunto da aula;
● Vocabulário essencial (palavras chave da linguagem e conceitos);
● Vocabulário extra (opcional);
● Referências (origem deste material ou material extra a ser consultado);
● Outros comentários.
● Exemplos principais reproduzidos diretamente na ficha.
Algumas aulas sugerimos que sejam o espaço para a consolidação do material por meio
de um exercício síntese (usando o vocabulário estudado nas aulas anteriores) entregue
no final da aula ou no caso do exercício final apresentado a todos com comentários.
O desenvolvimento das aulas em geral se dá da seguinte maneira:
1. Apresentação de um vocabulário e conceitos;
2. Leitura, "destrinchamento", de um código exemplo fornecido;
3. Experimentação, alterações do código exemplo;
4. Criação pelo aluno de um novo sketch utilizando o vocabulário apresentado.
![Page 14: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/14.jpg)
Aula 01
Referências essenciais, desenho, posição do mouse
Vocabulário essencial
coordenadas, pixels, background(), rect(),fill(), noStroke() size(), width, height, mouseX,
mouseY, variáveis, comentários com # e """.
Outros comentários
Introdução rápida, o que é o Processing,
linguagens, variações;
Como instalar o Processing IDE e instalar
modo Python [processing.org/download];
Como consultar Referência das Funções
[py.processing.org/reference];
Abrindo os exemplos locais
[Menu File → Examples…].
Vocabulário extra
ellipse(), line(), point(),
fullScreen(SPAN), declaração de uma
função com def, e modos de cor.
Referências
py.processing.org/tutorials/gettingstarted/
py.processing.org/tutorials/drawing/
extra: py.processing.org/tutorials/color/
![Page 15: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/15.jpg)
Aula 01
Explicar e adaptar/refinar os elementos do exemplo input > Mouse2D
![Page 16: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/16.jpg)
Aula 02
Condicional, loops e repetições, números aleatórios
Vocabulário essencial
if _ :, else,
for _ in _ :,
while _ :, range()
random().
Outros comentários
Como controlar o 'fluxo' da execução do
programa com if. Laços (loops) e
condicionais são elementos essenciais
quase todas as linguagens de
programação.
Vocabulário extra
interáveis, listas, tuplas, elif
Referências
py.processing.org/reference/for.html
py.processing.org/reference/while.html
py.processing.org/reference/if.html
py.processing.org/reference/random.html
![Page 17: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/17.jpg)
Aula 03
Declarando funções, translações
Vocabulário essencial
def _:, translate(), with
Outros comentários
Declarar ou definir funções é uma
maneira de criar novas palavras em uma
linguagem.
A translação do sistema de coordenadas é
uma ferramenta sofisticada que permite
simplificar o seu código.
Vocabulário extra
return
Referências
py.processing.org/reference/def.html
processing.org/learning/basics/functions.html
(Java)
processing.org/learning/transform2d/ (Java)
def nome_da_função ( parâmetro, outro_parâmetro ):
código que a função executa # note a indentação
def nome_da_função () :
''' notem que () significa que essa função não precisa de parâmetros'''
código que a função executa
![Page 18: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/18.jpg)
Aula 03
exemplo de definição de uma nova função
def setup():
size(640, 360)
background(51)
noStroke()
noLoop()
def draw():
alvo(width*0.25, height*0.4, 200, 4)
alvo(width*0.5, height*0.5, 300, 10)
alvo(width*0.75, height*0.3, 120, 6)
def alvo(xloc, yloc, size, num):
grayvalues = 255/num
steps = size/num
for i in range (num):
fill(i*grayvalues)
ellipse(xloc, yloc, size - i*steps, size - i*steps)
![Page 19: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/19.jpg)
Aula 03
translação
Translação: Movendo a grade
Você já aprendeu que pode mudar a posição onde desenha um retângulo. Mas há uma maneira diferente de
fazer isso. E se você mover a grade de coordenadas? O efeito visual obtido é o mesmo. Isso se chama
translação. Qual a vantagem?
def setup():
size(400, 100)
background(255)
for i in range( 10, 350, 50):
house(i, 20)
def house( x, y):
triangle(x + 15, y, x, y + 15, x + 30, y + 15)
rect(x, y + 15, 30, 30)
rect(x + 12, y + 30, 10, 15)
'''Compare com esta versão que usa o translate(). Neste caso o código desenha a casa no
mesmo lugar, com o canto superior esquerdo em (0, 0), e a translação, In this case, the code draws the house in the same place every time, with its upper left corner at (0,
0), and lets translation do all the work instead!'''
def house(int x, int y):
with pushMatrix():
translate(x, y)
triangle(15, 0, 0, 15, 30, 15)
rect(0, 15, 30, 30)
rect(12, 30, 10, 15)
![Page 20: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/20.jpg)
Aula 03
rotação
Além da translação que move a grade, é possível girar o sistema de coordenadas
com a função rotate(). Essa função tem um parâmetro ou argumento, um
número de radianos que você quer rodar. Em graus, um círculo tem 360°.
Quando descrevemos os ângulos em radianos, a circuferência completa tem
2π radianos.
Here is a diagram of how Processing measures angles in degrees (black) and radians (red).
Processing has a built-in radians() function which takes a number of degrees as its argument and
converts it for you. It also has a degrees() function that converts radians to degrees. Given that
background, let’s try rotating a square clockwise 45 degrees.
def setup():
size(200, 200)
background(255)
smooth()
fill(192)
noStroke()
rect(40, 40, 40, 40)
with pushMatrix():
rotate(radians(45))
fill(0)
rect(40, 40, 40, 40)
Hey, what happened? How come the square got moved and cut off? The answer is: the
square did not move. The grid was rotated. Here is what really happened. As you can see, on the rotated coordinate system, the square still
has its upper left corner at (40, 40).
Girando da maneira certa
A maneira certa de girar o quadrado é: : 1. Mova a origem do sistema de coordenadas (0, 0) para onde você quer que seja o canto superior
esquerdo do quadrado. 2. Gire a gra de π/4 radianos (45°) 3. Desenhe o quadrado na origem.
def setup():
size(200, 200)
rectMode(CORNER)
background(255)
smooth()
fill(192)
noStroke()
rect(40, 40, 40, 40)
with pushMatrix():
translate(40, 40)
rotate(radians(45))
fill(0)
rect(0, 0, 40, 40)
![Page 21: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/21.jpg)
Aula 03 Exemplos em Processing Java Mode
void setup() {
size(200, 200);
background(255);
smooth();
noStroke();
}
void draw(){
if (frameCount % 10 == 0) {
fill(frameCount * 3 % 255, frameCount * 5
% 255,
frameCount * 7 % 255);
pushMatrix();
translate(100, 100);
rotate(radians(frameCount * 2 % 360));
rect(0, 0, 80, 20);
popMatrix();
}
}
void setup() {
smooth();
size(300,300);
background(0);
}
void draw() {
translate(mouseX, mouseY);
rotate(frameCount/3);
strokeWeight(20+sin(frameCount)*20);
stroke(abs(sin(frameCount/10)*255),
abs(cos(frameCount/10)*255),
abs(cos(frameCount/10)*255), 75);
line(0, 0, 0, random(height/2));
line(0, 0, 0, -random(height/2));
}
![Page 22: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/22.jpg)
Aula 04
Exercício de síntese 1
Outros comentários
Usando o vocabulário adquirido até o
momento, propor a criação de um
pequeno sketch que obrigatoriamente
utilize vocabulário de cada uma das três
aulas anteriores.
![Page 23: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/23.jpg)
Aula 05
Mais opções de interação, teclado e mouse.
Vocabulário essencial
mousePressed, mouseDragged(),
keyPressed(), key, frameRate
Outros comentários
Além de saber a posição do mouse, o
seu programa pode mudar de
comportamento quando o mouse é
clicado, ou quando uma tecla é
pressionada.
""" clique na caixa, e arraste também! """ boxSize = 75 overBox = False locked = False xOffset = 0.0 yOffset = 0.0 def setup(): size(640, 360) global bx, by bx = width / 2.0 by = height / 2.0 rectMode(RADIUS) def draw(): global overBox background(0) if bx - boxSize < mouseX < bx + boxSize and \ by - boxSize < mouseY < by + boxSize: overBox = True if not locked: stroke(255) fill(153) else: stroke(153) fill(153) overBox = False rect(bx, by, boxSize, boxSize)
Vocabulário extra
easing, deque, millis()
Referências
processing.org/examples/mousefunctions.html
processing.org/examples/keyboardfunctions.html
def mousePressed(): global locked, xOffset, yOffset if overBox: locked = True fill(255, 255, 255) else: locked = False xOffset = mouseX - bx yOffset = mouseY - by def mouseDragged(): global bx, by if locked: bx = mouseX - xOffset by = mouseY - yOffset def mouseReleased(): global locked locked = False
![Page 24: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/24.jpg)
Aula 05
""" Keyboard Functions. Modified from code by Martin. Original 'Color Typewriter' concept by John Maeda. Click on the window to give it focus and press the letter keys to type colors. The keyboard function keyPressed() is called whenever a key is pressed. keyReleased() is another keyboard function that is called when a key is released. """ A_code = ord('A') Z_code = ord('Z') a_code = ord('a') z_code = ord('z') maxHeight = 40 minHeight = 20 letterHeight = maxHeight # Height of the letters letterWidth = 20 # Width of the letter x = -letterWidth # X position of the letters y = 0 # Y position of the letters newletter = False numChars = 26 # There are 26 characters in the alphabet colors = []
def setup(): size(640, 360) noStroke() colorMode(HSB, numChars) background(numChars / 2) # Set a gray value for each key for i in range(0, numChars, 1): colors.append(color(i, numChars, numChars)) def draw(): global newletter if newletter: # Draw the letter if letterHeight == maxHeight: y_pos = y rect(x, y_pos, letterWidth, letterHeight) else: y_pos = y + minHeight rect(x, y_pos, letterWidth, letterHeight) fill(numChars / 2) rect(x, y_pos - minHeight, letterWidth, letterHeight) newletter = False def keyPressed(): global newletter, x, y, letterHeight # If the key is between 'A'(65) to 'Z' and 'a' to 'z'(122) key_code = ord(key) if (key_code >= A_code and key_code <= Z_code) \ or (key_code >= a_code and key_code <= z_code): if key_code <= Z_code: keyIndex = key_code - A_code letterHeight = maxHeight fill(colors[key_code - A_code]) else: keyIndex = key_code - a_code letterHeight = minHeight fill(colors[key_code - a_code]) else: fill(0) letterHeight = 10 newletter = True # Update the "letter" position x = (x + letterWidth) # Wrap horizontally if x > width - letterWidth: x = 0 y += maxHeight # Wrap vertically if y > height - letterHeight: y = 0 # reset y to 0
![Page 25: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/25.jpg)
Aula 06
Orientação a objetos: Classes, intâncias, métodos.
Vocabulário essencial
class, __init__, self
Outros comentários
O paradigma de programação orientada a
objetos é o desafio a ser explorado na
parte final do curso.
Vocabulário extra
dot methods
Referências
py.processing.org/tutorials/objects/
# "Car" carro sem orientação a objetos → class Car(object):
''' Nome da classe que inventamos, tradicionalmente com a primeira letra
maiúscula, para diferenciar de variáveis que
começam com minúscula.'''
→ Nome da classe
c = color(255)
xpos = 100
ypos = 100
xspeed = 1
→ def __init__(self):
'''Os dados do objeto são mantidos em
variaveis, chamadas instance variables, cada instância do objeto tem uma cópia'''
self.c = color(255)
self.xpos = 100
self.ypos = 100
self.xspeed = 1
→ inicialização
def display():
rectMode(CENTER)
fill(c)
rect(xpos, ypos, 20, 10)
def drive():
xpos = xpos + xspeed
if xpos > width:
xpos = 0
def setup():
size(200, 200)
def draw():
background(0)
display()
drive()
→ def display(self):
rectMode(CENTER)
fill(self.c)
rect(self.xpos, self.ypos, 20, 10)
def drive(self):
self.xpos = self.xspeed
if self.xpos > width:
self.xpos = 0
my_car = Car()
def setup():
size(200, 200)
def draw():
background(0)
my_car.display()
my_car.drive()
→ Funcionalidade,
métodos.
![Page 26: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/26.jpg)
Aula 07
Imagens e recursos vetoriais externos
Vocabulário essencial
loadImage(), image(),
loadShape(), shape()
Outros comentários
Como usar imagens e elementos vetoriais
desenhados em outros programas.
Vocabulário extra
global, noLoop(), PShape
Referências
processing.org/examples/loaddisplaysvg.html
img = loadImage(""http://processing.org/img/processing-web.png"")
image(bot = loadShape(""bot1.svg""), shape(bot, 110, 90, 100, 100))
![Page 27: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/27.jpg)
Aula 08
Exportação de imagens, GIFs e PDFs
Vocabulário essencial
saveFrame(), beginRecord( PDF,
"pdf/myartwork-####.pdf" ),
endRecord()
Outros comentários
Como exportar as formas criadas com
Processing? PDF,PNG, GIF?
Salvando um GIF
add_library('gifAnimation')
def setup():
size(400, 400);
noStroke()
smooth()
frameRate(24)
global gifExport
gifExport = GifMaker(this, "export.gif")
# make it an "endless" animation
gifExport.setRepeat(0)
# torna o fundo preto transparente
# gifExport.setTransparent(0, 0, 0)
def draw():
background(0);
# SEU CÓDIGO AQUI
gifExport.setDelay(1);
gifExport.addFrame();
if frameCount > 1500:
noLoop()
def keyPressed():
gifExport.finish()
println("gif saved")
Vocabulário extra
gifAnimation, GifMaker
Referências
py.processing.org/tutorials/overview/
packtpub.com/article/exporting-from-processing
Salvando imagens
if ( keyPressed ):
saveFrame("images/artwork-####.png")
Salvando um PDF
add_library('pdf')
beginRecord( PDF, "pdf/myartwork-####.pdf" )
endRecord()
![Page 28: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/28.jpg)
Aula 09
Exercício de síntese 2
Outros comentários
Usando o vocabulário adquirido até o
momento, propor a criação de um
pequeno sketch que preferencialmente
utilize vocabulário de cada uma das
quatro aulas anteriores.
![Page 29: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/29.jpg)
Aula 10
Listas de objetos e sistemas de partículas e outros comportamentos
Vocabulário essencial
PVector, [], flocking
Outros comentários
Como simular agentes independetes ou
partículas usando listas de objetos. class Ball:
def __init__(self, xin, yin, din, idin):
self.x = xin;
self.y = yin;
self.vx = 0.0
self.vy = 0.0
self.diameter = din;
self.id = idin;
self.others = []
self.color = (random(255),random(255),random(255))
def makeOthers(self):
self.others = [x for x in balls if x != self]
def collide(self):
for i in range(numBalls-1):
dx = self.others[i].x - self.x
dy = self.others[i].y - self.y
distance = sqrt(dx*dx + dy*dy)
minDist = self.others[i].diameter/2 +
self.diameter/2;
if distance < minDist:
angle = atan2(dy, dx);
targetX = self.x + cos(angle) * minDist;
targetY = self.y + sin(angle) * minDist;
ax = (targetX - self.others[i].x) * spring;
ay = (targetY - self.others[i].y) * spring;
self.vx -= ax;
self.vy -= ay;
self.others[i].vx += ax;
self.others[i].vy += ay;
def move(self):
self.vy += gravity;
self.x += self.vx;
self.y += self.vy;
if (self.x + self.diameter/2 > width):
self.x = width - self.diameter/2;
self.vx += -0.9;
elif self.x - self.diameter/2 < 0:
self.x = self.diameter/2;
self.vx *= -0.9
if self.y + self.diameter/2 > height:
self.y = height - self.diameter/2
self.vy *= -0.9
elif self.y - self.diameter/2 < 0:
self.y = self.diameter/2
self.vy *= -0.9
def display(self):
fill(self.color[0],self.color[1],self.color[2])
ellipse(self.x, self.y, self.diameter, self.diameter)
Vocabulário extra
Referências
processing.org/examples/simpleparticlesystem.html
processing.org/examples/flocking.html
numBalls = 25;
spring = 0.05;
gravity = 0.03;
balls = [Ball(random(400), random(400), random(20, 40),
x) for x in range(numBalls)]
def setup():
size(400, 400);
noStroke()
smooth()
frameRate(24)
for b in balls:
b.makeOthers()
def draw():
background(0);
for i in range(numBalls):
balls[i].collide()
balls[i].move()
balls[i].display()
if frameCount > 1500:
noLoop()
![Page 30: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/30.jpg)
Aula 10
Diana Lange 2014
http://www.openprocessing.org/sketch/156164
![Page 31: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/31.jpg)
Aula 11
Bibliotecas externas
Vocabulário essencial
import & addlibrary
Outros comentários
Panorama de bibliotecas que podem
extender o Processing.
Vocabulário extra
Fisica, Box2D, 3D
Referências
https://processing.org/reference/libraries/
![Page 32: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/32.jpg)
Aula 12
Tipografia
Vocabulário essencial
f = createFont("Georgia", 24),
textFont(f)
Outros comentários
Como escrever texto na tela? A tipografia
é um elemento gráfico complexo que
demanda uma certa dose de burocracia
para ser dominada pelo artista digital.
Vocabulário extra
textAlign, RIGHT, CENTER, LEFT
Referências
processing.org/learning/text
processing.org/tutorials/typography/
![Page 33: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/33.jpg)
![Page 34: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/34.jpg)
Aula 13
Atendimento do exercício final
Outros comentários
Nesta aula os alunos devem trabalhar no
código do exercício final, e na medida do
possível debugar e tirar dúvidas.
![Page 35: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/35.jpg)
Aula 14
Apresentação do exercício final
Outros comentários
Os aluno devem apresentar os trablhos e
explicar seus objetivos, desafios, sucessos
e fracassos na implementação.
![Page 36: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/36.jpg)
![Page 37: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/37.jpg)
por Alexandre B A VIllares, licença CC-BY-SA-4.0 Revisão 15.12.16
Avaliado Sistemas Operacionais Licença Ambiente/IDE Linguagem/Biblioteca Sintaxe Principais usos site oficial Referências recomendadasparcialmente Windows software proprietário ArcGIS Python Python Criação de ferramentas plug-in, GIS, geoprocessamento e
visualização de dadosresources.arcgis.com/en/communities/python/
sim Windows, Mac OS software proprietário,licença educacionalgratuita
ArchiCAD GDL similar a BASIC Criação de objetos paramétricos e geometrias 3D complexas. gdl.graphisoft.com/ GDL Cookbook
sim Windows, Mac OS, Linux software livre ou opensource Arduino C/Wiring C Computação física, automação, robótica, arte interativa. arduino.cc Livro da Novatec e slides Luciano Ramalho - Arduino 101 Oficina
para principiantesparcialmente Windows software proprietário,
licença educacionalgratuita
Autocad AutolLISP & VisualLISP LISP Criação de ferramentas plug-in e geometrias 2D e 3Dcomplexas.
help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-265AADB3-FB89-4D34-AA9D-6ADF70FF7D4B
sim Windows software proprietário(freeware?) Bentley Generative Components "visual" Criação de geometrias "gerativas"* em 3D bentley.com/en/products/product-line/modeling-and-
visualization-software/generativecomponentssim Windows, Mac OS, Linux software livre ou open
source Blender Python Python Criação de ferramentas plug-in e geometrias 3D complexas. blender.org/manual/advanced/scripting/introduction.html
sim Windows, Mac OS software livre ou opensource Cinder C++ C Criação de gráficos 2D e 3D, arte interativa, visualização de
dados.libcinder.org/
sim Mac OS software livre ou opensource Drawbot Python Python Criação de gráficos 2D, arte interativa, visualização de dados. www.drawbot.com/
parcialmente Windows, Mac OS, Linux software proprietário Minecraft [várias] "visual", Python,Javascript
Educação, jogos http://computercraftedu.com/http://pi.minecraft.net/?page_id=14
parcialmente Windows, Mac OS, Linux software livre ou opensource NodeBox 3 NodeBox "visual", Python Criação de gráficos 2D, arte interativa, visualização de dados. www.nodebox.net/node/
parcialmente Windows, Mac OS, Linux software livre ou opensource NodeBox for
OpenGLPython Python Criação de gráficos 2D, arte interativa, visualização de dados. www.cityinabottle.org/nodebox/
parcialmente Windows, Mac OS, Linux software livre ou opensource OpenFrameworks C++ C Criação de gráficos 2D e 3D, arte interativa, visualização de
dados.openframeworks.cc/
sim Windows, Mac OS, Linux software livre ou opensource Processing Processing Java Mode Java Criação de gráficos 2D e 3D, arte interativa, visualização de
dados.processing.org Diversos livros e sites, consulte a tabela 2
sim Windows, Mac OS, Linux software livre ou opensource Processing Processing Python Mode Python Criação de gráficos 2D e 3D, arte interativa, visualização de
dados.py.processing.org Diversos livros e sites, consulte a tabela 2
sim Windows, Mac OS, Linux software livre ou opensource P5*JS (Processing
Foundation)P5*JS Javascript Criação de gráficos 2D e 3D, arte interativa, visualização de
dados.p5js.org Diversos livros e sites, consulte a tabela 2
parcialmente Windows, Mac OS, Linux software livre ou opensource QGIS Python Python Criação de ferramentas plug-in, GIS, geoprocessamento e
visualização de dadosdocs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html qgistutorials.com/en/docs/getting_started_with_pyqgis.html
parcialmente Windows software proprietário,licença educacionalgratuita
Revit Revit Macros VB.NET, C# Criação de ferramentas plug-in e geometrias 2D e 3Dcomplexas.
https://knowledge.autodesk.com/support/revit-products/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Revit-Customize/files/GUID-4DFDA8CD-B0FD-492E-8EDE-A28C29B1E316-htm.html
parcialmente Windows software proprietário,licença educacionalgratuita
Revit, Vasari RevitPythonShell Python Criação de ferramentas plug-in e geometrias 2D e 3Dcomplexas.
github.com/architecture-building-systems/revitpythonshell/blob/master/README.md
sim Windows software proprietário,licença educacionalgratuita e paga
Revit, Vasari &Dynamo Studio
Dynamo "visual",DesignScript
Criação de geometrias "gerativas"* em 3D dynamobim.org/
sim Windows software proprietário,licença educacional paga Rhinoceros Grasshopper "visual" Criação de geometrias "gerativas"* em 3D grasshopper3d.com/
sim Windows, Mac OS software proprietário,licença educacional paga Rhinoceros Python Python Criação de ferramentas plug-in e geometrias 3D complexas. wiki.mcneel.com/developer/python
sim Windows, Mac OS software proprietário,licença educacional paga Rhinoceros Rhinoscript VBScript Criação de ferramentas plug-in e geometrias 3D complexas. wiki.mcneel.com/developer/rhinoscript
sim Windows, Mac OS, Linux software livre ou opensource Scratch Scratch "visual" Educação, jogos scratch.mit.edu/ scratch.mit.edu
sim Windows, Mac OS software proprietário,licença educacionalgratuita e paga
SketchUp Ruby Ruby Criação de ferramentas plug-in e geometrias 3D complexas. www.sketchup.com/intl/en/developer/ Livro Automatic SketchUp
sim Windows, Mac OS software proprietário,licença educacionalgratuita
Vectorworks Marionete "visual" Criação de geometrias "gerativas"* em 3D developer.vectorworks.net/index.php/Marionette www.techlimits.com/index.php/vectorworks-2016-marionete
sim Windows, Mac OS software proprietário,licença educacionalgratuita
Vectorworks Vectorscript Pascal Criação de objetos paramétricos, ferramentas plug-in egeometrias 3D complexas.
developer.vectorworks.net/index.php/VectorScript https://stackoverflow.com/questions/263774/where-can-i-find-resources-on-vectorscript-programming-language
sim Windows, Mac OS software proprietário,licença educacionalgratuita
Vectorworks Python Python Criação de objetos paramétricos, ferramentas plug-in egeometrias 3D complexas.
developer.vectorworks.net/index.php/Python
sim online - Trinket.io(no navegador)
Python "visual", Python,Javascript
Ensino de programação trinket.io hourofpython.com
não Windows, Mac OS, Linux BlueJ Java Java Ensino de programação www.bluej.org/ http://www.bluej.org/objects-first/
não Windows, Mac OS, Linux Greenfoot Java Java Ensino de programação www.greenfoot.org/door http://www.greenfoot.org/book/
não Windows software proprietário 3D Max Python Python docs.autodesk.com/3DSMAX/16/ENU/3ds-Max-Python-API-Documentation/index.html
não Windows software proprietário 3D Max MAXScript MAXScriptnão Windows, Mac OS software proprietário Cinema 4D Python Pythonnão Windows, Mac OS software proprietário Cinema 4D Coffee Coffeenão software proprietário Maya Python Pythonnão Unity C# C Jogos, visualizações interativas https://unity3d.com/learn/tutorials/topics/scripting
não Unreal Engine Blueprints "visual" Jogos, visualizações interativas https://docs.unrealengine.com/latest/INT/Engine/Blueprints/GettingStarted/index.html
*a tradução usual é "generativas" mas há discordâncias... NOTA: Não foram incluídos os SDKs, voltados para odesenvolvimento profissional de extensões (em geral em C), quefogem ao escopo do ensino introdutório de programação.
Anexo I - Plataformas e linguagens Algoritmos para arquitetos, designers e artistas - referências para o ensino de programação
![Page 38: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/38.jpg)
![Page 39: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/39.jpg)
por Alexandre B A VIllares, licença CC-BY-SA-4.0 Revisão 15.12.16
ID Ficha Tipo Título Autores Edição Palavras chave Língua Onde encontrar Licenças especiais01 sim livro, PDF 10 print chr$(205.5+rnd(1)) :goto 10 BAUDOIN, Patsy; REAS, Casey; MARINO, Mark
C.; DOUGLASS, Jeremy; BELL, John; SAMPLE,Mark; BOGOST, Ian; MONTFORT, Nick.
Cambridge, Mass.: MIT Press,2013.
Cultura digital, arte inglês [PDF disponível] 10print.org Creative Commons BY-NC-SA 3.0
02 não PDF Arduino 101 Oficina para principiantes RAMALHO, Luciano. - Arduino, indtrodutório português [PDF disponível]speakerdeck.com/ramalho/arduino-101
Creative Commons BY-SA
03 não livro Arduino Básico McROBERTS, Michael. Segunda edição, Novatec,2015
Arduino, indtrodutório português novatec.com.br/livros/arduino2ed/ -
04 sim livro, site Automate the Boring Stuff with Python: PracticalProgramming for Total Beginners
SWEIGART, Al. No Starch Press; 1 edition(May 1, 2015)
Python inglês [Leia online] automatetheboringstuff.com Creative Commons BY-NC-SA 4.0
04bis sim livro Automatize tarefas maçantes com PythonProgramação prática para verdadeiros iniciantes
SWEIGART, Al. Novatec, 2015 Python português novatec.com.br/livros/automatizepython/ -
05 sim livro, PDF Automatic SketchUp: Creating 3-D Models in Ruby SCARPINO, Matthew. Eclipse Engineering, 2010 SketchUp, Ruby inglês [PDF disponível] www.automaticsketchup.com -
06 sim site Como Pensar Como um Cientista da Computação- aprendendo com Python
DOWNEY, Allen B. [e diversos autores daversão interativa]
Edição online traduzida noIME-USP
Python Português [Leia online]panda.ime.usp.br/pensepy/static/pensepy/
GNU Free Documentation License 1.3
06bis sim site Pense Python 2 DOWNEY, Allen B. Nova tradução iniciada em2015
Python Português [Leia e colabore]github.com/PensePython/PensePython2/
Creative Commons BY-NC 3.0
07 não livro Form+Code in Design, Art, and Architecture REAS, Casey; McWILLIAMS, Chandler;BARENDSE, Jeroen.
Princeton Architectural Press,2010
Processing, Arte inglês formandcode.com/ -
08 não livro, PDF,site
GDL Cookbook NICHOLSON-COLE, David. Marmalade, 2002 ArchiCAD, GDL inglês nottingham.ac.uk/~lazwww/cookbook/ -
09 não livro Generative Design: Visualize, Program, and Create withProcessing
Hartmut Bohnacker (Author), Benedikt Gross(Author), Julia Laub (Author), ClaudiusLazzeroni (Editor)
Princeton Architectural Press,2012
Processing, Arte inglês www.amazon.com/Generative-Design-Visualize-Program-Processing/dp/1616890770/
-
10 não livro,ebook
Getting Started with p5.jsMaking Interactive Graphics in JavaScript andProcessing
REAS, Casey; FRY, Ben. Maker Media, 2015 P5*JS, introdutório inglês shop.oreilly.com/product/0636920032076.do -
11 não vídeointerativo
Hello P5JS GARNER, Scott; SHIFFMAN, Daniel;MAcCARTHY, Lauren.
P5JS.org, 2014 P5JS, Javascript inglês [Assista online] hello.p5js.org Creative Commons BY-NC-SA 4.0
12 sim vídeointerativo
Hello Processing SHIFFMAN, Daniel. Processing Foundation, 2013 Cultura digital, arte,Processing, Introdutório
inglês [Assista online] hello.processing.org Creative Commons BY-NC-SA 4.0
13 não site Hour of Python Trinket.io Python, Introdutório inglês https://hourofpython.com/ -
14 sim PDF Introdução à programação gráfica (usando Processing) BARROS, Pedro. FBAUP, 2007 Processing Português [PDF disponível] hdl.handle.net/10216/1848 Creative Commons BY-NC-SA 2.5
15 sim livro Introducing Python: Modern Computing in SimplePackages
LUBANOVIC, Bill. O'Reilly, 2014 Python, Introdutório inglês shop.oreilly.com/product/0636920028659.do -
16 não livro,ebook
Learning Processing, Second Edition SHIFFMAN, Daniel. Segunda edição, MorganKaufmann, 2015
Processing, Introdutório inglês learningprocessing.com -
17 não livro,ebook
Make: Getting Started with Processing REAS, Casey; FRY, Ben. Segunda edição, MakerMedia, 2015
Processing, Introdutório inglês shop.oreilly.com/product/0636920031406.do -
18 não site P5*JS Tutorials [diversos autores] Processing Foundation Processing, Python,Conceitos deProgramação
inglês [Acesse] http://p5js.org/tutorials/ ?
19 sim livro Processing: A Programming Handbook forVisualDesigners and Artists.
REAS, Casey; FRY, Ben. MIT Press, Cambridge, 2007 esegunda edição revisada,2014.
Introdutório, Essencial,Processing, Artes visuais
inglês processing.org/handbook/ -
20 não livro Processing: Creative Coding and Computational Art inProcessing 2
GREENBERG, Ira; XU, Dianna; KUMAR,Deepak.
Segunda edição, Apress, 2013 Processing inglês apress.com/9781430244646 -
21 sim site Processing.org Tutorials [diversos autores] Processing Foundation Processing, Java,Conceitos deProgramação
inglês [Acesse] https://processing.org/tutorials/ Licenças variadas, alguns são CreativeCommons BY-NC-SA 4.0
22 sim site py.Processing.org Tutorials [diversos autores] Processing Foundation Processing, Python,Conceitos deProgramação
inglês [Acesse]http://py.processing.org/tutorials/
Licenças variadas, alguns são CreativeCommons BY-NC-SA 4.0
23 sim ebook Python in education - Teach, Learn, Program TOLLERVEY, Nicholas. O’Reilly, Sebastopol, 2015. Introdutório, Python,educação
inglês [ePUB grátis disponível]www.oreilly.com/programming/free/python-in-education.csp
-
24 sim livro, site The Nature of Code: Simulating Natural Systems withProcessing.
SHIFFMAN, Daniel. Publicado pelo autor, NovaIorque, 2013.
Processing, simulaçõesfísicas, avançado
inglês [Leia online] natureofcode.com Creative Commons BY-NC 3.0
25 sim livro, site,PDF, ebook
Think Python - How to Think Like a Computer Scientist DOWNEY, Allen B. O'Reilly; Green Tea Press Python inglês [Leia online]www.greenteapress.com/thinkpython2/index.html
Creative Commons BY-NC 3.0
26 sim artigo What is Code? FORD, Paul. Bloomberg, Businessweek, 11de junho de 2015
Cultura digital,Introdutório
inglês [Leia online] bloomberg.com/graphics/2015-paul-ford-what-is-code/
-
Anexo II - Bibliografia e referências Algoritmos para arquitetos, designers e artistas - referências para o ensino de programação
![Page 40: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/40.jpg)
![Page 41: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/41.jpg)
BAUDOIN, Patsy; REAS, Casey; MARINO,
Mark C.; DOUGLASS, Jeremy; BELL, John;
SAMPLE, Mark; BOGOST, Ian;
MONTFORT, Nick. 10 print chr$(205.5+rnd(1)) :goto 10 Cambridge, Mass.: MIT Press, 2013.
livro, PDF - em inglês
palavras chave: Cultura digital, arte
[PDF disponível] 10print.org
Um programa de apenas uma linha de código (que
é o título deste livro) encantou um enorme número
de jovens e entusiastas da computação pessoal
gerando um infindável labirinto nas telas do seus
computadores Commodore 64.
Dez autores escrevem
colaborativamente estes ensaios
sobre o pequeno programa,
tocando em questões na
intersecção entre arte, tecnologia,
cultura e programação. Um dos
trechos mais inspiradores é um
história cultural dos labirintos
recionando o 10 PRINT com o mito
de Teseu em Creta.
Sumário e detalhe de uma página do livro.
![Page 42: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/42.jpg)
SWEIGART, Al. Automate the Boring Stuff with Python: Practical Programming for Total Beginners / Automatize tarefas maçantes com Python: Programação prática para verdadeiros iniciantes No Starch Press / Novatec 2015
livro, site - em inglês, livro - em português
palavras chave: Python
[Leia online] automatetheboringstuff.com [Para comprar em portuguës] novatec.com.br/livros/automatizepython/
Esta é uma bem humorada e acessível introdução à programação por meio da
linguagem Python.
O livro não assume nenhum conhecimento prévio de programação, mas pode ser
ainda um pouco árido se comparado com tutorais que estimulam a escrita de
software com foco nos elementos gráficos, como atividade artística e criativa, uma vez
que os exemplos aqui tratam de automatizar tarefas, repetitivas, como elencadas no
site da Novatec:
● Pesquisar texto em um arquivo ou em vários arquivos.
● Criar, atualizar, mover e renomear arquivos e pastas. ● Pesquisar na Web e fazer download de conteúdos online. ● Atualizar e formatar dados em planilhas Excel de qualquer tamanho. ● Separar, combinar, adicionar marcas-d'água e criptografar PDFs. ● Enviar emails para lembretes e notificações textuais. ● Preencher formulários online.
Sumário detalhado
EN: http://www.nostarch.com/download/Automate_the_Boring_Stuff_dTOC.pdf PT: http://www.novatec.com.br/livros/automatizepython/sumario9788575224465.pdf
![Page 43: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/43.jpg)
SCARPINO, Matthew. Automatic SketchUp: Creating 3-D Models in Ruby Eclipse Engineering, 2010
livro, PDF - em inglês
palavras chave: SketchUp, Ruby
[PDF distonível] automaticsketchup.com
O SketchUp tem embutido um interpretador da liguagem Ruby.
O Ruby no SketchUp pode ser acessado por
meio de um console (modo interativo) mas também por meio da execução de pequenos programas (scripts) salvos em arquivos .rb. Em ambos os casos tendo acesso aos objetos do desenho, geometria e dados. Torna-se possível editar estes objetos assim como gerar novas e complexas geometrias (que muitas vezes seriam praticamente impossíveis de serem produzidas por um usuário manualmnete).
Este livro é uma boa introdução à programação, através do Ruby e feita dentro do
próprio SketchUp. Explica como usar as classes Ruby que constroem pontos, arestas, superfícies e em seguida trata de tópicos mais avançados como animações e matrizes de transformação.
Usando Ruby é possível criar ferramentas novas que se integram a interface do
programa, são os chamados plug-ins ou extensões. Há uma animada comunidade de desenvolvedores, tanto profissionais como amadores produzindo extensões para o SketchUp.
![Page 44: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/44.jpg)
DOWNEY, Allen B.
Como Pensar Como um Cientista da Computação - aprendendo com Python / Pense Python 2 Edição online no IME-USP / Nova
tradução colaborativa inicidada em 2015
site - em Português
palavras chave: Python
[Leia online] panda.ime.usp.br/pensepy/static/pensepy/
Esta é uma tradução de uma versão interativa da
conceituada introdução a programação com Python,
disponível online no site do IME-USP.
Note que há um novo esforço em andamento para traduzir
para o português a edição mais recente de Think Python (2015) em github.com/PensePython/PensePython2/
![Page 45: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/45.jpg)
SHIFFMAN, Daniel.
Hello Processing
Processing Foundation, 2013
vídeo interativo - em inglês
palavras chave: Cultura digital, arte, Processing, Introdutório
[Assista online] hello.processing.org
Este maravilhoso vídeo interativo criado para a inciativa "Hour of Code", da Code.org
em 2013 , além de ensinar os primeiros passos do Processing tem uma empolgante
introdução de alguns minutos mostrando exemplos de obras de arte criadas com o
auxílio da plataforma. Daniel Shiffman em performance icônica.
Texto de Alexandre B A VIllares, sob licença CC-BY-SA-4.0. As imagens são do site hello.processing.org, que por sua vez
também foi licenciado CC-BY-SA-4.0 - http://hello.processing.org/about/
![Page 46: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/46.jpg)
BARROS, Pedro.
Introdução à programação gráfica (usando Processing) FBAUP, 2007
PDF - em Português palavras chave: Processing
[PDF disponível] hdl.handle.net/10216/1848
Material didático utilizado por Pedro Amado,
autodenominado Tipófilo e Digital Tinkerer , professor auxiliar no Departamento de Comunicação e Arte da Universidade de Aveiro (DECA), onde leciona Design para Digital Media e Multimédia Editorial desde 2007.
![Page 47: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/47.jpg)
LUBANOVIC, Bill. Introducing Python: Modern Computing in Simple Packages O'Reilly, 2014
livro - em inglês
palavras chave: Python, Introdutório
shop.oreilly.com/product/0636920028659.do
Uma introdução muito completa que não assume
conhecimento prévio de programação, mas avança
cuidadosamente e introduzindo material bastante
interessante.
![Page 48: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/48.jpg)
REAS, Casey; FRY, Ben.
Processing: A Programming
Handbook for Visual Designers
and Artists . MIT Press, Cambridge, 2007 e segunda edição revisada, 2014.
livro - em inglês
palavras chave: Introdutório, Essencial, Processing, Artes visuais
processing.org/handbook/
Este livro escrito pelos criadores do
Processing e publicado pelo MIT é um manual de referência completo da plataforma, organizado por temas e enriquecido com entrevistas com artistas/programadores 1
A segunda edição foi amplamente
revisada, para dar conta das versões 2 e 3 do Processing, e os capítulos denominados 'Extensões' podem ser consultados online nas páginas de tutoriais (permitindo assom atualizações futuras).
Table of contents : mitpress.mit.edu/sites/default/
files/Reas_2E_1stpp_TOC.pdf
1 SUE.C, Larry Cuba, Mark Hansen, Lynn Hershman Leeson, Jürg Lehni, LettError, Golan Levin and Zachary Lieberman, Benjamin Maus, Manfred Mohr, Ash Nehru, Josh On, Bob Sabiston, Jennifer Steinkamp, Jared Tarbell, Steph Thirion, Robert Winter.
![Page 49: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/49.jpg)
[diversos autores] Processing.org Tutorials Processing Foundation
site - em inglês
palavras chave: Processing, Java, Conceitos de Programação
[Acesse] processing.org/tutorials/
Estes tutorias, escritos por diversos autores,
entre os quais Casey Reas Ben, Fry e Dan Shiffman são material de apoio inestimável que foi usado extensivamente no preparo da disciplina proposta.
Recomendo fortemente a leitura.
![Page 50: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/50.jpg)
[diversos autores] py.Processing.org Tutorials Processing Foundation
site - em inglês
palavras chave: Processing, Python, Conceitos de Programação
[Leia online] py.processing.org/tutorials/
A versão transcrita para o Modo Python, e ainda muito incompleta, dos tutoriais
disponíveis no site principal Processing.org , são material de apoio muito útil que recomendo ser estudado.
![Page 51: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/51.jpg)
TOLLERVEY, Nicholas. Python in education - Teach, Learn, Program O'Reilly, 2014
ebook - em inglês
palavras chave: Introdutório, Python, educação
[ePUB grátis disponível] oreilly.com/programming/free/python-in-education.csp
O que torna Python tão apropriado para o ensino introdutório de programação?
No momento existe um forte movimento
pela inclusão da ciência da computação e programação no currículo escolar, este pequeno livro eletrônico gratuito em ePub traça um panorama do uso central que a linguagem Python tem tido na experiência de diversos educadores.
O autor cita em um trecho publicado no site
Radar O'Reilly cinco motivos pelos quais 1
Python é uma linguagem popular no ensino de programação:
● Código legível;
● Simplicidade óbvia; ● Extensibilidade aberta; ● Roda em diversas plataformas; ● Humanidade (a comunidade amistosa é a arma secreta do sucesso do Python).
1 5 reasons why Python is a popular teaching language http://radar.oreilly.com/2015/04/five-reasons-why-python-is-a-popular-teaching-language.html
![Page 52: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/52.jpg)
SHIFFMAN, Daniel. The Nature of Code: Simulating Natural Systems with Processing. Publicado pelo autor, Nova Iorque, 2013.
livro, site - em inglês
palavras chave: Processing, simulações físicas, avançado
[Leia online] natureofcode.com
Este título, mais avançado trata da simulação de sistemas
naturais usando a programação (com exemplos em Processing),
começando com vetores e forças, rapidamente simulando
sistemas de partículas, ensinando usar bibliotecas de terceiros e
por fim explorando temas como automatos celulares, fractais,
algorítmos evolutivos e redes neurais.
![Page 53: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/53.jpg)
DOWNEY, Allen B.
Think Python - How to Think
Like a Computer Scientist
O'Reilly; Green Tea Press
livro, site, PDF, ebook - em inglês
palavras chave: Python
[Leia online] www.greenteapress.com/thinkpython2/html/index.html
www.openbookproject.net/thinkcs/python/english2e/
Conceituada introdução a programação com Python,
disponível em diversas versões online, incluindo uma versão interativa . Há um esforço em andamento para 1
traduzir para o português da edição mais recente.
1 interactivepython.org/runestone/static/thinkcspy/index.html
![Page 54: [ALEXANDRE VILLARES] Monografia](https://reader030.fdocument.pub/reader030/viewer/2022020103/579073581a28ab6874aaf5b3/html5/thumbnails/54.jpg)
FORD, Paul. What is Code? Bloomberg, Businessweek, 11 de junho
de 2015
artigo, site - em inglês
palavras chave: Cultura digital, Introdutório
[Leia online] bloomberg.com/graphics/2015-paul-ford-what-is-code/
O que é código ou programa de computador?
Um computador é um relógio com
algumas vantagens, afirma o autor.
Programas de computador, código,
é o que faz funcionar um caixa
eletrônico, o site do seu banco,
uma máquina de lavar roupa, um
automóvel e é claro o seu celular e
seu computador.
Dependem da programação para
funcionar a maior parte dos
equipamentos do mundo em que
vivemos.
Este artigo que ocupou uma edição
inteira da revista Businessweek faz
uma grande e vigorosa explicação
do que é a programação e alguns
dos conceitos mais importantes
deste nosso universo tecnológico.