본 게시글은 부스트코스의 코틀린 기본프로그래밍을

시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.

부스트코스

 

다 함께 배우고 성장하는 부스트코스

부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.

www.boostcourse.org

코틀린 기본프로그래밍(1/2)

 

코틀린 프로그래밍 기본1/2(함수편)

부스트코스 무료 강의

www.boostcourse.org

본 게시글은 부스트코스 서포터즈 3기 활동 게시글입니다.


#5-1 조건문을 통한 분기 (1)

- 들어가기 전에

프로그램의 흐름을 제어하기 위해 가장 기본적으로 조건에 따라 분기할 수 있도록 하는 것입니다. 여기서는 if문을 활용해 다양한 분기 방법을 학습니다.

 

- 핵심 키워드

 

  • if ~ else
  • else if
  • in 연산자 .. 범위 연산자

 

1) if문과 if~else문

if (조건식) { 
    수행할 문장 // 조건식이 참인 경우에만 수행
} else { 
    수행할 문장 // 조건식이 거짓인 경우에 수행
}

if는 주어진 조건에 따라서 프로그램이 코드를 선택하여 실행할 수 있는 분기를 제공한다.

fun main(){
    val a = 12
    val b = 7
    
    //블록과 함께 사용
    val max = if ( a > b ){
        printlan("a 선택")
        a // 마지막 식인 a가 반환되어 max에 할당
    }
    else {
        println("b 선택")
        b
    }
    println(max)
 }

수행할 문장이 한 줄로 간단할 경우 아래와 같이 표현할 수도 있다.

val max = if (a > b) a else b

 

2) else if 다중 조건

여러 가지 조건을 사용할 경우 else if문을 중첩하여 사용할 수 있다

val number = 0 
val result = if (number > 0) 
        "양수 값" 
    else if (number < 0) 
        "음수 값" 
    else 
        "0" 

 

3) in 연산자와 범위 연산자

비교연산자와 와 논리 연산자의 복합으로 조건식을 간략하게 만들 수 있다.

- 비교 연산자 : >= , <=

- 논리 연산자 : &&, ||, !

 

또한 코틀린에서는 포함 여부 확인을 위한 in 연산자와 두개의 점 으로 된 범위 연산자를 제공한다.

범위 연산자

- 변수명 in 시작값..마지막값

fun main(){
     println("Enter this score: ")
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     if(score >= 90.0) {
     	grade = 'A'
     } else if (score in 80.0..89.9){
     	grade = 'B'
     } else if (score in 70.0..79.9){
     	grade = 'C'
     }
     println("score: $score, grade: $grade")
}

 

#5-1 조건문을 통한 분기 (2)

- 들어가기 전에

코틀린에서 제공하는 when은 기존의 여러 언어가 제공하던 switch~case문을 대체하면서 조건에서 더 유연한 처리가 가능합니다. 한번 알아봅시다!

 

- 핵심 키워드

  • when (인자)
  • when

 

1) when문을 사용한 다양한 조건 처리

주어진 인자에 대해 다양한 조건을 만들거나 인자 없이 여러개의 조건을 구성할 수도 있다.

when (인자) {
  인자에 일치하는 값 혹은 표현식 -> 수행할 문장
  인자에 일치하는 범위 -> 수행할 문장
  ...
  else -> 문장
}

 

화살표(->) 왼쪽에는 일치하는 값, 표현식, 범위를 사용할 수 있고 오른쪽에는 수행할 문장을 사용한다.

조건과 일치하는 값이 없으면 else문 다음에 작성한 문장을 실행한다.

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 블록 구문 사용 가능
        print("x는 1, 2가 아닙니다.")
    }
}

 화살표 오른쪽에 사용한 수행 문장에서는 한줄인 경우에는 중괄호가 필요하지 않으며

 또 switch~case에서 사용하던 break문을 사용하지 않아도 된다.

 

2) when과 일치되는 여러조건과 함수사용

- 일치되는 여러 조건

when (x) {
	0, 1 -> println("x == 0 or x == 1")
	else -> println("기타")
}

- 함수의 반환값 아용하기

when (x) {
	parseInt(s) -> println("일치함!")
	else -> println("기타")
}

 

3) when과 in, is 연산자 사용

- in 연산자와 범위 지정자 사용

when (x){
    in 1..10 -> println("x는 1 이상 10 이하입니다.")
    !in 10..20 -> println("x는 10 이상 20 이하의 범위에 포함되지 않습니다.")
    else -> print("x는 어떤 범위에도 없습니다.")
}

 

- is 키워드 함께 사용하기

val str = "안녕하세요."
val result = when (str){
    is String -> "문자열입니다."
    else -> false
}

 

