B - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

B

Description:

Title: Slide 1 Author: Huy Hoang Last modified by: User Created Date: 10/28/2006 3:13:58 PM Document presentation format: On-screen Show (4:3) Company – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 19
Provided by: Huy99
Category:
Tags: clause | object

less

Transcript and Presenter's Notes

Title: B


1
BÀI S? 6
  • NGÔN NG? L?P TRÌNH PROLOG
  • Gi?ng viên Tr?nh Huy Hoàng

2
GI?I THI?U
  • PROgramming in LOGic ? PROLOG
  • Prolog là m?t ngôn ng? khai báo và g?n v?i ngôn
    ng? t? nhiên. Khác v?i các ngôn ng? truy?n th?ng
    (ngôn ng? th? t?c), ngu?i l?p trình không c?n
    ph?i dua ra m?t chu?i các tác v? c? th? d? gi?i
    quy?t v?n d?, mà ch? y?u là mô t? v?n d? c?n gi?i
    quy?t, cho bi?t chuong trình làm gì hon là chuong
    trình du?c th?c hi?n nhu th? nào.
  • Prolog là ngôn ng? c?a trí tu? nhân t?o.

3
CÁC Y?U T? CO B?N C?A PROLOG
  • - Các d?i tu?ng (object)
  • G?m các bi?n và h?ng.
  • Các bi?n ph?i có m?u t? d?u vi?t hoa.
  • - Quan h? gi?a các d?i tu?ng
  • Th? hi?n du?i hình th?c v? t? (predicates).
  • - Các s? ki?n ( facts )
  • S? ki?n là v? t? du?c công nh?n dúng.
  • - Các lu?t ( rules )
  • Lu?t là m?nh d? kéo theo du?c công nh?n dúng.

4
THÀNH PH?N C?A PROLOG
  • Domains
  • Predicates
  • Clauses
  • Goal

5
Domains
  • Là ph?n d?nh nghia ki?u m?i cho các d?i s? trong
    các v? t? c?a chuong trình, giúp cho các d?i s?
    c?a ph?n khai báo v? t? th? hi?n du?c ý nghia c?a
    các d?i tu?ng n?u ki?u du?c d?nh nghia cùng ki?u
    v?i ki?u can b?n c?a Prolog.
  • N?u d?i s? c?a v? t? du?c vi?t tr?c ti?p du?i
    d?ng các ki?u co b?n mà không c?n khai báo
  • Ví d?
  • is(symbol, symbol)

6
Predicates
  • Là ph?n khai báo các v? t? s? du?c s? d?ng trong
    ph?n Clauses, tr? các v? t? xây d?ng s?n c?a
    Prolog ( cut, fail, write,...). Tên v? t? bi?u
    di?n m?t quan h? và các d?i s? c?a v? t? bi?u
    di?n các d?i tu?ng có quan h? v?i nhau .
  • Khi khai báo m?t v? t? m?i ph?i li?t kê ki?u c?a
    các d?i s?. Ki?u c?a d?i s? có th? là ki?u can
    b?n ho?c ki?u du?c d?nh nghia trong ph?n domains.
    Prolog cho phép khai báo nhi?u v? t? cùng tên,
    cùng s? d?i s? .
  • Các v? t? cùng tên nhung s? d?i s? khác nhau du?c
    xem nhu các v? t? hoàn toàn khác nhau.

7
Clauses
  • Cung c?p các s? ki?n và các lu?t c?n thi?t d? có
    th? tìm ra gi?i pháp cho ph?n Goal.
  • M?t s? ki?n bi?u di?n m?t thu?c tính c?a m?t d?i
    tu?ng ho?c m?i liên h? gi?a các d?i tu?ng.
  • M?t lu?t cho bi?t m?t thu?c tính ho?c m?t m?i
    liên h? s? dúng khi m?t s? s? ki?n du?c th?a mãn.
  • M?t lu?t g?m 3 ph?n ph?n d?u, ph?n thân và ph?n
    ngan cách 2 ph?n trên (ký hi?u là if ho?c "-").
  • Ph?n thân ch?a m?t ho?c nhi?u subgoal .

8
Goal
  • Tuong t? nhu ph?n thân c?a m?t lu?t, bao g?m các
    subgoal c?n ph?i th?a d? gi?i quy?t v?n d?.
  • Goal vi?t s?n trong chuong trình du?c g?i là goal
    n?i .
  • Goal du?c nh?p vào khi dang ch?y chuong trình g?i
    là goal ngo?i.
  • Goal n?i ch? cho ra m?t k?t qu? (n?u có), còn
    goal ngo?i cho ra t?t c? các k?t qu? có th? có.

9
CÁC KI?U C?A Ð?I TU?NG
  • char Ki?u ký t? ? .
  • integer -32768 ? 32767
  • real -1e-307 ? 1e-307 ho?c -1e308 ?1e308
  • string chu?i ký t? ? .
  • symbol là dãy các ch?, s? và d?u g?ch du?i liên
    ti?p nhau v?i m?u t? d?u là ch? thu?ng ho?c du?i
    d?ng chu?i ký t? n?m gi?a hai d?u nháy kép ( s?
    d?ng trong tru?ng h?p các symbol có kho?ng tr?ng
    ho?c m?u t? d?u ph?i vi?t hoa).
  • Ð?i tu?ng ph?c h?p là d?i tu?ng mà b?n thân nó
    l?i ch?a nh?ng d?i tu?ng khác du?i d?ng các d?i
    s?. Ð?i tu?ng này có th? xây d?ng ? nhi?u m?c,
    các d?i s? c?a ki?u ph?c h?p cung có th? là m?t
    ki?u ph?c h?p. Ð?i tu?ng này du?c dùng d? làm cho
    chuong trình d? hi?u và ng?n g?n.
  • Danh sách du?c xem nhu m?t d?i tu?ng ph?c h?p.
    Danh sách tuong t? nhu t?p h?p nhung các ph?n t?
    trong danh sách có th? gi?ng nhau. M?t danh sách
    có th? không ch?a ph?n t? nào và du?c g?i là danh
    sách r?ng.

