이 포스팅은 고돈호 님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.

1.1 함수

코틀린 역시 함수가 존재한다. 일반적인 언어에서의 함수와 마찬가지로 매개변수와 return 값이 존재할 수도 존재하지 않을 수도 있다. 함수의 형식은 다음과 같다.

fun 함수이름(파라미터 이름: 파라미터 타입): 반환형 {
    return 값
}

함수의 종류는 각각 다음처럼 존재한다. 예시를 통해 알아보자.

 

1. 반환값과 입력값이 있는 함수

fun square(n: Int): Int {
	return n*n
}

2. 반환값이 없는 함수

fun printMinus(n1: Int, n2: Int) {
	Log.d("fun", "n1 - n2 = ${n1 - n2}")
}

3. 매개변수 없이 반환 값만 있는 함수

fun getPi(): Double {
	return 3.14
}

1.2 함수의 호출

1.1 에서 정의한 함수들을 호출하면서 함수의 호출 방법을 알아보자.

1. 반환값과 입력값이 있는 함수

var result = square(10)
Log.d("fun", "10의 제곱은 ${result}입니다.")

2. 반환값이 없는 함수

Log.d("5 - 3은 ${printMinus(5,3)} 이다.")

3. 매개변수 없이 반환 값만 있는 함수

val PI = getPi()
Log.d("fun", "지름이 10인 원의 넓이는 ${10 * 10 * PI} 입니다.")

1.3 전체 예시 코드

package kr.co.ki.function

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 반환값과 입력값이 있는 함수
        var result = square(10)
        Log.d("fun", "10의 제곱은 ${result}입니다.")

        // 반환값이 없는 함수
        printMinus(5, 3)

        // 매개변수 없이 반환값만 있는 함수
        val PI = getPi()
        Log.d("fun", "지름이 10인 원의 넓이는 ${10 * 10 * PI} 입니다.")
    }

    // 반환값과 입력값이 있는 함수
    fun square(n: Int): Int {
        return n*n
    }

    // 반환값이 없는 함수
    fun printMinus(n1: Int, n2: Int) {
        Log.d("fun", "n1 - n2 = ${n1 - n2}")
    }

    // 매개변수 없이 반환값만 있는 함수
    fun getPi(): Double {
        return 3.14
    }
}

 

'안드로이드 앱 개발' 카테고리의 다른 글

8. 코틀린의 null  (0) 2021.12.23
7. 클래스  (0) 2021.12.21
5. 반복문  (0) 2021.12.19
4. 배열과 컬렉션  (0) 2021.12.14
3. 조건문  (0) 2021.12.12
이 포스팅은 고돈호 님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.

1.1 for문

일반적인 언어들과 마찬가지로 코틀린 역시 반복문을 지닌다. 먼저 for문을 살펴보자. for문은 다음과 같은 형태로 작성한다.

for (인덱스 in 시작 값... 종료 값) {
    
}

for문에 until, downTo 등을 통해 여러 가지 방법을 적용할 수 있다. 다음의 예시 코드를 통해 파악해보자

package kr.co.ki.collectionmap

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 1. 일반적인 반복문 10까지
        for (i in 1..10) {
            Log.d("For", "현재 숫자는 ${i}")
        }
        // 2. until로 마지막 숫자 제거
        var array = arrayOf("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT")
        for (i in 0 until array.size) {
            Log.d("For", "현재 요일은 ${array.get(i)} 입니다.")
        }
        // 3. step을 이용한 건너뛰기
        for (i in 1..10 step 2) {
            Log.d("For", "현재 숫자는 ${i}")
        }
        // 4. down to을 이용한 감소
        for (i in 10 downTo 0) {
            Log.d("For", "현재 숫자는 ${i}")
        }
        // 5. 배열, 컬렉션 사용
        for (day in array) {
            Log.d("For", "현재 요일은 ${day} 입니다.")
        }
    }
}

 출력문은 다음과 같다.

