Kotlin을 사용한 첫 프로그램

1. 시작하기 전에

Kotlin을 사용한 Android 로고

Kotlin 프로그래밍 언어로 코드를 작성하여 Android 앱을 만듭니다. Google은 Android를 처음 사용하는 개발자에게 이 언어를 권장합니다.

Kotlin은 개발자의 생산성을 향상하는 최신 프로그래밍 언어입니다. 예를 들어 Kotlin을 사용하면 다른 프로그래밍 언어보다 더 간결하게 적은 수의 코드를 작성하여 동일한 기능을 구현할 수 있습니다. Kotlin으로 빌드된 앱은 다운될 가능성도 낮으므로 매우 안정적으로 사용할 수 있습니다. 기본적으로 Kotlin을 사용하면 더 짧은 시간에 더 나은 Android 앱을 작성할 수 있습니다. 따라서 Kotlin은 업계에서 점점 더 많은 인기를 얻고 있으며 대다수 전문 Android 개발자가 사용하는 언어입니다.

Kotlin으로 Android 앱을 빌드하려면 먼저 Kotlin 프로그래밍의 기본 개념을 잘 이해해야 합니다. 이 개발자 과정의 Codelab에서는 본격적으로 앱을 만들기 전에 Kotlin 프로그래밍 기본사항을 알아봅니다.

빌드할 항목

  • 실행 시 메시지를 표시하는 Kotlin의 간단한 프로그램

학습할 내용

  • 간단한 Kotlin 프로그램을 작성하여 실행하는 방법
  • 간단한 프로그램을 수정하여 출력을 변경하는 방법

필요한 항목

  • 인터넷 액세스가 가능하고 웹브라우저가 있는 컴퓨터

2. 시작하기

이 Codelab에서는 Kotlin의 간단한 프로그램을 살펴보고 수정합니다. 프로그램은 컴퓨터 또는 휴대기기에서 사용자에게 메시지를 표시하거나 장바구니의 상품 비용을 계산하는 등 특정 작업을 실행하기 위한 일련의 명령이라고 생각하면 됩니다. 컴퓨터에서 실행해야 하는 작업을 위한 단계별 명령을 코드라고 합니다. 프로그램에서 코드를 수정하면 출력이 변경될 수 있습니다.

코드 편집기라는 도구를 사용하여 코드를 작성하고 수정합니다. 텍스트를 작성하고 수정할 수 있는 텍스트 편집기와 유사하지만 코드 편집기는 코드를 더 정확하게 작성할 수 있는 기능도 제공합니다. 예를 들어 코드 편집기는 입력할 때 자동 완성 추천 용어를 표시하고 코드가 틀렸을 때 오류 메시지를 표시합니다.

Kotlin 언어의 기본사항을 연습하려면 Kotlin 플레이그라운드라는 대화형 코드 편집기를 사용합니다. 웹브라우저에서 액세스할 수 있으므로 컴퓨터에 소프트웨어를 설치하지 않아도 됩니다. Kotlin 플레이그라운드에서 바로 Kotlin 코드를 수정하고 실행하여 출력을 확인할 수 있습니다.

Kotlin 플레이그라운드에서 Android 앱을 빌드할 수는 없습니다. 이후 개발자 과정에서는 Android 스튜디오라는 도구를 설치하고 사용하여 Android 앱 코드를 작성하고 수정합니다.

이제 Kotlin에 관해 간단히 알아보았으니 첫 번째 프로그램을 살펴보겠습니다.

3. Kotlin 플레이그라운드 열기

  1. 컴퓨터의 웹브라우저에서 Kotlin 플레이그라운드를 엽니다.

다음 이미지와 같은 웹페이지가 표시됩니다.

다음은 Kotlin 플레이그라운드의 스크린샷을 보여줍니다. 코드 편집기는 'Hello, world!'를 출력하는 간단한 프로그램을 보여줍니다.

코드 편집기에 이미 기본 코드가 채워져 있습니다. 다음 코드 세 줄은 간단한 프로그램을 구성합니다.

fun main() {
    println("Hello, world!")
}

프로그래밍 경험이 없더라도 프로그램의 기능을 추측할 수 있을 것입니다.

다음 섹션으로 이동하여 추측이 맞는지 확인해 보세요.

4. 첫 번째 프로그램 실행

