Bài giảng Lập trình C# 1 - Chương 1: Giới thiệu C# nêu lên tình hình trước khi MS.NET ra đời, Microsoft .NET, biên dịch và MSIL, ngôn ngữ C#. Đặc biệt, với những bài tập được đưa ra ở cuối bài sẽ giúp cho các bạn nắm bắt kiến thức một cách tốt hơn.
F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Tình hình tr c MS.NET Microsoft NET Biên d ch MSIL Ngôn ng C# Câu h i i 2/46 c MS.NET k e r- s o ft w a i dung Ch ng Gi i thi u C# Tình hình tr ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD i Tình hình tr c MS.NET i l p trình Web, ng i ta v n dùng PHP, m t ngôn ng t c nhanh • Trong gi i phát tri n ng d ng Windows ta có th vi t ng d ng b ng Visual C++, Delphi hay Visual Basic • Do Visual Basic khơng thích h p cho vi t ng Web Server nên Microsoft t o ASP (Active Server Page) • B n thân c a ASP m t s khuy t m quan tr ng, nh t ch y IIS (Internet Information Server) v i Windows NT 4, ASP khơng tin c y l m • Java c Sun vi t ra, ã có s c m nh , h ng t i vi c ch y nhi u h u hành khác nhau, c l p v i b x lý c bi t Java r t thích h p cho vi c vi t ng d ng Internet • Tuy nhiên, Java l i có h n ch v m t t th c t v n ch a th nh hành 3/46 4/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Microsoft NET ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD k e r- s o ft w a Microsoft NET u n m 1998, sau hoàn t t phiên b n Version a Internet Information Server (IIS), i ng l p trình Microsoft nh n th y h r t nhi u sáng ki n ki n tồn IIS • H b t u xây d ng m t ki n trúc m i n n ng ý t ng ó t tên Next Generation Windows Services (NGWS) • Th t s Microsoft ã t c c vào NET theo thông tin a công ty, ã t p trung 80% s c m nh c a Microsoft nghiên c u tri n khai NET 6/46 5/46 Microsoft NET Commom Language Runtime (CLR) • NET m t mơi tr ng qu n lý, phát tri n th c thi m ngơn ng NET • NET cung c p kh n ng : • CLR th c hi n qu n lý : – – – – – V c p phát thu h i b nh – Qu n lý c p quy n, – Cung c p qu n lý ngu n tài nguyên B 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 • CLR thúc • G m ph n chính: – Commom Language Runtime (CLR) – Framework class lybary y: – Vi c mã ngu n th c hi n vi c truy c p cb om t – Mã ngu n c th c thi m nh m h n b ng vi c th c thi mã ngu n xác s xác nh n mã ngu n 7/46 8/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr NET framework class lybary k e r- s o ft w a t s tính n ng c a Microsoft NET • Framework m t t p h p h ng i t ng c a ki u d li u c dùng l i • Nó cho phép phát tri n nh ng ng d ng t : ng d ng truy n th ng command-line (Console) ng d ng có giao di n a (GUI) – Nh ng ng d ng m i nh t c cung c p b i ASP.NET (Web Form d ch v XML Web) – D ch v windows • M t mơ hình l p trình cho phép : – 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) • • • Cung c p server ph c v bao g m: Windows 2000, SQL Server, BizTalk Server, t t c u tích h p, ho t ng, qu n lý d ch v XML Web ngd ng Các ph n m m client nh 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 nh Visual Studio NET, phát tri n d ch Web XML, ng d ng n n Windows hay n n web m t cách dàng hi u qu 10 /46 9/46 Phát tri n ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD ng d ng Client Ki u truy n th ng ây nh ng ki u ng d ng hi n th nh ng c a s hay nh ng form desktop • Cho phép ng i dùng th c hi n m t thao tác hay nhi m ó nh : • Ki u truy n th ng • ActiveX control – Nh x lý v n b n, x lý b ng tính, nh ng ng d ng l nh c th ng m i nh công c nh p li u, công c t o báo cáo – Th ng s d ng nh 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 b nh t p tin th ng, thi t b ngo i vi nh máy in 11/46 12 /46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr ActiveX control k e r- s o ft w a Biên d ch MSIL • Trong NET Framework, ch ng trình khơng c biên ch vào t p tin th c thi mà thay vào ó chúng c biên d ch vào nh ng t p tin trung gian i Microsoft Intermediate Language (MSIL) • Khi ng d ng c a b n th c thi, mã MSIL “just in time” biên d ch sang mã máy b i JITTER (just in time compiler) • Nh v y b n vi t l p Net b ng b t k ngôn ng b n biên d ch sang Assembly b n u có th s d ng Assembly ó cho ngơn ng khác c nhúng vào trang web Internet • Hi n c thay th b i Windows Form control • Windows Form control có s truy c p gi i h n n máy c a ng i s d ng 14/46 13/46 Ngôn ng ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD Gi i thi u C# • Gi i thi u • C# ngơn ng l p trình khác (sinh viên t nghiên c u) • T i C# • Các b c chu n b cho ch ng trình • Ch ng trình C# n gi n • Phát tri n ch ng trình minh ho 15/46 16/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Gi i thi u • Ngơn ng C# • C# làm vi c xoay quanh khái ni m Assembly • Assembly t p h p mã c biên d ch sang NET • Ti n trình th c thi b i m t ch ng trình C# : c xây d ng s n • Ngơn ng C# có ý ngh a cao : – Khi ch ng trình c th c thi, CLR s xác nh n n Assembly manifest quy n h n ch y c a ch ng trình h th ng – H b o v h th ng: • Khơng cho phép ch ng trình ch y, ch ng trình s khơng ch y • N u c phép, CLR s th c thi m l nh Bit u tiên c a code c n p vào b nh c biên d ch thành m nh phân t IL b i JIT Sau c biên d ch, m c th c thi ch a b nh – Bao g m t t c nh ng h tr cho c u trúc – Thành ph n component – L p trình h ng i t ng c xây d ng n n t ng c a hai ngôn ng m nh nh t C++ Java • Ngơn ng C# c phát tri n b i i ng k s c a Microsoft, ó ng i d n u Anders Hejlsberg Scott Wiltamuth 18 /46 17/46 i C#? • • • • • • • k e r- s o ft w a Cách th c làm vi c n gi n: – Ch kho ng 80 t khóa – H n m i m y ki u d li u ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD C# C# n gi n C# hi n i C# h ng i t ng C# m nh m m m d o C# t khóa C# h ng module C# s ph bi n n gi n • C# lo i b m t vài s ph c t p r i r m c a nh ng ngôn ng nh Java c++ [macro, template, a k th a, l p c s class)] • Ngơn ng C# C C++ 19/46 o (virtual base n gi n d a n n t ng 20/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr C# hi n i C# h • Con tr c tích h p vào ngơn ng C++ Chúng c ng nguyên nhân gây nh ng r c i c a ngơn ng • Ngơn ng hi n i ph i có nh ng c tính : – – – – ng it ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD k e r- s o ft w a ng óng gói (encapsulation) • S k th a (inheritance) a hình (polymorphism) X lý ngo i l Thu gom b nh t ng Nh ng ki u d li u m r ng B o m t mã ngu n 21/46 C# C# m nh m m m d o • V i ngôn ng C# ch b gi i h n 22/46 khóa : – Chính b i b n thân ng i dùng – Trí t ng t ng c a • C# c s d ng cho nhi u d án khác nh : – T o ng d ng x lý v n b n ng d ng h a – B ng tính – Trình biên d ch cho ngôn ng khác 23/46 24/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr C# h ng module • Microsoft s cam k t c a NET • Nhi u s n ph m c a công ty ã chuy i vi t l i b ng C# B ng cách s d ng ngôn ng Microsoft ã xác nh n kh n ng c a C# n thi t cho nh ng ng i l p trình 25/46 • • • • ng trình Xác nh m c tiêu c a ch ng trình Xác nh nh ng ph ng pháp gi i quy t v n T o m t ch ng trình gi i quy t v n Th c thi ch ng trình xem k t qu k e r- s o ft w a C# s ph bi n • Mã ngu n C# có th c vi t nh ng ph n c g i nh ng l p • Nh ng l p ch a ph ng th c thành viên c a • Nh ng l p nh ng ph ng th c có th c ng l i ng d ng hay ch ng trình khác Chu n b cho ch ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD 26/46 Phát tri n ch ng trình minh ho • Cách 1: – So n ch ng trình: d ng ch ng trình so n th o n b n b t k nh Notepad – Biên d ch ch ng trình: d ng câu l nh • Cách 2: d ng mơi tr ng phát tri n tích h p (IDE) Visual Studio NET 27/46 28/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Cách ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD k e r- s o ft w a Cách • S d ng Notepad so n th o ch ng trình • L u t p tin xu ng a t p tin có ph n m ng *.cs • Biên d ch t p tin ngu n v a t o : csc.exe [/out: ] d ng Visual Studio NET : • So n th o ch • Biên d ch • Th c thi ng trình • Ví d : csc.exe /out: d:\chaomung.exe d:\chaomung.cs 29/46 So n th o ch ng trình 30/46 So n th o ch • Ch n m c Visual Studio NET menu Start • File New Project ng trình • L p, i t ng ki u d li u (type) • Ph ng th c • Chú thích ng d ng Console • Namespace • Tốn t ‘.’ • T khóa using • T khóa static • Phân bi t ch th ng ch hoa 31/46 32/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr p, it ng ki u d li u (type) • L p : t p i t ng hành vi i t ng : th hi n riêng c a l p • Ki u : class Program { Các thu c tính Các hành ng } • Các ki u khác : ki u l p; ki u li t kê; c u trúc; ki u y quy n (delegates) 33/46 ng th c u tiên; Không mơ t hành 34/46 Chú thích class Program { static void Main(string[] args) { System.Console.WriteLine("Chao mung ban den voi C#"); System.Console.ReadLine(); } } Main() : • Hàm c bi t; Nó cg i c a l p • Tr v void ho c int k e r- s o ft w a p – Là m t th c xem nh tr u t ng Nó có th t b ng d li u, hay m t nút l nh m t c a s – Nh m t d ng v a có thu c tính chung (properties) hành vi ng x (behavior) c a Ph ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD • Chú thích: Gi i thích; nh c nh • Có cách ghi thích: – // ch có tác d ng dịng – /* có tác d ng cho nhi u dòng */ ng 35/46 36/46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr ng d ng Console ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD k e r- s o ft w a Namespace ng d ng giao ti p v i ng i dùng thơng qua bàn phím • Khơng có giao di n ng i dùng (GUI) • NET cung c p m t th vi n l p s th vi n có tên FCL (Framework Class Library) • M i l p có m t tên riêng, v y FCL có hàng ngàn tên • T ó d n n: – Ng l –T h il Các ng d ng nâng cao Windows hay Web ta m i dùng các giao di n h a i l p trình không th nh h t c tên c a p NET Framework n n a sau có th ta t o l i m t l p trùng p ã có ch ng h n 38/46 37/46 Gi i pháp o namespace • T o m t namespace, namsespace s h n ch ph m vi c a m t tên, làm cho tên ch có ý ngh a vùng ã nh ngh a • Ngồi cịn có subnamespace • Ví d : – Có m t ng i nói Tùng m t k s (k s c u ng, c khí hay ph n m m) – C# : Tùng CauDuong.KySu phân bi t v i CoKhi.KySu hay PhanMem.KySu – Namespace tr ng h p CauDuong, CoKhi, PhanMem 39/46 namespace MyLib { using System; public class Tester { public static int Main() { for (int i =0; i < 10; i++) { Console.WriteLine( “i: {0}”, i); } return 0; } } } 40/46 10 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Toán t ‘.’ System.Console.WriteLine(); p k e r- s o ft w a khóa using • D u‘ ’ c s d ng truy c p n ph ng th c hay li u m t p, ng n cách gi a tên l p n t namespace • Vi c th c hi n theo h ng t xu ng, ó c u tiên namespace, ti p theo p, cu i truy c p n ph ng th c hay thu c tính a l p namespace ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD using < Tên namespace > làm cho ch ng trình g n h n, không c n ph i vi t t ng namespace cho t ng i t ng • Sau t khóa m t namespace hay subnamespace v i mô t y c u trúc phân c p c a Ph ng th c 42/46 41/46 Phân bi t ch using System; using System.Collections.Generic; using System.Linq; using System.Text; th ng ch • C# ngôn ng phân bi t ch th hoa using System.Console namespace ConsoleApplication1 { class Program { static void Main(string[] args) { System.Console.WriteLine("Chao mung ban den voi C#"); Console.WriteLine("Chuc ban thoai mai voi C#"); Console.ReadLine(); } } } hoa ng v i ch u có ngh a r ng hai câu l nh writeLine khác v i WriteLine c ng khác v i WRITELINE 43/46 44/46 11 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y bu k lic tr Biên d ch – Th c thi biên d ch ch ch y ch k e r- s o ft w a Câu h i M t ch ng trình C# có th ch y b t c máy nào? N u mu n a ch ng trình mà ta vi t cho m t ng i b n t p tin mà c n a? Sau t o c t p tin th c thi exe Có c n thi t gi l i t p tin ngu n không? N u trình biên d ch C# a m t trình so n th o, có ph i nh t thi t ph i s d ng nó? Có th khơng quan tâm n nh ng c nh báo biên d ch mã ngu n? CLR vi t t t cho t ý ngh a c a nó? Ngơn ng máy gì? Khi biên d ch mã ngu n C# t p tin exe p tin ngơn ng gì? ng trình : Nh n Ctrl-Shift-B Build Build Solution ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12/05/2011 om PD ng trình : Ctrl-F5 Debug Start Without Debugging Nút l nh toolbar 45/46 46 /46 12 re ... n C# t p tin exe p tin ngơn ng gì? ng trình : Nh n Ctrl-Shift-B Build Build Solution ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12 /05/2 011 om PD ng trình : Ctrl-F5... khác (sinh viên t nghiên c u) • T i C# • Các b c chu n b cho ch ng trình • Ch ng trình C# n gi n • Phát tri n ch ng trình minh ho 15 /46 16 /46 re F -X C h a n ge F -X C h a n ge O W ! PD O W ! N y... hay ch ng trình khác Chu n b cho ch ac c C om k lic C c re k e r- s o ft w a w w ac ww ww tr to to bu y N 12 /05/2 011 om PD 26/46 Phát tri n ch ng trình minh ho • Cách 1: – So n ch ng trình: d