반복문에는 for문과 while문 두 가지가 있고 반복문을 통하여 코드를 간소화시킬 수 있습니다.
for문은 특정 횟수만큼 코드를 반복하기 위하여 사용합니다.
while문은 특정 조건을 만족할 때까지 코드를 반복할 때 사용합니다. if문처럼 조건을 정할 수 있습니다.
for (반복할 범위) {
}
여기서 반복할 범위를 정해주는데 다음과 같은 종류가 있습니다.
in - 일반적인 형태
for (변수 in 시작값..종료값) { }
until - 마지막 숫자 제외하기
for (변수 in 시작값 until 종료값) { } // 종료값 이전까지만 반복합니다.
step - 건너뛰기
for (변수 in 시작값..종료값 step 증가값) { } // 시작값부터 종료값까지 증가값 만큼 증가시켜서 반복합니다.
down to - 감소시키기
for (변수 in 시작값 down to 종료값) { }
배열, 컬렉션에 들어 있는 엘리먼트 반복하기
for (변수 in 배열 또는 컬렉션) { }
일반적인 while 반복문은 다음과 같은 형태로 나타냅니다.
while (조건식) { }
do와 함께 사용
ex)var game = 1 var match = 6 do { Log.d("while", "${game}게임 이겼습니다. 우승까지 ${match-game}게임 남았습니다.") game +=1 } while (game < match)
- while 문과의 do ~ while 문의 차이는 while 문의 조건과는 별개로 do 안의 코드를 한 번 실행합니다.
break - 반복문 탈출하기
ex)for (index in 1..10){ Log.d("break", "현재 index는 $index 입니다.") if (index > 5){ break } }
- 5보다 크면 break가 실행되어 for 블록을 빠져나갑니다.
continue - 다음 반복문으로 넘어가기
ex)for (exceptin 1..10) { if (except > 3 && except < 8){ continue } Log.d("continue", "현재 index는 $except 입니다.") }
- 반복문에서 continue를 만나면 다음 코드는 실행하지 않고 반복문의 처음으로 돌아갑니다.
함수는 코드를 사용할 수 있는 최소 단위로 fun으로 정의하고 return으로 값을 반환합니다.
함수를 정의할 때 입력값을 기술한 것을 파라미터라고 합니다.
기본적인 구조는 다음과 같습니다.
fun 함수명 (파라미터 이름: 타입): 반환 타입 { return 값 }
파라미터와 반환값이 없는 함수는 작성하지 않습니다.(Log에 정의된 Log.d 함수가 대표적)
함수를 호출할 때 괄호 안에 값을 넣어서 전달하는데 이 때 입력되는 값의 타입은 함수에 정의된 파라미터 타입과 동일해야 합니다.
함수는 이름 뒤에 괄호를 붙여서 명령어를 실행하는 형태입니다. ex) 함수명(값)
함수는 이름만 호출하면 실행되지 않고 반드시 괄호를 붙여야 실행됩니다.
괄호를 붙이지 않으면 함수의 코드가 실행되지 않고 마치 값처럼 인식됩니다.
반환값과 입력값이 있는 함수의 정의
- square() : Int 타입의 x라는 입력 파라미터를 갖는 함수
fun square(x: Int): Int { return x * x }반환값과 입력값이 있는 함수의 호출
- 파라미터에 전달할 값을 입력하고 반환값은 대입 연산자(=)로 변수에 담은 후에 사용합니다.
ex)var squareResult = square(30) Log.d("fun", "30의 제곱은 ${squareResult}입니다.")
반환값이 없는 함수의 정의
- printsum() : 반환값 없이 입력값을 받아 Log로 출력하는 함수
fun printsum(x: Int, y: Int) { Log.d("fun", "x + y = ${x + y}") }반환값이 없는 함수의 호출
- 반환값이 없으면 대입 연산자(=)를 사용하지 않고 바로 호출합니다.
printSum(3, 5)
입력값 없이 반환값만 있는 함수의 정의
- getPi() : 호출한 측으로 3.14를 반환하고 종료됩니다.
fun getPi() : Double { return 3.14 }입력값이 없는 함수의 호출
- 입력값이 없다면 괄호만으로 실행하고 결괏값을 받을 수 있습니다.
val PI = getPi() Log.d("fun", "지름이 10인 원의 둘레는 ${10 * PI}입니다.)
파라미터는 변수처럼 '이름: 타입'의 형태로 여러 개의 파라미터가 정의될 경우는 콤마로 구분합니다.
Kotlin에서 파라미터의 값은 이뮤터블로 읽기 전용 키워드 val이 생략된 형태하고 생각할 수 있습니다.
- 파라미터의 기본값은 다음과 같습니다.
fun 함수명((val 생략) name1: String, name2: Int, name3: Double) { 실행 코드 }
- 함수에 정의된 파라미터가 많을 경우 입력하는 값의 의미가 명확하지 않을 때가 있으므로 다음과 같이 파라미터 이름을 지정해서 직접 값을 입력할 수 있습니다.
newFunction(name = "Michael",name2 = 28, name3 = 67.5)