10
GIAO DI?N C?A PROLOG
11
C?A S? EDITOR
  • Dùng d? nh?p chuong trình ngu?n và có th? so?n
    th?o chuong trình.
  • F1 hi?n ra danh sách và công d?ng c?a các phím
    ch?c nang ? c?a s? MESSAGE .
  • F2 luu l?i n?i dung t?p tin trong c?a s? so?n
    th?o.
  • F3 nh?p chuong trình vào c?a s? so?n th?o. Trên
    c?a s? so?n th?o có m?t dòng dùng d? nh?p file (
    th?c ch?t dây là c? s? nh?p tên file ). Khi nh?n
    phím F3, trên dòng này xu?t hi?n ch? "FILE NAME
    " và sau dó ngu?i s? d?ng gõ tên t?p tin c?n nh?p
    vào c?a s? so?n th?o.
  • F5 dùng d? d?t d? sâu c?a cây tìm ki?m nh?m
    ngan ng?a kh? nang l?p vô t?n c?a chuong trình .
  • CTRL- A luu n?i dung t?p tin trong c?a s? so?n
    th?o v?i tên khác.
  • CTRL- R th?c thi chuong trình trong c?a s? so?n
    th?o.
  • CTRL- X thoát kh?i chuong trình Prolog, tr? v?
    c?a s? l?nh c?a Unix ( ch? có tác d?ng khi dang ?
    c?a s? so?n th?o ).

12
C?A S? DIALOG
  • Là c?a s? nh?p xu?t trong quá trình th?c thi
    chuong trình, du?c dùng d? nh?p goal ngo?i , nh?p
    các giá tr? do chuong trình yêu c?u trong lúc
    th?c thi ( khi các hàm read du?c g?i ) và thông
    báo k?t qu? .
  • N?u chuong trình ngu?n có goal n?i, sau khi th?c
    thi xong chuong trình này, con tr? s? tr? v? c?a
    s? so?n th?o.
  • Ngu?c l?i, n?u chuong trình không có goal, ngu?i
    s? d?ng s? nh?p goal ngo?i ? c?a s? này. Sau khi
    Prolog th?c hi?n xong goal ngo?i và thông báo k?t
    qu? ra c?a s?, ngu?i s? d?ng ph?i nh?n m?t phím
    b?t k? d? nh?p goal khác.
  • K?t thúc vi?c nh?p goal ? c?a s? này b?ng cách
    nh?n phím ESC d? tr? v? c?a s? so?n th?o.

13
C?A S? MESSAGE
  • Là c?a s? d? trình thông d?ch Prolog thông báo
    l?i và nh?ng thông tin khác nhu dã nói ? trên.

14
VÍ D? MINH H?A
  • Ví d? 1 Th? hi?n cho câu nói
  • Ngu?i ta ai cung ph?i ch?t, Socrates là ngu?i,
    Socrates ph?i ch?t
  • Cài d?t
  • Domains
  • Nguoi,Chetsymbol
  • Predicates
  • La(symbol,symbol)
  • Clauses
  • La(X,chet)-La(X,Nguoi).
  • La(Socrates,Nguoi).
  • Goal
  • La(X,Y), write(X, la ,Y)

15
VÍ D? MINH H?A
  • Ví d? 2 Ki?m tra xem ai là ngu?i có 2 d? v?t
  • Cài d?t
  • Domains
  • Ten,Vatsymbol
  • Predicates
  • Co(Ten,Vat)
  • Clauses
  • Co(Binh,sach).
  • Co(Huy,butmuc).
  • Co(Quan,non).
  • Co(Trung,non).
  • Co(Huy,butchi)
  • Goal
  • Co(X,butmuc), Co(Y,butchi),write(X ,X)

16
VÍ D? MINH H?A
  • Ví d? 3 In ra các s? h?ng t? 1 d?n 100
  • Cài d?t
  • Predicates
  • For(integer,integer)
  • Clause
  • For(I,N)-IltN,write(So hang thu,I),nl,JI1.
  • For(J,N).
  • Goal
  • For(1,100)

17
VÍ D? MINH H?A
  • Ví d? 4
  • Cài d?t
  • Domains
  • Nguoi,chetsymbol
  • Predicates
  • La(symbol,symbol)
  • Clause
  • La(X,chet)-La(X,nguoi).
  • La(Socrates,nguoi).
  • Goal
  • La(X,Y), write(X, la ,Y)

18
BÀI T?P
  • Vi?t chuong trình gi?i phuong trình b?c 1
  • Vi?t chuong trình gi?i phuong trình b?c 2
  • Vi?t chuong trình nh?p 2 s? r?i tính t?ng, hi?u,
    tích, thuong.
  • Vi?t chuong trình tính n!
  • Vi?t chuong trình in ra các s? h?ng c?a dãy
    Fibonacci
Write a Comment
User Comments (0)
About PowerShow.com