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.
Trang 1Ch ng 1
Gi i thi u C#
i dung
1 Tình hình tr c khi MS.NET ra i
2 Microsoft NET
3 Biên d ch và MSIL
4 Ngôn ng C#
5 Câu h i
2
• Java c Sun vi t ra, ã có s c m nh áng , nó h ng t i vi c ch y trên nhi u h u hành khác nhau, c l p v i b x lý
c bi t là Java r t thích h p cho vi c vi t các
ng d ng trên Internet
• Tuy nhiên, Java l i có h n ch v m t t và trên th c t v n ch a th nh hành
• Trong gi i phát tri n ng d ng trên 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 các ng Web
Server) v i Windows NT 4, ASP không áng tin c y l m
Trang 22 Microsoft NET
2 Microsoft NET
u n m 1998, sau khi hoàn t t phiên b n Version 4
trình Microsoft nh n th y h còn r t nhi u sáng ki n
ki n toàn IIS.
Windows Services (NGWS)
a công ty, ã t p trung 80% s c m nh c a Microsoft nghiên c u và tri n khai NET
6
Microsoft NET
• NET là m t môi tr ng qu n lý, phát tri n và th c thi các m ngôn ng NET
• NET cung c p các kh n ng :
– V c p phát và thu h i b nh – Qu n lý c p quy n, – Cung c p và qu n lý các ngu n tài nguyên
• G m 2 ph n chính:
– Commom Language Runtime (CLR) – Framework class lybary
Commom Language Runtime (CLR)
• CLR th c hi n qu n lý :
– 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 và các d ch v h th ng khác
• CLR thúc y :
– Vi c mã ngu n th c hi n vi c truy c p c b o m t – Mã ngu n c th c thi m nh m h n b ng vi c
th c thi mã ngu n chính xác và s xác nh n mã ngu n
Trang 3.NET framework class lybary
• Framework là m t t p h p h ng i t ng c a các 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 và d ch v XML Web) – D ch v windows
t s tính n ng c a Microsoft NET
• M t mô hình l p trình cho phép : – Phát tri n xây d ng các ng d ng d ch v web
ng d ng client v i Extensible Markup Language (XML).
• Cung c p các server ph c v bao g m: Windows 2000, SQL Server, và BizTalk Server, t t c u tích h p, ho t ng, và qu n
lý các d ch v XML Web và các ngd ng
• Các ph n m m client nh Windows XP và Windows CE giúp ng i phát tri n phân ph i sâu và thuy t ph c ng i dùng kinh nghi m thông qua các dòng thi t b
• Nhi u công c h tr nh Visual Studio NET, phát tri n các d ch Web XML, ng d ng trên n n Windows hay n n web m t cách dàng và hi u qu
10
Phát tri n ng d ng Client
• Ki u truy n th ng
• ActiveX control
Ki u truy n th ng
ây là nh ng ki u ng d ng hi n th nh ng c a s hay
nh ng form trên desktop
nào ó nh :
– Nh x lý v n b n, x lý b ng tính, nh ng ng d ng trong 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 các thành ph n GUI khác
– Chúng th ng truy c p các tài nguyên c c b nh là các t p tin
th ng, các thi t b ngo i vi nh máy in.
Trang 4ActiveX control
c nhúng vào các trang web trên Internet
• Hi n nay nó c thay th b i các 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
3 Biên d ch và MSIL
biên d ch vào nh ng t p tin trung gian i là Microsoft
• Khi ng d ng c a b n th c thi, mã MSIL là “just in time”
biên d ch sang mã máy b i JITTER (just in time compiler)
• Nh v y khi b n vi t các l p trên Net b ng b t k ngôn
th s d ng Assembly ó cho các ngôn ng khác
14
4 Ngôn ng C#
• Gi i thi u
• C# và các ngôn ng l p trình khác (sinh viên t nghiên c u)
• T i sao là 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
Gi i thi u
Trang 5Gi i thi u
– Ch kho ng 80 t khóa – H n m i m y ki u d li u c xây d ng s n
• Ngôn ng C# có ý ngh a cao :
– 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 trên n n t ng c a hai ngôn ng m nh nh t là C++ và Java
và Scott Wiltamuth
Cách th c làm vi c
• C# làm vi c xoay quanh khái ni m Assembly
– Khi ch ng trình c th c thi, CLR s xác nh n n các Assembly manifest và quy n h n ch y c a ch ng trình trên 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 và c biên d ch thành m nh phân t IL b i JIT Sau khi c biên d ch, m c th c thi
và ch a trong b nh
18
i sao là C#?
• C# n gi n
• C# hi n i
• C# h ng i t ng
• C# m nh m và m m d o
• C# ít t khóa
• C# h ng module
• C# s ph bi 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++[macro, template, a k th a, và l p c s o (virtual base class)]
• Ngôn ng C# n gi n vì nó d a trên n n t ng
C và C++
Trang 6• 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
i c a ngôn ng này
• Ngôn ng hi n i ph i có nh ng c tính :
– 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
óng gói (encapsulation)
• S k th a (inheritance)
a hình (polymorphism)
22
C# m nh m và m m d o
• V i ngôn ng C# chúng ta ch b gi i h n :
– Chính b i b n thân ng i dùng – Trí t ng t ng c a chúng ta
• C# c s d ng cho nhi u các d án khác nhau nh :
– T o ra 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 các ngôn ng khác
Trang 7• 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 ng ph ng th c có th c
ng l i trong ng d ng hay các ch ng trình khác
C# s ph bi n
• Microsoft và s cam k t c a NET
• Nhi u s n ph m c a công ty này ã chuy i
và vi t l i b ng C# B ng cách s d ng ngôn
ng này Microsoft ã xác nh n kh n ng c a C#
n thi t cho nh ng ng i l p trình
26
• 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
• Cách 1:
n b n b t k nh Notepad
• Cách 2: d ng môi tr ng phát tri n tích h p (IDE) Visual Studio NET
Trang 8Cách 1
• S d ng Notepad so n th o ch ng trình
• L u t p tin xu ng a và t p tin này có ph n m
ng là *.cs
• Biên d ch t p tin ngu n v a t o ra :
csc.exe [/out: <file th c thi>] <file ngu n>
• Ví d :
csc.exe /out: d:\chaomung.exe d:\chaomung.cs
Cách 2
d ng Visual Studio NET :
• So n th o ch ng trình
• Biên d ch
• Th c thi
30
• Ch n m c Visual Studio NET trong menu Start
• L p, i t ng và ki u d li u (type)
• Ph ng th c
• Chú thích
ng d ng Console
• Namespace
• Toán t ‘.’
• T khóa using
• T khóa static
• Phân bi t ch th ng và ch hoa
Trang 9• L p : t p các i t ng cùng hành vi
i t ng : th hi n riêng c a l p
• Ki u :
– Là m t th c xem nh tr u t ng Nó có th là
t b ng d li u, hay m t nút l nh trong m t c a s – Nh m t d ng v a có thu c tính chung (properties)
và các hành vi ng x (behavior) c a nó
• Các ki u khác nhau : ki u l p; ki u li t kê; c u trúc; ki u y quy n (delegates)
p
{
Các thu c tính Các hành ng }
34
class Program {
static void Main(string[] args) {
System.Console.WriteLine("Chao mung ban den voi C#");
System.Console.ReadLine();
} }
Chú thích
• Chú thích: Gi i thích; nh c nh
• Có 2 cách ghi chú thích:
– // ch có tác d ng trên dòng này – /* có tác d ng cho
nhi u dòng */
Trang 10ng d ng Console
ng d ng này 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)
37
Các ng d ng nâng cao trên Windows hay Web thì ta m i dùng các các giao di n h a
/46
Namespace
• NET cung c p m t th vi n các l p s và
th vi n này có tên là FCL (Framework Class Library)
• M i l p có m t tên riêng, vì v y FCL có hàng ngàn tên
• T ó d n n:
– Ng i l p trình không th nào nh h t c tên c a các l p trong NET Framework
– T h n n a là sau này có th ta t o l i m t l p trùng
i l p ã có ch ng h n
38
Gi i pháp
• T o ra m t namespace, namsespace s h n
ch ph m vi c a m t tên, làm cho tên này ch có
ý ngh a trong vùng ã nh ngh a
• Ngoài ra còn có subnamespace
• Ví d :
– Có m t ng i nói Tùng là m t k s (k s c u
ng, c khí hay ph n m m) – C# : Tùng là CauDuong.KySu phân bi t v i CoKhi.KySu hay PhanMem.KySu
– Namespace trong tr ng h p này là CauDuong, CoKhi, PhanMem
o namespace
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;
} }
Trang 11li u trong m t p , và ng n cách gi a tên l p n
t namespace
System Console WriteLine() ;
khóa using
làm cho ch ng trình g n h n, và không c n
ph i vi t t ng namespace cho t ng i t ng
• Sau t khóa này là m t namespace hay subnamespace v i mô t y trong c u trúc phân c p c a nó
42
using < Tên namespace >
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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();
}
using System.Console
• C# là ngôn ng phân bi t ch th ng v i ch hoa
u này có ngh a r ng hai câu l nh writeLine
thì khác v i WriteLinevà c ng khác v i
WRITELINE
Trang 12Biên d ch – Th c thi
1 biên d ch ch ng trình :
1 Nh n Ctrl-Shift-B
2 Build Build Solution
2 ch y ch ng trình :
1 Ctrl-F5
2 Debug Start Without Debugging
3 Nút l nh trên thanh toolbar
Câu h i
1 M t ch ng trình C# có th ch y trên b t c máy nào?
2 N u mu n a ch ng trình mà ta vi t cho m t ng i b n thì t p tin nào mà chúng ta c n a?
3 Sau khi t o ra c t p tin th c thi exe Có c n thi t gi l i t p tin ngu n không?
4 N u trình biên d ch C# a ra m t trình so n th o, có ph i nh t thi t ph i s d ng nó?
5 Có th không quan tâm n nh ng c nh báo khi biên d ch mã ngu n?
6 CLR vi t t t cho t nào và ý ngh a c a nó?
7 Ngôn ng máy là gì? Khi biên d ch mã ngu n C# ra t p tin exe thì
p tin này là ngôn ng gì?
46