반복문
코드를 반복적으로 실행할 때는 반복문을 쓴다
예들들어 1부터 10까지 숫자를 출력할때 반복문을 쓰지 않는다면 같은 코드를 10번 적어야 할것이다
하지만 반복문을 사용하면 한줄의 코드로도 작동하게 할 수 있다
반복문은 for 반복문과 while 반복문 두가지로 되있다
for 반복문은 특정 횟수만큼 코드를 반복,
while 반복문은 조건식을 사용해서 언제까지 반복할지를 정할 수 있다
- for 반복문
// for 반복문의 스켈레톤 코드
for ( ) {
// 실행할 코드
}
괄호 ( ) 안에 반복할 횟수를 넣으면 지정된 횟수만큼 반복한다
for (변수 in 시작값 .. 종료값) : 일반적인 형태의 for 반복문
지정한 숫자 범위만큼 코드를 반복시킬 수 있다
// 1부터 10까지 10번 반복하면서 반복된 횟수를 index 변수에 저장하고 출력
for (index in 1 .. 10) {
println("현재 반복횟수는 ${index}입니다")
1. until : 마지막 숫자 제외하기
for (변수 in 시작값 until 종료값) 의 형태로 until 을 넣어 종료값 이전까지만 반복한다
배열의 인덱스는 항상 0부터 시작한다. 그래서 배열의 크기는 항상 마지막 index + 1 이 된다
만약 배열의 크기까지 반복하게 하면 배열 범위를 넘어서 버리기 때문에 unitl 을 써서 배열 크기 이전까지만 반복하게 할 수 있다
// 배열의 인덱스는 0부터 시작하기 때문에 until 로 배열크기-1 까지만 반복하게 한다
var array = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
for (index in 0 until array.size) {
println("오늘은 ${array.get(index)}입니다")
}
2. step : 건너뛰기
for (변수 in 시작값 .. 종료값 step 숫자) 의 형태로 step 수만큼 건너뛰어 특정 배수만 사용할 수 있게된다
for 함수 안에 if 문을 사용해서 같은 효과를 만들 수 있지만 이쪽이 코드 낭비도 덜하고 훨씬 간편하다
// step 을 사용하여 0부터 100까지중 0, 5, 10 ... 이렇게 반복마다 5씩 증가한다
for (var in 0 ... 100 step 5)
3. downTo : 감소시키기
for (변수 in 시작값 downTo 종료값) 의 형태로 큰 수에서 작은 수로 감소시키면서 반복문을 사용한다
// 100부터 0까지 내림차순, step 을 사용하여 5씩 건너뜀
for (index in 100 downTo 0 step 5){
println("현재 숫자는 ${index}")
}
//실행시 현재 숫자에 100, 95, 90 ... 이렇게 나온다
4. 배열이나 컬렉션의 엘리먼트 개수만큼 반복하기
엘리먼트를 변수에 담은 후 출력하면 index 를 사용할때보다 간편하고 보기 좋다
배열의 갯수만큼 자동으로 반복한다
// arrayEx 배열의 엘리먼트를 weekDay 변수에 담고 반복문 출력
var arrayEx = arrayOf("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
for (weekDay in arrayEx) {
println("오늘은 ${weekDay}입니다")
}
- while 반복문
// while 반복문의 스켈레톤 코드
while (조건식) {
// 실행할 코드
}
특정 조건이 만족될 때까지 반복문을 실행하기 위한 구문으로
조건식으로는 보통 두 항과 비교연산자를 사용한다
조건식의 결과가 항상 true 일 경우 끝임없이 반복하는 무한루프에 빠진다 ( 1 = 1 )
1. 일반적인 while 반복문
if문을 반복하게 만든것과 비슷한 모양새다
일반적인 while 반복문의 예▼
// 조건식의 변수 occupants 가 capacity인 12 와 같아질때까지 반복
var occupants = 1
var capacity = 12
while (occupants <= capacity) {
println("탑승 인원은 ${occupants}명 입니다")
occupants = occupants + 1
}
/* 출력 탑승 인원은 1명 입니다
탑승 인원은 2명 입니다
탑승 인원은 3명 입니다
탑승 인원은 4명 입니다
... */
2. do ~ while 반복문
while 문의 조건문과 상관없이 do 블록안의 코드를 한번 실행한다
조건식을 만족시키지 않을 경우 while 은 아무것도 실행되지 않고, do ~ while 은 do 블록안의 코드가 한번 실행된다
do ~ while 반복문과 while 반복문의 예시와 차이 ▼
var occupants = 13
var capacity = 12
//do ~ while 반복문
do {
println("탑승 인원은 ${occupants}명 입니다")
occupants += 1 }
while (occupants <= capacity)
// 출력 : 탑승 인원은 13명 입니다
//while 반복문
while (occupants <= capacity) {
println("탑승 인원은 ${occupants}명 입니다")
occupants = occupants + 1 }
// 출력 없음
💡 +=, -=, *=, /= 대입 연산자
변수와 = 사이에 산술 연산자인 +, -, *, / 가 있으면 변수 자신과 연산한 결과를 대입하라는 의미입니다
ex) 변수 = 변수 + 1 수식은 변수 += 1 로 바꿀 수 있다
변수 = 변수 - 10 도 변수 -= 10 과 동일하다
반복문 제어하기
- break : 반복문 탈출
반복문 안에서 break 를 만나면 반복문을 벗어난다
특정 조건에서 무조건적으로 반복문을 탈출할때 사용한다
index값이 70보다 크면 반복문을 탈출하는 예시▼
for (index 1 .. 100) {
printls("현재숫자 ${index}")
if (index > 70) {
break
}
}
- continue : 다음 반복문으로
반복문 안에서 continue 를 만나면 다음 코드 실행 없이 반목문의 처음으로 돌아간다
continue를 사용해서 0부터 10까지 중 2보다 크고 9보다 작으면 제외시키기▼
for (example in 0 .. 10) {
if (example > 2 && example < 9) {
continue
}
println(example)
}
// 0, 1, 2, 9, 10 이 출력된다