개발자/kotlin 코틀린

kotlin 03. 제어문과 함수 기초

지구빵집 2022. 4. 21. 08:20
반응형

 

 

if( )와 else의 중첩

 

fun main(args: Array<String>): Unit
{
	val score = 88

	if (score >= 90)
	{
		println('A')
	}
	else
	{
		if (score >= 80)
		{
			println('B')
		}
		else
		{
			if (score >= 70)
			{
				println('C')
			}
			else
			{
				println('F')
			}
		}
	}
}

결과

B

 

너무 중첩되어 있어 보기 힘든 코드가 되었다. 대괄호 안의 문장이 한 개면 { }를 생략할 수 있고 if~ else 구문은 if ~ else if~ 구문으로 바꿀 수 있으니, 필요 없는 문장을 지워 단순하게 만들면 다음과 같다.

 

fun main(args: Array<String>): Unit
{
	val score = 88

	if (score >= 90)
	{
		println('A')
	}
	else if (score >= 80)
		println('B')
	else if (score >= 70)
		println('C')
	else
		println('F')
}

결과 

B

 

 

if-else를 표현식으로 사용하기

 

fun main(args: Array<String>): Unit
{
	val value: Int = if (10 > 5)
	{
		println("10은 5보다 크다.")
		10
	}
	else
	{
		println("10은 5보다 크지 않다.")
		5
	}

	println(value)
}

결과

10은 5보다 크다.
10

 

흐름 제어-조건문 when( )

 

fun main(args: Array<String>): Unit
{
	val score = 64

	when (score / 10)
	{
		6 ->
		{
			println('D')
		}

		7 ->
		{
			println('C')
		}

		8 ->
		{
			println('B')
		}

		9, 10 ->
		{
			println('A')
		}

		else ->
		{
			println('F')
		}
	}

	println("test")
}

결과

D
test

 

위 코드를 중괄호를 생략하고 깔끔하게 옮기면 다음과 같다.

 

fun main(args: Array<String>): Unit
{
	val score = 64

	when (score / 10)
	{
		6 -> println('D')
		7 -> println('C')
		8 -> println('B')
		9, 10 -> println('A')
		else -> println('F')
	}

	println("test")
}

결과

D
test

 

 

when을 표현식으로 사용하기

 

fun main(args: Array<String>): Unit
{
	val score = 95

	val grade: Char = when (score / 10)
	{
		6 -> 'D'
		7 -> 'C'
		8 -> 'B'
		9, 10 -> 'A'
		else -> 'F'
	}

	println(grade)
}

결과

A

 

흐름 제어-반복문 while

 

fun main(args: Array<String>): Unit
{
	var i = 1

	while (i < 10)
	{
		println(i)
		i += 1
	}
}

결과

1
2
3
4
5
6
7
8
9

 

흐름 제어-반복문 do-while

 

fun main(args: Array<String>): Unit
{
	var i = 1

	do
	{
		println("실행됨")
	} while (i == 0)
}

결과

실행됨

 

흐름 제어 continue

 

fun main(args: Array<String>): Unit
{
	var i = 0

	while (i < 10)
	{
		i += 1

		// 짝수이면
		if (i % 2 == 0)
			continue // continue 아래의 문장들을 모두 skip 한다.

		println(i)
	}
}

결과

1
3
5
7
9

 

흐름 제어 break

 

fun main(args: Array<String>): Unit
{
	var i = 0

	while (true)
	{
		i += 1

		if (i >= 5)
			break // 이 문장이 실행되는 순간 while 블록을 탈출한다.

		println(i)
	}
}

결과

1
2
3
4

 

레이블(Label)

 

fun main(args: Array<String>): Unit
{
	var x = 0
	var y = 0

	outer@ while (x <= 20)
	{
		y = 0
		while (y <= 20)
		{
			if (x + y == 15 && x - y == 5)
				break@outer
			y += 1
		}
		x += 1
	}

	println("x: $x, y: $y")
}

결과

x: 10, y: 5

 

함수(Function) 

 

fun main(args: Array<String>): Unit
{
	println(myFunction())
	println(myFunction() + 10)
}

fun myFunction(): Int
{
	val a = 3
	val b = 6
	println("a: " + a + ", b: " + b)
	return a + b
}

결과

a: 3, b: 6
9
a: 3, b: 6
19

 

아래는 함수 블록의 문장이 하나일 경우 줄이는 방법을 보여준다. 참고하길 바란다.

 

fun fuction(): Double
{
	return 3.0 + 7
}

한 줄로 줄이면

func fuction(): Double = 3.0 + 7

함수 반환 타입을 생략하면(수식이 Double 임을 추론한다.) 

func fuction() = 3.0 + 7

 

 

kotlin 03. 제어문과 함수 기초

 

 

반응형