1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng Chương trình học tiếng Nga

57 1,1K 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình Học Tiếng Nga
Người hướng dẫn Th.S. Nguyễn Đình Thuân
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 57
Dung lượng 868,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xây dựng Chương trình học tiếng Nga

Trang 1

MỤC LỤC

PH N I: GI I THI U ẦN I: GIỚI THIỆU ĐỀ TÀI VÀ CÔNG CỤ LẬP TRÌNH ỚI THIỆU ĐỀ TÀI VÀ CÔNG CỤ LẬP TRÌNH ỆU ĐỀ TÀI VÀ CÔNG CỤ LẬP TRÌNH ĐỀ TÀI VÀ CÔNG CỤ LẬP TRÌNH TÀI VÀ CÔNG C L P TRÌNHỤ LẬP TRÌNH ẬP TRÌNH 7

I.1 GI I THI U ỚI THIỆU ĐỀ TÀI ỆU ĐỀ TÀI ĐỀ TÀI TÀI 7

1 M c tiêu c a ục tiêu của đề tài ủa đề tài đề tài 7 tài 2 Yêu c u c a ầu của đề tài ủa đề tài đề tài 7 tài I.2 CÔNG C L P TRÌNH Ụ LẬP TRÌNH ẬP TRÌNH 8

1 Các tính n ng c a môi tr ăng của môi trường phát triển ứng dụng delphi ủa đề tài ường phát triển ứng dụng delphi ng phát tri n ng d ng delphi ển ứng dụng delphi ứng dụng delphi ục tiêu của đề tài 8

2 C u trúc ch ấu trúc chương trình delphi và unit ương trình delphi và unit ng trình delphi và unit 10

3 L nh i u khi n trong object pascal ệnh điều khiển trong object pascal đ ề tài ển ứng dụng delphi 11

4 Các ki u d li u trong ngôn ng object pascal ển ứng dụng delphi ữ liệu trong ngôn ngữ object pascal ệnh điều khiển trong object pascal ữ liệu trong ngôn ngữ object pascal 12

5 Hàm và th t c ủa đề tài ục tiêu của đề tài 14

6 Form và các thành ph n i u khi n ầu của đề tài đ ề tài ển ứng dụng delphi 16

7 L p trình đồ họa, in ấn, multimedia và các đối tượng có liên quan ọa, in ấn, multimedia và các đối tượng có liên quan h a, in n, multimedia và các ấu trúc chương trình delphi và unit đối tượng có liên quan ượng có liên quan i t ng có liên quan 18

8 Th vi n liên k t ư ệnh điều khiển trong object pascal ết động (dll) động (dll) ng (dll) 19

9 Gi i thi u v WIN32 API và h th ng thông i p ới thiệu về WIN32 API và hệ thống thông điệp ệnh điều khiển trong object pascal ề tài ệnh điều khiển trong object pascal ối tượng có liên quan đ ệnh điều khiển trong object pascal 20

Ph n II: T NG QUAN V C U TRÚC D LI U VÀ GI I THU T ần II: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T ỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T Ề CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T ẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T Ữ LIỆU VÀ GIẢI THUẬ T ỆU VÀ GIẢI THUẬ T ẢI THUẬ T Ậ T 21

II.1 GI I THI U ỚI THIỆU ĐỀ TÀI ỆU ĐỀ TÀI 21

1 Gi i thu t và c u trúc d li u ải thuật và cấu trúc dữ liệu ấu trúc chương trình delphi và unit ữ liệu trong ngôn ngữ object pascal ệnh điều khiển trong object pascal 21

2 C u trúc d li u và các v n ấu trúc chương trình delphi và unit ữ liệu trong ngôn ngữ object pascal ệnh điều khiển trong object pascal ấu trúc chương trình delphi và unit đề tài liên quan 21

3 Các tiêu chu n ánh giá c u trúc d li u ẩn đánh giá cấu trúc dữ liệu đ ấu trúc chương trình delphi và unit ữ liệu trong ngôn ngữ object pascal ệnh điều khiển trong object pascal 21

4 ánh giá Đ động (dll) ph c t p gi i thu t ứng dụng delphi ạp giải thuật ải thuật và cấu trúc dữ liệu 22

II.2 S P X P VÀ TÌM KI M ẮP XẾP VÀ TÌM KIẾM ẾP VÀ TÌM KIẾM ẾP VÀ TÌM KIẾM 22

1.M t s gi i thu t s p x p ộng (dll) ối tượng có liên quan ải thuật và cấu trúc dữ liệu ắp xếp ết động (dll) 23

2 Các gi i thu t tìm ki m n i ải thuật và cấu trúc dữ liệu ết động (dll) ộng (dll) 24

II.3 C U TRÚC CÂY ẤU TRÚC CÂY 25

1 nh ngh a và khái ni m Định nghĩa và khái niệm ĩa và khái niệm ệnh điều khiển trong object pascal 25

2 Các cách bi u di n cây ển ứng dụng delphi ễn cây 26

3 Cây nh phân ịnh nghĩa và khái niệm 26

4 Bi u di n cây t ng quát b ng cây nh phân ển ứng dụng delphi ễn cây ổng quát bằng cây nhị phân ằng cây nhị phân ịnh nghĩa và khái niệm 27

5 Cây nh phân tìm ki m ịnh nghĩa và khái niệm ết động (dll) 28

6 Cây nh phân cân ịnh nghĩa và khái niệm đối tượng có liên quan 29 i 7 Cây nh phân tìm ki m t i u ịnh nghĩa và khái niệm ết động (dll) ối tượng có liên quan ư 30

Ph n III: T ần II: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T ỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T CH C L U TR CÂY T I NỨC LƯU TRỮ CÂY TỪ ĐIỂN ƯU TRỮ CÂY TỪ ĐIỂN Ữ LIỆU VÀ GIẢI THUẬ T Ừ ĐIỂN ĐIỂN ỂN 31

Trang 2

Ph n IV: THI T K CH ần II: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T ẾT KẾ CHƯƠNG TRÌNH ẾT KẾ CHƯƠNG TRÌNH ƯU TRỮ CÂY TỪ ĐIỂNƠNG TRÌNH NG TRÌNH 34

V.1 T O B GÕ VÀ FONT TI NG NGA CÓ D U NH N TR NG ÂM CHO ẠO BỘ GÕ VÀ FONT TIẾNG NGA CÓ DẤU NHẤN TRỌNG ÂM CHO Ộ GÕ VÀ FONT TIẾNG NGA CÓ DẤU NHẤN TRỌNG ÂM CHO ẾP VÀ TÌM KIẾM ẤU TRÚC CÂY ẤU TRÚC CÂY ỌNG ÂM CHO NG ƯỜI DÙNG I DÙNG 34

1 Khái quát v b gõ ề tài ộng (dll) 34

2 Cách thi t k b gõ Ti ng Nga và Ti ng Vi t cho riêng ch ết động (dll) ết động (dll) ộng (dll) ết động (dll) ết động (dll) ệnh điều khiển trong object pascal ương trình delphi và unit ng trình 34 3 Ph ương trình delphi và unit ng pháp t o Font Ti ng Nga m i ạp giải thuật ết động (dll) ới thiệu về WIN32 API và hệ thống thông điệp 35

V.2 PH ƯƠNG PHÁP LƯU ÂM THANH VÀ HÌNH ẢNH CHO CHƯƠNG TRÌNH NG PHÁP L U ÂM THANH VÀ HÌNH NH CHO CH Ư ẢNH CHO CHƯƠNG TRÌNH ƯƠNG PHÁP LƯU ÂM THANH VÀ HÌNH ẢNH CHO CHƯƠNG TRÌNH NG TRÌNH T I N Ừ ĐIỂN Đ ỂN 37

1 L u âm thanh ư 37

2 L u hình nh ư ải thuật và cấu trúc dữ liệu 37

3 Cách th c n i k t các file âm thanh và hình vào ch ứng dụng delphi ối tượng có liên quan ết động (dll) ương trình delphi và unit ng trình 37

V.3 M T S GI I THU T TRONG CH Ộ GÕ VÀ FONT TIẾNG NGA CÓ DẤU NHẤN TRỌNG ÂM CHO Ố GIẢI THUẬT TRONG CHƯƠNG TRÌNH ẢNH CHO CHƯƠNG TRÌNH ẬP TRÌNH ƯƠNG PHÁP LƯU ÂM THANH VÀ HÌNH ẢNH CHO CHƯƠNG TRÌNH NG TRÌNH 38