2021-12-19 18:08:01.683 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1
2021-12-19 18:08:01.683 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 2
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 4
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 6
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 8
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 10
2021-12-19 18:08:01.684 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SUN 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 MON 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 TUE 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 WED 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 THU 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 FRI 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SAT 입니다.
2021-12-19 18:08:01.685 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 10
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 9
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 8
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 7
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 6
2021-12-19 18:08:01.686 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 5
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 4
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 3
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 2
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 1
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 숫자는 0
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SUN 입니다.
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 MON 입니다.
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 TUE 입니다.
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 WED 입니다.
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 THU 입니다.
2021-12-19 18:08:01.687 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 FRI 입니다.
2021-12-19 18:08:01.688 1665-1665/kr.co.ki.collectionmap D/For: 현재 요일은 SAT 입니다.

2.1 while문

For문 이외에도 흔히 반복문으로 사용하는 while 역시 존재한다. For문의 사용법은 다음과 같다.

while (조건식) {

}

while문에는 while, do while문이 존재한다. 이 두 개의 가장 큰 차이점은 do while문은 조건을 만족하지 않으면 실행하지 않는 while문과 달리 무조건 한번 실행한다는 것이다.

package kr.co.ki.collectionmap

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var current = 1
        var until = 12
        while (current < until) {
            Log.d("while", "현재 값은 ${current} 입니다.")
            current = current + 1
        }

        var cnt = 1
        do {
            Log.d("while", "현재 값은 ${cnt} 입니다.")
            cnt = cnt + 1
        } while (cnt < 1)
    }
}

결과는 다음과 같다. 다음의 그림에서 보이듯이 cnt가 1이고 cnt < 1을 조건으로 있음에도 불고하고 do while문이기 때문에 한 번은 돌아가는 것을 확인할 수 있다.


3.1 break & continue

그 밖에 break, continue문등의 제어문이 있다. 각각 루프문 탈출, 다음 반복문으로 이동하는 역할이다.

'안드로이드 앱 개발' 카테고리의 다른 글

7. 클래스  (0) 2021.12.21
6. 함수  (0) 2021.12.20
4. 배열과 컬렉션  (0) 2021.12.14
3. 조건문  (0) 2021.12.12
2. 변수  (0) 2021.12.12
이 포스팅은 고돈호님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.

1.1 새 프로젝트 생성

[Create New Project] - [Empty Activity] - [NEXT] 새로운 프로젝트 생성


1.2 로그의 활용 

(d는 debug를 의미, 첫 번째 매개변수는 검색 용도로 사용되는 태그, 두 번째 매개변수는 출력할 메시지 입력)

1
Log.d("태그", "출력 메시지");
cs

MainActivity.kt을 다음과 같이 수정 단 import android.util.Log는 직접 import 해주기

package kr.co.kibeom.basicsyntax

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Log.d("BasicSyntax", "로그를 출력합니다. method = Log.d")
    }
}

이를 실행시키면 다음과 같다.

 

MainAcivity.kt

이 후 안드로이드 스튜디오 하단의 [Logcat] 탭을 클릭해서 창을 연 후 Log.d의 태그로 입력했던 BasicSyntax를 검색하면 여러 로그 중 BasicSyntax에 해당하는 로그만 볼 수 있다.

Logcat에 BasicSyntax를 검색해서 본 모습


1.3 결론

따라서 우리는 다음의 정보들을 알 수 있다.

Log : 코딩 시 코드의 흐름을 파악하기 위해 앱 외부에 출력하는 정보. 

Logcat : 출력되는 로그를 모아서 보는 도구

 

여러 로그들은 다음과 같다. (외울 필요는 없다.)

함수 의미 내용
Log.v() verbose 상세한 로그 내용을 출력하기 위해 사용
Log.d() debug 개발에 필요한 내용을 출력하기 위해 사용
Log.i() information 정보성의 일반적인 메시지 전달하기 위해 사용
Log.w() warning 에러는 아나지만 경고성 메시지 전달하기 위해 사용
Log.e() error 실제 에러 메시지를 출력하기 위해 사용

 

 

'안드로이드 앱 개발' 카테고리의 다른 글

6. 함수  (0) 2021.12.20
5. 반복문  (0) 2021.12.19
4. 배열과 컬렉션  (0) 2021.12.14
3. 조건문  (0) 2021.12.12
2. 변수  (0) 2021.12.12

+ Recent posts