Julia의 변수와 데이터 타입에 대해 다룹니다.
2023. 11. 11 최초작성
2023. 12. 15
다음 사이트를 참고하고 ChatGPT의 도움을 받았습니다.
https://techytok.com/lesson-variables-and-types/
Julia 개발 환경 구축은 다음 포스트를 참고하세요.
Visual Studio Code 사용한 Julia 개발 환경만들기(Windows / Ubuntu / Macbook M1)
https://webnautes.tistory.com/2216
Julia 강좌를 진행하고 있습니다.
Julia 강좌 1 - 변수와 데이터 타입
https://webnautes.tistory.com/2218
Julia 강좌 2 - 함수, void function, Optional positional arguments, Keyword arguments
https://webnautes.tistory.com/2220
Julia 강좌 3 - 배열, 튜플, 딕셔너리
https://webnautes.tistory.com/2229
Julia 강좌 4 - 제어문 if ... else, for, break, continue, while, enumerate
https://webnautes.tistory.com/2235
Julia 강좌 5 - 브로드캐스팅(broadcasting)
https://webnautes.tistory.com/2240
Julia 강좌 6 - 변수 유효 범위( Variable Scope ) : 전역(global), 로컬(local)
https://webnautes.tistory.com/2247
Julia 강좌 7 - 모듈(module)
https://webnautes.tistory.com/2253
Julia 강좌 8 - 타입(type)
https://webnautes.tistory.com/2260
Julia 강좌 9 - 패키지(package)
https://webnautes.tistory.com/2268
변수(Variables)
변수는 데이터를 저장하는 공간(메모리)에 이름을 붙인 것입니다.
줄리아에서 변수에 값을 대입해봅니다. 변수의 데이터 타입을 적어야 했던 C/C++과 달리 Python처럼 데이터 타입을 적어줄 필요가 없습니다. 실행결과를 코드 아래에 주석으로 적는 방식으로 보여줍니다.
name = "webnautes" # 문자열 this_year = 2023 # 정수 pie = 3.141592 # 실수 # print를 사용하면 출력후 줄바꿈을 하지 않습니다. print(name) print(this_year) print(pie) # webnautes20233.141592 println() # println을 사용하면 출력후 줄바꿈을 합니다. # println을 사용하면 출력 후 줄바꿈을 합니다. println(name) println(this_year) println(pie) # webnautes # 2023 # 3.141592 |
print를 사용하면 출력후 줄바꿈을 하지 않기때문에 처음에 출력한 문자열, 정수, 실수가 나란히 한줄에 출력되었습니다.
println을 사용하면 출력 후, 줄바꿈을 해줍니다. 그래서 println()을 사용하면 아무것도 출력하지 않지만 한줄을 바꾸어줍니다. 이후 출력한 문자열, 정수, 실수는 하나 출력할때 마다 줄바꿈을 해주고 있습니다.
한줄 주석은 파이썬처럼 #을 사용하면 되고 여러줄 주석은 다음처럼 #=을 적은후, =#을 적은 곳까지 주석처리됩니다.
#= 안녕하세요 webnautes입니다. =# |
산술 연산자(arithmetic operators)
Julia에서 제공하는 산술 연산자를 사용해봅니다.
a = 2 b = 3 # 각 연산을 수행합니다. sum = a + b # 합 difference = a - b # 차이 product = a * b # 곱 quotient = b / a # 몫 power = a^3 # 거듭제곱 modulus = b % a # 나머지 ratio = a // b # 비율 # 결과를 출력합니다. println("Sum: $sum") # 합 출력 # Sum: 5 println("Difference: $difference") # 차이 출력 # ifference: -1 println("Product: $product") # 곱 출력 # Product: 6 println("Quotient: $quotient") # 몫 출력 # Quotient: 1.5 println("Power: $power") # 거듭제곱 출력 # Power: 8 println("Modulus: $modulus") # 나머지 출력 # Modulus: 1 println("Ratio: $ratio") # 비율 출력 # Ratio: 2//3 println("Ratio: $(float(ratio))") # 비율을 계산한 값을 출력 # Ratio: 0.6666666666666666 |
- 합계 (`sum`): `a`와 `b`의 합은 `2 + 3 = 5`입니다.
- 차이 (`difference`): `a`에서 `b`를 뺀 차이는 `2 - 3 = -1`입니다.
- 곱 (`product`): `a`와 `b`의 곱은 `2 * 3 = 6`입니다.
- 몫 (`quotient`): `b`를 `a`로 나눈 몫은 `3 / 2 = 1.5`입니다.
- 거듭제곱 (`power`): `a`의 3제곱은 `2^3 = 8`입니다.
- 나머지 (`modulus`): `b`를 `a`로 나눈 나머지는 `3 % 2 = 1`입니다.
- 비율 (`ratio`): `a` 나누기 `b`의 분수는 `2 // 3`으로, 2`와 `3`의 분수 형태의 비율을 나타내며, 정확한 수학적 계산을 위해 사용됩니다. 분수를 소수로 출력하고 싶다면, `float()` 함수를 사용하여 `Rational` 타입을 부동소수점 숫자로 변환할 수 있습니다. `println("Ratio: $(float(ratio))")`는 `0.666666…`을 출력하게 됩니다.
데이터 타입(Types)
Julia에서 모든 값은 정해진 데이터 타입을 가지며, 이러한 데이터 타입은 계층 구조를 가지며 아래 그림처럼 트리로 표현할 수 있습니다.
트리의 최상위에는 모든 타입의 조상격인 Any 타입이 위치합니다. Any 아래에는 더 구체적인 타입들이 위치하며, 이들은 Any의 하위 타입입니다. 예를 들어, 숫자 타입(Number)은 Any의 직접적인 하위 타입이며, 숫자 타입의 하위에는 정수 타입(Integer), 실수 타입(Real) 등이 있습니다. 이러한 하위 타입들은 더욱 세분화되어 정수는 다시 부호 있는 정수(Signed), 부호 없는 정수(Unsigned) 등으로 나뉩니다.
변수의 데이터 타입을 확인하기 위해 typeof를 사용할 수 있습니다.
name = "webnautes" # 문자열 this_year = 2023 # 정수 pie = 3.141592 # 실수 # 각 변수의 데이터 타입을 출력합니다. println("The type of name is: ", typeof(name)) # The type of name is: String println("The type of this_year is: ", typeof(this_year)) # The type of this_year is: Int64 println("The type of pie is: ", typeof(pie)) # The type of pie is: Float64 |
데이터 타입을 변경할 수 있습니다. 파이썬처럼 데이터 타입으로 감싸거나 convert 함수를 사용하여 데이터 타입을 변환합니다.
Float64(this_year)
convert(Float64, this_year)
name = "webnautes" # 문자열 this_year = 2023 # 정수 pie = 3.141592 # 실수 # 정수를 Float64(실수)로 변환 this_year_float64 = Float64(this_year) # 또는 convert(Float64, this_year) println("this_year as a Float64: ", this_year_float64) # 실수를 정수로 변환 pie_int = convert(Int, pie) # 또는 Int(pie) println("pie as an Int: ", pie_int) |
주의할점은 실수를 정수로 변환하는 경우 실수를 어떻게 처리할지 알려주지 않으면 다음처럼 에러가 발생합니다. 위 코드는 다음과 같은 에러를 발생시킵니다.
ERROR: LoadError: InexactError: Int64(3.141592)
Stacktrace:
[1] Int64
@ ./float.jl:900 [inlined]
[2] convert(#unused#::Type{Int64}, x::Float64)
@ Base ./number.jl:7
[3] top-level scope
@ ~/julia/hello.jl:11
in expression starting at /Users/webnautes/julia/hello.jl:11
다음처럼 실수의 소수점을 어떻게 처리할지 알려줘야 합니다. 4가지 방식이 있습니다.
this_year = 2023 # 정수 pie = 3.141592 # 실수 # 정수를 Float64(실수)로 변환 this_year_float64 = Float64(this_year) println("this_year as a Float64: ", this_year_float64) # this_year as a Float64: 2023.0 # 실수를 정수로 변환하기 위해 round, floor, ceil, 또는 trunc를 사용 pie_rounded = round(Int, pie) # 반올림 pie_floored = floor(Int, pie) # 내림 pie_ceiled = ceil(Int, pie) # 올림 pie_truncated = trunc(Int, pie) # 0 방향으로 버림 println("Rounded: ", pie_rounded) # Rounded: 3 println("Floored: ", pie_floored) # Floored: 3 println("Ceiled: ", pie_ceiled) # Ceiled: 4 println("Truncated: ", pie_truncated) # Truncated: 3 |
'Julia > Julia 강좌' 카테고리의 다른 글
Julia 강좌 7 - 모듈(module) (0) | 2024.01.06 |
---|---|
Julia 강좌 6 - 변수 유효 범위( Variable Scope ) : 전역(global), 로컬(local) (4) | 2023.12.22 |
Julia 강좌 5 - 브로드캐스팅(broadcasting) (0) | 2023.12.11 |
Julia 강좌 3 - 배열, 튜플, 딕셔너리 (0) | 2023.12.10 |
Julia 강좌 4 - 제어문 if ... else, for, break, continue, while, enumerate (1) | 2023.12.07 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!