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

Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh họa

55 774 0

Đ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 đề Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh họa
Tác giả Phan Thị Nhật
Người hướng dẫn Thạc sỹ Nguyễn Cụng Nhật
Trường học Trường Đại Học Vinh
Chuyên ngành Công nghệ Thông Tin
Thể loại Khoá luận tốt nghiệp
Năm xuất bản 2010
Thành phố Vinh
Định dạng
Số trang 55
Dung lượng 1,56 MB

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

Nội dung

Đặc biệt những năm gần đây, các thiết bị không dây với ưu thếnhỏ gọn, dễ vận chuyển đã chứng tỏ được lợi ích to lớn cho người sử dụng.Với sự phát triển nhanh chóng của công nghệ sản xuất

Trang 1

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Trường Đại học Vinh

to¸n nÐn d÷ liÖu, lËp tr×nh Mobile

vµ x©y dùng øng dông minh häa

Vinh - 2010

Mục lục

Trang 2

LỜI CẢM ƠN 3

MỞ ĐẦU 4

1 Lý do chọn đề tài 4

2 Mục đích nghiên cứu 4

3 Bố cục luận văn 4

4 Kết quả đạt được 5

5 Hướng phát triển đề tài 5

Chương 1: Tổng quan về lập trình Windows Mobile 6

1.1 Giới thiệu về Windows Mobile 6

1.2 Công cụ sử dụng 7

1.2.1 Thư viện lập trình 8

1.2.2 IDE soạn thảo code: 9

1.2.3 Thiết bị để kiểm tra ứng dụng 13

1.2.4 ActiveSync: 14

1.3 .Net Compact Framework 15

1.3.1 Một số hàm API: 17

1.3.2 Công cụ lập trình 18

1.3 Ngôn ngữ lập trình C# 19

1.3.1 Giới thiệu về C# 19

1.3.2 Tại sao phải sử dụng ngôn ngữ C# 20

Chương 2: Tổng quan về nén dữ liệu - Một số thuật toán nén dữ liệu 25

2.1.Giới thiệu chung về nén dữ liệu 25

2.1.1 Nguyên tắc của nén dữ liệu 25

2.1.2 Một số phương pháp nén dữ liệu 25

2.2 Chọn phương pháp nén 32

2.3 Mã hóa Huffman 32

Trang 3

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

2.3.4 Thuật toán xây dựng mã tiền tố 38

2.4 Giải thuật nén file 37

2.5 Giải thuật giải nén 39

Chương 3: Xây dựng ứng dụng nén file trên Mobile 38

3.1 Xây dựng chương trình ………38

3.2.Cài đặt và cấu hình các chương trình cho thiết bị giả lập ………40

3.2.1 Tải Windows Mobile 6 Professional Images (USA).msi … 40

3.2.2 Tải phần mềm Microsoft ActiveSync 4.5 (7,52 MB) ………41

3.2.3 Cấu hình, Từng bước, ( Step by Step) ……….42

3.2.3.1 Khởi động Windows Mobile 6 Professional SDK ………… 42

3.2.3.2 Khởi động Microsoft ActiveSync 4.5 & thiết lập cấu hình …45 3.2.3.3 Khởi động Device Emulator Manager & thiết lập cấu hình 46

3.3 Cài đặt softs cho máy ảo……… 47

3.3.1 Cài chương trình dạng exe………48

3.3.2 Cài chương trình dạng cab………48

3.3.3 Dạng copy lên máy hoặc thẻ nhớ ảo rồi chạy trực tiếp trong ppc không cần cài đặt………49

3.4 Ưu và nhược điểm của virual pocket PC……….50

KẾT LUẬN ……… 51

TÀI LIỆU THAM KHẢO 52

Trang 4

LỜI CẢM ƠN

Em xin chân thành cảm ơn ban chủ nhiệm khoa Công nghệ thông tin,các thầy cô giáo, gia đình và bạn bè đã động viên giúp đỡ em rất nhiều trongquá trình hoàn thành khóa luận này Đặc biệt em xin bày tỏ lòng cảm ơn sâu

sắc tới thầy giáo hướng dẫn Thạc sỹ Nguyễn Công Nhật về sự chỉ dẫn tận

tình và tận tâm hướng dẫn em từ những ý tưởng ban đầu cho đến lúc hoànthành khóa luận quan trọng này

Em xin bày tỏ lòng cảm ơn tới gia đình cùng bạn bè đã luôn quan tâmtin tưởng, động viên em trong suốt thời gian em làm đề tài này

