Giáo trình mô đun Lập trình windows forms cung cấp cho sinh viên những kiến thức và kỹ năng về: Trình bày các kiểu dữ liệu cơ bản của C#; trình bày các câu lệnh, cấu trúc điều khiển, rẽ nhánh; trình bày các control xây dựng giao diện; xác định, phân tích chức năng yêu cầu để lên kế hoạch xây dựng chương trình ứng dụng; thiết kế giao diện chương trình ứng dụng; vận dụng các kiến thức xây dựng các chức năng của ứng dụng;...
Trang 1UBND T NH BÀ R A – VŨNG TÀUỈ Ị
TRƯỜNG CAO Đ NG K THU T CÔNG NGHẲ Ỹ Ậ Ệ
GIÁO TRÌNH
MÔ ĐUN: L P TRÌNH WINDOWS FORMSẬNGH : Ề CÔNG NGH THÔNG TINỆTRÌNH Đ : CAO Đ NGỘ Ắ
(Ban hành kèm theo Quy t đ nh s : /QĐCĐKTCN ế ị ố
ngày…….tháng….năm c a Hi u tr ủ ệ ưở ng Tr ườ ng Cao đ ng K ẳ ỹ
thu t Công ngh BR – VT) ậ ệ
Trang 2BÀ R AVŨNG TÀU, NĂM 2020.Ị
Trang 3Tài li u đệ ược biên so n thu c lo i giáo trình ph c v gi ng d y và h cạ ộ ạ ụ ụ ả ạ ọ
t p, l u hành n i b trong Nhà trậ ư ộ ộ ường nên các ngu n thông tin có th đồ ể ượ cphép dùng nguyên b n ho c trích dùng cho các m c đích v đào t o và thamả ặ ụ ề ạ
kh o.ả
M i m c đích khác mang tính l ch l c ho c s d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ doanh thi u lành m nh s b nghiêm c m.ế ạ ẽ ị ấ
Trang 4L I GI I THI UỜ Ớ Ệ
Giáo trình L p trình Windows Forms ậ được biên so n d a trên khungạ ự
chương trình đào t o Cao đ ng ngh Công ngh Thông tin đã đạ ẳ ề ệ ược Trườ ngCao đ ng K thu t Công nghê Bà R a – Vũng Tàu phê duy t.ẳ ỹ ậ ị ệ
Bên c nh đó nh m giúpạ ằ cho ngườ ọi h c các ki n th c và k năng c nế ứ ỹ ầ thi t đ thi t k và l p trình đế ể ế ế ậ ược các ng d ng nh trong cu c s ng h ngứ ụ ỏ ộ ố ằ ngày
Tác gi đã nghiên c u m t s tài li u, trang web liên quan k t h p v iả ứ ộ ố ệ ế ợ ớ kinh nghi m làm vi c, gi ng d y th c t đ biên so n giáo trình này. ệ ệ ả ạ ự ế ể ạ
Trong giáo trình này bao g m các bài sau:ồ
Bài 1: Gi i thi u t ng quanớ ệ ổ
Bài 2: Các thành ph n c b nầ ơ ả
Bài 3: S d ng câu l nh nh p xu t c b n, c u trúc đi u khi n ifử ụ ệ ậ ấ ơ ả ấ ề ể
Bài 4: S d ng c u trúc l a ch n switch case, for, for eachử ụ ấ ự ọ
Bài 5: S d ng c u trúc vòng l p ử ụ ấ ặ while, do…while
Bài 6: S d ng câu l nh ử ụ ệ break, continue, goto
Bài 7: Hàm
Bài 8: Thi t k l p đ i tế ế ớ ố ượng
Bài 9: Đ nh nghĩa các thu c tính, phị ộ ương th c hành đ ng cho l p đ iứ ộ ớ ố
Trang 5Bài 19: T o k t n i, đóng k t n i c s d li uạ ế ố ế ố ơ ở ữ ệ
Bài 20: Truy xu t c s d li u b ng Datasetấ ơ ở ữ ệ ằ
Bài 21: Hi n th c s d li u b ng DataGridViewể ị ơ ở ữ ệ ằ
Bài 22: Truy xu t c s d li u b ng BindingSourceấ ơ ở ữ ệ ằ
Bài 23: Hi n th c s d li u b ng BindingNavigatorể ị ơ ở ữ ệ ằ
Trong quá trình biên so n, ch c ch n giáo trình còn nhi u thi u sót. Tácạ ắ ắ ề ế
gi r t mong nh n đả ấ ậ ược ý ki n đóng góp c a quý th y/cô và các em sinh viênế ủ ầ
đ ti p t c hoàn thi n h n.ể ế ụ ệ ơ
Xin chân thành c m n quý đ ng nghi p, b n bè đã có nh ng ý ki nả ơ ồ ệ ạ ữ ế đóng góp trong quá trình xây d ng giáo trình này.ự
Bà R a – Vũng Tàu, ngày …… tháng …… năm 2020ịTham gia biên so nạ
1. Tr n Th Thanh Hầ ị ươ – Ch biênng ủ
Trang 7M C L CỤ Ụ
Trang 8GIÁO TRÌNH MÔ ĐUNTên mô đun: L p trình Windows formsậ
Mã mô đun: MĐ 20
V trí, tính ch t, ý nghĩa và vai trò c a mô đun:ị ấ ủ
V trí c a mô đun: Mô đun đị ủ ược b trí sau khi h c sinh h c xong các mô đunố ọ ọ
C s d li u, L p trình căn b n, Qu n tr c s d li u SQL Serverơ ở ữ ệ ậ ả ả ị ơ ở ữ ệ
+ Trình bày các ki u d li u c b n c a C#.ể ữ ệ ơ ả ủ
+ Trình bày các câu l nh, c u trúc đi u khi n, r nhánh.ệ ấ ề ể ẽ
+ Trình bày các control xây d ng giao di n.ự ệ
V k năng:ề ỹ
+ Xác đ nh, phân tích ch c năng yêu c u đ lên k ho ch xây d ngị ứ ầ ể ế ạ ự
chương trình ng d ng.ứ ụ
+ Thi t k giao di n chế ế ệ ương trình ng d ng.ứ ụ
+ V n d ng các ki n th c xây d ng các ch c năng c a ng d ng.ậ ụ ế ứ ự ứ ủ ứ ụ
+ Ki m tra và x lý có h th ng các l i và s c ng d ng.ể ử ệ ố ỗ ự ố ứ ụ
+ Đóng gói ng d ng và tri n khai.ứ ụ ể
V năng l c t ch và trách nhi m:ề ự ự ủ ệ
+ Ch đ ng trong vi c th c t hóa các ng d ng ph n m m (Xây d ngủ ộ ệ ự ế ứ ụ ầ ề ự các ng d ng làm toán, )ứ ụ
Trang 9+ Phát tri n các chể ương trình ng d ng trong quá trình h c t p thành cácứ ụ ọ ậ
ph n m m qu n lý (Nhà hàng, khách s n, bán hàng, giáo d c…) trongầ ề ả ạ ụ
th c t ự ế
+ Gia công các ph n m m theo yêu c u khách hàng.ầ ề ầ
+ Tham gia các đ i tri n khai ph n m m trong các d án ph n m m.ộ ể ầ ề ự ầ ề
N i dung c a ộ ủ mô đun:
Trang 10BÀI 1: GI I THI U T NG QUAN Ớ Ệ Ổ
Mã bài: 19.01
Gi i thi u:ớ ệ
C# hay Csharp là m t trong nh ng ngôn ng l p trình trong h DotNetộ ữ ữ ậ ọ
c a Microsoft và khi l p trình C# ngủ ậ ườ ậi l p trình ph i chu n b và càiả ẩ ị
đ tặ .NET Framework
M c tiêu:ụ
Trình bày nhu c u xây d ng các ng d ng th c t ầ ự ứ ụ ự ế
Cài đ t, thao tác chặ ương trình ViSual Studio
Thao tác h th ng tr giúp t trình đ n Help.ệ ố ợ ừ ơ
Trang 11 Qu n lý th vi nả ư ệ
…
1.2. Kh i đ ng, thoát chở ộ ương trình
Để t i Visual Studio 2019, th c hi n vàoả ự ệ link: https://visualstudio.microsoft.com/download
Hình 1.1. Màn hình Download ph n m m cài đ t Visual Studio ầ ề ặ
trên có 3 phiên b n Visual Studio 2019. Đó là: Community, Professional và
Enterprise. V i Sinh Viên thì t i b n Community là đớ ả ả ược
File sau khi t i đả ược đượ ưc l u tr nh sau:ữ ư
Hình 1.2. Hi n th file l u tr cài đ t Visual Studio ể ị ư ữ ặ
Nh p ch n vào file vs_enterprise_ exe đ ti n hành cài đ tấ ọ ể ế ặ
Trang 14Hình 1.7. Đăng nh p username và m t kh u ậ ậ ẩ
Cung c p m t kh u r i Sign in bình thấ ậ ẩ ồ ường
Kh i đ ng chở ộ ương trình Visual Studio 2019
Hình 1.8. Màn hình kh i đ ng ch ở ộ ươ ng trình Visual Studio
Màn hình sau khi kh i đ ng thành côngở ộ
Hình 1.9. L a ch n ch c năng làm vi c ự ọ ứ ệ
màn hình có 3 l a ch n chính:
Trang 15 Open a project or solution: ch n m nh ng Project cũ (n u đã t o trọ ở ữ ế ạ ước đó
ho c k c các Version cũ cũng t đ ng m l i). ặ ể ả ở ự ộ ở ạ
Continue without code: Ch n m c này s m Visual Studio mà không cóọ ụ ẽ ở Project nào cả
“Create a New Project”: Chương trình s hi n th màn hình t o Project m i.ẽ ể ị ạ ớ
Hình 1.10. L a ch n môi tr ự ọ ườ ng và ngôn ng làm vi c ữ ệ
Tìm ki m, l c theo: Ngôn ng l p trình (C#, VB ), l c theo Platform(Android,ế ọ ữ ậ ọ IOS, Windows…), theo Project Type(Cloud, Console, Machine Learning…).
Hình 1.11. Màn hình l a ch n n i l u Project ự ọ ơ ư
Trang 161.3. S d ng h th ng tr giúpử ụ ệ ố ợ
Nh p vào m c Help và ch n View Help (Ctrl + F1) đ tìm tài li u kh c phúcấ ụ ọ ể ệ ắ các l i trong trang web: ỗ
https://msdn.microsoft.com/query/dev15.query?appId=Dev15IDEF1&l=en S&k=k(MSDNSTART)&rd=true
Câu h i ôn t p và bài t pỏ ậ ậ
1. Ti n hành cài đ t Visual Studio trên máy tính.ế ặ
2. T o các ng d ng project b ng Console và C#, l u tr trên máy tính g m 2ạ ứ ụ ằ ư ữ ồ bài t p Console v i tên: BTCB1,BTCB2 và 2 bài t p Form v i tên: LTWF1,ậ ớ ậ ớ LTWF2
Trang 17BÀI 2: CÁC THÀNH PH N C B NẦ Ơ Ả
Mã bài: 19.02
Gi i thi uớ ệ :
Vi c hi u rõ các thành ph n c b n và cách th c s d ng c a ngôn ngệ ể ầ ơ ả ứ ử ụ ủ ữ
l p trình s giúp chúng ta làm vi c d dàng h n khi th c hành, thao tác v iậ ẽ ệ ễ ơ ự ớ ngôn ng H th ng các t khóa, các ki u d li u c b n, cách xây d ng bi uữ ệ ố ừ ể ữ ệ ơ ả ự ể
th c, bi n, h ng khi xây d ng chứ ế ằ ự ương trình
M c tiêu:ụ
Trình bày và s d ng h th ng ký hi u, t khóa, ki u d li u c b n,ử ụ ệ ố ệ ừ ể ữ ệ ơ ả
bi n, bi u th c.ế ể ứ
V n d ng các lo i bi n, h ng bi u th c vào các bài t p m u.ậ ụ ạ ế ằ ể ứ ậ ẫ
V n d ng các lo i bi n, h ng bi u th c vào bài t p ng d ng.ậ ụ ạ ế ằ ể ứ ậ ứ ụ
Rèn luy n tính c n th n, t giác, sáng t o, làm vi c nhóm.ệ ẩ ậ ự ạ ệ
N i dung chính:ộ
2.1. H th ng ký hi u và t khóaệ ố ệ ừ
C# là ngôn ng có ít t khóa: là ngôn ng s d ng gi i h n các t khóa, chữ ừ ữ ử ụ ớ ạ ừ ỉkho ng 80 t khóa và h n 10 ki u d li u đả ừ ơ ể ữ ệ ược xây d ng s n nh b ng 1.1. ự ẵ ư ả
B ng 2.1: B ng mô t các t khóa c a C# ả ả ả ừ ủ
abstract default foreach object sizeof unsafe
as delegate goto operator stackalloc ushort
bool double implicit override string virtual
break else in params struct volatile
byte enum int private switch void
case event interface protected this while
catch explicit internal public throw decimal
class finally long return typeof short
const fixed namespace sbyte uint unchecked
Trang 182.2. Các ki u d li u c b nể ữ ệ ơ ả
Ki u giá tr thể ị ường là các ki u do C# đ nh nghĩa s n bao g m: double, char,ể ị ẵ ồ int,
byte 1 Byte S nguyên dố ương không d u: 0 đ n 255ấ ế
char 2 Char Ký t Unicodeự
bool 1 Boolean Giá tr logic true/ falseị
sbyte 1 Sbyte S nguyên có d u: 128 đ n 127ố ấ ế
short 2 Int16 S nguyên có d u: 32.768 đ n 32.767ố ấ ế
ushort 2 Uint16 S nguyên không d u: 0 đ n 65.535ố ấ ế
int 4 Int32 S nguyên có d u: 2.147.483.647 đ nố ấ ế
2.147.483.647uint 4 Uint32 S nguyên không d u: 0 đ nố ấ ế
4.294.967.295
float 4 Single
Ki u d u ch m đ ng, giá tr x p x tể ấ ấ ộ ị ấ ỉ ừ 3,4E38 đ n 3,4E+38; v i 7 ch s cóế ớ ữ ố nghĩa
double 8 Double
Ki u d u ch m đ ng, giá tr x p x tể ấ ấ ộ ị ấ ỉ ừ 1,7E308 đ n 1,7E+308; v i 15, 16 chế ớ ữ
s có nghĩaốdecimal 8 Decimal Có đ chính xác đ n 28 con s và giá trộ ế ố ị
th p phân, đậ ược dùng trong tính toán tài
Trang 19chính, ki u này đòi h i ph i có h u tể ỏ ả ậ ố
“m” hay “M” theo sau giá trị
long 8 Int64
Ki u s nguyên có d u có giá tr trongể ố ấ ịkho ng: 9.233.370.036.854.775.808 đ nả ế – 9.233.372.036.854.775.807
ulong 8 Uint64 S nguyên không d u t 0 đ nố ấ ừ ế
0xffffffffffffff
L u ư ý:
Ki u s th c: Trình biên d ch luôn hi u b t c m t s th c nào cũng là m tể ố ự ị ể ấ ứ ộ ố ự ộ
s ki u double tr khi khai báo rõ ràng, do đó đ gán m t s ki u float thì số ể ừ ể ộ ố ể ố
ph i có ký t theo sau.ả ự
Ví d 1.5: ụ float a=0.15f;
Ki u giá tr bool trong C# nh t thi t ph i là true ho c false. ể ị ấ ế ả ặ
Chuy n ki u d li u:ể ể ữ ệ
Chuy n đ i ki u d li u trong C# có th th c hi n b ng các cách sau:ể ổ ể ữ ệ ể ự ệ ằ
Trang 20bool. N u trong quá trình chuy n ki u đ t tham s là null thì hàm Convert sế ể ể ặ ố ẽ
tr v giá tr m c đ nh. ả ề ị ặ ị
int a = Convert.ToInt32(“10”); //chuy n chu i 10 sang s nguyênể ỗ ố
bool b = Convert.ToBoolean(27); //chuy n s 27 sang ki u booleanể ố ể
bool a = Convert.ToBoolean(“hello”); //Sai đ nh d ng, không chuy n đị ạ ể ược
int b = Convert.ToInt32(“123456787654”); //Tràn b nh , không chuy n độ ớ ể ược
double d = Convert.ToDouble(null); //Tr v giá tr m c đ nhả ề ị ặ ị
S d ng phử ụ ương th c Parse:ứ
Phương th c Parse thứ ường đượ ử ục s d ng đ chuy n đ i chu i sang m t ki uể ể ổ ỗ ộ ể dữ
li u c th nào đó. M i ki u d li u xây d ng s n trong C# đ u h trệ ụ ể ỗ ể ữ ệ ự ẵ ề ỗ ợ
phương th c Parse đ chuy n đ i chu i sang ki u d li u tứ ể ể ổ ỗ ể ữ ệ ương ng:ứ
Double.Parse(<chuoi>): Chuy n chu i v ki u Doubleể ỗ ề ể
Int32.Parse(<chuoi>): Chuy n chu i v ki u Int32ể ỗ ề ể
Int64.Parse(<chuoi>): Chuy n chu i v ki u Int64ể ỗ ề ể
Boolean.Parse(<chuoi>): Chuy n chu i v ki u Booleanể ỗ ề ể
Single.Parse(<chuoi>): Chuy n chu i v ki u Singleể ỗ ề ể
…
Ví d ụ
int a = Int32.Parse(“123”); //a s mang giá tr 123ẽ ị
float b = Float.Parse(“20.7”); //b s mang giá tr 20.7ẽ ị
bool c = Boolean.Parse(“true”); //c s mang giá tr trueẽ ị
int a = Int32.Parse(“Hello”); //sai đ nh d ng, không chuy n đị ạ ể ược
byte b = Byte.Parse(“10000000000”); //quá gi i h n, không chuy n đớ ạ ể ược
bool c = Boolean.Parse(null); //tham s là null, không chuy n đố ể ược
Trang 212.3. Bi n, h ng, bi u th cế ằ ể ứ
<Ki u d li uể ữ ệ > <Tên bi nế >
L u ý: Tên bi n ph i đư ế ả ược đ t phù h p v i quy t c đ t tênặ ợ ớ ắ ặ
Cú pháp kh i t o giá tr cho bi n: ở ạ ị ế
hay s và ký t g ch dố ự ạ ưới (_)
Ký t đ u tiên c a bi n ph i là ký t , không đự ầ ủ ế ả ự ược là s ố
Trong C# phân bi t hoa thệ ường
Các t khóa không th s d ng đ đ t tên cho bi n. N u mu n dùng từ ể ử ụ ể ặ ế ế ố ừ khóa đ t tên thì ta thêm ký t @ phía trặ ự ước
Trang 22static:
4myclass:
Student&Falculty:
Không h p l , trùng t khóaợ ệ ừKhông h p l , không th b t đ u b ng ký t sợ ệ ể ắ ầ ằ ự ốKhông h p l , không đợ ệ ược ch a ký t đ c bi tứ ự ặ ệ2.3.2. H ngằ
H ng cũng là m t bi n nh ng giá tr c a h ng không thay đ i. Bi n là côngằ ộ ế ư ị ủ ằ ổ ế
c r t m nh, tuy nhiên khi làm vi c v i m t giá tr đụ ấ ạ ệ ớ ộ ị ược đ nh nghĩa là khôngị thay đ i, ta ph i đ m b o giá tr c a nó không đổ ả ả ả ị ủ ược thay đ i trong su tổ ố
chương trình. Ví d , khi l p m t chụ ậ ộ ương trình thí nghi m hóa h c liên quanệ ọ
đ n nhi t đ sôi, hay nhi t đ đông c a nế ệ ộ ệ ộ ủ ước, chương trình c n khai báo haiầ
bi n là DoSoi và DoDong, nh ng không cho phép giá tr c a hai bi n này bế ư ị ủ ế ị thay đ i hay b gán. Đ ngăn ng a vi c gán giá tr khác, ta ph i s d ng bi nổ ị ể ừ ệ ị ả ử ụ ế
<const> <type> <tên hằng> = <giá trị>;
M t bi u tộ ể ượng h ng ph i đằ ả ược kh i t o khi khai báo, và ch kh i t o duyở ạ ỉ ở ạ
nh t m t l n trong su t chấ ộ ầ ố ương trình và không được thay đ i.ổ
const int DoSoi = 100;
Trong khai báo trên, 100 là m t h ng s và DoSoi là m t bi u tộ ằ ố ộ ể ượng h ng cóằ
ki u nguyên.ể
2.4. Các phép toán
2.4.1. Toán t ử (Operator) trong C#
Trang 23Các phép toán này không th thi u trong m i ngôn ng l p trình nào và C#ể ế ọ ữ ậ cũng v yậ
B ng 2.3: B ng mô t các toán t trong C# ả ả ả ử
Toán tử Tên Ví dụ K t quế ả
+ C ngộ x+y T ng c a x và yổ ủ
/ Chia x/y Ph n nguyên c a thầ ủ ương x chia y
% Chia dư x%y Ph n d c a thầ ư ủ ương x chia y
Ví d :ụ
2.4.2. Toán t gánử
M t s toán t gán độ ố ử ượ ử ục s d ng trong C#:
B ng 2.4: B ng mô t các toán t phép gán trong C# ả ả ả ử
Toán tử Ví dụ K t quế ả
+= x+=y Gán giá tr x = x+yị
= x=y Gán giá tr x = xyị
Trang 24Toán tử Ví dụ K t quế ả
*= x*=y Gán giá tr x = x*yị
/= x/=y Gán giá tr x = x/yị
%= x%=y Gán giá tr x = x%yị
<<= x<<=3 Gán giá tr x = x<<3ị
>>= x>>=3 Gán giá tr x = x>>3ị
&= x&=2 Gán giá tr x = x&2 (Phép AND bit)ị
^= x^=2 Gán giá tr x = x^2 (Phép OR lo i trbit) ị ạ ừ
|= x|=2 Gán giá tr x = x|2 (Phép OR bit)ị
Ví d :ụ
K t qu khi ch y chế ả ạ ương trình trên
2.4.3. Toán t tăng gi m ti n t và h u t :ử ả ề ố ậ ố
Gi s ta mu n tăng giá tr c a m t bi n x r i gán nó cho bi n y, ta làm nhả ử ố ị ủ ộ ế ồ ế ư sau:
Trang 25Còn đ i v i l nhố ớ ệ y = ++x; phép toán tăng s đẽ ược th c hi n trự ệ ướ ồc r i m iớ
đ n toán t gán. Ta g i đây là tăng ti n t , các giá tr c a x và y bây gi làế ử ọ ề ố ị ủ ờ
nh nhau và đ u b ng 10.ư ề ằ
2.4.4. Toán t logicử
Đôi lúc chúng ta mu n k t h p nhi u đi u ki n v i nhau ví d nh b tố ế ợ ề ề ệ ớ ụ ư ắ
bu cộ c hai bi u th c đi u ki n đ uả ể ứ ề ệ ề đúng ho c ch c nặ ỉ ầ m t bi u th cộ ể ứ đúng thì m i th c hi n m t l nh gì đó. Trong C#ớ ự ệ ộ ệ h tr 3 toán t logic nhỗ ợ ử ư sau:
B ng 2.5: B ng mô t các toán t logic trong C# ả ả ả ử
Toán tử Ký hi u ệ Cú pháp Miêu tả
AND && <BT1> && <BT2> Tr v true n u c 2 đ u đúngả ề ế ả ề
OR || <BT1>||<BT2> Tr v true n u 1 trong 2 bi uả ề ế ể
th c đúngứNOT ! !(BT) Tr v ph đ nh c a bi u th ctrong ngo cả ề ặủ ị ủ ể ứ 2.4.5. Toán t quan hử ệ
Các toán t quan h thử ệ ường được dùng đ so sánh gi a hai giá tr , và sau đóể ữ ị
tr v k t qu là m t giá tr logic ki u boolean (true ho c false).ả ề ế ả ộ ị ể ặ
Gi s ta có bi n x = 5 và y = 3. Các toán t trong C# đả ử ế ử ược trình bày nh b nư ả
dưới đây:
B ng 2.6: B ng mô t các toán t quan h trong C# ả ả ả ử ệ
Toán tử Ký hi uệ Bi u th c so sánhể ứ K t qu so sánhế ả
Trang 26Toán tử Ký hi uệ Bi u th c so sánhể ứ K t qu so sánhế ả
L n h n hay b ngớ ơ ằ >= x>=y true
Nh h n hay b ngỏ ơ ằ <= x<=y false
L u ý: toán t so sánh b ng (ư ử ằ ==) được ký hi u b i hai d u b ng dính li nệ ở ấ ằ ề nhau và không có b t k kho ng cách nào gi a chúng. Trình biên d ch C# xemấ ỳ ả ữ ị đây là m t toán tộ ử
* Bi u th cể ứ
Nh ng câu l nh mà th c hi n vi c đánh giá m t giá tr g i là bi u th c. M tữ ệ ự ệ ệ ộ ị ọ ể ứ ộ phép gán m t giá tr cho m t bi n cũng là m t bi u th c:ộ ị ộ ế ộ ể ứ
var1 = 24;
Trong câu l nh trên phép đánh giá hay đ nh lệ ị ượng chính là phép gán có giá trị
là 24 cho bi n var1. L u ý là toán t gán (‘=’) không ph i là toán t so sánh.ế ư ử ả ử
Do v y khi s d ng toán t này thì bi n bên trái s nh n giá tr c a ph n bênậ ử ụ ử ế ẽ ậ ị ủ ầ
ph i. Các toán t c a ngôn ng C# nh phép so sánh hay phép gán s đả ử ủ ữ ư ẽ ượ ctrình bày chi ti t trong m c toán t c a chế ụ ử ủ ương này
Do var1 = 24 là m t bi u th c độ ể ứ ược đ nh giá tr là 24 nên bi u th c này có thị ị ể ứ ể
được xem nh ph n bên ph i c a m t bi u th c gán khác:ư ầ ả ủ ộ ể ứ
Trong ngôn ng C#, nh ng kho ng tr ng, kho ng tab và các dòng đữ ữ ả ắ ả ược xem
nh là kho ng tr ng (whitespace), gi ng nh tên g i vì ch xu t hi n nh ngư ả ắ ố ư ọ ỉ ấ ệ ữ
Trang 27kho ng tr ng đ đ i di n cho các ký t đó. C# s b qua t t c các kho ngả ắ ể ạ ệ ự ẽ ỏ ấ ả ả
tr ng đó, do v y chúng ta có th vi t nh sau:ắ ậ ể ế ư
var1=24; Hay var1 = 24; và trình biên d ch C# s xem hai câu l nhị ẽ ệ trên là hoàn toàn gi ng nhau.ố
Tuy nhiên l u ý là kho ng tr ng trong m t chu i s không đư ả ắ ộ ỗ ẽ ược b qua. N uỏ ế chúng ta vi t:ế
System.WriteLine(“Xin chao!”);
m i kho ng tr ng gi a hai ch “Xin” và “chao” đ u đỗ ả ắ ở ữ ữ ề ược đ i x bìnhố ử
thường nh các ký t khác trong chu i.ư ự ỗ
H u h t vi c s d ng kho ng tr ng nh m t s tùy ý c a ngầ ế ệ ử ụ ả ắ ư ộ ự ủ ườ ậi l p trình.
Đi u c t y u là vi c s d ng kho ng tr ng s làm cho chề ố ế ệ ử ụ ả ắ ẽ ương trình d nhìnễ
d đ c h n Cũng nh khi ta vi t m t văn b n trong MS Word n u không trìnhễ ọ ơ ư ế ộ ả ế bày t t thì s khó đ c và gây m t c m tình cho ngố ẽ ọ ấ ả ười xem. Còn đ i v i trìnhố ớ biên d ch thì vi c dùng hay không dùng kho ng tr ng là không khác nhau.ị ệ ả ắ
Tuy nhiên, cũng c n l u ý khi s d ng kho ng tr ng nh sau:ầ ư ử ụ ả ắ ư
int x = 24; t ương t nh : ự ư int x=24; nh ng không gi ng nh :ư ố ư intx=24;
Trình biên d ch nh n bi t đị ậ ế ược các kho ng tr ng hai bên c a phép gán làả ắ ở ủ
ph và có th b qua, nh ng kho ng tr ng gi a khai báo ki u và tên bi n thìụ ể ỏ ư ả ắ ữ ể ế không ph i ph hay thêm mà b t bu c ph i có t i thi u m t kho ng tr ng.ả ụ ắ ộ ả ố ể ộ ả ắ
Đi u này không có gì b t h p lý, vì kho ng tr ng cho phép trình biên d chề ấ ợ ả ắ ị
nh n bi t đậ ế ượ ừc t khoá int và không th nào nh n để ậ ược intx.Tương t nhự ư C/C++, trong C# câu l nh đệ ược k t thúc v i d u ch m ph y ‘;’. Do v y cóế ớ ấ ấ ẩ ậ
th m t câu l nh trên nhi u dòng, và m t dòng có th nhi u câu l nh nh ngể ộ ệ ề ộ ể ề ệ ư
nh t thi t là hai câu l nh ph i cách nhau m t d u ch m ph y.ấ ế ệ ả ộ ấ ấ ẩ
2.4.6. Câu l nh (statement)ệ
Trong C# m t ch d n l p trình đ y đ độ ỉ ẫ ậ ầ ủ ược g i là câu l nh. Chọ ệ ương trình bao g m nhi u câu l nh tu n t v i nhau. M i câu l nh ph i k t thúc v iồ ề ệ ầ ự ớ ỗ ệ ả ế ớ
m t d u ch m ph y, ví d nh :ộ ấ ấ ẩ ụ ư
Trang 28int x; // một câu lệnh
x = 32; // câu lệnh khác
int y =x; // đây cũng là một câu lệnh
Nh ng câu l nh này s đữ ệ ẽ ược x lý theo th t Đ u tiên trình biên d ch b tử ứ ự ầ ị ắ
đ u v trí đ u c a danh sách các câu l nh và l n lầ ở ị ầ ủ ệ ầ ượt đi t ng câu l nh choừ ệ
đ n l nh cu i cùng, tuy nhiên ch đúng cho trế ệ ố ỉ ường h p các câu l nh tu n tợ ệ ầ ự không phân nhánh
Có hai lo i câu l nh phân nhánh trong C# là : phân nhánh không có đi u ki nạ ệ ề ệ (unconditional branching statement) và phân nhánh có đi u ki n (conditionalề ệ branching statement)
Ngoài ra còn có các câu l nh làm cho m t s đo n chệ ộ ố ạ ương trình được th cự
hi n nhi u l n, các câu l nh này đệ ề ầ ệ ược g i là câu l nh l p hay vòng l p. Baoọ ệ ặ ặ
g m các l nh l p for, while, do, in, và each s đồ ệ ặ ẽ ược đ c p t i trong m c ti pề ậ ớ ụ ế theo
Câu h i ôn t p và bài t pỏ ậ ậ
1. T o m t project dạ ộ ướ ại d ng Console th c hi n khai báo các lo i bi n sau:ự ệ ạ ế
Bi n chieudai, chieurong, chuvi, dientich ki u d li u intế ể ữ ệ
Bi n so1, so2, so3, min, max ki u s th c (float)ế ể ố ự
2. T o m t project dạ ộ ướ ại d ng Console th c hi n khai báo các lo i h ng sau:ự ệ ạ ằ
H ng s th c p = 3.14ằ ố ự
H ng s nguyên n = 100 ph n t m ngằ ố ầ ử ả
Trang 29BÀI 3: S D NG CÂU L NH NH P XU T C B N, C U TRÚCỬ Ụ Ệ Ậ Ấ Ơ Ả Ấ
ĐI U KHI N IFỀ Ể
Mã bài: 19.03
Gi i thi u:ớ ệ
Trong bài này, n i dung bài h c s giúp phân tích đ hi u v cú phápộ ọ ẽ ể ể ề
c a m t chủ ộ ương trình C# nhé. N i dung bài h c s hộ ọ ẽ ướng d n s d ng l nhẫ ử ụ ệ
xu t ra màn hìnhấ Console.WriteLine(); và l nh nh p d li u vào t bàn phímệ ậ ữ ệ ừ
l nh Console.Read(). Đ ng th i tìm hi u v c u trúc l nh có đi u ki n if…ệ ồ ờ ể ề ấ ệ ề ệelse
M c tiêu:ụ
Trình bày và bi t s d ng câu l nh nh p xu t c b n.ế ử ụ ệ ậ ấ ơ ả
Trình bày và bi t s d ng c u trúc l nh r nhánh if else.ế ử ụ ấ ệ ẽ
V n d ng các câu l nh nh p xu t đ vi t chậ ụ ệ ậ ấ ể ế ương trình Console c b n.ơ ả
V n d ng c u trúc r nhánh if else đ vi t chậ ụ ấ ẽ ể ế ương trình Console c b n.ơ ả
Rèn luy n tính c n th n, t giác, sáng t o, làm vi c nhóm.ệ ẩ ậ ự ạ ệ
Ý nghĩa: In giá tr ra màn hình console. Giá tr này có th là 1 ký t , 1 chu i,ị ị ể ự ỗ
m t giá tr có th chuy n v ki u chu i.ộ ị ể ể ề ể ỗ
Ta s dùng m t l nh nào đó là cho chẽ ộ ệ ương trình ph i d ng l i đ i mình nh nả ừ ạ ợ ấ
m t phím b t k m i k t thúc nh v y trộ ấ ỳ ớ ế ư ậ ước khi chúng ta nh n m t phím b tấ ộ ấ
k thì chúng ta có th quan sát đỳ ể ược k t qu trên màn hình console. Các l nhế ả ệ
có th s d ngể ử ụ
Console.Read();
Console.ReadLine();
Console.ReadKey();
Trang 30Cú pháp:
Console.WriteLine(<giá trị cần in ra màn hình>);
Ý nghĩa:
L nh này cũng tệ ượng t nhự ư Console.Write()
Nh ng s khácư ẽ khi in giá tr ra màn hình xong nó s t đ ng đ a con trị ẽ ự ộ ư ỏ
xu ng dòng. Đi u này giúp ta có th gi i quy t đố ề ể ả ế ược v n đ đã đ t ra ph nấ ề ặ ở ầ trên
Ngoài ra, đ xu ng dòng ta còn có nhi u cách khác nh :ể ố ề ư
S d ng ký t đ c bi t: chúng ta s d ng ký tử ụ ự ặ ệ ử ụ ự “\n” trong chu i in ra mànỗ hình thì trình biên d ch s t đ ng đ i nó thành ký t xu ng dòng.ị ẽ ự ộ ổ ự ố
Nh v y thay vì dùngư ậ Console.WriteLine(“K team”) ta có thể dùng Console.Write (“K team \n”)
Kì, là b kí t và b mã kí t d a trên b ng ch cái La Tinh độ ự ộ ự ự ả ữ ược dùng trong
ti ng Anh hi n đ i và các ngôn ng Tây Âu khác) c a ký t đó.ế ệ ạ ữ ủ ự
Chú ý: l nh này không đ c đ c các phím ch c năngệ ọ ượ ứ như Ctrl, Shift, Alt, Caps Lock, Tab, . .
3.1.4. Console.ReadLine();
Cú pháp:
Console.ReadLine();
Trang 31Ý nghĩa: Đ c d li u t bàn phím cho đ n khi g p ký t xu ng dòng thì d ngọ ữ ệ ừ ế ặ ự ố ừ (Nói cách khác là đ c cho đ n khi mình nh n enter thì d ng) và giá tr đ cọ ế ấ ừ ị ọ
được luôn là m t chu i.ộ ỗ
ki uể ConsoleKeyInfo (là m t ki u d li u có c u trúc độ ể ữ ệ ấ ược đ nh nghĩaị
s n đ ch a nh ng ký t c a bàn phím bao g m các phím ch c năng).ẵ ể ứ ữ ự ủ ồ ứTham s ki u boolố ể bao g m 2 giá tr :ồ ị true ho cặ false N u truy nế ề vào true thì phím đượ ấc n s không hi n th lên màn hình console màẽ ể ị
được đ c ng m ngọ ầ ượ ạc l i thì phím đượ ấc n s hi n th lên màn hìnhẽ ể ị console. N u không truy n tham s vào thì m c đ nh s làế ề ố ặ ị ẽ false
Ví d : ụ
Vi t chế ương trình nh p vào thông tin sinh viên bao g m: H tên, gi i tính,ậ ồ ọ ớ ngày sinh, đ a ch , tu i.ị ỉ ổ
Đ ể
Bước 1: M Visual Studio ở Ch n File ọ Ch n Project…ọ
Hình 3.1: Màn hình t o m i m t Project ạ ớ ộ
Ch n Visual C# ọ ch n Console App (.NET Framework) ọ Nh p Name,ậ
ch n Location ọ Ch n OKọ
Trang 32Hình 3.2: Màn hình đ t tên và ch n n i l u c a Project ặ ọ ơ ư ủ
Sau khi t o xong Project c u trúc th m c đạ ấ ư ụ ượ ưc l u vào trong Solution
Hình 3.3: Màn hình qu n lý Solution ả
M t Solution g m nhi u Project có c u trúc nh sau:ộ ồ ề ấ ư
Trang 33Hình 3.4: Màn hình qu n lý Project ả
Hình 3.5: Màn hình gán cho Project đ ượ c ch y đ u tiên ạ ầ
Project sau khi t oạ
Trang 34Hình 3.6: Màn hình ban đ u c a c a s làm vi c Program.cs ầ ủ ử ổ ệ
B ướ c 2: Vi t x lý choế ử Program.cs
Hình 3.7: Code đ nh p xu t thông tin sinh viên ể ậ ấ
B ướ c 3: Ch y chạ ương trình
Trước khi ch y chạ ương trình c n biên d ch và ki m tra l i c a Solution v aầ ị ể ỗ ủ ừ
t o. ạ
Khi ki m tra còn l i thì chể ỗ ương trình s ch y v i l n biên d ch trẽ ạ ớ ầ ị ước đó
Trang 35Hình 3.8: Ki m tra l i c a Solution ể ỗ ủ
Hình 3.9: Màn hình thông báo l i c a ch ỗ ủ ươ ng trình
Ch n Start ho c nh p vào bi u tọ ặ ấ ể ượng đ ch y chể ạ ương trình. Phím t t (F5).ắ
Hình 3.10: Ch n bi u t ọ ể ượ ng đ th c thi (ch y) ch ể ự ạ ươ ng trình
Trang 36Giao di n chệ ương trình khi ch y sau khi nh p thông tin sinh viênạ ậ
Hình 3.11: Màn hình hi n th k t qu ch ể ị ế ả ươ ng trình
3.2. Câu l nh if elseệ
Câu l nh phân nhánh ệ if else d a trên m t đi u ki n. Đi u ki n là m tự ộ ề ệ ề ệ ộ
bi u th c s để ứ ẽ ược ki m tra giá tr ngay khi b t đ u g p câu l nh đó. N uể ị ắ ầ ặ ệ ế
đi u ki n đề ệ ược ki m tra là đúng, thì câu l nh hay m t kh i các câu l nh bênể ệ ộ ố ệ trong thân c a câu l nh if đủ ệ ược th c hi n.ự ệ
Trong câu đi u ki n ề ệ if else thì else là ph n tùy ch n. Các câu l nh bênầ ọ ệ trong thân c a ủ else ch đ c th c hi n khi đi u ki n c aỉ ượ ự ệ ề ệ ủ if là sai. Do v y khiậ câu l nh đ y đệ ầ ủ if else đ c dùng thì ch có m t trong hai if ho c else đ cượ ỉ ộ ặ ượ
th c hi n. Ta có cú pháp câu đi u ki n ự ệ ề ệ if else sau:
if (biểu thức điều kiện)
<Khối lệnh thực hiện khi điều kiện đúng>
[else
<Khối lệnh thực hiện khi điều kiện sai>]
N u các câu l nh trong thân c a if hay else mà l n h n m t l nh thì cácế ệ ủ ớ ơ ộ ệ
l nh này ph i đệ ả ược bao trong m t kh i l nh, t c là ph i n m trong d uộ ố ệ ứ ả ằ ấ
kh i { }:ố
if (biểu thức điều kiện)
{
<Lệnh 1> <Lệnh 2> } [else
{
<lệnh 1> <lệnh 2> }]
Trang 37Nh trình bày bên trên do else là ph n tùy ch n nên đư ầ ọ ược đ t trong d uặ ấ ngo c vuông Ví d : câu l nh đi u ki n if else.ặ ụ ệ ề ệ
K t qu chế ả ương trình:
Hình 3.12. Màn hình k t qu câu l nh if…else ế ả ệ
Trong ví d trên, câu l nh ụ ệ if đ u tiên s ki m tra xem giá tr c a var1 có l nầ ẽ ể ị ủ ớ
h n giá tr c a var2 không. Bi u th c đi u ki n này s d ng toán t quan hơ ị ủ ể ứ ề ệ ử ụ ử ệ
l n h n (>), các toán t khác nh nh h n (<), hay b ng (==). Các toán t nàyớ ơ ử ư ỏ ơ ằ ử
thường xuyên đượ ử ục s d ng trong l p trình và k t qu tr là giá tr đúng hayậ ế ả ả ị sai
Vi c ki m tra xác đ nh giá tr var1 l n h n var2 là sai (vì var1 = 10 trong khiệ ể ị ị ớ ơ var2 = 20), khi đó các l nh trong ệ else s đ c th c hi n, và các l nh này in raẽ ượ ự ệ ệ màn hình:
Trang 38Nh trình bày bên trên do else là ph n tùy ch n nên đư ầ ọ ược đ t trong d u ngo cặ ấ ặ vuông. Ví d : câu l nh đi u ki n if else.ụ ệ ề ệ
K t qu chế ả ương trình:
Hình 3.13. Màn hình k t qu nhi u câu l nh if…else ế ả ề ệ
Trong ví d trên, câu l nh ụ ệ if đ u tiên s ki m tra xem giá tr c a var1 có l nầ ẽ ể ị ủ ớ
h n giá tr c a var2 không. Bi u th c đi u ki n này s d ng toán t quan hơ ị ủ ể ứ ề ệ ử ụ ử ệ
l n h n (>), các toán t khác nh nh h n (<), hay b ng (==). Các toán t nàyớ ơ ử ư ỏ ơ ằ ử
thường xuyên đượ ử ục s d ng trong l p trình và k t qu tr là giá tr đúng hayậ ế ả ả ị sai
Trang 39Vi c ki m tra xác đ nh giá tr var1 l n h n var2 là sai (vì var1 = 10 trong khiệ ể ị ị ớ ơ var2 = 20), khi đó các l nh trong ệ else s đ c th c hi n, và các l nh này in raẽ ượ ự ệ ệ màn hình:
var2: 20 > var1: 10
Ti p theo đ n câu l nh if th hai, sau khi th c hi n l nh gán giá tr c a var1 =ế ế ệ ứ ự ệ ệ ị ủ
30, lúc này đi u ki n if đúng nên các câu l nh trong kh i if s đề ệ ệ ố ẽ ược th c hi nự ệ
và k t qu là in ra ba dòng sau:ế ả
Gan gia tri var1 cho var2
Tang bien var1 len mot
Var1 = 31, var2 = 30
* Câu l nh if l ng nhauệ ồ
Các l nh đi u ki n if có th l ng nhau đ ph c v cho vi c x lý các câuệ ề ệ ể ồ ể ụ ụ ệ ử
đi u ki n ph c t p. Vi c này cũng thề ệ ứ ạ ệ ường xuyên g p khi l p trình. Gi sặ ậ ả ử chúng ta c n vi t m t chầ ế ộ ương trình có yêu c u xác đ nh tình tr ng k t hônầ ị ạ ế
c a m t công dân d a vào các thông tin nh tu i, gi i tính, và tình tr ngủ ộ ự ư ổ ớ ạ hôn nhân, d a trên m t s thông tin nh sau:ự ộ ố ư
• N u công dân là nam thì đ tu i có th k t hôn là 20 v i đi u ế ộ ổ ể ế ớ ề
Trang 40D a trên các yêu c u trên ta có th dùng các l nh if l ng nhau đ th c hi n.ự ầ ể ệ ồ ể ự ệ
Ví d sau s minh h a cho vi c th c hi n các yêu c u trên.ụ ẽ ọ ệ ự ệ ầ
K t qu chế ả ương trình:
Hình 3.14. Màn hình k t qu if…else l ng ế ả ồ
Câu h i ôn t p và bài t pỏ ậ ậ
1. Vi t chế ương trình cho phép người dùng nh p tên c a mình và hi n th câu:ậ ủ ể ị Môn h c L p trình Windows Form chào b n + <Tên v a nh p>.ọ ậ ạ ừ ậ
2. Vi t chế ương trình nh p vào các thông tin:ậ
Tên
Tu iổ
Đ a chị ỉ