시각화/프로세싱

▶ Processing :: 프로세싱 배우기 :: 기초예제 4 - 함수에 대한이해

비주얼라이즈 2014. 4. 25. 12:09




프로세싱배우기 : 기초예제

함수에 대한 이해 1

오늘 포스팅에서는

'함수'에 대해서 꼼꼼하게 살펴보도록하겠습니다.^^


함수에 대한 내용은

프로세싱, 날개를 달다[각주:1]의 내용을 참조하였습니다.










함수를 정의(선언)하기


3부분으로 나누어 볼 수 있습니다.

반환값 / 함수이름 / 인자(매개변수)








형태는 아래와 같습니다.

반환값 함수이름(인자) {
	//함수코드 본체
}





그렇다면 백문이불여일견!

실제 예시를 살펴보겠습니다~






예제 1

 void draw() {
        drawCircle();
}

void drawCirlce() {
	fill(0);
	ellipse(50, 50, 20, 20);
}


관습적으로, 함수는 draw()아래에 위치합니다.



이번에는 인자(매개변수)를 포함한 예시입니다.

여기서 drawCircle()은 예제를 위하여 임의로 정한 이름입니다.


예제 2


void draw(int diameter) {
	drawCircle(32);
}


void drawCirlce() {
	fill(0);
	ellipse(50, 50, diameter, diameter);
}




이제 draw()에서 

drawCircle()안에 32만 넣어주어도

직경이 32인 ellipse가 그려지게 되게됩니다.




인자를 갖고있는 함수의 경우가

그렇지 않은 함수보다 더 유연하게 사용가능합니다

(재 사용의 유연성)










<매개변수 전달 핵심 포인트>



- 인자(매개변수)는 함수내에서 지역변수역할을 합니다.

- 함수에서 정의한 것과 같은 수의 매개변수를 전달해야합니다

- 함수에서 정의한 것과 동일한 형식의 인자여야 합니다. (int는 int로!)










함수로 전달가능한 매개변수


변수(20, 5, 4.3등)

문자값(x, y등)

계산식(x/2, random(0, 20)등)




1번 예제의 전체 코드 살펴보기

int x = 0;
int y = 0;
int speed = 1;

void setup() {
  size(200, 200);
  smooth();
}

void draw() {
  move();
  bounce();
  display();
}

void move() {
  x = x + speed;
}

void bounce() {
  if((x > width) || (x < 0)){
    speed = speed * -1;
  }
}

void display() {
  background(255);
  rectMode(CENTER);
  noFill();
  stroke(0);
  rect(x, y, 32, 32);
  fill(255);
  rect(x-4, y-4, 4, 4);
  rect(x+4, y+4, 4, 4);
  line(x-4, y+4, x+4, y+4);
}

  





  1. 다니엘 쉬프만, 『프로세싱, 날개를 달다』, 랜덤웍스, 옮김, 비제이퍼블릭, 2009 [본문으로]