Giáo trình hướng dẫn cách truy cập vào các mảng đa chiều trên diện rộng có các kích thước khác nhau phần 1 pdf

33 406 0
Giáo trình hướng dẫn cách truy cập vào các mảng đa chiều trên diện rộng có các kích thước khác nhau phần 1 pdf

Đ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

h a n g e Vi e N y to k lic c Chương MICROSOFT NET  Tình hình trước MS.NET đời   Nguồn gốc NET Microsoft NET GIÁO TRÌNH HƯỚNG DẪN CÁCH  Tổng quan TRUY CẬP VÀO MẢNG ĐA CHIỀU Kiến trúc NET Framework TRÊN DIỆN RỘNG CĨ CÁC KÍCH  Common Language Runtime THƯỚC KHÁC NHAU (CLR)     Thư viện NET Framework Phát triển ứng dụng client Biên dịch MSIL Ngơn ngữ C# Tình hình trước MS.NET đời Trong lĩnh vực công nghệ thông tin giới ngày nay, với phát triển liên tục đa dạng phần mềm, hệ điều hành, môi trường phát triển, ứng dụng liên tục đời Tuy nhiên, việc phát triển khơng đồng lợi ích khác công ty phần mềm lớn làm ảnh hưởng đến người xây dựng phần mềm Cách vài năm Java Sun viết ra, có sức mạnh đáng kể, hướng tới việc chạy nhiều hệ điều hành khác nhau, độc lập với xử lý (Intel, Risc,…) Đặc biệt Java thích hợp cho việc viết ứng dụng Internet Tuy nhiên, Java lại có hạn chế mặt tốc độ thực tế chưa thịnh hành Mặc dù Sun Corporation IBM có đẩy mạnh Java, Microsoft dùng ASP để làm giảm khả ảnh hưởng Java Để lập trình Web, lâu người ta dùng CGI-Perl gần PHP, ngôn ngữ giống Perl tốc độ chạy nhanh Ta triển khai Perl Unix/Linux hay MS Windows Tuy nhiên có nhiều người khơng thích dùng thân ngôn ngữ hay qui ước khác thường Perl không phát triển thống nhất, công cụ xây dựng cho Perl mạnh nhiều nhóm phát triển người ta khơng đảm bảo tương lai ngày tốt đẹp Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Trong giới phát triển ứng dụng Windows ta viết ứng dụng Visual C++, Delphi hay Visual Basic, số công cụ phổ biến mạnh Trong Visual C++ ngơn ngữ mạnh khó sử dụng Visual Basic đơn giản dễ học, dễ dùng nên thơng dụng Lý Visual Basic giúp viết chương trình Windows dễ dàng mà không cần thiết phải biết nhiều cách thức MS Windows hoạt động, ta cần biết số kiến thức tối thiểu MS Windows lập trình Do theo quan điểm Visual Basic nên liên kết với Windows điều tự nhiên dễ hiểu, hạn chế Visual Basic ngôn ngữ hướng đối tượng (Object Oriented) Delphi hậu duệ Turbo Pascal Borland Nó giống tương đối dễ dùng Visual Basic Delphi ngôn ngữ hướng đối tượng Các điều khiển dùng Form Delphi tự động khởi tạo mã nguồn Tuy nhiên, chức khởi động mã nguồn Delphi gặp rắc rối có can thiệp người dùng vào Sau công ty Borland bị bán chuyên gia xây dựng nên Delphi chạy qua bên Microsoft, Delphi khơng cịn phát triển tốt nữa, người ta không dám đầu tư triển khai phần mềm vào Delphi Công ty sau phát triển dịng sản phẩm Jbuilder (dùng Java) khơng cịn quan tâm đến Delphi Tuy Visual Basic bền không cần phải khởi tạo mã nguồn Form thiết kế Visual Basic có nhiều khuyết điểm :  Không hỗ trợ thiết kế hướng đối tượng, khả thừa kế (inheritance)  Giới hạn việc chạy nhiều tiểu trình ứng dụng, ví dụ ta khơng thể dùng Visual Basic để viết Service kiểu NT  Khả xử lý lỗi yếu, khơng thích hợp mơi trường Multi- tier  Khó dùng chung với ngơn ngữ khác C++  Khơng có User Interface thích hợp cho Internet Do Visual Basic khơng thích hợp cho viết ứng Web Server nên Microsoft tạo ASP (Active Server Page) Các trang ASP vừa có tag HTML vừa chứa đoạn script (VBScript, JavaScript) nằm lẫn lộn Khi xử lý trang ASP, tag HTML gởi thẳng qua Browser, cịn script chuyển thành dòng HTML gởi đi, ngoại trừ function hay sub ASP vị trí script khác quan trọng Khi số chức viết tốt người ta dịch thành ActiveX đưa vào Web Server Tuy nhiên lý bảo mật nên ISP (Internet Service Provider) làm máy chủ cho Web site thường dè đặt cài ActiveX lạ máy họ Ngoài việc tháo gỡ phiên ActiveX cơng việc khó, thường xun làm cho Administrator nhức đầu Những người quản lý version DLL Windows điều than phiền phải đăng ký DLL đăng ký phiên DLL mà Và từ “DLL Hell” xuất tức địa ngục DLL… Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Sau để giúp cho việc lập trình ASP nhanh cơng cụ Visual InterDev, IDE (Integrated Development Environment) đời Visual InterDev tạo Design Time Controls cho việc thiết kế điều khiển web,… Tiếc thay Visual InterDev không bền vững nên sau thời gian nhà phát triển rời bỏ Tóm lại thân ASP số khuyết điểm quan trọng, chạy Internet Information Server với Windows NT 4, ASP khơng đáng tin cậy Tóm lại giới lập trình theo Microsoft việc lập trình desktop lập trình hệ phân tán hay web không nhịp nhàng cho Để chuyển từ lập trình client hay desktop đến lập trình web chặng đường dài Nguồn gốc NET Đầu năm 1998, sau hoàn tất phiên Version Internet Information Server (IIS), đội ngũ lập trình Microsoft nhận thấy họ nhiều sáng kiến để kiện toàn IIS Họ bắt đầu xây dựng kiến trúc tảng ý tưởng đặt tên Next Generation Windows Services (NGWS) Sau Visual Basic trình làng vào cuối 1998, dự án mang tên Visual Studio xác nhập vào NGWS Đội ngũ COM+/MTS góp vào universal runtime cho tất ngơn ngữ lập trình chung Visual Studio, tham vọng họ cung cấp cho ngôn ngữ lập trình cơng ty khác dùng chung ln Cơng việc xúc tiến cách hồn tồn bí mật hội nghị Professional Developers’ Conference Orlado vào tháng 7/2000 Đến tháng 11/2000 Microsoft phát hành Beta NET gồm đĩa CD Tính đến lúc Microsoft làm việc với NET gần năm rồi, Beta tương đối vững .NET mang dáng dấp sáng kiến áp dụng trước p-code UCSD Pascal Java Virtual Machine Có điều Microsoft góp nhặt sáng kiến người khác, kết hợp với sáng kiến để làm nên sản phẩm hồn chỉnh từ bên lẫn bên ngồi Hiện Microsoft cơng bố phiên release NET Thật Microsoft đặt cược vào NET theo thơng tin cơng ty, tập trung 80% sức mạnh Microsoft để nghiên cứu triển khai NET (bao gồm nhân lực tài ?), tất sản phẩm Microsoft chuyển qua NET Microsoft NET Tổng quan Microsoft NET gồm phần : Framework Integrated Development Environment (IDE) Framework cung cấp cần thiết bản, chữ Framework có nghĩa khung hay khung cảnh ta dùng hạ tầng sở theo qui ước định để công việc trơi chảy IDE cung cấp mơi trường giúp triển khai dễ dàng, nhanh chóng ứng dụng dựa tảng NET Nếu IDE 10 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c dùng trình soạn thảo ví Notepad hay trình soạn thảo văn sử dụng command line để biên dịch thực thi, nhiên việc nhiều thời gian Tốt dùng IDE phát triển ứng dụng, cách dễ sử dụng Thành phần Framework quan trọng NET cốt lõi tinh hoa mơi trường, cịn IDE cơng cụ để phát triển dựa tảng thơi Trong NET tồn ngôn ngữ C#, Visual C++ hay Visual Basic.NET dùng IDE Tóm lại Microsoft NET tảng cho việc xây dựng thực thi ứng dụng phân tán hệ Bao gồm ứng dụng từ client đến server dịch vụ khác Một số tính Microsoft NET cho phép nhà phát triển sử dụng sau:  Một mơ hình lập trình cho phép nhà phát triển xây dựng ứng dụng dịch vụ web ứng dụng client với Extensible Markup Language (XML)  Tập hợp dịch vụ XML Web, Microsoft NET My Services cho phép nhà phát triển đơn giản tích hợp người dùng kinh nghiệm  Cung cấp server phục vụ bao gồm: Windows 2000, SQL Server, BizTalk Server, tất điều tích hợp, hoạt động, quản lý dịch vụ XML Web ứng dụng  Các phần mềm client Windows XP Windows CE giúp người phát triển phân phối sâu thuyết phục người dùng kinh nghiệm thơng qua dịng thiết bị  Nhiều công cụ hỗ trợ Visual Studio NET, để phát triển dịch vụ Web XML, ứng dụng Windows hay web cách dể dàng hiệu Kiến trúc NET Framework NET Framework platform làm đơn giản việc phát triển ứng dụng môi trường phân tán Internet .NET Framework thiết kế đầy đủ để đáp ứng theo quan điểm sau:  Để cung cấp mơi trường lập trình hướng đối tượng vững chắc, mã nguồn đối tượng lưu trữ thực thi cách cục Thực thi cục phân tán Internet, thực thi từ xa  Để cung cấp môi trường thực thi mã nguồn mà tối thiểu việc đóng gói phần mềm tranh chấp phiên  Để cung cấp môi trường thực thi mã nguồn mà đảm bảo việc thực thi an toàn mã nguồn, bao gồm việc mã nguồn tạo hãng thứ ba hay hãng mà tuân thủ theo kiến trúc NET  Để cung cấp môi trường thực thi mã nguồn mà loại bỏ lỗi thực script hay môi trường thông dịch  Để làm cho người phát triển có kinh nghiệm vững nắm vững nhiều kiểu ứng dụng khác Như từ ứng dụng Windows đến ứng dụng dựa web 11 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Để xây dựng tất thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo mã nguồn NET tích hợp với mã nguồn khác .NET Framework có hai thành phần chính: Common Language Runtime (CLR) thư viện lớp NET Framework CLR tảng NET Framework Chúng ta hiểu runtime agent quản lý mã nguồn thực thi, cung cấp dịch vụ cốt lõi như: quản lý nhớ, quản lý tiểu trình, quản lý từ xa Ngồi cịn thúc đẩy việc sử dụng kiểu an tồn hình thức khác việc xác mã nguồn, đảm bảo cho việc thực bảo mật mạnh mẽ Thật vậy, khái niệm quản lý mã nguồn nguyên lý tảng runtime Mã nguồn mà đích tới runtime biết mã nguồn quản lý (managed code) Trong mã nguồn mà khơng có đích tới runtime biết mã nguồn khơng quản lý (unmanaged code) Thư viện lớp, thành phần khác NET Framework tập hợp hướng đối tượng kiểu liệu dùng lại, cho phép phát triển ứng dụng từ ứng dụng truyền thống command-line hay ứng dụng có giao diện đồ họa (GUI) đến ứng dụng cung cấp ASP.NET, Web Form dịch vụ XML Web  Hình 1.1: Mô tả thành phần NET Framework 12 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Common Language Runtime (CLR) Như đề cập CLR thực quản lý nhớ, quản lý thực thi tiểu trình, thực thi mã nguồn, xác nhận mã nguồn an toàn, biên bịch dịch vụ hệ thống khác Những đặc tính tảng cho mã nguồn quản lý chạy CLR Do trọng đến bảo mật, thành phần quản lý cấp mức độ quyền hạn khác nhau, phụ thuộc vào nhiều yếu tố nguyên thủy chúng như: liên quan đến Internet, hệ thống mạng nhà máy, hay máy tính cục Điều có nghĩa rằng, thành phần quản lý có hay khơng có quyền thực thao tác truy cập tập tin, thao tác truy cập registry, hay chức nhạy cảm khác CLR thúc đẩy việc mã nguồn thực việc truy cập bảo mật Ví dụ, người sử dụng giới hạn việc thực thi nhúng vào trang web chạy hoạt hình hình hay hát nhạc, truy cập liệu riêng tư, tập tin hệ thống, hay truy cập mạng Do đó, đặc tính bảo mật CLR cho phép phần mềm đóng gói Inernet có nhiều đặc tính mà khơng ảnh hưởng đến việc bảo mật hệ thống CLR thúc đẩy cho mã nguồn thực thi mạnh mẽ việc thực thi mã nguồn xác xác nhận mã nguồn Nền tảng việc thực Common Type System (CTS) CTS đảm bảo mã nguồn quản lý tự mơ tả (selfdescribing) Sự khác Microsoft trình biên dịch ngơn ngữ hãng thứ ba việc tạo mã nguồn quản lý thích hợp với CTS Điều mã nguồn quản lý sử dụng kiểu quản lý khác thể hiện, thúc đẩy nghiêm ngặt việc sử dụng kiểu liệu xác an tồn Thêm vào đó, môi trường quản lý runtime thực việc tự động xử lý layout đối tượng quản lý tham chiếu đến đối tượng, giải phóng chúng chúng khơng cịn sử dụng Việc quản lý nhớ tự động giải hai lỗi chung ứng dụng: thiếu nhớ tham chiếu nhớ không hợp lệ Trong runtime thiết kế cho phần mềm tương lai, hỗ trợ cho phân mềm ngày trước Khả hoạt động qua lại mã nguồn quản lý mã nguồn không quản lý cho phép người phát triển tiếp tục sử dụng thành phần cần thiết COM DLL Rutime thiết kế để cải tiến hiệu suất thực Mặc dù CLR cung cấp nhiều tiêu chuẩn dịch vụ runtime, mã nguồn quản lý không dịch Có đặc tính gọi Just-in-Time (JIT) biên dịch tất mã nguồn quản lý vào ngôn ngữ máy hệ thống vào lúc mà thực thi Khi đó, trình quản lý nhớ xóa bỏ phân mảnh nhớ gia tăng tham chiếu nhớ cục bộ, kết gia tăng hiệu thực thi 13 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Thư viện lớp NET Framework Thư viện lớp NET Framework tập hợp kiểu liệu dùng lại kết hợp chặt chẽ với Common Language Runtime Thư viện lớp hướng đối tượng cung cấp kiểu liệu mà mã nguồn quản lý dẫn xuất Điều không làm cho kiểu liệu NET Framework dễ sử dụng mà làm giảm thời gian liên quan đến việc học đặc tính NET Framework Thêm vào đó, thành phần hãng thứ ba tích hợp với lớp NET Framework Cũng mong đợi người phát triển với thư viện lớp hướng đối tượng, kiểu liệu NET Framework cho phép người phát triển thiết lập nhiều mức độ thông dụng việc lập trình, bao gồm nhiệm vụ như: quản lý chuỗi, thu thập hay chọn lọc liệu, kết nối với cở liệu, truy cập tập tin Ngồi nhiệm vụ thơng dụng Thư viện lớp đưa vào kiểu liệu để hỗ trợ cho kịch phát triển chuyên biệt khác Ví dụ người phát triển sử dụng NET Framework để phát triển kiểu ứng dụng dịch vụ sau:  Ứ ng dụng Console  Ứ ng dụng giao diện GUI Windows (Windows Forms)  Ứ ng dụng ASP.NET  Dịch vụ XML Web  Dịch vụ Windows Trong lớp Windows Forms cung cấp tập hợp lớn kiểu liệu nhằm làm đơn giản việc phát triển ứng dụng GUI chạy Windows Còn viết ứng dụng ASP.NET sử dụng lớp Web Forms thư viện NET Framework Phát triển ứng dụng Client Những ứng dụng client gần với ứng dụng kiểu truyền thống lập trình dựa Windows Đây kiểu ứng dụng hiển thị cửa sổ hay form desktop cho phép người dùng thực thao tác hay nhiệm vụ Những ứng dụng client bao gồm ứng dụng xử lý văn bản, xử lý bảng tính, ứng dụng lĩnh vực thương mại công cụ nhập liệu, công cụ tạo báo cáo Những ứng dụng client thường sử dụng cửa sổ, menu, toolbar, button hay thành phần GUI khác, chúng thường truy cập tài nguyên cục tập tin hệ thống, thiết bị ngoại vi máy in Một loại ứng dụng client khác với ứng dụng truyền thống ActiveX control (hiện thay Windows Form control) nhúng vào trang web Internet Các ứng dụng giống ứng dụng client khác truy cập tài nguyên cục Trong khứ, nhà phát triển tạo ứng dụng sử dụng C/C++ thông qua kết nối với MFC sử dụng môi trường phát triển ứng dụng nhanh (RAD: Rapid 14 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Application Development) .NET Framework tích hợp diện mạo sản phẩm thành Môi trường phát triển cố định làm đơn giản mạnh mẽ phát triển ứng dụng client Những lớp NET Framework chứa NET Framework thiết kế cho việc sử dụng phát triển GUI Điều cho phép người phát triển nhanh chóng dễ dàng tạo cửa sổ, button, menu, toolbar, thành phần khác ứng dụng viết phục vụ cho lĩnh vực thương mại Ví dụ như, NET cung cấp thuộc tính đơn giản để hiệu chỉnh hiệu ứng visual liên quan đến form Trong vài trường hợp hệ điều hành không hỗ trợ việc thay đổi thuộc tính cách trực tiếp, trường hợp NET tự động tạo lại form Đây nhiều cách mà NET tích hợp việc phát triển giao diện làm cho mã nguồn đơn giản mạnh mẽ Không giống ActiveX control, Windows Form control có truy cập giới hạn đến máy người sử dụng Điều có nghĩa mà nguồn thực thi nhị phân truy cập vài tài nguyên máy người sử dụng (như thành phần đồ họa hay số tập tin giới hạn) mà truy cập đến tài nguyên khác Nguyên nhân bảo mật truy cập mã nguồn Lúc ứng dụng cài đặt máy người dùng an tồn để đưa lên Internet Biên dịch MSIL Trong NET Framework, chương trình khơng biên dịch vào tập tin thực thi mà thay vào chúng biên dịch vào tập tin trung gian gọi Microsoft Intermediate Language (MSIL) Những tập tin MSIL tạo từ C# tương tự tập tin MSIL tạo từ ngôn ngữ khác NET, platform không cần biết ngơn ngữ mã nguồn Điều quan trọng yếu CLR chung (common), runtime hỗ trợ phát triển C# VB.NET Mã nguồn C# biên dịch vào MSIL build project Mã MSIL lưu vào tập tin đĩa Khi chạy chương trình, MSIL biên dịch lần nữa, sử dụng trình biên dịch Just-In-Time (JIT) Kết mã máy thực thi xử lý máy Trình biên dịch JIT tiêu chuẩn thực theo yêu cầu Khi phương thức gọi, trình biên dịch JIT phân tích MSIL tạo sản phẩm mã máy có hiệu cao, mã chạy nhanh Trình biên dịch JIT đủ thơng minh để nhận mã biên dịch, ứng dụng chạy việc biên dịch xảy cần thiết, tức biên dịch mã MSIL chưa biên dịch mã máy Khi ứng dụng NET thực hiện, chúng có xu hướng chạy nhanh nhanh nữa, mã nguồn biên dịch dùng lại Do tất ngôn ngữ NET Framework tạo sản phẩm MSIL giống nhau, nên kết đối tượng tạo từ ngôn ngữ truy cập hay dẫn xuất từ 15 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c đối tượng ngôn ngữ khác NET Ví dụ, người phát triển tạo lớp sở VB.NET sau dẫn xuất C# cách dễ dàng Ngơn ngữ C# Ngôn ngữ C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngơn ngữ C# có ý nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngơn ngữ lập trình đại Và ngơn ngữ C# hội đủ điều kiện vậy, xây dựng tảng hai ngôn ngữ mạnh C++ Java Ngôn ngữ C# phát triển đội ngũ kỹ sư Microsoft, người dẫn đầu Anders Hejlsberg Scott Wiltamuth Cả hai người điều người tiếng, Anders Hejlsberg biết đến tác giả Turbo Pascal, ngơn ngữ lập trình PC phổ biến Và ơng đứng đầu nhóm thiết kế Borland Delphi, thành công việc xây dựng mơi trường phát triển tích hợp (IDE) cho lập trình client/server Phần cốt lõi hay gọi trái tim ngơn ngữ lập trình hướng đối tượng hỗ trợ cho việc định nghĩa làm việc với lớp Những lớp định nghĩa kiểu liệu mới, cho phép người phát triển mở rộng ngơn ngữ để tạo mơ hình tốt để giải vấn đề Ngôn ngữ C# chứa từ khóa cho việc khai báo kiểu lớp đối tượng phương thức hay thuộc tính lớp, cho việc thực thi đóng gói, kế thừa, đa hình, ba thuộc tính ngơn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# thứ liên quan đến khai báo lớp điều tìm thấy phần khai báo Định nghĩa lớp ngơn ngữ C# khơng đòi hỏi phải chia tập tin header tập tin nguồn giống ngôn ngữ C++ Hơn nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn tag XML để phát sinh tự động document cho lớp C# hỗ trợ giao diện interface, xem cam kết với lớp cho dịch vụ mà giao diện quy định Trong ngơn ngữ C#, lớp kế thừa từ lớp cha, tức không cho đa kế thừa ngôn ngữ C++, nhiên lớp thực thi nhiều giao diện Khi lớp thực thi giao diện hứa cung cấp chức thực thi giao diện Trong ngôn ngữ C#, cấu trúc hỗ trợ, khái niệm ngữ nghĩa thay đổi khác với C++ Trong C#, cấu trúc giới hạn, kiểu liệu nhỏ gọn, tạo thể u cầu hệ điều hành nhớ so với lớp Một cấu trúc khơng thể kế thừa từ lớp hay kế thừa cấu trúc thực thi giao diện Ngơn ngữ C# cung cấp đặc tính hướng thành phần (component-oriented), thuộc tính, kiện Lập trình hướng thành phần hỗ trợ CLR cho phép lưu trữ metadata với mã nguồn cho lớp Metadata mô tả cho lớp, bao gồm 16 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c phương thức thuộc tính nó, bảo mật cần thiết thuộc tính khác Mã nguồn chứa đựng logic cần thiết để thực chức Do vậy, lớp biên dịch khối self-contained, nên môi trường hosting biết cách đọc metadata lớp mã nguồn cần thiết mà không cần thơng tin khác để sử dụng Một lưu ý cuối ngôn ngữ C# ngôn ngữ hỗ trợ việc truy cập nhớ trực tiếp sử dụng kiểu trỏ C++ từ khóa cho dấu ngoặc [] toán tử Các mã nguồn khơng an tồn (unsafe) Và giải phóng nhớ tự động CLR không thực việc giải phóng đối tượng tham chiếu sử dụng trỏ chúng giải phóng 17 Microsoft NET d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Ứ ng dụng Console Ví dụ đơn giản gọi ứng dụng console, ứng dụng giao tiếp với người dùng thơng quan bàn phím khơng có giao diện người dùng (UI), giống ứng dụng thường thấy Windows Trong chương xây dựng ứng dụng nâng cao Windows hay Web ta dùng các giao diện đồ họa Cịn để tìm hiểu ngơn ngữ C# tuý cách tốt ta viết ứng dụng console Trong hai ứng dụng đơn giản ta dùng phương thức WriteLine() lớp Console Phương thức xuất hình dịng lệnh hay hình DOS chuỗi tham số đưa vào, cụ thể chuỗi “Chao Mung” Namespace Như biết NET cung cấp thư viện lớp đồ sộ thư viện có tên FCL (Framework Class Library) Trong Console lớp nhỏ hàng ngàn lớp thư viện Mỗi lớp có tên riêng, FCL có hàng ngàn tên ArrayList, Dictionary, FileSelector,… Điều làm nảy sinh vấn đề, người lập trình khơng thể nhớ hết tên lớp NET Framework Tệ sau ta tạo lại lớp trùng với lớp có chẳng hạn Ví dụ q trình phát triển ứng dụng ta cần xây dựng lớp từ điển lấy tên Dictionary, điều dẫn đến tranh chấp biên dịch C# cho phép tên Chắc chắn phải đổi tên lớp từ điển mà ta vừa tạo thành tên khác chẳng hạn myDictionary Khi làm cho việc phát triển ứng dụng trở nên phức tạp, cồng kềnh Đến phát triển định ác mộng cho nhà phát triển Giải pháp để giải vấn đề việc tạo namespace, namsespace hạn chế phạm vi tên, làm cho tên có ý nghĩa vùng định nghĩa Giả sử có người nói Tùng kỹ sư, từ kỹ sư phải kèm với lĩnh vực định đó, khơng khơng biết là kỹ sư cầu đường, khí hay phần mềm Khi lập trình viên C# bảo Tùng CauDuong.KySu phân biệt với CoKhi.KySu hay PhanMem.KySu Namespace trường hợp CauDuong, CoKhi, PhanMem hạn chế phạm vi từ theo sau Nó tạo vùng khơng gian để tên sau có nghĩa Tương tự ta tạo namespace để phân thành vùng cho lớp trùng tên không tranh chấp với Tương tự vậy, NET Framework có xây dựng lớp Dictionary bên namespace System.Collections, tương ứng ta tạo lớp Dictionary khác nằm namespace ProgramCSharp.DataStructures, điều hồn tồn khơng dẫn đến tranh chấp với 26 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Trong ví dụ minh họa 1.2 đối tượng Console bị hạn chế namespace việc sử dụng mã lệnh: System.Console.WriteLine(); Toán tử ‘.’ Trong vídụ 2.2 dấu ‘.’ sử dụng để truy cập đến phương thức hay liệu lớp (trong trường hợp phương thức WriteLine()), ngăn cách tên lớp đến namespace xác nhận (namspace System lớp Console) Việc thực theo hướng từ xuống, mức namespace System, lớp Console, cuối truy cập đến phương thức hay thuộc tính lớp Trong nhiều trường hợp namespace chia thành namespace gọi subnamespace Ví dụ namespace System có chứa số subnamesapce Configuration, Collections, Data, nhiều nữa, namespace Collection chia thành nhiều namesapce Namespace giúp tổ chức ngăn cách kiểu Khi viết chương trình C# phức tạp, phải tạo kiến trúc namespace riêng cho mình, khơng giới hạn chiều sâu phân cấp namespace Mục đích namespace giúp chia để quản lý kiến trúc đối tượng phức tạp Từ khóa using Để làm cho chương trình gọn hơn, khơng cần phải viết namespace cho đối tượng, C# cung cấp từ khóa using, sau từ khóa namespace hay subnamespace với mô tả đầy đủ cấu trúc phân cấp Ta dùng dịng lệnh : using System; đầu chương trình chương trình có dùng đối tượng Console khơng cần phải viết đầy đủ : System.Console mà cần viết Console thơi  Ví dụ 2.3: Dùng khóa using using System; class ChaoMung { static void Main() { //Xuat man hinh chuoi thong bao Console.WriteLine(“Chao Mung”); } } 27 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c  Kết quả: Chao Mung Lưu ý phải đặt câu using System trước định nghĩa lớp ChaoMung Mặc dù định sử dụng namespace System, không giống ngôn ngữ khác, định sử dụng đối tượng System.Console  Ví dụ 2.4: Khơng hợp lệ C# using System.Console; class ChaoMung { static void Main() { //Xuat man hinh chuoi thong bao WriteLine(“Chao Mung”); } } Đoạn chương trình biên dịch thông báo lỗi sau: error CS0138: A using namespace directive can only be applied to namespace; ‘System.Console’ is a class not a namespace Cách biểu diễn namespace làm giảm nhiều thao tác gõ bàn phím, khơng đem lại lợi ích làm xáo trộn namespace có tên khơng khác Giải pháp chung sử dụng từ khóa using với namespace xây dựng sẵn, namespace tạo ra, namespace nắm sưu liệu Cịn namespace hãng thứ ba cung cấp khơng nên dùng từ khóa using Phân biệt chữ thường chữ hoa Cũng giống C/C++, C# ngôn ngữ phân biệt chữ thường với chữ hoa, điều có nghĩa hai câu lệnh writeLine khác với WriteLine khác với WRITELINE Đáng tiếc C# không giống VB, môi trường phát triển C# không tự sửa lỗi này, viết hai chữ với cách khác đưa vào chương trình gỡ rối tìm lỗi Để trách việc lãnh phí thời gian công sức, người ta phát triển số qui ước cho cách đặt tên biến, hằng, hàm, nhiều định danh khác Qui ước giáo trình dùng cú pháp lạc đà (camel notation) cho tên biến cú pháp Pascal cho hàm, hằng, thuộc tính Ví dụ : 28 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Biến myDictionary theo cách đặt tên cú pháp lạc đà Hàm DrawLine, thuộc tính ColorBackground theo cách đặt tên cú pháp Pascal Từ khóa static Hàm Main() ví dụ minh họa có nhiều cách thiết kế Trong minh họa hàm Main() khai báo với kiểu trả void, tức hàm không trả giá trị Đôi cần kiểm tra chương trình có thực hay khơng, người lập trình khai báo hàm Main() trả giá trị để xác định kết thực chương trình Trong khai báo ví dụ có dùng từ khóa static: static void Main() { } Từ khóa hàm Main() gọi mà khơng cần phải tạo đối tượng ChaoMung Những vấn đề liên quan đến khai báo lớp, phương thức, hay thuộc tính trình bày chi tiết chương Phát triển chương trình minh họa Có tối thiểu hai cách để soạn thảo, biên dịch thực thi chương trình sách này:  Sử dụng môi trường phát triển tích hợp (IDE) Visual Studio NET  Sử dụng chương trình soạn thảo văn Notepad dùng biên dịch dịng lệnh Mặc dù phát triển phần mềm bên Visual Studio NET, IDE cung cấp nhiều tiện ích hỗ trợ cho người phát triển như: hỗ trợ phần soạn thảo mã nguồn canh lề, màu sắc, tích hợp tập tin trợ giúp, đặc tính intellisense, Nhưng điều quan trọng IDE phải có cơng cụ debug mạnh số công cụ trợ giúp phát triển ứng dụng khác Trong sách giả sử người đọc sử dụng Visual Studio NET Phần trình tập trung vào ngôn ngữ platform cơng cụ phát triển Chúng ta chép tất mã nguồn ví dụ vào chương trình soạn thảo văn Notepad hay Emacs, lưu chúng dạng tập tin văn bản, biên dịch chúng trình biên dịch dịng lệnh C#, chương trình phân phối NET Framework SDK Trong chương cuối xây dựng ứng dụng Windows Web, sử dụng công cụ Visual Studio NET để tạo Windows Form Web Form, nhiên viết tay Notepad định sử dụng cách làm tay thay dùng cơng cụ thiết kế Sử dụng Notepad soạn thảo 29 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Đầu tiên mở chương trình Notepad soạn thảo chương trình minh họa trên, lưu ý ta sử dụng trình soạn thảo văn không thiết Notepad Sau soạn thảo xong lưu tập tin xuống đĩa tập tin có phần mở rộng *.cs, ví dụ chaomung.cs Bước biên dịch tập tin nguồn vừa tạo Để biên dịch ta dùng trình biên dịch dịng lệnh C# (csc.exe) chương trình chép vào máy trình cài NET Framework Để biết csc.exe nằm xác vị trí đĩa ta dùng chức tìm kiếm Windows Để thực biên dịch mở cửa sổ dòng lệnh đánh vào lệnh theo mẫu sau: csc.exe [/out: ] Ví dụ: csc.exe /out:d:\chaomung.exe d:\chaomung.cs Thường biên dịch ta cần hai phần tên trình biên dịch tên tập tin nguồn mà Trong mẫu có dùng nhiều tùy chọn biên dịch /out, theo sau tên chương trình thực thi kết biên dịch tập tin nguồn Các tham số tùy chọn có nhiều muốn tìm hiểu dùng lệnh: csc.exe /? Lệnh xuất hình tồn tùy chọn biên dịch hướng dẫn sử dụng Hai hình sau minh họa trình nhập mã nguồn chương trình C# trình soạn thảo văn đơn giản Notepad Windows Và sau biên dịch tập tin mã nguồn vừa tạo chương trình csc.exe trình biên dịch dịng lệnh C# Kết tập tin thực thi tạo ta chạy chương trình Hình 2.2: Mã nguồn soạn thảo Notepad 30 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Hình 2.3: Biên dịch thực thi chương trình Sử dụng Visual Studio NET để tạo chương trình Để tạo chương trình chào mừng IDE, lựa chọn mục Visual Studio NET menu Start icon desktop, sau khởi động xong chương trình, chọn tiếp chức File New  Project menu Chức gọi cửa sổ New Project (hình 2.4 bên dưới) Nếu chương trình Visual Studio NET chạy lần đầu tiên, cửa sổ New Project xuất tự động mà không cần phải kích hoạt Để tạo ứng dụng, ta lựa chọn mục Visual C# Projects cửa sổ Project Type bên trái Lúc nhập tên cho ứng dụng lựa chọn thư mục nơi lưu trữ tập tin Cuối cùng, kích vào OK chuyện khởi tạo chấm dứt cửa sổ xuất (hình 2.4 bên dưới), nhập mã nguồn vào Lưu ý Visual Studio NET tạo namespace dựa tên project mà ta vừa cung cấp (ChaoMung), thêm vào dẫn sử dụng namespace System lệnh using, chương trình mà viết cần sử dụng kiểu liệu chứa namespace System 31 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Hình 2.4: Tạo ứng dụng C# console Visual Studio NET Hình 2.5: Phần soạn thảo mã nguồn cho project Visual Studio NET tạo lớp tên Class1, lớp tùy ý đổi tên chúng Khi đổi tên lớp, tốt đổi tên tập tin chứa lớp (Class1.cs) Giả sử 32 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c ví dụ đổi tên lớp thành ChaoMung, đổi tên tập tin Class1.cs (đổi tên tập tin cửa sổ Solution Explorer) Cuối cùng, Visual Studio NET tạo khung sườn chương trình, kết thúc với thích TODO vị trí bắt đầu Để tạo chương trình chào mừng minh họa trên, ta bỏ tham số string[] args hàm Main() xóa tất thích bên hàm Sau nhập vào dịng lệnh sau bên thân hàm Main() // Xuat man hinh System.Console.WriteLine(“Chao Mung”); Sau tất cơng việc đó, phần biên dịch chương trình từ Visual Studio NET Thơng thường để thực cơng việc ta chọn kích hoạt chức menu, hay button toolbar, cách nhanh sử dụng phím nóng hay phím kết hợp để gọi nhanh chức Trong ví dụ, để biên dịch chương trình nhấn Ctrl-Shift-B chọn chức năng: Build  Build Solution Một cách khác dùng nút lệnh toolbar: Để chạy chương trình vừa tạo mà không sử dụng chế độ debug nhấn Ctrl-F5 hay chọn Debug  Start Without Debugging nút lệnh toolbar Visual Studio NET Ghi chú: Tốt hết nên bỏ nhiều thời gian để tìm hiểu hay khám phá môi trường phát triển Visual Studio NET Đây cách thức tốt mà người phát triển ứng dụng nên thực Việc tìm hiểu Visual Studio NET thơng thạo giúp cho nhiều trình xây dựng phát triển ứng dụng sau Câu hỏi trả lời Câu hỏi 1: Một chương trình C# chạy máy nào? Trả lời 1: Khơng phải tất Một chương trình C# chạy máy có Common Language Runtime (CLR) cài đặt Nếu copy chương trình exe C# qua máy khơng có CLR nhận lỗi Trong phiên Windows khơng có CLR bảo thiếu tập tin DLL Câu hỏi 2: Nếu muốn đưa chương trình mà ta viết cho người bạn tập tin mà cần đưa? Trả lời 2: Thông thường cách tốt đưa chương trình biên dịch Điều có nghĩa sau mã nguồn biên dịch, có chương trình thực thi (tập tin có phần mở rộng *.exe ) Như vậy, muốn đưa chương trình Chaomung cho tất người bạn cần đưa tập tin Chaomung.exe Khơng cần thiết phải đưa tập tin nguồn Chaomung.cs Và người bạn khơng cần thiết phải có trình biên dịch C# Họ cần có C# runtime máy tính (như CLR Microsoft) chạy chương trình Câu hỏi 3: Sau tạo tập tin thực thi exe Có cần thiết giữ lại tập tin nguồn khơng? 33 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Trả lời 3: Nếu từ bỏ tập tin mã nguồn sau khó khăn cho việc mở rộng hay thay đổi chương trình, cần thiết phải giữ lại tập tin nguồn Hầu hết IDE tạo các tập tin nguồn (.cs) tập tin thực thi Cũng giữ tập tin nguồn cần thiết phải giữ tập tin khác tài nguyên bên icon, image, form Chúng ta lưu giữ tập tin trường hợp cần thay đổi hay tạo lại tập tin thực thi Câu hỏi 4: Nếu trình biên dịch C# đưa trình soạn thảo, có phải thiết phải sử dụng nó? Trả lời 4: Khơng hồn tồn Chúng ta sử dụng trình soạn thảo văn lưu mã nguồn dạng tập tin văn Nếu trình biên dịch đưa trình soạn thảo nên sử dụng Nếu có mơt trình soạn thảo khác tốt sử dụng Một số tiện ích soạn thảo mã nguồn giúp cho ta dễ dàng tìm lỗi cú pháp, giúp tạo số mã nguồn tự động đơn giản Nói chung tùy theo theo tơi Visual Studio NET tốt để sử dụng Câu hỏi 5: Có thể khơng quan tâm đến cảnh báo biên dịch mã nguồn Trả lời 5: Một vài cảnh báo không ảnh hưởng đến chương trình chạy, số khác ảnh hưởng đến chương trình chạy Nếu trình biên dịch đưa cảnh báo, tức tín hiệu cho thứ khơng Hầu hết trình biên dịch cho phép thiết lập mức độ cảnh báo Bằng cách thiết lập mức độ cảnh báo quan tâm đến cảnh báo nguy hiểm, hay nhận hết tất cảnh báo Nói chung cách tốt nên xem tất cảnh báo để sửa chữa chúng, chương trình tạm gọi đạt u cầu khơng có lỗi biên dịch khơng có cảnh báo (nhưng chưa chạy kết quả!) Câu hỏi thêm Câu hỏi 1: Hãy đưa lý ngôn ngữ C# ngôn ngữ lập trình tốt? Câu hỏi 2: IL CLR viết tắt cho từ ý nghĩa nó? Câu hỏi 3: Đưa bước chu trình xây dựng chương trình? Câu hỏi 4: Trong biên dịch dịng lệnh lệnh sử dụng để biên dịch mã nguồn cs lệnh gọi chương trình nào? Câu hỏi 5: Phần mở rộng mà nên sử dụng cho tập tin mã nguồn C#? Câu hỏi 6: Một tập tin txt chứa mã nguồn C# có phải tập tin mã nguồn C# hợp lệ hay khơng? Có thể biên dịch hay khơng? Câu hỏi 7: Ngơn ngữ máy gì? Khi biên dịch mã nguồn C# tập tin exe tập tin ngơn ngữ gì? Câu hỏi 8: Nếu thực thi chương trình biên dịch khơng thực mong đợi chúng ta, điều cần phải làm? Câu hỏi 9: Một lỗi tương tự bên thường xuất nào? 34 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c mycode.cs(15,5): error CS1010: NewLine in constan Câu hỏi 10: Tại phải khai báo static cho hàm Main lớp? Câu hỏi 11: Một mã nguồn C# có phải chứa lớp tồn bên ngồi lớp C/C++? Câu hỏi 12: So sánh khác C# C/C++, C# với Java, hay ngôn ngữ cấp cao mà bạn biết? Câu hỏi 13: Con trỏ có cịn sử dụng C# hay khơng? Nếu có quản lý nào? Câu hỏi 14: Khái niệm ý nghĩa namespace C#? Điều xảy ngơn ngữ lập trình khơng hỗ trợ namespace? Bài tập Bài tập 1: Dùng trình soạn thảo văn mở chương trình exe mà ta biên dịch từ chương trình nguồn trước xem khác hai tập tin này, lưu ý đóng tập tin ta khơng chọn lưu tập tin Bài tập 2: Nhập vào chương trình sau biên dịch Cho biết chương trình thực điều gì? using System; class variables { public static void Main() { int radius = 4; const double PI = 3.14159; double circum, area; area = PI * radius* radius; circum = * PI * radius; // in kết Console.WriteLine(“Ban kinh = {0}, PI = {1}”, radius, PI); Console.WriteLine(“Dien tich {0}”, area); Console.WriteLine(“Chu vi {0}”, circum); } } Bài tập 3: Nhập vào chương trình sau biên dịch Cho biết chương trình thực điều gì? class AClass 35 Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c { static void Main() { int x, y; for( x = 0; x < 10; x++, System.Console.Write(“\n”)); for( y = ; y < 10; y++, System.Console.WriteLine(“{0}”,y)); } } Bài tập 4: Chương trình sau có chứa lỗi Nhập vào sửa lỗi Bài tập 5: Sửa lỗi biên dịch chương trình sau class Test { pubic static void Main() { Console.WriteLine(“Xin chao”); Consoile.WriteLine(“Tam biet”); } } Bài tập 6: Sửa lỗi biên dịch chương trình sau class Test { pubic void Main() { Console.WriteLine(‘Xin chao’); Consoile.WriteLine(‘Tam biet’); } } Bài tập 7: Viết chương trình xuất thơ: 36 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Rằm Tháng Giêng Rằm xuân lồng lộng trăng soi, Sông xuân nước lẫn màu trời thêm xuân Giữa dòng bàn bạc việc quân Khuya bát ngát trăng ngân đầy thuyền Hồ Chí Minh 37 Ngơn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Chương NỀN TẢNG NGÔN NGỮ C#  Kiểu liệu  Kiểu liệu xây dựng sẵn  Chọn kiểu liệu  Chuyển đổi kiểu liệu  Biến  Gán giá trị xác định cho biến  Hằng  Kiểu liệt kê  Kiểu chuỗi ký tự  Định danh  Biểu thức  Khoảng trắng  Câu lệnh  Phân nhánh khơng có điều kiện  Phân nhánh có điều kiện  Câu lệnh lặp  Tốn tử  Namespace  Các dẫn biên dịch  Câu hỏi & tập 38 Nền Tảng Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Trong chương trước tìm hiểu chương trình C# đơn giản Chương trình chưa đủ để diễn tả chương trình viết ngơn ngữ C#, có nhiều phần chi tiết bỏ qua Do chương sâu vào tìm hiểu cấu trúc cú pháp ngôn ngữ C# Chương thảo luận hệ thống kiểu liệu, phân biệt kiểu liệu xây dựng sẵn (như int, bool, string…) với kiểu liệu người dùng định nghĩa (lớp hay cấu trúc người lập trình tạo ) Một số khác lập trình tạo sử dụng biến liệu hay đề cập với cấu trúc liệt kê, chuỗi, định danh, biểu thức cậu lệnh Trong phần hai chương hướng dẫn minh họa việc sử dụng lệnh phân nhánh if, switch, while, while, for, foreach Và toán tử phép gán, phép toán logic, phép toán quan hệ, toán học Như biết C# ngôn ngữ hướng đối tượng mạnh, cơng việc người lập trình kế thừa để tạo khai thác đối tượng Do để nắm vững phát triển tốt người lập trình cần phải từ bước dầu tiên tức vào tìm hiểu phần cốt lõi ngôn ngữ Kiểu liệu C# ngơn ngữ lập trình mạnh kiểu liệu, ngôn ngữ mạnh kiểu liệu phải khai báo kiểu đối tượng tạo (kiểu số nguyên, số thực, kiểu chuỗi, kiểu điều khiển ) trình biên dịch giúp cho người lập trình không bị lỗi cho phép loại kiểu liệu gán cho kiểu liệu khác Kiểu liệu đối tượng tín hiệu để trình biên dịch nhận biết kích thước đối tượng (kiểu int có kích thước byte) khả (như đối tượng button vẽ, phản ứng nhấn, ) Tương tự C++ hay Java, C# chia thành hai tập hợp kiểu liệu chính: Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình kiểu người dùng định nghĩa (user-defined) người lập trình tạo C# phân tập hợp kiểu liệu thành hai loại: Kiểu liệu giá trị (value) kiểu liệu tham chiếu (reference) Việc phân chi khác lưu kiểu liệu giá trị kiểu liệu tham chiếu nhớ Đối với kiểu liệu giá trị lưu giữ kích thước thật nhớ cấp phát stack Trong địa kiểu liệu tham chiếu lưu stack đối tượng thật lưu nhớ heap Nếu có đối tượng có kích thước lớn việc lưu giữ chúng nhớ heap có ích, chương trình bày lợi ích bất lợi làm việc với kiểu liệu tham chiếu, chương tập trung kiểu kiểu hay kiểu xây dựng sẵn Ghi chú: Tất kiểu liệu xây dựng sẵn kiểu liệu giá trị ngoại trừ đối tượng chuỗi Và tất kiểu người dùng định nghĩa ngoại trừ kiểu cấu trúc kiểu liệu tham chiếu 39 Nền Tảng Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngơn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c h a n g e Vi e N y to k lic c Ngoài C# hỗ trợ kiểu trỏ C++, sử dụng, làm việc với đoạn mã lệnh không quản lý (unmanaged code) Mã lệnh không quản lý lệnh viết bên MS.NET, đối tượng COM Kiểu liệu xây dựng sẵn Ngôn ngữ C# đưa kiểu liệu xây dựng sẵn hữu dụng, phù hợp với ngôn ngữ lập trình đại, kiểu liệu ánh xạ đến kiểu liệu hỗ trợ hệ thống xác nhận ngôn ngữ chung (Common Language Specification: CLS) MS.NET Việc ánh xạ kiểu liệu nguyên thuỷ C# đến kiểu liệu NET đảm bảo đối tượng tạo C# sử dụng đồng thời với đối tượng tạo ngôn ngữ khác biên dịch NET, VB.NET Mỗi kiểu liệu có xác nhận kích thước không thay đổi, không giống C++, int C# ln có kích thước byte ánh xạ từ kiểu Int32 NET Bảng 3.1 sau mô tả số kiểu liệu xây dựng sẵn Kiểu C# byte Số byte Kiểu NET Byte Char Sbyte Uịnt16 Uint32 float 4 double Double decimal Decimal char bool sbyte short ushort int uint Boolean Int16 Int32 Single Mô tả Số nguyên dương không dấu từ 0-255 Ký tự Unicode Giá trị logic true/ false Số nguyên có dấu ( từ -128 đến 127) Số nguyên có dấu giá trị từ -32768 đến 32767 Số nguyên không dấu – 65.535 Số nguyên có dấu –2.147.483.647 2.147.483.647 Số ngun khơng dấu – 4.294.967.295 Kiểu dấu chấm động, giá trị xấp xỉ từ 3,4E38 đến 3,4E+38, với chữ số có nghĩa Kiểu dấu chấm động có độ xác gấp đơi, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308, với 15,16 chữ số có nghĩa Có độ xác đến 28 số giá trị thập phân, dùng tính tốn tài chính, kiểu địi hỏi phải có hậu tố “m” hay “M” theo sau giá trị 40 Nền Tảng Ngôn Ngữ C# d o m o o c u -tr a c k C w w w w d o m C lic k to Ngôn Ngữ Lập Trình C# w w w w w bu bu y N O W ! XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ... từ bỏ ý tưởng đa kế thừa C++ Và khác khác C# đưa thêm thuộc tính vào lớp giống Visual Basic Và thành viên lớp gọi tốn tử “.” khác với C++ có nhiều cách gọi tình khác Một ngôn ngữ khác mạnh phổ... control có truy cập giới hạn đến máy người sử dụng Điều có nghĩa mà nguồn thực thi nhị phân truy cập vài tài nguyên máy người sử dụng (như thành phần đồ họa hay số tập tin giới hạn) mà truy cập đến... dụ, nút có thuộc tính kích thước, vị trí, nhãn tên (label), nhiên thuộc tính thể khơng thiết phải giống nhau, thường chúng khác nhau, nút OK có nhãn “OK”, Cancel có nhãn “Cancel” Ngồi nút có hành

Ngày đăng: 25/07/2014, 07:21

Từ khóa liên quan

Trích đoạn

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

  • Đang cập nhật ...

Tài liệu liên quan