뮤's 실전 스크립팅 강좌
[2. 기초 문법 다지기 (중)]
11:50 에 강좌 쓰기 시작하네요. 과연 언제쯤 끝날지 궁금하네요!
사실 강좌 끄트머리에 카에데가 쓴 강좌도 링크 걸려고 했는데 다 지웠더라구요 ㅠㅠ..
이번 강에서는 배열과 해시, 그리고 반복문에 대해서 알아보겠습니다.
#1. 배열
배열은 여러 개의 변수를 관리하기 편하게 정렬해 놓은 것입니다,
하지만 꼭 그정도 수준에 그치지는 않죠.
배열은 반복문과는 떨어질 수 없는 관계입니다.
이번 강에서 배열과 반복문을 함께 배우는 이유지요.
다음 두 스크립트를 비교해 보겠습니다.
1. 배열을 사용하지 않을 경우
a = "안" b = "녕" c = "하" d = "세" e = "요" print a + b + c + d + e
-----------------------------------------------------------
2. 배열을 사용할 경우
print hi[0] + hi[1] + hi[2] + hi[3] + hi[4]
|
확실히 배열을 사용하는 경우가 더 편해보입니다.
배열은 첫번째 요소부터 0, 1, 2, 3 ... 이런순으로 뽑아서 사용이 가능합니다.
첫번째 요소가 1이 아니라는 점에 유의해주세요!
또한 배열의 크기는 size로 구할 수 있습니다.
아래를 봐주세요.
hi = ["안","녕","하","세","요"] print hi.size
|
출력하시면 5가 나올 겁니다.
5개의 요소가 들어있다는 소리죠.
또한 배열 선언 후 추가로 요소를 삽입하시려면 push를,
이미 있는 요소를 제거하시려면 delete를 쓰시면 됩니다.
push 를 통해서 집어넣은 요소는 자동적으로 맨 끝에 위치하게 됩니다.
hi = ["안","녕","하"] hi.push("세") hi.delete("안") hi[3] = "요"
print hi[0] + hi[1] + hi[2] + hi[3]
|
위에서는 설명하지 않았지만, 배열이름[인덱스] = 값
이런식으로 요소를 삽입할수도 있습니다. 예제에는 나와있죠?
또한 이 방법을 써서 기존의 값을 다른 값으로 대체할 수도 있죠.
마지막으로 배열이 특정한 요소를 포함하고 있는지 알아보려면
include? 를 사용하시면 됩니다.
hi = ["안","녕","하","세","요"] if hi.include?("안") print "안은 개풀" end
|
#2. 해시
해시는 배열과 비슷합니다.
배열을 이해하신다면 해시도 충분히 이해하실거라 생각됩니다.
해시와 배열의 차이점은 간단합니다.
배열에서 인덱스가 정수라면, 해시에서는 문자열입니다.
우리는 몸으로 배우는 싸람들이니까! 예제를 보도록 하겠습니다.
hi = {"인사"=>"안녕하세요", "에마군"=>"바보"} print hi["에마군"] + hi["인사"]
|
순차적으로 증가하는 변수가 아닌 문자열로 인덱스를 나타내기 때문에
선언 방식이 배열에 비해 약간 더 복잡합니다.
쓸 일이 많지는 않지만, 꼭 알아두고 가셔야 해요!
선언 방식이 다른 만큼, 값을 넣는 방식도 다릅니다.
배열에서 요소를 삽입하는 방법 두가지 아시죠?
해시는 그 중 두번째 방법으로만 값을 넣을 수 있습니다.
해시이름["인덱스"] = 값 이렇게요.
이밖에 해시에서 값을 제거하는 방법이나
값을 가지고 있는지 판정하는 방법은 배열과 같습니다.
똑같이 delete, include? 를 이용하지요.
hi = {"인사"=>"안녕하세요"} hi["에마군"] = "바보" hi["테스트"] = "ㅋ" if hi.include?("ㅋ") hi.delete("ㅋ") end print hi["에마군"] + hi["인사"]
|
해시는 배열과 비슷해서 설명이 많이 짧네요.
바로 반복문으로 넘어가도록 하겠습니다.
#3. 반복문
사실 반복문이란건 스크립트나 프로그래밍을
처음 접하는 분들이 이해하기 좀 까다롭습니다.
도대체 왜 쓰는지도 모르겠고, 다중 for 문은 헷갈리기만 합니다.
우선 반복문의 종류에 대해 알아볼까요?
1. for 문 - 범위를 설정해서 반복
2. while 문 - 조건이 참일 경우 반복
3. loop 문 - 그냥 반복
자, 일단 가장 많이 쓰이는 for 문부터 알아보도록 하겠습니다.
일단 for 문의 기본 형태는 아래 예제와 같습니다.
for i in 1..5 # 1부터 5까지 반복 print i #반복하면서 하나씩 출력 end
value = 0 for j in 1...5 # 1부터 4까지 반복 value += j #반복하면서 value에 값을 더함 end print value # 1 ~ 4까지의 합 출력
|
즉 for 변수이름 in 범위 가 되겠네요.
범위는 1..5와 1...5 두가지가 있는데,
1..5는 1 ~ 5까지, 1...5는 1 ~ 4까지 각각 반복합니다.
for 문과 배열을 같이 사용해 보겠습니다.
hi = ["안","녕","하","세","요"] hello = "" for hihi in 0...hi.size hello += hihi end print hello
|
배열의 size를 여기서 사용하게 되는군요!
0...hi.size 사용하는 이유는 다들 아시겠죠?
요소 수는 5개인데 인덱스는 0부터 시작하니
0 ~ 4까지만 반복해야 하기 때문입니다.
0..hi.size - 1 을 사용하셔도 좋습니다.
다음은 while 문입니다.
while 문은 while 조건 으로 사용이 가능합니다.
예제를 보시죠!
a = 0 while a < 5 # a 가 5보다 작으면 반복 a += 1 print a end
|
보시다시피 조건을 만족할 경우에 반복을 계속합니다.
조건이 항상 참 (1>0 이라던가) 이라면 무한 반복이 되겠죠?
loop 문은 이와 유사합니다.
i = 0 loop do i += 1 print i end # 바로 이렇게 하시면 무한 반복!
|
자, 그럼 어떻게 하면 이 망할 무한 반복에서 빠져나올 수 있을까요?
답은 간단합니다. break 문을 사용하시면 됩니다.
break 문은 실행중인 반복을 중단하고 빠져나오는 역할을 합니다.
1. loop 문에 사용
i = 0 loop do if i == 3 break end i += 1 print i end
-----------------------------------------------------------
2. while 문에 사용
a = 0 while a < 5 break if a == 3 a += 1 print a end
|
잠깐! 두번째 예제를 보시면 break if a == 3 이라고 되어있습니다.
end 가 빠져있는데, 이렇게 사용해도 될까요?
물론 가능합니다. 이렇게 간단한 조건문은
실행내용 if 조건 의 형식으로 사용이 가능합니다.
마지막으로 next 문입니다.
next 문은 break 처럼 반복을 완전히 중단하지 않고,
현재의 처리를 뛰어넘어 다음의 처리를 실행합니다.
말이 좀 어렵나요? 예제를 보시면 이해하실 거에요!
for i in 1..5 next if i == 3 # i가 3일 경우 다음 처리로 이동 print i end
|
하핫.. 1:25에 끝났네요.
강좌란게 쓰는데 오래 걸리기는 하나 봅니다.
#4. 숙제
1 ~ 100까지의 합을 for, loop, while 문을 이용해서 각각 출력합니다.
1 ~ 100까지의 숫자 중 홀수의 합을 for, loop, while 문을 이용해서 각각 출력합니다.
어떻게 해야할지 감이 잡히지 않으신다면 아래를 드래그해 보세요.
if 숫자%2 == 0 이라면 숫자는 짝수입니다.
* 4강부터는 실제로 스크립트를 제작할 예정입니다.
만들어 보고 싶은 스크립트를 덧글로 달아주세요.