bao cao cuoi ky II

43
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Ж KHOA TOÁN – CƠ – TIN _____________ Bài thu hoạch Tổng kết các bài báo cáo nhóm Giảng viên: Nguyễn Thị Bích Thủy Sinh viên : Nguyễn Thị Linh Lớp : K52A3 TT Ứng Dụng 1

description

Đây là bài báo cáo cuối kỳ môn kỹ thuật lập trình,khoa toan tin cơ, ĐH Khoa Học Tự Nhiên đạt 10 điểm của tui

Transcript of bao cao cuoi ky II

Page 1: bao cao cuoi ky II

ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

ه Ж هKHOA TOÁN – CƠ – TIN

_____________

Bài thu hoạchTổng kết các bài báo cáo nhóm

Giảng viên: Nguyễn Thị Bích ThủySinh viên : Nguyễn Thị LinhLớp : K52A3 TT Ứng Dụng

Hà Nôi, Năm 2009

1

Page 2: bao cao cuoi ky II

Danh sách các nhóm:1. Nguyễn Văn Đức Phong cách lập trình2. Bách-Phượng-Mai Phân tích bài toán theo modul3. Nghĩa-Hưng-Học Đặc tả hình thức trong phân tich hệ thống4. Nguyệt-Sính-T.T.Trang Cấu trúc dữ liệu và cách sắp xếp(Dịch )5. Thơm-T.T.Hiền-Dung Cây nhị phân6. Nhung-Thủy Thuật toán đồ thị (Dịch sách)7. Đạt-Hiếu-Đ.Q-Hưng Thuật giải Heuristic và phương pháp tìm

kiếm.8. P.T.Hiền-Thư-Vân Thuật toán tìm kiếm trên đồ thị9. Chiến-Hoàng-N.K.Anh Quy hoach động10. Lê.T.Long-Hiệp Kỹ thuật chia để trị (dịch sách)11. Liên-Hiên-Hà Chia để trị12. Tình-Thay-Thể Bảng băm13. N.T.Linh-N.Đ.Giang-T.K.Anh Tổng quan kỹ thuật đệ quy14. Quyền-Phú-Thành Kỹ thuật sắp xếp trong lập trình15. Cường-L.T.Trang-B.K.Linh Bài toán liệt kê16. K.Dương-N.TrungLâm-Thắng Thủ thuật sử dụng thư viện đồ họa17. Hạnh-Đỗ.T.T.Hiền-Lâm Các phương pháp lập trình18. Nhân-Hoa-Sơn Lập trình hướng đối tượng19. Tuấn-Thiện-Xuất Kiểm chứng chương trình20. Lê.N.Duy-T.V.Tài Kiểm chứng chương trình21. L.V.Hùng-Đ.Long-N.V.Hùng Quan máy học22. Phạm Thanh Hòa Lập trình điều khiển trên máy CNC23. Ngọc-N.P.Long-L.Đ.Long Ứng dụng ngắt trong lập trình nhúng

2

Page 3: bao cao cuoi ky II

MỤC LỤC 1

Phần 1:Phong cách lập trình.........................................................5

Phong cách lập trình (Nguyễn Văn Đức)....................................................5

Phần 2:Các giai đoạn phần mềm..................................................7

1 Giai đoạn phân tích bài toán...................................................7

1.1 Phân tích bài toán theo Modul ............................................................7

2 Giai đoạn thiết kế bài toán.......................................................8

2.1 Các công cụ thiết kế...............................................................................8

2.2 Các ngôn ngữ đặc tả...............................................................................8

2.2.1 Đặc tả hình thức trong phân tích hệ thống..........................................8

3 Giai đoạn viết mã lệnh...........................................................10

3.1 Tính chất dữ liệu.................................................................................10

3.1.1Cấu trúc dữ liệu và cách sắp xếp (Dịch )...............................................10

3.1.2 Cây nhị phân.........................................................................................11

1 Trên đây là mục lục bản báo cáo, em đã cố phân loại đẻ có cái nhì khái quát về các bài báo cáo của các nhóm

3

Page 4: bao cao cuoi ky II

3.2 Thuật toán ..........................................................................................12

3.2.1 Thuật toán đồ thị(dich)........................................................................12

3.2.2 Thuật giải Heuristic và phương pháp tìm kiếm................................13

3.2.3 Thuật toán tìm kiếm trên đồ thị..........................................................14

3.3 Kỹ thuật lập trình................................................................................16

3.3.1 Quy hoach động....................................................................................16

3.3.2 Kỹ thuật chia để trị (dịch sách)...........................................................17

3.3.3 Kỹ thuật chia để trị..............................................................................17

3.3.4 Bảng băm..............................................................................................18

3.3.5 Tổng quan kỹ thuật đệ quy.................................................................19

3.3.6 Kỹ thuật sắp xếp trong lập trình........................................................20

3.3.7 Bài toán liệt kê......................................................................................21

3.3.8 Thủ thuật sử dụng thư viện đồ họa....................................................22

3.4 Phương pháp lập trình.......................................................................23

3.4.1 Các phương pháp lập trình.................................................................23

3.4.2 Lập trình hướng đối tượng..................................................................24

4 Kiểm chứng.............................................................................25

4.1 Kiểm chứng chương trình(nhóm Tài-Duy …)..................................25

4.2 Kiểm chứng chương trình(nhóm Tuấn …).......................................25

5 Ứng dụng.................................................................................26

5.1 Lập trình điều khiển trên máy CNC..................................................26

5.2 Quan máy học.....................................................................................27

5.3 Ứng dụng ngắt trong lập trình nhúng...............................................28

4

Page 5: bao cao cuoi ky II

5

Page 6: bao cao cuoi ky II

Tổng kết các bài báo cáoTrước thế kỷ của công nghệ thông tin bùng nổ rộng khắp, nhu cầu sử dung máy

tính ngày càng tăng lên, đòi hỏi ngày càng nhiều các ứng dụng chương trình. Vì vậy, sự ra tăng số lương các phần mềm ứng dụng ngày càng nhiều, và thu hút nhiều người làm việc trong lĩnh vực này. Nhu cầu học tập cũng tăng lên với nhiều môn học. Tuy nhiên, để có thể lập trình tốt chúng ta không thể nào không học và tìm hiểu về Kỹ Thuật Lập Trình

Trong học kỳ qua, dưới sự nỗ lực học tập và tìm hiểu của bản thân, em và các bạn đã tìm hiểu được nhiều kỹ thuật để học và chia sẻ cho nhau.Dưới đây là bản tổng kết về kết quả làm việc của các bạn và sự thu nhận kiến thức của bản thân.Phần 1:Phong cách lập trình

I. Bài báo cáo: Phong cách lập trình NTH: Nguyễn Văn Đức

a. Tóm tắt báo cáo:Bài báo cáo có những nội dung chính sau:

Tên hàm hay tên biến Tên hàm: nêu cách đặt tên và yêu cầu của tên( nhất quán...) Tên biến: cách đặt tên

Biểu thức và phát biểuĐể tạo sự tường minh cho biểu thức nên: Canh chỉnh lề, dùng dấu ngoặc để

tránh tối nghĩa, đơn giản cụ thể hóa biểu thức và mang tính tự nhiên Tính nhất quán và các đặc ngữ

Tính nhất quán giúp ta xây dựng được các chương trình tốt, sáng sủa. Để tạo được sự nhất quán : canh chỉnh lề, dùng dấu ngoặc móc, đặc ngữ

Các số tối nghĩa: Trong phần này nêu được khái niệm số tối nghĩa, cách đặt tên và các quy tăc

hạn chế dùng số tối nghĩa Chú thích.

Khái niêm chú thích: Quy tắc

Không chú thích những điều hiển nhiên. Chú thích cho hàm và dữ liệu toàn cục. Đừng chú thích những đoạn mã nguồn dở mà hãy viết lại nó. Đừng phủ nhận mã nguồn. Rõ ràng, không gây nhầm lẫn.

Vì sao phải lo lắng về phong cách lập trình? Mã nguồn chương trình được viết tốt sẽ dễ đọc và dễ hiểu hơn, hầu như lỗi ít hơn, và giúp chương trình có kích thước nhỏ hơn so với mã nguồn được chắp vá cẩu thả và không hề trau chuốt. Quan điểm cơ bản tạo phong cách lập trình tốt là thói quen

b. Nhận xétĐọc bài báo cáo tôi có nhân xét sau:

Đề tài: Phong cách lập trình luôn đi kèm với phong cách cá nhân, luôn thể hiện “cái tôi” của người lập trình. Tuy nhiên, không phải vì thế mà nó không có những quy tắc chung mà hơn thế, nhờ những quy tắc đó mã nguồn sẽ sáng

6

Page 7: bao cao cuoi ky II

sủa, dễ hiểu, ít lỗi và dễ sửa chữa vì thế luôn là một vấn đề cần được chú ý. Dẫu vậy, rất ít người, đặc biệt là những người mới bước vào nghề lập trình để ý tới. Vì thế, theo tôi, đề tài này rất lý thú, đáng lưu ý; bài báo cáo này có thể giúp bạn có một phong cách lập trình chuyên nghiệp, nhưng cũng mang đậm phong cách cá nhân.

