Tài liệu LẬP TRÌNH HÀM ppt

27 329 2
Tài liệu LẬP TRÌNH HÀM ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯ TRƯ Ờ Ờ NG Đ NG Đ Ạ Ạ I H I H Ọ Ọ C B C B Á Á CH KHOA CH KHOA KHOA KHOA CÔNG NGH CÔNG NGH Ệ Ệ THÔNG TIN THÔNG TIN LẬP TRÌNH HÀM Võ Võ Trung Trung H H ù ù ng ng Hung.Vo Hung.Vo - - Trung@ud.edu.vn Trung@ud.edu.vn N N ộ ộ i i dung dung   Nguyên Nguyên lý lý l l ậ ậ p p tr tr ì ì nh nh h h à à m m   Ngôn Ngôn ng ng ữ ữ Scheme Scheme   Ki Ki ể ể u u d d ữ ữ li li ệ ệ u u ph ph ứ ứ c c h h ợ ợ p p   K K ỹ ỹ thu thu ậ ậ t t x x ử ử lý lý h h à à m m   C C ấ ấ u u tr tr ú ú c c d d ữ ữ li li ệ ệ u u Ph Ph ương ương ph ph á á p p   Lý Lý thuy thuy ế ế t t – – N N ắ ắ m m đư đư ợ ợ c c m m ụ ụ c c đ đ í í ch ch t t ừ ừ ng ng n n ộ ộ i i dung dung – – C C á á ch ch th th ứ ứ c c ti ti ế ế n n h h à à nh nh – – Nh Nh ữ ữ ng ng v v ấ ấ n n đ đ ề ề c c ầ ầ n n lưu lưu ý ý   Th Th ự ự c c h h à à nh nh – – Th Th ự ự c c h h à à nh nh c c á á c c n n ộ ộ i i dung dung đã đã h h ọ ọ c c – – N N ắ ắ m m đư đư ợ ợ c c c c á á c c k k ỹ ỹ năng năng l l ậ ậ p p tr tr ì ì nh nh   Th Th ự ự c c hi hi ệ ệ n n b b á á o o c c á á o o T T à à i i li li ệ ệ u u tham tham kh kh ả ả o o   Gi Gi á á o o tr tr ì ì nh nh l l ậ ậ p p tr tr ì ì nh nh h h à à m m (P.H. (P.H. Kh Kh á á nh nh ) )   Revised Report on Algorithmic Language Revised Report on Algorithmic Language Scheme, Scheme, Richard Kelsey, Richard Kelsey, Wiliam Wiliam Clinger Clinger & Jonathan Rees & Jonathan Rees   Teach Yourself Scheme in Teach Yourself Scheme in Fixnum Fixnum Days, Days, Dorai Dorai Sitaram Sitaram   PLT PLT DrScheme DrScheme : Programming : Programming Env Env . . Manual, http:// Manual, http:// www.drscheme.org www.drscheme.org / / Ph Ph ầ ầ n n I I Nguyên Nguyên lý lý l l ậ ậ p p tr tr ì ì nh nh h h à à m m Đ Đ ị ị nh nh ngh ngh ĩ ĩ a a ngôn ngôn ng ng ữ ữ l l ậ ậ p p tr tr ì ì nh nh   B B ộ ộ ký ký t t ự ự (character set) (character set)   B B ộ ộ t t ừ ừ v v ự ự ng ng (vocabulary) (vocabulary) – – T T ừ ừ kh kh ó ó a a – – Tên Tên , , đ đ ị ị nh nh danh danh – – Ph Ph é é p p to to á á n n – – . .   C C ú ú ph ph á á p p (syntax) (syntax)   Ng Ng ữ ữ ngh ngh ĩ ĩ a a (semantic) (semantic) L L ậ ậ p p tr tr ì ì nh nh m m ệ ệ nh nh l l ệ ệ nh nh   S S ử ử d d ụ ụ ng ng nguyên nguyên lý lý tinh tinh ch ch ế ế t t ừ ừ ng ng bư bư ớ ớ c c   Khai Khai b b á á o o d d ữ ữ li li ệ ệ u u : : tên tên bi bi ế ế n n - - ki ki ể ể u u   C C á á c c ki ki ể ể u u d d ữ ữ li li ệ ệ u u cơ cơ b b ả ả n n : : s s ố ố , , ký ký t t ự ự . .   Tr Tr ạ ạ ng ng th th á á i i trong trong ( ( b b ộ ộ nh nh ớ ớ , , thanh thanh ghi ghi ) ) thay thay đ đ ổ ổ i i b b ằ ằ ng ng l l ệ ệ nh nh g g á á n n   Tr Tr ạ ạ ng ng th th á á i i ngo ngo à à i i ( ( thi thi ế ế t t b b ị ị ngo ngo ạ ạ i i vi) vi) thay thay đ đ ổ ổ i i b b ở ở i i c c á á c c l l ệ ệ nh nh v v à à o o ra ra   C C á á c c c c ấ ấ u u tr tr ú ú c c đi đi ề ề u u khi khi ể ể n n   D D ễ ễ c c ó ó hi hi ệ ệ u u ứ ứ ng ng ph ph ụ ụ khi khi d d ù ù ng ng CT con CT con Cơ Cơ s s ở ở c c ủ ủ a a c c á á c c ngôn ngôn ng ng ữ ữ h h à à m m (1) (1)   T T í í nh nh khai khai b b á á o o – – Ngôn Ngôn ng ng ữ ữ m m ệ ệ nh nh l l ệ ệ nh nh : : begin begin GetData GetData ( .); ( .); ProcessData ProcessData ( .); ( .); OutputData OutputData ( .); ( .); end end – – Ngôn Ngôn ng ng ữ ữ l l ậ ậ p p tr tr ì ì nh nh h h à à m m (print (print (process (process - - data data (get (get - - data ( .)))) data ( .)))) Cơ Cơ s s ở ở c c ủ ủ a a c c á á c c ngôn ngôn ng ng ữ ữ h h à à m m (2) (2)   Đ Đ ặ ặ c c đi đi ể ể m m – – L L à à NNLT NNLT b b ậ ậ c c cao cao tr tr ừ ừ u u tư tư ợ ợ ng ng hơn hơn – – Í Í t t s s ử ử d d ụ ụ ng ng c c á á c c bi bi ế ế n n to to à à n n c c ụ ụ c c – – Ngư Ngư ờ ờ i i s s ử ử d d ụ ụ ng ng quan quan tâm tâm đ đ ế ế n n vi vi ệ ệ c c đ đ ị ị nh nh ngh ngh ĩ ĩ a a c c á á c c h h à à m m to to á á n n h h ọ ọ c c d d ễ ễ suy suy lu lu ậ ậ n n m m à à không không quan quan tâm tâm đ đ ế ế n n v v ấ ấ n n đ đ ề ề c c à à i i đ đ ặ ặ t t – – Ngôn Ngôn ng ng ữ ữ l l ậ ậ p p tr tr ì ì nh nh h h à à m m d d ự ự a a trên trên vi vi ệ ệ c c t t í í nh nh to to á á n n gi gi á á tr tr ị ị c c ủ ủ a a bi bi ể ể u u th th ứ ứ c c t t ừ ừ bên bên ngo ngo à à i i l l ờ ờ i i g g ọ ọ i i h h à à m m – – M M ộ ộ t t h h à à m m c c ó ó th th ể ể c c ó ó ho ho ặ ặ c c không không c c ó ó đ đ ố ố i i s s ố ố Cơ Cơ s s ở ở c c ủ ủ a a c c á á c c ngôn ngôn ng ng ữ ữ h h à à m m (3) (3)   Đ Đ ặ ặ c c đi đi ể ể m m – – K K ế ế t t qu qu ả ả m m ộ ộ t t h h à à m m không không ph ph ụ ụ thu thu ộ ộ c c v v à à o o th th ờ ờ i i đi đi ể ể m m h h à à m m đư đư ợ ợ c c g g ọ ọ i i f(x f(x ) + ) + f(x f(x ) = 2 * ) = 2 * f(x f(x ) ? ) ? – – Không Không th th ể ể thay thay đ đ ổ ổ i i gi gi á á tr tr ị ị m m ộ ộ t t phân phân t t ử ử c c ủ ủ a a m m ả ả ng ng – – H H ạ ạ n n ch ch ế ế trong trong giao giao ti ti ế ế p p gi gi ữ ữ a a h h ệ ệ th th ố ố ng ng tương tương t t á á c c v v ớ ớ i i HĐH HĐH v v à à NSD NSD [...]... ngữ hàm (3) Các khái niệm cơ bản trong LTH – Hàm (function) – Danh sách (list) – Kiểu (type) – Tính đa kiểu (polymorphism) – Các hàm bậc cao (higher-order function) – Tham đối hoá từng phần (currying) – Các hàm theo kiểu khôn ngoan (lazy-evalation) – Phương trình (equation) Ngôn ngữ Miranda Giới thiệu – Do David Turner phát triển năm 1986 – Trình thông dịch chạy trên Unix – Đặc điểm : thuần tuý hàm. .. chạy trên Unix – Đặc điểm : thuần tuý hàm Định nghĩa hàm – Cú pháp :: -> []= [] Ngôn ngữ Miranda Định nghĩa hàm – Ví dụ : đổi độ Fahrenheit > Celsius celsius :: num -> num celsius f = (f - 32) * 5 / 9 – Sử dụng : celsius 68 > 20 Ngôn ngữ Miranda Định nghĩa hàm – Ví dụ : tính ước số chung lớn nhất gcd (greatest... Miranda – Ví dụ : tìm nghiệm phương trình bậc 2 ptbac2 a b c = error "PT vo nghiem", if delta 1 -1.5 Ngôn ngữ Miranda Danh sách – Đây là cấu trúc dữ liệu quan trọng nhất của các ngôn ngữ lập trình hàm [1, 4, 9, 16] II danh sách gồm... parametrization) – Cho hàm n biến : f(x1, x2, , xn) – Có thể viết lại : x1 >(x2 > (xn >f(x1 xn)) )) – Một hàm nhiều hơn 1 tham đối thì có thể tham đối hoá từng phần triple x = 3 * x hoặc triple = multi 3 Ngôn ngữ Miranda Kiểu và tính đa kiểu (polymorphic) – Các ngôn ngữ hàm thường không sử dụng định kiểu – Cho phép định nghĩa các hàm đa kiểu với lời gọi có các tham đối có các kiểu dữ liệu khác nhau – Ví... false] Ngôn ngữ Miranda Tính hàm theo kiểu khôn ngoan – Thông thường khi tính giá trị một hàm, các tham đối được tính giá trị trước > tính giá trị của hàm mult (fac 3) (fac 4) > mul 6 24 > 144 – Rút gọn biểu thức > đơn giản hơn : rút gọn theo thứ tự áp dụng mult (fac 3) (fac 4) > (fac 3) * (fac 4) – Ví dụ cond b x y = x, if b cond b x y = y, otherwise Ngôn ngữ Miranda Tính hàm theo kiểu khôn ngoan... danh sách 0 : [1, 3, 2, 5] > [0, 1, 3, 2, 5] Ngôn ngữ Miranda Danh sách – Viết lại một số hàm length L = 0, if L = [] length L = 1 + length (tl L), otherwise concat L1 L2 = L2, if L1 = [] concat L1 L2 = L1, if L2 = [] concat L1 L2 = (hd L1) : concat (tl L1) L2, otherwise Ngôn ngữ Miranda Phép so khớp – Một hàm có thể định nghĩa bằng nhiều biểu thức vế phải khác nhau – Cú pháp tổng quát : ... cond b x y = x, if b cond b x y = y, otherwise Ngôn ngữ Miranda Tính hàm theo kiểu khôn ngoan – Ví dụ : tính fac với cond fac n = cond (n = 0) 1 (n * fac (n-1)) > nếu tham đối thứ 3 luôn được tính thì hàm trong Miranda chỉ tính giá trị tham đối khi cần Ex : fac 1 > cond (1=0) 1 (1*fac (1-1)) II gọi fac > if (1=0) then 1 else (1*fac (1-1)) II gọi cond > if false then 1 else (1*fac (1-1)) II tính 1=0 . Á CH KHOA CH KHOA KHOA KHOA CÔNG NGH CÔNG NGH Ệ Ệ THÔNG TIN THÔNG TIN LẬP TRÌNH HÀM Võ Võ Trung Trung H H ù ù ng ng Hung.Vo Hung.Vo - - Trung@ud.edu.vn

Ngày đăng: 13/12/2013, 08:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan