조회 수 1924 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

실은 수치의 계산이나 캐릭터라인등 이름을 붙여 관리되는것을  함수라고 합니다.
일전에 변수를 메서드라고 했던건 이해하기 편하게 하려고 메서드라고 했던건데요. 사실 뭐 함수도 어떤 시스템이 되었을때 짜뭉쳐서 메서드라고 부릅니다.
차이점이라고 한다면 함수는 보통은 수치만 가지고있는데, 변수는 복잡한식을 가질수있다는것 빼고는 없습니다.
함수를 좀 알아보겠습니다.
참고로 exit나 p, print도 함수의 일종입니다

1. random number

무작위로 숫자를 돌려 하나를 무작위로 뽑아주는 함수를 rand 라고합니다.

p rand(10)

이것은 0 에서 9까지의 수를 무작위로 돌려서 출력해줍니다. 여기서 괄호안의 숫자를 인수라고 하고,
인수와는 반대로 처리후 나온값을 반환값이라고 하는데, 인수에는 메서드도 들어갈수있습니다.

a = 10
b = 20
p rand (a + b)

이 식은 0에서  a 와 b 를 더한 값에 1을 뺀 29 까지 무작위로 돌려서 출력해줍니다.
또 반환값은 메서드나 수치와 같이 취급할수있습니다.

a = 10

p rand (a ) + 11

이 식은 0에서 9까지 무작위로 뽑은 반환값에 11을 가산해줍니다. 그러니까 값은 11 에서 20까지의 수를 돌려주게 됩니다.

위 두가지를 모두 응용하면 이렇게 되겠군요.

a = 10
b = 20
c = 1
p rand (a + b) + c

여기선 1에서 30까지 수를 돌려주게 됩니다.


2. 함수의 정의

함수의 정의는 예약어 def로 시작되서 end 로 끝납니다. 

def 함수이름
   함수식
end

이런식으로 만드는데 함수의 이름은 로컬 변수이름을 정하는것과 같습니다. 첫글자로 대문자를 넣어줄수도 있지만, 되도록이면 소문자로 해주는것을 추천합니다. 참고로 함수명에 물음표 ? 나 느낌표 ! 같은기호를 사용할수있습니다.

함수를 출력하는 방법도 변수와 다를게 없습니다.
위에 썼던 식을 빌리려서 random 이라는 함수를 만들겠습니다.

def random

 return rand (10) + 1

end

p random

이렇게 하면 random 이라고 쓰기만 해도 1에서 10까지의 무작위 반환값을 얻을수있습니다. 
여기서 return 이라고 하는건 return의 우변에 있는 식을 그 함수의 반환값으로 지정하는 명령어입니다. 지금과 같은식에서는 굳이 지정하지 않아도 됩니다만, 식이 많아지거나 중간에서 중단하는경우 써야하지만 그 이외에는 생략해도 무방합니다.
하지만 있는편이 알아보기가 더 쉬울겁니다.




1. 인수

인수를 취하는 함수는 다음과 같습니다.

def abs(x)

  if x < 0          # 만약 x 가 0 미만이면,
    return -x       # 함수의  반환값을 -x 라고 한다.
  else              # 이 외에는,
    return x        #  함수의  반환값을 x 라고 한다.
  end               # 분기 종료.
end

p abs(-3)           # => 3

이 식은 인수의 값을 바꿔주는 함수입니다. x는 인수의 값으로 지정되어있습니다. 이때 있지만 값은 없는 x를 가인수라고 부릅니다.
함수내에서는 조건분기로 x가 음수일때는 -x 를 양수일때는 x 를 반환값이라고 정의했습니다. 
마지막 행에서는 함수를 호출하고 x의 값을 -3으로 지정해 결과를 출력하고있습니다. 

식을 직역하면 x의 값을 무조건 양수로 돌려주는 식입니다.  수학에서의 절대치와 같은 개념이지요.

x가 가인수라면 -3을 열매인수라고 부릅니다. 수학에서 뭐라고 했는지 까먹어서리 잘 모르겠군요.

또 인수는 복수로 정의할수있습니다. 복수의 인수는 괄호안에 콤마 , 로 나눠줍니다.


def sum(x, y)

  return x + y      #  x + y 를 반환값이라고 한다.

end

p sum(2, 3)         # => 5

사실 이런식은 간단하게 돌리면 2 + 3 이 되겠군요.


2. 디폴트 인수

함수내에서 자주 호출하는 인수를 지정한것을 디폴트 인수라고 합니다. 함수내에서는 어디든지 불러올수있습니다.
디폴트 인수는 대입 연산자로 만들수있습니다.


def dice(n = 6)

  return rand(n) + 1

end

p dice              # p dice(6)와 같다

이 식에서는 인수가 없을때는 1에서 6까지 수를 무작위로 돌려줍니다, 만약 인수를 지정하면 무작위로 돌릴수있는 숫자의 최대치를 늘릴수있는 함수가 되겠습니다. 예를들어 dise(100)이라면 1에서 100까지를 무작위로 돌려주겠지요.


3. 함수의 재정의


함수는 같은 이름으로 중복해서 정의 하게되면 에러가 나지 않는 대신에 이전 함수는 소멸하고 새로만든 함수로 교체됩니다. 

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7372 1
32 고급강의실 RGSS 스크립트 강좌 입문 13 - 클래스(Class) 5 마니아 2013.09.16 2317 2
31 고급강의실 RGSS 스크립트 강좌 입문 12 - 연상 배열(Associative Array) 4 마니아 2013.09.16 1600 1
30 고급강의실 RGSS 스크립트 강좌 입문 11 - 배열(Array) 6 마니아 2013.09.16 1701 1
29 고급강의실 RGSS 스크립트 강좌 입문 10 - 그래픽 표시 4 마니아 2013.09.16 2183 0
28 고급강의실 RGSS 스크립트 강좌 입문 9 - 오브젝트(Object) 4 마니아 2013.09.16 1642 0
» 고급강의실 RGSS 스크립트 강좌 입문 7 ~ 8 - 함수(Function) 3 마니아 2013.09.16 1924 0
26 고급강의실 RGSS 스크립트 강좌 입문 6 - 루프(Loop) 2 마니아 2013.09.16 1586 0
25 고급강의실 RGSS 스크립트 강좌 입문 5 - 조건분기 4 마니아 2013.09.16 2131 0
24 고급강의실 RGSS 스크립트 강좌 입문 4 - 캐릭터 라인 4 마니아 2013.09.16 2274 1
23 고급강의실 RGSS 스크립트 강좌 입문 3 - 메서드(Method) 4 마니아 2013.09.16 1876 0
22 고급강의실 RGSS 스크립트 강좌 입문 2 - 수 3 마니아 2013.09.16 2256 0
21 고급강의실 RGSS 스크립트 강좌 입문 1 - 기초 개념 8 마니아 2013.09.16 4351 0
20 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
19 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2081 0
18 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
16 고급강의실 뮤's 실전 스크립팅 강좌 [1. 기초 문법 다지기 (상)] 6 마니아 2013.09.16 2351 0
15 고급강의실 RGSS2 강좌 1 비형랑 2012.10.01 2528 0
14 중급강의실 [RPGVX ACE] 소재규격과 강의수록 1 2 비형랑 2012.10.01 3273 0
13 초급강의실 [RPG VX ACE] 초심자강의 1 1 비형랑 2012.10.01 3168 2
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)