본문 바로가기

Swift

[Swift] 루프문(loop) 문법 이해하기 ft.입문자용

루프(Loop)문 즉, 반복문은 프로그래밍에 있어서 굉장히 중요하다. 이것은 swift를 넘어 모든 프로그래밍에 해당하는 내용이다.

 

루프문을 이해하기 위해, 자판기의 예를 들어보자. 자판기에 700원짜리 음료가 있다. 내게는 100원짜리 7개가 있어서 100원짜리 동전을 7번 넣어야 한다. 이것을 표현해보면 다음과 같이 나타날 것이다. 

 

100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 
100원짜리 동전을 넣는다. 

 

7번 행동을 입력해야 한다. 그런데 실제로 이렇게 코드를 작성하면, 지저분 할 뿐더러 불필요하게 반복적인 글을 적어야 한다. 대신에 우리는 아래와 같이 표현할 수 있다. 

 

아래 행동을 7번 실행하기 {
100원짜리 동전을 넣는다. 
}

 

7줄의 코드가 단 2줄로 줄어들었다. 이렇게 특정 코드를 반복적으로 실행하게 해주는 것이 루프문이다.  그럼으로써 더 깔끔한 코드, 더 편리하게 코드를 작성할 수 있게 도와준다. swift에는 2종류의 루프문이 있다. for문, while문 2종류이다. 

 

 

 

먼저, for문에 대해서 알아보도록 하겠다. 

 

(1)숫자만큼  반복하는 for문.

for i in 0...5 {
	print(i)
}

// 0,1,2,3,4,5

 

위와 같이 작성된 for문을 실행하면 0,1,2,3,4,5가 콘솔에 출력될 것이다. i는 for문 내부에 들어갈 녀석이다. 그리고 in 다음에 나오는 녀석은 해당갯수만큼 i에 입력되고 반복된다. 그래서 처음에는 0이 i로 들어가서 for 내부에 있는 i에 전달된다. 그 다음에는 1이 i로 들어가서 for 내부에 있는 i에 전달된다. 이렇게 5를 입력할 때까지 이런 일이 반복적으로 일어나는 것이다. 이런 for문은 숫자로만 동작하는 것이 아니다. 배열로도 작동한다. 

 

 

 

(2)배열의 수만큼 반복하는 for문.

let names = ["철수","영희","병만"]

for name in names{
	print(name)
}

//철수, 영희, 병만

 

위의 코드에선 결과적으로는 철수, 영희, 병만이 출력된다.  names라는 상수에 철수, 영희, 병만이라는 이름을 배열(array)형식으로 저장했다. 그러면 이 for루프는 몇번 실행될까. 3번이다. names라는 상수 안에 3개의 배열이 들어가 있기 때문이다.  순차적으로 "철수"가 name에 저장되고, 다음으로 "영희"가 다음으로 "병만"이 저장되고 for문은 끝이 난다. 

 

 

 

for문은 이런식으로 반복을 할 수 있게 해주는 편리한 문법이다. for문에는 이외에도 다양한 형식이 있다. 

 

 

(3)내부 파라미터를 가지지 않는 for문.

for _ in 1...5 {
print("굿")
}

//굿,굿,굿,굿,굿

 

for과 i 사이에 _ 를 입력하게 되면 어떤 내부 파라미터도 가지지 않는다. 그저 in 다음에 나오는 숫자만큼 반복을 실행할 뿐이다. 

 

 

(4)dictionary형태의 for문.

let phoneNumber = ["철수": 01012341234, "영희": 010412301412, "병만": 01031204912]

for person in phoneNumber {
print(person.key)
}

//철수,영희,병만 

for person in phoneNumber {
print(person.value)
}

//01012341234, 010412301412, 01031204912

phoneNumber이라는 상수에 딕셔터리형태로 저장했다. 여기서 person은 phoneNumber에 저장된 값을 하나하나씩 받아올 것인데, 여기서 key를 받아올 것인지, value를 받아올 것인지 정해야 한다. key를 불러올 경우, 철수, 영희, 병만이 출력되고, value를 받아올 경우, 해당 전화번호들이 출력된다. 

 

 

(5)string을 하나하나 출력하는 for문 

let word = "안녕하세요"

for letter in word {
print(letter)
}

// 안,녕,하,세,요

string형태로 저장된 값을 불러오면, 문자를 하나하나씩 출력해준다. 

 

 

 

 

 

또 다른 루프문은 while문이다. 

 

while문은 다음과 같이 작성한다. 

while somethingIsTrue {
print("hello")
}

while문은 while뒤에 작성된 조건이 참일 경우에 이하의 내용을 실행한다. 단, 그 조건이 거짓이 되는 경우 반복을 그만둔다. 그런데, while문은 주의해야 할 것이 있다. 만약 조건이 항상 참일 경우에는 while문이 무한적으로 반복된다. 그렇기 때문에 조건문을 잘 작성해야만 한다. 

예를 들어서, 아래의 예시를 들 수 있다. 

 

while 0<1 {
print("안녕")
}

0이 1보다 작은 것은 항상 참이다. 그렇기 때문에 이 while문은 영원히 반복될 것이다. 아마 그러면 프로그램 자체에서 에러로 인식하고 프로그램을 닫아버릴지도 모르겠다. 

 

while문은 이런 리스크가 있기 때문에 잘 쓰지 않는다고 들었다. 단, 조건을 잘 작성하기만 하면, 충분히 활용할 수 있을 것이다. 

 

오늘은 루프문에 대해서 알아봤다. 부족한 지식으로 작성해보았으나, 혹시나 부족한 부분이 있거나, 잘못된 내용이 있다면 댓글로 달아주신다면 서로의 배움에 도움이 될 것 같다. 끝까지 읽어주셔서 감사한 마음이다.