[부스트코스] [부스트코스][코틀린 프로그래밍 기본 1/2] 한아아지와 함께하는 kotlin - 프로그램 흐름 제어 (1)
조건문을 통해 분기와 반복문에 대해서 공부해보겠습니다!
www.boostcourse.org/mo132/lecture/59982/
코틀린 프로그래밍 기본 1
부스트코스 무료 강의
www.boostcourse.org
www.boostcourse.org/mo132/lecture/66358
코틀린 프로그래밍 기본 1
부스트코스 무료 강의
www.boostcourse.org
www.boostcourse.org/mo132/lecture/59983
코틀린 프로그래밍 기본 1
부스트코스 무료 강의
www.boostcourse.org
1. if문
1.1. if문이란?
if는 주어진 조건이 참인 경우에 실행 가능한 코드입니다.
else문을 추가적으로 사용해주면 거짓일 경우에도 실행 가능합니다.
1.2. if문 기본 코드
if (조건식) {
수행할 문장 // 조건식이 참인 경우에만 수행
} else {
수행할 문장 // 조건식이 거짓인 경우에 수행
}
// 예시 1
var max: Int
if(a > b)
max = a
else
max = b
// 수행할 문장이 한줄로 간단한 경우 중괄호를 없애고 다음과 같이 한줄에 구성할 수도 있습니다.
val max = if(a > b) a else b
1.3. 블록과 함께 사용하는 경우
fun main() {
val a = 12
val b = 7
// 블록과 함께 사용
val max = if (a > b) {
println("a 선택")
a // 마지막 식인 a가 반환되어 max에 할당
}
else {
println("b 선택")
b // 마지막 식인 b가 반환되어 max에 할당
}
println(max)
}
1.4. else if를 활용하여 조건문 중첩
여러 가지 조건을 적용하기 위해 이번에는 else if 문을 이용하여 조건문을 중첩할 수 있습니다.
else if는 필요한 만큼 조합할 수 있습니다만 너무 많으면 코드 읽기가 어려워집니다.
// 비교 연산자와 논리 연산자 사용
fun main() {
print("점수를 입력하시오 : ")
val score = readLine()!!.toDouble() // Double 형태를 사용자에게서 입력받음
val grade: Char = 'F'
if (score >= 90.0) {
grade = 'A'
} else if (score >= 80.0 && score <= 89.9) {
grade = 'B'
} else if (score >= 70.0 && score <= 79.9) {
grade = 'C'
}
println("score: $score, grade: $grade")
1.5. in 연산자와 범위 연산자로 조건식 간단하게 만들기
👉 비교연산자와 논리 연산자의 복합
비교 연산자 (>, <, =) / 논리 연산자 (&&, ||) 등을 사용
👉 범위 연산자
변수명 in 시작값..마지막값
// 범위 연산자 사용
fun main() {
print("점수를 입력하시오 : ")
val score = readLine()!!.toDouble() // Double 형태를 사용자에게서 입력받음
val 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")
2. when을 활용한 조건문
2.1. when 문으로 다양한 조건문 처리
주어진 인자에 대해 다양한 조건을 만들거나 인자 없이 여러개의 조건을 구성할 수 있습니다.
when 구문은 다른 언어에서 사용되는 switch ~ case 구문과 같은 의미로 사용되는 코틀린 전용 코드입니다.
2.2. when 기본 코드
화살표(->) 왼쪽에는 일치하는 값, 표현식, 범위를 사용할 수 있고 오른쪽에는 수행할 문장을 사용합니다.
조건과 일치하는 값이 없으면 else문 다음에 작성한 문장을 실행합니다.
화살표 오른쪽에 사용한 수행 문장에서는 한줄인 경우에는 중괄호가 필요하지 않으며
또 switch~case에서 사용하던 break문을 사용하지 않아도 됩니다.
when (인자) {
인자에 일치하는 값 혹은 표현식 -> 수행할 문장
인자에 일치하는 범위 -> 수행할 문장
...
else -> 문장
}
// 예시 1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // 블록 구문 사용 가능
print("x는 1, 2가 아닙니다.")
}
}
2.3. when문으로 다양한 조건 처리
① 인자를 사용하는 when문 (Cont.)
📕 일치되는 조건
when(x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("기타")
}
📕 함수의 반환값 사용하기
wheb (x) {
parseInt(s) -> print("일치함")
else -> print("기타")
}
📕 in 연산자와 범위 지정자 사용
when(x) {
in 1..10 -> print("x는 1 이상 10 이하 입니다.")
!in 10..20 -> print("x는 10 이상 20 이하의 범위에 포함되지 않습니다.")
else -> print("x는 어떤 범위에도 없습니다.")
}
📕 is 키워드 함께 사용하기
val str = "안녕하세요"
val result = when(str) {
is String -> "문자열입니다."
else -> false
}
2.4. 인자가 없는 when
특정 인자에 제한하지 않고 다양한 조건 구성이 가능합니다.
when {
조건[혹은 표현식] -> 실행문
...
}
// 예시 1
fun main() {
print("Enter the score : ")
var score = readLine()!!.toDouble()
var grade: Char = 'F'
// 인수 없는 when의 사용
when {
// 인자 없는 when과 다르게 조건식 구성이 가능
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")
}
3. 반복문
3.1. 반복문이란?
반복문은 조건 식에 따라 반복할 때 사용합니다.
for / while / do ~ while 등 다양한 방식으로 사용합니다.
3.2. for문
for (요소 변수 in 컬렉션 혹은 범위) {
반복할 본문
}
// 예시 1 - 코틀린의 in과 범위 지정을 활용한 루프
for (x in 1..5) {
println(x)
}
// 예시 2 - 한 줄에 표현하는 루프
for (x in 1..5) println(x)
※ 코틀린은 자바와 달리 세미콜론(;) 을 사용하지 않습니다.
3.3. 하행 반복 / 단계 증가
하행 반복은 downTo를 사용하고 단계 증가는 step를 사용합니다. 필요할 경우 혼합 사용도 가능합니다.
// 하행 반복 downTo
for (i in 5 downTo 1) print(i)
/* 결과 5 4 3 2 1 */
// 필요한 단계 증가 - step
for (i in 1..5 step 2) print(i)
/* 결과 1 3 5 */
// 혼합 사용
for (i in 5 downTo 1 step 2) print(i)
/* 결과 5 3 1 */
3.4. while
while문은 조건식이 true인 동안 본문의 무한 반복을 진행합니다.
조건식이 false가 되면 실행문이 중단되어 while 루프(반복)를 빠져 나갑니다.
// 기본 코드
while (조건식) {
본문
}
// 예시 1
var i = 1
while (i <= 5) {
println("$i")
if (temp > 한계 온도) { 경고 발생 }
...
}
// 예시 2
fun main() {
print("Enter the number : ")
var number = readLine()!!.toInt()
var factorial: Long = 1
// n x ... x 4 x 3 x 2 x 1
while (number > 0) {
factorial *= number
--number
}
println("Factorial: $factorial")
}
3.5. do ~ while
do~while 문은 do 블록에 작성한 본문을 한 번은 실행한 다음
마지막에 조건식을 검사해서 true가 나오면 작업을 반복합니다.
// 기본 코드
do {
본문
} while (조건식)
// 예시 1
fun main() {
do {
println("Enter the number : ")
val input = readLine()!!.toInt()
for (i in 0..(input-1)) {
for (j in 0..(input-1)) {
print((i + j)% input + 1)
}
}
} while (input != 0)e
// 예시 2
fun main() {
do {
println("Enter the number : ")
val input = readLine()!!.toInt()
for (i in 0 until (input-1)) {
for (j in 0 until (input-1)) {
print((i + j)% input + 1)
}
}
} while (input != 0)e
/*
결과
Enter the number : 5
12345
23451
34512
45123
51234
*/
읽어주셔서 감사합니다!