4장: 수식, math

1. 수학 표현식 개요

TCL의 수학 표현식은 숫자 계산을 수행하는 데 사용됩니다. expr 명령을 통해 평가됩니다.

기본 구문:

expr 수식

2. 기본 연산자

  • 덧셈: +

  • 뺄셈: -

  • 곱셈: *

  • 나눗셈: /

  • 모듈로 (나머지): %

  • 거듭제곱: **

예시:

puts [expr {5 + 3}]     # 출력: 8
puts [expr {10 - 4}]    # 출력: 6
puts [expr {3 * 4}]     # 출력: 12
puts [expr {20 / 4}]    # 출력: 5
puts [expr {17 % 5}]    # 출력: 2
puts [expr {2 ** 3}]    # 출력: 8

3. 비교 연산자

  • 같음: ==

  • 다름: !=

  • 크다: >

  • 작다: <

  • 크거나 같다: >=

  • 작거나 같다: <=

예시:

puts [expr {5 == 5}]    # 출력: 1 (참)
puts [expr {5 != 4}]    # 출력: 1 (참)
puts [expr {6 > 4}]     # 출력: 1 (참)
puts [expr {3 < 2}]     # 출력: 0 (거짓)

4. 논리 연산자

  • AND: &&

  • OR: ||

  • NOT: !

예시:

puts [expr {(5 > 3) && (2 < 4)}]  # 출력: 1 (참)
puts [expr {(5 < 3) || (2 < 4)}]  # 출력: 1 (참)
puts [expr {!(5 < 3)}]            # 출력: 1 (참)

5. 비트 연산자

2진수 수준에서 비트를 연산합니다.

예를들어,

10진수 1은 1,

10진수2는 10,

10진수 4는 100입니다.

2진수 100을 '>>' 하면 비트가 하나씩 오른쪽으로 옮겨져 2진수 10이 됩니다.

  • AND: &

  • OR: |

  • XOR: ^

  • NOT: ~

  • 왼쪽 시프트: <<

  • 오른쪽 시프트: >>

예시:

puts [expr {5 & 3}]     # 출력: 1
puts [expr {5 | 3}]     # 출력: 7
puts [expr {5 ^ 3}]     # 출력: 6
puts [expr {~5}]        # 출력: -6
puts [expr {1 << 3}]    # 출력: 8
puts [expr {8 >> 1}]    # 출력: 4

6. 수학 함수

TCL은 다양한 내장 수학 함수를 제공합니다:

  • 절대값: abs(x)

  • 제곱근: sqrt(x)

  • 지수: exp(x)

  • 로그: log(x), log10(x)

  • 삼각함수: sin(x), cos(x), tan(x)

  • 반올림: round(x)

  • 최대/최소: max(x,y), min(x,y)

예시:

puts [expr {abs(-5)}]        # 출력: 5
puts [expr {sqrt(16)}]       # 출력: 4.0
puts [expr {round(3.7)}]     # 출력: 4
puts [expr {max(5, 10)}]     # 출력: 10

7. 변수 사용

수학 표현식 내에서 변수를 직접 사용할 수 있습니다:

set x 5
set y 3
puts [expr {$x + $y}]  # 출력: 8

8. 주의사항 ⚠️

  • 부동소수점 연산 시 정밀도 주의.

  • 0으로 나누기 오류 주의

  • 복잡한 표현식은 가독성을 위해 괄호 사용 권장

9. 여러 수학식 사용 및 계산 우선순위

TCL의 수학 표현식에서 연산자 우선순위는 일반적인 수학 규칙을 따릅니다. 우선순위가 높은 연산자가 먼저 계산됩니다.

우선순위 (높음에서 낮음 순):

  1. () 괄호

  2. ** 거듭제곱

  3. *, /, % 곱셈, 나눗셈, 나머지 연산

  4. +, - 덧셈, 뺄셈

  5. <<, >> 비트 시프트

  6. <, >, <=, >= 비교 연산자

  7. ==, != 동등성 비교

  8. & 비트 AND

  9. ^ 비트 XOR

  10. | 비트 OR

  11. && 논리 AND

  12. || 논리 OR

  13. ?: 삼항 연산자

예시:

puts [expr {2 + 3 * 4}]     # 출력: 14 (3 * 4가 먼저 계산됨)
puts [expr {(2 + 3) * 4}]   # 출력: 20 (괄호 안이 먼저 계산됨)
puts [expr {1 + 2 * 3 ** 2}]  # 출력: 19 (3 ** 2 -> 2 * 9 -> 1 + 18 순서로 계산)

11. 팁과 요령 💡

  • 복잡한 표현식은 괄호를 사용하여 의도를 명확히 표현. 리뷰어를 위해.

  • 여러 수학식을 사용할 때는 각 식의 목적을 주석으로 설명

  • 우선순위가 불분명한 경우 괄호를 사용하여 명시적으로 순서 지정

  • 긴 표현식은 여러 줄로 나누어 가독성 향상

Last updated