실행 버튼를 클릭하여 프로그램을 실행합니다.

실행 버튼을 클릭하면 많은 명령이 실행됩니다. Kotlin 프로그래밍 언어의 코드는 사람이 이해할 수 있도록 만들어져서 사람들이 Kotlin 프로그램을 더 쉽게 읽고 쓰고 공동작업할 수 있습니다. 하지만 컴퓨터는 이 언어를 즉시 이해하지 못합니다.

개발자가 작성한 Kotlin 코드를 가져와서 한 줄씩 확인하고 컴퓨터가 이해할 수 있는 형식으로 변환하는 Kotlin 컴파일러가 필요합니다. 이 프로세스를 코드 컴파일이라고 합니다.

코드가 성공적으로 컴파일되면 프로그램이 실행됩니다. 컴퓨터에서 프로그램을 실행하면 각 명령이 실행됩니다. 요리 레시피를 따라 해 본 적이 있다면 레시피의 각 단계를 실행하는 것과 각 명령을 실행하는 것이 같다고 보면 됩니다.

아래 스크린샷은 프로그램을 실행할 때 표시되는 내용을 보여줍니다.

이 스크린샷은 Kotlin 플레이그라운드의 웹페이지 일부를 보여줍니다. 코드 편집기에 Hello World 프로그램의 코드가 표시됩니다. 코드 편집기 아래에 'Hello, world!' 문구가 표시되는 출력 창이 있습니다.

코드 편집기 하단에 프로그램의 출력 또는 결과를 보여주는 창이 표시됩니다.

Hello, world!

훌륭합니다. 이 프로그램의 목적은 Hello, world!라는 메시지를 출력하거나 표시하는 것입니다.

어떤 원리일까요? Kotlin 프로그램에는 main 함수가 있어야 합니다. main 함수란 코드에서 Kotlin 컴파일러가 시작되는 특정 위치입니다. main 함수는 프로그램의 진입점 또는 시작점입니다.

간단한 프로그램의 main 함수 첫 번째 줄을 가리키는 화살표와 함께 'Start here'라는 라벨이 있습니다.

그렇다면 함수란 무엇일까요?

5. 함수의 요소

함수는 특정 작업을 실행하는 프로그램의 세그먼트입니다. 프로그램에 여러 함수를 포함할 수도 있고 하나만 포함할 수도 있습니다.

함수 정의와 함수 호출 비교

먼저 코드에 함수를 정의합니다. 즉, 작업을 실행하는 데 필요한 모든 명령을 지정합니다.

함수가 정의되면 함수를 호출할 수 있으므로 이 함수 내의 명령을 실행할 수 있습니다.

이렇게 비유해 보겠습니다. 초콜릿 케이크를 만드는 방법에 관한 단계별 명령을 작성합니다. 이 명령 세트의 이름은 bakeChocolateCake일 수 있습니다. 케이크를 만들려고 할 때마다 bakeChocolateCake 명령을 실행할 수 있습니다. 케이크 3개를 원한다면 bakeChocolateCake 명령을 3번 실행해야 합니다. 먼저 단계를 정의하고 이름을 지정합니다. 이를 함수 정의라고 간주할 수 있습니다. 그런 다음 실행하고 싶을 때마다 단계를 참조합니다. 이를 함수 호출로 간주할 수 있습니다.

함수 정의

다음은 함수를 정의하는 데 필요한 핵심 부분입니다.

  • 함수에는 이름이 있어야 나중에 호출할 수 있습니다.
  • 함수에는 함수 호출 시 제공해야 하는 입력 또는 정보도 필요할 수 있습니다. 함수는 이러한 입력을 사용하여 목적을 달성합니다. 입력이 필요한 것은 선택사항이며 일부 함수에는 입력이 필요하지 않습니다.
  • 함수에는 작업을 실행하는 명령이 포함된 본문도 있습니다.

이 다이어그램은 함수 이름인 'name'이라는 라벨이 포함된 검은색 상자로 함수를 나타냅니다. 함수 상자에는 함수 내의 함수 본문을 나타내는 body라는 작은 상자가 있습니다. inputs라는 라벨도 있으며 검은색 함수 상자를 화살표로 가리킵니다. 이는 함수 입력이 함수로 전달되는 것을 나타냅니다.

