SlideShare a Scribd company logo
1 of 35
Download to read offline
RPG Maker와 Ruby로
코딩 시작하기
Day 3
루프(반복)
• 반복하여 특정 처리를 하기 위해 사용된다
• 루비에서는 forin 문법을 이용하여 배열의 요소를 간단히 열
거할 수 있다
루프 - while
> a=0
=> 0
> i=1
=> 1
> while i<=5
.. a+=i
.. i+=1
.. end
=> nil
> p a
15
=> 15
while 조건
실행_내용
end
범위(Range) 오브젝트
1..5 # 1부터 5까지(1 <= i <= 5)
1...5 # 1부터 4까지(1 <= i < 5)
루프 - for
> a=0
=> 0
> for i in 1..5
.. a+=i
.. end
=> 1..5
> p a
15
=> 15
for 변수 in 범위
실행_내용
end
루프 - loop, break
i=0
# 주의: 다음을 실행하면
"무한루프"에 빠지게 된다.
loop do
i+=1
p i
end
# 이럴땐 do ~ end 블록 사이에
break 를 호출하여 루프를 종료할
수 있다.
i=0
loop do
i+=1
if i==5
break
end
p i
end
루프 - next
> for i in 1..5
.. if i==3
.. next
.. end
.. p i
.. end
1
2
4
5
=> 1..5
함수
• 일련의 처리에 이름을 붙여 하나로 모은 단위
• 예) exit, p, print, sprintf, ...
• 함수의 처리에 필요한 값을 인수로 넘겨줄 수 있다. 인수를
받거나 받지 않을 수 있다.
• 처리하고 난 결과를 반환(return)값을 통해 돌려주거나 돌
려주지 않을(nil) 수도 있다
• 특정 함수의 반환값을 다른 함수의 인수로 지정할 수 있다
함수의 사용 예 (난수 발생)
> p rand(100) # 0~99까지에서 임의의 수를 뽑는다.
54
=> nil
> x=10
=> 10
> y=20
=> 20
> p rand(x+y) # x+y=30, 즉 0~29에서 임의의 수를 뽑는다.
21
=> nil
> p rand(6)+1 # 0 대신 1부터 시작, 1~6에서 임의의 수를 뽑는다.
6
=> nil
함수의 정의
> def dice
.. return rand(6) + 1
.. end
=> nil
> p dice
5
=> nil
def 함수의_이름
함수의_내용
return (반환값)
end
매개변수와 인수
> def abs(x)
.. if x<0
.. return -x
.. else
.. return x
.. end
.. end
=> nil
> p abs(-3)
3
=> nil
# 여러 개의 매개변수는 콤마 ',' 로 구
분한다.
def 함수의_이름(매개변수1, 매개변수
2, 매개변수3)
함수의_내용
return (반환값)
end
디폴트 인수
> def dice(n=6)
.. return rand(n)+1
.. end
=> nil
> p dice # p dice(6)
1
=> nil
# 디폴트 인수는 호출시에 생략
할 수도, 생략하지 않을 수도
있다. 생략할 경우, 매개변수에
는 자동으로 디폴트 인수(기본
값)가 대입된다.
def 함수의_이름(매개변수1,
매개변수2, 매개변수3=기본값)
함수의_내용
return (반환값)
end
Ruby의 모든 데이터는 오브
젝트
> p 3.class
Fixnum
=> nil
> p 1.5.class
Float
=> nil
> p "Ruby".class
String
=> nil
> p (1..10).class
Range
=> nil
메소드(method)
> a="Ruby" # 변수 a에 문자열을 대입하였으므로 String 타입을 갖는다.
=> "Ruby"
> p a.size # 문자열의 길이를 반환하는 메소드 (String의 멤버)
4
=> nil
> p a.upcase # 문자열을 대문자로 변환하여 반환하는 메소드 (String의 멤버)
"RUBY"
=> nil
> a=3
=> 3
> p a.upcase # Fixnum 클래스에 upcase 메소드가 정의되지 않았으므로 실패
(eval): undefined method `upcase' for 3:Fixnum (NoMethodError)
Ruby 레퍼런스
• 루비 코어 레퍼런스 (영문) - http://www.ruby-doc.org/
core
• RDoc을 이용해 소스에서 추출한 레퍼런스입니다. String,
Array, Symbol 등 모든 코어 클래스와 모듈에 대한 문서
를 찾아볼 수 있습니다.
• https://www.ruby-lang.org/ko/documentation/
> a=65 # a는 Fixnum의 인스턴스
=> 65
> p a.chr # chr는 Integer의 메소드
"A"
=> nil
상속(inheritance)
Animal
Cat Dog
Superclass
Subclass Subclass
상속(inheritance)
Integer
Fixnum Bignum
Superclass
Subclass Subclass
배열(Array)의 생성
> a=[2000,"Alex",true,1..50]
=> [2000, "Alex", true, 1..50]
> p a[0]
2000
=> nil
> p a[1]
"Alex"
=> nil
> p a[2]
true
=> nil
> p a[3]
1..50
=> nil
> p a
[2000, "Alex", true, 1..50]
=> nil
배열(Array) 요소의 대입
> a=[10,20,30]
=> [10, 20, 30]
> a[0]=100
=> 100
> a[3]=40 # 배열이 첨자를 포함하기 위해 동적으로 확장된다.
=> 40
> a[5]=60 # 이때 빈 공간에는 nil을 삽입한다.
=> 60
> p a
[100, 20, 30, 40, nil, 60]
=> nil
배열(Array)의 조작
> a=["one","two","three"]
=> ["one", "two", "three"]
> p a.size # 배열의 요소 갯수
3
=> nil
> p a.include?("three") # 포함하니?
true
=> nil
> p a.include?("seven")
false
=> nil
배열(Array)의 반복
> a=["one","two","three"]
=> ["one", "two", "three"]
> for s in a
.. p s
.. end
"one"
"two"
"three"
=> ["one", "two", "three"]
해시(Hash)의 생성
> a={"Alex"=>2000,"Jack"=>2003}
=> {"Jack"=>2003, "Alex"=>2000}
> p a["Alex"]
2000
=> nil
> p a["Jack"]
2003
=> nil
> p a["Rabbit"]
nil
=> nil
해시(Hash) 값의 추가
> a={}
=> {}
> a["Alex"]=2000
=> 2000
> p a
{"Alex"=>2000}
=> nil
해시(Hash)의 조작
> a={"Alex"=>2000,"Jack"=>2003}
=> {"Jack"=>2003, "Alex"=>2000}
> a.delete("Jack") # 해시에서 값을 삭제
=> 2003
> p a
{"Alex"=>2000}
=> nil
> a={"Alex"=>2000,"Jack"=>2003}
=> {"Jack"=>2003, "Alex"=>2000}
> p a.include?("Alex") # 포함하니?(키값)
true
=> nil
> p a.include?("Rabbit")
false
=> nil
해시(Hash)의 반복
> a={3=>6,4=>10,5=>15}
=> {5=>15, 3=>6, 4=>10}
> p a.keys
[5, 3, 4]
=> nil
> for k in a.keys
.. p k
.. end
5
3
4
=> [5, 3, 4]
> for v in a.values
.. p v
.. end
15
6
10
=> [15, 6, 10]
클래스(class) 정의
> class Person
.. end
=> nil
> alex=Person.new
=> #<Person:0x14ae9c>
> class Animal
.. end
=> nil
> class Cat < Animal
.. end
=> nil
class 클래스_이름
end
class 클래스_이름 < Superclass
end
클래스_인스턴스 = 클래스_이름.new
메소드(method) 정의
> class Person
.. def hello
.. print "Hello"
.. end
.. end
=> nil
> alex=Person.new
=> #<Person:0x14ad48>
> alex.hello
Hello
=> nil
def 메소드_이름
실행_내용
end
인스턴스 변수
> class Person
.. def name
.. return @name
.. end
.. def name=(name)
.. @name=name
.. end
.. def hello
.. print "I am "+@name
.. end
.. end
=> nil
> alex=Person.new
=> #<Person:0x14aa64>
> alex.name="Alex"
=> "Alex"
> alex.hello
I am Alex
=> nil
@변수_이름
attr_accessor,
attr_reader
attr_accessor :name
attr_reader :name
def name
return @name
end
def name=(name)
@name = name
end
def name
return @name
end
오브젝트 초기화(생성자)
class Person
def initialize
@name="Alex"
end
end
class Person
def initialize(name)
@name=name
end
end
alex=Person.new("Alex")
Method Overriding
> class Hahaha
.. def laugh(x)
.. return "ha"*x
.. end
.. end
=> nil
> class Wahaha < Hahaha
.. def laugh(x)
.. return "wa"+super
.. end
.. end
=> nil
> man=Wahaha.new
=> #<Wahaha:0x14aa64>
> p man.laugh(4)
"wahahahaha"
=> nil
감사합니다.
https://ryuhyun.com

More Related Content

What's hot

Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5
Ji Hun Kim
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열
Kim YoSep
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
유진 변
 

What's hot (20)

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
 
Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
[ES6] 9. Iterator
[ES6] 9. Iterator[ES6] 9. Iterator
[ES6] 9. Iterator
 
Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기Ruby Enumerator(루비 열거자) 이해하기
Ruby Enumerator(루비 열거자) 이해하기
 
Haskell study 9
Haskell study 9Haskell study 9
Haskell study 9
 
Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리
 
[Swift] Functions
[Swift] Functions[Swift] Functions
[Swift] Functions
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Python datatype
Python datatypePython datatype
Python datatype
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
Lua script
Lua scriptLua script
Lua script
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열
 
Python if loop-function
Python if loop-functionPython if loop-function
Python if loop-function
 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자
 

Similar to RPG Maker와 Ruby로 코딩 시작하기 Day 3

Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
지수 윤
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버
Jaejin Yun
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
Sakuya Izayoi
 

Similar to RPG Maker와 Ruby로 코딩 시작하기 Day 3 (20)

파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
 
Swift basic operators-controlflow
Swift basic operators-controlflowSwift basic operators-controlflow
Swift basic operators-controlflow
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2
 
하스켈 프로그래밍 입문
하스켈 프로그래밍 입문하스켈 프로그래밍 입문
하스켈 프로그래밍 입문
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for test
 
하스켈 성능 튜닝 2
하스켈 성능 튜닝 2하스켈 성능 튜닝 2
하스켈 성능 튜닝 2
 
Shellscript에 대하여
Shellscript에 대하여Shellscript에 대하여
Shellscript에 대하여
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버
 
7장매크로
7장매크로7장매크로
7장매크로
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
하스켈 성능 튜닝
하스켈 성능 튜닝하스켈 성능 튜닝
하스켈 성능 튜닝
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째
 
파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 

RPG Maker와 Ruby로 코딩 시작하기 Day 3

  • 1. RPG Maker와 Ruby로 코딩 시작하기 Day 3
  • 2. 루프(반복) • 반복하여 특정 처리를 하기 위해 사용된다 • 루비에서는 forin 문법을 이용하여 배열의 요소를 간단히 열 거할 수 있다
  • 3. 루프 - while > a=0 => 0 > i=1 => 1 > while i<=5 .. a+=i .. i+=1 .. end => nil > p a 15 => 15 while 조건 실행_내용 end
  • 4. 범위(Range) 오브젝트 1..5 # 1부터 5까지(1 <= i <= 5) 1...5 # 1부터 4까지(1 <= i < 5)
  • 5. 루프 - for > a=0 => 0 > for i in 1..5 .. a+=i .. end => 1..5 > p a 15 => 15 for 변수 in 범위 실행_내용 end
  • 6. 루프 - loop, break i=0 # 주의: 다음을 실행하면 "무한루프"에 빠지게 된다. loop do i+=1 p i end # 이럴땐 do ~ end 블록 사이에 break 를 호출하여 루프를 종료할 수 있다. i=0 loop do i+=1 if i==5 break end p i end
  • 7. 루프 - next > for i in 1..5 .. if i==3 .. next .. end .. p i .. end 1 2 4 5 => 1..5
  • 8. 함수 • 일련의 처리에 이름을 붙여 하나로 모은 단위 • 예) exit, p, print, sprintf, ... • 함수의 처리에 필요한 값을 인수로 넘겨줄 수 있다. 인수를 받거나 받지 않을 수 있다. • 처리하고 난 결과를 반환(return)값을 통해 돌려주거나 돌 려주지 않을(nil) 수도 있다 • 특정 함수의 반환값을 다른 함수의 인수로 지정할 수 있다
  • 9. 함수의 사용 예 (난수 발생) > p rand(100) # 0~99까지에서 임의의 수를 뽑는다. 54 => nil > x=10 => 10 > y=20 => 20 > p rand(x+y) # x+y=30, 즉 0~29에서 임의의 수를 뽑는다. 21 => nil > p rand(6)+1 # 0 대신 1부터 시작, 1~6에서 임의의 수를 뽑는다. 6 => nil
  • 10. 함수의 정의 > def dice .. return rand(6) + 1 .. end => nil > p dice 5 => nil def 함수의_이름 함수의_내용 return (반환값) end
  • 11. 매개변수와 인수 > def abs(x) .. if x<0 .. return -x .. else .. return x .. end .. end => nil > p abs(-3) 3 => nil # 여러 개의 매개변수는 콤마 ',' 로 구 분한다. def 함수의_이름(매개변수1, 매개변수 2, 매개변수3) 함수의_내용 return (반환값) end
  • 12. 디폴트 인수 > def dice(n=6) .. return rand(n)+1 .. end => nil > p dice # p dice(6) 1 => nil # 디폴트 인수는 호출시에 생략 할 수도, 생략하지 않을 수도 있다. 생략할 경우, 매개변수에 는 자동으로 디폴트 인수(기본 값)가 대입된다. def 함수의_이름(매개변수1, 매개변수2, 매개변수3=기본값) 함수의_내용 return (반환값) end
  • 13. Ruby의 모든 데이터는 오브 젝트 > p 3.class Fixnum => nil > p 1.5.class Float => nil > p "Ruby".class String => nil > p (1..10).class Range => nil
  • 14. 메소드(method) > a="Ruby" # 변수 a에 문자열을 대입하였으므로 String 타입을 갖는다. => "Ruby" > p a.size # 문자열의 길이를 반환하는 메소드 (String의 멤버) 4 => nil > p a.upcase # 문자열을 대문자로 변환하여 반환하는 메소드 (String의 멤버) "RUBY" => nil > a=3 => 3 > p a.upcase # Fixnum 클래스에 upcase 메소드가 정의되지 않았으므로 실패 (eval): undefined method `upcase' for 3:Fixnum (NoMethodError)
  • 15. Ruby 레퍼런스 • 루비 코어 레퍼런스 (영문) - http://www.ruby-doc.org/ core • RDoc을 이용해 소스에서 추출한 레퍼런스입니다. String, Array, Symbol 등 모든 코어 클래스와 모듈에 대한 문서 를 찾아볼 수 있습니다. • https://www.ruby-lang.org/ko/documentation/
  • 16.
  • 17. > a=65 # a는 Fixnum의 인스턴스 => 65 > p a.chr # chr는 Integer의 메소드 "A" => nil
  • 20. 배열(Array)의 생성 > a=[2000,"Alex",true,1..50] => [2000, "Alex", true, 1..50] > p a[0] 2000 => nil > p a[1] "Alex" => nil > p a[2] true => nil > p a[3] 1..50 => nil > p a [2000, "Alex", true, 1..50] => nil
  • 21. 배열(Array) 요소의 대입 > a=[10,20,30] => [10, 20, 30] > a[0]=100 => 100 > a[3]=40 # 배열이 첨자를 포함하기 위해 동적으로 확장된다. => 40 > a[5]=60 # 이때 빈 공간에는 nil을 삽입한다. => 60 > p a [100, 20, 30, 40, nil, 60] => nil
  • 22. 배열(Array)의 조작 > a=["one","two","three"] => ["one", "two", "three"] > p a.size # 배열의 요소 갯수 3 => nil > p a.include?("three") # 포함하니? true => nil > p a.include?("seven") false => nil
  • 23. 배열(Array)의 반복 > a=["one","two","three"] => ["one", "two", "three"] > for s in a .. p s .. end "one" "two" "three" => ["one", "two", "three"]
  • 24. 해시(Hash)의 생성 > a={"Alex"=>2000,"Jack"=>2003} => {"Jack"=>2003, "Alex"=>2000} > p a["Alex"] 2000 => nil > p a["Jack"] 2003 => nil > p a["Rabbit"] nil => nil
  • 25. 해시(Hash) 값의 추가 > a={} => {} > a["Alex"]=2000 => 2000 > p a {"Alex"=>2000} => nil
  • 26. 해시(Hash)의 조작 > a={"Alex"=>2000,"Jack"=>2003} => {"Jack"=>2003, "Alex"=>2000} > a.delete("Jack") # 해시에서 값을 삭제 => 2003 > p a {"Alex"=>2000} => nil > a={"Alex"=>2000,"Jack"=>2003} => {"Jack"=>2003, "Alex"=>2000} > p a.include?("Alex") # 포함하니?(키값) true => nil > p a.include?("Rabbit") false => nil
  • 27. 해시(Hash)의 반복 > a={3=>6,4=>10,5=>15} => {5=>15, 3=>6, 4=>10} > p a.keys [5, 3, 4] => nil > for k in a.keys .. p k .. end 5 3 4 => [5, 3, 4] > for v in a.values .. p v .. end 15 6 10 => [15, 6, 10]
  • 28. 클래스(class) 정의 > class Person .. end => nil > alex=Person.new => #<Person:0x14ae9c> > class Animal .. end => nil > class Cat < Animal .. end => nil class 클래스_이름 end class 클래스_이름 < Superclass end 클래스_인스턴스 = 클래스_이름.new
  • 29. 메소드(method) 정의 > class Person .. def hello .. print "Hello" .. end .. end => nil > alex=Person.new => #<Person:0x14ad48> > alex.hello Hello => nil def 메소드_이름 실행_내용 end
  • 30. 인스턴스 변수 > class Person .. def name .. return @name .. end .. def name=(name) .. @name=name .. end .. def hello .. print "I am "+@name .. end .. end => nil > alex=Person.new => #<Person:0x14aa64> > alex.name="Alex" => "Alex" > alex.hello I am Alex => nil @변수_이름
  • 31. attr_accessor, attr_reader attr_accessor :name attr_reader :name def name return @name end def name=(name) @name = name end def name return @name end
  • 32. 오브젝트 초기화(생성자) class Person def initialize @name="Alex" end end class Person def initialize(name) @name=name end end alex=Person.new("Alex")
  • 33. Method Overriding > class Hahaha .. def laugh(x) .. return "ha"*x .. end .. end => nil > class Wahaha < Hahaha .. def laugh(x) .. return "wa"+super .. end .. end => nil > man=Wahaha.new => #<Wahaha:0x14aa64> > p man.laugh(4) "wahahahaha" => nil