티스토리 뷰

5_Conditionals(한글)

Conditionals

Reference

https://github.com/JuliaComputing/JuliaBoxTutorials/tree/master/introductory-tutorials/intro-to-julia (github : JuliaComputing/JuliaBoxTutorials/introductory-tutorials/intro-to-julia/)

Topics:

  1. if 문
  2. 삼항연산자
  3. short-circuit evaluation
  4. 연습문제

함께보기

if 문

줄리아에서, 구문

if *condition 1*
    *option 1*
elseif *condition 2*
    *option 2*
else
    *option 3*
end

을 사용하면 조건부로 옵션 중 하나를 실행할 수 있다.

예를 들어서, 숫자 N이 주어졌을 때, 3의 배수면 "피즈", 5의 배수면 "버즈", 3의 배수인 동시에 5의 배수면 "피즈버즈", 아무것도 아니면 숫자 그대로 출력하는 작업을 하고 싶다고 하자.

In [1]:
N = 3
Out[1]:
3
In [2]:
if (N % 3 == 0) && (N % 5 == 0) # `&&` 는 "AND"를 의미하고, %는 나눈 나머지를 의미한다.
    println("피즈버즈")
elseif N % 3 == 0
    println("피즈")
elseif N % 5 == 0
    println("버즈")
else
    println(N)
end
피즈
In [3]:
N = 5
Out[3]:
5
In [4]:
if (N % 3 == 0) && (N % 5 == 0) # `&&` 는 "AND"를 의미하고, %는 나눈 나머지를 의미한다.
    println("피즈버즈")
elseif N % 3 == 0
    println("피즈")
elseif N % 5 == 0
    println("버즈")
else
    println(N)
end
버즈
In [5]:
N = 15
Out[5]:
15
In [6]:
if (N % 3 == 0) && (N % 5 == 0) # `&&` 는 "AND"를 의미하고, %는 나눈 나머지를 의미한다.
    println("피즈버즈")
elseif N % 3 == 0
    println("피즈")
elseif N % 5 == 0
    println("버즈")
else
    println(N)
end
피즈버즈
In [7]:
N = 1
Out[7]:
1
In [8]:
if (N % 3 == 0) && (N % 5 == 0)
    println("피즈버즈")
elseif N % 3 == 0
    println("피즈")
elseif N % 5 == 0
    println("버즈")
else
    println(N)
end
1

삼항연산자

삼항연산자 구문은 다음과 같다.

a ? b : c

이 구문은 아래 구문과 같은 역할을 한다.

if a
    b
else
    c
end

x, y 두 숫자가 주어졌을 때, 더 큰 값을 출력하는 작업을 하고싶다고 하자.

In [9]:
x = 1
y = 2
Out[9]:
2

if else 문을 쓰면 다음과 같다.

In [10]:
if x > y
    x
else
    y
end
Out[10]:
2

삼항연산자를 사용하면 다음과 같다.

In [11]:
(x > y) ? x : y
Out[11]:
2
In [12]:
x = 2
y = 1
Out[12]:
1
In [13]:
if x > y
    x
else
    y
end
Out[13]:
2
In [14]:
(x > y) ? x : y
Out[14]:
2

short-circuit evaluation

short-circuit evaluation은 논리연산에서 왼쪽 항의 특정 조건이 만족되면 오른쪽 항을 굳이 연산하지 않는 것을 의미한다.

우리는 아래 논리연산자를 이미 본 적 있다.

a && b

이 구문은 a와 b 둘 다 true일 때만 true를 내보낸다. 만일 a 가 false이면, b에 상관없이 연산 결과가 false이다. 따라서 Julia는 b와 상관없이, 그냥 false를 내보낸다. 이 방식에는 약간의 부작용이 있는데, 아래 코드를 실행 해보면 알 수 있다.

In [15]:
false && (println("안녕"); true)
Out[15]:
false
In [16]:
true && (println("안녕"); true)
안녕
Out[16]:
true

아래처럼 뒤에 에러를 반환하는 함수를 써서 적용할 수도 있다.

In [17]:
x = 1
(x > 0) && error("x 는 0보다 클 수 없다.")
x 는 0보다 클 수 없다.

Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] top-level scope at In[17]:2
In [18]:
x = -1
(x > 0) && error("x는 0보다 클 수 없다.")
Out[18]:
false

비슷하게, || 연산에 대해서도 가능하다.

In [19]:
true || println("안녕")
Out[19]:
true
In [20]:
false || println("안녕")
안녕

Exercises

5.1

숫자가 짝수이면 숫자를 출력하고 숫자가 홀수이면 "홀수"를 출력하는 코드를 작성해보자.

In [21]:
n = 1
Out[21]:
1
In [22]:
if n % 2 == 1
    println("홀수")
else
    println(n)
end
홀수
In [23]:
n = 2
Out[23]:
2
In [24]:
if n % 2 == 1
    println("홀수")
else
    println(n)
end
2

5.2

삼항연산자를 써서 위의 코드를 다시 써보자.

In [25]:
n = 1
Out[25]:
1
In [26]:
(n % 2 == 1) ? println("홀수") : n
홀수
In [27]:
n = 2
Out[27]:
2
In [28]:
(n % 2 == 1) ? println("홀수") : n
Out[28]:
2

'Flux in Julia > Learning Julia (Intro_to_Julia)' 카테고리의 다른 글

06. Functions (한글)  (0) 2018.09.27
06. Functions  (0) 2018.09.27
05. Conditionals  (0) 2018.09.18
04. Loops (한글)  (0) 2018.09.15
04. Loops  (0) 2018.09.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함