코틀린 문법: "for 반복문"

SHY(code poet)·2024년 1월 23일

반복문
: 코드를 반복적으로 실행할 때 사용. 1부터 10까지의 숫자를 Log를 사용하여 출력할 때 반복문이 없다면 Log 코드를 열 줄 작성해야 한다.
반복문을 언제 사용하는지 아는 것이 중요하다.
반복문은 말그대로 코드 실행을 ‘반복’해 준다. 그렇기 때문에, 서비스 부하가 그만큼 올 수 있다는 것이기에 꼭 필요할 때만 적용해줄 것. 조건 설정 같은 것에는 조건문을 사용해주면 좋다. 조건문은 조건에 맞추어 하나의 코드만 실행하지만, 반복문은 값을 구하기 위해 모든 범위값을 다 넣기 때문이다. 하나하나 실행하면서 값 비교할 때 사용하면 좋다.
⇒ TIP. 조건문의 핵심은 여러 조건들 중 단하나의 조건만 만족시키면 그에 대한 결괏값을 한번에 실행시키는 것인데 비해,
반복문은 반복할 범위 내에서 “순서대로” 결과값을 도출해야 할 때 주로 사용한다.

① for 반복문: 특정 횟수, 정해진 범위만큼 코드 반복
: for (변수 & 반복할 범위){
// for블록, 실행 코드
}

  • for 다음의 (괄호)안에 반복할 범위 지정, for블록 코드가 범위만큼 반복 동작

ⓐ 기본 for 반복문:
for (변수 in 시작값..종료값){ // in사용하여 반복하는 범위의 숫자를 변수에 담아두고 사용
// for블록. 실행 코드
}

  • 다음은 1부터 10까지 열 번 반복하면서 그 숫자를 변수 index에 먼저 저장하고, 반복하는 횟수만큼 for 블록의 코드 실행
    for (index in 1..10){
    Log.d("For", "현재 숫자는 $index")
    }
    // 첫 번째 반복에서는 변수 idex에 1이 저장되고, 두 번째 반복에서는 index에 2가 저장.

Q. (변수1, 변수2) 이렇게 변수 두 개 한번에 넣는 방법?

ⓑ until: 마지막 숫자 제외
for (변수 in 시작값 until 종료값){
// 실행 코드
}

  • until을 사용하면 종료값 이전까지만 반복한다. (경계값 포함 X)
    var array = arrayOf("JAN", "FEB", "MAR", "APR", "MAY", "JUN")
    for (index in 0 until array.size){
    Log.d("For", "현재 월은 ${array.get(index)}입니다.")
    }
  • 컴퓨터의 인덱스가 항상 0부터 시작하기 때문에 배열의 인덱스를 사용하여 처리하는 코드에서 사용할 수 있다.

ⓒ step: 건너뛰기
for (변수 in 시작값..종료값 step 3){
// 실행 코드
}

  • 1부터 100까지 반복하면서 3의 배수만 사용하고 싶다면 어떻게 해야 할까?
    for 문 안에 if 문을 사용해서 현재 값이 3의 배수일 때만 출력하도록 할 수 있다.
    그런데 이렇게 하면 매번 해당 if 문을 실행해서 코드가 낭비되는 단점이 있다.
    이럴 때! step을 사용하면 for 문의 블록을 step 수 만큼 건너뛰어서 실행.
  • for (index in 0..100 step 3){
    Log.d("For", "현재 숫자는 $index")
    }
    ㄴ0부터 100까지 반복하며 한번 반복할 때마다 3씩 증가시켜서 실행.

※ for(i in 1..100) {
if(i%3==0) { ⇒ 일반적으로 배수를 구할 땐 %몫 연산자를 이용한다.
printIn(i) 즉, 3으로 나누었을 때 나머지가 0이 되는 i는 3의 배수뿐이다.
}
}

ⓓ donwTo: 감소시키기
for (index in 10 downTo 0){
Log.d("For", "현재 숫자는 $index")
}

  • 큰 수에서 작은 수로 감소시키면서 반복문을 실행할 수 있다
  • step 사용가능.

ⓔ 배열, 컬렉션에 들어 있는 엘리먼트 반복하기
for (변수 in 배열 또는 컬렉션){
// 실행 코드
}

  • 배열이나 컬렉션을 엘리먼트의 개수만큼 반복하면서 사용할 수 있다.
    var arrayMonth = arrayOf("JAN", "FEB", "MAR", "APR", "MAY", "JUN")
    for (month in arrayMonth){
    Log.d("for", "현재 월은 ${month}입니다.")
    }
profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글