이미지 파일 및 설정 파일 삭제, 새로운 CLI 및 문서 추가
This commit is contained in:
211
docs/02_기본 문법과 데이터 타입.md
Normal file
211
docs/02_기본 문법과 데이터 타입.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# **Ruby 기본 문법과 데이터 타입**
|
||||
|
||||
Ruby는 간결한 문법과 강력한 객체지향 기능을 갖춘 프로그래밍 언어다. 이 글에서는 Ruby의 기본적인 문법과 주요 데이터 타입을 설명한다.
|
||||
|
||||
---
|
||||
|
||||
## **1. Ruby의 기본 문법**
|
||||
|
||||
### **1.1. 변수와 상수**
|
||||
Ruby에서 변수는 `snake_case`(소문자 + 밑줄)로 작성하는 것이 일반적이다. 변수 앞에 특정 기호를 붙이면 의미가 달라진다.
|
||||
|
||||
```ruby
|
||||
name = "Alice" # 일반 변수
|
||||
$global_var = 10 # 전역 변수
|
||||
@instance_var = 20 # 인스턴스 변수
|
||||
@@class_var = 30 # 클래스 변수
|
||||
```
|
||||
|
||||
상수는 대문자로 정의하며, 한 번 설정한 후 변경을 경고하지만 강제할 수는 없다.
|
||||
|
||||
```ruby
|
||||
PI = 3.14159
|
||||
PI = 3.14 # 경고: 이미 정의된 상수를 변경
|
||||
```
|
||||
|
||||
### **1.2. 출력 및 입력**
|
||||
Ruby에서는 `puts`, `print`, `p` 등을 사용하여 출력을 수행한다.
|
||||
|
||||
```ruby
|
||||
puts "Hello, Ruby!" # 줄 바꿈 포함 출력
|
||||
print "Hello, " # 줄 바꿈 없이 출력
|
||||
print "World!\n"
|
||||
p [1, 2, 3] # 배열 출력 시 따옴표 포함
|
||||
```
|
||||
|
||||
사용자로부터 입력을 받을 때는 `gets`를 사용한다.
|
||||
|
||||
```ruby
|
||||
print "이름을 입력하세요: "
|
||||
name = gets.chomp # 개행 문자 제거
|
||||
puts "반갑습니다, #{name}님!"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **2. Ruby의 주요 데이터 타입**
|
||||
|
||||
Ruby의 모든 것은 객체이며, 기본 데이터 타입도 객체로 다룬다.
|
||||
|
||||
### **2.1. 숫자(Number)**
|
||||
Ruby는 정수(`Integer`)와 실수(`Float`)를 지원한다.
|
||||
|
||||
```ruby
|
||||
int_num = 10 # 정수
|
||||
float_num = 3.14 # 실수
|
||||
|
||||
puts int_num.class # Integer
|
||||
puts float_num.class # Float
|
||||
```
|
||||
|
||||
#### **기본 연산**
|
||||
```ruby
|
||||
puts 10 + 5 # 덧셈 (15)
|
||||
puts 10 - 5 # 뺄셈 (5)
|
||||
puts 10 * 5 # 곱셈 (50)
|
||||
puts 10 / 3 # 정수 나눗셈 (3)
|
||||
puts 10.0 / 3 # 실수 나눗셈 (3.333...)
|
||||
puts 10 % 3 # 나머지 (1)
|
||||
puts 2 ** 3 # 제곱 (8)
|
||||
```
|
||||
|
||||
### **2.2. 문자열(String)**
|
||||
문자열은 작은따옴표(`'`) 또는 큰따옴표(`"`)로 감싼다.
|
||||
|
||||
```ruby
|
||||
str1 = 'Hello'
|
||||
str2 = "World"
|
||||
|
||||
puts str1 + " " + str2 # "Hello World"
|
||||
puts "#{str1}, #{str2}!" # "Hello, World!"
|
||||
puts str1.upcase # "HELLO"
|
||||
puts str2.downcase # "world"
|
||||
puts "Ruby".reverse # "ybuR"
|
||||
```
|
||||
|
||||
큰따옴표(`" "`)에서는 **문자열 보간(interpolation)**이 가능하지만, 작은따옴표(`' '`)에서는 지원되지 않는다.
|
||||
|
||||
```ruby
|
||||
name = "Alice"
|
||||
puts "안녕하세요, #{name}님!" # 가능
|
||||
puts '안녕하세요, #{name}님!' # 그대로 출력됨
|
||||
```
|
||||
|
||||
### **2.3. 심볼(Symbol)**
|
||||
심볼은 `:name`처럼 콜론(`:`)으로 시작하며, 변경되지 않는 고유한 문자열을 표현할 때 사용한다.
|
||||
|
||||
```ruby
|
||||
sym1 = :ruby
|
||||
sym2 = :ruby
|
||||
|
||||
puts sym1 == sym2 # true (동일한 객체)
|
||||
puts sym1.object_id == sym2.object_id # true
|
||||
```
|
||||
|
||||
### **2.4. 배열(Array)**
|
||||
Ruby의 배열은 여러 개의 값을 순서대로 저장하는 자료구조다.
|
||||
|
||||
```ruby
|
||||
arr = [1, 2, 3, "Ruby", :symbol]
|
||||
|
||||
puts arr[0] # 1
|
||||
puts arr[-1] # :symbol (마지막 요소)
|
||||
puts arr.length # 5
|
||||
```
|
||||
|
||||
#### **배열 조작**
|
||||
```ruby
|
||||
arr << 6 # 요소 추가
|
||||
arr.push(7) # 요소 추가
|
||||
arr.pop # 마지막 요소 제거
|
||||
arr.unshift(0) # 맨 앞에 요소 추가
|
||||
arr.shift # 첫 번째 요소 제거
|
||||
|
||||
puts arr.inspect # [1, 2, 3, "Ruby", :symbol, 6]
|
||||
```
|
||||
|
||||
### **2.5. 해시(Hash)**
|
||||
해시는 키-값 쌍으로 데이터를 저장하는 자료구조다.
|
||||
|
||||
```ruby
|
||||
person = { "name" => "Alice", "age" => 25 }
|
||||
puts person["name"] # Alice
|
||||
puts person["age"] # 25
|
||||
```
|
||||
|
||||
심볼을 키로 사용할 수도 있다.
|
||||
|
||||
```ruby
|
||||
person = { name: "Alice", age: 25 }
|
||||
puts person[:name] # Alice
|
||||
```
|
||||
|
||||
#### **해시 조작**
|
||||
```ruby
|
||||
person[:city] = "Seoul" # 새 키-값 추가
|
||||
puts person.keys # [:name, :age, :city]
|
||||
puts person.values # ["Alice", 25, "Seoul"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **3. 제어문**
|
||||
|
||||
### **3.1. 조건문(if, unless, case)**
|
||||
```ruby
|
||||
age = 20
|
||||
|
||||
if age >= 18
|
||||
puts "성인입니다."
|
||||
elsif age >= 13
|
||||
puts "청소년입니다."
|
||||
else
|
||||
puts "어린이입니다."
|
||||
end
|
||||
```
|
||||
|
||||
`unless`는 `if not`과 같은 역할을 한다.
|
||||
|
||||
```ruby
|
||||
unless age < 18
|
||||
puts "성인입니다."
|
||||
end
|
||||
```
|
||||
|
||||
`case` 문을 사용하면 여러 조건을 간결하게 표현할 수 있다.
|
||||
|
||||
```ruby
|
||||
grade = "A"
|
||||
|
||||
case grade
|
||||
when "A"
|
||||
puts "우수합니다."
|
||||
when "B"
|
||||
puts "좋습니다."
|
||||
else
|
||||
puts "더 노력하세요."
|
||||
end
|
||||
```
|
||||
|
||||
### **3.2. 반복문(while, until, for, each)**
|
||||
|
||||
```ruby
|
||||
i = 1
|
||||
while i <= 5
|
||||
puts i
|
||||
i += 1
|
||||
end
|
||||
```
|
||||
|
||||
`each`를 사용하면 더 간결하게 반복할 수 있다.
|
||||
|
||||
```ruby
|
||||
[1, 2, 3, 4, 5].each do |num|
|
||||
puts num
|
||||
end
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **4. 마무리**
|
||||
Ruby는 간결하면서도 강력한 문법을 제공하는 언어다. 변수, 문자열, 배열, 해시 등 다양한 데이터 타입을 활용하면 유연한 코드를 작성할 수 있다. 기본 문법을 익혔다면, 이제 실습을 통해 Ruby의 객체지향 기능과 다양한 메서드를 활용해보자!
|
||||
Reference in New Issue
Block a user