SlideShare uma empresa Scribd logo
1 de 105
IntroduçãoàProgramaçãoem Processing Programa de DoutoramentoemCiência e Tecnologiadas Artes – Arte Interactiva Jorge C. S. Cardoso http://jorgecardoso.eu 19 Fevereiro 2011
Tópicos Conceitos de programação de computadores Hardware, evolução das linguagens de programação, códigofontevscódigomáquina, máquina virtual  Estruturasbásicas de programaçãoem Processing Variáveis, condições, ciclos, funções Programaçãoorientada a objectos (OOP) Classes, objectos, herança, construtores, destrutores, encapsulamento, herança, method overriding
Hardware Processador CPU (Central Processing Unit) Éa parte de um sistema de computadorqueexecuta as instruções de um programa de computador
Hardware Memória RAM (Random Access Memory) Volátil (precisa de alimentaçãoeléctricaparapreservaros dados) O CPU lêe escrevedirectamenteparaestamemória O programaque o CPU executaestáescritonamemória RAM
Hardware Memóriapersistente Nãovolátil (mantémos dados mesmosemalimentaçãoeléctrica) Exemplos Disco duro Memória Flash (cartões SD, Flash pen, …) Osprogramassãoarmazenadosnestamemória Quandoosexecutamospassampara a RAM
Linguagens de Programação Programa Sequência de instruçõesque o CPU executa As instruçõesestãona RAM Exemplo Somar 3 + 5 e multiplicar o resultadopor2 Como éque o CPU fazisto? 
CPU Possui memória interna  Muito pouco espaço As unidades de memória interna do processador chamam-se registos  Conhece uma lista de instruções Percorre a memória RAM e lê e executa instrução a instrução
Evolução das linguagens Osprimeiros “programadores” de computadorescreviamprogramasemnúmeros Usavamdirectamente a tabela de instruções do processador muitosujeito a erros... muitotrabalhoso... Criou-se umalinguagemmaisfácil de decorar e utilizar, baseadaemmnemónicas Assembly Language  .model small .stack .data message db "Hello world, I'm learning Assembly !!!", "$" .code main proc movax,seg message movds,ax mov ah,09 lea dx,message int 21h mov ax,4c00h int 21h main endp end main
Evolução das linguagens ,[object Object]
Linguagens de alto-nívelsource: http://chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf
Códigofonte ,[object Object],int addTwoNumbers( int num1, int num2 ){    //This adds two numbers    return num1 + num2;    /* Some other comment    just to show how to do it    for multiple lines. */}
CódigoMáquina .code main proc movax,seg message movds,ax mov ah,09 lea dx,message int 21h mov ax,4c00h int 21h main endp end main  ,[object Object]
O códigomáquinaresulta de um processo de tradução do códigofontenumalinguagementendidadirectamentepeloprocessador (sequência de números),[object Object]
Convertecódigofonteemcódigomáquina (específicoparacada CPU - e.g. Intel Atom, Apple A4)
Códigomáquinageradopelocompiladortambémconhecidocomo "códigoobjecto"
Linker
Combinaosdiferentesmódulos de códigomáquina (i.e. previamentecompilados) e gera o ficheiro final queiráserexecutadopela CPU
Permite o uso de bibliotecasdisponibilizadasporterceiros,[object Object]
A linguagem Java é compilada em código máquina para um processador virtual (máquina virtual)
O código máquina resultante é chamado "bytecode“
Em Java não existe necessidade de "linkagem"
Uma aplicação Java consiste num conjunto destes ficheiros (e não apenas um)
A máquina virtual trata de carregar para a memória os ficheiros necessários à medida que o programa executa,[object Object]
Este processador virtual é implementado através de software em qualquer computador
Para correr um programa Java temos de ter instalado este processador virtual (Java Virtual Machine - JVM)
A vantagem é que o nosso programa corre em qualquer plataforma que tenha uma JVM instalada (só temos de compilar uma vez),[object Object]
Linguagens de Programação Na descrição de um programaéessencialdefinir: Ponto de entrada. Qual a primeirainstrução a executar? Sequência: comoavanço de instruçãoeminstrução?
Linguagens de Programação ,[object Object]
Permite a criação de programasquepodemserexecutadosemváriasplataformassemmodificação
A suautilizaçãotornou-se maisconhecidaatravés das applets
pequenosprogramasquepodemserexecutadosnum browser.
Osprogramasescritosem Java sãocompiladosnumcódigomáquina virtual queédepois (aquando da execução do programa) transformadoemcódigomáquinareal,[object Object]
Processing “Free to download and open source Interactive programs using 2D, 3D or PDF output OpenGL integration for accelerated 3D For GNU/Linux, Mac OS X, and Windows Projects run online or as double-clickable applications Over 100 libraries extend the software into sound, video, computer vision, and more... Well documented, with many books available” – http://processing.org
Processing Examples Animation  Nokia Friends (http://postspectacular.com/process/20080810_nokiafriends) ImaViz – Sound Visualizer (http://www.openprocessing.org/visuals/?visualID=9923hh) “Music” Ball droppings (http://balldroppings.com/js/) PSO  Video Catalina music video (http://moullinex.tumblr.com/post/3180520798/catalina-music-video) Papa Roach – Getting away with murder (http://processing.org/exhibition/works/papa/index.html) 3D Hair Ball (http://www.openprocessing.org/visuals/?visualID=12399) (Generative) Design Marius Watz (http://www.unlekker.net) http://artes.ucp.pt/blogs/index.php/PMultimedia/2009/10/03/capas-de-livros Games  Pong Multiplayer (http://artes.ucp.pt/ftp/a0306005/index.html) Instalations My little piece of privacy (http://www.niklasroy.com/project/88/my-little-piece-of-privacy/)
Processing IDE (Integrated Development Environment)
19-02-2011 Jorge Cardoso 22 Processing - eixos da janela gráfica
Processing Algumasinstruções size background line, rect, ellipse, curve fill, stroke noFill, noStroke
Exemplo 1 size(400, 600); background(255); stroke(0); strokeWeight(3); line(100, 150, 300, 450); line(100, 450, 300, 150); // curva superior strokeWeight(2); stroke(0); noFill(); curve(0, 0, 100, 150, 300, 150, 400, 0); // pontos de controlo //fill(255, 0, 0); //noStroke(); //ellipse(0, 0, 5, 5); //ellipse(400, 0, 5, 5); //curva inferior stroke(0); noFill(); curve(0, 600, 100, 450, 300, 450, 400, 600);
Introduçãoàprogramação  Comentários Variáveis Condições Ciclos Funções
Aviso! http://xkcd.com/859/
IntroduçãoàProgramação Comentários Servempara o programador se ajudar a simesmo a lembrarporqueéque fez as coisas de determinada forma São ignoradaspelocompilador // Comentáriode umalinha /* Comentário    de  várias linhas */ intaddTwoNumbers( int num1, int num2 ){    //a comment: add the two numbers    int result = num1 + num2;     /* Some other comment    just to show how to do it    for multiple lines. */    return result;}
Variáveis Variáveissãouma forma de armazenarvaloresdurante a execução de um programa Uma variávelé um nomequeutilizamosparanosreferirmos a um valor Podemosalterar o valor durante o programa Sempreque o nomeéutilizado no programaéautomaticamentesubstituídopelo valor correspondente intsomeNumber; intanotherNumber; int result; someNumber = 3; anotherNumber = 2; //result stores the value 3 * 2 = 6 result = someNumber * anotherNumber;
Variáveis Antes de podermosusarumavariáveltemos de a declarar.  A declaraçãoindica o tipo de dados que a variávelvaiguardar. Inteiros (int, long)  Decimais(float, double) Lógicos (boolean) Caracteres (char) Sintaxe: <tipo> nomeDaVariavel;<tipo> nomeDaVariavel = <valorinicial>; intmyNumber; long anotherNumber = 13; float aFloatNumber = 0.24; double aDoublePrecisionNumber = 1.23e2; booleanisActive = true; char aLetter = 'P';
Variáveis Para guardarmos um valor numavariáveltemos de atribuí-lo àvariável. minhaVariavel = <valor>; Aquiloqueatribuimos a umavariávelé o resultado de umaexpressão. Uma expressãopodeser: Literal : Um valor escritodirectamente no código idade= 33; // 33 é um literal Variável: O valor de umavariável idade= idadeJoao; // idadeJoaoéoutravariável Função: O valor devolvidoporumafunçãodefinidapreviamente idade= random(10); // random éumafunção  Expressõesanterioresligadas com operadoresaritméticos : Definiçãorecursiva!  idade= idadeJoao + 10 * 3;
Variáveis Algumasrestrições no uso de nomesemvariáveis: Nomes das variáveistêmcomeçarcom umaletra do alfabeto (dígitosnãosãopermitidos) oupor um underscore (_) Nomes de variáveispodemconterletras e dígitos, mas espaçosou outros caracteresespeciaisnãosãopermitidos. Osnomes de variáveissão case sensitive (e.g. myNumberédiferente de mynumber) Palavrasreservadas do Java nãopodemserusadascomonomes de variáveis (e.g. int, float, for, while, do, break, ...) Osnomes das variáveisdevemserescolhidos de forma a tornar o seusignificado o maisclaro e legívelpossível.
Exemplo 2 intcenterX = 100; intcenterY = 100; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); // curva superior strokeWeight(2); stroke(0); noFill(); curve(centerX-200, centerY-300, centerX-100, centerY-150, centerX+100, centerY-150, centerX+200, centerY-300); //curva inferior stroke(0); noFill(); curve(centerX-200, centerY+300, centerX-100, centerY+150, centerX+100, centerY+150, centerX+200, centerY+300);
Operadores Operadoresaritméticos + (adição) - (subtracção) * (multiplicação) / (divisão, inteiraoufraccionária) % (resto da divisãointeira - modulo) Osoperadoresnumaexpressãosãoaplicados da esquerdapara a direita, mas os operadores *, / e % têmprecedênciasobre + e - Se quisermosalterar a precedência, temos de usarparêntesis:  (  ) 1+2*3 = 1+6 = 7 (1+2)*3 = 3*3 = 9
Exercício 1 Crie um programaem Java que: armazeneemduasvariáveisosvalores 5 e 2 realize a divisão entre as variáveis (i.e. 5 / 2) guarde o resultadonumavariável imprima o resultado da operação Decisões a tomar: Quetipo de variáveisdefinir? int, float, double, ...?? Quetipo a usarpara o resultado da divisão? int, float, double, ...?? Existemdiferenças no resultado? divisãointeira VS divisãovírgulaflutuante...
Solução intaNumber = 5; intanotherNumber = 2; float aFloat = 2.0f; float result; result = aNumber / anotherNumber; println(result);
Condições ,[object Object],[object Object]
As chavetas{ }delimitam as acçõesexecutadascondicionalmente. if ([condição])  {      [acções]  }
Condiçõesif A condiçãoéumaexpressão do tipoboolean  Literal true ou false  Variável (boolean) com o valor true ou false  Expressão com operadorescondicionais booleanisActive = true; if(isActive) //eqv. a if (isActive == true) {     //do something...     isActive = false; }
Exemplo 3 intcenterX = 200; intcenterY = 300; boolean v1 = false; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v1) {   // curva superior   curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150);   // curva inferior   curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); }  else {   // curva superior   curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150);   // curva inferior   curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); }
Condições if As condiçõesusadasnos testes podemusarosoperadorescondicionais:  igual a: == (atenção!)  maior do que: >  menor do que: <  maiorouigual a: >=  menorouigual a: <=  diferente: !=  O resultado de umaoperaçãocondicionalé um valor true ou false intaNumber = 10; intanotherNumber = 6; boolean correct = false;  if(9 == aNumber)     correct = true; if (anotherNumber > aNumber)     aNumber = anotherNumber;     
Condições if Algumasvariantes da estrutura if: If... Else...  If... Else if...  If... Else if... Else... Switch
Condições if... else... O iftambémnospermiteexecutaracções se a condição for falsa if (<condição>) { <acções A> //executado se a condição for true... } else {     <acções B> //executado se a condição for false... }
Condições if... else if Épossívelcombinar ifs sequencialmente if (<condição A>) {     <acções A> } else if (<condição B>){      <acções B> } else {      <acções C> }
OperadoresLógicos Épossíveltestarcondiçõescomplexasatravés dos operadoreslógicos: operadoresquecombinamcomparações simples: AND : As duascomparaçõestêm de serverdadeirasaomesmo tempo OR : Pelomenosuma das comparações tem de serverdadeiro NOT : Inverte (i.e. nega) o valor da comparação
OperadoresLógicos AND : && OR : || NOT : ! if (x > 10 && x < 20) { println(“Entre 10 e 20”); } if (x < 10 || x > 20) { println(“Fora do intervalo [10; 20]”); } if (!(x < 10)) { println(“X não é menor do que 10”); }
Exemplo 4 intcenterX = 200; intcenterY = 300; boolean v1 = true; boolean v2 = true; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v2) {   // curva superior   curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150);   // curva inferior   curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); } if (v1) {   // curva superior   curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150);   // curva inferior   curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); } if (v1 && v2) { strokeWeight(1);   fill(150);   ellipse(centerX, centerY-150-20, 40, 40); }
Exercício 2 Implementeum programaque: Defina 3 variáveisparaarmazenartrêsinteirosàescolha (num1, num2 e num3) Teste se num1 éigual, maioroumenorque num2, e imprimaumamensagem do tipo "7 émaior do que 3". No caso de num1 sermenorque num2, verifique se num3 estádentro do intervalo [num1, num2], e emcasoafirmativoimprimaumamensagem do tipo "7 está entre 2 e 15". Divida num1 por num2, imprimindo o resultado, tendo o cuidado de verificar se num2 édiferente de zero! Divisõespor zero em Java provocamo "crash" da aplicação!
Exercício 2 int num1 = 5; int num2 = 12; int num3 = 7; if(num1 == num2) {     println(num1 + “ is equal to ” + num2); } else if(num1 > num2){     println(num1 + “ is bigger than “ + num2); } else {     println(num1 + “ is smaller than ” + num2);       if (num3 > num1 && num3 < num2) {     println(num3 + “ is between “ + num1 + “ and “ + num2);     } } if(num2 != 0){     println("A divisão de ” + num1 + “ por “ + num2 + “ é “ + ((float)num1/num2)); }
Ciclos Osciclospermitem-nosexecutar um conjunto de instruçõesrepetidamente Existemduas classes de ciclos: Ciclosqueexecutam um númeropré-determinado de vezes: for Ciclosqueexecutamenquantoumacondiçãoéverdadeira: do e while
Ciclofor Executado um númeropré-determinado de vezes for (<inicialização>; <condição>; <incremento>)  {     <acções>} Variável de cicloinicia-se em zero (e declara-se dentro do própriociclo) Condição simples com o limite de iterações Incremento da variávelemumaunidade (através do operadorincremento ++) for (inti = 0; i < 10; i++) {      println("Counting… ” + i);  }
Exemplo 5 if (v1 && v2) { strokeWeight(1); fill(150); for (int i = 0; i < 5; i++) { ellipse(centerX, centerY-150-20-100+i*20, 40, 40);   }   /* int n = 10; for (int i = 0; i < n; i++) { ellipse(centerX, centerY-150-20-100+i*100/n, 40, 40);   }*/ /* for (int y = centerY-150-20-100; y < centerY-150-20; y = y + 1) { ellipse(centerX, y, 40, 40);   }*/   }
Ciclo while Executa um conjunto de instruçõesenquantoumacondição for verdadeira O testeéfeito antes da execução while (<condição>)  {     <acções> } inti = 0; while (i <= 10) {     println("Counting... “ + i);     i = i + 1; }
Ciclo do Executa um conjunto de instruçõesenquantoumacondição for verdadeira O testeéfeitodepois da execução do {    <acções> } while (<condição>); inti = 0; do {     println("Counting...  “ + i);     i = i + 1; } while (i <= 10);
Exercício Implementeum programaque calculeumasequência de Fibonacci, segundo a seguinterelaçãorecorrente: F(n) = F(n-1) + F(n-2), com F(0) = 0 e F(1) = 1 e.g.: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 4.1. Imprimaosprimeiros 100 números da sequência 4.2. Imprimatodososnúmeros da sequênciainferiores a 10000
Solução intnumFibonacciNumbers = 100; long valN = 0; long valN_1 = 1; for (int n = 0; n < numFibonacciNumbers; n++) {     println(n + “ -> “ + valN));     valN = valN + valN_1;     valN_1 = valN - valN_1; }
Arrays Um array é um contentor de valores do mesmotipoarmazenadanumaregiãocontígua da memória RAM Um vector tem um nome e váriasposiçõesquepodemseracedidasatravés de um índice (entre parêntesis rectos [ ] ) : O índice tem de ser um valor inteiro     idade[0] = 23;    idade[1] = 47;    idade[2] = 11;    idade[3] = 92;    idade[4] = 76;    intage = idade[3]; //age = 92
Arrays - Declaração e Inicialização Tal comoqualqueroutravariável, énecessárioindicarqual o tipo de valoresque o array iráguardar.  Énecessáriotambémdefinirqual o tamanho do array, antes de o utilizar. <tipo> meuArray[]; meuArray = new <tipo>[tamanho]; intidades[]; idades = new int[5];
Arrays - Declaração e Inicialização ,[object Object], intidade[] = {23, 47, 11, 92, 76};
Arrays - índices Indiceéumaexpressão do tipointeiro Literal idade[1] Variável idade[i] Expressãocomplexa idade[2*i+n] Podeserusadoparapercorrer um array através de um ciclo for, while, ...
Arrays - índices Percorreros dados de um array Para leitura Para escrita O índicenãodeveultrapassar o tamanho do array! int age = idade[5] // ERROR!!     intarraySize = 5; //escreve dados no array for (inti=0; i < arraySize; i++) {     //apenas um exemplo...         idade[i] = (i+1)*(i+1);  } //imprimeidadesinferiores a 20 for(inti=0; i < arraySize; i++) {     if (idade[i] < 20)         println(idade[i]); }
Exemplo 6 intcenterX = 200; intcenterY = 300; boolean v1 = true; boolean v2 = true; int n = 10; // o numero de circulos color colors[] = new color[n]; for (inti = 0; i < n; i++) {   colors[i] = color(random(255), random(255), random(255)); } size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v2) {   // curva superior   curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150);   // curva inferior   curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); } if (v1) {   // curva superior   curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150);   // curva inferior   curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); } if (v1 && v2) { strokeWeight(1);   for (inti = 0; i < n; i++) {     fill(colors[i]);     ellipse(centerX, centerY-150-20-100+i*100/n, 40, 40); } }
Funções Uma função* éumaporção de códigoqueefectuaumatarefaespecífica.  A divisão de um programaemváriasfunçõespermitecriarprogramasmaisestruturados, fáceis de manter e permitetambém a reutilização de código Na sua forma mais simples, umafunçãoé um bloco de código com um nomequepodemosusaremqualquer parte do programapara "chamar" e executaressebloco de código * Existemmuitasdesignaçõespara o conceito de função: procedimento, rotina, subrotina, método, subprograma. Todoselessignificam a mesmacoisa, mas sãousadosemdiferentescontextos.
Funções void draw()  {     println("Executa o programa");     fazTarefaEspecifica1(); //chamada a umafunção!     fazTarefaEspecifica2(); //chamada a outrafunção!     fazTarefaEspecifica1(); //chamaoutravez a função 1! } void fazTarefaEspecifica1() {     println("Estafunçãoexecutaumasérie de operaçõesparacompletar a tarefa 1"); } void fazTarefaEspecifica2() {     println("Estafunçãoexecutaumasérie de operaçõesparacompletar a tarefa 2"); }
Funções Sintaxeparadefinir a função  void nomeFunção()   {      //código da função... } void é um tipo especial quesignifica "vazio", "semtipo" e nestecasoindicaque a funçãonãoretornaqualquer valor (verpróximos slides) Para invocar (i.e., executar o códigodentro da função)       nomeFunção();
Funções com Parâmetros Funções com parâmetros Podemoperarsobre dados diferentes de cadavezqueexecutam. Nestecaso, o códigoquechama a funçãodevepassarosvaloressobreosquais a funçãoiráexecutar Para issotemos de parametrizar a função (i.e., definirque dados o programa principal deveenviarpara a função) Usode funções com parâmetros (de entrada) Sintaxeparadefinir  funções com parâmetros void nomeFunção(<tipo> nomeParam1, <tipo> nomeParam2, [...])  {         //código da função... } Para invocar (i.e., executar o códigodentro da função) nomeFunção(valorParam1, valorParam2);
Funções com Parâmetros void draw()  {     soma(1, 2); // escreve "3"     soma(3, 5); // escreve "8" } void soma(int num1, int num2)  {     intresultado;     resultado = num1 + num2;     println(resultado); }
Funções com valor de retorno Funções com valor de retorno int soma(int num1, int num2) Emfunçõescomo a anterior, fazmaissentidoque a funçãodevolva o valor calculadoaocódigoquechamou a função (emvez de o imprimir, comoemexemplosanteriores...) Para tal a funçãodeveindicarqueretorna um valor e qual o seutipo (nesteexemplo um int) Na implementação da funçãoéobrigatóriofinalizar com um comando return
Funções com valor de retorno void draw()     int num1;     int num2;     int r;     num1 = 1;     num2 = 2;     r = soma(num1, num2);      println(r); } int soma(int num1, int num2) {     intresultado;     resultado = num1 + num2;     return resultado;  }
Funções com valor de retorno Sintaxeparadefinir  funções com valor de retorno <tipo> nomeFunção(<tipo> nomeParam1, <tipo> nomeParam2, [...])  {     //código da função...     return valorDeRetorno; } Para invocar (i.e., executar o códigodentro da função) variavel = nomeFunção(valorParam1, valorParam2); Nãoénecessárioatribuir o resultado a umavariável, podeserusadodirectamentenumaexpressãoouusadocomoparâmetroparaoutrafunção
Exemplo 7 void setup() {   size(400, 600); } void draw() {   background(255); duploCone(0, 0, 100, 100); duploCone(100, 100, 200, 200); duploCone(200, 200, 300, 300); duploCone(300, 300, 400, 400); } void duploCone(int x1, int y1, int x2, int y2) {   stroke(0); strokeWeight(3);   line(x1, y1, x2, y2);   line(x1, y2, x2, y1); strokeWeight(2);   stroke(0); noFill();   // curvassuperiores   curve(x1-100, y1-100,x1, y1, x2, y1, x2+100,y1-100);   curve(x1-100, y1+100,x1, y1, x2, y1, x2+100,y1+100);     // curvasinferiores   curve(x1-100, y2-100,x1, y2, x2, y2, x2+100,y2-100);   curve(x1-100, y2+100,x1, y2, x2, y2, x2+100,y2+100); }
Visibilidade das variáveis As variáveispodemserdeclaradasemváriossítios do programa fora de qualquerfunção (variável global) dentro de umafunção (variável local àfunção) dentro de outros blocos de código: { } (ifs, ciclos, etc) O sítioondesãodeclaradasdeterminaondepodemserlidas/escritas Uma variável global podeserusadaemqualquer parte do programa Uma variável local apenaspodeserusada no bloco (funçãooubloco de código) ondefoideclarada, incluindoblocosinternos a essebloco
Visibilidade das variáveis Se tentarmosusarumavariável local fora do blocoondefoideclarada, o compiladorassinala um erro No entanto, énecessárioalgumcuidadoquando as variáveisglobais e locaistêm o mesmonome Nessasituaçãoéusada a variável com menorvisibilidade (a quefoideclaradadentro do bloco superior hierarquicamentemaispróximo)
Processing – animação Exemplo9 int x; void setup() {   size(400, 400); frameRate(10);   x = 0; } void draw() {   background(0);   fill(244); rect(x, 10, 40, 40);   x = x + 1; }
Programação Orientada a Objectos
Objectos no mundo real Objectos no mundo real podemserdescritosatravés de duascaracterísticasessenciais: atributose comportamento.   Porexemplo, o cão do João tem:   ,[object Object]
Cor:  castanho
Tamanhopêlo: curto
Raça: Rafeiro
Idade: 3 anos
Nome: Bobi
comportamento
corre
ladra
senta-se
come
dorme,[object Object]
Cor: azul escuro
Marca: Opel
Modelo: Corsa
Velocidade: parado
Combustível: 30%

Mais conteúdo relacionado

Mais procurados

Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicaçõesnataferraz
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ideHeider Lopes
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02profwtelles
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)guest14543db
 
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Arthur Francisco Lorenzon
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013Arthur Francisco Lorenzon
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivosFlávio Freitas
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosFabio Spanhol
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlangelliando dias
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosRafael Martins
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoFátima Bernardes
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação cClausia Antoneli
 

Mais procurados (20)

Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)
 
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
Mini Curso Programação Paralela utilizando OpenMP - SACTA 2013
 
MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013MiniCurso Programação Paralela com OpenMP - SACTA 2013
MiniCurso Programação Paralela com OpenMP - SACTA 2013
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlang
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
18. arduino
18. arduino18. arduino
18. arduino
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
 

Semelhante a Introdução à Programação em Processing

Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturasFábio Andrade
 
conhecer o computador
conhecer o computadorconhecer o computador
conhecer o computadorgongas
 
computador
computadorcomputador
computadorgongas
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionaisRobson Ferreira
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadoresTiago
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxjudsonBg3
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosJoseVieira75
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de MicroprocessadoresDiogo Silva
 
Hardware e software
Hardware e softwareHardware e software
Hardware e softwarejotacabral
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisHelder Lopes
 

Semelhante a Introdução à Programação em Processing (20)

ptt
pttptt
ptt
 
Aula 03 isc -softwares-hardwares-arquiteturas
Aula 03   isc -softwares-hardwares-arquiteturasAula 03   isc -softwares-hardwares-arquiteturas
Aula 03 isc -softwares-hardwares-arquiteturas
 
conhecer o computador
conhecer o computadorconhecer o computador
conhecer o computador
 
computador
computadorcomputador
computador
 
Code Masters
Code MastersCode Masters
Code Masters
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Software e hardware
Software e hardwareSoftware e hardware
Software e hardware
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 
Hardware e sistemas operacionais
Hardware e sistemas operacionaisHardware e sistemas operacionais
Hardware e sistemas operacionais
 
Organização de computadores
Organização de computadoresOrganização de computadores
Organização de computadores
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptx
 
Aula 1
Aula 1Aula 1
Aula 1
 
EmuTerMF
EmuTerMFEmuTerMF
EmuTerMF
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de Microprocessadores
 
Hardware e software
Hardware e softwareHardware e software
Hardware e software
 
Hardware e software
Hardware e softwareHardware e software
Hardware e software
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
 

Mais de Jorge Cardoso

Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...
Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...Jorge Cardoso
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-FrameJorge Cardoso
 
Journal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJournal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJorge Cardoso
 
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationEvaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationJorge Cardoso
 
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...Jorge Cardoso
 
Digital tools for exploring roman mosaic
Digital tools for exploring roman mosaicDigital tools for exploring roman mosaic
Digital tools for exploring roman mosaicJorge Cardoso
 
Interaction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityInteraction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityJorge Cardoso
 
Interacção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualInteracção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualJorge Cardoso
 
PhD defense presentation
PhD defense presentationPhD defense presentation
PhD defense presentationJorge Cardoso
 
Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Jorge Cardoso
 
Evaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsEvaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsJorge Cardoso
 
Interaction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artInteraction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artJorge Cardoso
 
PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012Jorge Cardoso
 
PuReWidgets toolkit
PuReWidgets toolkit PuReWidgets toolkit
PuReWidgets toolkit Jorge Cardoso
 
Assessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionAssessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionJorge Cardoso
 
Computer vision techniques for interactive art
Computer vision techniques for interactive artComputer vision techniques for interactive art
Computer vision techniques for interactive artJorge Cardoso
 
Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Jorge Cardoso
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 

Mais de Jorge Cardoso (20)

Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...Criação de Ambientes  de Realidade Virtual  usando A-Frame - CubeCraft Toys -...
Criação de Ambientes de Realidade Virtual usando A-Frame - CubeCraft Toys -...
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-Frame
 
Journal of Science and Technology of the Arts
Journal of Science and Technology of the ArtsJournal of Science and Technology of the Arts
Journal of Science and Technology of the Arts
 
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic AugmentationEvaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
Evaluation of Multi-Platform Mobile AR Frameworks for Roman Mosaic Augmentation
 
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
ConímbrigAR A Prototype Augmented Mobile Application for Exploration of Roman...
 
Digital tools for exploring roman mosaic
Digital tools for exploring roman mosaicDigital tools for exploring roman mosaic
Digital tools for exploring roman mosaic
 
Interaction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual realityInteraction techniques for locomotion in virtual reality
Interaction techniques for locomotion in virtual reality
 
Interacção em ambientes de realidade virtual
Interacção em ambientes de realidade virtualInteracção em ambientes de realidade virtual
Interacção em ambientes de realidade virtual
 
PhD defense presentation
PhD defense presentationPhD defense presentation
PhD defense presentation
 
Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...Dynamic graphical user interface generation for web-based public display appl...
Dynamic graphical user interface generation for web-based public display appl...
 
Evaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applicationsEvaluation of a programming toolkit for interactive public display applications
Evaluation of a programming toolkit for interactive public display applications
 
Interaction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive artInteraction modalities, technologies and tools for interactive art
Interaction modalities, technologies and tools for interactive art
 
PuReWidgets toolkit
PuReWidgets toolkitPuReWidgets toolkit
PuReWidgets toolkit
 
PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012PuReWidgets presentation at EICS 2012
PuReWidgets presentation at EICS 2012
 
PuReWidgets toolkit
PuReWidgets toolkit PuReWidgets toolkit
PuReWidgets toolkit
 
Assessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared InteractionAssessing Feedback for Indirect Shared Interaction
Assessing Feedback for Indirect Shared Interaction
 
Oop java
Oop javaOop java
Oop java
 
Computer vision techniques for interactive art
Computer vision techniques for interactive artComputer vision techniques for interactive art
Computer vision techniques for interactive art
 
Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)Introdução à Programação para iPhone (iOS)
Introdução à Programação para iPhone (iOS)
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 

Último

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 

Último (20)

Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 

Introdução à Programação em Processing

  • 1. IntroduçãoàProgramaçãoem Processing Programa de DoutoramentoemCiência e Tecnologiadas Artes – Arte Interactiva Jorge C. S. Cardoso http://jorgecardoso.eu 19 Fevereiro 2011
  • 2. Tópicos Conceitos de programação de computadores Hardware, evolução das linguagens de programação, códigofontevscódigomáquina, máquina virtual Estruturasbásicas de programaçãoem Processing Variáveis, condições, ciclos, funções Programaçãoorientada a objectos (OOP) Classes, objectos, herança, construtores, destrutores, encapsulamento, herança, method overriding
  • 3. Hardware Processador CPU (Central Processing Unit) Éa parte de um sistema de computadorqueexecuta as instruções de um programa de computador
  • 4. Hardware Memória RAM (Random Access Memory) Volátil (precisa de alimentaçãoeléctricaparapreservaros dados) O CPU lêe escrevedirectamenteparaestamemória O programaque o CPU executaestáescritonamemória RAM
  • 5. Hardware Memóriapersistente Nãovolátil (mantémos dados mesmosemalimentaçãoeléctrica) Exemplos Disco duro Memória Flash (cartões SD, Flash pen, …) Osprogramassãoarmazenadosnestamemória Quandoosexecutamospassampara a RAM
  • 6. Linguagens de Programação Programa Sequência de instruçõesque o CPU executa As instruçõesestãona RAM Exemplo Somar 3 + 5 e multiplicar o resultadopor2 Como éque o CPU fazisto? 
  • 7. CPU Possui memória interna Muito pouco espaço As unidades de memória interna do processador chamam-se registos Conhece uma lista de instruções Percorre a memória RAM e lê e executa instrução a instrução
  • 8. Evolução das linguagens Osprimeiros “programadores” de computadorescreviamprogramasemnúmeros Usavamdirectamente a tabela de instruções do processador muitosujeito a erros... muitotrabalhoso... Criou-se umalinguagemmaisfácil de decorar e utilizar, baseadaemmnemónicas Assembly Language  .model small .stack .data message db "Hello world, I'm learning Assembly !!!", "$" .code main proc movax,seg message movds,ax mov ah,09 lea dx,message int 21h mov ax,4c00h int 21h main endp end main
  • 9.
  • 11.
  • 12.
  • 13.
  • 17. Combinaosdiferentesmódulos de códigomáquina (i.e. previamentecompilados) e gera o ficheiro final queiráserexecutadopela CPU
  • 18.
  • 19. A linguagem Java é compilada em código máquina para um processador virtual (máquina virtual)
  • 20. O código máquina resultante é chamado "bytecode“
  • 21. Em Java não existe necessidade de "linkagem"
  • 22. Uma aplicação Java consiste num conjunto destes ficheiros (e não apenas um)
  • 23.
  • 24. Este processador virtual é implementado através de software em qualquer computador
  • 25. Para correr um programa Java temos de ter instalado este processador virtual (Java Virtual Machine - JVM)
  • 26.
  • 27. Linguagens de Programação Na descrição de um programaéessencialdefinir: Ponto de entrada. Qual a primeirainstrução a executar? Sequência: comoavanço de instruçãoeminstrução?
  • 28.
  • 29. Permite a criação de programasquepodemserexecutadosemváriasplataformassemmodificação
  • 32.
  • 33. Processing “Free to download and open source Interactive programs using 2D, 3D or PDF output OpenGL integration for accelerated 3D For GNU/Linux, Mac OS X, and Windows Projects run online or as double-clickable applications Over 100 libraries extend the software into sound, video, computer vision, and more... Well documented, with many books available” – http://processing.org
  • 34. Processing Examples Animation Nokia Friends (http://postspectacular.com/process/20080810_nokiafriends) ImaViz – Sound Visualizer (http://www.openprocessing.org/visuals/?visualID=9923hh) “Music” Ball droppings (http://balldroppings.com/js/) PSO Video Catalina music video (http://moullinex.tumblr.com/post/3180520798/catalina-music-video) Papa Roach – Getting away with murder (http://processing.org/exhibition/works/papa/index.html) 3D Hair Ball (http://www.openprocessing.org/visuals/?visualID=12399) (Generative) Design Marius Watz (http://www.unlekker.net) http://artes.ucp.pt/blogs/index.php/PMultimedia/2009/10/03/capas-de-livros Games Pong Multiplayer (http://artes.ucp.pt/ftp/a0306005/index.html) Instalations My little piece of privacy (http://www.niklasroy.com/project/88/my-little-piece-of-privacy/)
  • 35. Processing IDE (Integrated Development Environment)
  • 36. 19-02-2011 Jorge Cardoso 22 Processing - eixos da janela gráfica
  • 37. Processing Algumasinstruções size background line, rect, ellipse, curve fill, stroke noFill, noStroke
  • 38. Exemplo 1 size(400, 600); background(255); stroke(0); strokeWeight(3); line(100, 150, 300, 450); line(100, 450, 300, 150); // curva superior strokeWeight(2); stroke(0); noFill(); curve(0, 0, 100, 150, 300, 150, 400, 0); // pontos de controlo //fill(255, 0, 0); //noStroke(); //ellipse(0, 0, 5, 5); //ellipse(400, 0, 5, 5); //curva inferior stroke(0); noFill(); curve(0, 600, 100, 450, 300, 450, 400, 600);
  • 41. IntroduçãoàProgramação Comentários Servempara o programador se ajudar a simesmo a lembrarporqueéque fez as coisas de determinada forma São ignoradaspelocompilador // Comentáriode umalinha /* Comentário de várias linhas */ intaddTwoNumbers( int num1, int num2 ){    //a comment: add the two numbers    int result = num1 + num2;     /* Some other comment    just to show how to do it    for multiple lines. */    return result;}
  • 42. Variáveis Variáveissãouma forma de armazenarvaloresdurante a execução de um programa Uma variávelé um nomequeutilizamosparanosreferirmos a um valor Podemosalterar o valor durante o programa Sempreque o nomeéutilizado no programaéautomaticamentesubstituídopelo valor correspondente intsomeNumber; intanotherNumber; int result; someNumber = 3; anotherNumber = 2; //result stores the value 3 * 2 = 6 result = someNumber * anotherNumber;
  • 43. Variáveis Antes de podermosusarumavariáveltemos de a declarar.  A declaraçãoindica o tipo de dados que a variávelvaiguardar. Inteiros (int, long)  Decimais(float, double) Lógicos (boolean) Caracteres (char) Sintaxe: <tipo> nomeDaVariavel;<tipo> nomeDaVariavel = <valorinicial>; intmyNumber; long anotherNumber = 13; float aFloatNumber = 0.24; double aDoublePrecisionNumber = 1.23e2; booleanisActive = true; char aLetter = 'P';
  • 44. Variáveis Para guardarmos um valor numavariáveltemos de atribuí-lo àvariável. minhaVariavel = <valor>; Aquiloqueatribuimos a umavariávelé o resultado de umaexpressão. Uma expressãopodeser: Literal : Um valor escritodirectamente no código idade= 33; // 33 é um literal Variável: O valor de umavariável idade= idadeJoao; // idadeJoaoéoutravariável Função: O valor devolvidoporumafunçãodefinidapreviamente idade= random(10); // random éumafunção  Expressõesanterioresligadas com operadoresaritméticos : Definiçãorecursiva!  idade= idadeJoao + 10 * 3;
  • 45. Variáveis Algumasrestrições no uso de nomesemvariáveis: Nomes das variáveistêmcomeçarcom umaletra do alfabeto (dígitosnãosãopermitidos) oupor um underscore (_) Nomes de variáveispodemconterletras e dígitos, mas espaçosou outros caracteresespeciaisnãosãopermitidos. Osnomes de variáveissão case sensitive (e.g. myNumberédiferente de mynumber) Palavrasreservadas do Java nãopodemserusadascomonomes de variáveis (e.g. int, float, for, while, do, break, ...) Osnomes das variáveisdevemserescolhidos de forma a tornar o seusignificado o maisclaro e legívelpossível.
  • 46. Exemplo 2 intcenterX = 100; intcenterY = 100; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); // curva superior strokeWeight(2); stroke(0); noFill(); curve(centerX-200, centerY-300, centerX-100, centerY-150, centerX+100, centerY-150, centerX+200, centerY-300); //curva inferior stroke(0); noFill(); curve(centerX-200, centerY+300, centerX-100, centerY+150, centerX+100, centerY+150, centerX+200, centerY+300);
  • 47. Operadores Operadoresaritméticos + (adição) - (subtracção) * (multiplicação) / (divisão, inteiraoufraccionária) % (resto da divisãointeira - modulo) Osoperadoresnumaexpressãosãoaplicados da esquerdapara a direita, mas os operadores *, / e % têmprecedênciasobre + e - Se quisermosalterar a precedência, temos de usarparêntesis:  (  ) 1+2*3 = 1+6 = 7 (1+2)*3 = 3*3 = 9
  • 48. Exercício 1 Crie um programaem Java que: armazeneemduasvariáveisosvalores 5 e 2 realize a divisão entre as variáveis (i.e. 5 / 2) guarde o resultadonumavariável imprima o resultado da operação Decisões a tomar: Quetipo de variáveisdefinir? int, float, double, ...?? Quetipo a usarpara o resultado da divisão? int, float, double, ...?? Existemdiferenças no resultado? divisãointeira VS divisãovírgulaflutuante...
  • 49. Solução intaNumber = 5; intanotherNumber = 2; float aFloat = 2.0f; float result; result = aNumber / anotherNumber; println(result);
  • 50.
  • 51. As chavetas{ }delimitam as acçõesexecutadascondicionalmente. if ([condição])  {      [acções]  }
  • 52. Condiçõesif A condiçãoéumaexpressão do tipoboolean  Literal true ou false  Variável (boolean) com o valor true ou false  Expressão com operadorescondicionais booleanisActive = true; if(isActive) //eqv. a if (isActive == true) {     //do something...     isActive = false; }
  • 53. Exemplo 3 intcenterX = 200; intcenterY = 300; boolean v1 = false; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v1) { // curva superior curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150); // curva inferior curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); } else { // curva superior curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150); // curva inferior curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); }
  • 54. Condições if As condiçõesusadasnos testes podemusarosoperadorescondicionais:  igual a: == (atenção!)  maior do que: >  menor do que: <  maiorouigual a: >=  menorouigual a: <=  diferente: !=  O resultado de umaoperaçãocondicionalé um valor true ou false intaNumber = 10; intanotherNumber = 6; boolean correct = false;  if(9 == aNumber)     correct = true; if (anotherNumber > aNumber)     aNumber = anotherNumber;     
  • 55. Condições if Algumasvariantes da estrutura if: If... Else...  If... Else if...  If... Else if... Else... Switch
  • 56. Condições if... else... O iftambémnospermiteexecutaracções se a condição for falsa if (<condição>) { <acções A> //executado se a condição for true... } else {     <acções B> //executado se a condição for false... }
  • 57. Condições if... else if Épossívelcombinar ifs sequencialmente if (<condição A>) {     <acções A> } else if (<condição B>){      <acções B> } else {      <acções C> }
  • 58. OperadoresLógicos Épossíveltestarcondiçõescomplexasatravés dos operadoreslógicos: operadoresquecombinamcomparações simples: AND : As duascomparaçõestêm de serverdadeirasaomesmo tempo OR : Pelomenosuma das comparações tem de serverdadeiro NOT : Inverte (i.e. nega) o valor da comparação
  • 59. OperadoresLógicos AND : && OR : || NOT : ! if (x > 10 && x < 20) { println(“Entre 10 e 20”); } if (x < 10 || x > 20) { println(“Fora do intervalo [10; 20]”); } if (!(x < 10)) { println(“X não é menor do que 10”); }
  • 60. Exemplo 4 intcenterX = 200; intcenterY = 300; boolean v1 = true; boolean v2 = true; size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v2) { // curva superior curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150); // curva inferior curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); } if (v1) { // curva superior curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150); // curva inferior curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); } if (v1 && v2) { strokeWeight(1); fill(150); ellipse(centerX, centerY-150-20, 40, 40); }
  • 61. Exercício 2 Implementeum programaque: Defina 3 variáveisparaarmazenartrêsinteirosàescolha (num1, num2 e num3) Teste se num1 éigual, maioroumenorque num2, e imprimaumamensagem do tipo "7 émaior do que 3". No caso de num1 sermenorque num2, verifique se num3 estádentro do intervalo [num1, num2], e emcasoafirmativoimprimaumamensagem do tipo "7 está entre 2 e 15". Divida num1 por num2, imprimindo o resultado, tendo o cuidado de verificar se num2 édiferente de zero! Divisõespor zero em Java provocamo "crash" da aplicação!
  • 62. Exercício 2 int num1 = 5; int num2 = 12; int num3 = 7; if(num1 == num2) {     println(num1 + “ is equal to ” + num2); } else if(num1 > num2){     println(num1 + “ is bigger than “ + num2); } else {     println(num1 + “ is smaller than ” + num2);       if (num3 > num1 && num3 < num2) {     println(num3 + “ is between “ + num1 + “ and “ + num2);     } } if(num2 != 0){     println("A divisão de ” + num1 + “ por “ + num2 + “ é “ + ((float)num1/num2)); }
  • 63. Ciclos Osciclospermitem-nosexecutar um conjunto de instruçõesrepetidamente Existemduas classes de ciclos: Ciclosqueexecutam um númeropré-determinado de vezes: for Ciclosqueexecutamenquantoumacondiçãoéverdadeira: do e while
  • 64. Ciclofor Executado um númeropré-determinado de vezes for (<inicialização>; <condição>; <incremento>)  {     <acções>} Variável de cicloinicia-se em zero (e declara-se dentro do própriociclo) Condição simples com o limite de iterações Incremento da variávelemumaunidade (através do operadorincremento ++) for (inti = 0; i < 10; i++) {      println("Counting… ” + i); }
  • 65. Exemplo 5 if (v1 && v2) { strokeWeight(1); fill(150); for (int i = 0; i < 5; i++) { ellipse(centerX, centerY-150-20-100+i*20, 40, 40); } /* int n = 10; for (int i = 0; i < n; i++) { ellipse(centerX, centerY-150-20-100+i*100/n, 40, 40); }*/ /* for (int y = centerY-150-20-100; y < centerY-150-20; y = y + 1) { ellipse(centerX, y, 40, 40); }*/ }
  • 66. Ciclo while Executa um conjunto de instruçõesenquantoumacondição for verdadeira O testeéfeito antes da execução while (<condição>)  {     <acções> } inti = 0; while (i <= 10) {     println("Counting... “ + i);     i = i + 1; }
  • 67. Ciclo do Executa um conjunto de instruçõesenquantoumacondição for verdadeira O testeéfeitodepois da execução do { <acções> } while (<condição>); inti = 0; do {     println("Counting... “ + i);     i = i + 1; } while (i <= 10);
  • 68. Exercício Implementeum programaque calculeumasequência de Fibonacci, segundo a seguinterelaçãorecorrente: F(n) = F(n-1) + F(n-2), com F(0) = 0 e F(1) = 1 e.g.: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 4.1. Imprimaosprimeiros 100 números da sequência 4.2. Imprimatodososnúmeros da sequênciainferiores a 10000
  • 69. Solução intnumFibonacciNumbers = 100; long valN = 0; long valN_1 = 1; for (int n = 0; n < numFibonacciNumbers; n++) {     println(n + “ -> “ + valN));     valN = valN + valN_1;     valN_1 = valN - valN_1; }
  • 70. Arrays Um array é um contentor de valores do mesmotipoarmazenadanumaregiãocontígua da memória RAM Um vector tem um nome e váriasposiçõesquepodemseracedidasatravés de um índice (entre parêntesis rectos [ ] ) : O índice tem de ser um valor inteiro     idade[0] = 23;    idade[1] = 47;    idade[2] = 11;    idade[3] = 92;    idade[4] = 76;    intage = idade[3]; //age = 92
  • 71. Arrays - Declaração e Inicialização Tal comoqualqueroutravariável, énecessárioindicarqual o tipo de valoresque o array iráguardar.  Énecessáriotambémdefinirqual o tamanho do array, antes de o utilizar. <tipo> meuArray[]; meuArray = new <tipo>[tamanho]; intidades[]; idades = new int[5];
  • 72.
  • 73. Arrays - índices Indiceéumaexpressão do tipointeiro Literal idade[1] Variável idade[i] Expressãocomplexa idade[2*i+n] Podeserusadoparapercorrer um array através de um ciclo for, while, ...
  • 74. Arrays - índices Percorreros dados de um array Para leitura Para escrita O índicenãodeveultrapassar o tamanho do array! int age = idade[5] // ERROR!!     intarraySize = 5; //escreve dados no array for (inti=0; i < arraySize; i++) {     //apenas um exemplo...         idade[i] = (i+1)*(i+1);  } //imprimeidadesinferiores a 20 for(inti=0; i < arraySize; i++) {     if (idade[i] < 20)         println(idade[i]); }
  • 75. Exemplo 6 intcenterX = 200; intcenterY = 300; boolean v1 = true; boolean v2 = true; int n = 10; // o numero de circulos color colors[] = new color[n]; for (inti = 0; i < n; i++) { colors[i] = color(random(255), random(255), random(255)); } size(400, 600); background(255); stroke(0); strokeWeight(3); line(centerX-100, centerY-150, centerX+100, centerY+150); line(centerX-100, centerY+150, centerX+100, centerY-150); strokeWeight(2); stroke(0); noFill(); if (v2) { // curva superior curve(centerX-100-100, centerY-150-150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150-150); // curva inferior curve(centerX-100-100, centerY+150+150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150+150); } if (v1) { // curva superior curve(centerX-100-100, centerY-150+150, centerX-100, centerY-150, centerX+100, centerY-150, centerX+100+100, centerY-150+150); // curva inferior curve(centerX-100-100, centerY+150-150, centerX-100, centerY+150, centerX+100, centerY+150, centerX+100+100, centerY+150-150); } if (v1 && v2) { strokeWeight(1); for (inti = 0; i < n; i++) { fill(colors[i]); ellipse(centerX, centerY-150-20-100+i*100/n, 40, 40); } }
  • 76. Funções Uma função* éumaporção de códigoqueefectuaumatarefaespecífica.  A divisão de um programaemváriasfunçõespermitecriarprogramasmaisestruturados, fáceis de manter e permitetambém a reutilização de código Na sua forma mais simples, umafunçãoé um bloco de código com um nomequepodemosusaremqualquer parte do programapara "chamar" e executaressebloco de código * Existemmuitasdesignaçõespara o conceito de função: procedimento, rotina, subrotina, método, subprograma. Todoselessignificam a mesmacoisa, mas sãousadosemdiferentescontextos.
  • 77. Funções void draw() {     println("Executa o programa");     fazTarefaEspecifica1(); //chamada a umafunção!     fazTarefaEspecifica2(); //chamada a outrafunção!     fazTarefaEspecifica1(); //chamaoutravez a função 1! } void fazTarefaEspecifica1() {     println("Estafunçãoexecutaumasérie de operaçõesparacompletar a tarefa 1"); } void fazTarefaEspecifica2() {     println("Estafunçãoexecutaumasérie de operaçõesparacompletar a tarefa 2"); }
  • 78. Funções Sintaxeparadefinir a função  void nomeFunção()   {      //código da função... } void é um tipo especial quesignifica "vazio", "semtipo" e nestecasoindicaque a funçãonãoretornaqualquer valor (verpróximos slides) Para invocar (i.e., executar o códigodentro da função)       nomeFunção();
  • 79. Funções com Parâmetros Funções com parâmetros Podemoperarsobre dados diferentes de cadavezqueexecutam. Nestecaso, o códigoquechama a funçãodevepassarosvaloressobreosquais a funçãoiráexecutar Para issotemos de parametrizar a função (i.e., definirque dados o programa principal deveenviarpara a função) Usode funções com parâmetros (de entrada) Sintaxeparadefinir  funções com parâmetros void nomeFunção(<tipo> nomeParam1, <tipo> nomeParam2, [...])  {         //código da função... } Para invocar (i.e., executar o códigodentro da função) nomeFunção(valorParam1, valorParam2);
  • 80. Funções com Parâmetros void draw()  {     soma(1, 2); // escreve "3"     soma(3, 5); // escreve "8" } void soma(int num1, int num2)  {     intresultado;     resultado = num1 + num2;     println(resultado); }
  • 81. Funções com valor de retorno Funções com valor de retorno int soma(int num1, int num2) Emfunçõescomo a anterior, fazmaissentidoque a funçãodevolva o valor calculadoaocódigoquechamou a função (emvez de o imprimir, comoemexemplosanteriores...) Para tal a funçãodeveindicarqueretorna um valor e qual o seutipo (nesteexemplo um int) Na implementação da funçãoéobrigatóriofinalizar com um comando return
  • 82. Funções com valor de retorno void draw()     int num1;     int num2;     int r;     num1 = 1;     num2 = 2;     r = soma(num1, num2);      println(r); } int soma(int num1, int num2) {     intresultado;     resultado = num1 + num2;     return resultado;  }
  • 83. Funções com valor de retorno Sintaxeparadefinir  funções com valor de retorno <tipo> nomeFunção(<tipo> nomeParam1, <tipo> nomeParam2, [...])  {     //código da função...     return valorDeRetorno; } Para invocar (i.e., executar o códigodentro da função) variavel = nomeFunção(valorParam1, valorParam2); Nãoénecessárioatribuir o resultado a umavariável, podeserusadodirectamentenumaexpressãoouusadocomoparâmetroparaoutrafunção
  • 84. Exemplo 7 void setup() { size(400, 600); } void draw() { background(255); duploCone(0, 0, 100, 100); duploCone(100, 100, 200, 200); duploCone(200, 200, 300, 300); duploCone(300, 300, 400, 400); } void duploCone(int x1, int y1, int x2, int y2) { stroke(0); strokeWeight(3); line(x1, y1, x2, y2); line(x1, y2, x2, y1); strokeWeight(2); stroke(0); noFill(); // curvassuperiores curve(x1-100, y1-100,x1, y1, x2, y1, x2+100,y1-100); curve(x1-100, y1+100,x1, y1, x2, y1, x2+100,y1+100); // curvasinferiores curve(x1-100, y2-100,x1, y2, x2, y2, x2+100,y2-100); curve(x1-100, y2+100,x1, y2, x2, y2, x2+100,y2+100); }
  • 85. Visibilidade das variáveis As variáveispodemserdeclaradasemváriossítios do programa fora de qualquerfunção (variável global) dentro de umafunção (variável local àfunção) dentro de outros blocos de código: { } (ifs, ciclos, etc) O sítioondesãodeclaradasdeterminaondepodemserlidas/escritas Uma variável global podeserusadaemqualquer parte do programa Uma variável local apenaspodeserusada no bloco (funçãooubloco de código) ondefoideclarada, incluindoblocosinternos a essebloco
  • 86. Visibilidade das variáveis Se tentarmosusarumavariável local fora do blocoondefoideclarada, o compiladorassinala um erro No entanto, énecessárioalgumcuidadoquando as variáveisglobais e locaistêm o mesmonome Nessasituaçãoéusada a variável com menorvisibilidade (a quefoideclaradadentro do bloco superior hierarquicamentemaispróximo)
  • 87. Processing – animação Exemplo9 int x; void setup() { size(400, 400); frameRate(10); x = 0; } void draw() { background(0); fill(244); rect(x, 10, 40, 40); x = x + 1; }
  • 89.
  • 96. corre
  • 97. ladra
  • 99. come
  • 100.
  • 109. travar(O comportamento não se refere necessariamente a comportamento autónomo, mas simplesmente a acções que o objecto pode realizar.)
  • 110. Classes no mundo real Os dois exemplos anteriores, cão e automóvel, referiam-se a objectos concretos (o cão do João e o automóvel do Jorge). No entanto, existem milhares de automóveis diferentes, com o mesmo comportamento e com os mesmos atributos (cor, marca, modelo, etc - embora não com os mesmos valores) A este conjunto genérico de comportamentos e atributos dá-se o nome de classe.
  • 111.
  • 112. Os atributos são representados através de variáveis e o comportamento através de métodos.
  • 113. Em OOP, ao processo de criar um objecto a partir de uma classe dá-se o nome de instanciação.
  • 114. Usando o exemplo anterior, o objecto "Automóvel do Jorge" seria uma instância da classe "Automóvel".http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter
  • 115.
  • 118. Para acedermosàsvariáveisoumétodos do objectousamos a notaçãoponto (.):MinhaClasse v, v1; v = new MinhaClasse(); v1 = null; v.nomePropriedade; v.nomeMetodo(); v1.nomePropriedade; // erro
  • 119.
  • 121. Que propriedades são necessárias/vou precisar para a classe?
  • 122. Que acções deve ela implementar?Comportamento: - ?
  • 123.
  • 127. Área
  • 128.
  • 130. Que propriedades são necessárias/vou precisar para a classe?
  • 131.
  • 132. Rodar
  • 134.
  • 135. Alguma sintaxe class NomeClasse { //declaração de variáveis (propriedades) //implementação de métodos // metodosprivadosapenaspodemserinvocadosporcodigodentro // da propriaclasse private void metodoPrivado() { } //metodospúblicospodemserinvocadosporcodigo exterior àclasse public void metodoPublico() { } }
  • 136. Alguma sintaxe: instanciação NomeClassenomeVariavel; nomeVariavel = new NomeClasse();
  • 137.
  • 138.  Por um lado, permite agrupar numa unidade lógica dados associados a um determinado conceito e operações sobre esses dados.
  • 139.  Por outro lado, permite "esconder" informação do exterior, prevenindo erros e estados inconsistentes. 
  • 140.
  • 141. A estruturação de um programa em classes/objectos permite também ao programador definir e restringir as interdependências entre código, tornando-o mais robusto e compreensível. 
  • 142.
  • 144. Os atributos podem ser declarados como vísiveis do exterior (access modifier)
  • 146. Ou podem ser declarados como visíveis apenas pela classe
  • 147.
  • 148. Tal comoestá a nossaclassepoderiamosfazer: p = new Poligono(); p.x = expand(p.x, p.x.length+1); p.x[p.x.length-1] = 25; p.y = expand(p.y, p.y.length+1); p.y[p.y.length-1] = 15; Exemplo_11
  • 149.
  • 150.
  • 151.
  • 152.  
  • 153. É o nome do construtor (e parâmetros) quecolocamos a seguirà keyword 'new' quandocriamos um objecto.
  • 154.
  • 155.
  • 156. O destrutor é usado para dar oportunidade ao objecto de libertar recursos (por exemplo memória).
  • 157. Em Java não existem destrutores porque a gestão de memória é feita automaticamente pelo garbage collector.
  • 158.
  • 159. Voltando aos veículos, o nosso programa poderia necessitar de trabalhar com bicicletas e automóveis.
  • 160.
  • 161. Desta forma, evita-se repetir o estado e comportamento partilhados.
  • 162. Nesta situação, as classes Automóvel e Bicicleta, herdam o estado e comportamento de Veículo, podendo estendê-los.
  • 163.
  • 164. O construtor da subclasse deve invocar o construtor da superclasse 
  • 165. (se a superclasse tiver um construtor vazio - sem parâmetros, este é invocado automaticamente).
  • 166. Para invocarmos o construtor da classe mãe usa-se a instrução 
  • 168.
  • 169.
  • 170.
  • 171. Method overriding em Java No casodaclasseRectangulo, épossívelcalcularoperímetro de forma maisrápida do que a implementação do Polígono… Exemplo_17
  • 172. Relação is-a (é um) A herança permite definir relações do tipo “é um” entre classes: Um Rectangulo é um Poligono Um PoligonoRegular é um Poligono Isto significa que tanto um Rectangulo como um PoligonoRegular podem ser tratados no código como se fossem do tipo Poligono
  • 173. Relação is-a (é um) Exemplo_18 Nesteexemploinvocamos “desenha()” emtodososobjectoscomo se fossemtodosPoligono. Nestecasotodas as classes herdam a mesmaimplementação de “desenha()” daclassemãe. O queaconteceria se invocassemos “perimetro()” damesma forma? “perimetro()” tem umaimplementaçãodiferenteemRectangulo Exemplo_19
  • 174. Polimorfismo Dois tipos de polimorfismo: Overloading: possibilidade de definir métodos com o mesmo nome para número ou tipo de parâmetros diferentes. É invocado o método que tem os parâmetros em número e tipo de acordo com a invocação. Overriding: possibilidade de definir implementações mais concretas de um método numa subclasse. Por omissão, é a implementação mais concreta que é invocada.
  • 175. ProgramaçãoemProcessing Fim http://slideshare.net/jorgecardoso (tag: ea-phd-ia-2011) Exemplos: http://dl.dropbox.com/u/1460217/UCP/2011-PhD-AI-Processing/src.zip