Ưu điểm: Qua bản báo cáo, về cơ bản người đọc có thể hình dung một phần về phong

cách lập trình làm sao cho code được sáng sủa, dễ hiểu. Nêu được mục đích, ý nghĩa sự cần thiết của phong cách lập trình

Nhược điểm Bản báo cáo không cho thấy được cái nhìn khái quát về phong cách lập trình

giúp lập trình hiệu quả. Bài báo cáo rất sơ sài, nhiều vấn đề cần được bổ sung, thêm mới Trình bày rất lủng củng, lộn xộn thiếu sự rõ ràng,

VD: Nhìn từ mục lục ta thấy: sau khi người viết nói rất nhiêu về quy tắc viết: hàm, biến, biểu thức v.v.v. cuối cùng đề cập đến vì sao phải lo lắng về phong cách lập trình. Trong khi đó, vấn đề này nên được nói ngay từ đầu

Thêm vào đó, đề tài là phong cách lập trình nhưng ngay khi bắt đầu bài báo cáo đã đề cập luôn đến: hàm, biến, biểu thức…Khiến người đọc, đặc biệt là người mới học, có thể thắc mắc không hiểu sự liên quan gì của những vấn đề này tới phong cách lập trình Trong nhiều phần, nội dung trong từng tựa đề không thấy được sự liên quan

rõ ràng hay làm sáng tỏ tựa đề, những tiểu ý để lẫn lộn với ý lớn khiến người đọc không hiểu phần này định làm sáng tỏ ý lớn nào, hoặc hai phần của một ý phải viết liền thì chia ra như hai ý riêng biệt.VD: Trong phần, các số tối nghĩa có chia làm ba ý lớn.

Đặt tên cho các số tối nghĩa. Dùng các hằng số dạng ký tự, không dùng dạng số

nguyên. Dùng chính ngôn ngữ đó để tính toán kích thước của

đối tượng.Trong khi đó, hai nội dung cuối cùng làm sáng tỏ cách hạn chế dùng số tối

nghĩa. Vì thế nên cho hai ý này thành ý nhỏ trong ý lớn: các quy tắc hạn chế dùng số tối nghĩa.

Bổ sung . Bài báo cáo nên được trình bày và đề cập đến nội dung sau:

a) Vì sao phải lo lắng về phong cách lập trình: Mục đích của phong cách lập trình Lợi ích của việc áp dụng các quy tắc lập trình

b) Các yếu tố của phong cách lập trình tốt:oTrình bày mã nguồn:

Quy tắc lùi đầu dòng Quy tắc viết code theo hàng dọc Quy tắc xuống dòng, khoảng trống Quy tắc dùng tab

7

Page 8: bao cao cuoi ky II

Quy tắc chú thíchoQuy tắc đặt tên, logic và các kỹ thuật cao

Cách nhận biết kiểu và tên hàm người lập trình định nghĩa: hàm, thủ tục, tên biến, biểu thức và phát biểu, các số tối nghĩa, Cách dung giá trị bolean trong câu trúc Cách viết câu lênh so sánh tối ưu Cách viết cấu trúc vòng lặp tối ưu

oPhong cách lập trình nên đảm bảo: Tính nhât quán.v.v. Trong mỗi phần đề cập tới nên nêu ra: khái

niệm, quy tắcVD: trong Biểu thức và phát biểu:

Khái niệm về biểu thức và phát biểu Cách trình bày và quy tắc thể hiện biểu thức…

<Nguồn Wikimedia>

Phần 2:Các giai đoạn phần mềm

I. Giai đoạn phân tích bài toán I.1. Bài báo cáo: Phân tích bài toán theo modul

NTH:Nguyễn Quang Bách-Dương Thị Phương Mai-Nguyễn Thị Ánh Phượng

I.1.1.Tóm tắt:nội dung chính:Trong thực tế, để giải quyết những bài toán lớn, chương trình phức tạp, do đó kỹ

thuật phân tích bài toán theo module ra đời. Khái niệm: kĩ thuật thiết kế phần mềm chia chương trình thành những thành phần

riêng biệt (những module) được nối vào chương trình chính thông qua các giao diện

Triển khai bài toán theo module: Phân tích bài toán xác định các module Xác định input và ouput cho từng module Tạo mối liên hệ giữa các module Liên kết tất cả các module với chương trình chính :

Đánh giá kỹ thuậto Ưu điểm

Hạn chế và dễ phát hiện lỗi Giữ được điều khiển trên từng hàm Chương trình có cấu trúc dễ viết, dễ bảo dưỡng

o Nhược điểm Dễ làm mất tính thống nhất trong nhóm Mất nhiều thời gian để sửa chữa chuong trình.

o Kỹ thuật liên quan: Chia để trị và lập trình hướng đối tượng(OOP)I.1.2. Nhận xét:

8

Page 9: bao cao cuoi ky II

Về đề tài : Đây là một đề tài khá quen thuộc, tương đối gần gũi. Nội dung khá cơ bản, không có gì nổi bật, khác lạ. Về ưu điểm : o Nổi bật được các bước triển khai bài toán theo modulo Nêu được ưu, nhược điểm của kỹ thuậto Trình bày khá thoáng, dễ đọc, ví dụ đơn giản luôn lấy ra ngay khi phân tich một vấn đề giúp nắm bắt nội dung Về nhược điểm: o Đôi chỗ trình bày rất lủng củng, lộn xôn, tách và ghép ý lung tung, không làm nổi bật được các ý chính, khó khăn trong việc thu nhận thông tin : VD phần nhược điểmo Việc đề cập các kỹ thuật liên quan(cụ thể là KT OOP) nhưng chưa cho thấy sự liên quan của KT đó với việc phân tích bài toán theo modul. Mặt khác OOP một kỹ thuật lập trình hoàn toàn độc lập so với kỹ thuật phân tích bài toán theo Module.o Chưa đưa ra được kỹ thuật sử dụng các biến riên, biến cục, để tạo sự thống nhất trong các modul. Hay phạm vi áp dụng, ngôn ngữ dùng…o Chưa đưa ra được cách sử dụng kỹ thuật modul trong một project lớn Bố sung : o Cần nói rõ hơn về các kỹ thuật liên quano Bổ sung thêm về vấn đề sử dụng hàm biến , cách làm việc với nhiều Modul