Em rất mong đón nhận sự đánh giá, bổ sung và những lời chỉ bảo củacác thầy cô giúp em có thể tiếp tục nghiên cứu kĩ hơn về lĩnh vực này

Em xin chân thành cảm ơn!

Sinh viên

Phan Thị Nhật-47B-CNTT

Vinh, tháng 5/2010

Trang 5

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

MỞ ĐẦU

1 Lý do chọn đề tài

Công nghệ thông tin đang trở thành một phần quan trọng của cuộcsống Các thiết bị kĩ thuật cao ngày càng trở nên gần gũi với hoạt động củacon ngưòi Đặc biệt những năm gần đây, các thiết bị không dây với ưu thếnhỏ gọn, dễ vận chuyển đã chứng tỏ được lợi ích to lớn cho người sử dụng.Với sự phát triển nhanh chóng của công nghệ sản xuất thiết bị không dây thìsong hành với nó là các phần mềm ứng dụng chạy trên các thiết bị đó cũnglần lượt xuất hiện với nhiều phiên bản ngày càng hoàn thiện và nhiều tínhnăng hơn Điện thoại di động đã trở thành đa phương tiện đa chức năng ( nghenhạc, trò chơi, truyền và lưu trữ dữ liệu, ) phục vụ nhu cầu của người sửdụng mọi lúc, mọi nơi

Các thiết bị di động có kiến trúc gần giống như máy để bàn nhưngdung lượng lưu trữ dữ liệu thì nhỏ hơn rất nhiều Song người dùng luôn muốnlưu trữ được nhiều dữ liệu của mình Một trong các cách khắc phục điều đó lànén mỗi tệp tin đó lại Vì vậy, xuất phát từ ý tưởng đó em đã chọn đề tài: “

Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh hoạ.”

Chương 1: Tổng quan về lập trình Windows Mobile

1.1 Giới thiệu về Windows Mobile

1.2 Công cụ sử dụng

Trang 6

Chương 2: Tổng quan về nén dữ liệu - Một số thuật toán nén dữ liệu

2.1.Giới thiệu chung về nén dữ liệu

2.2 Một số phương pháp nén dữ liệu

2.3 Mã hóa Huffman

2.4 Giải thuật nén file

2.5 Giải thuật giải nén

Chương 3: Xây dựng ứng dụng nén file trên Mobile

3.1 Nén file dùng thuật toán Huffman

3.2.Cài đặt và cấu hình các chương trình cho thiết bị giả lập

Mặc dù đã có nhiều cố gắng, tìm hiểu các kiến thức đã học, kết hợp tra

cứu các tài liệu chuyên ngành và tài nguyên từ Internet Nhưng đề tài “Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh hoạ.” do hạn chế về mặt thời gian, khả năng và kinh nghiệm nên

không tránh khỏi những thiếu sót nhất định nên khoá luận đã hoàn thành ởmức độ sau:

+ Tìm hiểu ngôn ngữ lập trình C#

+ Xây dựng ứng dụng nén dữ liệu trên mobile

5 Hướng phát triển đề tài

Nghiên cứu, tìm hiểu sâu hơn về các công cụ và các giải pháp lập trìnhtrên mobile, xây dựng các ứng dụng thiết thực hỗ trợ người sử dụng

Trang 7

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Chương 1: Tổng quan về lập trình Windows Mobile

1.1 Giới thiệu về Windows Mobile

Windows Mobile là một hệ điều hành nhỏ gọn kết hợp với một bộ ứngdụng cơ bản cho thiết bị di động dựa trên Microsoft Win32 API Những thiết

bị chạy Windows Mobile bao gồm Pocket PC, Smartphones, Portable MediaCenters Nó được thiết kế tương tự như máy tính để bàn phiên bản Windows,tính năng thông minh và thẩm mỹ Ban đầu xuất hiện như là hệ điều hànhPocket PC 2000, Windows Mobile đã được cập nhật nhiều lần, với phiên bảnhiện tại là Windows Mobile 6.5

Các Pocket PC dự kiến ban đầu là nền tảng cho hệ điều hành WindowsMobile Các thiết bị này bao gồm cả hai thiết bị Pocket PC độc lập mà không

có khả năng như điện thoại di động, và những thiết bị có tính năng như điệnthoại di động Cái tên mới nhất của Windows Mobile dự định để sử dụng trênPocket PC chính thức "Windows Mobile 6 Professional" cho các thiết bị vớicác khả năng như điện thoại di động và "Windows Mobile 6 Classic" cho cácthiết bị mà không có khả năng điện thoại di động, các thiết bị mà không cómột màn hình cảm ứng được gọi là các thiết bị tiêu chuẩn Windows Mobile Phát triển phần mềm