위 다이어그램을 Kotlin 코드로 변환하려면 아래 문법 또는 형식에 따라 함수를 정의합니다. 이러한 요소는 순서가 중요합니다. fun 단어가 맨 먼저 오고 함수 이름, 괄호 안에 입력, 중괄호 안에 함수 본문 순으로 이어집니다.

다음 다이어그램은 Kotlin 코드에서 함수를 선언하는 문법 또는 형식을 보여줍니다. 함수는 'fun'이라는 단어로 시작합니다. fun 오른쪽에는 name이라는 라벨이 지정된 상자가 있습니다. name 상자 오른쪽에는 괄호로 묶인 inputs라는 라벨이 지정된 상자가 있습니다. inputs 뒤에는 여는 중괄호가 있습니다. 다음 줄에는 body로 라벨이 지정된 상자가 있고 오른쪽으로 들여쓰기되어 있습니다. 함수 하단, body 뒤에는 닫는 중괄호가 있습니다.

Kotlin 플레이그라운드에서 본 main 함수 예시 내에서 함수의 주요 부분을 확인하세요.

  • 함수 정의는 fun 단어로 시작합니다.
  • 그런 다음 함수 이름은 main입니다.
  • 함수에 입력이 없으므로 괄호는 비어 있습니다.
  • 함수 본문에는 한 줄의 코드 println("Hello, world!")가 있으며 함수의 여는 중괄호와 닫는 중괄호 사이에 있습니다.

다음 main 함수 코드가 이미지에 표시됩니다. fun main() { println("Hello, world!") } main이라는 단어를 가리키는 name이라는 라벨이 있습니다. 여는 괄호와 닫는 괄호 기호를 가리키는 inputs라는 라벨이 있습니다.  println("Hello, world!") 코드 줄을 가리키는 body라는 라벨이 있습니다.

함수의 각 부분은 아래에서 자세히 설명합니다.

함수 키워드

Kotlin에서 함수를 정의하려고 한다는 것을 나타내려면 새 줄에 fun(함수의 줄임말)이라는 특수 단어를 사용하세요. 표시된 대로 정확하게 모두 소문자로 fun을 입력해야 합니다. func나 function, 다른 철자로 사용할 수 없습니다. Kotlin 컴파일러가 의미를 인식하지 못하기 때문입니다.

이러한 특수 단어는 Kotlin에서 키워드라고 하며 Kotlin에서 새 함수를 만드는 등의 특정한 목적으로 예약되어 있습니다.

함수 이름

함수에는 이름이 있어 서로 구별할 수 있습니다. 사람들을 이름으로 식별하는 것과 비슷합니다. 함수 이름은 fun 키워드 뒤에 있습니다.

다음 다이어그램은 Kotlin 코드에서 함수를 선언하는 문법 또는 형식을 보여줍니다. 함수는 'fun'이라는 단어로 시작합니다. fun 오른쪽에는 name이라는 라벨이 지정된 상자가 있습니다. name 상자는 녹색 테두리와 배경으로 강조표시되어 함수 정의의 이 부분을 강조합니다. name 상자 오른쪽에는 괄호로 묶인 inputs라는 라벨이 지정된 상자가 있습니다. inputs 뒤에는 여는 중괄호가 있습니다. 다음 줄에는 body로 라벨이 지정된 상자가 있고 오른쪽으로 들여쓰기되어 있습니다. 함수 하단, body 뒤에는 닫는 중괄호가 있습니다.

함수의 목적에 따라 함수에 적합한 이름을 선택합니다. 이름은 일반적으로 동사 또는 동사구입니다. Kotlin 키워드는 함수 이름으로 사용하지 않는 것이 좋습니다.

함수 이름은 카멜 표기법 규칙을 따라야 합니다. 여기서 함수 이름의 첫 번째 단어는 모두 소문자입니다. 이름에 단어가 여러 개 있는 경우 단어 사이에는 공백이 없어야 하며 다른 모든 단어는 대문자로 시작해야 합니다.

함수 이름의 예는 다음과 같습니다.

  • calculateTip
  • displayErrorMessage
  • takePhoto

함수 입력

함수 이름 뒤에는 항상 괄호가 옵니다. 이러한 괄호는 함수의 입력을 나열하는 위치입니다.

