본문 바로가기

스위프트

스위프트 튜토리얼(5) - Loops, 반복문(1)

스위프트 튜토리얼(5) - Loops, 반복문(1)

youtu.be/Ulp1Kimblg0?t=2666

위 영상을 보고 작성하는 포스팅이다.

 

Loop는 우리말로 반복문이라고도 한다. 형태는 다음과 같다.

for counter in lower...upper{
	some code
}

바로 예시를 들여다보자.

for index in 1...5 {
	print("hello")
}

위 코드를 실행하면 "hello"라는 텍스트를 5번 출력하게 된다. 1..5라는 표현이 1번 부터 시작해서 5번까지하라는 뜻이다. 3...5라고 적으면 세번 실행하게 된다. 1...2라고 적으면 두 번 실행하게 된다. 이제 index라는 것은 어떻게 쓰이는지 다음 예시를 보도록 하자.

 

for index in 1...5 {
	print(index)
}

1에서 5까지 출력이 된다. 반복문이 돌 때마다 어떤 포인트에서 도는지 알 수 있다는 것이다. index는 중괄호 안에서만 사용할 수 있으며 중괄호 밖에서는 사용하지 못한다.

for index in 1...5 {
	print(index)
}
print(index) // 에러 발생

 

만약 index가 필요없을 시 다음과 같이 작성할 수 있다.

for _ in 1...5 {
	print(index)
}

 

반복문마다 연산을 하고 싶을 때가 있을 수 있다. 반복문이 돌 때마다 값을 더해주는 것이다. 예를 들면 1에서 5까지 반복하고 각 값을 더하는 값을 출력하고 싶다고 가정해보자. 반복문에 돌때마다 1, 3, 6, 10, 15 순으로 값이 바뀌는 것이다. 다음 예시를 보자.

for index in 1...5 {
	var sum = 0
	sum += index
}

print(sum)

위와 같이 작성하고 실행하면 오류가 발생하는 것을 볼 수 있다.

sum은 중괄호안에서 선언 되었기에 중괄호 밖에서는 사용할려고 하면 에러가 발생하는 것이다.

참고로 sum += index 는 sum = sum + index 와 같은 의미이다.

 

그러면 sum을  중괄호 안으로 넣어보자.

for index in 1...5 {
	var sum = 0
	sum += index
	print(sum)
}

에러는 발생하지 않지만  1, 3, 6, 10, 15 로 출력이 되는 것이 아니라  1, 2, 3, 4, 5 로 출력이 되는 것을 볼 수 있다. 

var sum = 0 이 반복문 내에 있기 때문에 발생하는 문제다. 반복문이 돌 때마다 새로 선언하면서 0이 된다.

 

var sum = 0 을 반복문 이전에 선언하면 문제는 깔끔히 해결된다. 마지막 결과만 보기 위해 print(sum)도 반복문 이후에 작성해보자.

var sum = 0

for index in 1...5 {
	sum += index
}
print(sum)

sum값은 반복문 내에서 1, 3, 6, 10, 15로 변하고 마지막 15를 print함수를 통해서 출력하게 된다.

 

scope라는 개념이 있는데 사용이 가능한 영역정도로 이해하면 된다. 위의 예시와 같이 sum을 어디에 선언하느냐에 따라서 사용할 수 있는 곳이 달라진다. 반복문 내에서 선언하면 해당 값은 반복문 밖에는 사용하지 못한다. 하지만 반복문 이전에 선언하게 되면 sum은 어디에서나 사용할 수 있게 된다.

 

반복문도 이리저리 갖고 놀아 봐야 익숙해진다. 보통 구구단 만들기를 많이 하는데 반복문이 처음이시라면 해보는 것을 추천한다.