프로세싱 중첩함수, 매개변수화

중첩함수

많은 함수들은 매개변수만 다르면 이름이 같더라도 상관 없다. 헷갈리게 들릴지 모르지만 이것은 많은 것을 내포한다.

같은 이름으로 만든 다른 함수를 중첩함수라고 하는데 이 프로세싱에는 매개변수만 다른 fl(), image(), text()와 같이 다양 한 버전의 함수들이 있다. 예를 들어 fil() 함수는 1~4개의 매개변수를 가질 수 있다. 각 버전의 GIl() 함수는 도형 채우기 값 을 설정하지만 매개변수의 수는 채우기 값이 회색인지, 색인지, 투명도를 포함하는지 여부를 구분한다.

프로그램은 같은 수의 매개변수를 가진 2개의 함수를 보유할 수도 있지만 이 경우, 두 함수의 최소 하나의 매개변수의 데이터 종류가 달라야 한다. 예를 들어 Al() 함수는 매개변수가 하나인 버전이 2개 있다. 첫 번째 버전은 int 종류의 매개변 수로 색이나 16진수 값을 설정하며 다른 버전은 Roat 종류의 매개변수로 회색 값을 설정한다. 채우기 종류에 따라 함수 이름 이 달랐다면 프로세싱 언어는 너무 짜증나는 언어였을 것이다.

예를 들어 다음 프로그램은 2개의 drawX() 함수를 사용한다. 두 함수의 이름이 같은 것이다. 소프트웨어는 매개변수의 수와 종류를 확인해 어떤 함수를 사용할지 판단한다.

void setup () {

size(100, 100);}

void draw() {

background(204);

drawX(255); // Run first drawX()

drawX(0, 2, 44, 48, 36); // Run second drawX()

}

// Draw an X with the gray value set by the parameter

void draw X(int gray) {

stroke(gray);

stroke Weight(20);

line(0, 5, 60, 65);

line(60, 5, 0, 65);

}

// Draw an X with the gray value, thickness,

// position, and size set by the parameters

void drawX(int gray, int weight, int x, int y, int s) {

stroke(gray);

stroke Weight(weight);

line(x, y, x+s, y+s);

line(sts, y, x, y+s);

}

값 계산 및 반환

지금까지 다룬 예시들에서는 제작된 합수로 화면에 도형을 그리는 것이 전부였지만 그림들 대신 숫자나 데이터가 원하 는 결과일 경우도 있다. 함수를 이용해 출력된 데이터는 반환된 값이라고 부른다. 모든 함수는 int나 Roat 값을 반환한다.함 수가 값을 반환하지 않는다면 roid라는 특별한 종류가 사용된다.

함수를 이용해 반환되는 데이터의 종류는 함수 선언의 왼쪽 에 기입된다. 우리는 이전 장에서 값을 반환하는 함수를 다룬 적 있다. 예를 들어 mndom() 함수는 Roat 데이터를, colorl)

함수는 color 데이터의 값을 반환한다.

return 키워드는 함수에서 나와 함수가 호출된 위치로 돌아갈 때 사용된다. ceturn 후에는 함수에서 즉시 나오므로 rerutn 명령문은 보통 함수의 마지막 줄에 사용된다. 함수를 이용해 반환되는 데이터는 return 키워드 바로 오른쪽에 쓰여진다.

스케치 안에서 함수가 값을 반환할 경우, 함수는 대부분 지정 연산자의 오른쪽이나 더 큰 표현의 일부분에 위치한다. 값 을 반환하지 않는 함수는 보통 완전한 명령문으로 사용된다.

다음 예시에서 random() 함수로부터 반환된 값이 변수에 지정 되지만 clipse() 함수는 변수와 관련 없다는 것을 확인해보자. random() 함수가 변수에 지정되지 않는다면 이 값은 산출되 더라도 저장되지 않을 것이다.

float d = random(0, 100);

ellipse(50, 50, d, d);

값을 반환하는 함수를 사용할 때는 반환되는 데이터 종류에 유의하는 것이 중요하다. 예를 들어 andom() 함수는 부동 소수점 값을 반환한다. random() 함수의 결과가 정수에 지정되면 오류가 발생할 것이다.

int d = random (0, 100); // ERROR! random() returns a float

ellipse(50, 50, d, d);

데이터의 종류를 변경하는 함수(73쪽)는 데이터를 프로그램에 필요한 형식으로 변환하는 데 유용하다. 이전 예시에서 ) 함수를 이용해 random() 함수가 반환한 데이터의 종류를 지정된 변수의 종류와 부합하도록 조정할 수 있다.

int d = int(random(0, 100): // int() converts the float value

ellipse(50, 50, d, d);

각 함수의 레퍼런스를 참고해 어떤 종류의 데이터가 반환되는지 확인해보자. 함수는 단지 숫자만 반환하는 것은 아니며 PlImage, String, Boolean, 다른 종류의 데이터도 반환한다.

값을 반환하는 함수를 작성하기 위해서는 void 대신 반환하고 싶은 데이터의 종류를 기입하면 된다. 함수 안에 return 키 워드를 추가해 출력될 값을 정의하라. return 이후의 표현 값이 함수에서 출력될 것이다. 다음 예시는 계산작업을 하면서 값 을 변수로 반환한다.

void setup () {
float f= average (12.0, 6.0); // Assign 9.0 to f printin (f);
}

float average (foat num1, float num2) |
foat av = (num1 + num2) / 2.0;
return av;
}

float fahrenheit ToCelsius (float t) {
foat f= (t-32.0) * (5.0/9.0);
return f;
}

함수의 반환 값을 중첩할 수 없다는 사실도 참고해야 한다. Roat이나 int 값이 주어지지만 다른 작용을 하는 함수와 달리 하는 데이터의 종류가 다르다면 이름이 같은 2개의 함수는 존재할 수 없다.

매개변수화

소프트웨어는 형식을 탐구하는 특별한 방식을 제공하며 참수 제작은 이 탐구를 가능하게 한다. 함수를 사용해 변수에 라 다른 도형을 생성하는 것은 매개변수화된 형태라고 부른다, Icaf() 함수의 일부가 된 다양한 매개변수는 다양한 형태를 만들어낸다.

매개변수화 된 형태에 여러 함수가 합쳐지면 한층 더 복잡해진다. 이 콤비네이션 함수는 매개변수를 다양하게 만든다.

leaf() 함수를 사용하는 예시에서 요소의 모양은 유지되지만 크기와 방향은 달라진다. vine() 함수를 사용하는 예시의 경우, 요소의 크기와 수는 변하지만 요소의 모양은 유지된다. 매개변수화 된 형태는 도형의 모양을 변경하는 데도 사용될 수 있다.

Leave a Comment