Xem mẫu
- Tập bài giảng Lập trình cơ bản
MỤC LỤC
DANH MỤC CÁC BẢNG .............................................................................................iv
DANH MỤC CÁC HÌNH ..............................................................................................vi
LỜI NÓI ĐẦU .................................................................................................................x
CHƢƠNG 1: TỔNG QUAN VỀ .NET VÀ C# ..............................................................1
1.1. Giới thiệu .NET ....................................................................................................1
1.1.1. Tổng quan về .NET Framework ....................................................................1
1.1.2. Giới thiệu Visual Studio .NET ......................................................................2
1.2. Ngôn ngữ C# ........................................................................................................3
1.2.1. Giới thiệu C# .................................................................................................3
1.2.2. Các bƣớc chuẩn bị cho chƣơng trình .............................................................5
1.2.3. Xây dựng chƣơng trình C# đơn giản .............................................................6
1.2.4. Chú thích trong chƣơng trình C# ...................................................................9
1.2.5. Namespace ...................................................................................................10
CHƢƠNG 2: CƠ SỞ LẬP TRÌNH TRONG C# ...........................................................11
2.1. Tên ......................................................................................................................11
2.2. Từ khóa ...............................................................................................................12
2.3. Hằng và Biến ......................................................................................................12
2.3.1. Các kiểu dữ liệu cơ sở .................................................................................12
2.3.2. Biến ..............................................................................................................14
2.3.3. Hằng ............................................................................................................16
2.4. Biểu thức.............................................................................................................17
2.4.1. Biểu thức......................................................................................................17
2.4.2. Lệnh gán và biểu thức .................................................................................17
2.4.3. Các phép toán số học ...................................................................................18
2.4.4. Các phép toán quan hệ và logic ...................................................................19
2.4.5. Phép toán tăng giảm ....................................................................................20
2.4.6. Thứ tựƣu tiên các phép toán ........................................................................22
2.4.7. Chuyển đổi kiểu giá trị ................................................................................24
2.4.8. Lớp Math .....................................................................................................26
2.5. Câu lệnh rẽ nhánh ...............................................................................................27
2.5.1. Câu lệnh if ...................................................................................................27
2.5.2. Câu lệnh switch ...........................................................................................31
2.6. Câu lệnh lặp ........................................................................................................34
i
- Tập bài giảng Lập trình cơ bản
2.6.1. Câu lệnh while .............................................................................................34
2.6.2. Câu lệnh do...while ......................................................................................35
2.6.3. Câu lệnh for .................................................................................................37
2.7. Câu lệnh nhảy .....................................................................................................39
2.7.1. Câu lệnh break và continue .........................................................................39
2.7.2. Câu lệnh goto ...............................................................................................40
2.7.3. Câu lệnh return ............................................................................................41
2.8. Xử lý ngoại lệ .....................................................................................................41
Bài tập ........................................................................................................................45
CHƢƠNG 3: MỘT SỐ CẤU TRÚC DỮ LIỆU ...........................................................50
3.1. Mảng ...................................................................................................................50
3.1.1. Mảng một chiều ...........................................................................................51
3.1.2. Mảng đa chiều .............................................................................................56
3.2. Xâu ký tự. ...........................................................................................................61
3.3. Xử lý tập tin ........................................................................................................71
3.4. Lớp ......................................................................................................................80
3.5. Cấu trúc.............................................................................................................100
Bài tập ......................................................................................................................103
CHƢƠNG 4: LẬP TRÌNH TRÊN FORM ..................................................................116
4.1. Giới thiệu về lập trình trên Form ......................................................................116
4.2. Làm việc với Form ...........................................................................................116
4.2.1. Một số khái niệm .......................................................................................116
4.2.2. Các loại Form ............................................................................................123
4.2.3. Thuộc tính của Form .................................................................................124
4.2.4. Sự kiện trên Form ......................................................................................125
4.2.5. Phƣơng thức của Form ..............................................................................125
4.3. Một số điều khiển thông dụng ..........................................................................128
4.3.1. Các thuộc tính và sự kiện chung................................................................128
4.3.2. Nhóm điều khiển Label .............................................................................129
4.3.3. Nhóm điều khiển TextBox ........................................................................131
4.3.4. Nhóm điều khiển ComboBox, ListBox .....................................................138
4.3.5. Nhóm điều khiển CheckBox, RadioButtom ..............................................146
4.3.6. Điều khiển Button......................................................................................154
4.4. Một số điều khiển đặc biệt................................................................................155
4.4.1 Nhóm điều khiển Menu ..............................................................................155
4.4.2. Điều khiển Container .................................................................................158
ii
- Tập bài giảng Lập trình cơ bản
4.4.3. Điều khiển Dialog......................................................................................160
Bài tập ..................................................................................................................167
TAI LIỆU THAM KHẢO ...........................................................................................197
iii
- Tập bài giảng Lập trình cơ bản
DANH MỤC CÁC BẢNG
Bảng 1.1: Từ khóa của ngôn ngữ C#. ..............................................................................5
Bảng 2.1: Mô tả các kiểu dữ liệu xây dựng sẵn ............................................................13
Bảng 2.2: Các kiểu ký tự đặc biệt..................................................................................14
Bảng 2.3: Các phép toán số học hai ngôi ......................................................................18
Bảng 2.4: Các toán tử so sánh (giả sử value1 = 100 và value2 = 50). ..........................20
Bảng 2.5: Các toán tử logic (giả sử x = 5, y = 7). .........................................................20
Bảng 2.6: Mô tả các phép toán tự gán. ..........................................................................20
Bảng 2.7: Một số các phép toán khác có trong C# ........................................................22
Bảng 2.8: Thứ tự ƣu tiên các phép toán. .......................................................................23
Bảng 2.9: Một số phƣơng thức của lớp Math. ...............................................................27
Bảng 2.10: Một số lớp ngoại lệ .....................................................................................44
Bảng 3.1: Các phƣơng thức và thuộc tính của System.Array. ......................................51
Bảng 3.2: Phƣơng thức và thuộc tính của lớp String ....................................................63
Bảng 3.3: Một số phƣơng thức mở tập tin.....................................................................73
Bảng 3.4: Giá trị của FileMode .....................................................................................77
Bảng 3.5: Các phƣơng thức đọc của BinaryReader. .....................................................80
Bảng 3.6: Thuộc tính truy cập. ......................................................................................83
Bảng 3.7: Giá trị mặc định của kiểu dữ liệu cơ bản. .....................................................85
Bảng 4.1: Một số thuộc tính của Form ........................................................................125
Bảng 4.2: Một số sự kiện của Form ............................................................................125
Bảng 4.3: Một số phƣơng thức của Form ....................................................................126
Bảng 4.4: Một số thuộc tính chung của các điều khiển ...............................................128
Bảng 4.5: Một số sự kiện chung của các điều khiển ...................................................129
Bảng 4.6: Một số thuộc tính của Label........................................................................129
Bảng 4.7: Các thuộc tính của LinkLabel .....................................................................130
Bảng 4.8: Các sự kiện của LinkLabel .........................................................................130
Bảng 4.9: Một số thuộc tính của TextBox ...................................................................131
Bảng 4.10: Một số sự kiện của TextBox .....................................................................132
Bảng 4.11: Một số thuộc tính của MaskedTextBox ....................................................136
Bảng 4.12: Một số sự kiện của MaskedTextBox ........................................................137
Bảng 4.13: Một số thuộc tính của ComboBox ............................................................139
Bảng 4.14: Một số sự kiện của ComboBox .................................................................139
Bảng 4.15: Một số thuộc tính của ListBox ..................................................................142
Bảng 4.16: Một số sự kiện của ListBox ......................................................................142
Bảng 4.17: Một số thuộc tính của CheckBox ..............................................................146
iv
- Tập bài giảng Lập trình cơ bản
Bảng 4.18: Một số sự kiện của CheckBox ..................................................................146
Bảng 4.19: Một số thuộc tính của CheckedListBox ....................................................150
Bảng 4.20: Một số sự kiện của CheckedListBox ........................................................150
Bảng 4.21: Một số thuộc tính của RadioButton ..........................................................152
Bảng 4.22: Một số sự kiện của RadioButton ...............................................................152
Bảng 4.23: Một số thuộc tính của Button ....................................................................155
Bảng 4.24: Một số sự kiện của Button ........................................................................155
Bảng 4.25: Một số thuộc tính của MenuStrip .............................................................155
Bảng 4.26: Một số thuộc tính của ToolStripMenuItem...............................................156
Bảng 4.27: Một số sự kiện của ToolStripMenuItem ...................................................156
Bảng 4.28: Một số thuộc tính của GroupBox ..............................................................158
Bảng 4.29: Một số thuộc tính của TabControl ............................................................159
Bảng 4.30: Một số thuộc tính của điều khiển ColorDialog .........................................163
Bảng 4.31: Một số thuộc tính của điều khiển SaveFileDialog ....................................164
Bảng 4.32: Một số thuộc tính của điều khiển OpenFileDialog ...................................166
v
- Tập bài giảng Lập trình cơ bản
DANH MỤC CÁC HÌNH
Hình 1.1: Cấu trúc của .Net Framework..........................................................................2
Hình 1.2: Các bƣớc lựa chọn một Project mới Visual Studio 2010 ................................7
Hình 1.3: Tập tin Program.cs ..........................................................................................8
Hình 1.4: Kết quả chƣơng trình Vidu 1.1 ........................................................................8
Hình 1.5: Kết quả chƣơng trình ví dụ 1.2. .....................................................................10
Hình 2.1: Kết quả chƣơng trình ví dụ 2.3 ......................................................................15
Hình 2.2: Kết quả chƣơng trình ví dụ 2.6. .....................................................................17
Hình 2.3: Kết quả chƣơng trình ví dụ 2.7 ......................................................................19
Hình 2.4: Kết quả chƣơng trình ví dụ 2.8. .....................................................................22
Hình 2.5: Kết quả chƣơng trình ví dụ 2.9 ......................................................................24
Hình 2.6: Hoạt động của câu lệnh if không đầy đủ .......................................................27
Hình 2.7: Kết quả chƣơng trình ví dụ 2.10 ....................................................................28
Hình 2.8: Hoạt đông của câu lệnh if đầy đủ ..................................................................29
Hình 2.9: Kết quả chƣơng trình ví dụ 2.11 ....................................................................29
Hình 2.10: Kết quả chƣơng trình ví dụ 2.12. .................................................................31
Hình 2.11: Kết quả chƣơng trình ví dụ 2.13. .................................................................33
Hình 2.12: Hoạt động của vòng lặp while .....................................................................34
Hình 2.13: Kết quả chƣơng trình ví dụ 2.14. .................................................................35
Hình 2.14: Hoạt động của vòng lặp do … while. ..........................................................36
Hình 2.15: Kết quả chƣơng trình ví dụ 2.15. .................................................................37
Hình 2.16: Hoạt động của vòng lặp for. ........................................................................37
Hình 2.17: Kết quả chƣơng trình ví dụ 2.16 ..................................................................38
Hình 2.18: Kết quả chƣơng trình ví dụ 2.18. .................................................................39
Hình 2.19: Kết quả chƣơng trình 2.19 ...........................................................................41
Hình 2.20: Kết quả chƣơng trình ví dụ 2.20 ..................................................................43
Hình 2.21: Kết quả chƣơng trình ví dụ 2.21 ..................................................................45
Hình 2.22: Kết quả chƣơng trình bài 2.1. ......................................................................46
Hình 2.23: Kết quả chƣơng trình bài 2.5 .......................................................................48
Hình 3.1: Kết quả chƣơng trình ví dụ 3.1. .....................................................................54
Hình 3.2. Kết quả chƣơng trình ví dụ 3.2. .....................................................................56
Hình 3.3: Kết quả chƣơng trình ví dụ 3.3 ......................................................................58
Hình 3.4: Kết quả chƣơng trình ví dụ 3.4. .....................................................................61
Hình 3.5: Kết quả chƣơng trình ví dụ 5 .........................................................................65
Hình 3.6: Kết quả chƣơng trình ví dụ 3.6. .....................................................................70
Hình 3.7: Kết quả chƣơng trình ví dụ 3.7 ......................................................................71
vi
- Tập bài giảng Lập trình cơ bản
Hình 3.8: Kết quả chƣơng trình ví dụ 3.8 ......................................................................74
Hình 3.9: Kết quả chƣơng trình ví dụ 3.9. .....................................................................75
Hình 3.10: Nội dung tập tin tapnhiphan.data đƣợc mở bằng WordPad. .......................76
Hình 3.11: Kết quả chƣơng trình ví dụ 3.11 ..................................................................78
Hình 3.12: Kết quả chƣơng trình ví dụ 3.12. .................................................................82
Hình 3.13: Kết quả chƣơng trình ví dụ 3.13 ..................................................................84
Hình 3.14: Kết quả chƣơng trình ví dụ 3.14 ..................................................................86
Hình 3.15: Kết quả chƣơng trình ví dụ 3.15. .................................................................89
Hình 3.16: Kết quả chƣơng trình ví dụ 3.16 ..................................................................91
Hình 3.17: Kết quả chƣơng trình ví dụ 3.17 ..................................................................94
Hình 3.18: Kết quả chƣơng trình ví dụ 3.18. .................................................................97
Hình 3.19: Kết quả chƣơng trình ví du 3.19. .................................................................99
Hình 3.20: Kết quả chƣơng trình ví dụ 3.20. ...............................................................103
Hình 3.21: Kết quả chƣơng trình bài 3.1 .....................................................................105
Hình 3.22: Kết quả chƣơng trình bài 3.3 .....................................................................107
Hình 3.23: Kết quả chƣơng trình bài 3.4 .....................................................................109
Hình 3.24: Kết quả chƣơng trình bài 3.7 .....................................................................112
Hình 3.25: Kết quả chƣơng trình bài 3.9 .....................................................................115
Hình 4.1: Giao diện ví dụ 4.1 ......................................................................................117
Hình 4.2: Các bƣớc tạo ứng dụng Windows Forms Application ................................118
Hình 4.3: Giao diện ứng dụng Windows Forms Application sau khi tạo. ..................118
Hình 4.4: Cửa sổ Toolbox. ..........................................................................................119
Hình 4.5: Cửa sổ Solution Explorer. ...........................................................................119
Hình 4.6: Cửa sổ Properties của Form1. .....................................................................120
Hình 4.7: Thêm điều khiển Label vào Form1. ............................................................120
Hình 4.8: Thay đổi thuộc tính Text của điều khiển label1. .........................................121
Hình 4.9: Kết quả sau khi thay đổi thuộc tính Text của điều khiển label1 .................121
Hình 4.10: Cửa sổ Font................................................................................................121
Hình 4.11: Thay đổi Font và màu chữ của điều khiển label1. ....................................122
Hình 4.12: Chọn sự kiện Click ....................................................................................123
Hình 4.13: Phƣơng thức btThoat_Click ......................................................................123
Hình 4.14: Màu nền của MDI Form. ...........................................................................123
Hình 4.15: Form sau khi thay đổi một số thuộc tính theo ví dụ 4.4. ...........................125
Hình 4.16: Giao diện Form ví dụ 4.5...........................................................................126
Hình 4.17: Sử dụng điều khiển Label. .........................................................................129
Hình 4.18: Ví dụ về điều khiển LinkLabel. .................................................................130
vii
- Tập bài giảng Lập trình cơ bản
Hình 4.19: Hiển thị trang https://www.google.com.vn/ trên trình duyệt web.............130
Hình 4.20: Ví dụ về điều khiển TextBox ....................................................................132
Hình 4.21: Giao diện ví dụ 4.8. ...................................................................................134
Hình 4.22: Một số định dạng cho thuộc tính Mask .....................................................136
Hình 4.23: Ví dụ về điều khiển MaskedTextBox ........................................................137
Hình 4.24: Ví dụ về điều khiển ComboBox ................................................................139
Hình 4.25: Cửa sở String Collection Editor ................................................................140
Hình 4.26: Ví dụ về điều khiển ListBox......................................................................143
Hình 4.27: Ví dụ về điều khiển CheckBox..................................................................147
Hình 4.28: Ví dụ về điều khiển CheckedListBox .......................................................150
Hình 4.29: Ví dụ về điều khiển RadioButton ..............................................................153
Hình 4.30: Ví dụ về điều khiển MenuStrip .................................................................155
Hình 4.31: Giao diện ví dụ 4.15 ..................................................................................156
Hình 4.32: Ví dụ về điểu khiển GroupBox..................................................................159
Hình 4.33: Ví dụ về điều khiển TabControl ................................................................160
Hình 4.34: Hộp thoại MessageBox .............................................................................160
Hình 4.35: Hộp thoại MessageBox chỉ có nội dung....................................................160
Hình 4.36: Hộp thoại MessageBox có thêm tiều đề ....................................................161
Hình 4.37: Hộp thoại MessageBox có thêm tùy chỉnh nút bấm..................................161
Hình 4.38: Hộp thoại MessageBox có thêm tùy chỉnh biểu tƣợng .............................161
Hình 4.39: Hộp thoạiMessageBox ..............................................................................162
Hình 4.40: Xuất hiện hộp thoại MessageBox khi click chọn nút Yes. .......................162
Hình 4.41: Giao diện ví dụ 4.16 ..................................................................................163
Hình 4.42: Giao diện ví dụ 4.17 và tập tin songuyen.txt đƣợc tạo ra..........................165
Hình 4.43: Giao diện ví dụ 4.18 ..................................................................................166
Hình 4.44: Giải bất phƣơng trình ................................................................................167
Hình 4.45: Kết quả chạy chƣơng trình giải bất phƣơng trình .....................................169
HInh 4.46: Giao diện ví dụ bài tập 2 ...........................................................................170
Hình 4.47: Ứng dụng từ điển đơn giản ........................................................................170
HÌnh 4.48: Giao diện bài tập Xếp Ô ............................................................................170
Hình 4.49: Giao diện bài tập Bàn phím ký tự..............................................................171
Hình 4.50: Giao diện ví dụ Lucky Seven ....................................................................171
Hình 4.51: Bài tập mảng một chiều .............................................................................172
Hình 4.52: Kết quả thiết kế Form bài tập mảng một chiều .........................................176
Hình 4.53:Kết quả chạy chƣơng trình khi kích vào nút bổ sung .................................182
Hình 4.54: Kết quả chạy chƣơng trình khi kích vào nút loại bỏ .................................182
viii
- Tập bài giảng Lập trình cơ bản
Hình 4.55: Kết quả chạy chƣơng trình khi kích vào nút tìm kiếm ..............................183
Hình 4.56: Bài tập về mảng hai chiều .........................................................................184
Hình 4.57: Kết quả thiết kế Form bài tập mẫu về mảng hai chiều ..............................186
Hình 4.58: Kết quả chạy chƣơng trình bài tập mẫu về mảng hai chiều ......................190
Hình 4.59: Chƣơng trình xử lý chuỗi ..........................................................................191
Hình 4.60: Kết quả thiết kế Form chƣơng trình xử lý xâu .........................................193
Hình 4.61: Kết quả chạy chƣơng trình xử lý xâu ........................................................196
Hình 4.62: Chuẩn hóa và đếm từ trong xâu.................................................................196
ix
- Tập bài giảng Lập trình cơ bản
LỜI NÓI ĐẦU
Ngôn ngữ C# là một ngôn ngữ đƣợc dẫn xuất từ C và C++, nhƣng đƣợc tạo từ nền
tảng phát triển hơnvà thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử
dụng hơn. Những đặc tính này có thể đƣợc tóm tắt nhƣ sau: C# là ngôn ngữ đơn giản,
hiện đại, ngôn ngữ hƣớng đối tƣợng, ngôn ngữ mạnh mẽ và mềm dẻo, có ít từ khóa,
hƣớng module. Ngay từ khi mới xuất hiện, C# đã có sức lôi cuốn, thu hút nhiều ngƣời
và đƣợc sử dụng ở nhiều lĩnh vực khác nhau. Vì vậy, nhu cầu nghiên cứu, học tập môn
học này ngày càng cao. Ở Việt Nam, mặc dù đã có một vài tài liệu hƣớng dẫn giảng
dạy về C# nhƣng hầu nhƣ mới dừng lại ở mức độ lý thuyết trừu tƣợng, chƣa phù hợp
với trình độ sinh viên trƣờng Đại học sự phạm Kỹ thuật Nam Định, vì vậy việc biên
soạn tập bài giảng về ngôn ngữ C# và cụ thể tập bài giảng Lập trình cơ bản là một nhu
cầu cấp thiết.
Tập bài giảng đƣợc chia làm 4 chƣơng:
Chƣơng 1: Tổng quan về .NET và C#
Chƣơng 2: Cơ sở lập trình trong C#
Chƣơng 3: Một số cấu trúc dữ liệu nâng cao
Chƣơng 4: Lập trình trên Form
Mỗi chƣơng trong tập bài giảng đều hệ thống hóa các kiến thức cơ bản, cần
thiết. Tƣơng ứng với mỗi nội dung kiến thức đều có các ví dụ minh họa cụ thể, gắn với
các ứng dụng thực tiễn. Đặc biệt, cuối tập bài giảng, tác giả đƣa ra một hệ thống các
bài tập thực tế để sinh viên vận dụng củng cố lại kiến thức và kỹ năng.
Với phần lý thuyết chi tiết, đầy đủ đƣợc trình bày một cách khoa học, logic và
phần bài tập để củng cố kiến, hy vọng rằng tập bài giảng này sẽ mang lại cho sinh viên
nhiều kiến thứchữu ích.
Trong quá trình biên soạn, tập bài giảng không tránh khỏi những sai sót, rất
mong đồng nghiệp và các em sinh viên góp ý kiến để tập bài giảng ngày càng đƣợc
hoàn thiện hơn. Mọi sự đóng góp ý kiến xin gửi về Văn phòng Khoa Công nghệ thông
tin-Trƣờng Đại học Sƣ phạm Kỹ thuật Nam Định-Phƣờng Lộc Hạ-Tp Nam Định.
Nhóm biên soạn
Nguyễn Thế Vinh – Nguyễn Thi ̣ Thu Thủy
x
- Tập bài giảng Lập trình cơ bản
CHƢƠNG 1: TỔNG QUAN VỀ .NET VÀ C#
1.1. Giới thiệu .NET
1.1.1. Tổng quan về .NET Framework
Microsoft .NET Framework là một thành phần có thể đƣợc cài thêm hoặc đã có
sẵn trong các hệ điều hành Windows. Nó cung cấp những giải pháp đã đƣợc lập trình
sẵn cho những yêu cầu thông thƣờng của chƣơng trình quản lý việc thực thi các
chƣơng trình viết trên framework, cần phải cài framework để có thể chạy các chƣơng
trình đƣợc phát triển bằng các ngôn ngữ trong họ .NET. .NET Framework do
Microsoft đƣa ra và đƣợc sử dụng trong hầu hết các ứng dụng viết trên nền Windows.
Những giải pháp đƣợc lập trình sẵn hình thành nên một thƣ viện các lớp của
Framework, đƣợc sử dụng trong nhiều lĩnh vực của lập trình nhƣ: giao diện ngƣời
dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, mã hoá, phát triển những ứng dụng
website, các giải thuật số học và giao tiếp mạng. Thƣ viện lớp của Framework đƣợc
lập trình viên sử dụng, kết hợp với chƣơng trình của chính mình để tạo nên các ứng
dụng.
Kiến trúc của .NET Framework
Microsoft tổ chức .NET Framework thành nhiều tầng, quá trình biên dịch và
thực thi một chƣơng trình viết trên nền .NET Framework đƣợc thực hiện từng bƣớc từ
phần mã nguồn đến phần mã máy. Mã nguồn của chƣơng trình sau khi biên dịch sẽ
thành ngôn ngữ trung gian (Common Intermediate Language - CIL). Ngôn ngữ này
biên dịch phần lớn các thƣ viện đƣợc viết trên nền .NET thành các thƣ viện liên kết
động (Dynamic Linked Library - DLL). Với giải pháp này, các ngôn ngữ đƣợc .NET
Framework hỗ trợ sẽ dễ dàng sử dụng lại lẫn nhau. Một chƣơng trình đƣợc viết bằng
ngôn ngữ C# có thể sử dụng các lớp, các thuộc tính đã đƣợc viết trƣớc đó bằng ngôn
ngữ VB.NET hoặc J#. Tầng dƣới cùng của cấu trúc phân tầng của .NET Framework là
Common Language Runtime – còn đƣợc gọi là CLR. Đây là thành phần quan trọng
nhất của .NET Framework. Tầng này thực hiện biên dịch mã của CIL thành mã máy
và thực thi.
1
- Tập bài giảng Lập trình cơ bản
Hình 1.1: Cấu trúc của .Net Framework
Các ngôn ngữ thuộc họ .Net
Hiện tại các lập trình viên có thể sử dụng nhiều ngôn ngữ khác nhau để lập trình,
có ngƣời thân thiện với ngôn ngữ này, có ngƣời thân thiện với ngôn ngữ khác. Có
ngƣời làm việc rất tốt với ngôn ngữ Basic, trong khi đó, một số ngƣời khác thân thiện
với ngôn ngữ Java. Những lập trình viên với khả năng thông thạo những ngôn ngữ
khác nhau dƣờng nhƣ không thể cùng xây dựng một ứng dụng vì sự không tƣơng thích
giữa các mã lệnh biên dịch. Để khắc phục tình trạng này, Microsoft đã đƣa ra giải pháp
.Net Framework. Với .Net Framework, các lập trình viên có thể lập trình ở những
ngôn ngữ khác nhau, sau khi biên dịch, kết quả thu đƣợc sẽ là các thƣ viện liên kết
động .dll (dynamic linked library). Các thƣ viện này sẽ đƣợc các lập trình viên khác kế
thừa và sử dụng lại. Visual Studio và Microsoft .Net Framework hỗ trợ các ngôn ngữ
lập trình: Visual C++, Visual Basic .NET, Visual C#, Visual J#. Các ngôn ngữ lập
trình trên đƣợc gọi chung là họ ngôn ngữ .NET.
Các thƣ viện có sẵn của .Net Framework
Thƣ viện lớp cơ sở của .NET là một tập hợp lớn các lớp đƣợc viết bởi
Microsoft, những lớp này cho phép thao tác rất nhiều các tác vụ sẵn có trong Windows
và có thể tạo các lớp của mình từ các lớp có sẵn trong thƣ viện lớp cơ sở của .NET dựa
trên cơ chế thừa kế đơn. Thƣ viện lớp cơ sở của .NET rất trực quan và rất dễ sử dụng.
1.1.2. Giới thiệu Visual Studio .NET
Microsoft Visual Studio là một môi trƣờng phát triển tích hợp (IDE) từ
Microsoft. Nó đƣợc sử dụng để phát triển chƣơng trình máy tính cho Microsoft
Windows, cũng nhƣ các trang web, các ứng dụng web và các dịch vụ web. Visual
Studio sử dụng nền tảng phát triển phần mềm của Microsoft nhƣ Windows API,
Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft
Silverlight.
2
- Tập bài giảng Lập trình cơ bản
Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng nhƣ cải
tiến mã nguồn. Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã nguồn và
gỡ lỗi mức độ máy. Công cụ tích hợp khác bao gồm một mẫu thiết kế các hình thức
xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp và thiết kế giản đồ cơ sở dữ
liệu.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên
tập mã và gỡ lỗi hỗ trợ (mức độ khác nhau) hầu nhƣ mọi ngôn ngữ lập trình. Các ngôn
ngữ tích hợp gồm có Visual C++, VB.NET (Visual Basic.NET), Visual C# và Visual
F#. Ngoài ra Visual Studio còn hỗ trợ cho các ngôn ngữ khác nhƣ J++/J thăng, Python
và Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT,
HTML/XHTML, JavaScript và CSS.
Hiện nay, một hệ thống thông tin thƣờng có những dạng ứng dụng sau: Ứng
dụng Console phục vụ xử lý các vấn đề liên quan đến hệ thống và giao tiếp vào ra;
Ứng dụng Desktop phục vụ xây dựng các phần mềm ứng dụng với giao diện thân
thiện; Ứng dụng Internet phục vụ việc xây dựng các website; Đối với mỗi dạng ứng
dụng khác nhau, Visual Studio cung cấp các dạng Project khác nhau. Các dạng Project
đƣợc Visual Studio cung cấp gồm có:
- Console Application: Cung cấp template cho ứng dụng Console
- Windows Application: Cung cấp template cho ứng dụng Desktop
- Class Library: Cung cấp template cho việc xây dựng thƣ viện liên kết động
- ASP.NET Website: Cung cấp template cho việc xây dựng Website
- ASP.NET Web Service: Cung cấp template cho việc xây dựng Web Service
1.2. Ngôn ngữ C#
1.2.1. Giới thiệu C#
Ngôn ngữ C# đƣợc phát triển bởi đội ngũ kỹ sƣ của Microsoft, ngƣời đứng đầu
là Anders Hejlsberg và Scott Wiltamuth. Trong đó Anders Hejlsberg đƣợc biết đến là
tác giả của Turbo Pascal, một ngôn ngữ lập trình trên máy tính phổ biến. Và ông đứng
đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của 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.
Ngôn ngữ C# là một ngôn ngữ đƣợc dẫn xuất từ C và C++, nhƣng nó đƣợc tạo
từ nền tảng phát triển hơn và thêm vào những đặc tính mới để làm cho ngôn ngữ này
dễ sử dụng hơn. Nhiều trong số những đặc tính này khá giống với những đặc tính có
trong ngôn ngữ Java. Không dừng lại ở đó, Microsoft đƣa ra một số mục đích khi xây
dựng ngôn ngữ này. Những mục đích này đƣợc đƣợc tóm tắt nhƣ sau:
- C# là ngôn ngữ đơn giản
- C# là ngôn ngữ hiện đại
3
- Tập bài giảng Lập trình cơ bản
- C# là ngôn ngữ hƣớng đối tƣợng
- C# là ngôn ngữ mạnh mẽ và mềm dẻo
- C# là ngôn ngữ có ít từ khóa
- C# là ngôn ngữ hƣớng module
C# là ngôn ngữ đơn giản
C# loại bỏ một số sự phức tạp của những ngôn ngữ nhƣ Java và C++, bao gồm
việc loại bỏ những macro, những template, đa kế thừa và lớp cơ sở ảo (virtual base
class). Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến những vấn đề
cho các ngƣời phát triển C++. Nếu là ngƣời học ngôn ngữ C# đầu tiên thì chắc chắn là
sẽ không trải qua thời gian tìm hiểu về những vấn đề trên. Nhƣng khi đó sẽ không biết
đƣợc hiệu quả của ngôn ngữ C# khi loại bỏ những vấn đề đó.
Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu đãquen với C và
C++ hoặc thậm chí là Java, sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức,
toán tử và những chức năng khác đƣợc lấy trực tiếp từ ngôn ngữ C và C++, nhƣng nó
đã đƣợc cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự cải tiến là
loại bỏ các dƣ thừa, hay là thêm vào những cú pháp thay đổi. Ví dụ nhƣ, trong C++ có
ba toán tử làm việc với các thành viên là ::, . và ->. Để biết khi nào dùng ba toán tử
này cũng phức tạp và dễ nhầm lẫn. Trong C#, chúng đƣợc thay thế với một toán tử duy
nhất gọi là . (dot). Đối với ngƣời mới học thì điều này và những việc cải tiến khác làm
bớt nhầm lẫn và đơn giản hơn.
C# là ngôn ngữ hiện đại
Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính nhƣ là xử lý ngoại lệ,
thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảo mật mã nguồn là những
đặc tính đƣợc mong đợi trong một ngôn ngữ hiện đại. C# chứa tất cả những đặc tính
trên. Nếu là ngƣời mới học lập trình có thể sẽ cảm thấy những đặc tính trên phức tạp
và khó hiểu. Tuy nhiên, cũng đừng lo lắng sẽ dần dần đƣợc tìm hiểu những đặc tính
qua các chƣơng trong tập bài giảng này.
C# là ngôn ngữ hƣớng đối tƣợng
Những đặc điểm chính của ngôn ngữ hƣớng đối tƣợng (Object-oriented
language) là sự đóng gói (encapsulation), sự kế thừa (inheritance) và đa hình
(polymorphism). C# hỗ trợ tất cả những đặc tính trên.
C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo
Nhƣ đã đề cập trƣớc, với ngôn ngữ C# chỉ bị giới hạn ở chính bởi bản thân hay
là trí tƣởng tƣợng của lập trình viên. Ngôn ngữ này không đặt những ràng buộc lên
những việc có thể làm. C# đƣợc sử dụng cho nhiều các dự án khác nhau nhƣ là tạo ra
4
- Tập bài giảng Lập trình cơ bản
ứng dụng xử lý văn bản, ứng dụng đồ họa, bảng tính, hay thậm chí những trình biên
dịch cho các ngôn ngữ khác.
C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa. Nhiều ngƣời có thể nghĩ rằng
một ngôn ngữ có nhiều từ khóa thì sẽ mạnh hơn. Điều này không phải sự thật, ít nhất
là trong trƣờng hợp ngôn ngữ C#, có thể thấy rằng ngôn ngữ này có thể đƣợc sử dụng
để xây dựng bất cứ ứng dụng nào.
abstract as base bool
break byte case catch
char checked class const
continue decimal default delegate
do double else enum
event explicit extern false
finally fixed float for
foreach goto if implicit
in int interface internal
is lock long namespace
new null object operator
out override params private
protected public readonly ref
return sbyte sealed short
sizeof stackalloc static string
struct switch this throw
true try typeof uint
ulong unchecked unsafe ushort
using virtual void volatile
while
Bảng 1.1: Từ khóa của ngôn ngữ C#.
C# là ngôn ngữ hƣớng module
Mã nguồn C# có thể đƣợc viết trong lớp, những lớp này chứa các phƣơng thức
thành viên của nó. Lớp và những phƣơng thức có thể đƣợc sử dụng lại trong ứng dụng
hay các chƣơng trình khác. Bằng cách truyền các mẫu thông tin đến lớp hay phƣơng
thức có thể tạo ra những mã nguồn dùng lại có hiệu quả.
1.2.2. Các bƣớc chuẩn bị cho chƣơng trình
Thông thƣờng, trong việc phát triển phần mềm, ngƣời phát triển phải tuân thủ
theo quy trình phát triển phần mềm một cách nghiêm ngặt và quy trình này đã đƣợc
chuẩn hóa. Tuy nhiên trong phạm vi là tìm hiểu một ngôn ngữ mới và viết những
5
- Tập bài giảng Lập trình cơ bản
chƣơng trình nhỏ thì không đòi hỏi khắt khe việc thực hiện theo quy trình. Nhƣng để
giải quyết đƣợc những vấn đề thì cũng cần phải thực hiện đúng theo các bƣớc sau:
- Xác định mụctiêu của chƣơngtrình.
- Xác định những phƣơng pháp giải quyếtvấn đề.
- Tạo mộtchƣơngtrình để giảiquyếtvấn đề.
- Thựcthi chƣơng trình để xemkết quả.
Ví dụ để viết chƣơng trình xử lý văn bản đơn giản, mục tiêu chính là xây dựng
chƣơng trình cho phép soạn thảo và lƣu trữ những chuỗi ký tự hay văn bản. Nếu không
có mục tiêu thì không thể viết đƣợc chƣơng trình hiệu quả.
Bƣớc thứ hai là quyết định đến phƣơng pháp để viết chƣơng trình. Bƣớc này
xác định những thông tin nào cần thiết đƣợc sử dụng trong chƣơng trình, các hình thức
nào đƣợc sử dụng. Từ những thông tin này rút ra đƣợc phƣơng pháp để giải quyết vấn
đề.
Bƣớc thứ ba là cài đặt, bƣớc này có thể dùng các ngôn ngữ khác nhau để cài
đặt, Trong phạm vi của tập bài giảng này là dùng C#.
Và bƣớc cuối cùng là phần thực thi chƣơng trình để xem kết quả.
1.2.3. Xây dựng chƣơng trình C# đơn giản
Yêu cầu: Xây dựng ứng dụng Console thực hiện các công việc sau:
- Hiển thị chuỗi thông báo ―Chao mung den voi C# 2010‖ ra màn hình;
- Thực hiện nhập hai số thực từ bàn phím và hiển thị số lớn nhất trong hai số
Hướng dẫn thực hiện
- Bƣớc1: Khởi động Visual Studio 2010
Chọn Start | All Programs | Microsoft Visual Studio 2010 | Microsoft
Visual Studio 2010.
- Bƣớc 2: Tạo một Project mới
Chọn menu File | New | Project
- Bƣớc 3: Thiết lập lựa chọn và thực hiện khai báo nhƣ hình 1.2 theo các bƣớc
sau.
Bƣớc 3.1: Chọn ngôn ngữ là Visual C# và kiểu Template là Windows.
Bƣớc 3.2: Chọn kiểu ứng dụng Console Application.
Bƣớc 3.3: Đặt tên cho Project
Bƣớc 3.4: Đƣờng dẫn tới thƣ mục chứa Project
Bƣớc 3.5: Kích chuột vào nút Ok để tạo Project mới
6
- Tập bài giảng Lập trình cơ bản
3.1
1 3.2
3.3
3.4
3.5
Hình 1.2: Các bước lựa chọn một Project mới Visual Studio 2010
Ghi chú: Nếu muốn tạo một Project sử dụng ngôn ngữ khác thì có thể chọn
ngôn ngữ đó trong mục Other Languages. Như ở trên hình 1.2, có thể chọn
Visual Basic hoặc Visual C++.
- Bƣớc 4: Sau khi tạo xong Project mới, chọn tập tin Program.cs trong cửa sổ
Solution Explorer nhƣ hình 1.3. Trong phƣơng thức Main, thêm đoạn mã lệnh sau:
// Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2010'
Console.WriteLine("Chao mung ban den voi C# 2010");
// Nhập hai số thực a, b từ bàn phím
//Thực hiện hai báo hai biến thực a, b
float a, b;
//Thực hiện nhập a
Console.Write("Nhap a = "); a = float.Parse(Console.ReadLine());
//Thực hiện nhập a
Console.Write("Nhap b = "); b = float.Parse(Console.ReadLine());
//Khai báo biến max và tìm số lớn nhất trong hai số a, b
float max;
max = a;
if (max < b) max = b;
Console.WriteLine("So lon nhat = {0}", max);
System.Console.ReadLine();
7
- Tập bài giảng Lập trình cơ bản
Hình 1.3: Tập tin Program.cs
- Bƣớc 5: Để chạy chƣơng trình, nhấn F5 hoặc ấn vào nút . Kết quả hình 1.4.
Hình 1.4: Kết quả chương trình Vidu1.1
Ví dụ đơn giản trên đƣợc gọi là ứng dụng Console, ứng dụng này đƣợc giao tiếp
thông qua bàn phím và không có giao diện ngƣời dùng (User Interface), nhƣ các ứng
dụng thƣờng thấy trong Windows. Trong các chƣơng xây dựng các ứng dụng nâng cao
trên Windows hay Web thì mới dùng các các giao diện đồ họa. Còn để tìm hiểu về
ngôn ngữ C# thuần tuý thì cách tốt nhất là viết các ứng dụng Console.
Trong ứng dụng đơn giản trên,có sử dụng phƣơng thức WriteLine() của lớp
Console. Phƣơng thức này sẽ xuất ra màn hình chuỗi tham số đƣa vào, cụ thể là chuỗi
―Chao mung ban den voi C# 2010‖ và sau đó đƣa con trỏ màn hình xuống đầu dòng
tiếp theo, ngoài ra có thể sử dụng phƣơng thức Write() để hiển thị chuỗi nhƣng không
đƣa con trỏ xuống đầu dòng tiếp theo. Tiếp theo là thực hiện khai báo hai số thực là a,
b và thực hiện nhập dữ liệu cho hai biến thức này.
float a, b;
//Thực hiện nhập a
Console.Write("Nhap a = "); a = float.Parse(Console.ReadLine());
//Thực hiện nhập a
8
- Tập bài giảng Lập trình cơ bản
Console.Write("Nhap b = "); b = float.Parse(Console.ReadLine());
Phƣơng thức ReadLine() trả về một chuỗi đƣợc nhập từ bàn phím và phƣơng
thức phƣơng thức float.Parse() trả về một số thực tƣơng ứng với chuỗi nhập vào. Sau
đó là đoạn mã đƣợc dùng để tìm số lớn nhất trong hai biến a, b và hiển thị kết quả ra
màn hình.
float max;
max = a;
if (max < b) max = b;
Console.WriteLine("So lon nhat = {0}", max);
Sau khi khai báo biến max và gán giá trị của biến a cho max, câu lệnh if sẽ thực
hiện so sánh max với b, nếu max nhỏ hơn b thì giá trị của b cho max và hiển thị ra
thông báo số lớn nhất.
Câu lệnh cuối cùng Console.ReadLine() cuối chƣơng trình đƣợc dùng với mục
đích đợi sau khi ấn phím Enter sẽ đóng lại chƣơng trình đang chạy.
1.2.4. Chú thích trong chƣơng trình C#
Một chƣơng trình đƣợc viết tốt thì cần phải có chú thích các đoạn mã đƣợc viết.
Các đoạn chú thích này sẽ không đƣợc biên dịch và cũng không tham gia vào chƣơng
trình. Mục đích chính là làm cho đoạn mã nguồn rõ ràng và dễ hiểu.
Trong ví dụ 1.1 có một dòng chú thích:
// Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2010'
Một chuỗi chú thích trên một dòng thì bắt đầu bằng ký tự ―//‖. Khi trình biên
dịch gặp hai ký tự này thì sẽ bỏ qua dòng đó.
Ngoài ra C# còn cho phép kiểu chú thích cho một hay nhiều dòng và phải khai
báo ―/*‖ ở phần đầu chú thích và kết thúc chú thích là ký tự ―*/‖.
Ví dụ 1.2: Minh họa dùng chú thích trên nhiều dòng.
namespace Vidu1_2
{
class Program
{
static void Main(string[] args)
{
/* Xuat ra man hinh chuoi ‘chao mung’
Su dung ham WriteLine cua lop System.Console
*/
System.Console.WriteLine("Chao mung ban den voi C# 2010");
System.Console.ReadLine();
}}}
Kết quả thực thi chƣơng trình:
9
- Tập bài giảng Lập trình cơ bản
Hình 1.5: Kết quả chương trình ví dụ 1.2.
1.2.5. Namespace
Mã nguồn bên trong Framework đƣợc tổ chức bên trong namespace. Có hàng
trăm namespace bên trong Framework đƣợc sử dụng để tổ chức hàng ngàn lớp đối
tƣợng và các kiểu dữ liệu khác.Một vài namespace thì đƣợc lƣu trữ bên trong
namespace khác. Namespace là một gói những thực thể có thuộc tính và hành vi độc
lập với bên ngoài. Những ƣu điểm của namespace đƣợc liệt kê nhƣ sau:
- Tránh đƣợc sự trùng lặp tên giữa các lớp.
- Cho phép tổ chức mã nguồn một cách có khoa học và hợp lý.
Khai báo một Namespace
namespace NamespaceName
{
// nơi chứa đựng tất cả các class
}
Trong đó,
- namespace: là từ khóa khai báo một NameSpace
- NamespaceName: là tên của một Namespace
Ví dụ:
namespace CSharpProgram
{
class Basic
{
}
class Advanced
{
}
}
10
nguon tai.lieu . vn