Bên thứ ba phát triển phần mềm có sẵn cho hệ điều hành WindowsMobile Có nhiều lựa chọn cho nhà phát triển để sử dụng khi triển khai mộtứng dụng di động Nó bao gồm văn bản mã gốc với C#, viết code quản lý màlàm việc với các NET Compact Framework, hoặc Server side-code có thểđược triển khai sử dụng Internet Explorer Mobile hoặc khách hàng một điệnthoại di động trên thiết bị của người dùng Các NET Compact Frameworkthực sự là một tập hợp con của NET Framework Và vì thế nhiều thành phần

Trang 8

với cổ phần phát triển phần mềm trên máy tính để bàn của khách hàng, máychủ ứng dụng, và các máy chủ web mà có NET Framework

Microsoft thường phát hành Windows Mobile phát triển phần mềm(SDK) mà làm việc cùng với môi trường phát triển Visual Studio của họ.Những SDK bao gồm các hình ảnh mô phỏng cho các nhà phát triển để kiểmtra và gỡ lỗi các ứng dụng của họ trong khi viết chúng Microsoft cũng phânphối Visual Studio 2008 / 2005 Professional Edition, và máy chủ

1.2 Công cụ sử dụng

So với các nền tảng khác như Palm, Symbian, Linux - PPC được coi là dễlập trình nhất do chạy Windows nên cách lập trình không khác cho WindowsDesktop cho PC là mấy Nếu ai đã từng lập trình cho PC rồi (tất nhiên là choWindows chứ không phải DOS), nhất là nền tảng NET thì càng dễ, gần nhưkhông có khác biệt là mấy

Hiện nay tùy thuộc vào công nghệ sử dụng, các ứng dụng phát triển choPPC được chia thành 02 dòng chính như sau:

- Native application: Các ứng dụng được viết trên các ngôn ngữ lập trìnhkhông phải NET, như C, C++ và sử dụng các API của Windows Ưu điểmcủa các ứng dụng loại này là chương trình nhỏ gọn, khi cài đặt không cầnthêm các thư viện đi kèm, có khi chỉ cần copy nguyên file EXE là chạy Tuyvậy, các ứng dụng kiểu này khó viết hơn, do sử dụng các ngôn ngữ lập trìnhbậc thấp hơn (C, C++) Chỉ các ứng dụng thực sự cần sự nhỏ gọn, như cácdriver, các trình thường trú như keyboard, system… mới cần phát triển theokiểu này

- NET application: Như một sự cạnh tranh với sự phát triển ồ ạt và rấtthành công của ngôn ngữ lập trình Java, từ năm 2000, Microsoft đã bắt đầuphát triển nền tảng NET cho các ứng dụng, với mục tiêu dùng một nền tảng

Trang 9

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

điều hành Windows XP, Windows 2000, 2003 server đến WinMobile,Windows for Smart Phone đều hỗ trợ rất tốt NET Nếu bạn đã từng lậptrình NET cho Windows XP rồi thì chuyển sang Win Mobile chỉ cần tìm hiểuthêm một số thư viện làm việc với những đặc thù cho mobile là đã có thể pháttriển các ứng dụng được rồi Bạn có thể lựa chọn ngôn ngữ lập trình cho mìnhnhư C# một ngôn ngữ lập trình mang phong cách vừa giống C++ lại vừagiống Java, hoặc chọn Visual Basic nếu đã từng biết ngôn ngữ Basic Về cơ

sở dữ liệu, bạn có thể lựa chọn giữa SQL Server CE cho professional hoặcXML cho dữ liệu gọn nhẹ, đơn giản

- Ngoài ra, còn có một số nền tảng và ngôn ngữ lập trình của các hãngkhác nữa nhưng không phổ biến

Để lập trình NET, bạn cần sắm cho mình những công cụ sau đây:

- Bộ phần mềm Visual Studio.NET – phiên bản 2003, 2005 hoặc2008

- Các thư viện nâng cao có thể download trên Internet (mới bắt đầu cóthể chưa cần đến)

- Visual Studio.NET 2003 hỗ trợ NET Framework 1.1

- Visual Studio.NET 2005 hỗ trợ NET Framework 2.0

- Visual Studio.NET 2008 hỗ trợ NET Compact Framework 2.0 sp2

và 3.5