다음 다이어그램은 Kotlin 코드에서 함수를 선언하는 문법 또는 형식을 보여줍니다. 함수는 'fun'이라는 단어로 시작합니다. fun 오른쪽에는 name이라는 라벨이 지정된 상자가 있습니다. name 상자 오른쪽에는 괄호로 묶인 inputs라는 라벨이 지정된 상자가 있습니다. inputs 상자가 녹색 테두리와 배경으로 강조표시되어 함수의 이 부분을 강조합니다. inputs 뒤에는 여는 중괄호가 있습니다. 다음 줄에는 body로 라벨이 지정된 상자가 있고 오른쪽으로 들여쓰기되어 있습니다. 함수 하단, body 뒤에는 닫는 중괄호가 있습니다.

입력은 함수가 목적을 실행하는 데 필요한 데이터입니다. 함수를 정의할 때 함수 호출 시 특정 입력이 전달되도록 요구할 수 있습니다. 함수에 입력이 필요하지 않으면 괄호는 다음과 같이 비어 있습니다. ()

다음은 입력 수가 다른 함수의 예시입니다.

아래 다이어그램은 addOne이라는 함수를 보여줍니다. 함수의 목적은 주어진 숫자에 1을 더하는 것입니다. 주어진 숫자인 입력 한 개가 있습니다. 함수 본문 안에는 함수에 전달된 숫자에 1을 더하는 코드가 있습니다.

이 다이어그램은 함수 이름인 'addOne'이라는 라벨이 포함된 검은색 상자로 함수를 나타냅니다. 함수 상자 안에는 함수 본문을 나타내는 작은 상자가 있습니다. 함수 본문 상자 안에는 'number + 1'이라는 텍스트가 있습니다. 검은색 함수 상자 밖에는 'number'라는 라벨이 지정된 상자가 있고 화살표로 검은색 함수 상자를 가리킵니다. 숫자는 함수 입력입니다.

다음 예시에는 printFullName이라는 함수가 있습니다. 함수에는 이름과 성에 관한 입력 두 가지가 필요합니다. 함수 본문에서는 출력에 이름과 성을 인쇄하여 사람의 전체 이름을 표시합니다.

이 다이어그램은 함수 이름인 'printFullName'이라는 라벨이 포함된 검은색 상자로 함수를 나타냅니다. 함수 상자 안에는 함수 본문을 나타내는 작은 상자가 있습니다. 함수 본문 상자 안에는 'Print firstName and lastName in the output'이라는 텍스트가 있습니다. 검은색 함수 상자 밖에는 각각 'firstName'과 'lastName'이라는 라벨이 지정된 두 상자가 있습니다. firstName 상자와 lastName 상자에서 검은색 함수 상자를 가리키는 화살표가 있습니다. firstName과 lastName은 두 가지 함수 입력입니다.

다음 마지막 예시에서는 함수 호출 시 전달될 입력이 필요하지 않은 함수를 보여줍니다. displayHello() 함수를 호출하면 Hello 메시지가 출력에 인쇄됩니다.

이 다이어그램은 함수 이름인 'displayHello'라는 라벨이 포함된 검은색 상자로 함수를 나타냅니다. 함수 상자 안에는 함수 본문을 나타내는 작은 상자가 있습니다. 함수 본문 상자 안에는 'Print Hello in the output'이라는 텍스트가 있습니다.

함수 본문

함수 본문에는 함수의 목적을 달성하는 데 필요한 명령이 포함되어 있습니다. 여는 중괄호와 닫는 중괄호로 묶인 코드 줄을 찾아 함수 본문을 찾을 수 있습니다.

다음 다이어그램은 Kotlin 코드에서 함수를 선언하는 문법 또는 형식을 보여줍니다. 함수는 'fun'이라는 단어로 시작합니다. fun 오른쪽에는 name이라는 라벨이 지정된 상자가 있습니다. name 상자 오른쪽에는 괄호로 묶인 inputs라는 라벨이 지정된 상자가 있습니다. inputs 뒤에는 여는 중괄호가 있습니다. 다음 줄에는 body로 라벨이 지정된 상자가 있고 오른쪽으로 들여쓰기되어 있습니다. body 상자가 녹색 테두리와 배경으로 강조표시되어 함수의 이 부분을 강조합니다. 함수 하단, body 뒤에는 닫는 중괄호가 있습니다.