1 Gi i thu t tìm ki m trên cây t i n ải thuật và cấu trúc dữ liệu ết động (dll) ừ điển đ ển ứng dụng delphi 38

2 Các b ưới thiệu về WIN32 API và hệ thống thông điệp c tra t ừ điển 40

3 Các b ưới thiệu về WIN32 API và hệ thống thông điệp c thêm t ừ điển 41

4 Các b ưới thiệu về WIN32 API và hệ thống thông điệp ửa từ ừ điển 42 c s a t 5 Các b ưới thiệu về WIN32 API và hệ thống thông điệp c xóa t ừ điển 44

6 Gi i thu t tìm ki m nh phân ải thuật và cấu trúc dữ liệu ết động (dll) ịnh nghĩa và khái niệm đển ứng dụng delphi chèn t vào úng v trí trong danh sách ừ điển đ ịnh nghĩa và khái niệm 44

7 Mã l nh t o b gõ Ti ng Vi t ệnh điều khiển trong object pascal ạp giải thuật ộng (dll) ết động (dll) ệnh điều khiển trong object pascal 46

8 Mã l nh t o b gõ Ti ng Nga ệnh điều khiển trong object pascal ạp giải thuật ộng (dll) ết động (dll) 49

V.4 GIAO DI N C A CH ỆU ĐỀ TÀI ỦA CHƯƠNG TRÌNH VÀ CÁCH THỨC HOẠT ĐỘNG ƯƠNG PHÁP LƯU ÂM THANH VÀ HÌNH ẢNH CHO CHƯƠNG TRÌNH NG TRÌNH VÀ CÁCH TH C HO T ỨC HOẠT ĐỘNG ẠO BỘ GÕ VÀ FONT TIẾNG NGA CÓ DẤU NHẤN TRỌNG ÂM CHO ĐỘ GÕ VÀ FONT TIẾNG NGA CÓ DẤU NHẤN TRỌNG ÂM CHO NG 51

1 Giao di n chính c a ch ệnh điều khiển trong object pascal ủa đề tài ương trình delphi và unit ng trình v i các menu thành ph n ới thiệu về WIN32 API và hệ thống thông điệp ầu của đề tài 51

2 Giao di n T i n ệnh điều khiển trong object pascal ừ điển đ ển ứng dụng delphi 52

3 Giao di n Ng pháp ệnh điều khiển trong object pascal ữ liệu trong ngôn ngữ object pascal 56

4 Giao di n Bài t p ệnh điều khiển trong object pascal 57

5 Giao di n Luy n nghe ệnh điều khiển trong object pascal ệnh điều khiển trong object pascal 59

6 Trang gi i thi u ới thiệu về WIN32 API và hệ thống thông điệp ệnh điều khiển trong object pascal đề tài 62 tài Ph n V: NH NG KHÓ KH N, THU N L I VÀ H ần II: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T Ữ LIỆU VÀ GIẢI THUẬ T ĂN, THUẬN LỢI VÀ HƯỚNG PHÁT TRIỂN Ậ T ỢI VÀ HƯỚNG PHÁT TRIỂN ƯU TRỮ CÂY TỪ ĐIỂNỚNG PHÁT TRIỂN NG PHÁT TRI N ỂN CH ƯU TRỮ CÂY TỪ ĐIỂNƠNG TRÌNH NG TRÌNH 63

1 Nh ng khó kh n ữ liệu trong ngôn ngữ object pascal ăng của môi trường phát triển ứng dụng delphi 63

2 Thu n l i ợng có liên quan 63

3 H ưới thiệu về WIN32 API và hệ thống thông điệp ng kh c ph c và phát tri n ch ắp xếp ục tiêu của đề tài ển ứng dụng delphi ương trình delphi và unit ng trình 64

Ph n VII: K T LU Nần VII: KẾT LUẬN ẾT LUẬN ẬP TRÌNH 65

Trang 3

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Trang 5

Điểm của hội đồng:

Trang 6

LỜI MỞ ĐẦU

Ngôn ngữ vốn là phương tiện giao tiếp của loài người, hơn thế nữa ngôn ngữ còn giúp loài người hiểu nhau hơn để cùng giải quyết những khó khăn chung, tiến tới xây dựng một thế giới ngày càng tươi đẹp Ngày nay, cùng với sự phát triển vượt bậc của công nghệ thông tin thì việc trao đổi liên lạc giữa người với người ngày càng dễ dàng hơn thông qua các ứng dụng tiện ích thực tế Trong

đó phải kể đến sự hỗ trợ của các chương trình từ điển, chúng giúp con người nhanh chóng nắm bắt ngôn ngữ của nhau đồng thời giúp họ thoát khỏi công việc nặng nhọc là tra cứu từ trong các quyển từ điển dày và nặng

Hiện nay ở nước ta, ngoài tiếng Anh là ngoại ngữ chính thì tiếng Nga cũng là ngoại ngữ rất cần thiết cho nhiều ngành khoa học, đặc biệt là các ngành

kỹ thuật như cơ khí, luyện kim, thuỷ tinh…

Vì thế thông qua ngôn ngữ lập trình trên máy tính, từ điển điện tử tiếng Nga sẽ tạo điều kiện thuận lợi hơn cho người dùng trong việc tra cứu từ vựng Thêm vào đó cần có một chương trình tiếng Nga hoàn thiện về ngữ pháp, bài tập

để phục vụ người dùng không những tra từ mà còn có thể học tốt ngôn ngữ này.

Mục tiêu này từ lâu đã là niềm thích thú của bản thân em, chính vì thế

“Chương trình học tiếng Nga” được em chọn làm đề tài tốt nghiệp của mình

Do hạn chế về thời gian thực tập nên đề tài không tránh khỏi những thiếu sót, rất mong được sự đóng góp ý kiến của thầy cô và các bạn để chương trình ngày càng hoàn thiện thêm

Em chân thành cảm ơn thầy Nguyễn Đình Thuân cùng các bạn trong lớp

đã nhiệt tình hướng dẫn và giúp đỡ em trong suốt thời gian thực hiện đề tài Và đặc biệt xin cảm ơn Khoa Ngoại Ngữ – Trường Cao đẳng Sư phạm Nha Trang

đã tạo điều kiện giúp đỡ để đề tài có điều kiện tiếp tục chỉnh sửa, hoàn thiện

Sinh viên thực hiện

Trang 7

PHẦN I: GIỚI THIỆU ĐỀ TÀI VÀ CÔNG CỤ LẬP TRÌNH

I.1 GIỚI THIỆU ĐỀ TÀI

1 Mục tiêu của đề tài

Nhằm tạo điều kiện thuận lợi và linh hoạt hơn cho các bạn học sinh, sinhviên cũng như các bạn mới học Tiếng Nga trong việc tra cứu từ vựng, tài liệungữ pháp, bài tập ứng dụng cũng như luyện kỹ năng nghe Chương trình họcTiếng Nga hướng tới khả năng đáp ứng đầy đủ các yếu tố trên với các chức năngnhư sau:

- Tra cứu Từ điển Nga Việt

- Tham khảo Ngữ pháp Tiếng Nga cơ bản

- Thực hành bài tập

- Thực hành kĩ năng nghe

2 Yêu cầu của đề tài

Chương trình học Tiếng Nga cần thỏa mãn các yêu cầu sau:

- Từ điển có các chức năng cơ bản: Tra từ, Thêm từ, Sửa từ, Xóa từ và tralại các từ trước đó

- Có thư viện âm thanh, hình ảnh hỗ trợ cho các từ trong Từ điển

- Giới thiệu bàn phím Tiếng Nga nhằm tạo điều kiện thuận lợi cho ngườidùng làm quen với ký tự trên bàn phím

- Giao diện bàn phím phải thuận lợi cho người sử dụng trong quá trình tratừ:

Trang 8

I.2 CÔNG CỤ LẬP TRÌNH

Chương trình được thực hiện với ngôn ngữ Delphi, là ngôn ngữ có cấutrúc tương tự ngôn ngữ Pascal, nhưng thực hiện theo hướng lập trình hướng đốitượng Qua một thời gian tìm hiểu về ngôn ngữ này, ta có thể rút ra một số nhậnxét sau:

