04.04.2013 Views

Processing: Creative Coding and Computational Art

Processing: Creative Coding and Computational Art

Processing: Creative Coding and Computational Art

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

of code that work like processing machines, which you call when you need them. The<br />

second way uses an object-oriented approach, a far more ambitious <strong>and</strong> abstract approach<br />

that models a programming problem using concepts from the real world. In objectoriented<br />

programming (OOP), the code is divided into smaller (<strong>and</strong> independent) blocks<br />

of code called objects.<br />

Before I describe <strong>and</strong> contrast each of these approaches in more detail, it is worth stating<br />

that <strong>Processing</strong> allows you to structure a program using either a function-based, objectoriented,<br />

or hybrid approach. In fact, if you want to, you can avoid structure altogether.<br />

This amazing flexibility, accommodating different types of coders with varied experience<br />

levels, is one of the features that makes <strong>Processing</strong> such a unique environment. Later in<br />

the book, I will go into a much more detailed explanation of this material (I hear your<br />

heart fluttering with delight), but for now I’ll just describe them in very broad strokes.<br />

Let’s go back to the simple five-line program. This program executes from top to bottom.<br />

You could test this by moving the fill(0); line below the rect(width/4, height/4,<br />

width/2, height/2); line.<br />

size(400, 400);<br />

background(255);<br />

noStroke();<br />

rect(width/4, height/4, width/2, height/2);<br />

fill(0);<br />

You wouldn’t see anything if you now ran this program—can you guess why? It’s because<br />

the color used by the program to draw the rectangle starts out as white, the same color<br />

as the background (255 equals white), <strong>and</strong> is only changed to black (0 equals black) after<br />

the rectangle is drawn. So you are actually drawing a white rectangle on a white background.<br />

Now, imagine that you have 5,000 lines of code—wouldn’t it be easier to not have<br />

to put every line in an exact sequential order to get the program to run properly? Isn’t the<br />

whole digital thing about not having to be so sequentially linear? Function-based, or<br />

procedural, programming can help solve this problem by breaking a program up into<br />

reusable code structures that you call as you need them. These blocks are called functions<br />

(as opposed to objects in OOP); you can think of them as independent processing units<br />

waiting for action. Functions are explicitly called when they are needed <strong>and</strong> can optionally<br />

be passed values, which the functions can act upon. Calling a function can be considered<br />

the entry point of a function. Once called, a function can either end when it completes its<br />

job, or optionally return values. For example, if I wrote a program to keep attendance in<br />

my classes (something I’ve never done very consistently), I might create a function that<br />

simply assigned a value of present or absent for each student on a specific date. Then in<br />

class, I could call the function <strong>and</strong> pass in the value present or absent for each student. I<br />

wouldn’t need the function to return any value. On the other h<strong>and</strong>, if I wanted to find out<br />

which students were absent on a specific day, I might create another function that when<br />

called would return the actual names of the students who were absent.<br />

Let’s make the current rectangle drawing program a little more complicated. Don’t worry<br />

about trying to memorize or even underst<strong>and</strong> the code for now. It is the theory that is<br />

most important. Here’s the program structured using functions:<br />

CREATIVE CODING<br />

33<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!