1. Home
  2. Code Hay
  3. Bài Tập Lập Trình Prolog Có Lời Giải – Hệ Chuyên Gia
Nguyễn Tuấn 2 năm trước

Bài Tập Lập Trình Prolog Có Lời Giải – Hệ Chuyên Gia

Trong hệ chuyên gia chúng ta thường sử dụng ngôn ngữ lập trình Prolog, ngôn ngữ này thường được sử dụng trong lĩnh vực trí tuệ nhân tạo. Một chương trình Prolog là một cơ sở dữ liệu gồm các mệnh đề clause. Mỗi mệnh đề được xây dựng từ các vị từ predicat. Một vị từ là một phát biểu nào đó về các đối tượng có giá trị chân true hoặc fail. Hôm nay sharecs muốn giới thiệu tới các bạn một số mẫu bài tập căn bản để chúng mình học tập.

Bài Tập Lập Trình Prolog Cơ Bản

Viết chương trình tính tổng từ 1 đến n chia hết cho 3
%chuong trinh tinh tong tu 1 den n CHIA HET CHO 3
predicates
	tong(integer,integer)
clauses
	tong(1,K) :-K=0, !.
	tong(N,K):-N mod 3 =0,
		N1 = N - 1,
		   tong(N1,K1),
		   K=K1+N.
	tong(N,K):- N mod 3 <> 0,
		N1 = N -1,
		tong(N1,K1),
		K = K1. %truong hop nay khong cong
Viết chương trình tính tổng từ M đến N
%chuong trinh tinh tong tu M den N
predicates
	tongMN (integer, integer, integer)
clauses
	tongMN (M, M, M) :- !.
	tongMN (M, N, K) :-
		    N1 = N - 1,
		    tongMN (M, N1, K1),
		    K = K1 + N.
goal
	write("cho M:"),readint(M),
	write("cho N:"), readint(N),
	tongMN(M,N,X),
	write("ket qua:",X).
Viết chương trình tính tổng các số chẵn từ 1 đến N
/* chuong trinh tinh tong cac so chan tu 1 den N   */
predicates
	tongchan(integer,integer)
clauses
	tongchan(1,0) :- !.
	tongchan(N,K):- N mod 2 = 0,
	   	   N1=N-1,
		   tongchan(N1,K1),
		   K=K1+N.
	tongchan(N,K):- N mod 2 = 1, 
		   N1 = N-1,
	   	   tongchan(N1,K1),
		   K = K1.
Viết chương trình tính tổng các số chia hết cho 3 từ 1 đến N
/* chuong trinh tinh tong cac so chia het cho 3 tu 1 den N   */
predicates
	tongba(integer,integer)
clauses
	tongba(1,0) :- !.
	tongba(N,K):- N mod 3 = 0,
	   	   N1=N-1,
		   tongba(N1,K1),
		   K=K1+N.
	tongba(N,K):- N mod 3 <> 0, 
		   N1 = N-1,
	   	   tongba(N1,K1),
		   K = K1.
goal
	write("cho mot so nguyen: "),
	readint(N),
	tongba(N,K),
	write("tong ba toi ", N),
	write(" bang: ",K).
Viết chương trình tính tổng từ 1 đến N
/* chuong trinh tinh tong tu 1 den N   */
predicates
	tong(integer,integer)
clauses
	tong(1,1):- !.
	tong(N,K):- N1 = N-1,
	   	   tong(N1,K1),
		   K = K1+N.
Viết chương trình nhận biết số là chẵn hay lẻ
predicates
	le(interger)
clauses
	chan(N) :- N mod 2 = 0,
		 wite(N, "chan").
	le(N) :- wite(N, "le").
N giai thừa
predicates
	gt(interger, real)
	gt(interger, real, interger, real)
clauses
	gt(N, K) :- gt(N, K, 1, 1).
	gt(N, K, I, P) :- I1 = I + 1,
			P1 = P*I,
			gt(N, K, I1, P1).
	gt(N, K, N, K).
Bài tập hợp (xâu)
domains
	xau = interger*
predicates
	hop(xau, xau, xau)
clauses
	hop([], L, L). %khi lay het gia tri thi dung
	hop([N:T], L2, [N:L3]) :- hop(T, L2, L3).
Bài tập giao (xâu)
domains
	xau = interger*
predicates
	thuoc(xau, xau, xau)
	giao(xau, xau, xau)
clauses
	giao(_, _, [])
	hop([], L, L). %khi lay het gia tri thi dung
	hop([N:T], L2, [N:L3]) :- hop(T, L2, L3).
Bài tập giải phương trình Ax +B = C
hệ chuyên gia lập trình prolog
lập trình prolog
Bài tập giải phương trình Ax +B = 0
predicates
	pt(real, real)
clauses
	pt(0,0) :- write("phuong trinh vo so nghiem").
	pt(0,_) :- write("phuong trinh vo nghiem").
	pt(A, B) :- X=-B/A,
		  write("Nghiem la: ", X).
goal
	write("Cho gia tri A:"),
	readrea(A),
	write("Cho gia tri B:"),
	readrea(B),
	pt(A,B).

Cảm ơn các bạn đã ghé thăm. Chúc các bạn thành công!

13 lượt xem | 0 bình luận