trên nhiều tệp rời rạc của một project lớn.o Nói thêm về vấn đề phạm vi sử dụng Lập trình Modul: ngôn ngữ chấp nhận một cách chính thức khái niệm Modul gồm có: IBM/360 Assembler, COBOL, RPG và PL/1, Ada, D, F, Fortran, Haskell, Pascal(vài phiên bản ML, Modula-2, Erlang, Perl, Python and Ruby. Hệ thống IBM (aka AS/400 and iSeries) cũng sử dụng Modules trong RPG, COBOL và CL, khi lập trình trong môi trường ILE

II. Giai đoạn thiết kế bài toán II.1. Bài báo cáo: Ngôn ngữ đặc tả UML (Unifield Modeling Language )

NTH: Lê Văn Hưng-Nguyễn Tiến Nghĩa-Vữ Thái HọcII.1.1.Tóm tắt: Trong bài báo cáo này ta nắm đượca. Sự ra đời của ngôn ngữ UML: b. Khái niệm UML

UML là một ngôn ngữ mô hình hoá thống nhất có phần chính bao gồm những ký hiệu hình học, được các phương pháp hướng đối tượng sử dụng để thể hiện và miêu tả các thiết kế của một hệ thống. Nó là một ngôn ngữ để đặc tả, trực quan hoá, xây dựng và làm sưu liệu cho nhiều khía cạnh khác nhau của một hệ thống có nồng độ phần mềm cao. UML có thể được sử dụng làm công cụ giao tiếp giữa người dùng, nhà phân tích, nhà thiết kế và nhà phát triển phần mềm.

Ngôn ngữ mô hình hoá bao gồm các ký hiệu và một tập các quy tắc:Syntactic (Cú pháp) Semantic (Ngữ nghĩa) và Pragmatic,

c. Các thành phần chủ yếu của ngôn ngữ UML

9

Page 10: bao cao cuoi ky II

Hướng nhìn (view): Khái niệm và các loại hướng nhìn (Use case, logic...) Biểu đồ (diagram): Khái niệm và các loại biểu đồ (Use case, lớp…) Phần tử mô hình hóa (model element): Cơ chế chung:

d. Khả năng mở Rộng UML và sự phát triển công cụ trợ giúp trong UMLe. Ứng dụng vào quá trình xây dựng phần mềm(4 giai đoạn và thử nghiệm)

II.1.2. Nhận xét: Đề tài :

Mặc dù UML đã xuất hiện từ lâu với những ứng dụng hiệu quả của nó đến nghành công nghệ phần mềm, nhưng không phải ai cũng biết đến, đặc biệt là các bạn sinh viên, Vì thế, đây là một đề tài khá mới mẻ, lý thú, có sự hấp dẫn cao Ưu điêm của bài báo cáo:

Bài báo cáo được viết khá toàn diện, cơ bản và chi tiết về UML, giúp người đọc có sự hiểu biết khá đầy đủ về UML.

Trình bày tương đối rõ ràng, mạch lạc, khoa học. Lý thuyết đi kèm hình ảnh minh họa giúp người đọc dễ nắm bắt nội dung.

Ví dụ đưa ra và cách phân tích ví dụ khá tôt, phản ánh và củng cố được nội dung lý thuyết.

Nhược điểm : Chưa đưa ra được sự khác biệt giữa UML và sự thiết lập biểu đồ của một hệ thống. Chưa đưa được nhận xét về ưu, nhược điểm của ngôn ngữ UML, và so với các ngôn ngữ khác,

Bổ sung : bài báo cáo nên cần được bổ sung thêm để có kiến thức hoàn chỉnh . Trong thành phần chủ yếu của ngôn ngữ UML, phần biểu đồ: có thể nói UML (2.0) có 13 kiểu đồ thị với ba loại khác nhau:

Biểu đồ tĩnh hay cấu trúc (Structure diagrams): gồm biểu đồ lớp; đối tượng; thành phần; biểu đồ cấu trúc hỗn hợp; biểu đồ khai triển; biểu đồ gói Biểu đồ động(Behavior diagrams): Biểu đồ hoạt động; Biểu đồ trạng thái; Biểu đồ Use case. Biểu đồ tương tác(Interaction diagrams): Biểu đồ giao tiếp; Biểu đồ miêu tả tương tác; Biểu đồ trình tự; Biểu đồ định giờ.

Bổ sung thêm phần nhược điểm hay sự thiếu xót của UML: Khả năng hình dung, tưởng tượng yếu (Weak visualization) Khó khăn trong việc học và tiếp thu (Problems in learning and adopting) Chỉ có duy nhất một mã đồng bộ với mã đó (Only the code is in sync with

the code) Tích trữ lại sự mở rộng và sự mở rộng kết hợp ( mà không dùng đến)

(Cumulative Impedance/Impedance Mismatching) Có sự mâu thuân về mặt thẩm mỹ (Aesthetically Inconsistent) Cố gắng đem đến tất cả mọi thứ cho tất cả các nhà lập trình

(Tries to be all things to all programmers) Bổ sung thêm phần ưu điểm UML:

Cung cấp cho người sử dụng một ngôn ngữ mô hình hoá trực quan có sẵn và gợi tả

10

Page 11: bao cao cuoi ky II

Cung cấp các kỹ thuật chuyên môn mở rộng để mở rộng các khái niệm cốt lõi (core concepts)

Độc lập với các ngôn ngữ lập trình riêng biệt (particular) và các tiến trình phát triển

Những điểm ngoài phạm vi UML UML không là một phương thức UML không xác định/hướng vào (address) toàn bộ quá trình UML không quy định cách tiếp cận vào việc xác định các lớp,các phương

thức và phân tích các mô hình... UML không bao gồm bất kỳ quy tắc thiết kế hay cách thức giải quyết vấn

đề nào<Nguồn Wikimedia>

III. Giai đoạn viết mã lệnh III.1. Bài báo cáo: Cấu trúc dữ liệu và cách sắp xếp (Dịch )

NTH: Nguyễn Thị Nguyệt, Bùi Thị Sính, Trần Thị Thu TrangII.1.1. Tóm tắt: Bài dịch này nói về nội dung chính sau

a. Cấu trúc dữ liệu và cách phân loại Những điểm mấu chốt trong chương :

Xây dựng các thuật toán qua các cấu trúc dữ liệu(CTDL) để có một cấu trúc cân đối và một sự thực thi tốt. Lựa chọn cần phải kỹ càng, tránh nhầm CTDL cho công việc Sự sắp xếp, phân loại nằm ở trung tâm của nhiều thuật toán khác nhau. Sự sắp xếp có thể được minh họa chủ yếu bằng các mô hình thiết kế thuật toán. Kĩ thuật cấu trúc dữ liệu, chia để trị, thuật toán ngẫu nhiên.v,v,v.

Các loại dữ liệu chủ yếu Containers: Khái niệm, chức năng, thao tác căn bản và các loại phổ biến

của Containers Dictionary: Khái niệm, chức năng, thao tác căn bản của Dictionary Binary Search Trees (cây tìm kiếm nhị phân( BST)): Cấu trúc BTS và

thuật toán dung đệ quy tìm kiếm trong cây nhị, và nhiệm vụ của BST (hỗ trợ tất cả các thao tác Dictionary nhanh chóng)

Priority Queues ( Hàng đợi ưu tiên): Ưu điểm, và nhiệm vụ của Priority Queues:chèn, tìm hoặc xóa giá tri max, minCấu trúc dữ liệu chuyên sâu (specializer data structeres)

Cấu trúc dữ liệu tập hợp ( Set data structures) Cấu trúc dữ liệu kiểu hình học(Geometric data structures) trúc dữ liệu đồ họa( Graph data structures) Cấu trúc dữ liệu kiểu xâu (Strings data structures)

b. Cách sắp xếp và phân loại: Lý do cần sắp xếp(4 lý do)Ứng dụng của sắp xếp: tìm kiếm, cặp gần nhau nhất, phần tử đơn nhất. sự

phân phối thường xuyên, sự lựa chọn, những vỏ lồi

11

Page 12: bao cao cuoi ky II

Phương pháp sắp xếp: Cấu trúc dữ liệu, Chèn tăng, chia để trị, Kĩ thuật BUCKETING, Thuật toán ngẫu nhiênII.1.2. Nhận xét Ưu điểm :

Bản dịch tương đối sát nghĩa, nêu được nội dung của phần dịch, biết chọn nghĩa từ sao để đảm bảo đúng thuật ngữ khoa học. Có thể nhận thấy người dịch có am hiểu hoặc cố gắng tìm tòi các vấn đề liên quan đến nội dung để dịch chuẩn.

Trình bày bản dich và bài báo cáo tương đối tốt, dễ đọc, dễ hiểu nội dung phần dịch

Nhược điểm : Vân còn một số chỗ dịch lủng củng, không thoát ý, dịch theo kiểu word by

word, nên có thể gây đến nội dung dich không đúng Vì đây là bản dich nên tôi chỉ khuyên rằng nên dịch nhiều hơn và tìm hiểu về nội

dung dich sẽ có bản dich tốt hơnCó thể nói đây là bản dịch tốt nhất trong tât cả các nhóm tham gia dich bài

III.2. Bài báo cáo: Cây nhị phânNTH: Trần Thị Thơm- Trịnh Thị Hiền- Đỗ Thùy Dung

II.2.1. Tóm tắt: a. Cây

Định nghĩa: Cây là cấu trúc dữ liệu có thứ bậc, lưu trữ 1 tập các phần tử, mỗi phần tử có 1 giá trị và trừ gốc, nó được trỏ và có thể trỏ đến 1 hay nhiều phần tử khác.

Một số khái niệm cơ bản về cây: bậc của một node,của một cây,node gốc,node lá, node nhánh, mức, chiều dài, chiều cao của cây

b. Cây nhị phân( Binary Tree-BT) Định nghĩa: một dạng của cấu trúc cây mà mọi node trên cây chỉ có tối đa 2 node con. Một số định nghĩa khác về cây nhị phân: theo DS liên kết, DS tuyến tính Đặc tính quan trọng của cây nhị phân: hai cây nhị phân tuơng tự và cây nhị phân tương đương Một số dạng đặc biệt của cây nhị phân: Biểu diễn cây nhị phân: theo DS liên kết, DS tuyến tính Các thao tác trên cây nhị phân: Cấp phát bộ nhớ,giải phóng node, tạo node,xoá node, khởi tạo cây nhị phân, kiểm tra tính chất cây nhị phân

c. Phép duyệt cây nhị phân Là phương pháp thăm các node có hệ thống chỉ một lần. Có 3 phép duyệt cây

nhị phân đó là: Duyệt theo thứ tự trước ( Preorder Traversal); Dưyệt theo thứ tự giữa ( Inorder Traversal); Duyệt theo thứ tự sau ( Postorder Traversal);

d. Nhận xét về cây nhị phân

12

Page 13: bao cao cuoi ky II

Ưu điểm: trong một số trường hợp dùng cây nhị phân tìm kiếm nhanh hơn danh sách tuyến tính

Nhược điểm: dung đến thuât toán đệ quy III.2.2. Nhận Xét

Về đề tài : Đây là một đề tài khá quen thuộc, gần gũi, được nhiều người biết đến Ưu điểm:

Là một bài báo cáo khá đầy đủ và chi tiết về cây nhị phân. Cho thấy cái nhìn toàn diện về cây nhị phân. Nhược điểm : Trình bày thiếu khoa học, lộn xộn: phân chia đề mục không rõ ràng Trong mốt số đề mục chưa nói tới nội dung cần đề cập => gây cảm giác dường như đề mục và nội dung không liên quan đến nhau Đặc tính quan trọng của cây nhị phân: nêu khái niệm về hai cây nhị phân tuơng tự và cây nhị phân tương đương. Nội dung và đề mục dường như không liên quan. Phần ưu, nhược điểm, không rõ ràng, chính xác, nói đúng hơn là nội dung phần này chưa đi đến ý cần nói, mới chỉ phần rìa của nó

Trong phần ứng dụng của cây nhị phân, nêu lên cây mã tiền tố ,cây biểu thức là chưa chính xác, vì hai loại cây này là một loại của cây nhị phân, mà không đề cập gi đến ứng dụng của cây nhị phân cả.

Bổ sung Bổ sung thêm phần mục lục, sặp xếp lại các đề mục:o Phân định nghĩ và một số định nghĩa khác về cây nhị phân nên để gần nhau chứ không để cách quãng bởi các đề mục kháco Trong các thao tác trên cây nhị phân: nên viết như sau chứ không nên để chúng nằm ngang hang nhau(lấy ví dụ phần xoá)

1) Xóa node: a. Xóa node gốcb. Xóa node con bên trái c. Xóa node con bên phải