fun main(){
     println("Enter this score: ")
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     when(score) {
     	in 90.0..100.0 -> grade = 'A'
        in 80.0..89.9 -> grade = 'B'
        in 70.0..79.9 -> grade = 'C'
        else -> grade = 'F'
     }
     
     println("score: $score, grade: $grade")
}

 

4) 인자가 없는 when

when에 인자가 주어지지 않으면 else if처럼 각각의 조건을 실행할 수 있다.

when {
  조건[혹은 표현식] -> 실행문
  ...
}
fun main(){
     println("Enter this score: ")
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     //인수 없는 when의 사용
     when(score) {
     	score >= 90.0 -> grade = 'A'
        score in 80.0..89.9 -> grade = 'B'
        score in 70.0..79.9 -> grade = 'C'
        score < 70.0 -> grade = 'F'
     }
     
     println("score: $score, grade: $grade")
}

 

#5-2 반복문으로 여러번!

- 들어가기 전에

반복문은 반복문 안에 있는 코드를 반복하여 실행할 수 있는 명령문입니다. 기본적으로 for, while, do ~ while문으로 반복을 처리합니다. 

 

- 핵심 키워드

  • for
  • while
  • do { ... } while ( )
  • in 및 범위 연산자
  • 상행 및 하행 (DownTo)
  • Step

 

1) for문의 선언 방법

for문은 조건식에 따라 반복하게 된다.

조건식은 대부분 in연산자와 컬렉션, 범위 연산자를 사용해 반복 조건을 구성되는데,

범위 연산을 이용할 경우 기본적으로 상행 형태로 증가하고 감소하기 위해서는 downTo를 사용한다.  

! 컬렉션이란 코틀린이 사용하는 Array, List, Map 등의 여러 데이터를 다루는 요소를 말한다.

for (요소 변수 in 컬렉션 혹은 범위) { 반복할 본문 }

 

반복할 본문이 하나 뿐이 없다면 중괄호는 생략할 수 있다.

for (x in 1..5) { // 코틀린의 in과 범위 지정을 활용한 루프
  println(x) // 본문
}

 

fun main(){
    val sum = 0
    
    for (x in 1..10) sum += x
    
    println("sum = $sum")
}

 

2) 하행, 상행 및 다양한 반복 방법

1에서 10으로 값이 증가할때는 기본값이면서 하나씩 증가하며 반복되었는데,

이와 같은 반복을 상행 반복이라고 칭한다.

반대의 경우는 하행 반복이라고 부르고 downTo와 같은 키워드를 사용해 구성할 수 있다.

for (i in 5 downTo 1) print(i)

위 코드를 실행하면 5, 4, 3, 2, 1과 같이 숫자가 하행으로 반복하면서 변수 i의 값을 출력한다.

출력하고자 하는 숫자의 단계가 1이 아닌 다른 수를 사용하고자 하는 경우에는 step을 사용할 수 있다.

for (i in 1..5 step 2) print(i)

 

fun main(){
    val total = 0
    
    for (x in0..99 step2) { //짝수합 
    	total += x
    }
    
    println("total = $total")
}

 

3) whie문 선언 방법

while문은 조건식이 true을 만족하는 경우 while의 블록을 무한히 반복된다. 

조건식이 false가 되면 실행문이 중단되어 while 루프(반복)를 빠져 나간다.

만약 조건식이 false가 되지 않는다면, 반복이 끝나지 않고 무한 Loop에 빠지기 때문에 유의하여야 한다.

while (조건식) { // 조건식이 true인 동안 본문의 무한 반복
    본문
    ....
}

 

fun main(){

    println("Enter the number: ")
    var number = readLine()!!.toInt()
    var factorial: Long = 1
    
    while(number > 0){
        factorial *= number
        --number
    }
    
    pritnln("Factorial: $factorial")
}

 

4) do ~ while 문

앞에서 배운 while문에서는 조건식을 먼저 검사한 후 반복을 진행하기 때문에,

처음부터 조건식이 false인 경우 작업이 한 번도 실행되지 않는다.

그러나 do~while문의 경우 일단 do 블록에 작성한 본문을 한 번은 실행한 다음

마지막에 조건식을 검사해서 true가 나오면 작업을 반복한다.

do {
  본문
} while (조건식)

 

fun maun(){

    do {
    	println("Enter the number: ")
        val input = readLine()!!.toInt()
        
        //for(i in 0..(input-1)){
        for(i in 0 until input){
            
            //for(j in 0..(input-1)){
        	for(j in 0 until input){
            	print((i + j)% input +1)
            }
            
            println()
        }
    } while (input != 0)
}

! until in Kotiln 

 

until - Kotlin Programming Language

 

kotlinlang.org

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기