[Android] 3(5). 코틀린 기본 문법(반복문)
반복문
반복문은 코드를 반복적으로 실행하고자 할 때 사용합니다.
반복문에는 for와 while, 2 가지가 있는데 for는 특정 횟수 만큼 코드를 반복하기 위해 사용하고, while은 특정 조건이 만족할 때까지 코드를 반복할 때 사용합니다.
1. for 반복문
for 문의 기본 구조
for(반복할 범위){
// 실행 코드
}
for in ..(온점 2개): 일반적인 형태의 for 반복문
in 키워드를 사용해서 반복하는 범위의 숫자를 변수에 담아두고 사용할 수 있습니다.
for(index in 1..10){
Log.d("For","현재 숫자는 ${index}")
}
index에는 1부터 10까지의 수가 차례대로 저장됩니다.
until: 마지막 숫자 제외하기
시작값과 종료값 사이의 ..(온점 2개) 대신에 until 키워드를 사용하면 종료값 이전까지만 반복합니다.
for(변수 in 시작값 until 종료값){
// 실행 코드
}
배열의 인덱스가 항상 0부터 시작하기 때문에 배열의 인덱스를 사용하여 처리하는 코드에서 사용할 수 있습니다.
var arrayMonth = arrayOf("JAN", "FEB", "MAR", "APR", "MAY", "JUN")
for(index in 0 until array.size){
Log.d("For","현재 월은 ${array.get(index)} 입니다.")
}
step: 건너뛰기
step 키워드를 사용하면 for 문의 증가 폭을 지정할 수 있습니다.
for(index in 0..100 step 3){
Log.d("For","현재 숫자는 ${index}")
}
위 코드는 0부터 100까지 반복하며 시작값에서 종료값까지 한 번 반복할 때마다 3씩 증가시켜서 실행합니다.
downTo: 감소시키기
downTo 키워드를 사용하면 큰 수에서 작은 수로 감소시키면서 실행할 수 있습니다. 증가할 때와 같이 step을 사용할 수도 있습니다.
for (index in 10 downTo 0 step 2){
Log.d("For", "현재 숫자는 ${index}")
}
index에는 10, 8, 6, 4, 2, 0이 차례로 저장됩니다.
배열, 컬렉션에 들어있는 엘리먼트 반복하기
배열이나 컬렉션을 엘리먼트의 개수만큼 반복하면서 사용할 수 있습니다.
var arrayMonth = arrayOf("JAN", "FEB", "MAR", "APR", "MAY", "JUN")
for(month in arrayMonth){
Log.d("For","현재 월은 ${month} 입니다.")
}
위 코드에서는 arrayMonth의 원소들을 바로 month 변수에 저장하기 때문에 인덱스를 사용하는 방법보다 더 편하고 가독성도 좋습니다.
5.2 while 반복문
for 문이 특정 범위만큼 반복하기 위한 구문이라면, while 문은 특정 조건이 만족할 때까지 반복하기 위한 구문입니다. 쉽게 반복이 가능한 if 문이라고 생각할 수 있습니다.
-
while 문의 기본 구조
while(조건식){ // 실행 코드 }
일반적인 while 반복문
for문과는 다르게 증감되는 인덱스가 있으면 코드에서 직접 처리해야 합니다.
var current = 1
val until = 12
while (current < until){
Log.d("while", "현재 값은 ${current} 입니다")
current += 1
}
current 에는 1부터 12까지의 수가 차례로 저장되고, current가 12가 되는 순간 while문의 조건이 맞지 않기 때문에 while문 안의 코드는 실행되지 않습니다.
do와 함께 사용하기
do와 함께 사용하면 while문 안의 조건식과 상관없이 do 블록 안의 코드를 한 번 실행합니다.
var game = 1
val match = 6
do{
Log.d("while","${game} 게임 이겼습니다. 우승까지 ${match-game} 게임 남았습니다. ")
}while(game < match)
3. 반복문 제어하기
반복문이 실행되는 도중에 특정 조건에서 반복문을 벗어나거나 다음 반복문으로 넘어가야 하는 상황이 있습니다. 이럴 때 break와 continue 키워드를 사용할 수 있습니다.
break: 반복문 탈출하기
반복문 안에서 break를 만나면 가장 안쪽의 for문을 탈출합니다. (for문 1개 탈출)
for (index in 1..10){
Log.d("break", "현재 index는 $index 입니다. ")
if(index > 5){
break
}
}
index에는 1부터 5까지의 수가 차례로 저장되고 5일 때 if 문의 조건에 의해 반복문을 탈출합니다.
continue: 다음 반복문으로
반복문 내에서 continue를 만나면 continue 다음 코드는 실행하지 않고 즉시 가장 안쪽의 for 문으로 돌아갑니다.
for(except in 1..10){
if (except > 3 && except < 8){
continue
}
Log.d("continue", "현재 index는 $except 입니다")
}
출력되는 except의 값은 1,2,3,8,9,10 입니다. continue에 의해 4,5,6,7은 출력되지 않습니다.
정리
- for 문: 정해진 범위만큼 코드를 반복하기 위해 사용하는 문법입니다.
- while 문: for 문과는 조금 다르게 정해진 범위가 아닌, 특정 조건을 만족할 때까지 코드를 반복하기 위해 사용합니다.
- break 문: 반복문을 완전히 벗어나기 위해서 사용합니다.
- continue 문: 반복문 도중에 다음 반복문으로 넘어가기 위해서 사용합니다. break 문처럼 완전히 벗어나지는 않고 다음 반복문의 조건에 따라 실행 여부가 결정됩니다.
Leave a comment