- Delphi là một bộ phận của môi trường Windows, phát triển ứng dụng cóhiệu quả cao và hỗ trợ một cách nhanh chóng các ứng dụng với một lượng mã rấtít

- Delphi chính xác là ngôn ngữ Object Pascal dễ học và dễ hiểu

- Trong chương trình này Delphi áp dụng để:

+ Xây dựng các ứng dụng Windows trực quan tương tự Visual Basic.+ Thiết kế ứng dụng cơ sở dữ liệu

+ Biên dịch các ứng dụng DLL (thư viện liên kết động)

+ Xây dựng trình điều khiển thiết bị

+ Gọi hàm API cấp thấp

Với Delphi, mọi ý tưởng về hình ảnh, đồ họa, âm thanh, lập trình hệthống, truy xuất cơ sở dữ liệu, lập trình mạng, Internet … đều có thể trở thànhhiện thực

1 Các tính năng của môi trường phát triển ứng dụng delphi

1.1 Môi trường phát triển trực quan

Delphi cho phép xây dựng ứng dụng bằng cách chọn các thành phần công

cụ có sẳn từ bảng công cụ đặt chúng vào Form (cửa sổ chính), lắp ghép và tạonên một ứng dụng hoàn chỉnh

Delphi sẽ tự động sinh mã khi kết nối các công cụ trên Form Cách tiếp cậnlập trình này tương tự như môi trường Visual Basic và các môi trường phát triểntrực quan khác Tuy nhiên kỹ thuật lập trình hướng đối tượng thực sự (ObjectOriented Programming - OPP) là một trong số những điểm khác biệt để nhận raDelphi

1.2 Lập trình biên dịch 32-bit được tối ưu hóa

Điểm đặc biệt tách rời Delphi với các môi trường phát triển trực quan khác(như Visual Basic) là khả năng biên dịch các chương trình thực thi exe độc lập32-bit chạy rất nhanh và hiệu quả

Trình biên dịch Delphi cũng đưa ra những chỉ dẫn bổ ích giúp quyết định sựtối ưu, loại bỏ những biến dư thừa không sử dụng đến, thông báo lỗi chính xác

Trang 9

Mã nguồn của chương trình vì thế sẽ trở nên trong sáng, dễ hiểu, tránh đượcnhững lỗi tiềm ẩn.

1.3 Truy cập và xử lý cơ sở dữ liệu mềm dẻo

Ứng dụng Delphi có khả năng giao tiếp và truy xuất nhiều loại cơ sở dữ liệukhác nhau, từ cơ sở dữ liệu cục bộ (local database) như FoxPro, Acces cho đến

cơ sở dữ liệu kết nối từ xa (remote database) như SQL Server, Oracle, InterBase,

1.4 Ngôn ngữ và thư viện

- Delphi sử dụng ngôn ngữ hướng đối tượng Object Pascal (một phiên bảntiếp theo của ngôn ngữ Pascal cũ) Object Pascal cung cấp một tập hợp ngôn ngữ

mở rộng hiệu quả và uyển chuyển hơn ngôn ngữ Pascal bao gồm:

+ Xử lý lỗi ngoại lệ (Exception handling): cho phép chương trình đónbắt các lỗi xảy ra trong một khối lệnh lúc thực thi

+ Kiểm tra kiểu dữ liệu lúc thực thi (RTTI hay Runtime TimeInformation): chương trình có thể kiểm tra kiểu dữ liệu của một đối tượng lúcứng dụng thực thi (runtime) thay vì vào thời điểm biên dịch (compile - time)

+ Hỗ trợ từ khóa mới Interface: từ khóa này được sử dụng để pháttriển các ứng dụng COM Đồng thời có thể xây dựng nhiều lớp giao tiếp(interface) dành cho một đối tượng nào đó

+ Kiểu chuỗi không giới hạn (unlimited-length string): với ObjectPascal kiểu chuỗi có thể chứa số ký tự không giới hạn Theo lý thuyết có thểchứa một chuỗi với kích thước 2GB (cũng có nghĩa là khoảng 2 tỉ ký tự)

+ Kiểu dữ liệu tiền tệ (currency type): hướng đến môi trường xínghiệp và cơ sở dữ liệu, Object Pascal hỗ trợ cách tính toán cho các ứng dụng xử

lý giao dịch về tài chính dựa trên kiểu dữ liệu currency

+ Kiểu dữ liệu variant (“không kiểu” hay “untyped data”): nếu ngại khai báo kiểu tường minh, ta có thể sử dụng biến kiểu variant dùng để chứa và

tính toán với mọi kiểu dữ liệu

- Thư viện các thành phần công cụ trực quan VCL (Visual ComponentLibrary) là bộ khung làm việc hướng đối tượng chủ yếu của Delphi TrongDelphi, mỗi đối tượng hay thành phần VCL được nắm kéo từ bảng công cụ gắnlên Form đều tương tác chặt chẽ với nhau thông qua các lớp đối tượng Đồng thời

có thể dễ dàng thay đổi cách ứng

xử của đối tượng một cách trực quan từ môi trường Delphi với giao diện đồ họathân thiện

Trang 10

2 Cấu trúc chương trình delphi và unit

– Chương trình được xây dựng từ các đa thể mã nguồn nhỏ được gọi làUnit Mỗi Unit chứa trong một tập tin và được biên dịch độc lập; Unit được biêndịch ra các thư viện: đó là các tập tin mang tên mở rộng DCU Đối với người lậptrình Pascal, các tập tin DCU hoàn toàn tương đương với tập tin thư viện củaPascal TPU Các Unit dùng để liên kết với nhau tạo ra ứng dụng

– Chương trình chính được lưu trong tập tin dự án (project) có phần mởrộng là DPR, còn hầu hết mã nguồn của chương trình lại nằm trong Unit với têntruyền thống PAS

* Thành ph n c a m t Project bao g m: ầu của đề tài ủa đề tài ộng (dll) ồ họa, in ấn, multimedia và các đối tượng có liên quan

a) DPR : file Project:

Li t kê t t c form và unit file trong Project.ệt kê tất cả form và unit file trong Project ất cả form và unit file trong Project ả form và unit file trong Project

L u gi mã c a các ng d ng.ưu giữ mã của các ứng dụng ữ mã của các ứng dụng ủa các ứng dụng ứng dụng ụng

b) PAS : Mã ngu n cho Unit.ồn cho Unit

M t file PAS đ c t o ra cho m i form trong Project File này ch aưu giữ mã của các ứng dụng.ợc tạo ra cho mỗi form trong Project File này chứa ạo ra cho mỗi form trong Project File này chứa ỗi form trong Project File này chứa ứng dụng

t t c các khai báo và th t c.ất cả form và unit file trong Project ả form và unit file trong Project ủa các ứng dụng ụng

c) DFM : file l u d ng form.ưu giữ mã của các ứng dụng ạo ra cho mỗi form trong Project File này chứa

Là file nh phân, ch a nh ng thu c tính c a form trong Project.ị phân, chứa những thuộc tính của form trong Project ứng dụng ữ mã của các ứng dụng ủa các ứng dụng

c t o d a trên s t ng ng c a file.PAS cho m i form

Đưu giữ mã của các ứng dụng.ợc tạo ra cho mỗi form trong Project File này chứa ạo ra cho mỗi form trong Project File này chứa ựa trên sự tương ứng của file.PAS cho mỗi form ựa trên sự tương ứng của file.PAS cho mỗi form ưu giữ mã của các ứng dụng.ơng ứng của file.PAS cho mỗi form ứng dụng ủa các ứng dụng ỗi form trong Project File này chứa

d) OPT : file tùy ch n c a Project File v n b n, ch a nh ng cài đ t hi nọn của Project File văn bản, chứa những cài đặt hiện ủa các ứng dụng ăn bản, chứa những cài đặt hiện ả form và unit file trong Project ứng dụng ữ mã của các ứng dụng ặt hiện ệt kê tất cả form và unit file trong Project.hành cho tùy ch n c a Project.ọn của Project File văn bản, chứa những cài đặt hiện ủa các ứng dụng

e) RES : Compiler resource file File nh phân, ch a nh ng bi u t ngị phân, chứa những thuộc tính của form trong Project ứng dụng ữ mã của các ứng dụng ểu tượng ưu giữ mã của các ứng dụng.ợc tạo ra cho mỗi form trong Project File này chứa

ng d ng và nh ng tài nguyên khác

