[ALEXANDRE VILLARES] Monografia

Page 1

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(),

r​ect(),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 ​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​ gr​a​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)


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

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: 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

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 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.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.