728x90
반응형
Prolog란?
Prolog는 1973년 개발된 논리지향적 언어다. 특히 술어논리(Predicate Logic)에 기반을두고 있다. 인공지능 언어의 초기인 LISP 보다는 규모가 작아서 더 다양한 종류의 컴퓨터에서 실행 가능하다.
Prolog 문법
1) Atom(상수)
- 자바에서의 String과 의미가 유사
- 항상 소문자로 시작
- 문자, 숫자, 언더바, ' 로 구성된 데이터
예시) dog, 'hi', chung_god
2) Number(상수)
- 숫자 의미
예시) 1, 100, 56, 12.5, -23
3) Variable(변수)
- 단어에 뜻대로 변수를 뜻하고 대문자로 시작
예시) A, B, C
과제 목적
Prolog 를 통해서 계승 프로그램 순환, 반복 버전 작성
여기서 순환은 재귀, 반복은 반복문이다.
1. 팩토리얼 순환 버전
간단한 재귀를 통해서 팩토리얼을 정의한다.
factorial(0,1).
factorial(N,F) :-
N>0,
N1 is N-1,
factorial(N1,F1),
F is N*F1.
2. 팩토리얼 반복 버전
재귀는 Prolog에서 사용할 수 있는 반복 기법이고 while,for 같은 반복문 형태가 없다.
하지만 tail 재귀를 통해 이를 유사하게 구현해 낼 수 있다.
factorial_iter(0,1).
factorial_iter(N,F):-
N>0,
factorial_iter(N,1,F).
factorial_iter(1,F,F).
factorial_iter(N,T,F):-
N>1,
NT is N*T, M is N-1,
factorial_iter(M,NT,F).
참고자료
https://lispandprolog.wordpress.com/iteration-in-prolog/
https://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_2.html
728x90
반응형
'공부 > 프로그래밍 언어론' 카테고리의 다른 글
[프로그래밍 언어론] 10. 구문론2 (0) | 2021.04.14 |
---|---|
[프로그래밍 언어론] 10. 구문론 (1) | 2021.04.13 |
[프로그래밍 언어론] 6. 프로그래밍 언어의 발전 3 (0) | 2021.04.13 |
[프로그래밍 언어론] 4. 프로그래밍 언어의 발전 1 (0) | 2021.04.12 |
[프로그래밍 언어론] 2. 언어의 기능 (0) | 2021.04.12 |