ứng dụng ụng ữ mã của các ứng dụng

 ~DP : file lưu của Project.DP : file l u c a Project.ưu giữ mã của các ứng dụng ủa các ứng dụng

 ~DP : file lưu của Project.PA : File l u c a Unit.ưu giữ mã của các ứng dụng ủa các ứng dụng

 ~DP : file lưu của Project.DF : file l u c a Graphic form.ưu giữ mã của các ứng dụng ủa các ứng dụng

 DSK : file cài đ t màn hình.ặt hiện

 EXE : file th c thi cho ng d ng, nh ng file này s sát nh p v i nh ngựa trên sự tương ứng của file.PAS cho mỗi form ứng dụng ụng ữ mã của các ứng dụng ẽ sát nhập với những ập với những ới những ữ mã của các ứng dụng.file DCU (đi u này có ngh a ng d ng không c n file DCU khi th c thi).ều này có nghĩa ứng dụng không cần file DCU khi thực thi) ĩa ứng dụng không cần file DCU khi thực thi) ứng dụng ụng ần VII: KẾT LUẬN ựa trên sự tương ứng của file.PAS cho mỗi form

 DCU : file mã đ i t ng đ n v ối tượng đơn vị Được tạo ra khi biên dịch file.PAS ưu giữ mã của các ứng dụng.ợc tạo ra cho mỗi form trong Project File này chứa ơng ứng của file.PAS cho mỗi form ị phân, chứa những thuộc tính của form trong Project Đưu giữ mã của các ứng dụng.ợc tạo ra cho mỗi form trong Project File này chứa ạo ra cho mỗi form trong Project File này chứac t o ra khi biên d ch file.PASị phân, chứa những thuộc tính của form trong Project

t ng ng.ưu giữ mã của các ứng dụng.ơng ứng của file.PAS cho mỗi form ứng dụng

Trang 11

 DLL : file liên k t đ ng.ết động.

Ngoài ra còn m t s file h tr nh :ối tượng đơn vị Được tạo ra khi biên dịch file.PAS ỗi form trong Project File này chứa ợc tạo ra cho mỗi form trong Project File này chứa ưu giữ mã của các ứng dụng

 Image file ( BMP, WMF ): là file bitmap, th hi n khi s d ng cácểu tượng ệt kê tất cả form và unit file trong Project ử dụng các ụng.thành ph n lo i Timage, nó có th n m b t c n i đâu Khi c n thi t, Delphi cóần VII: KẾT LUẬN ạo ra cho mỗi form trong Project File này chứa ểu tượng ằm bất cứ nơi đâu Khi cần thiết, Delphi có ất cả form và unit file trong Project ứng dụng ơng ứng của file.PAS cho mỗi form ần VII: KẾT LUẬN ết động

th ch p m t " b c nh" file trên đ a và nó l u gi trên file DFM và nó s phiênểu tượng ụng ứng dụng ả form và unit file trong Project ĩa ứng dụng không cần file DCU khi thực thi) ưu giữ mã của các ứng dụng ữ mã của các ứng dụng ẽ sát nhập với những

d ch vào trong file th c thi.ị phân, chứa những thuộc tính của form trong Project ựa trên sự tương ứng của file.PAS cho mỗi form

 Icon files ( ICO), Help files ( HLP ) : t ng t nh Image file.ưu giữ mã của các ứng dụng.ơng ứng của file.PAS cho mỗi form ựa trên sự tương ứng của file.PAS cho mỗi form ưu giữ mã của các ứng dụng

3 Lệnh điều khiển trong object pascal

* Lệnh with: dùng để phân rã các cấu trúc phức hợp của một thành phần.

* Lệnh điều kiện gồm lệnh if và lệnh case: dùng để rẻ nhánh chương trình

theo một tiêu chuẩn nào đó

* Lệnh lặp gồm lệnh repeat, ưhile và for: dùng để quay trở lại thực hiện

mã lệnh vơi một điều kiện nào đó

* Lệnh ngắt break và continue: được sử dụng bên trong vòng lặp repeat, ưhile và for.

* Các nhóm lệnh đặc biệt khác như raise, try except và try final: dùng

để xử lý những lỗi ngoại lệ (exception) phát sinh trong khối lệnh

4 Các kiểu dữ liệu trong ngôn ngữ object pascal

4.1 Kiểu dữ liệu đơn giản

* Kiểu thứ tự: gồm integer, char, boolean, kiểu liệt kê và kiểu tập con

* Kiểu số nguyên Integer

* Kiểu kí tự Char: Delphi có 2 kiểu kí tự cơ sở là AnsiChar và WideChar.

- AnsiChar là kiểu kí tự 1 byte (tương tự bộ kí tự ASCII)

- WideChar là kiểu kí tự 2 byte, dùng biểu diễn bộ mã Unicode chotập hợp kí tự

* Kiểu boolean: gồm

Trang 12

- ByteBool tương đương với giá trị luận lý kiểu byte có kích thước 1byte.

- WordBool tương đương với giá trị luận lý kiểu Word có kích thước 2byte

- LongBool tương đương với giá trị luận lý kiểu LongInt có kíchthước 4 byte

* Kiểu liệt kê: để khai báo ta sử dụng cú pháp sau

Type typeName = (val 1, , val n )

Với typeName là tên kiểu (hay tên tập hợp); val là định danh hay tên gọi

của các phần tử tự do người lập trình tự đặt

* Kiểu tập con: là một định nghĩa thu hẹp của các kiểu thứ tự khác Các

toán tử áp dụng trên kiểu thứ tự đều có thể áp dụng cho kiểu tập con tương ứng

* Tập hợp (Sets): là một tập các giá trị cùng kiểu thứ tự Mỗi biến kiểu tập

hợp có thể chứa nhiều phần tử của tập hợp

Cú pháp: set of baseType

Trong đó baseType là kiểu thứ tự bất kì (thường là tập con) có số phần tử

không quá 256

* Mảng (Array): dùng để biểu diễn một tập hợp các phần tử có cùng kiểu

dữ liệu Các phần tử mảng được truy xuất theo chỉ số, mỗi phần tử tương ứngvới một chỉ số duy nhất Mảng có thể được cấp phát tĩnh và cấp phát động vùngnhớ để lưu trữ các giá trị mà nó nắm giữ

- Cú pháp xây dựng mảng tĩnh: array [indexType 1, , indexType n] of baseType

Trong đó indexType là một tập các số có kiểu thứ tự (hay bất kỳ các tập con thứ tự khác không vượt quá 2 GB) dùng làm chỉ số mảng

baseType là kiểu dữ liệu chung cho các phần tử của mảng.

- Cú pháp xây dựng mảng động: array of baseType

Trong đó baseType là kiểu dữ liệu của các phần tử mảng.

* Bản ghi (Record): là một tập hợp gồm nhiều phần tử có các kiểu khác

nhau hợp lại Mỗi phần tử trong cấu trúc bản ghi được gọi là trường (field) Khaibáo kiểu bản ghi sẽ chỉ định tên và kiểu cho mỗi trường

Trang 13

Cú pháp: type recordTypeName = record

fieldList 1 : type 1;

fieldList n : type n;

end;

Trong đó recordTypeName là tên kiểu bản ghi do người sử dụng đặt.

fieldList n cho biết tên trường mà bản ghi lưu trữ

type n cho biết kiểu dữ liệu tương ứng với trường.

* Kiểu tập tin (File): bao gồm một tập hợp các phần tử có cùng kiểu được

lưu thành tập tin trên đĩa

Cú pháp: type fieldTypeName = file of type

Trong đó fieldTypeName là tên định danh của kiểu file.

type là các kiểu có kích thước cố định.

4.5 Con trỏ và kiểu con trỏ

* Con trỏ là một biến lưu giữ địa chỉ của một vùng nhớ

* Cú pháp khai báo kiểu con trỏ: type pointerTypeName = ^type

4.6 Kiểu thủ tục (procedural type)

Kiểu thủ tục cho phép sử dụng hàm, thủ tục như một giá trị Có thể thựchiện các phép gán hàm và thủ tục cho biến, truyền tên hàm và thủ tục như mộtđối số trong các lời gọi hàm khác

5 Hàm và thủ tục

Thủ tục (procedure) và hàm (function) thường được xem như các thườngtrình (routines) Bản thân chúng là những khối lệnh có thể được gọi từ những vịtrí khác nhau của chương trình

