코틀린 여섯번째 포스팅 <흐름제어와 논리연산자> 입니다
<흐름제어>
코드의 흐름을 제어할 수 있는 키워드를 알아보겠습니다
1. return
첫번째로는 return인데요
return은 함수를 '종료'하고 값을 '반환'하는 역할을 하고 있습니다
2. break
두번째는 반복문에 사용할 수 있는 break입니다
break는 반복문 내의 구문이 실행되는 중간에 즉시 반복문을 '종료'하고 다음 구문으로 넘어가는 역할을 합니다
fun main() {
for (i in 1..10) {
if (i == 3) break
println(i)
}
}
/* 출력
1
2
*/
1부터 10까지 반복하는 for문 안에 i가 3이 되면 break를 수행하는 if문을 하나 넣어두었는데요
위 코드는 i가 3이 되는 시점에 반복이 즉시 중단되기 때문에 실행시켜보면 출력에 1과 2가 찍힌 후 정지되는 것을 확인할 수 있습니다
3. continue
continue 또한 반복문에 사용할 수 있는데요
continue는 다음 반복조건으로 즉시 넘어가는 역할을 합니다
(해당 조건을 건너뛴다고 생각하면 됩니다!)
fun main() {
for (i in 1..10) {
if (i == 3) continue
println(i)
}
}
/* 출력
1
2
4
5
6
7
8
9
10
*/
위 코드는 i가 3이 되는 시점에 println을 실행하지 않고
바로 for문으로 돌아가 다음 반복 조건인 4로 진행되기 때문에
출력을 보면 3을 제외한 모든 숫자가 찍히는 것을 확인할 수 있습니다
예시를 확인해보면 break문과의 차이점이 보이시죠?
지금까지는 기존의 언어들과 비슷한데요, 코틀린은 여기에 한가지 기능이 더 추가되었습니다
바로 다중 반복문에서 break나 continue가 적용되는 반복문을 label을 통해 지정할 수 있는 기능입니다
*Label 사용
fun main() {
loop@for (i in 1..10) { // 외부 반복문
for (j in 1..10) { // 내부 반복문
if (i == 1 && j == 2) break@loop
println("i: $i, j: $j")
}
}
}
/* 출력
i: 1, j: 1
*/
위 코드를 보면 i로 10번을 반복하는 for문 내에서 다시 j로 10번을 반복하는 구조의 다중 반복문이 있습니다
그 안에서 i가 1이고 j가 2면 모든 반복문을 종료해야 하는 조건을 걸어두었습니다
고전적인 언어에서는 내부 반복문에서 조건을 체크하여 break를 하더라도 반복문을 하나만 빠져나오기 때문에
외부 반복문에서 또 다시 조건을 체크하여 모든 반복문을 수동으로 종료해야 했습니다
코틀린에서는 이를 해결하기 위해 외부 반복문에 레이블 이름과 (레이블은 원하는 이름으로 달아주면 됩니다) @ 기호를 달고
break문에서 @과 레이블 이름을 달아주면 레이블이 달린 반복문을 기준으로 즉시 break를 시켜줍니다
(continue도 동일하게 사용 가능합니다!)
실행시켜보면 i: 1, j: 1 까지만 출력되고 break가 수행되어 코드가 종료되는 것을 확인할 수 있습니다
그럼 이제 위 예제에서 사용되었던 논리연산자에 대해서도 알아보겠습니다
<논리연산자 logical operators>
: 논리연산자는 논리 값을 연산하여 새로운 논리값을 도출할 때 쓰는 연산자입니다
- &&
: and 연산자로 &&의 앞과 뒤에 있는 논리값이 모두 true인 경우에 결과값이 true가 됩니다
ex) true && true => true
- ||
: or 연산자로 ||의 앞과 뒤에 있는 논리값 둘 중 하나라도 true인 경우에 결과값이 true가 됩니다
ex) true || false => true
- !
: not 연산자로 뒤에 붙는 값을 반전시켜줍니다
ex) !true => false (참이면 거짓) , !false => true (거짓이면 참)
fun main() {
println(true && false)
println(true || false)
println(!true)
println(!false)
}
/* 출력
false
true
false
true
*/
위의 예시는 boolean리터럴 값으로만 수행하였지만 실제 코드에선 조건식과 조건식을 연산하는 경우가 더 많습니다
조건식과 조건식을 사용한 예제도 확인해보겠습니다
fun main() {
var a = 6
var b = 4
println(a>5 && b>5)
}
/* 출력
false
*/
a와 b를 각각 5와 비교하는 조건식을 and 연산으로 넣어두었는데요
a는 5보다 크니 true가 되고, b는 5보다 작으니 false가 됩니다
그러면 ture && false 이므로 출력값은 false가 되겠죠?
위에서 정리한 흐름제어 및 논리연산자는 복잡한 조건에 따라 반복을 제어하고 분기를 실행해야 하는 경우에 많이 사용됩니다!
오늘의 포스팅 <흐름제어와 논리연산자>는 여기서 마치도록 하겠습니다
감사합니다
*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다
'Kotlin' 카테고리의 다른 글
[Kotlin] 08. 클래스의 생성자 (0) | 2023.07.18 |
---|---|
[Kotlin] 07. 클래스의 기본 구조 (0) | 2023.07.18 |
[Kotlin] 05. 반복문과 증감연산자 (0) | 2023.07.16 |
[Kotlin] 04. 조건문과 비교연산 (0) | 2023.07.15 |
[Kotlin] 03. 타입추론과 함수 (0) | 2023.07.14 |