본문 바로가기
🍎 iOS/DevNote

[Swift] 흐름제어구문(2) - for반복문

by @Eddy 2022. 4. 23.
728x90

https://developer-eddy403.tistory.com/16

 

[iOS/Swift] 흐름 제어 구문(1) - 반복문, 조건문

프로그래밍 과정에서 작성하는 소스 코드를 '구문'이라고 한다. '구문'에는 크게 단순 구문, 흐름 제어 구문으로 구분되며, 그 둘에 대한 설명은 아래와 같다. 단순 구문: 식, 값 표현, 각종 객체

developer-eddy403.tistory.com

1. 반복문

 

(1) for ~ in 구문 기본 규칙 : 일정 횟수만큼 특정 구문 반복.

for <루프 상수> in <순회 대상> { 
<실행할 구문>
} 

//예시
for row in 1...5 {
	print(row)
}

//출력결과
1
2
3
4
5


//순회대상: 순번을 가지는 집단 자료형 or 범위를 가지는 데이터
//순회대상으로 사용할 수 있는 데이터 타입: 배열(Array), 딕셔너리(Dictionary), 집합(Set), 범위 데이터, 문자열(String)

<꼼꼼한 재은씨의 스위프트: 문법편>에서는 이와 같은 예시를 들고 있다.

for반복문은 권총의 장전구조와 비슷하며, 탄창이 <순회대상>, 약실로 이동한 탄환이 <루프 상수>, 탄의 발사가 중괄호{} 안에 있는 <실행할 구문>과 유사하다는 설명을 한다.

 

위에서 제시한 <루프상수> row는 임의의 변수이므로 다른 임의의 상수명으로 변경해도 상관없다.

단, 상수이기에 직접적인 갑 입력이 불가하고 정의된 루프 상수는 for ~ in 구문 내에서만 사용이 가능하므로, 코드블록 밖에서는 사용이 불가함에 유의하자.

 

for i in 1...5 {
	print(i)
} //정상 코드

print(i) //오류 코드

 

(2) for ~ in 구문을 이용한 문자 순회방법

 

String(문자열) = Character(문자)들의 집합. 즉, 개별 문자가 순서를 이룬 채 연결된 하나의 문자열.

하지만 String타입은 순회 처리를 지원하지 않으므로 Characters 속성을 사용한다.

var name = "Eddy"
for char in name.characters {
	pring{"제 이름의 개별 문자는 \(char)입니다."}
}

//실행 결과
제 이름의 개별 문자는 E입니다.
제 이름의 개별 문자는 d입니다.
제 이름의 개별 문자는 d입니다.
제 이름의 개별 문자는 y입니다.

루프 실행횟수는 문자열의 길이만큼이므로, 총 4회 반복된다.

 

(3) for <루프 상수> in <실행 구문> 에서 <루프 상수>의 생략.

let size = 5
let padChar = "0"
var keyword = "3"

for _ in 1...size {
	keyword = padChar + keyword
}
print ("\(keyword)")

//실행결과
000003 

//이유
keyword = padChar + keyword
keyword = "0" + "3"
keyword = "0" + "03"
keyword = "0" + "003"
keyword = "0" + "0003"
keyword = "0" + "00003"
-> "000003"

순회 대상의 반복이 아닌, 순회 대상의 크기만큼 반복하는것이 목적일 때 사용한다.

이 경우, 루프 상수가 굳이 필요하지 않기에 _(언더바)로 대체한다.

 

(4) for ~ in 구문의 중첩

즉, for~ in 구문 내에 for ~in 구문을 작성하는 것. (= 다중루프, 이중루프)

다중 루프는 코드 구성에 편리할 수 있지만 오히려 코드를 복잡하게 만들 수 있으니 사용에 주의하자.

 

for i in 1..<10 {
	for j in 1..<10{
	    print("\(i) X \(j) = \(i * j)")
    }
}
//실행결과
1 X 1 = 1
1 X 2 = 2
1 X 3 = 3
1 X 4 = 4
...
9 X 8 = 72
9 X 9 = 81

 

다음 내용은 while반복문으로 이어가겠습니다.

반응형

댓글