조회 수 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 7419 1
32 중급강의실 스킬 주문서를 만들어봅시다! 2 neopop 2014.03.24 1232 0
31 중급강의실 식량이벤트 3 주섬주섬 2014.02.28 1339 1
30 중급강의실 아오오니처럼 따라오는 이벤트 만들기 5 빙냥이 2013.12.11 4360 3
29 고급강의실 아이템 한번에 받기  운 2014.08.24 1148 0
28 중급강의실 아이템을 새로 만들어내고싶어요! 2 하프 2013.12.01 1406 0
27 중급강의실 액알강의[1] - 베틀러 비밀소년 2006.08.07 8463 7
26 중급강의실 액알강의[2] - 일어서기위해 비밀소년 2006.07.30 5183 3
25 중급강의실 액알강의[3] - 주석을 통한 설정 1 file 비밀소년 2006.07.21 5332 4
24 중급강의실 엽여비의 야매강좌- VXA : 기초강좌-VXA의 이해 3 엽여비소엽 2015.10.09 869 0
23 중급강의실 예시를 통한 레이어의 사용 3 맵만드는중.. 2014.02.14 1465 3
22 중급강의실 외부 캐릭터 그래픽과 타일셋 그래픽 게임 내에 적용하기 Xanadu 2013.10.20 2247 0
21 중급강의실 이벤트에 지도넣기 (그림의 표시) 5 물판 2014.05.07 2280 1
20 중급강의실 잠와서 실수가 많은 저 게임만들고 싶어요 -1- 데이터베이스-1- 1 시버암 2014.06.14 1169 0
19 초급강의실 저 같은 사람 생기지 말라고 만드는 XAS(액션알피지[액알])강 좌!(VX ACE용) 약빨은ㄱㅏㅅㅣ 2017.11.28 1247 0
18 중급강의실 저 게임만들고 싶어요!! -0- 기초 4 시버암 2014.06.13 1728 0
17 고급강의실 죽노의 RGSS 이것저것(1) 6 죽은노예 2013.10.23 2131 1
16 중급강의실 쯔꾸르 게임을 네코플레이어에 최적화 시켜보자! # 해상도 편 22 file 양갱님 2016.04.17 35767 10
15 중급강의실 찰드 도트강의 "1" -케릭터 레이더의 이해 (1/2)- 6 ◈ÐÆЯΚ◈찰드 2009.08.16 6199 4
14 초급강의실 찰드 제작강의 "1" -겜제작을 시작할때- 5 ◈ÐÆЯΚ◈찰드 2008.08.28 6915 5
13 초급강의실 찰드 제작강의 "2" -툴을 처음 접하면- 4 ◈ÐÆЯΚ◈찰드 2008.09.29 5970 7
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






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

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