LẬP TRÌNH HÀM - PHẦN 1

Chia sẻ: Le Bang Ha | Ngày: | Loại File: PDF | Số trang:27

0
207
lượt xem
70
download

LẬP TRÌNH HÀM - PHẦN 1

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung: Nguyên lý lập trình hàm ; Ngôn ngữ Scheme ; Kiểu dữ liệu phức hợp ; Kỹ thuật xử lý hàm ; Cấu trúc dữ liệu. Phương pháp: Lý thuyết – Nắm được mục đích từng nội dung – Cách thức tiến hành – Những vấn đề cần lưu ý ; Thực hành – Thực hành các nội dung đã học – Nắm được các kỹ năng lập trình ; Thực hiện báo cáo

Chủ đề:
Lưu

Nội dung Text: LẬP TRÌNH HÀM - PHẦN 1

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN LẬP TRÌNH HÀM Võ Trung Hùng Hung.Vo-Trung@ud.edu.vn
  2. Nội dung Nguyên lý lập trình hàm Ngôn ngữ Scheme Kiểu dữ liệu phức hợp Kỹ thuật xử lý hàm Cấu trúc dữ liệu
  3. Phương pháp Lý thuyết – Nắm được mục đích từng nội dung – Cách thức tiến hành – Những vấn đề cần lưu ý Thực hành – Thực hành các nội dung đã học – Nắm được các kỹ năng lập trình Thực hiện báo cáo
  4. Tài liệu tham khảo Giáo trình lập trình hàm (P.H. Khánh) Revised Report on Algorithmic Language Scheme, Richard Kelsey, Wiliam Clinger & Jonathan Rees Teach Yourself Scheme in Fixnum Days, Dorai Sitaram PLT DrScheme : Programming Env. Manual, http://www.drscheme.org/
  5. Phần I Nguyên lý lập trình hàm
  6. Định nghĩa ngôn ngữ lập trình Bộ ký tự (character set) Bộ từ vựng (vocabulary) – Từ khóa – Tên, định danh – Phép toán – ... Cú pháp (syntax) Ngữ nghĩa (semantic)
  7. Lập trình mệnh lệnh Sử dụng nguyên lý tinh chế từng bước Khai báo dữ liệu : tên biến - kiểu Các kiểu dữ liệu cơ bản : số, ký tự... Trạng thái trong (bộ nhớ, thanh ghi) thay đổi bằng lệnh gán Trạng thái ngoài (thiết bị ngoại vi) thay đổi bởi các lệnh vào ra Các cấu trúc điều khiển Dễ có hiệu ứng phụ khi dùng CT con
  8. Cơ sở của các ngôn ngữ hàm (1) Tính khai báo – Ngôn ngữ mệnh lệnh : begin GetData (...); ProcessData(...); OutputData(...); end – Ngôn ngữ lập trình hàm (print (process-data (get-data (...))))
  9. Cơ sở của các ngôn ngữ hàm (2) Đặc điểm – Là NNLT bậc cao trừu tượng hơn – Ít sử dụng các biến toàn cục – Người sử dụng quan tâm đến việc định nghĩa các hàm toán học dễ suy luận mà không quan tâm đến vấn đề cài đặt – Ngôn ngữ lập trình hàm dựa trên việc tính toán giá trị của biểu thức từ bên ngoài lời gọi hàm – Một hàm có thể có hoặc không có đối số
  10. Cơ sở của các ngôn ngữ hàm (3) Đặc điểm – Kết quả một hàm không phụ thuộc vào thời điểm hàm được gọi f(x) + f(x) = 2 * f(x) ? – Không thể thay đổi giá trị một phân tử của mảng – Hạn chế trong giao tiếp giữa hệ thống tương tác với HĐH và NSD
  11. Cơ sở của các ngôn 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)
  12. 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 Định nghĩa hàm – Cú pháp :: -> []= []
  13. 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
  14. Ngôn ngữ Miranda Định nghĩa hàm – Ví dụ : tính ước số chung lớn nhất gcd (greatest common divisor) gcd :: num -> num gcd a b = gcd (a-b) b, if a>b = gcd a (b-a), if b>a = a, if a=b – Sử dụng : gcd 4 2 --> 2
  15. Ngôn ngữ Miranda – Ví dụ : tính giai thừa fac :: num -> num fac n = 1, if n=0 fac x = x * fac(x - 1), otherwise – Sử dụng : fac 4 --> 24
  16. Ngôn ngữ 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
  17. 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 4 số nguyên [1..10] II danh sách gồm 10 số nguyên ['a', 'b', 'c'] II danh sách gồm 3 ký tự [] II danh sách rỗng weekdays=["Mon", "Tue", "Wed", "Thur", "Fri"] – Dạng nhận biết được : [body I qualifiers] [n | n [1, 3, 5, 7, 9]
  18. Ngôn ngữ Miranda Danh sách – Một số các phép toán trên danh sách product [...] : tính tích fac n = product [1..n] sum [...] : tính tổng resul = sum [1, 3..100] hd [...] : trả về phần tử đầu tiên hd [1, 3, 100] --> 1 tl [...] : trả về danh sách các PT thứ 2 --> tl [1, 3, 2, 5] --> [3, 2, 5] : [...] : chèn 1 PT vào đầu danh sách 0 : [1, 3, 2, 5] --> [0, 1, 3, 2, 5]
  19. 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
  20. 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 : = , – Ví dụ : tính dãy Fibonacci fib 0 = 0 fib 1 = 1 fib (n+2) = fib (n+1) + fib n
Đồng bộ tài khoản