Introdução à Programação Gráfica
com Processing
Aula 02 – Técnicas de Programação
Arrays
Arrays são listas de dados, utilizados para armazenar e manipular grandes
quantidades de dados do mesmo tipo de for...
Arrays
Exemplo
int num[] = new int[10]; //declaração de um array de 10 inteiros
void setup() {
size(800, 600);
smooth();
b...
Arrays
Exemplo com múltiplos arrays: siga o mestre
int s = 100; //elementos no array
float v = 5; //velocidade das ellipse...
Arrays
Exemplo com múltiplos arrays: siga o mestre
Programação Orientada a Objetos
Conceito
A orientação a objetos é um paradigma de análise, projeto e programação
de sistem...
Programação Orientada a Objetos
Classes
Uma classe é uma representação abstrata de objetos com características
afins. A cl...
Programação Orientada a Objetos
Atributos
São características de um objeto.
Basicamente a estrutura de
dados que vai repre...
Programação Orientada a Objetos
Exemplo
comparativo:
Programação Orientada a Objetos
Exemplo carro orientado a objeto:
Car myCar; //criação do objeto
void setup() {
size(300,2...
Programação Orientada a Objetos
Método construtor
O método construtor é chamado quando um objeto é instanciado, inicializa...
Programação Orientada a Objetos
Exemplo carro com construtor:
Car myCar; //criação do objeto
void setup() {
size(300,200);...
Programação Orientada a Objetos
Exemplo com array de objetos:
Car [] myCars = new Car[200]; //criação de array de objetos
...
Programação Orientada a Objetos
Exemplo com array de objetos:
Complexidade
Estudo de caso: movimento de particulas
Point[] ps = new Point[10];
void setup() {
size(800, 600);
smooth();
...
Complexidade
A função random
Gera números aleatórios. Cada vez que a função random () é chamada, ela
retorna um valor ines...
Complexidade
Estudo de caso: movimento browniano
Point[] ps = new Point[1000];
float big_d = 200;
void setup() {
size(800,...
Complexidade
Estudo de caso: movimento browniano
Complexidade
Estudo de caso: conexões de
partículas
Point[] ps = new Point[50];
float big_d = 200;
void setup() {
size(800...
Complexidade
Estudo de caso: conexões de partículas
Bibliotecas
Estendem Processing para além de gráficos e imagens, permitindo trabalhar com
áudio, vídeo e comunicação com o...
Próximos SlideShares
Carregando em…5
×

Introdução a programação gráfica com Processing - Aula 02

752 visualizações

Publicada em

Segunda parte do curso de introdução ao Processing promovido pelo Laboratório de Experiência Digital da Universidade Federal do Ceará. Nessa aula são abordados princípios básicos do uso de arrays e programação orientada a objetos.

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
752
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
53
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a programação gráfica com Processing - Aula 02

  1. 1. Introdução à Programação Gráfica com Processing Aula 02 – Técnicas de Programação
  2. 2. Arrays Arrays são listas de dados, utilizados para armazenar e manipular grandes quantidades de dados do mesmo tipo de forma automatizada. Cada pedaço de dados em um array é identificado por um número de índice que representa a sua posição no array. Os índices começam pelo 0, o que significa que o primeiro elemento do array é [0], o segundo elemento é [1], e assim por diante.
  3. 3. Arrays Exemplo int num[] = new int[10]; //declaração de um array de 10 inteiros void setup() { size(800, 600); smooth(); background(255); for (int i = 0; i < num.length; i++) { //laço para varrer o vetor num[i] = i*10; //incializa o elemento do indice i com valores de 0 até 90 fill(num[i]); //0 até 90 stroke(255-num[i]); //255 até 165; ellipse(50*i + 100, height/2, num[i], num[i]); } }
  4. 4. Arrays Exemplo com múltiplos arrays: siga o mestre int s = 100; //elementos no array float v = 5; //velocidade das ellipses int[] ds = new int[s]; //diametros float[] xs = new float[s]; //posições x float[] ys = new float[s]; //posições y void setup () { size(800, 600); background(255); smooth(); noStroke(); fill(0); for (int i = 0; i < ds.length; i++) { //inicializa os elementos dos arrays ds[i] = i; //inicializa os diametros com os valores dos indices xs[i] = width/2; //incializa as posições x e y no centro da tela ys[i] = height/2; } } void draw() { background(255); if (keyPressed) { //recebe entradas do teclado if (key == 'z') { //tecla z faz as bolas moverem-se mais rápido v -= 0.1; v = constrain(v, 1, 5); //limita os valores de v para no minimo 1 } // e no máximo 5 if (key == 'x') { //tecla x faz as bolas moverem-se mais devagar v += 0.1; v = constrain(v, 1, 5); } } xs[0] = mouseX; //primeiros elementos de posição x e y recebem a posição //do mouse ys[0] = mouseY; ellipse(xs[0], ys[0], ds[0], ds[0]); for (int i = 1; i < ds.length; i++) { //cada elemento dos arrays de posição //recebe um incremento em direção a posição do elemento anterior xs[i] += (xs[i-1] - xs[i])/v; ys[i] += (ys[i-1] - ys[i])/v; ellipse(xs[i], ys[i], ds[i], ds[i]); } }
  5. 5. Arrays Exemplo com múltiplos arrays: siga o mestre
  6. 6. Programação Orientada a Objetos Conceito A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de software baseada na composição e interação entre diversas unidades de software chamadas de objetos. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.
  7. 7. Programação Orientada a Objetos Classes Uma classe é uma representação abstrata de objetos com características afins. A classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos. Objetos/ Instâncias de classe Uma classe pode criar várias instâncias de si mesma com diferentes valores para seus atributos. Esses objetos que atuam efetivamente no sistema.
  8. 8. Programação Orientada a Objetos Atributos São características de um objeto. Basicamente a estrutura de dados que vai representar a classe. São análogos às variáveis. Métodos Definem o comportamento dos objetos. Um método em uma classe é apenas uma definição. A ação só ocorre quando o método é invocado através do objeto. Dentro do programa, a utilização de um método deve afetar apenas um objeto em particular. Normalmente, uma classe possui diversos métodos. São análogos às funções.
  9. 9. Programação Orientada a Objetos Exemplo comparativo:
  10. 10. Programação Orientada a Objetos Exemplo carro orientado a objeto: Car myCar; //criação do objeto void setup() { size(300,200); myCar = new Car(); //instanciação } void draw() { background(255); myCar.drive(); //chamada de métodos myCar.display(); } class Car{ color c ; //atributos float x ; float y ; float speed ; Car(){ //construtor c = color(0); x = width/2; y = height/2; speed = 1; } void drive() { //método x = x + speed; if (x > width) { x = 0; } } void display() { fill(c); rect(x,y,30,10); } }
  11. 11. Programação Orientada a Objetos Método construtor O método construtor é chamado quando um objeto é instanciado, inicializando os seus atributos. Através dele é possível inicializar os atributos com diferentes valores em cada instanciação através do comando new. O construtor não tem retorno.
  12. 12. Programação Orientada a Objetos Exemplo carro com construtor: Car myCar; //criação do objeto void setup() { size(300,200); myCar = new Car(color(255,0,0),0,50,5); //instanciação } void draw() { background(255); myCar.drive(); //chamada de métodos myCar.display(); } class Car{ color c ; float x ; float y ; float speed ; Car(color col, float ex, float why, float s){ c = col; x = ex; y = why; speed = s; } void drive() { x = x + speed; if (x > width) { x = 0; } } void display() { fill(c); rect(x,y,30,10); } }
  13. 13. Programação Orientada a Objetos Exemplo com array de objetos: Car [] myCars = new Car[200]; //criação de array de objetos void setup() { size(600,400); noStroke(); for(int i = 0; i < myCars.length; i++){ myCars[i] = new Car(color(random(255), random(255)), random(width), random(height), random(1,3)); } } void draw() { background(255); for(int i = 0; i < myCars.length; i++){ myCars[i].drive(); //chamada de métodos myCars[i].display(); } } class Car{ color c ; float x ; float y ; float speed ; Car(color col, float ex, float why, float s){ c = col; x = ex; y = why; speed = s; } void drive() { x = x + speed; if (x > width) { x = 0; } } void display() { fill(c); rect(x,y,30,10); } }
  14. 14. Programação Orientada a Objetos Exemplo com array de objetos:
  15. 15. Complexidade Estudo de caso: movimento de particulas Point[] ps = new Point[10]; void setup() { size(800, 600); smooth(); background(255); for (int i = 0; i < ps.length; i++) { ps[i] = new Point(width/2, height/2, 2, color(i), cos(i),sin(i)); } } void draw() { for (int i = 0; i < ps.length; i++) { ps[i].display(); ps[i].update(); } } class Point { float x, y; float vx, vy; float d; float v; color c; Point(float ex, float why, float di, color col, float v1, float v2) { x = ex; y = why; d = di; c = col; vx = v1; vy = v2; } void display() { fill(c); noStroke(); ellipse(x, y, d, d); } void update() { x += vx; y += vy; if(x >= width || x <= 0){ vx *= -1; } if(y >= height || y <= 0){ vy *= -1; } } }
  16. 16. Complexidade A função random Gera números aleatórios. Cada vez que a função random () é chamada, ela retorna um valor inesperado dentro do intervalo especificado. //Sintaxe// random(high); random(low, high);
  17. 17. Complexidade Estudo de caso: movimento browniano Point[] ps = new Point[1000]; float big_d = 200; void setup() { size(800, 600); smooth(); background(255); for (int i = 0; i < ps.length; i++) { ps[i] = new Point(width/2, height/2, 1, color(random(255)), random(5),random(5)); } } void draw() { //background(255); for (int i = 0; i < ps.length; i++) { ps[i].display(); ps[i].update(); } } class Point { float x, y; float vx, vy; float d; float vxc,vyc; color c; Point(float ex, float why, float di, color col, float v1, float v2) { x = ex; y = why; d = di; c = col; vxc = v1; vyc = v2; vx = random(-1,1)*vxc; vy = random(-1,1)*vyc; } void display() { fill(c); noStroke(); ellipse(x, y, d, d); } void update() { x += vx; y += vy; vx = random(-1,1)*vxc; vy = random(-1,1)*vyc; } }
  18. 18. Complexidade Estudo de caso: movimento browniano
  19. 19. Complexidade Estudo de caso: conexões de partículas Point[] ps = new Point[50]; float big_d = 200; void setup() { size(800, 600); smooth(); background(255); for (int i = 0; i < ps.length; i++) { ps[i] = new Point(random(width), random(height), 20, color(0), random(-1, 1)*2, random(-1, 1)*2, 50); } } void draw() { background(255); for (int i = 0; i < ps.length; i++) { ps[i].display(); ps[i].update(); } } class Point { float x, y; float vx, vy; float d; color c; float rad; Point(float ex, float why, float di, color col, float v1, float v2, float cr) { x = ex; y = why; d = di; c = col; vx = v1; vy = v2; rad = cr; } void display() { fill(c); noStroke(); ellipse(x, y, d, d); stroke(0); strokeWeight(3); traceLines(); } void update() { x += vx; y += vy; if (x >= width || x <= 0) { vx *= -1; } if (y >= height || y <= 0) { vy *= -1; } } void traceLines() { for (int i = 0; i < ps.length; i++) { //percorre um array de partículas, testando se elas se tocam float distance = dist(x, y, ps[i].x, ps[i].y); //se a soma dos raios de duas partículas for maior que a distancia entre seus centros, elas se tocam if (ps[i].rad + rad >= distance) { line(x, y, ps[i].x, ps[i].y); } } } }
  20. 20. Complexidade Estudo de caso: conexões de partículas
  21. 21. Bibliotecas Estendem Processing para além de gráficos e imagens, permitindo trabalhar com áudio, vídeo e comunicação com outros dispositivos. As seguintes bibliotecas estão incluídas com o software de Processing. Para incluir uma biblioteca, selecione o nome dela através da opção “Import Library“ no menu Sketch. Essas bibliotecas são de código aberto; o código é distribuído com o Processing. Video Lê imagens de uma camera, reproduz e cria arquivos de filme. DXF Export Cria arquivos DXF para exportar geometrias para outros programas. Funciona com gráficos baseados em triângulos, incluindo polígonos, caixas e esferas. Serial Envia dados entre Processing e um hardware externo através da comunicação serial (RS- 232). PDF Export Cria arquivos PDF vetorizados, que podem ser escalados para qualquer tamanho e impressos em alta resolução. Network Envia e recebe dados pela Internet através de clientes e servidores. Minim Usa JavaSound para provir uma biblioteca de áudio de fácil uso, ao mesmo tempo que permite flexibilidade para usuários avançados.

×