Lập trình hàm tìm hiểu và áp dụng ngôn ngữ lisp giải bài toán “tháp hà nội”

20 1.9K 12
Lập trình hàm tìm hiểu và áp dụng ngôn ngữ lisp giải bài toán “tháp hà nội”

Đ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

Nhằm mục đích hiểu sâu hơn về môn học “Nguyên lý các ngôn ngữ lập trình” và cũng là cơ hội tìm hiểu, tiếp cận cách tư duy khác về lập trình, tiểu luận sẽ trình bày các tìm hiểu và áp dụng ngôn ngữ lập trình hàm vào bài toán thực tế. Cụ thể, tiểu luận sẽ trình bày các khái niệm, đặc trưng của ngôn ngữ lập trình hàm, qua đó chọn ngôn ngữ Lisp làm đối tượng tiếp cận và áp dụng giải bài toán “Tháp Hà Nội” trên đặc trưng của ngôn ngữ.

[...]... 18 Lập trình hàm – tìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” KẾT LUẬN Tiểu luận đã trình bày các vấn đề: Khái niệm, nguyên lý chung các đặc trưng của ngôn ngữ lập trình hàm - Các đặc trưng cơ bản, các định nghĩa, quy tắc hàm cơ bản của ngôn ngữ lập trình Lisp - Giới thiệu bài toán “Tháp Nội”, xây dựng chương trình trên ngôn ngữ Lisp, thực hiện cho kết quả Qua các trình. .. vấn đề phức tạp hơn của lập trình hàm, tuy nhiên đã tạo điều kiện tiếp cận sơ lược về hướng tư duy này, mở đường cho các tiếp cận sâu hơn trong thực tế khi áp dụng các bài toán phù hợp - Nhóm 11 19 Lập trình hàmtìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” TÀI LIỆU THAM KHẢO 1 2 3 4 Bài giảng “Nguyên lý các ngôn ngữ lập trình TS Cao Tuấn Dũng Lập trình hàm – TS Phan Huy Khánh – NXB... việc tìm hiểu nghiên cứu ngôn ngữ lập trình hàm là một phạm vi rất rộng, sự gắn bó chặt chẽ giữa lập trình hàm hàm toán học đòi hỏi việc tiếp cận phải có một kiến thức tốt về toán Về mặt tư duy, lập trình hàm khác biệt khá nhiều so với lập trình mệnh lệnh nên điều này ít nhiều cũng sẽ khó khăn với các lập trình viên đã quen thuộc với ngôn ngữ lập trình mệnh lệnh khi bắt đầu tiếp cận Việc tìm hiểu. .. toán dưới góc độ đệ quy, áp dụng viết chương trình giải trên LISP 3.1 Bài toán “Tháp Nội” Về mặt lịch sử, Tháp Nội được E.Lucas phát hiện từ năm 1883, nhưng chưa rõ vì sao Lucas lại gọi chồng đĩa trong bài toán là Tháp Nội Bài toán thường được lấy làm ví dụ trong các giải thuật đệ quy khi trình bày trong các cuốn sách về lập trình Lời giải tối ưu cho bài toán có thể tìm thấy chính xác trong... cách khai báo biến cục bộ: Nhóm 11 12 Lập trình hàmtìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” - - - Hàm SETQ: (SETQ x E): khai báo biến x, gán giá trị bằng biểu thức E Biến khai báo trở thành biến toàn cục, không mất đi sau khi hàm thực hiện xong > (SETQ x 100) ; khai báo biến x, gán cho biến giá trị 100 Hàm DEFVAR: (DEFVAR x [E]) khai báo biến x gán giá trị bằng biểu thức E hoặc... nhỏ nằm trên đĩa lớn *thapA* có dạng: (1 2 3 4 5 6…) *thapB* là tháp đích, khởi tạo bởi danh sách trống *thapC* là tháp trung gian Nhóm 11 14 Lập trình hàm – tìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” - *count* là biến đếm số lần dịch chuyển - 3.2.2 Hàm thực hiện: Hàm IN_CHI_TIET: có chức năng in lại tình trạng các tháp để có được cái nhìn sau mỗi lần dịch chuyển (defun in_chi_tiet()... giải chính xác vẫn chưa được khẳng định, vì thế trong phạm vi tiểu luận, chúng ta sẽ xem xét bài toán với ba cọc đĩa Nhóm 11 13 Lập trình hàm – tìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” Bài toán: Có n đĩa kích thước nhỏ dần xếp chồng lên nhau trên một cọc (được gọi là cọc nguồn A), đĩa lớn ở dưới, đĩa nhỏ ở trên Ngoài cọc nguồn còn có 02 cọc trống khác được gọi là cọc đích (B) và. .. sang C C sang B, toàn bộ quá trình là hữu hạn bước chuyển, đến một thời điểm nào đó giải thuật sẽ áp dụng với n = 1 Bỏ qua việc đi sâu phân tích vào bài toán, ở đây ta giới hạn ở việc nhìn ra lời giải đệ quy của bài toán áp dụng xây dựng chương trình trên Lisp để thực hiện 3.2 Lập trình trên Lisp Chương trình được xây dựng trên Lisp có định nghĩa 04 hàm để thực hiện chức năng đệ quy trình bày... ; push phần tử vào danh sách tương ứng (if (eq thapDich 'A) (push tg *thapA*)) (if (eq thapDich 'B) (push tg *thapB*)) (if (eq thapDich 'C) (push tg *thapC*)) ; in thông tin chuyển đĩa (format t "Chuyen dia ~A tu thap ~A sang thap ~A: " tg thapNguon thapDich) Nhóm 11 15 Lập trình hàm – tìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” (in_chi_tiet) ) ) - ) Hàm DE_QUY: là hàm đệ quy thực... chuyen: ~A" *count*) ) ) - Chương trình bắt đầu thực hiện với lời gọi: > (THAP_HA_NOI) 3.3 Kết quả chạy ứng dụng Nhóm 11 16 Lập trình hàm – tìm hiểu áp dụng ngôn ngữ Lisp giải bài toán “Tháp Nội” Chương trình thực hiện tốt, kiểm tra đã thấy chạy đúng thuật toán Trong trường hợp tăng số đĩa thì số lần di chuyển tăng nhanh theo đúng công thức (2so_dia - 1) Lời giải trong trường hợp 5 đĩa: So dia: . 11 6 Lập trình hàm – tìm hiểu và áp dụng ngôn ngữ Lisp giải bài toán “Tháp Hà Nội” 1.5. Bản chất ngôn ngữ lập trình hàm Mục đích của việc thiết kế ngôn ngữ lập trình hàm là mô phỏng các hàm toán. qua và thậm Nhóm 11 2 Lập trình hàm – tìm hiểu và áp dụng ngôn ngữ Lisp giải bài toán “Tháp Hà Nội” chí không biết đến các ngôn ngữ lập trình dạng khác, như lập trình logic hay lập trình hàm. Nhằm. LTML Nhóm 11 3 Lập trình hàm – tìm hiểu và áp dụng ngôn ngữ Lisp giải bài toán “Tháp Hà Nội” 1. TỔNG QUAN VỀ LẬP TRÌNH HÀM Trong phần tổng quan về lập trình hàm, tiểu luận sẽ trình bày sơ lược

Ngày đăng: 12/06/2014, 11:08

Từ khóa liên quan

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

Tài liệu liên quan