Có thể bổ sung thêm các loại cây nhị phâno Cây mã Huffmano Cây biêu thứco Cây mã tiền tố.v.v.

Nên viết lai và bổ sung về ưu và nhược điểm. của cây nhị phân

Nên viết lại và bổ sung thêm ứng dụng của cây nhị phân.o Tìm kiếm.o Ứng dụng trong tính toán o Ứng dụng trong kỹ thuật mật mã

III.3. Bài báo cáo: Thuật toán đồ thị

13

Page 14: bao cao cuoi ky II

NTH: Trần Thị Thanh Nhung-Nguyễn Thu ThủyII.3.1. Tóm tắt:

Nội dung cần nắm được: Đồ thị có thể mô hình hóa các cấu trúc, mối quan hệ đa dang và rộng rãi. Được thiết lập một cách đúng đắn, hầu hết các ứng dụng của đồ thị có thể giảm bớt thuộc tính chuẩn và dùng các thuật toán phổ biến, Tìm kiếm theo chiều ngang và chiều sâu cung cấp cho thiết bị máy duyệt các đỉnh và cạnh của đồ thị. Chứng tỏ giải thuật đồ thị hiệu quả và đơn giản

Đồ thị bạn bè( Friendship graph)Thông qua bài toán Friendship graph, nói đến các loại đồ thị(vô hướng, có

hướng, trọng sô) , mảng liên thông, thành phần liên thông, bậc của một đỉnh, đồ thị con, chu trinh, chu trinh đơn, chu trinh halminton

Cấu trúc dữ liệu cho đồ thị: dùng danh sách kề và ma trận kề. So sánh 2 cấu trúc này với nhau

Duyệt đồ thị: Duyêt theo chiều sâu và chiều rộng: Ứng dụng đồ thị :

Mảng liên thông Tìm cây và chu trình. Đồ thị có sắc số bằng 2. Phân loại theo hình học Topo. Đỉnh khớp.

