^Back To Top

foto1 foto2 foto3 foto4 foto5


Get Adobe Flash player

Prolog là ngôn ngữ lập trình ký hiệu (symbolic programming), tương tự các ngôn ngữ lập trình hàm(functional programming) hay lập trình phi số (non numerical programming). Prolog rất thích hợp để giải quyết các bài toán liên quan đến các đối tượng (object) và mối quan hệ (relation) giữa chúng. Dưới đây sẽ giới thiệu một số code bài toán cơ bản thường sử dụng trong lập trình Prolog, là tư liệu để SV ngành CNTT tham khảo học nhập môn trí tuệ nhân tạo.

  1. Dạng bài toán chuyển các câu lệnh tự nhiên sang dạng mệnh đề logic

Ví dụ: Chuyển các câu lệnh tự nhiên sau sang dạng mệnh đề logic

+ Trang là một sinh viên ngành Công nghệ thông tin.

+ Linh không phải là sinh viên ngành Công nghệ thông tin.

+An là một sinh viên ngành Kinh tế.

+ Khanh học môn TTNT.

+ Mọi sinh viên của ngành Công nghệ thông tin đều học môn TTNT.

Sự dụng dạng luật và sự kiện có thể chuyển sang các câu mệnh đề sau:

SV_CNTT(“Trang”).

No_SV_CNTT(“Linh”).

SV_KT(“An”).

TTNT(“Khanh”).

SV_CNTT(X):- TTNT(X). 

  1. Lập trình giải và biện luận phương trình bậc 2 ax2+bx+c=0

Để giải dạng bài toán cần tìm hiểu các kiến thức sau để đưa vào lập trình

- Trường hợp 1: a = 0, ta giải và biện luận ax + b = 0.

- Trường hợp 2: a ≠ 0. Ta lập Δ = b2 - 4ac. Khi đó:

+ Nếu Δ > 0 thì phương trình có 2 nghiệm phân biệt

+ Nếu Δ = 0 thì phương trình có 1 nghiệm (kép): x = -b/2a

+ Nếu Δ < 0 thì phương trình vô nghiệm.

Code bài toán giải và biện luận phương trình bậc nhất:

  1. Tìm số fibonacci thứ N của dãy

Số Fibonacci thứ N được tính theo công thức sau

- nếu N = 1 hoặc N = 2 thì F(N) = 1

- nếu N>2 thì F(N) = F(N-1) + F(N-2)

Code bài toán tìm số fibonacci thứ N của dãy:

  1. Tính n!

Theo định nghĩa cách tính giai thừa như sau:

0! = 1

n! = 1.2.3…n

Code bài toán tính n!

Với một số bài toán thường được minh họa trong ngôn ngữ lập trình Prolog để hiểu cách dùng , SV có thể phát triển các bài toán thành các dạng bài phức tạp hơn. Từ đó có thể hiểu và nắm vững các đặc điểm và cách sử dụng các ngôn ngữ lập trình.