간단한 프로그램 설명

이 Codelab 앞부분에서 본 간단한 프로그램을 다시 살펴보겠습니다.

다음 main 함수 코드가 이미지에 표시됩니다. fun main() { println("Hello, world!") } main이라는 단어를 가리키는 name이라는 라벨이 있습니다. 여는 괄호와 닫는 괄호 기호를 가리키는 inputs라는 라벨이 있습니다.  println("Hello, world!") 코드 줄을 가리키는 body라는 라벨이 있습니다.

프로그램에는 main 함수라는 하나의 함수가 포함되어 있습니다. main은 Kotlin의 특수 함수 이름입니다. Kotlin 플레이그라운드에서 코드를 작성할 때 코드는 main() 함수 내에 작성하거나 main() 함수에서 호출해야 합니다.

main() 함수의 본문에는 코드 한 줄만 있습니다.

println("Hello, world!")

이 코드 줄은 출력 창에 Hello, world! 텍스트를 인쇄하는 특정 작업을 실행하므로 입니다. 더 구체적으로 println() 함수는 이 코드 줄에서 호출됩니다. println()은 이미 Kotlin 언어로 정의된 함수입니다. 즉, Kotlin 언어를 만든 엔지니어팀이 이미 println() 함수의 함수 선언을 작성했습니다. 함수에는 입력이 하나 필요하며 이는 출력해야 하는 메시지입니다.

println() 함수를 호출할 때 함수 이름 뒤 괄호 안에 메시지 텍스트를 넣습니다. 표시할 텍스트 주위에 따옴표를 사용(예: "Hello, world!")해야 합니다.

프로그램이 실행되면 println() 함수로 전달된 메시지가 출력에 인쇄됩니다.

Hello, world!

직접 해 보기

이제 프로그램의 원본 코드를 살펴봅니다. 출력에 이 메시지가 대신 표시되도록 Kotlin 플레이그라운드에서 코드를 수정할 수 있나요?

Hello, Android!

6. 프로그램 수정

  1. 출력에 표시되는 메시지를 변경하려면 프로그램의 두 번째 줄에서 println() 함수 호출을 수정합니다. println() 함수에서 worldAndroid로 바꿉니다. "Hello, Android!"가 여전히 따옴표 내에 있고 괄호 안에 있어야 합니다.
fun main() {
    println("Hello, Android!")
}
  1. 프로그램을 실행합니다.
  2. 출력에 다음 메시지가 표시됩니다.
Hello, Android!

훌륭합니다. 첫 번째 프로그램을 수정했습니다.

이제 메시지가 두 번 출력되도록 코드를 변경할 수 있나요? 아래에서 올바른 출력을 확인하세요.

Hello, Android!
Hello, Android!

작업을 실행하는 데 필요한 만큼 명령줄을 여러 개 배치할 수 있습니다. 그러나 Kotlin에서는 한 줄에 문이 하나만 있어야 합니다. 다른 문을 작성하려면 함수의 새 줄에 작성합니다.

텍스트를 여러 줄 인쇄하도록 프로그램을 변경하려면 다음 안내를 따르세요.

  1. 첫 번째 println() 문을 복사하고 함수 본문 내에서 그 아래에 두 번째 문을 붙여넣습니다. 두 println() 문은 모두 main 함수의 중괄호 내에 포함되어야 합니다. 이제 함수 본문 내에 문이 두 개 있습니다.
fun main() {
    println("Hello, Android!")
    println("Hello, Android!")
}
  1. 프로그램을 실행합니다.
  2. 프로그램을 실행하면 다음과 같이 출력됩니다.
Hello, Android!
Hello, Android!

코드 변경사항이 출력에 미치는 영향을 확인할 수 있습니다.

  1. Hello, YOUR_NAME!이 표시되도록 코드를 변경합니다.

7. Kotlin 스타일 가이드

이 과정에서는 Android 개발자로서 따라야 할 유용한 코딩 관행을 알아봅니다. 이러한 관행 중 하나는 Kotlin으로 작성된 코드에 관한 Google의 Android 코딩 표준을 따르는 것입니다. 전체 가이드는 스타일 가이드라고 하며 시각적 모양과 코드를 작성할 때 따라야 할 규칙 측면에서 코드의 형식을 지정하는 방법을 설명합니다. 예를 들어 스타일 가이드에는 공백, 들여쓰기, 이름 지정 등을 사용하는 방법에 관한 권장사항이 포함되어 있습니다.

