코틀린

[Youtube DiMo] 7강. 흐름제어와 논리연산자

iseohyun 2022. 4. 29.

목차

    https://youtu.be/gMuxnwDYKhc

     

    1. break 문

    소속된 루프를 종료함

    fun main() {
        for(i in 1..10) {
            println(i)
            if(i==3) break
        }
    }
    1
    2
    3

     

     

    2. continue 문

    소속된 루프에선 현재 루프만 건너뜀

    fun main() {
        for(i in 1..10) {
            println(i)
            if(i==3) continue //break에서 continue로 변경
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

     

     

    3. label (@)

    여러개의 반복문을 한 번에 이탈하고자 할 때, 레이블을 이용해서 한 번에 이탈 할 수 있다.

    fun main() {
        loop@for(i in 2..9)
        	for(j in 1..9) {
            	if(i==4)
                	break@loop
            	println("$i x $j = ${i*j}")
            }
    }

     

     


    4. 논리연산자

    1. And(그리고) > && > A && B > 결과 : 둘 다 참이어야 참 else 거짓
    2. Or(또는) > || > A || B > 결과 : 둘 중 하나만 참이어도 참 else 거짓
    3. Not > ! > !A > 결과 : 참은 거짓으로, 거짓은 참

    fun main() {
        var a = true
        var b = false
        
        println(a && b)
        println(a || b)
        println(!a)
        
        println(a && !b)
    }
    false
    true
    false
    true

     


    대부분 컴퓨터의 ALU는 기본연산으로 And, Or, Xor, Not, Shift를 기본적으로 지원하다보니 해당 기능을 컴퓨터 언어로 표현하는 것은 컴퓨터 언어의 기본소양이 되어있었고, 전통적으로 &, |, ^, !, >>를 사용했습니다. 이는 기본적으로 bit연산을 지원하고, 조건에 대한 결과는 CPU상태 Flag (Sign, Zero, Carry, Overflow) 등을 종합하여 판단합니다. 해당 결과간의 연산이 bit연산과 다르기 때문에 bit And는 &한개, logic(결과) And는 &&두개를 사용하게 되었습니다.

    https://pwn3r.tistory.com/entry/Flag-Register-1

    ※ 비트 연산을 지원하지 않고 있다.

    fun main() {
        var a = 0b0011
        var b = 0b0101
        var c = a & b // error : Unexpected tokens (use ';' to separate expressions on the same line)
    }

    댓글