Vấn đề mô hình hóa đồ thị Các bài toán đồ thị điển hình: cây bao trùm nhỏ nhất( TT Prim và kruskas và

đường đi ngắn nhất( TT Dijksas- Flow)II.3.2.Nhận xét Ưu điểm Về cơ bản, bản dich nói chung là được, thể hiên được nội dung phần dịch Nhược điểm

Người dịch mới chỉ đơn thuần dịch theo kiểu word by word, nhiều chỗ cho thấy chưa hiểu hết nội dung, kiến thức ngoại ngữ chưa đủ: chưa nắm vững từ loại, các kiểu từ ghép trong câu…, văn phong (lựa chọn nghĩa không hợp) nên nhiều chỗ dich chưa chính xác, không thoát ý, tối nghĩa.

Trình bày báo cáo chưa đạt phong cách văn bản Bổ sung

Một lời khuyên dành cho nhóm là nên tìm thêm tài liệu thông tin để hiêu nội dung phân dich, trau dồi kiến thức để lựa chọn nghĩa từ và biêt loại từ để dịch cho chuẩn xác.

III.4. Bài báo cáo: Thuật giải Heuristic và phương pháp tìm kiếmNTH: Đậu Quang Hưng-Đỗ Tiến Đạt-Nguyễn Hữu Hiếu

III.4.1. Tóm tắt Các nguyên lý cơ bản của giải thuật Heuristic:oKhái niệm thuật giải Heuritic: một sự mở rộng khái niệm thuật toán

14

Page 15: bao cao cuoi ky II

oXây dựng thuật giải Heuristic cần dựa vào các nguyên lý cơ bản: nguyên lý vét cạn thông minh, nguyên lý tham lam Greedy, hàm Heuristic, nguyên lý thứ tự

Các phương pháp tìm kiếm Heuristic.o Cấu trúc chung của bài toán tìm kiếm: tập hợp trạng thái-nút đồ thịo Tìm kiếm chiều rộng (BFS)o Tìm kiếm chiều sâu (DFS)o Tìm kiếm leo đồi:

Hàm Heuristic:là một hàm xác định ước lượng chi phí để biến đổi từ trạng thái này sang trạng thái khác Tìm kiếm leo đồi đơn giản:một kiểu DFS nhưng không sử dụng kĩ thuật quay lui mà là một hàm Heuristic để tính toán lựa chọn trạng thái tiếp theoTư Tưởng: chọn con đường tốt hơn đầu tiên thấy để đi. Leo đồi dốc đứng:chọn con đường tốt nhất trong tất cả con đường tốt hơn để đi Nhược điểm của tìm kiếm leo đồi:có thể không tìm ra kết quả do không gian tìm kiếm: có điểm cực đại địa phương hoặc có đoạn đơn điệu ngang

o Tìm kiếm ưu tiên tối ưu (BFS): nêu lên tư tưởng và các cài đặt BFS Thuật giải AT: là phiên bản của BFS với độ tốt của trạng thái là tổng chiều dài đã đi từ trạng thái bắt đầu đến trạng thái hiện tại; nêu lên cách cài đặt AT Thuật giải AKT:mở rộng của TG AT, bằng việc thêm hàm ước lượng Thuật giải A*:cải tiến của thuật giải AKT dùng để áp dụng cho đồ thị.

III.4.2.Nhận xét Về đề tài: Đây là một thuật giải áp dụng cho trí tuệ nhân tạo, nên rất mới mẻ, khá hấp dẫn, nhưng cũng khó tiếp cận Ưu điểm :

Trình bày khoa học Nội dung chính xác và khá đầy đủ và cơ bản

Nhược điểm: Chưa nêu được nhược điểm của thuật giải Heuristic Chưa nêu được ứng dụng của thuật giải Heuristic trong thực tiễn Chưa so sánh giữa các phương pháp tìm kiếm

Bổ sung Bổ sung thêm nhược điểm của thuật giải Heuristic Bổ sung thêm so sánh giữa các phương pháp tìm kiếm Nêu lên mối tương quan giữa các phương pháp tìm kiếm Heuristic: 4

kiểu tìm kiếm chiều rộng (BFS),chiều sâu (DFS), leo đồi và tối ưu (BFS): có thể xem như là 4 thái cực của không gian liên tục bao gồm các chiến lược khác nhau.

thuật giải Heuristic và các phương pháp tìm kiếm Heuristic ứng dụng trong Trí tuệ nhân tạo

III.5. Bài báo cáo: Thuật toán tìm kiếm trên đồ thịNTH: Phạm Thanh Hiền-Bùi Thị Thư-Hà Thị Thanh Vân

III.5.1. Tóm tắt

15

Page 16: bao cao cuoi ky II

Các khái niêm cơ bảnoĐịnh nghĩa đồ thị: một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnhoPhân loại đồ thị:

Dựa vào số lượng, có hai loại: Đơn đồ thị và Đa đồ thị Dựa vào đặc tính, có hai loại: Đồ thị vô hướng và Đồ thị có hướng

oĐường đi ,tính liên thông trong đồ thịoBiểu diễn đồ thị: có 3 kiểu là ma trận kê,danh sách kề và danh sách cạnh Thuật toán tìm kiếm trên đồ thị:oThuật toán tìm kiếm theo chiều sâu (DFS):cài đặt chương trình dưa vào đệ quy và

không đệ quy-ngăn xếp(tư tưởng và xây dựng thuật giải hai cách này)oThuật toán tìm kiếm theo chiều rộng (BFS): cài đặt chương trình dưa vào hang

đợi và thuật toán loang(tư tưởng và xây dựng thuật giải hai cách này)oĐộ phức tạp của DFS và BFS Biểu diễn đồ thị bằng danh sách kề, cả hai thuật toán BFS và DFS đều có độ phức

tạp tính toán là O(n+m)= O(max(n,m)) Biểu diễn đồ thị bằng ma trận kề thì độ phức tạp tính toán là O(n+n2)= O(n2). Biểu diễn đồ thị bằng danh sách cạnh, nó có độ phức tạp tính toán là O(n.m)III.5.2 Nhận xét

Về đề tài : Đây là một đề tài khá quen thuộc, gần gũi, nhìn chung không có điểm gì mới. Ưu điểm

Trình bày rõ ràng, mạch lạc , khoa học, logic, dễ tóm lược thông tin. Nội dung chính xác, cơ bản, phân tích vấn đề logic.

Nhược điểm: Chưa nêu cụ thể được ứng dụng của thuât toán tìm kiếm đồ thị trong thực tế chứ không phải qua một sô bài tập. Chưa nêu được ưu nhược điểm, va sự tương quan giứa hai cách tìm kiếm trên đồ thị

Bổ sung: Đưa thêm ứng dung thuật toán tìm kiếm đô thị: du lịch, lĩnh vực trí tuê

nhân tạo Nêu ra ưu nhược điểm, sự tương quan giữa BFS và DFS

III.6. Bài báo cáo: Quy hoạch đôngNTH: Nguyễn Văn Chiến- Nguyễn Hữu Hoàng-Nguyễn Thị Kim Anh

III.6.1. Tóm tắt: Giới thiệu chung: một phương pháp chia nhỏ bài toán, tổ hợp kết quả, tương tư

như chia để trị, áp dụng hữu hiệu cho bài toán tối ưu Kĩ Thuật quy hoạch độngo Nguồn gốc:nhà toán học người Mĩ Richard Bellman phát minh,năm 1953.o Khái niệm: là KTLT chia bài toán lớn-> bài toán nhỏ,lời giải bài toán nhỏ lưu vào bảng phương án để tổ hợp tìm kết quả ban đâu.

16

Page 17: bao cao cuoi ky II

o Bản chất: Chia cắt bài toán lớn thành nhỏ, ghi nhớ và tổ hợp kết quảo Đặc điểm căn bản (2): cấu trúc con tối ưu và bài toán con gối nhauo Phương pháp tiếp cận: từ dưới lên (Bottom-up), từ trên xuống (Top-down)o Quy trình triển khai(4 bước): Bước 1 : Xác định cấu trúc con tối ưu Bước 2 : Xác định hàm hồi quy của nghiệm tối ưu. Bước 3 : Tính giá trị của nghiệm tối ưu theo Bottom-up hoặc top-down. Bước 4 : Xây dựng lại nghiệm tối ưu từ thông tin đã tính toán ở bước 3.

oƯu điểm : Giảm thiểu tối đa dung lượng bộ nhớ cần sử dụng. Giảm thiểu tối đa độ phức tạp thuật toán và thời gian tính toán Khả năng áp dụng cao, cho nhiều bài toán phức tạp. Là phương pháp tuyệt vời cho nhiều bài toán tối ưu.

III.6.2 Nhận xét Về đề tài: Đây là đề tài khá quen thuộc nhưng khó tiếp cận vói một số

người học Ưu điểm

Là một bài báo cáo khá hoàn chỉnh, đầy đủ và chi tiêt, nổi bật được vấn đề. Giúp người đọc dễ dàng nắm bắt nội dung

Trình bày rõ ràng, mạch lạc, tính khoa học cao Biết lựa chọn và phân tích ví dụ khá rõ ràng, chi tiết góp phần cung cố nội

dung Nhược điểm

Chưa làm nổi bật được sức manh của phương pháp trên các vấn đề lớn và các bài toán thực tế

Chưa nêu được nhược điểm của kỹ thuật Bổ sung

Nên đưa thêm việc triển khai kỹ thuật trong các bài toán thực tế , vấn đề lớn

Nêu ra nhược điểm của kỹ thuật Các thuật toán sử dụng quy hoạch động:

o Thuật toán xử lý xâu ký tựo Thuật toán CYK xác định xem một xâu cho trước có thể được sinh

từ một ngữ pháp phi ngữ cảnh (context-free grammar) o Thuật toán Viterbio Thuật toán Earleyo Thuật toán Needleman-Wunsch và các thuật toán sắp chuỗio Các thuật toán dung trong đồ thị như: thuật toán Bellman-Ford,

thuật toán Dijkstra, thuật toán Floyd: o Tối ưu hóa thứ tự của phép nhân ma trận theo chuỗi (chain matrix

multiplication)o Thuật toán tổng tập con (subset sum)

(Theo wikipedia)

17

Page 18: bao cao cuoi ky II

III.7. Bài báo cáo: Chia để trị (dịch sách)NTH: Lê thành Long-Lưu Hoàng Hiệp

III.7.1. Tóm tắtMột giải pháp hữu hiệu nhất cho các kỹ thuật giải quyết vấn đề là chia chúng thành những vấn đề nhỏ hơn, dễ giải quyết hơn Chương trình Quy hoạch độngoHàm fibonaci: oNhững Vấn Đề Về Phân Vùng: một bài toán đặt ra là phân vùng S vào

phạm vi K sao cho cân bằng công việc và giảm thiểu thời gian xử lý oKhoảng Ăn Khớp Các Ký Tự: Chương trình, dựa vào thuật toán quy hoạch động, chia để trị, tim ra lỗi chính tả oDãy Tăng Lớn NhấtoPhép Đạc Tam Giác:của một đa giac là một tập các tam giác không giao

nhau mà tổng không gian các tam giác này bằng đa giác ban đầuoHạn chế của chương trình Quy hoạch động

Chia để trịoSự Mũ Hoá NhanhoTìm Kiếm Nhị Phân

III.7.2 Nhận xét Ưu điểm

Về cơ bản, bản dịch tương đối sát nghĩa Nội dung phần dịch nói chung là phản ánh được

Nhược điểm Còn rất nhiều chỗ dịch chưa được chuẩn, dịch theo kiểu word by word,

tối nghĩa, câu cú lủng củng, ngang tai (mang văn phong nói, sử dụng từ thừa thãi )

Lấy một ví dụ đơn giản:Phần nhóm dịch: Để có được công việc thực hiện công bằng và hiệu quả, các

sách sẽ được chia đều trong ba công nhân. Để tránh phải sắp xếp lại những cuốn sách hay chia chúng thành phần nhỏ , sẽ là đơn giản nhất để chia giá sách thành ba khu vực và phân công mỗi khu vực vào một trong những công nhân .

Theo ý cá nhân tôi: Để công việc được thực hiện công băng và hiệu quả…hay chia chúng ra, đơn giản nhất là chia giá sách thành ba khu và phân môi khu một công nhân

Nên cố găng dịch nhiều hơn để có văn phong chính xác, hợp lý

III.8. Bài báo cáo: Chia để trị NTH: Nguyên Thị Hiên-Trần Kim Liên- Đỗ Ngọc Hà

III.8.1. Tóm tắt Ý tưởng và nội dung của thuật toán chia để trị oChia bài toán lớn thành bài toán nhỏ cùng dạng dễ giải để tìm KQ bài toán đầu

18

Page 19: bao cao cuoi ky II

oNội dung: Phân tích bài toán đã cho thành các bài toán cơ sở Tổng hợp kết quả từ bài toán cơ sở để có lời giải của bài toán ban đầu.

Các bài toán minh hoạ và các ví dụ Thuật toán tìm kiếm nhị phân Bài toán Min & Max Thuật toán Quick Sort….

Đánh giá thuật toán: Ưu điểm: là phương pháp tối ưu giải một số bài toán lớn, đồ sộ Nhược điểm: Sử dụng đệ quy lên tốn bộ nhớ

III.8.2 Nhận xét Về đề tài: là một đề tài quen thuộc

gần gũi, được nhiều người biết đến và sử dụng Ưu điểm: Trình bày khá thoáng, dễ đọc

Nhược điểm Nội dung báo cáo còn sơ

sài Nêu quá nhiều bài toán chỉ

để thể hiện việc áp dụng thuật toán chia để trị Bổ sung Nên bổ sung thêm

nguồn gốc: Ý tương thuật toan có tư Babylonia I, trước công nguyê, nhưngJohn Mauchly đưa ra sự miêu tả thuật toán năm 1946

bản chất đặc điểm căn bản, quy trình triển khai thuật toán

Thay vì chỉ nêu các bài toán mà không phản ánh được gì, ta có thể sửa bổ sung như sau:Các nguyên tắc có thể dung chia nhỏ bài toán: Nguyên tắc chia đôi: bài toán Min Max, tìm kiếm nhị phân… Nguyên tắc phân hoạch: Thuật giải quicksoft …

Bổ sung thêm phần ưu điểm: Là thuật toán tích hợp một cách tự nhiên cho các thi hành trong máy đa xử

lý, đăc biệt là hê thống chia sẻ bộ nhớ Thuật toán làm tăng hiệu quả sử dụng bộ nhớ Có sự kiểm soát toàn diện chương trình cho ra kết quả chính xác

(Theo wikipedia)

III.9. Bài báo cáo: Bảng bămNTH: Hoàng Thị Tình- Trần Thị Thay- Nguyễn Thị Thể

III.9.1. Tóm tắt Nguồn gốc: xuất hiện những năm 50 của thế kỷ 20, dựa trên ý tưởng: biến đổi

giá trị khóa thành một số,sử dụng số này đánh chỉ mục cho bảng dữ liệu

19

Page 20: bao cao cuoi ky II

Hàm băm: là ánh xạ giá trị từ khóa vào một dãy các địa chỉ của bảng băm Bảng băm: là kĩ thuật chia nhỏ khóa, bằng cách khác nhau rồi trộn phối hợp

lại,trích ra 1 mã đại diện Mô tả cấu trúc bảng băm tổng quát: hàm băm, tập khóa, tập địa chỉCác phép toán trên bảng băm: thêm phần tử (insert), loại bỏ (remove), tìm kiếm

Các phương pháp, thuật toán giải quyết xung đột trên bảng băm Phương pháp kết nối trực tiếp Phương pháp kết nối hợp nhất Phương pháp dò tuần tự(tuyến tính) Phương pháp dò bậc hai Phương pháp băm kép

Nêu lên nội dung, các hàm thực hiện và đánh giá về phương pháp Đánh giá về bảng băm: phụ thuộc vào dung lương bộ nhớ

o Ưu điểm : Cấu trúc dung hòa giữa thời gian truy xuất và dung lượng bộ nhớ: Bảng băm thích hợp tổ chức dữ liệu có kích thước lớn, lưu trữ ở bộ nhớ ngoài.o Nhược điểm: Gây xung đột địa chỉo Ứng dung: bài toán kinh điển và trong lĩnh vực mật mã

III.9.2 Nhận xét Về đề tài: đây là một đề tài khá

mới mẻ, hay, lôi cuốn Ưu điểm:

o Bài trình bày khoa học, dễ đọc, dễ hiểu, nêu bật được vấn đềo Nội dung khá đầy đủ, cơ bản, chính xác

Nhược điểm o Chưa phân tích được việc sử dụng kỹ thuật trong bài toán cụ thể để làm rõ

vấn đêo Chưa đưa ra lý do tại sao có xung đột trong bảng băm.

Bổ sung oNêu nguyên nhân xảy ra xung đột trên bảng băm: trong thực tế bảng băm có thể

ánh xạ nhiều giá trị từ khóa tới cùng một chỉ số nào đó, tức lưu các dữ liệu đó trong cùng một thành phần mảng, mà mỗi thành phần mảng chỉ cho phép lưu một dữ liệu=> xung đột

oBổ sung một bảng băm tốt để ta cố gắng tạo được: Tính được dễ dàng và nhanh các địa chỉ ứng với từ khóa Đảm bảo ít xảy ra xung đột

oĐưa ra một số bảng băm và cách cài đặt Cài đặt bảng băm địa chỉ mở Cài đặt bảng băm dây chuyền

III.10. Bài báo cáo: Tổng quan kỹ thuật đệ quyNTH: Nguyễn Đức Giang- Trần Thị Kim Anh- Nguyễn Thị Linh

III.10.1. Tóm tắt Kỹ thuật đệ quy

20

Page 21: bao cao cuoi ky II

1. Khái niệm kỹ thuật đệ quy:Là kỹ thuật có hàm có lệnh gọi lại hàm đó.phân loại đệ quy: dựa vào tiêu chí có 2 kiểu( trực tiêp, gián tiếp) hoặc 4 kiểu đệ quy( tuyến tính, phi tuyến, nhị phân, hỗ tương )2. Cơ chế thực hiện giải thuật đệ quy:Đưa bài toán lớn về bài toán nhỏ nhất để tính rồi lấy kết quả tính ngược trở lại

3. Phương pháp sử dụng kỹ thuật đệ quy trong một bài toán Thông số hóa bài toán. Phát hiện trương hợp suy biến. Phân tích bài toán theo phương thức đệ quy

4. Ưu và nhược điểmƯu điểm : làm chương trình,mã nguồn trở lên ngắn gọnNhược điểm: Tốn bộ nhớ, mất nhiều thời gian và giảm tốc đô xử lý,

Khử đệ quy 1. Tổng quan về vấn đề giải thuật đệ quy2. Các trường hợp khử đệ quy đơn giản.

Trường hợp khử đệ quy bằng vòng lặp. Khử đệ quy hàm đệ quy arsac. Khử đệ quy một số dạng thủ tục đệ quy thường gặp

III.10.2 Nhận xét Về đề tài: đây là một đề tài khá

quen thuộc gần gũi, được nhiều người biết đến và sử dụng khá nhiều Ưu điểm

o Bài trình bày tương đối khoa học, nêu bật được vấn đềo Nội dung khá đầy đủ, cơ bản, chính xác

Nhược điểm: oHơi quá ôm đồm khi trình bày cả đệ quy và khử đệ quyoCơ chế thực hiện giải thuật đệ quy chưa được phân tích sâu

Bổ sung o Nên trinh bày một trong hai vân đề đệ quy và khử đệ quyo Trong phần cơ chế thực hiện giải thuật đệ quy có thể bổ sung:

Cớ cấu ngăn xếp cho lần gọi hàm :Khi một hàm gọi một hàm khác, tất cả các trạng thái hàm gọi đang có cần

được khôi phục sau khi hàm được gọi kết thúc. Trạng thái đó gồm có:điểm quay về, các giá trị trong thanh ghi, các trị trong biến cục bộ và các tham trị của nó. Như vậy môi hàm cần có một vùng nhớ dành riêng cho nó. Vùng nhớ này tồn tại suốt thời gian hàm thực hiện cho đến khi kết thúc công việc. Nhiệm vụ của máy tính là đưa vung nhớ tạm này vào một danh sách có cung Cách lưu giá trị hàm trong bộ nhớ, trên các thanh ghi

o Các cách thực hiên của đệ quy Thực hiện đa xử lý: thực hiện đồng thời Thực hiện đơn xử lý:

o Nên đưa ra trường hợp để phân tích nên hay không nên sử dụng đệ quy o So sánh giữa đệ quy và không đệ quy

21

Page 22: bao cao cuoi ky II

III.11. Bài báo cáo: Kỹ thuật sắp xếp trong lập trìnhNTH: Ngô Thế Quyền-Nguyên Việt Phú-Nguyên Trung Thành

III.11.1. Tóm tắt Đặt Bài ToánSắp xếp là quá trình bố trí lại vị trí các phần tử của 1 tập đối tượng nào đó theo thứ tự nhât định. Bài toán sắp xếp xuất hiện trong nhiều lĩnh vực Tập đối tượng cần sắp xếp có nhiều dạng khác nhau=> Có nhiều thuật toán sắp xếp khác nhau Các Thuật Toán Sắp Xếp:Nêu ý tưởng, cài đặt và độ phức tạp của TToSắp xếp chọn(sellectionsort):chọn phẩn tử thỏa yêu cầu nhất đưa lên vị trí đầuoSắp xếp nổi bọt (Bubblesort):duyệt từ cuối lên đầu, gặp hai khóa kế cận bị

ngược thứ tự thì đổi chỗ oSắp xếpChèn:từng phần tử so sánh với các PT trong dãy, sẽ sắp đúng vào dãy oThuật toán SHELLSORT:chia nhỏ dãy ra sắp xếp rồi ghép lại= dãy săp xếpoThuật toán sắp xếp kiểu phân đoạn ( QUICKSORT): một phương pháp sắp

xếp tôt nhất, dựa vào việc chọn khóa để sắp xếp dãy theo khóa chốt đóoVài cải tiến của QuickSort

oThuật toán kiểu vun đóng (HEAPERT) Tính ổn định của thuật toán sắp xếp: bảo toàn thứ tự ban đầu của các bản

ghi mang khóa bằng nhau trong danh sách. Nói chung các thuật toán ko đảm bảo tính ổn định nhưng có thể biến đổi để trở thành ổn định

Đánh giá thuật toán: các thuật toán có ưu,nhược khác nhau, no ưu điểm chung là nhanh

III.11.2 Nhận xét Về đề tài : là một đề tài khá gần

gũi Ưu điểm:

o Từ trước, các thuật toán sắp xếp được người lập trình biết khá rời rạc, vi thế có thể thấy bài báo cáo viết khá chi tiết, có tính tổng quát và khái quát cao.o Trình bày báo cáo rõ ràng mạch lạc, có tính khoa học cao

Nhược điểm Bổ sung

Nói chung, bài báo cáo không cần bô sung gi nhiềuo Có thể bổ sung về bài toán sắp xếp: bài toán săp xếp chia làm hai loại Sắp xếp trong: săp xếp các phần tử có trong bộ nhớ Sắp xếp ngoài: săp xếp các phần tử được lưu ở các thiết bị lưu trữ

ngoàio Thao tác cơ bản của thuật toán sắp xếp là so sánh và đổi chỗ

III.12. Bài báo cáo: Bài toán liệt kêNTH: Nguyên Mạnh Cường –Lê Thu trang-Bùi Khánh Linh

III.12.1. Tóm tắt

22

Page 23: bao cao cuoi ky II

Trong thực tế, có một số bài toán muốn biết có bao nhiêu đối tượng và tìm ra đối tượng thỏa mãn điều kiện nào đó -> đếm cấu hình tổ hợp,bài toán liệt kê tổ hợp Phương pháp liệt kê là phương kế cuối cùng để giải bài toán tổ hợp hiện nay

Nhắc lại một số kiến thức tổ hợp Phương pháp sinh: có thể áp dụng để giải bài toán liệt kê tổ hợp nếu:

Có thể xác định được một thứ tự trên tập các cấu hình tổ hợp cần liệt kê Xây dựng được thuật toán từ cấu hình chưa phải cấu hình cuối, Liệt kê theo thứ tự từ điển:áp dụng liệt kê tập con k phần tử và một số bt #

Thuật toán quay lui: dùng để giải bài toán liệt kê các cấu hình;là Phương pháp giải quyết vấn đề là thử và sửa. Áp dụng cho bài toán hoán vị.v.v

Kỹ thuật nhánh cận:là kỹ thuật giúp tận dụng những thông tin đã tìm được để loại bỏ sớm những phương án chắc chắn không phải tối ưu->kết quả nhanh

III.12.2 Nhận xét

Về đề tài : đây là đề tài nghe đến khá nhiều, nhưng nói chung đối với sinh viên ít người biết đến một cách đây đủ.

Ưu điểm: o Trình bày khá sáng sủa, rõ ràng mạch lạc, nổi bật được vấn đề->dễ nắm

bắt thông tino Nội dung bài báo cáo khá đầy đủ, phân tích tốt các ví dụ làm nổi bật các

phương pháp. Nhược điểm

o Chỉ để ý nhiều vào việc phân tích các bài toán áp dụng , không nói nhiều về kỹ thuât.

Bổ sung Nên miêu tả kỹ thuật kỹ hơn, đưa thêm độ phức tạp của kỹ thuật,một vài đánh giá nhận xét về kỹ thuật.

Để diễn tả giải thuật quay lui, ta sử dụng cấu trúc cây ghi lựa chọn đã thực hiện,gọi là cây không gian trạng thái

Nếu nút cây không gian trạng thái có trung binh a nút con thì độ phức tạp của giải thuật quay lui là an

III.13. Bài báo cáo: Sử dụng thư viện đồ họaNTH: NguyênTrung Lâm–Kiều Văn Dương-Nguyễn Xuân Thắng

III.13.1. Tóm tắt Đồ thị cơ bản:Một tệp ảnh là một tập hợp của nhiều pixel hay điểm bởi một

màu sắc nhất định nào đó. Mọi hình ảnh đều có dạng hình chữ nhật và có cạnh dài và ngắn nhất định, được tạo bởi một matrix của pixels.

Image – formate:có 3 dịnh dạng hình ảnh thường dung là gif , jpeg , pngDùng hàm imagecreate (int x_size,int y_size) tạo ảnh có kích thươc x và y Sử dụng ảnh đã có:tạo một ảnh trống. có thể lấy ảnh từ đĩa qua các hàm sau:

Ressource imagecreatefromjpeg (string filename)// ảnh dạng jpeg. Ressource imagecreatefrompng (string filename)// ảnh dạng png.

23

Page 24: bao cao cuoi ky II

Truy tim kích thước của tệp ảnh: bằng việc sử dụng các hàm sau cho ta thông tin kích thước ảnh: getimagesize ( ) hoặc imagesx( ) và imagey( )

Copy và bóp ảnh Để phối màu cho ảnh ta có thể: Pha màu, Hoà màu, Thay đổi màu, Tô màu

và Làm màu vô sắc. Tạo hình căn bản Đường thẳng: imageline(resounrce image,int x1,int y1,int x2,int y2,int col) Hình chữ nhật: dùng hàm này làm ảnh có hình chữ nhật

imagerectangle(resource image,int x1,int y1,int x2,int y2,int col) Hình góc:hàm imagepoligon(resource image, array points,int num_points Tạo hình võng:hàm image(int cx,int cy,iny w,int h,int s,int e,int col)

III.13.2 Nhận xét Về đề tài: là một đề tài không rõ

ràng cụ thể, không hiểu sử dụng thư viện đồ họa cho cái gì, thuộc lĩnh vực nào

Ưu điểm Đề cập được các tác vụ với ảnh và các hàm cần dùng

Nhược điểm o Trình bày thiếu khoa học, phân chia ý không rõ ràng, tiếng anh xen tiếng

việc không cần thiết, gây phản cảm.o Không nêu được ứng dụng của việc sử dụng thư viên đô họa

Bổ sung o Nhìn từ mục lục ta có thể chỉnh sưa như sau:

1. Đồ họa cơ bản (thay vì cơ bản graphics)2. Định dạng hình ảnh (thay vì Image-formate.)3. Sử dụng ảnh đã có.4. Truy tim kích thước của tệp ảnh.5. Copy và chỉnh sửa ảnh (thay vì Copy và bóp ảnh.)6. Tô màu

pha màu. Hoà màu. Thay đổi màu. Làm màu vô sắc.

7. Tạo hình căn bản. Đường thẳng. Hình chữ nhật. Hình góc. Tạo hình võng..

8. Vẽ chữ.o Nêu lên ứng dụng của việc sử dụng thư viên đô họa: trong thiết kế web, lĩnh

vực liên quan đến ảnh:

III.14. Bài báo cáo: Các phương pháp lập trình

24

Page 25: bao cao cuoi ky II

NTH: Phạm Hồng Hạnh-Đỗ Thị Thu Hiền-Nguyễn Thị LâmIII.14.1. Tóm tắt Trừu tượng hóa trong lập trình: một phương pháp giúp người lập trình biết

cách tập trung vào những vấn đề.Có hai kiểu trừu tượng hoá quá trình , trừu tượng hóa dữ liệu

Lập trình logic: Ngôn ngữ Prolog: ngôn ngữ cấp cao, ngôn ngữ miêu tả và không có tính thủ tục Cú pháp Prolog( 7 phần): Vị từ ; mệnh đề ; vị từ nhát cắt và fail;khai báo kiểu

dữ liệu do người dùng định nghĩa(bằng từ khóa domains); danh sách(gồm hai phần:đầu và đuôi);cấu trúc tổng quát của chương trình prolog ; những đặc điểm cơ bản( so trùng và đệ quy)

Lập trình hàm:NNLT hàm thiết kế dựa trên các hàm toán họcHàm toán học: là khái niệm cơ bản trong các ngôn ngữ hàmBản chất của ngôn ngữ lập trình hàm:mô phỏng các hàm toán học nhiều nhất cóthể Lập trình thủ tục(LTTT):là kiểu lâp trình mà một thủ tục chính được viết để

khởi động tiến trình và các luồng con gọi thực hiện các thủ tục conLập trình cấu truc: tập con của LTTT, có 3 cấu trúc: trình tự, quyết định, vòng lặp Lập trình hướng đối tượng(OOP): là phương pháp lập trình lấy hướng đối

tượng làm nền tảng để xây dựng thuật giải và chương trìnhCác đặc trưng cơ bản: Sự đóng gói/che dấu thông tin, tính kế thừa, tính đa hình Các nguyên lý trong OOP: open- close, nghich đảo phụ thuộc,.thay thế Lisko v.v.

III.14.2 Nhận xét Về đề tài: là một đề tài khá đồ sồ, đề cập đến nhiều phương pháp lập trình nên

vừa mới lại vừa gần gũi và rất hấp dẫn Ưu điểm

o Là bài báo đầy đủ, chi tiết, nội dung lớn,và đề cập khá toàn diện về các vấn đề của các phương pháp lập trình

o Trình bày khá tốt, rõ ràng mạch lạc, chuẩn xác Nhược điểm

o Vì là một đề tài khá đồ sồ, nên thiếu phần mục lục là một vấn đề đáng quan tâm, gây khó khăn trong việc nhìn tổng quát về bài báo cáo gồm nhưng nội dung gì

Bổ sung o Cần bổ sung phần mục lục vào bài báo cáoo Nên có sự so sánh giưa các phương pháp lập trìnho Bổ sung thêm ứng dụng cho các phương pháp lập trình

III.15. Bài báo cáo: Lập trình hướng đối tượngNTH: Nguyễn Văn Nhân- Phạm Thị Mai Hoa-Nguyên Đức Sơn

III.15.1. Tóm tắt Đặt vấn đề:

Lập trình tuyến tính có nhiều hạn chế: Không sử dụng lại được các đoạn mã Không có khả năng kiểm soát phạm vi truy xuất dữ liệu; Mọi dữ liệu là toàn cục dễ bị ảnh hưởng=> Lập trinh hướng đối tượng là một phương pháp khắc phục nhược điểm trên

25

Page 26: bao cao cuoi ky II

Nội Dung:oLập trinh HĐT:là phương pháp thiết kế & pháy triển phần mềm dựa trên lớp

và đối tượng.oĐối tượng:Thực thể phần mềm bao bọc thuộc tính và phương thức

oClass:là thiết kế định nghĩa thuộc tính, phương thức cho đối tượng cùng loại

Thành viên lớp thuộc một trong ba loại quyền Public, protected, private Hàm khởi tạo: Khai báo,cấp phát bộ nhớ cho đối tượng Hàm hủy: Hủy bỏ đối tượng, giải phóng bộ nhớ Phạm vi lớp: Lớp con:Kế thừa thuộc tính,phương thức của lớp khác Lớp cha:Lớp chia sẻ sự kế thừa

o Thuộc tính:Biến, dữ liệu.

o Phương thức: Các hàm của đối tượng

o Thông điêp: là một lời yêu cầu một hoạt động

o Đặc trưng:

Bao đóng:tiến trinh che dấu việc thực thi chi tiết của mọt đối tượng Kế thừa:Cho phép các lớp đối tượng này kế thừa từ các lớp đối

tượng khác Đa hình:nhiều hành động được thực hiện khác nhau với đối

tương khác nhauoSự trừu tượng hoá : Là khả năng bỏ qua hay không để ý tới các thành phần

không quan trọngIII.15.2 Nhận xét Về đề tài: đây là đề tài tương đối mới mẻ, nhưng đang dần được nhiều người biết

đến ,tìm hiểu và học Ưu điểm Bài báo cao khá đầy đủ và chi tiết, nổi bật đươc kiến thức cơ bản Nội dung trình bày khá rõ ràng

Nhược điểm Khối lương nội dung khá lơn nhưng không có mục lục để có cái nhìn khái quát Trình bày một só chỗ không đưuoc rõ ràng gây loạn cho người đọc

Bổ sung : Khái niêm lớp cơ sở ảo: Khái niệm toán tử điều khiển Hàm thành viên nội tuyến Phương thức ảo

IV: Giai đoạn kiểm chứngIV.1. Bài báo cáo: Kiểm chứng chương trình

NTH: Lê Ngọc Duy Trần-Trần Văn Tài

26

Page 27: bao cao cuoi ky II

IV.1.1. Tóm tắt Các giai đoạn trong cuộc sống phàn mêm:oĐặc tả bài toán: phân tích yêu cầu và diễn đạt lại chính xác bằng ngôn ngữ thích

hợp oXây dựng hệ thống: thiết kế, triển khai từng module và thử nghiệm trên các dữ

liệu và các mức độ hệ thốngoSử dụng và bảo trì hệ thống

Đặc tả: Khi có một vấn đề cần giải quyết, ta phát biểu bài toán bằng một văn bảnoTác dụng của đặc tả bài toán

Là cơ sở để đặt vấn đề, thông tin giũa người đặt bài toán và người giải bài toán .

Là cơ sở để những người giải bài toán triển khai các giải pháp của mình . Là cơ sở để người giải bài toán kiểm chứng tính đúng của phần mềm tạo ra . Là phương tiện để nhiều người hiểu tính năng của hệ thống tin học mà

không cần đi vào chi tiết của hệ thốngoĐặc tả chương trình: gồm dữ liệu nhập và điều kiện ràng buộc trên dữ liệu nhập

Ngôn ngữ lập trình:Để kiểm chứng tính đúng của một đoạn chương trình cần trình bày đoạn chương trình đó trong một dạng NNLT ở dạng cốt lõi.

Kiểm chứng có tính đúng: qua hệ luật Hoare, đoạn chương trình không có vòng lặp, có vong lặp

Kiểm chứng có tính đúng đầy đủ Lược đồ kiểm chứng hợp lý và các điều kiện càn kiểm chứng

III.16.2 Nhận xét Về đề tài: đây là đề tài khá mới vẻ, ít được biết đến nhưng cũng đang dần được

nhiều người tìm hiểu Ưu điểm: o Nội dung nêu khá đây đủ, toàn diện và chính xác

Nhược điểm o Trình bày không tốt, các đề mục không được làm nổi bật, gây khó đọc

và nắm bắt nội dungo Nội dung khá trừu tượng, khó tiếp cận

IV.2. Bài báo cáo: Kiểm chứng chương trìnhNTH: Nguyễn Anh Tuấn- Dương Đức Thiện-Đỗ Đác Xuất

IV.21. Tóm tắt:Nội dung giống với nhóm trên nên tôi không tóm tắt lại ở đây IV.2.2 Nhận xét

Về đề tài: đây là đề tài khá mới vẻ. Ưu điểm: oNội dung nêu khá đây đủ, toàn diện và chính xácoTrình bày khá tốt, làm nổi bật được vấn đề, giúp người đọc nắm bắt được nội

dung

27

Page 28: bao cao cuoi ky II

Nhược điểm o Nội dung khá trừu tượng, khó tiếp cận

V: Ứng dụngV.1. Bài báo cáo: Lập trình điều khiển trên máy CNC

NTH: Phạm Thanh HòaV.1.1. Tóm tắt

Khái niệm và ngôn ngữ lập trình trên máy CNCChương trình CNC là tập những chỉ dẫn cần thiết cho quá trình gia công 1 chi tiết cơ khí trên máy công cụ điều khiển CNC hoặc NC một cách tự độngNgôn ngữ lập trình NC chia làm 2 cấp: thấp và cao Cách điều khiển máy CNC và tiện ích của máyoĐiều khiển số trực tiếp CNC: từ bên ngoài bởi máy thực hiện chức năng lập trìnhoĐiều khiển số bằng máy tính:oĐiều khiển số bằng máy tính CNC

Cấu truc hệ thông gồm 6 thành phần : chương trình gia công, thiết bị đọc, hệ điều khiển máy,hệ truyền chuyển động, hệ phản động và máy công cụoKhả năng của CNC:CNC có nhiêu chức năng xử lý và điều khiển linh hoạtoPhương thức lập trình CNC: trực tiếp và tự động

Kỹ thuật lập trình:Chương trình CNC bao gồm chuỗi chỉ thị chuyển dao, đóng ngắt và ngắt và phụ chợ cần thiết đẻ điều khiển máy gia côngChương trình CNC:gồm đầu, than và kết thúc chương trình Bài toán minh họa và hình ảnh các loại máy công cụ và sản phẩm

V.1.2 Nhận xét Về đề tài: đây là đề tài khá mới vẻ. Ưu điểm

Nội dung nêu khá đây đủ, toàn diện và chính xác

V.2. Bài báo cáo: Quan máy học NTH: Lê Văn Hùng- Lê Viết Hùng-Đặng Trần Long

V.2.1. Tóm tắt Thế nào là máy học o Định nghĩa:là một lĩnh vực của trí tuệ nhân tạo, liên quan đén việc cho phép máy

họcoỨng dụng:trong ngành KH-SX,đặc biệt nghành phân tích khối luong dữ liệu khổng

lồ: xử lý ngôn ngữ tự nhiên, nhận dạng, chuẩn đoán trong y học.v.v.voTương tác với con người:tùy thuộc vào mục đích mà khả năng tương tác khác nhauoCác giải thuật:học có giám sát, học không giám sát, học nửa giám sát, học tăng

cường, chuyển đổi, học cách học.

28

Page 29: bao cao cuoi ky II

oCác chủ đề về máy học:hai chủ đè chính:mô hinh hóa các hàm mật dộ xác suất điều kiện hồi quy và mô hinh hóa các hàm mật dộ xác suất qua mô hình phát sinh

Học bằng cách xây dựng cây định danh o Đâm chồi: là quá trình qua mỗi lầm phân hoạch, cây phn hoạch ngày càng rộng rao Phương án chọn thuộc tính phân hoạch: hai phương án

Quinlan:quyết định thuộc tính phân hoạch bắng xây dựng vecto đặc trưng Độ đo hỗn loạn:

o Phát sinh tập luật:ứng mỗi lá, ta đi từ đỉnh cho đến nút lá và phát sinh ra luật TƯ.o Tối ưu tập luật

Loại bỏ mệnh đề thừa Xây dựng mệnh đề mặc định

V.2.2 Nhận xét Về đề tài: đây là đề tài tương đối mới mẻ, hấp dẫn Ưu điểm Bài báo cáo khá đầy đủ và chi tiết, nổi bật đươc kiến thức cơ bản, nội dung trình

bày khá rõ ràng Trình bày rõ ràng mạch lạc

Nhược điểm Bổ sung :oTrong các chủ đề về máy học Cần bổ sung thêm:Mô hình tối ưu hóa: hầu hết các

phương pháp trên đều sử dụng tối ưu hóa hoặc là các thể hiện của các thuật toán tối ưu hóa

oMột số phần mềm hỗ trợ: SPIDER - một hộp công cụ học máy hoàn chỉnh cho Matlab Orange, bộ chương trình học máy với các script viết bằng Python và giao

diện lập trình đồ họa YALE là một công cụ mạnh miễn phí cho Học máy và Khai phá dữ liệu Matlab

V.3. Bài báo cáo: Ứng dụng ngắt trong lập trình nhúngNTH: Nguyễn Trọng Ngọc- Nguyễn Phi Long-Lê Đức Long

V.3.1. Tóm tắt Nhu cầu thực tế của các hệ thống nhúng trong đời sống hiện nay

Hệ thống nhúng là gì:một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ.

Sự cần thiết của ngắt trong lập trình nhúng: trong quá trình hoạt động có thể xảy ra rắc rối khi điều chỉnh tuần tự, CPU chậm ,tốn -> LT nhúng

Mô tả kỹ thuật về thuật toán ngắt Ngắt trong Dos Thuật toán Phân tích thuật toán

Ngắt trong vi điều khiển PIC16F887 của Microchip Một vài ứng dụng thực tế

Ngắt giúp tiết kiệm đáng kể CPU

29

Page 30: bao cao cuoi ky II

Ngắt và nút bấm Đánh giá ưu nhược điểm và phương hướng phát triển

Ưu điểm của ngắt:tíết kiệm CPU, nâng cao hiệu suấtvà giảm nhiệt độ chíp-> kéo dài tuổi thọ

Nhược điểm của ngắt:chương trình ngắt phức tạp và hạn chế ngắt trong 1 chíp

Phương hướng phát triển Tiếp tục thực hiện ngắt với các timer1, timer2. Ngắt đối với thiết bị ngoại vi. Tạo ngắt với nút bấm

V.3.2 Nhận xét Về đề tài: đây là đề tài khá mới mẻ, hấp dẫn Ưu điểm Bài báo cáo khá đầy đủ và chi tiết, nổi bật đươc kiến thức cơ bản, nội dung trình bày khá rõ ràng Trình bày rõ ràng mạch lạc, hình ảnh minh họa cụ thể

30