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
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
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
3
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
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
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 ideias1. 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.
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. 1
6
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
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 Numbers2 de John Maeda 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 Processing3: 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.
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. 2
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. 3
8
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 Mode4, com sintaxe da linguagem Python. Python tem sido largamente adotada como linguagem introdutória nas escolas de ciência da computação5 (como pode também ser 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.
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. 5
Text 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
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. 2. 3. 4.
Apresentação de um vocabulário e conceitos; Leitura, "destrinchamento", de um código exemplo fornecido; Experimentação, alterações do código exemplo; Criação pelo aluno de um novo sketch utilizando o vocabulário apresentado.
Aula 01 Referências essenciais, desenho, posição do mouse Vocabulário essencial
Vocabulário extra
coordenadas, pixels, background(),
ellipse(), line(), point(),
rect(),fill(), noStroke()
fullScreen(SPAN), declaração de uma
size(), width, height, mouseX,
função com def, e modos de cor.
mouseY, variáveis,
Referências
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…].
py.processing.org/tutorials/gettingstarted/ py.processing.org/tutorials/drawing/ extra: py.processing.org/tutorials/color/
Aula 01 Explicar e adaptar/refinar os elementos do exemplo â&#x20AC;&#x2039;input > Mouse2D
Aula 02 Condicional, loops e repetições, números aleatórios Vocabulário essencial
Vocabulário extra
if _ :, else,
interáveis, listas, tuplas, elif
for _ in _ :, while _ :, range() random().
Referências py.processing.org/reference/for.html py.processing.org/reference/while.html py.processing.org/reference/if.html
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.
py.processing.org/reference/random.html
Aula 03 Declarando funções, translações Vocabulário essencial
Vocabulário extra
def _:, translate(), with
return
Outros comentários
Referências
Declarar ou definir funções é uma
py.processing.org/reference/def.html
maneira de criar novas palavras em uma
processing.org/learning/basics/functions.html
linguagem.
(Java) processing.org/learning/transform2d/ (Java)
A translação do sistema de coordenadas é uma ferramenta sofisticada que permite simplificar o seu código.
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
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)
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)
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 grade π/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)
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)); }
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.
Aula 05 Mais opções de interação, teclado e mouse. Vocabulário essencial
Vocabulário extra
mousePressed, mouseDragged(),
easing, deque, millis()
keyPressed(), key, frameRate Outros comentários Além de saber a posição do mouse, o
Referências processing.org/examples/mousefunctions.html processing.org/examples/keyboardfunctions.html
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 mousePressed(): global locked, xOffset, yOffset if overBox: locked = True fill(255, 255, 255) else: locked = False xOffset = mouseX - bx yOffset = mouseY - by
def setup(): size(640, 360) global bx, by bx = width / 2.0 by = height / 2.0 rectMode(RADIUS)
def mouseDragged(): global bx, by
def draw(): global overBox
def mouseReleased(): global locked locked = False
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)
if locked: bx = mouseX - xOffset by = mouseY - yOffset
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 Z_code a_code z_code
= = = =
ord('A') ord('Z') ord('a') 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 the alphabet colors = []
# There are 26 characters in
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
Aula 06 Orientação a objetos: Classes, intâncias, métodos. Vocabulário essencial
Vocabulário extra
class, __init__, self
dot methods
Outros comentários
Referências
O paradigma de programação orientada a
py.processing.org/tutorials/objects/
objetos é o desafio a ser explorado na parte final do curso.
# "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)
→
→
Funcionalidade, métodos.
def drive(): xpos = xpos + xspeed if xpos > width: xpos = 0
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) display() drive()
def setup(): size(200, 200) def draw(): background(0) my_car.display() my_car.drive()
Aula 07 Imagens e recursos vetoriais externos Vocabulário essencial
Vocabulário extra
loadImage(), image(),
global, noLoop(), PShape
loadShape(), shape() Outros comentários
Referências processing.org/examples/loaddisplaysvg.html
Como usar imagens e elementos vetoriais desenhados em outros programas. img = loadImage(""http://processing.org/img/processing-web.png"")
image(bot = loadShape(""bot1.svg""), shape(bot, 110, 90, 100, 100))
Aula 08 Exportação de imagens, GIFs e PDFs Vocabulário essencial
Vocabulário extra
saveFrame(), beginRecord( PDF,
gifAnimation, GifMaker
"pdf/myartwork-####.pdf" ), endRecord()
Referências py.processing.org/tutorials/overview/ packtpub.com/article/exporting-from-processing
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")
Salvando imagens if ( keyPressed ): saveFrame("images/artwork-####.png")
Salvando um PDF add_library('pdf') beginRecord( PDF, "pdf/myartwork-####.pdf" ) endRecord()
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.
Aula 10 Listas de objetos e sistemas de partículas e outros comportamentos Vocabulário essencial
Vocabulário extra
PVector, [], flocking Outros comentários
Referências
Como simular agentes independetes ou
processing.org/examples/simpleparticlesystem.html
partículas usando listas de objetos.
processing.org/examples/flocking.html
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)
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()
Aula 10 Diana Lange 2014 http://www.openprocessing.org/sketch/156164
Aula 11 Bibliotecas externas Vocabulário essencial
Vocabulário extra
import & addlibrary
Fisica, Box2D, 3D
Outros comentários
Referências
Panorama de bibliotecas que podem
https://processing.org/reference/libraries/
extender o Processing.
Aula 12 Tipografia Vocabulário essencial
Vocabulário extra
f = createFont("Georgia", 24),
textAlign, RIGHT, CENTER, LEFT
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.
Referências processing.org/learning/text processing.org/tutorials/typography/
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.
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.
Anexo I - Plataformas e linguagens Avaliado
Algoritmos para arquitetos, designers e artistas - referências para o ensino de programação
por Alexandre B A VIllares, licença CC-BY-SA-4.0
Revisão 15.12.16
Referências recomendadas
Sistemas Operacionais Licença
Ambiente/IDE
Linguagem/Biblioteca
Sintaxe
Principais usos
site oficial
Windows
software proprietário
ArcGIS
Python
Python
Criação de ferramentas plug-in, GIS, geoprocessamento e visualização de dados
resources.arcgis.com/en/communities/python/
sim
Windows, Mac OS
software proprietário, licença educacional gratuita
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 open source
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 principiantes
parcialmente
Windows
software proprietário, licença educacional gratuita
Autocad
AutolLISP & VisualLISP
LISP
Criação de ferramentas plug-in e geometrias 2D e 3D complexas.
help.autodesk.com/view/ACD/2016/ENU/?guid=GUID265AADB3-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-andvisualization-software/generativecomponents
sim
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.htm l
sim
Windows, Mac OS
software livre ou open source
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 open source
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
parcialmente
Windows, Mac OS, Linux
software livre ou open source
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 open source
NodeBox for OpenGL
Python
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 open source
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 open source
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 open source
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 open source
P5*JS (Processing P5*JS Foundation)
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 open source
QGIS
Python
Python
Criação de ferramentas plug-in, GIS, geoprocessamento e visualização de dados
docs.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 educacional gratuita
Revit
Revit Macros
VB.NET, C#
Criação de ferramentas plug-in e geometrias 2D e 3D complexas.
parcialmente
Windows
software proprietário, licença educacional gratuita
Revit, Vasari
RevitPythonShell
Python
Criação de ferramentas plug-in e geometrias 2D e 3D complexas.
github.com/architecture-buildingsystems/revitpythonshell/blob/master/README.md
sim
Windows
software proprietário, licença educacional gratuita 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 open source
Scratch
Scratch
"visual"
Educação, jogos
scratch.mit.edu/
scratch.mit.edu
sim
Windows, Mac OS
software proprietário, licença educacional gratuita 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 educacional gratuita
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 educacional gratuita
Vectorworks
Vectorscript
Pascal
Criação de objetos paramétricos, ferramentas plug-in e geometrias 3D complexas.
developer.vectorworks.net/index.php/VectorScript
https://stackoverflow.com/questions/263774/where-can-i-findresources-on-vectorscript-programming-language
sim
Windows, Mac OS
software proprietário, licença educacional gratuita
Vectorworks
Python
Python
Criação de objetos paramétricos, ferramentas plug-in e geometrias 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
não
Windows
software proprietário
3D Max
MAXScript
MAXScript
não
Windows, Mac OS
software proprietário
Cinema 4D
Python
Python
não
Windows, Mac OS
software proprietário
Cinema 4D
Coffee
Coffee
software proprietário
Maya
Python
Python
nã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/Get tingStarted/index.html
parcialmente
não
http://computercraftedu.com/ http://pi.minecraft.net/?page_id=14
https://knowledge.autodesk.com/support/revit-products/learnexplore/caas/CloudHelp/cloudhelp/2016/ENU/Revit-Customize/files/GUID4DFDA8CD-B0FD-492E-8EDE-A28C29B1E316-htm.html
docs.autodesk.com/3DSMAX/16/ENU/3ds-Max-Python-APIDocumentation/index.html
*a tradução usual é "generativas" mas há discordâncias...
NOTA: Não foram incluídos os SDKs, voltados para o desenvolvimento profissional de extensões (em geral em C), que fogem ao escopo do ensino introdutório de programação.
Anexo II - Bibliografia e referências
Algoritmos para arquitetos, designers e artistas - referências para o ensino de programação
por Alexandre B A VIllares, licença CC-BY-SA-4.0
Revisão 15.12.16
ID
Título
Autores
Língua
Onde encontrar
Licenças especiais
inglês
[PDF disponível] 10print.org
Creative Commons BY-NC-SA 3.0
Ficha
Tipo
Edição
Palavras chave
01
sim
livro, PDF
10 print chr$(205.5+rnd(1)) :goto 10
BAUDOIN, Patsy; REAS, Casey; MARINO, Mark Cambridge, Mass.: MIT Press, Cultura digital, arte C.; DOUGLASS, Jeremy; BELL, John; SAMPLE, 2013. Mark; BOGOST, Ian; MONTFORT, Nick.
02
não
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: Practical Programming 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 Python Programaçã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 da versão interativa]
Edição online traduzida no IME-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 em 2015
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, Processing, Arte 2010
inglês
formandcode.com/
-
08
não
livro, PDF, GDL Cookbook site
NICHOLSON-COLE, David.
Marmalade, 2002
inglês
nottingham.ac.uk/~lazwww/cookbook/
-
09
não
livro
Generative Design: Visualize, Program, and Create with Hartmut Bohnacker (Author), Benedikt Gross Princeton Architectural Press, Processing, Arte (Author), Julia Laub (Author), Claudius 2012 Processing Lazzeroni (Editor)
inglês
www.amazon.com/Generative-DesignVisualize-ProgramProcessing/dp/1616890770/
-
10
não
livro, ebook
Getting Started with p5.js Making Interactive Graphics in JavaScript and Processing
REAS, Casey; FRY, Ben.
Maker Media, 2015
P5*JS, introdutório
inglês
shop.oreilly.com/product/0636920032076.do -
11
não
vídeo interativo
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ídeo interativo
Hello Processing
SHIFFMAN, Daniel.
Processing Foundation, 2013 Cultura digital, arte,
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
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 Simple Packages
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, Morgan Kaufmann, 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, Maker Media, 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 de Programação
[Acesse] http://p5js.org/tutorials/
?
19
sim
livro
Processing: A Programming Handbook forVisual Designers and Artists.
REAS, Casey; FRY, Ben.
MIT Press, Cambridge, 2007 e Introdutório, Essencial, inglês segunda edição revisada, Processing, Artes visuais 2014.
processing.org/handbook/
-
20
não
livro
Processing: Creative Coding and Computational Art in Processing 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 de Programação
inglês
[Acesse] https://processing.org/tutorials/ Licenças variadas, alguns são Creative Commons BY-NC-SA 4.0
22
sim
site
py.Processing.org Tutorials
[diversos autores]
Processing Foundation
Processing, Python, Conceitos de Programação
inglês
[Acesse] http://py.processing.org/tutorials/
Licenças variadas, alguns são Creative Commons 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/pythonin-education.csp
-
24
sim
livro, site
The Nature of Code: Simulating Natural Systems with Processing.
SHIFFMAN, Daniel.
Publicado pelo autor, Nova Iorque, 2013.
Processing, simulações físicas, avançado
inglês
[Leia online] natureofcode.com
Creative Commons BY-NC 3.0
25
sim
livro, site, Think Python - How to Think Like a Computer Scientist PDF, ebook
DOWNEY, Allen B.
O'Reilly; Green Tea Press
Python
inglês
[Leia online] Creative Commons BY-NC 3.0 www.greenteapress.com/thinkpython2/index.h tml
26
sim
artigo
FORD, Paul.
Bloomberg, Businessweek, 11 Cultura digital, de junho de 2015 Introdutório
inglês
[Leia online] bloomberg.com/graphics/2015- paul-ford-what-is-code/
What is Code?
ArchiCAD, GDL
Processing, Introdutório
inglês
-
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] 1 0print.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.
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
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.
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/
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/
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.
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/063692 0028659.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.
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/programadores1 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
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. 1
[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.
[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.
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/py thon-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'Reilly1 cinco motivos pelos quais 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).
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 1
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] n atureofcode.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.
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/thinkpyth on2/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 interativa1 . Há um esforço em andamento para traduzir para o português da edição mais recente.
1
interactivepython.org/runestone/static/thinkcspy/index.html
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-pau l-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.