Hàm là một thường trình trả về trị, sau khi thực thi xong khối lệnh

Thủ tục là thường trình chỉ dùng thực thi khối lệnh mà không trả về trị

5.1 Khai báo thủ tục

Khai báo thủ tục theo khuôn mẫu sau:

Trang 14

procedure procedureName(parameterList); directives;

localDeclaration;

begin

statements

end;

trong đó procedureName là tên của thủ tục.

parameterList là danh sách các tham số truyền cho thủ tục directives là các chỉ dẫn để gọi thủ tục.

localDeclaration là các khai báo biến cục bộ bên trong thủ tục statements sẽ được thực thi khi gọi đến thủ tục.

5.2 Khai báo hàm

Khai báo hàm theo khuôn mẫu sau:

function functionName(parameterList): returnType;directives;

localDeclaration;

begin

statements

end;

trong đó functionName là tên của hàm.

parameterList là danh sách các tham số truyền cho hàm.

returnType là kiểu dữ liệu mà hàm trả về.

Directives là các chỉ dẫn để gọi hàm.

localDeclaration là các khai báo biến cục bộ bên trong hàm statements là tập hợp các khối lệnh thể hiện phần thân của hàm

5.3 Các qui ước gọi hàm và thủ tục

Khi khai báo hàm hay thủ tục, ta có thể khai báo thêm các “qui ước gọi

hàm” bằng những chỉ thị (directives) kèm theo như register, pascal, cdecl, stdcall, safecall

Qui ước gọi hàm sẽ qui định cách đặt và lấy các tham số truyền cho hàmhay thủ tục ra khỏi ngăn xếp (stack) của chương trình gọi

(hay thủ tục) vào ngăn xếp theo thứ tự từ trái sang phải

+ chỉ thị cdecl, stdcall, safecall sẽ gọi hàm và đặt các tham số

vào ngăn xếp theo thứ tự từ phải sang trái

5.4 Khai báo trước (forward)

Chỉ thị forward đặt sau một hàm hay thủ tục đại diện cho khối lệnh chưa

được khai báo của hàm hay thủ tục

Trang 15

Mục đích của khai báo forward là để mở rộng phạm vi hoạt động của hàm

và thủ tục Nó cho phép chương trình gọi đến hàm trước khi thân hàm hay thủ tụcđược định nghĩa chi tiết

5.5 Khai báo ngoài (external)

Chỉ thị external được dùng để báo cho trình biên dịch biết thân hàm hay thủ

tục được cài đặt ở một nơi khác

Các hàm hay thủ tục khai báo external có phần định nghĩa và cài đặt thân

hàm từ một ngôn ngữ khác thông qua tập tin mã nhị phân OBJ hay thư viện liênkết động DLL

- Khai báo external với thư viện liên kết động DLL theo khuôn mẫu sau: FunctionDeclaration external StringConstant

Trong đó FunctionDeclaration là các khai báo hàm thông thường.

StringConstant là một hằng chuỗi cho biết tên tập tin DLL (có

thể bao gồm cả đường dẫn đầy đủ)

6 Form và các thành phần điều khiển

6.1 Xây dựng ứng dụng từ những thành phần công cụ trực quan VCL

Một đối tượng VCL thường bao gồm phương thức (method), thuộc tính(property) và các tình huống (event) để phản ứng lại với sự tương tác từ phíangười dùng

6.2 Các thành phần điều khiển của Windows

Những đối tượng này có thể được tìm thấy trên bảng công cụ Standard Đây

là những đối tượng chuẩn giúp người dùng tương tác với giao diện đồ họa trongWindows được dễ dàng và thuận tiện hơn

Sau đây là những tính năng của các đối tượng:

- Nút nhấn (Button): được sử dụng với nhiều biến tấu khác nhau như các

nút trên thanh công cụ, trên thanh taskbar, hay kết hợp để tạo nên một công cụmới như thanh trượt (Scrollbar) Nút nhấn được đặt trong lớp đối tượng có tên làTBUTTON

- Nhãn (Label): dùng để trình bày một chuỗi văn bản thông thường, nhằm

mục đích mô tả thêm thông tin cho các đối tượng khác Nhãn được đặt trong lớpđối tượng có tên là TLABEL

Trang 16

- Ô đánh dấu (CheckBox): cho phép người dùng chọn hoặc bỏ một yêu

cầu nào đó Nó cho phép kết hợp nhiều tùy chọn với nhau Lớp đối tượng có tênTCHECKBOX

- Ô chọn (RadioButton): các ô chọn (radio) thường đi chung với nhau và

mỗi lần bạn chỉ thể hiện được trạng thái chọn cho một nút chọn Lớp đối tượng

có tên TRADIOBUTTON

- Ô văn bản (Editbox): cho phép nhập vào chuỗi văn bản, chỉnh sửa, di

chuyển con nháy để soạn thảo bằng các phím mũi tên Chỉ được phép nhập mộtdòng văn bản duy nhất cho ô văn bản Lớp đối tượng có tên TEDITBOX

- Vùng văn bản (Memo): cho phép nhập vào cùng lúc nhiều dòng dữ liệu.

Lớp đối tượng có tên TMEMO

- Danh sách (ListBox): cho phép chứa một danh sách các mục chọn Mỗi

mục chọn thường được thể hiện là một chuỗi ListBox cho phép mỗi lần đượcchọn một hoặc nhiều mục chọn cùng lúc Lớp đối tượng có tên TLISTBOX

- Danh sách xổ (ComboBox): chỉ cho phép mỗi lần thể hiện được một

mục và là mục đang ở trạng thái chọn Lớp đối tượng có tên TCOMBOBOX

- Thanh trượt (Scrollbar): được dùng để định vị, cuộn trang, đo mức độ

công việc, xem các vùng không gian bị che khuất bởi phạm vi hạn hẹp của cửa

sổ Lớp đối tượng có tên TSCROLLBAR

- Nhóm các ô chọn (RadioGroup): đối tượng này giúp cho việc gom các

nút chọn có cùng một chức năng lại với nhau thành một nhóm duy nhất Lớp đốitượng có tên TRADIOGROUP

- Nhóm các đối tượng (GroupBox): được dùng để phân loại đối tượng

theo chủ đề, đồng thời có thể nhóm các đối tượng như nút nhấn, checkbox,listbox, lại với nhau Lớp đối tượng có tên là TGROUPBOX

- Bảng chứa (Panel): tương tự như chức năng của TGroupBox, bảng chứa

được dùng để gom, nhóm các đôí tượng con lại với nhau Tuy nhiên bảng chứakhông có tiêu đề caption đặt trên cùng như TGroupBox Lớp đối tượng có tênTPANEL

- Trình đơn chính (MainMenu): là một dãy các lựa chọn nằm phía trên

cửa sổ Khi kích chuột vào một lựa chọn nào đó, sẽ có một danh sách các mụcchọn khác xổ xuống Chọn một mục trên trình đơn, cũng đồng nghĩa với việc yêucầu chương trình thực hiện một tác vụ nào đó Tên đối tượng là TMAINMENU

Trang 17

- Trình đơn tắt (PopupMenu): thường hiển thị khi người dùng kích phím

phải chuột lên Form hoặc lên một đối tượng nào đó Đối tượng có tên làTPOPUPMENU

7 Lập trình đồ họa, in ấn, multimedia và các đối tượng có liên quan

7.1 Đối tượng TIMAGE

Thành phần đối tượng TIMAGE (nằm trên bảng công cụ Additional)cho phép thể hiện rất nhiều loại hình ảnh khác nhau Với một đối tượng TImagetrên Form, ta có thể nạp vào các hình ảnh bitmap, ảnh biểu tượng, và kể cảảnh JPG (hay JPEG), GIF

7.2 In ấn

Đối tượng TPrinter được dùng để in ấn mọi hình ảnh đồ họa, văn bản, tài

liệu ra máy in một cách rất dễ dàng và thuận tiện

7.3 Lập trình Multimedia

Đối tượng TMediaPlayer: nằm trên bảng công cụ System, có khả năng chơi

hầu hết các dạng tập tin multimedia, từ âm thanh cho đến phim ảnh,như wav, mini, dat, avi Thành phần VCL này hầu như có đầy đủ các chứcnăng tương đương với chương trình CD nhạc, CD phim như các phần mềm hiệnnay như WINAMP, CDPlayer, JetAudio Đối tượng TMediaPlayer thường baogồm một tập hợp các nút nhấn điều khiển thông dụng như Play, Stop, Pause

7.4 Đối tượng TSpliter

Đối tượng TSpliter (vạch phân cách): cho phép người lập trình phân cách

hai đối tượng được canh lề (align) với nhau Khi di chuyển chuột đến vạch phâncách, ta có thể co giãn kích thước hai biên của đối tượng canh lề

TSpliter nằm trên bảng công cụ Additional

8 Thư viện liên kết động (dll)

8.1 Thư viện DLL

Thư viện liên kết động là các đơn thể chương trình chứa mã lệnh, dữ liệuhoặc tài nguyên được dùng để chia sẻ giữa các ứng dụng Windows với nhau.DLL cho phép ứng dụng nạp và điều khiển mã lệnh vào lúc chương trìnhthực thi thay vì phải liên kết mã lệnh vào lúc biên dịch chương trình

DLL chia sẻ mã lệnh, tài nguyên và dữ liệu giữa nhiều tiến trình Do vậy,các chương trình ứng dụng khác nhau có thể đồng thời gọi đến hàm hay truy xuấttài nguyên do một DLL cung cấp

Trang 18

8.2 So sánh giữa liên kết tĩnh và liên kết động

DLL mới mà không cần phải biên

dịch lại toàn bộ chương trình EXE

- Mã lệnh thực thi của hàm (thủ tục)nằm trong tập tin exe

- Không gọi được từ bên ngoài và từcác ứng dụng khác

- Chiếm nhiều bộ nhớ

- Mỗi khi cập nhật hoặc nâng cấp ứngdụng thì phải biên dịch lại toàn bộchương trình EXE

* Hiển thị Form chứa trong DLL.

Nếu chương trình ứng dụng cần nhiều cửa sổ Form để xây dựng giao diệnphức tạp, thì việc đặt tất cả Form trong chương trình chính sẽ làm cho tập tin exephình to về kích thước Vì vậy, có thể đặt Form vào bên trong DLL và gọi hiểnthị Form từ chương trình chính

Có hai cách để hiển thị Form chứa trong DLL:

+ Hiển thị Form ở dạng modeless: khi Form phụ ở dạng modeless, người sửdụng có thể quay lại tương tác với Form chính trong khi Form phụ đang hiển thị.+ Hiển thị Form ở dạng dạng model: người sử dụng không thể quay vềtương tác với cửa sổ Form chính nếu cửa sổ Form phụ chưa được đóng lại

9 Giới thiệu về WIN32 API và hệ thống thông điệp

* API (Application Programming Interface), còn gọi là Giao tiếp lập trình

ứng dụng, là tập hợp các lời gọi hàm cấp cao do hệ điều hành Windows cungcấp

Sử dụng Win32 API trong Delphi cần khai báo hai Unit Windows và Messages trong mệnh đề USES ở đầu chương tình như sau:

Trang 19

Uses Windows, Messages;

Trong đó thư viện Windows chứa các khai báo hàm Windows API, thư viện Messages chứa các khai báo hằng và kiểu dữ liệu.

* Thông điệp

Thông điệp là một mẫu tin báo hiệu do Windows phát sinh và gửi đến cửa

sổ ứng dụng và hàm WndProc chính là nơi tiếp nhận và xử lý các thông điệp đó.Mỗi thông điệp chuẩn của Windows là một hằng số bắt đầu bằng tiếp đầungữ WM_ Mỗi thông điệp đều có ý nghĩa và cách thức xử lý khác nhau

WM_KEYUP: Nút bàn phím được nhả ra

Trang 20

Phần II: TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬ T

II.1 GIỚI THIỆU

1 Giải thuật và cấu trúc dữ liệu

Giải thuật là một dãy các câu lệnh chặt chẽ và rõ ràng xác định một trình tựcác thao tác trên một số đối tượng nào đó sao cho sau một số hữu hạn bước thựchiện ta đạt được kết quả mong muốn

Việc giải thuật đó được tác động lên dữ liệu nào và dữ liệu ấy cần được tácđộng giải thuật gì để đưa tới kết quả tốt Như vậy giữa cấu trúc dữ liệu và giảithuật có mối quan hệ mật thiết Chính điều đó đã dẫn tới việc cần nghiên cứu cáccấu trúc dữ liệu đi đôi với việc xác lập các giải thuật xử lý trên các cấu trúc ấy

2 Cấu trúc dữ liệu và các vấn đề liên quan

Trong một bài toán, dữ liệu bao gồm một tập các phần tử cơ sở gọi là dữliệu nguyên tử Lựa chọn một cấu trúc dữ liệu thích hợp để tổ chức dữ liệu vào vàtrên cơ sở đó xây dựng được giải thuật xử lý hữu hiệu đưa tới kết quả mongmuốn cho bài toán, đó là khâu rất quan trọng

Cách biểu diễn một cấu trúc dữ liệu trong bộ nhớ được gọi là cấu trúc lưutrữ Đó chính là cách cài đặt cấu trúc ấy trên máy tính và trên cơ sở các cấu trúclưu trữ này mà thực hiện các phép xử lý

3 Các tiêu chuẩn đánh giá cấu trúc dữ liệu

Một cấu trúc dữ liệu tốt phải thỏa mãn các tiêu chuẩn sau:

- Phản ánh đúng thực tế: Đây là tiêu chuẩn quan trọng nhất, quyết định tínhđúng đắn của toàn bộ bài toán

- Phù hợp với các thao tác trên đó: tiêu chuẩn này giúp tăng tính hiệu quảcủa đề án: việc phát triển các thuật toán đơn giản, tự nhiên hơn; chương trình đạthiệu quả cao hơn về tốc độ xử lý

- Tiết kiệm tài nguyên hệ thống: thông thường có 2 loại tài nguyên cần lưutâm nhất: CPU và bộ nhớ

4 Đánh giá độ phức tạp giải thuật

Trang 21

Cần tìm những phương pháp đánh giá thuật toán ít phụ thuộc môi trườngcũng như phần cứng hơn Một phương pháp như vậy là phương pháp đánh giáthuật toán theo hướng xấp xỉ tiệm cận qua các khái niệm toán học O(), o(), Hầu hết các thuật toán đều có một tham số chính là N, thông thường đó là

số lượng các phần tử dữ liệu được xử lý mà ảnh hưởng rất nhiều tới thời gianchạy Hầu hết tất cả các thuật toán trong giáo trình này có thời gian chạy tiệm cậntới một trong các hàm sau: hằng số, logN, N, NlogN, N2, N3, 2N

II.2 SẮP XẾP VÀ TÌM KIẾM

Trong hầu hết các hệ lưu trữ, quản lý dữ liệu, thao tác tìm kiếm thườngđược thực hiện nhiều nhất để khai thác thông tin

Ví dụ: tra cứu từ điển, tìm sách trong thư viện

Do các hệ thống thông tin thường phải lưu trữ một khối lượng dữ liệu đáng

kể, nên việc xây dựng các giải thuật cho phép tìm kiếm nhanh sẽ có ý nghĩa rấtlớn Nếu dữ liệu trong hệ thống đã được tổ chức theo một trật tự nào đó, thì việctìm kiếm sẽ tiến hành nhanh chóng và hiệu quả hơn

Ví dụ: các từ trong từ điển được sắp xếp theo từng vần, trong mỗi vần lạiđược sắp xếp theo thứ tự bảng chữ cái; sách trong thư viện được xếp theo chủ đề,tên tác giả

Hiện nay đã có nhiều giải thuật tìm kiếm và sắp xếp được xây dựng, mức

độ hiệu quả của từng giải thuật còn phụ thuộc vào tính chất của cấu trúc dữ liệu

cụ thể mà nó tác động đến Dữ liệu được lưu trữ chủ yếu trong bộ nhớ chính vàtrên bộ nhớ phụ do đặc điểm khác nhau của thiết bị lưu trữ, các thuật toán sắpxếp và tìm kiếm được xây dựng cho các cấu trúc lưu trữ trên bộ nhớ chính hoặcphụ cũng có những đặc thù khác nhau Các thuật toán sắp xếp được phân thànhhai nhóm chính là:

- Sắp thứ tự nội: toàn bộ dữ liệu cần sắp thứ tự phải được đưa vào trong bộnhớ chính, nên thời gian để sắp thứ tự tương đối nhanh

- Sắp thứ tự ngoại: một phần các dữ liệu cần sắp thứ tự được đưa vào trong

bộ nhớ chính, phần dữ liệu còn lại được lưu trữ ở trên bộ nhớ ngoài Thời gian đểsắp thứ tự tương đối chậm

1.Một số giải thuật sắp xếp

Sắp xếp là quá trình xử lý một danh sách các phần tử (hoặc các mẫu tin) đểđặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dungthông tin lưu giữ tại mỗi phần tử Một số phương pháp sắp xếp thông dụng như:

Trang 22

+ Sắp xếp kiểu lựa chọn (Selection Sort)

+ Sắp xếp kiểu thêm dần (Insertion Sort)

+ Sắp xếp kiểu đổi chỗ (Exchange Sort)

+ Sắp xếp kiểu nổi bọt (Bubble Sort)

+ Sắp xếp kiểu phân đoạn (Quick Sort)

+ Sắp xếp kiểu vun đống (Heap Sort)

+ Sắp xếp kiển hòa nhập (Merge Sort)

+ Sắp xếp với độ dài bước giảm dần (Shell Sort)

+ Sắp xếp theo phương pháp cơ số (Radix Sort)

Nhận xét và đánh giá các thuật toán sắp xếp:

Phần lớn các thuật toán sắp xếp cơ bản dựa trên sự so sánh giá trị giữa cácphần tử Đó là các thuật toán chọn lựa, thêm dần, nổi bọt, đổi chỗ Các thuật toánnày đều có một điểm chung là chi phí thực hiện chung là tỉ lệ với n2

Các thuật toán shell-sort (cải tiến của phương pháp thêm dần), heap-sort(cải tiến của phương pháp chọn lựa) lại có độ phức tạp nhỏ hơn hẳn các thuậttoán gốc Thuật toán shell-sort có độ phức tạp O(nx) với 1  x  2 và thuật toánheap-sort có độ phức tạp O(nlog2n)

Các thuật toán merge-sort và quick-sort là những thuật toán thực hiện theochiến lược chia để trị Cài đặt chúng tuy phức tạp hơn các thuật toán khác nhưngchi phí thực hiện lại thấp, cả hai thuật toán đều có độ phức tạp O(nlog2n) Merge-sort có nhược điểm là cần dùng thêm bộ nhớ đệm Thuật toán này sẽ phát huy tốt

ưu điểm khi cài đặt trên các cấu trúc dữ liệu khác phù hợp hơn như danh sáchliên kết hay phi Thuật toán quick-sort được đánh giá là thuật toán sắp xếp nhanhnhất trong số các thuật toán sắp xếp dựa trên nền tảng so sánh giá trị của cácphần tử Tuy có chi phí trong trường hợp xấu nhất là O(n) nhưng trong kiểmnghiệm thực tế, thuật toán quick-sort chạy nhanh hơn hai thuật toán cùng nhómO(nlog2n) là merge-sort và heap-sort

Thuật toán Radix-sort là một thuật toán được phát triển theo hướng khácvới các thuật toán trên Nó được phát triển dựa trên mô phỏng qui trình phân phốithư của người đưa thư Thuật toán này đại diện cho nhóm các thuật toán sắp xếp

có độ phức tạp tuyến tính Tuy nhiên, thường thì các thuật toán này không thíchhợp cho việc cài đặt trên cấu trúc dữ liệu mảng một chiều

2 Các giải thuật tìm kiếm nội

Thông thường các dữ liệu được phân chia thành các bản ghi, mỗi bản ghi cómột khoá được sử dụng trong việc tìm kiếm Vấn đề của việc tìm kiếm là tìm tất

Trang 23

cả các mẩu tin có cùng khoá k cho biết trước để truy xuất nội dung của bản ghi.Công việc tìm kiếm sẽ hoàn thành khi có một trong hai tình huống sau xảy ra:

- Tìm được bản ghi có giá trị khóa tương ứng, lúc đó ta nói: phép tìm kiếmđược thỏa

- Không tìm được bản ghi nào có giá trị khóa tương ứng: phép tìm kiếmkhông thỏa Sau khi phép tìm kiếm không thỏa có khi xuất hiện yêu cầu bổ sungthêm bản ghi mới có khóa không tìm thấy vào bảng Giải thuật thể hiện cả yêucầu này được gọi là giải thuật “Tìm kiếm có bổ sung”

Ta có một số thuật toán tìm kiếm như:

+ Tìm kiếm tuần tự

+ Tìm kiếm nhị phân

+ Tìm kiếm dựa vào giá trị khóa

Nhận xét và đánh giá các thuật toán tìm kiếm:

Giải thuật tìm nhị phân dựa vào quan hệ giá trị của các phần tử mảng đểđịnh hướng trong quá trình tìm kiếm, do vậy chỉ áp dụng được cho những dãy đã

II.3 CẤU TRÚC CÂY

1 Định nghĩa và khái niệm

* Định nghĩa cây

Cây là một tập hợp T rỗng hoặc gồm nhiều phần tử được gọi là nút, trongđó:

- Một nút được gọi là nút gốc (root)

- Các nút còn lại được phân chia thành m nhóm (m>=0), mỗi nhóm là mộtcây và được gọi là cây con

Trang 24

Trong đó nút có thể được xem như là một phần tử của một danh sách và cóthể có kiểu bất kỳ Các nút được biểu diễn bởi một ký tự chữ, một chuỗi, một sốghi trong một vòng tròn Giữa các nút có một quan hệ phân cấp gọi là “quan hệcha con”, các nút ngay bên trên trực tiếp là nút cha, các nút ngay bên dưới trựctiếp là các con của nút đó Một cây không có một nút nào cả gọi là cây rỗng

* Một số khái niệm cơ bản

- Bậc của một nút: là số cây con của nút đó

- Bậc của một cây: là bậc lớn nhất của các nút trong cây (số cây con tối đacủa một nút thuộc cây) Cây có bậc n thì gọi là cây n-phân

- Nút gốc: là nút không có nút cha

- Nút lá: là nút có bậc bằng 0

- Nút nhánh: là nút có bậc khác 0 và không phải là gốc

- Rừng cây: là tập hợp nhiều cây trong đó thứ tự các cây là quan trọng

2 Các cách biểu diễn cây

Để biểu diễn một cây, ta có nhiều cách:

a) Biểu diễn cây bằng đồ thị b) Biểu diễn cây bằng giản đồ c) Biểu diễn cây bằng các dấu ngoặc lồng nhau d) Biểu diễn cây bằng phương pháp Indentation e) Biểu diễn cây bằng chỉ số

3 Cây nhị phân

* Khái niệm: Cây nhị phân là một dạng quan trọng của cấu trúc cây Nó có

đặc điểm là: mọi nút trên cây chỉ có tối đa là hai cây con (cây con trái và cây conphải) Cây nhị phân là cây có thứ tự

3.1 Biểu diễn cây nhị phân

- Lưu trữ kế tiếp: cây được lưu trữ bằng một vectơ V với nút thứ i của cây

được lưu trữ ở V[i] Với cách lưu trữ này nếu biết được địa chỉ nút cha sẽ tínhđược địa chỉ nút con và ngược lại Tuy nhiên nếu cây nhị phân không đầy đủ thìcách lưu trữ này không thích hợp vì sẽ gây ra lãng phí do có nhiều phần tử nhớ

bỏ trống (ứng với cây con rỗng)

C

Trang 25

Biểu diễn phương pháp lưu trữ kế tiếp của cây nhị phân trên như sau:

V[1] V[2] V[3] V[4] V[5] V[6] V[7]

- Lưu trữ móc nối: mỗi nút của cây ứng với một phần tử nhớ gồm ba

trường là: trường INFO ứng với thông tin dữ liệu của nút; trường LPTR ứng vớicon trỏ trỏ tới cây con trái của nút đó; trường RPTR ứng với con trỏ trỏ tới câycon phải của nút đó Với cách biểu diễn này thì nút cha có thể truy nhập vào nútcon dễ dàng, nhưng ngược lại thì không làm được

Ví dụ: Với cây nhị phân trên ta có phương pháp lưu trữ móc nối như sau

3.2 Duyệt cây nhị phân

Có ba phép duyệt khác nhau đối với cây nhị phân

- Duyệt theo thứ tự trước: Kiểu duyệt này trước tiên thăm gốc sau đó thăm