스타일 가이드를 따르는 목적은 코드를 더 읽기 쉽고 다른 Android 개발자가 코드를 작성하는 방식과 더 일관되도록 하는 것입니다. 이러한 일관성 덕분에 대규모 프로젝트에서 공동작업할 때 프로젝트의 모든 파일에서 동일한 코드 스타일을 적용할 수 있습니다.

다음은 Kotlin에서 지금까지 학습한 내용과 관련된 스타일 가이드 권장사항입니다.

  • 함수 이름은 카멜 표기법을 사용해야 하며 동사 또는 동사구여야 합니다.
  • 각 문은 한 줄에 하나씩 입력해야 합니다.
  • 여는 중괄호는 함수가 시작되는 줄의 끝에 표시되어야 합니다.
  • 여는 중괄호 앞에는 공백이 있어야 합니다.

다음 main 함수 코드가 이미지에 표시됩니다. fun main() { println("Hello, world!") } 괄호 기호 뒤와 여는 중괄호 앞에 있는 공간을 가리키는 공백이라는 라벨이 있습니다.

  • 함수 본문은 4개 공백으로 들여쓰기되어야 합니다. Tab 문자를 사용하여 코드를 들여쓰기하지 마세요. 공백 4개를 입력하세요.

다음 main 함수 코드가 이미지에 표시됩니다. fun main() { println("Hello, world!") } 함수 본문의 코드 줄 println("Hello, world!")을 가리키는 화살표가 있습니다. 화살표에는 다음과 같은 라벨이 붙어 있습니다. indent by 4 spaces

  • 닫는 중괄호는 함수 본문의 마지막 코드 줄 뒤 자체 줄에 있습니다. 닫는 중괄호는 함수 시작 부분에 있는 fun 키워드와 정렬되어야 합니다.

다음 main 함수 코드가 이미지에 표시됩니다. fun main() { println("Hello, world!") } 함수 코드의 왼쪽 가장자리에 수직선이 있습니다. fun 단어 왼쪽에서 시작하여 함수의 닫는 중괄호를 지나 수직으로 이어집니다. 수직선에는 다음 라벨이 있습니다. aligned vertically 이 줄은 fun 단어와 닫는 중괄호가 수직으로 정렬되어야 함을 나타내기 위한 것입니다.

Kotlin에 관한 지식을 쌓으면서 Android 코딩 규칙을 더 많이 배우게 됩니다. 전체 스타일 가이드는 여기에서 확인할 수 있지만 아직 배우지 않은 Kotlin의 다른 주제를 다루고 있으니 걱정하지 마세요.

8. 코드 오류 수정

인간 언어를 학습할 때는 올바른 방식으로 단어를 사용하고 문장을 구성하는 구문 및 문법 규칙이 있습니다. 마찬가지로 프로그래밍 언어의 경우에도 유효한 코드, 즉 성공적으로 컴파일되는 코드를 만드는 특정 규칙이 있습니다.

코딩 과정에서는 실수하거나 실수로 잘못된 코드를 작성하는 것이 일반적입니다. 초보자는 이러한 실수를 접하면 혼란스럽거나 겁이 날 수 있습니다. 그러나 당연한 일이니 걱정하지 마세요. 코드는 처음 작성해서 완벽하게 작동하는 경우가 거의 없습니다. 문서를 작성하는 데 많은 초안이 사용되는 것처럼 코드 작성도 예상대로 작동할 때까지 여러 번 반복할 수 있습니다.

코드를 성공적으로 컴파일할 수 없으면 오류가 있는 것입니다. 예를 들어 따옴표나 괄호의 누락과 같은 오타가 있는 경우 컴파일러는 코드를 이해하지 못하며 컴퓨터 실행 단계로 변환할 수 없습니다. 코드가 예상대로 작동하지 않거나 코드 편집기에 오류 메시지가 표시되는 경우 코드로 돌아가서 수정해야 합니다. 이러한 오류를 해결하는 프로세스를 문제 해결이라고 합니다.

  1. 다음 코드 스니펫을 복사하여 Kotlin 플레이그라운드에 붙여넣고 프로그램을 실행합니다. 어떻게 표시되나요?
