DAON's studio

[쉽게 입문하는 Lisp 1] 기본 연산 함수 본문

Programming_/Common Lisp

[쉽게 입문하는 Lisp 1] 기본 연산 함수

Da:on 2020. 5. 14. 05:45

 

( 고정 공지사항 )

1> 제 글들이 Lisp 범주안에 들어있는 다양한 언어나 방언들(Auto Lisp, Scheme 등등..)을 공부하실 때 물론 어느정도는 도움 될 수는 있겠지만, 제가 다룰 내용은 사실 지극히 Common Lisp에 초점이 맞춰져 있다는 것을 미리 말씀드립니다.

2> Lisp를 공부하기 위한 좋은 양서는 많이 있습니다. 그렇지만 그 책들이 초보자가 읽기에 너무 두껍고 장황하거나, 혹은 읽고자 하는 책이 한국어로 쓰여있지 않다면 공부를 시작하는데에 앞서 두려움을 가질 수 있습니다. 제 글들은 양서들을 비롯한 다른 좋은 자료들을 접하고 공부하기 전에 Commn Lisp 맛보기를 제공하고, 그렇게 다져진 기반을 토대로 추후에 좋은 자료로 더 공부하고 싶은 분들이 가속도를 낼 수 있도록 돕기 위해 쓰여질 것입니다.

3> 저는 편집 환경으로 Emacs를 사용합니다.

 

 

' [쉽게 입문하는 Lisp]시리즈 ' 의 첫번 째 글이다.

 

공지사항에서 잠깐 언급 된 것처럼 내 글은 Common Lisp의 전반을 빨리 훑어보고 맛보기 하기 위한 것이기에

어떤 테마로 시리즈를 시작해야 할지 고민을 해보았는데

장황하고 디테일한 설명보다는 아주 간단한 함수로 기본연산을 하는 코드에 대해 바로 설명해보려고 한다.

 

Lisp에서는 기본 연산을 어떻게 함수로 표현하고 사용할 수 있을까?

 

오늘 다룰 연산 : +  -  *  /  ABS SQRT MOD   (-> 더하기, 빼기, 곱하기, 나누기, 절대값, 루트, 나머지 )

 

간단한 연산을 코드로 쓰기 위해서는

1.먼저 괄호를 연다  -> ()

2.어떤 함수를 실행 할 것인지 쓴다 -> (+)

3.연산을 할 대상값을 쓴다. (어떤 연산인지에 따라서 대상값이 한 개일수도, 여러 개일수도 있다.) -> (+ 3 2)

4.실행 -> 5

(그림 1)

위에서 보았듯이 Lisp 에서는 기본적으로 괄호 안에 사용할 함수(위의 예로 따지면 연산기호)를 먼저 적어 넣고 실행 될 값들을 넣는다.

마찬가지로 다른 연산기호를 실행 해보겠다.

(그림 2)

빼기 연산에서도 마찬가지이다. 실수 영역까지도 문제 없이 실행된다.

(그림 3)

나누기 연산에서 주의 할 점은

(/ 2 4) -> 이렇게 정수로 쓰면 분수값이 나오는데

(/ 2 4.0) -> 실수가 포함되니 실수값이 결과로 나온다.

그리고 보면 알겠지만 2/4 가 아니라 1/2로 값이 나온다. 약분되어 나온다는 뜻이다.

(그림 4)

절대값은 숫자를 하나만 넣어야 한다.

(그림 5)

제곱근 값이다.

SQRT함수는 기본적으로 실수값을 결과로 내기 때문에 5가 아니라 5.0으로 나온다.

(그림 6)

MOD 함수는 나눗셈 연산 후 나머지를 알려주는 함수이다.

10 나누기 3은 몫이 3이고 나머지가 1이므로 1이 결과로 나온다.

 

(그림 7)

여러가지 수를 한꺼번에 연산 할 수도 있다.

 

 

 

이제 언급했던 연산함수 (+  -  *  /  ABS SQRT MOD)의 역할과 사용방법, 주의할 점까지 알아 보았다.

어려운 내용은 아니지만 여러가지 연산을 직접 코딩하면서 연습 해보면 도움이 될 것이다.

 

다음 글은 SYMBOL 에 대해서 다뤄보려고 한다.

 

 

Comments