1.2.1 Thư viện lập trình

Với lập trình Windows Mobile, ở đây ta cần phải có là bộ WindowsMobile SDK Tùy vào mỗi phiên bản của hệ điều hành Windows Mobile, màMicrosoft cung cấp cho ta một bộ SDK tương ứng

Một bộ SDK thường chứa:

- Tài liệu và các ví dụ cụ thể

- Các hàm API (Application Programming Interface)

- Các công cụ cho trình soạn thảo (cụ thể là Visual Studio) và biên

Trang 10

Đối với Visual Studio 2008, thì Microsoft đã tích hợp bộ WindowsMobile 5 SDK có sẵn để có thể lập trình ứng dụng cho các thiết bị chạyWindows Mobile 5 Sau này, chúng ta sử dụng Windows Mobile 6, do đóMicrosoft cũng đã cung cấp 1 bộ Windows Mobile 6 SDK Trong WindowsMobile 6 SDK bao gồm:

Windows Mobile 6 SDK

Standard

Cung cấp thư viện, Emulator để phát triểnứng dụng cho các hệ máy SmartPhone Windows Mobile 6 SDK

Professional

Cung cấp thư viện, Emulator để phát triểnứng dụng cho các hệ Pocket PC

Ngoài ra, trong bộ Windows Mobile 6 SDK còn tích hợp một số công cụ

để phát triển ứng dụng tùy thuộc vào từng trường hợp cụ thể

FakeGPS Giả lập dữ liệu GPS thông qua các hàm APILocal Server Framework

(aka FakeServer)

Giả lập tương tự như một server Khi đó ta

có thể kiểm tra tính kết nối của một ứngdụng

Cellular Emulator Giả lập song Radio thật như một thiết bị di

động với một đầy đủ tính năng như GPRS,GSM, …

1.2.2 IDE soạn thảo code:

Ở đây, chúng ta sử dụng Visual Studio để lập trình cho thiết bị VisualStudio cung cấp đầy đủ tính năng, sự thân thiện để ta có thể tiếp cận lập trìnhWindows Mobile một cách nhanh nhất Nó hỗ trợ đầy đủ các chức năng, cácloại ứng dụng phát triển, hỗ trợ ngôn ngữ C#, Visual Basic, cũng như tạo các

Trang 11

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

- Windows Mobile 2005 Pocket PC

- Windows Mobile 2005 Smartphone

- Windows Mobile 6 Classic

- Windows Mobile 6 Standard

- Windows Mobile 6 Professioncal

* Trình soạn thảo:

Trang 12

* Kỹ thuật Anchoring & Docking:

Anchoring: Đây là phương thức neo một điểm trên màn hình Khi đó, sự

thay đổi của màn hình trên mỗi loại thiết bị thì các chức năng sẽ thay đổi theo

Có 4 điểm neo chính là Trái, Phải, Trên, Dưới

Docking: Cũng tương tự như Anchoring, tuy nhiên, đối tượng được sẽ

Trang 13

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

* Một số tính năng mới trong Visual Studio 2008:

Unit Testing for Device Device Configuration Manager Device Certificate Manager Device Emulator Version 3.0 Windows Mobile 5.0 SDK NET Compact Framework 2.0 sp2 and 3.5Update Compilers, MFC Libraries, Tools Manager CoreCon Framework

Trang 14

1.2.3 Thiết bị để kiểm tra ứng dụng

1.2.3.1 Lợi ích của việc sử dụng Emulator

+ Không tốn chi phí cho việc sắm thiết bị để kiểm tra ứng dụng Điềunày đặc biệt quan trọng vì các thiết bị di động thường có cấu hình, khuôndạng (form) và các nhà sản xuất khác nhau

+ Tất cả mọi lập trình viên đều có thể cài đặt lại thiết bị, có điều kiện

để thử nghiệm nhiều hệ điều hành khác nhau cho việc kiểm tra chương trình + Phục vụ việc triển khai ứng dụng nhanh hơn nhờ tính năng lưu giữtrạng thái

1.2.3.2 Visual Studio Device Emulator

Khi phát triển một ứng dụng, thì vấn đề là chúng ta phải kiểm tra đượcứng dụng đó Windows Mobile SDK cung cấp một bộ công cụ Emulator đểgiả lập thiết bị thật, nó hỗ trợ đầy đủ tính năng của một thiết bị thật

Là công cụ giả lập giúp bạn chạy thử chương trình trong trường hợp bạnkhông có chiếc PPC hay SmartPhone thật nào, hoặc bạn muốn kiểm trachương trình trên nhiều loại máy khác nhau như WM 2003,WM2005…Emulator đi kèm với Windows Mobile 5.0 SDK nên chỉ cần cài đặt SDK Tính năng hệ điều hành đầy đủ như thiết bị thật, cả Windows CE vàWindows Mobile

Tính năng đầy đủ của thiết bị, hỗ trợ chipset ARM Hỗ trợ phần cứnggiả lập như cổng COM, Network Card

* Trình quản lý thiết bị ảo

+ Điều khiển thiết bị ảo:

- Start

- Shutdown

- Reset

Trang 15

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Khởi động thiết bị ảo

+ Quản lý Image:

- Save State, filesystem và Memory

- Có thể lưu lại tình trạng cho mỗi platform

- Khôi phục trạng thái image hệ điều hành

+ Kết nối thiết bị ảo:

Trang 16

+ Tại sao phải sử dụng ActiveSync? - Do việc Debug ứng dụngtrên NET Compact Framework đều là Debug từ xa

+ Để kết nối Emulator với ActiveSync:

- Sử dụng Device Emulator Manager với tùy chọn Cradle

- Cài đặt kết nối trong ActiveSync phải cho phép kết nối DMA

Download Microsoft ActiveSync 4.5 tại đây

http://www.filehippo.com/download_activesync/

1.3 .Net Compact Framework.

.NET Compact Framework là nền tảng cho một số ứng dụng cho PPCđược phát triển trên nền Visual Studio NET

Hình 1 và Hình 2 so sánh giữa Net Framework và NET CompactFramework

Trang 17

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Hình 1: Net Framework

Hình 2: NET Compact Framework

Ứng dụng chúng ta viết sử dụng Net Compact Framework được gọi làManaged Code, nghĩa là code của ứng dụng được quản lý bởi bộ thư việndùng chung CLR (Common Language Runtime) Việc quản lý tài nguyên bộnhớ, quản lý luồng và quản lý thực thi code đều được CLR xử lý

Trang 18

1.3.1 Một số hàm API:

* Telephony:

Namespace: WindowsMobile.Telephony

- Thực thi một cuộc gọi chỉ bằng 1 dòng lệnh

- Tùy chọn người dùng có quyền hoặc không có quyền thực hiện cuộcgọi

* Pocket Outlook:

Namespace: Microsoft.WindowsMobile.PocketOutlook

Trang 19

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

1.3.2 Công cụ lập trình

* Microsoft Visual Studio Net 2005:

Là công cụ lập trình chính cho máy tính để bàn cũng như PPC chạy hệđiều hành Windows Bạn cũng có thể cài Microsoft Visual Studio Net 2003tuy nên cài phiên bản mới nhất này vì nó hỗ trợ nhiều tính năng hơn so vớiphiên bản cũ Bạn có thể mua đĩa cài ở các của hàng bán đĩa chương trình

* Windows Mobile 6 Professional SDK :

Chứa nhiều công cụ bổ sung để lập trình cho thiết bị di động nhưEmulator (Giả lập), CABWIZ (Đóng gói) , Sample Source code, và tài liệulập trình khác

Bạn có thể download miễn phí tại các địa chỉ sau:

+ Windows Mobile 6 Professional SDK tại địa chỉ

Trang 20

+ http://codeproject.com/netcf/ Nhiều ví dụ bổ ích

PPC cần phải xem trang này

1.3 Ngôn ngữ lập trình C#

1.3.1 Giới thiệu về C#

C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khóa và hơn 10 kiểu

dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao C# hỗ trợ lập trình có cấutrúc, hướng đối tượng, hướng thành phần (component oriented)

Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữliệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# cónhững từ khóa dành cho việc khai báo lớp, phương thức, thuộc tính (property)mới C# hỗ trợ đầy đủ khái niệm trụ cột trong lập trình hướng đối tượng: đónggói, thừa kế, đa hình

Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tincài đặt như C++ Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trựctiếp trong tập tin mã nguồn Đến khi biên dịch sẽ tạo tập tin sưu liệu theo địnhdạng XML

C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java) Một lớp chỉ cóthể kế thừa duy nhất một lớp cha nhưng có thể cài đặt nhiều giao diện

C# có kiểu cấu trúc, struct (không giống C++) Cấu trúc là kiểu hạng nhẹ

và bị giới hạn Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thểcài đặt giao diện

C# cung cấp những đặc trưng lập trình hướng thành phần như property,

sự kiện và dẫn hướng khai báo (được gọi attribute) Lập trình hướng

Trang 21

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên

là các thư viện liên kết động (dll) hay tập tin thực thi (exe) Trong NET, mộtAssembly là một đơn vị của việc tái sử dụng, xác định phiên bản, bảo mật, vàphân phối CLR cung cấp một số các lớp để thao tác với Assembly

C# cũng cho truy cập bộ nhớ dùng con trỏ kiểu C++, nhưng vùng mã đóđược xem như không an toàn CLR sẽ không thực thi việc thu dọn rác tự độngcác đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giảiphóng

1.3.2 Tại sao phải sử dụng ngôn ngữ C#

Nhiều người tin rằng không cần thiết có một ngôn ngữ lập trình mới.Java, C++, Perl, Microsoft Visual Basic, và những ngôn ngữ khác được nghĩrằng đa cung cấp tất cả những chức năng cần thiết

Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nóđược tạo từ nền tảng phát triển hơn Microsoft bắt đầu với công việc trong C

và C++ và thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụnghơn Nhiều trong số những đặc tính này khá giống với những đặc tính cótrong ngôn ngữ Java Không dừng lại ở đó, Microsoft đưa ra một số mục đíchkhi xây dựng ngôn ngữ này Những mục đích này được được tóm tắt như sau:

1.3.2.1 C# là ngôn ngữ đơn giản

C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java

và c++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, vàlớp cơ sở ảo (virtual base class)

Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến những vấn

đề cho các người phát triển C++ Nếu chúng ta là người học ngôn ngữ nàyđầu tiên thì chắc chắn là ta sẽ không trải qua những thời gian để học nó!Nhưng khi đó ta sẽ không biết được hiệu quả của ngôn ngữ C# khi loại bỏnhững vấn đề trên

Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++ Nếu chúng ta

Trang 22

về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấytrực tiếp từ ngôn ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngônngữ đơn giản hơn Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay làthêm vào những cú pháp thay đổi Ví dụ như, trong C++ có ba toán tử làmviệc với các thành viên là ::, , và -> Để biết khi nào dùng ba toán tử nàycũng phức tạp và dễ nhầm lẫn Trong C#, chúng được thay thế với một toán

tử duy nhất gọi là (dot) Đối với người mới học thì điều này và những việccải tiến khác làm bớt nhầm lẫn và đơn giản hơn

* Ghi chú: Nếu chúng ta đã sử dụng Java và tin rằng nó đơn giản, thì

chúng ta cũng sẽ tìm thấy rằng C# cũng đơn giản Hầu hết mọi người đềukhông tin rằng Java là ngôn ngữ đơn giản Tuy nhiên, C# thì dễ hơn là Java vàC++

1.3.2.2 C# là ngôn ngữ hiện đại

Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lýngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật

mã nguồn là những đặc tính được mong đợi trong một ngôn ngữ hiện đại C#chứa tất cả những đặc tính trên Nếu là người mới học lập trình có thể chúng

ta sẽ cảm thấy những đặc tính trên phức tạp và khó hiểu

* Ghi chú: Con trỏ được tích hợp vào ngôn ngữ C++ Chúng cũng là

nguyên nhân gây ra những rắc rối của ngôn ngữ này C# loại bỏ những phứctạp và rắc rối phát sinh bởi con trỏ

Trong C#, bộ thu gom bộ nhớ tự động và kiểu dữ liệu an toàn được tíchhợp vào ngôn ngữ, sẽ loại bỏ những vấn đề rắc rối của C++

1.3.2.3 C# là ngôn ngữ hướng đối tượng

Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-orientedlanguage) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình

Trang 23

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

Ngôn ngữ này không đặt những ràng buộc lên những việc có thể làm C#được sử dụng cho nhiều các dự án khác nhau như là tạo ra ứng dụng xử lý vănbản, ứng dụng đồ họa, bản tính, hay thậm chí những trình biên dịch cho cácngôn ngữ khác

1.3.2.5 C# là ngôn ngữ ít từ khóa

C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn các từ khóađược sử dụng để mô tả thông tin Chúng ta có thể nghĩ rằng một ngôn ngữ cónhiều từ khóa thì sẽ mạnh hơn Điều này không phải sự thật, ít nhất là trongtrường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thểđược sử dụng để làm bất cứ nhiệm vụ nào Bảng sau liệt kê các từ khóa củangôn ngữ C#

abstract default foreach object sizeof unsafe

As delegate goto operator stackalloc ushort

bool double implicit override string virtual

case event interface protected this while

catch explicit internal public throw

class finally long return typeof

const fixed namespace sbyte uint

Bảng 1.2: Từ khóa của ngôn ngữ C#.

Trang 24

1.3.2.6 C# là ngôn ngữ hướng module

Mã nguồn C# có thể được viết trong những phần được gọi là những lớp,những lớp này chứa các phương thức thành viên của nó Những lớp và nhữngphương thức có thể được sử dụng lại trong ứng dụng hay các chương trìnhkhác Bằng cách truyền các mẫu thông tin đến những lớp hay phương thứcchúng ta có thể tạo ra những mã nguồn dùng lại có hiệu quả

1.3.2.7 C# sẽ là một ngôn ngữ phổ biến

C# là một trong những ngôn ngữ lập trình mới nhất Nhưng ngôn ngữnày có một số lý do để trở thành một ngôn ngữ phổ biến Một trong những lý

do chính là Microsoft và sự cam kết của NET

Microsoft muốn ngôn ngữ C# trở nên phổ biến Mặc dù một công tykhông thể làm một sản phẩm trở nên phổ biến, nhưng nó có thể hỗ trợ Cáchđây không lâu, Microsoft đã gặp sự thất bại về hệ điều hành Microsoft Bob.Mặc dù Microsoft muốn Bob trở nên phổ biến nhưng thất bại C# thay thế tốthơn để đem đến thành công so với Bob Thật sự là không biết khi nào mọingười trong công ty Microsoft sử dụng Bob trong công việc hằng ngày của

họ Tuy nhên, với C# thì khác, nó được sử dụng bởi Microsoft Nhiều sảnphẩm của công ty này đa chuyển đổi và viết lại bằng C# Bằng cách sử dụngngôn ngữ này Microsoft đa xác nhận khả năng của C# cần thiết cho nhữngngười lập trình

Micorosoft .NET là một lý do khác để đem đến sự thành công củaC# .NET là một sự thay đổi trong cách tạo và thực thi những ứng dụng

Ngoài hai lý do trên ngôn ngữ C# cũng sẽ trở nên phổ biến do những đặctính của ngôn ngữ này được đề cập trong mục trước như: đơn giản, hướng đốitượng, mạnh mẽ

1.3.2.8 Ngôn ngữ C# và những ngôn ngữ khác

Trang 25

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

chúng được viết lại từ một nền tảng Chúng ta có thể viết nhiều chương trìnhvới ít mã nguồn hơn nếu dùng C#

Mặc dù C# loại bỏ một vài các đặc tính của C++, nhưng lại tránh đượcnhững lỗi mà thường gặp trong ngôn ngữ C++ Điều này có thể tiết kiệmđược hàng giờ hay thậm chí hàng ngày trong việc hoàn tất một chương trình Một điều quan trọng khác với C++ là mã nguồn C# không đòi hỏi phải

có tập tin header

Tất cả mã nguồn được viết trong khai báo một lớp

.NET runtime trong C# thực hiện việc thu gom bộ nhớ tự động Do điềunày nên việc sử dụng con trỏ trong C# ít quan trọng hơn trong C++ Nhữngcon trỏ cũng có thể được sử dụng trong C#, khi đó những đoạn mã nguồn này

sẽ được đánh dấu là không an toàn (unsafe code)

C# cũng từ bỏ ý tưởng đa kế thừa như trong C++ Và sự khác nhau khác

là C# đưa thêm thuộc tính vào trong một lớp giống như trong Visual Basic

Và những thành viên của lớp được gọi duy nhất bằng toán tử “.” khác với C++ có nhiều cách gọi trong các tình huống khác nhau

Một ngôn ngữ khác rất mạnh và phổ biến là Java, giống như C++ và C#được phát triển dựa trên C

Điểm giống nhau C# và Java là cả hai cùng biên dịch ra mã trung gian:C# biên dịch ra MSIL còn Java biên dịch ra bytecode Sau đó chúng đượcthực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảotương ứng Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ được đưa ra để biêndịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu dữ liệu cơ bảnhơn Java và cũng cho phép nhiều sự mở rộng với kiểu dữ liệu giá trị Ví dụ,ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu này được giới hạn đến mộttập hằng được định nghĩa trước, và kiểu dữ liệu cấu trúc đây là kiểu dữ liệugiá trị do người dùng định nghĩa

Tương tự như Java, C# cũng bỏ tính đa kế thừa trong một lớp, tuy nhiên

Trang 26

Chương 2: Tổng quan về nén dữ liệu - Một số thuật toán nén dữ liệu 2.1.Giới thiệu chung về nén dữ liệu

2.1.1 Nguyên tắc của nén dữ liệu

Thông thường, hầu hết các tập tin trong máy tính có rất nhiều thông tin dưthừa, việc thực hiện nén tập tin thực chất là mã hoá lại các tập tin để loại bỏcác thông tin dư thừa

Nhìn chung không thể có phương phát nén tổng quát nào cho kết quả tốtđối với tất cả các loại tập tin Vì nếu không ta sẽ áp dụng n lần phương phápnén này để đạt được một tập tin nhỏ tuỳ ý Kỹ thuật nén tập tin thường được

áp dụng cho các tập tin văn bản (Trong đó có một số kí tự nào đó có xác suấtxuất hiện nhiều hơn các kí tự khác), các tập tin ảnh bitmap (Mà có thể cónhững mảng lớn đồng nhất), các tập tin dùng để biểu diễn âm thanh dưới dạng

số hoá và các tín hiệu tương tự (analog signal) khác (Các tín hiệu này có thể

có các mẫu được lặp lại nhiều lần) Ðối với các tập tin nhị phân như tập tinchương trình thì sau khi nén cũng không tiết kiệm được nhiều

Ngoài ra, trong một số trường hợp để nâng cao hệ số nén người ta có thể

bỏ bớt một số thông tin của tập tin (Ví dụ như kỹ thật nén ảnh JPEG)

2.1.2 Một số phương pháp nén dữ liệu

2.1.2.1 Phương pháp mã hoá độ dài loạt (Run-Length Encoding)

Loại dư thừa đơn giản nhất trong một tập tin là các đường chạy dài gồmcác kí tự lặp lại, điều này thường thấy trong các tập tin đồ hoạ bitmap, cácvùng dữ liệu hằng của các tập tin chương trình, một số tập tin văn bản

Ví dụ: xét chuỗi sau:

AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD Chuỗi này có thể được mã hoá một cách cô đọng hơn bằng cách thay thế

Trang 27

GVHD: Thạc sỹ Nguyễn Công Nhật Khoá luận tốt nghiệp

năm chữ B Việc nén một chuỗi theo phương pháp này được gọi là mã hoá

độ dài loạt Khi có những loạt dài, việc tiết kiệm có thể là đáng kể Có nhiềucách để thực hiện ý tưởng này, tuỳ thuộc vào các đặc trưng của ứng dụng (cácloạt chạy có khuynh hướng tương đối dài hay không ? Có bao nhiêu bit đượcdùng để mã hoá các kí tự đang được mã ?)

Nếu ta biết rằng chuỗi của chúng ta chỉ chứa các chữ cái, thì ta có thể mãhoá biến đếm một cách đơn giản bằng cách xen kẽ các con số với các chữ cái

Vì vậy chuỗi kí tự trên được mã hoá lại như sau:

Việc mã hoá độ dài loạt cần đến các biễu diễn riêng biệt cho tập tin vàcho bản đã được mã hoá của nó, vì vậy nó không thể dùng cho mọi tập tin,điều này có thể hoàn toàn bất lợi, ví dụ, phương pháp nén tập tin kí tự đã được

đề nghị ở trên sẽ không dùng được đối với các chuỗi kí tự có chứa số Nếunhững kí tự khác được sử dụng để mã hoá các số đếm, thì nó sẽ không làmviệc với các chuỗi chứa các kí tự đó Giả sử ta phải mã hoá bất kì kí tự nào từmột bảng chữ cái cố định bằng cách chỉ dùng các kí tự từ bảng chữ cái đó Ðểminh hoạ, giả sử ta phải mã hoá bất kì một chuỗi nào từ một chữ cái đó, ta sẽgiả định rằng ta chỉ có 26 chữ cái trong bảng chữ cái (và cả khoảng trống) để

Ngày đăng: 22/12/2013, 13:04

HÌNH ẢNH LIÊN QUAN

Hình 1: .Net Framework - Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh họa
Hình 1 .Net Framework (Trang 17)
Hình 2: .NET Compact Framework - Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh họa
Hình 2 .NET Compact Framework (Trang 17)
Bảng 1.2: Từ khóa của ngôn ngữ C#. - Tìm hiểu về một số thuật toán nén dữ liệu, lập trình mobile và xây dựng ứng dụng minh họa
Bảng 1.2 Từ khóa của ngôn ngữ C# (Trang 23)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w