các nút của cây con trái rồi đến cây con phải

- Duyệt theo thứ tự giữa: Kiểu duyệt này trước tiên thăm các nút của cây

con trái sau đó thăm nút gốc rồi đến cây con phải

- Duyệt theo thứ tự sau: Kiểu duyệt này trước tiên thăm các nút của cây

con trái sau đó thăm đến cây con phải rồi cuối cùng mới thăm nút gốc

4 Biểu diễn cây tổng quát bằng cây nhị phân

- Cây tổng quát: có đặc điểm là mọi nút trên cây có thể có nhiều hơn hai

cây con

- Nhược điểm của các cấu trúc cây tổng quát là bậc của các nút trên cây cóthể dao động trong một biên độ lớn, nên việc biểu diễn gặp nhiều khó khăn vàlãng phí Hơn nữa, việc xây dựng các thao tác trên cây tổng quát phức tạp hơntrên cây nhị phân nhiều Vì vậy, thường nếu không quá cần thiết phải sử dụngcây tổng quát, người ta chuyển cây tổng quát thành cây nhị phân

A

A B C D E È G

Trang 26

Ta có thể biến đổi một cây bất kỳ thành một cây nhị phân theo qui tắc sau:+ Giữ lại nút con trái nhất làm nút con trái.

+ Các nút con còn lại chuyển thành nút con phải

+ Như vậy, trong cây nhị phân mới, con trái thể hiện quan hệ cha con vàcon phải thể hiện quan hệ anh em trong cây tổng quát ban đầu

Khi đó cây tổng quát biểu diễn theo qui tắc trên được gọi là cây nhị phântương đương

Ví dụ: Cây tổng quát chuyển sang cây nhị phân

5 Cây nhị phân tìm kiếm

* Định nghĩa: Cây nhị phân tìm kiếm (CNPTK) là cây nhị phân trong đó

tại mỗi nút, khóa của nút đang xét lớn hơn khóa của tất cả các nút thuộc cây contrái và nhỏ hơn khóa của tất cả các nút thuộc cây con phải

Nhờ ràng buộc về khóa trên CNPTK, việc tìm kiếm trở nên có định hướng.Hơn nữa, do cấu trúc cây việc tìm kiếm trở nên nhanh đáng kể Nếu số nút trêncây là N thì chi phí tìm kiếm trung bình chỉ khoảng log2N

* Các thao tác trên cây nhị phân tìm kiếm:

a) Duyệt cây: Thao tác duyệt cây trên cây nhị phân tìm kiếm hoàn toàn

giống như trên cây nhị phân Chỉ có một lưu ý nhỏ là khi duyệt theo thứ tự giữa,trình tự các nút duyệt qua sẽ cho ta một dãy các nút theo thứ tự tăng dần củakhóa

b) Thêm một phần tử x vào cây: Việc thêm vào phải bảo đảm điều kiện ràng

buộc của CNPTK Ta có thể thêm vòa nhiều chỗ khác nhau trên cây, nhưng nếuthêm vào một nút lá sẽ là tiện lợi nhất do ta có thể thực hiện quá trình tương tựthao tác tìm kiếm Khi chấm dứt quá trình tìm kiếm cũng chính là lúc tìm đượcchỗ cần thêm

c) Hủy một phần tử có khóa x: Việc hủy một phần tử x ra khỏi cây phải bảo

đảm điều kiện ràng buộc của CNPTK Có 3 trường hợp khi hủy nút x có thể xảyra:

D G

H I J F

Trang 27

+ x là nút lá: chỉ đơn giản hủy x vì nó không móc nối đến phần tử nàokhác.

+ x chỉ có 1 con (trái hoặc phải): trước khi hủy x ta móc nối cha của xvới con duy nhất của nó

+ x có đủ cả 2 con: ta không thể hủy trực tiếp do x có đủ 2 con Vì vậy

ta sẽ hủy gián tiếp Thay vì hủy x, ta sẽ tìm một phần tử thế mạng y Phần tử này

có tối đa một con Thông tin lưu tại y sẽ được chuyển lên lưu tại x Sau đó, nút bịhủy thật sự sẽ là y giống như 2 trường hợp đầu

Vấn đề là phải chọn y sao cho khi lưu y vào vị trí của x, cây vẫn là CNPTK

Có 2 phần tử thỏa mãn yêu cầu: Phần tử nhỏ nhất (trái nhất) trên cây con phải vàphần tử lớn nhất (phải nhất) trên cây con trái

d) Tạo một cây CNPTK: Ta có thể tạo một cây nhị phân tìm kiếm bằng cách

lặp lại quá trình thêm 1 phần tử vào một cây rỗng

e) Hủy toàn bộ CNPTK: Việc toàn bộ cây có thể được thực hiện thông qua

thao tác duyệt cây theo thứ tự sau Nghĩa là ta sẽ hủy cây con trái, cây con phảirồi mới hủy nút gốc

6 Cây nhị phân cân đối

* Cây nhị phân cân đối hoàn toàn: là cây nhị phân tìm kiếm mà tại mỗi nút

của nó, số nút của cây con trái chênh lệch không quá một so với số nút của câycon phải

Nhận xét: Một cây khó đạt được trạng thái cân bằng hoàn toàn Tuy nhiên

nếu cây cân đối thì việc tìm kiếm sẽ nhanh, trong trường hợp xấu nhất ta chỉ phảitìm qua log2n phần tử (với n là số nút trên cây) Do cây cân đối hoàn toàn là mộtcấu trúc kém ổn định nên trong thực tế không thể sử dụng

* Cây nhị phân cân đối: là cây mà tại mỗi nút của nó độ cao của cây con

trái và của cây con phải chênh lệch không quá một

Nhận xét: Cây cân đối hoàn toàn là cây cân bằng Điều ngược lại không

đúng Tuy nhiên cây cân đối là cấu trúc dữ liệu ổn định hơn hẳn cây cân đối hoàntoàn Từ cây cân đối người ta đã phát triển thêm nhiều lại cấu trúc dữ liệu hữudụng khác như cây đỏ-đen, B-cây,

7 Cây nhị phân tìm kiếm tối ưu

Xây dựng cây nhị phân tìm kiếm tương ứng với các từ khóa Đối với các từkhóa có xác suất xuất hiện lớn thì cần phải được tìm thấy nhanh hơn, nghĩa làtương ứng với đường đi ngắn hơn Muốn thế gắn với mỗi khóa (nút) một trọng

Trang 28

số, đó chính là xác suất xuất hiện của khóa này trong tìm kiếm Và mục đích làxác định được cây nhị phân tìm kiếm sao cho tổng độ dài đường đi có trọng sốtương ứng với mọi nút trên cây (hay còn gọi là độ dài đường đi có trọng số củacây) có giá trị nhỏ nhất.

Tuy nhiên việc chọn một cây có trọng số nhỏ nhất là một công vệc khó thựchiện khi n khá lớn Vậy để giải quyết vấn đề này ta thực hiện theo nguyên tắcsau: “Đối với một cây nhị phân tìm kiếm tối ưu thì bất kỳ một cây con nào của nócũng phải là cây nhị phân tìm kiếm tối ưu ” Từ đó dẫn tới một giải thuật chophép dựng được cây nhị phân tìm kiếm tối ưu lớn dần lên bắt đầu từ một nút lá

mà ta gọi là kỹ thuật dựng cây nhị phân tìm kiếm tối ưu theo kiểu “từ đáy lên”(bottom up)

Phần III: TỔ CHỨC LƯU TRỮ CÂY TỪ ĐIỂN

Một cấu trúc dữ liệu khá điển hình và hợp lý với bài toán từ điển là: cấu trúccây từ điển Quản lý từ điển có dạng cây là kỹ thuật thường được sử dụng để xử

lý những từ điển lớn nhằm thu nhỏ dung lượng

Cây từ điển là tập hợp các bản ghi liên kết với nhau (còn gọi là phương pháplưu trữ móc nối) Mỗi bản ghi gọi là một nút trong cây Để quản lý cây từ điển ta

Ngày đăng: 27/02/2013, 16:41

HÌNH ẢNH LIÊN QUAN

Bảng chọn cõu trả lời.Mục hiển thị  - Xây dựng Chương trình học tiếng Nga
Bảng ch ọn cõu trả lời.Mục hiển thị (Trang 50)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w