fun main() {
    println("Today is sunny!)
}

이상적으로는 Today is sunny! 메시지가 표시되면 좋습니다. 대신 출력 창에 느낌표 아이콘과 오류 메시지가 표시됩니다.

프로그램을 실행하면 다음 오류 메시지 2개(Expecting ", Expecting ))가 표시됩니다. 각 오류 왼쪽 옆에는 빨간색 원 안에 느낌표가 있습니다.

Kotlin 플레이그라운드의 오류 메시지

오류 메시지는 'Expecting'이라는 단어로 시작되는데 이는 Kotlin 컴파일러가 무언가를 '예상'하지만 코드에서 찾을 수 없기 때문입니다. 이 경우 컴파일러는 프로그램의 두 번째 줄에 있는 코드의 닫는 따옴표와 닫는 괄호를 예상합니다.

println() 문에서 표시할 메시지에는 여는 따옴표가 있지만 닫는 따옴표는 없습니다. 코드에 닫는 괄호가 있어도 컴파일러는 괄호를 출력할 텍스트의 일부로 간주합니다. 그 앞에 닫는 따옴표가 없기 때문입니다.

  1. 느낌표 뒤, 닫는 괄호 앞에 닫는 따옴표를 추가합니다.
fun main() {
    println("Today is sunny!")
}

main 함수에는 println() 문인 코드가 한 줄 포함됩니다. 여기서 텍스트는 다음과 같이 따옴표로 묶여 있고 괄호 안에 배치됩니다. ​​"Today is sunny!"

  1. 프로그램을 다시 실행합니다.

오류가 없어야 하며 출력 창에 다음 텍스트가 표시됩니다.

Today is sunny!

잘하셨습니다. 오류를 수정했습니다. 코드를 작성하고 오류 문제를 해결하는 데 더 많은 경험을 쌓으면 코드를 입력할 때 대문자, 철자, 띄어쓰기, 기호, 이름에 주의하는 것이 얼마나 중요한지 알게 됩니다.

다음 섹션에서는 학습한 내용을 연습해 봅니다. 솔루션은 Codelab 끝부분에 제공되지만 먼저 최선을 다해 스스로 답을 찾아보세요.

9. 연습

  1. Kotlin 플레이그라운드에서 실행하지 않고 이 프로그램의 코드를 읽고 출력이 무엇인지 추측할 수 있나요?
fun main() {
    println("1")
    println("2")
    println("3")
}

추측한 후에는 이 코드를 복사하여 Kotlin 플레이그라운드에 붙여넣고 답을 확인하세요.

  1. Kotlin 플레이그라운드를 사용하여 다음 메시지를 출력하는 프로그램을 만듭니다.
I'm
learning
Kotlin!
  1. 이 프로그램을 복사하여 Kotlin 플레이그라운드에 붙여넣습니다.
fun main() {
    println("Tuesday")
    println("Thursday")
    println("Wednesday")
    println("Friday")
    println("Monday")
}

다음 출력이 인쇄되도록 프로그램을 수정합니다.

Monday
Tuesday
Wednesday
Thursday
Friday

문제 해결에 관한 초기 연습을 위해 아래 연습에서 오류를 수정합니다. 각 연습의 경우 코드를 브라우저의 Kotlin 플레이그라운드에 복사합니다. 프로그램을 실행해 보면 오류 메시지가 표시됩니다.

  1. 올바른 출력이 생성되도록 이 프로그램의 오류를 수정합니다.
fun main() {
    println("Tomorrow is rainy")

올바른 출력은 다음과 같습니다.

Tomorrow is rainy
  1. 올바른 출력이 생성되도록 이 프로그램의 오류를 수정합니다.
fun main() {
    printLine("There is a chance of snow")
}

올바른 출력은 다음과 같습니다.

There is a chance of snow
  1. 올바른 출력이 생성되도록 이 프로그램의 오류를 수정합니다.
fun main() {
    println("Cloudy") println("Partly Cloudy") println("Windy")
}

올바른 출력은 다음과 같습니다.

Cloudy
Partly Cloudy
Windy
  1. 올바른 출력이 생성되도록 이 프로그램의 오류를 수정합니다.
fun main() (
    println("How's the weather today?")
)

올바른 출력은 다음과 같습니다.

How's the weather today?

이러한 연습을 완료한 후에는 다음 섹션의 솔루션과 비교해 답을 확인하세요.

10. 솔루션

  1. 프로그램 출력은 다음과 같습니다.
1
2
3
  1. 프로그램의 코드는 다음과 같습니다.
fun main() {
    println("I'm")
    println("learning")
    println("Kotlin!")
}
  1. 다음은 프로그램의 올바른 코드입니다.
fun main() {
    println("Monday")
    println("Tuesday")
    println("Wednesday")
    println("Thursday")
    println("Friday")
}
  1. main 함수의 함수 본문 끝을 나타내는 닫는 중괄호가 프로그램의 세 번째 줄에 없습니다.

올바른 코드는 다음과 같습니다.

fun main() {
    println("Tomorrow is rainy")
}

출력은 다음과 같습니다.

Tomorrow is rainy
  1. 프로그램을 실행하면 Unresolved reference: printLine 오류가 표시됩니다. printLine()이 Kotlin에서 인식되는 함수가 아니기 때문입니다. 오류를 일으키는 코드 부분이 Kotlin 플레이그라운드에서 빨간색으로 강조표시된 것도 확인할 수 있습니다. 함수 이름을 println으로 변경하여 텍스트 줄을 출력에 인쇄하면 오류가 수정됩니다.

올바른 코드는 다음과 같습니다.

fun main() {
    println("There is a chance of snow")
}

출력은 다음과 같습니다.

There is a chance of snow
  1. 프로그램을 실행하면 Unresolved reference: println 오류가 표시됩니다. 이 메시지에는 문제 해결 방법이 직접 설명되어 있지 않습니다. 이는 오류 문제를 해결할 때 발생할 수도 있으므로 예기치 않은 동작을 해결하려면 코드를 자세히 살펴봐야 합니다.

자세히 살펴보면 코드에서 두 번째 println() 함수 호출이 빨간색이며 이는 문제가 발생한 위치를 나타냅니다. Kotlin은 각 줄에 하나의 문만 예상합니다. 이 경우 두 번째와 세 번째 println() 함수 호출을 별도의 새 줄로 이동하여 문제를 해결할 수 있습니다.

올바른 코드는 다음과 같습니다.

fun main() {
    println("Cloudy")
    println("Partly Cloudy")
    println("Windy")
}

출력은 다음과 같습니다.

Cloudy
Partly Cloudy
Windy
  1. 프로그램을 실행하면 Function 'main' must have a body 오류가 표시됩니다. 함수 본문은 여는 괄호와 닫는 괄호( )가 아닌 여는 중괄호와 닫는 중괄호{ } 내에 있어야 합니다.

올바른 코드는 다음과 같습니다.

fun main() {
    println("How's the weather today?")
}

출력은 다음과 같습니다.

How's the weather today?

11. 결론

수고하셨습니다. Kotlin 소개 과정을 완료했습니다.

Kotlin의 간단한 프로그램으로 작업한 후 이를 실행하여 출력에 인쇄된 텍스트를 확인했습니다. 프로그램을 다양한 방식으로 수정하고 이러한 변경사항이 출력에 미치는 영향을 관찰했습니다. 프로그래밍할 때 실수를 하는 것은 자연스러운 현상입니다. 따라서 향후 개발자에게 도움이 되는 중요한 기술인 코드 오류 문제를 해결하고 수정하는 방법도 알아봤습니다.

다음 Codelab으로 이동하여 Kotlin에서 변수를 사용하는 방법을 알아보고 더 흥미로운 프로그램을 만들어 보세요.

요약

  • Kotlin 프로그램에는 프로그램의 진입점으로 main 함수가 필요합니다.
  • Kotlin에서 함수를 정의하려면 fun 키워드, 함수 이름, 괄호로 묶인 입력, 중괄호로 묶인 함수 본문을 차례로 사용합니다.
  • 함수 이름은 카멜 표기법 규칙을 따르고 소문자로 시작해야 합니다.
  • println() 함수 호출을 사용하여 텍스트를 출력에 인쇄합니다.
  • Kotlin으로 코딩할 때 따라야 할 형식 지정 및 코드 규칙은 Kotlin 스타일 가이드를 참고하세요.
  • 문제 해결은 코드의 오류를 해결하는 프로세스입니다.

자세히 알아보기