본문 바로가기
프로그래밍/Kotlin

9. 함수 응용 및 중첩 반복문 (안드로이드 코틀린 앱 개발)

by Dylan Kim 2022. 4. 13.
반응형


<구글이 알려주는 앱 개발 무료 강의>

[코틀린/Kotlin] 가이드 맵 - 전체 보기


 


[코틀린으로 배우는 안드로이드 기초]

9. 함수 응용 및 중첩 반복문 in 코틀린

안녕하세요. dylan입니다.

좀 더 변화에 자유로를 케이크를 그려보면서 함수와 반복문 안에 반복문을 사용하는 중첩 반복문에 대해서 배워보겠습니다. 

 

(구글 개발 강의 출처)

코틀린 기초 → 코틀린 소개 → Kotlin에서 생일 메시지 만들기(5)

 

먼저 요약과 우리가 작성할 코드를 보겠습니다.

 

강의 요약
  • 함수를 여러 가지 방법으로 사용해 봅니다.
  • 중첩 반복문을 사용해 봅니다.
강의 코드
fun main() {
    val age = 20
    val layers = 5
    printCakeCandles(age)
    printCakeTop(age)
    printCakeBottom(age, layers)
}

fun printCakeCandles(age: Int) {
    print (" ")
    repeat(age) {
          print(",")
    }
    println() // Print an empty line

    print(" ") // Print the inset of the candles on the cake
    repeat(age) {
        print("|")
    }
    println()
}

fun printCakeTop(age: Int) {
    repeat(age + 2) {
        print("=")
    }
    println()
}

fun printCakeBottom(age: Int, layers: Int) {
    repeat(layers) {
        repeat(age + 2) {
            print("@")
        }
        println()
    }
}

출력 결과

나이에 맞춰진 생일 케이크 그리기

어떤 나이가 들어 와도 적절한 수의 초가 꽂힌 케이크를 그려보는 코드로 업그레이드해보겠습니다.

먼저, 3가지 함수로 나누어서 그려보겠습니다.

 

main()은 다음과 같이 작성합니다.

fun main() {
    val age = 24
    val layers = 5
    printCakeCandles(age)
    printCakeTop(age)
    printCakeBottom(age, layers)
}

 

1. 케이크의 초를 그리는 함수

 

선언(정의)

fun printCakeCandles(age: Int) {
    print (" ")
    repeat(age) {
        print(",")
    }
    println() // Print an empty line

    print(" ") // Print the inset of the candles on the cake
    repeat(age) {
        print("|")
    }
    println()
}

각 초는 불꽃을 표현할 쉼표(,)와 초를 표현할 수직선(|)이라는 두 가지 기호로 구성됩니다.

,,,,,,,,,,,,,,,,,,,,,,,,

||||||||||||||||||||||||

함수 하나로 이 작업을 실행하려면 repeat() 문 두 개를 함수에 넣습니다. 하나는 불꽃, 하나는 초에 사용합니다.

  1. main() 함수와 printCakeTop() 함수 아래에서 Int 유형의 한 인수인 age를 사용하는 새로운 함수 printCakeCandles()를 만듭니다.
  2. 함수 안에서 repeat() 문을 사용하여 불꽃에 사용할 쉼표 , 하나를 출력합니다.
  3. age회 반복합니다.
  4. 마지막에 빈 줄을 출력합니다.
  5. print() 문을 추가하여 초를 삽입할 공백을 하나 출력합니다.
  6. 그 아래에서 단계를 반복하여 두 번째 repeat() 문을 만들고 수직선(|)으로 초를 출력합니다.

사용(호출)

printCakeCandles(age)

 

 

2. 케이크의 상단을 그리는 함수

 

선언(정의)

fun printCakeTop(age: Int) {
    repeat(age + 2) {
        print("=")
    }
    println()
}

케이크 상단 등호 한 줄을 출력할 printCakeTop() 함수는 초반에 만든 printBorder() 함수와 거의 동일합니다.

==========================
  1. main() 함수 아래에 빈 줄을 추가하고 Int 유형의 한 인수인 age를 사용하는 printCakeTop() 함수를 만듭니다.
  2. 함수 안에서 repeat() 문을 사용하여 등호 하나를 age 횟수에 2를 더하여 출력합니다. 추가된 등호 두 개는 초가 케이크 양쪽으로 떨어지지 않도록 하기 위한 것입니다.
  3. 마지막에 repeat()가 완료되면 빈 줄을 출력합니다.

사용(호출)

 printCakeTop(age)

 

 

3. 케이크의 하단의 층수 그리는 함수

 

선언(정의)

fun printCakeBottom(age: Int, layers: Int) {
    repeat(layers) {
        repeat(age + 2) {
            print("@")
        }
        println()
    }
}

이 함수에서는 age + 2만큼 넓은 케이크 하단을 그리고 주어진 층수 대로 높게 그립니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
  • 즉, 함수에는 두 가지 인수가 필요합니다. 하나는 너비(age), 하나는 높이(layers)에 사용합니다.
  • 케이크의 하단을 출력하려면 먼저 'at' @ 기호를 age + 2회 반복하여 층 하나를 출력합니다. 그런 다음 한 층 출력을 layers회 반복합니다.

at 기호를 연령+2회 그려 층 만들기

  1. 기존 함수 아래에서 Int 유형의 두 인수 age와 layers를 사용하여 printCakeBottom() 함수를 만듭니다.
  2. 함수 내에서 repeat() 문을 사용하여 @ 기호를 age + 2회 반복한 층 하나를 출력합니다. 다음과 같이 빈 줄을 출력하여 완료합니다.
  3. 코드를 실행하여 케이크 하단 한 줄이 출력되었는지 확인합니다.
  4. 함수 내의 모든 코드에 두 번째 repeat() 문을 배치합니다. 이 루프를 layers회 반복합니다.

 

 

 

 

사용(호출)

printCakeBottom(age, layers)

 

자, 잘 따라오셨나요? 케이크를 그리기 위해서 3가지 함수를 사용해보았는데요. 모두 배운 내용이고, 마지막 printCakeBottom(age, layers)의 repeat()를 두 번 쓰는 중첩 반복문에 대해서 추가적으로 설명드릴게요.

보통 구구단 표기를 하면서 많이 배우기 도도 합니다. 이처럼 두 가지 작업이 반복되어 변경되는 경우 사용하면 됩니다.

 

자, 나이와 케이크의 층을 바꿔가면서 실행해보시고 모양도 바꾸면서 여러 가지 형태로 출력해 보세요. 

 

감사합니다.

이상으로 강의를 마치겠습니다.

 


 

 

반응형

댓글