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, tr
Trang 1BM/QT10/P.ĐTSV/04/04 Ban hành lần: 3UBND 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 ĐỘ: TRUNG CẤP
(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ỊA-VŨNG TÀU
Trang 3TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viênnghề Công nghệ Thông tin trong trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa –Vũng Tàu, chúng tôi đã thực hiện biên soạn tài liệu Lập trình Windows Formsnày
Tà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ể được phépdù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 kinhdoanh 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 khungchương trình đào tạo Cao đẳng nghề Công nghệ Thông tin đã được Trường Caođẳ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 kinhnghiệ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 đốitượng
Bài 10: Sử dụng Form, MenuStrip
Bài 11: Sử dụng Button, Label, TextBox
Bài 12: Sử dụng Checkbox, RadioButton, GroupBox
Bài 13: Sử dụng ComboBox, ListBox
Bài 14: Sử dụng DateTimePicker, MonthCalendar
Bài 15: Sử dụng ListView, TreeView
Trang 5Bài 16: Sử dụng PictureBox, ToolTip
Bài 17: Sử dụng CheckListBox, NumericUpDown
Bài 18: Sử dụng Panel, SplitContainer, TabControl
Bà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
Bài 24: Cập nhật cơ sở dữ liệu
Với tiêu chí trình bày cô động, dễ hiểu áp dụng thực tế, kèm theo chi tiếtcác bước hướng dẫn thực hành cụ thể giúp cho người học dễ tiếp thu các kiếnthức cần thiết và hình thành được kỹ năng thực hành và rèn luyện thao tác
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 đónggó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ương – Chủ biên
Trang 6MỤC LỤC
LỜI GIỚI THIỆU 1
BÀI 1: GIỚI THIỆU TỔNG QUAN 10
1 Giới thiệu các ứng dụng thực tế 10
2 Khởi động, thoát chương trình 11
3 Sử dụng hệ thống trợ giúp 15
Câu hỏi ôn tập và bài tập 15
BÀI 2: CÁC THÀNH PHẦN CƠ BẢN 16
1 Hệ thống ký hiệu và từ khóa 16
2 Các kiểu dữ liệu cơ bản 17
3 Biến, hằng, biểu thức 19
4 Các phép toán 21
Câu hỏi ôn tập và bài tập 26
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 28
1 Các câu lệnh nhập xuất cơ bản 28
2 Câu lệnh if else 32
Câu hỏi ôn tập và bài tập 36
BÀI 4: SỬ DỤNG CẤU TRÚC LỰA CHỌN SWITCH CASE, FOR, FOR EACH 37
1 Câu lệnh switch 37
2 Câu lệnh for 39
3 Câu lệnh for …each 48
Câu hỏi ôn tập và bài tập 51
BÀI 5: SỬ DỤNG CẤU TRÚC LỰA VÒNG LẶP WHILE, DO…WHILE 53
1 Sử dụng cấu trúc vòng lặp While 53
2 Sử dụng cấu trúc vòng lặp Do …while 56
Câu hỏi ôn tập và bài tập 58
Trang 7BÀI 6: SỬ DỤNG CÂU LỆNH BREAK, CONTINUE, GOTO 59
1 Sử dụng câu lệnh break 59
2 Sử dụng câu lệnh continue 60
3 Sử dụng câu lệnh goto 61
Câu hỏi ôn tập và bài tập 63
BÀI 7: HÀM 64
1 Khái niệm 64
2 Quy tắc xây dựng hàm 64
3 Nguyên tắc hoạt động của hàm 65
4 Cách truyền tham số 67
5 Sử dụng hàm 68
Câu hỏi ôn tập và bài tập 71
BÀI 8: THIẾT KẾ LỚP ĐỐI TƯỢNG 72
1 Định nghĩa lớp đối tượng 72
2 Khai báo lớp đối tượng 73
Câu hỏi ôn tập và bài tập 76
BÀI 9 : ĐỊNH NGHĨA CÁC THUỘC TÍNH, PHƯƠNG THỨC HÀNH ĐỘNG CHO LỚP ĐỐI TƯỢNG 77
1 Định nghĩa các thuộc tính cho lớp đối tượng 77
2 Định nghĩa các phương thức hành động cho lớp đối tượng 79
Câu hỏi ôn tập và bài tập 82
BÀI 10: SỬ DỤNG FORM, MENUSTRIP 84
1 Form 84
2 Menustrip 95
Câu hỏi ôn tập và bài tập 98
BÀI 11: SỬ DỤNG LABEL, TEXTBOX, BUTTON 101
1 Label 101
2 TextBox 104
Trang 83 Button 107
Câu hỏi ôn tập và bài tập 109
BÀI 12: SỬ DỤNG CHECKBOX, RADIOBUTTON, GROUPBOX 112
1 Checkbox 112
2 RadioButton 114
3 GroupBox 117
Câu hỏi ôn tập và bài tập 121
BÀI 13: SỬ DỤNG COMBOBOX, LISTBOX 123
1 ComboBox 123
2 ListBox 125
Câu hỏi ôn tập và bài tập 128
BÀI 14: SỬ DỤNG DATETIMEPICKER, MONTHCALENDAR 129
1 DateTimePicker 129
2 MonthCalendar 130
Câu hỏi ôn tập và bài tập 132
BÀI 15: SỬ DỤNG LISTVIEW, TREEVIEW 133
1 ListView 133
2 TreeView 138
Câu hỏi ôn tập và bài tập 142
BÀI 16: SỬ DỤNG PICTUREBOX, TOOLTIP 144
1 PictureBox 144
2 ToolTip 145
Câu hỏi ôn tập và bài tập chưa làm 148
BÀI 17: SỬ DỤNG CHECKLISTBOX, NUMERICUPDOWN 149
1 CheckListBox 149
2 NumericUpDown 151
Câu hỏi ôn tập và bài tập 153
BÀI 18: SỬ DỤNG PANEL, SPLITCONTAINER, TABCONTROL 155
Trang 91 Panel 155
2 SplitContainer 156
3 TabControl 160
Câu hỏi ôn tập và bài tập 165
BÀI 19: TẠO KẾT NỐI, ĐÓNG KẾT NỐI CƠ SỞ DỮ LIỆU 167
1 Các kiểu dữ liệu kết nối 167
2 Tạo kết nối dữ liệu 170
3 Đóng kết nối cơ sở dữ liệu 175
Câu hỏi ôn tập và bài tập 176
BÀI 20: TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG DATASET 177
1 Định nghĩa Dataset 177
2 Thao tác truy xuất dữ liệu với Dataset 178
Câu hỏi ôn tập và bài tập 180
BÀI 21: HIỂN THỊ CƠ SỞ DỮ LIỆU BẰNG DATAGRIDVIEW 182
1 Ý nghĩa DataGridView 182
2 Các thiết lập thuộc tính 184
3 Truy xuất và hiển thị dữ liệu trên control DataGridView 185
Câu hỏi ôn tập và bài tập 188
BÀI 22: TRUY XUẤT CƠ SỞ DỮ LIỆU BẰNG BINDINGSOURCE 190
1 Ý nghĩa BindingSource 190
2 Cách thiết lập các thành phần 191
3 Truy xuất và hiển thị dữ liệu trên BindingSource 191
Câu hỏi ôn tập và bài tập 192
BÀI 23: HIỂN THỊ CƠ SỞ DỮ LIỆU BẰNG BINDINGNAVIGATOR 193
1 Ý nghĩa BindingNavigator 193
2 Cách thiết lập các thành phần 194
3 Truy xuất và hiển thị dữ liệu trên BindingNavigator 195
Câu hỏi ôn tập và bài tập 196
Trang 10BÀI 24: THAO TÁC VỚI CƠ SỞ DỮ LIỆU 197
1 Các kiểu dữ liệu, cập nhật cơ sở dữ liệu 197
2 Truy xuất và cập nhật dữ liệu 199
Câu hỏi ôn tập và bài tập 201
Trang 11GIÁO TRÌNH MÔ ĐUN Tê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
- Tính chất của mô đun: Là mô đun chuyên môn nghề Đây là mô đun chứađựng kiến thức nền tảng về ngôn ngữ lập trình ứng dụng và xây dưng các phầnmềm ứng dụng quản lý
- Ý nghĩa và vai trò của môn học/mô đun: Môn học giúp thực hành được cácgiao diện lập trình ứng dụng nhỏ như: quản lý quán café, quản lý khách sạn,quản lý nhân viên, quản lý sinh viên…
Mục tiêu của mô đun:
- Về kiến thức:
+ 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ươngtrì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
Trang 12+ 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 13BÀI 1: GIỚI THIỆU TỔNG QUAN
Mã bài: 20.1 Giới thiệu:
C# hay Csharp là một trong những ngôn ngữ lập trình trong họ DotNet củaMicrosoft và khi lập trình C# người lập trình phải chuẩn bị và cài đặt NETFramework
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
- Rèn luyện tính cẩn thận, sáng tạo, làm việc nhóm
- Quản lý đào tạo
- Quản lý sinh viên
- Quản lý thư viện
…
Trang 142 Khởi động, thoát chương trình
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 15Hình 1.3 Màn hình download tiến hành cài đặt
Tùy vào tốc độ của máy cũng như đường truyền mạng, sau khi tải xong ta sẽ cómàn hình như dưới đây:
Trang 16Hình 1.5 Lựa chọn cấu hình cài đặt
Trong màn hình Đăng nhập để bấm Sign In Dùng tài khoản Gmail hoặc tàikhoản Microsoft để đăng nhập bản quyền dùng Visual Studio
Hình 1.6 Chọn đăng nhập tài khoản để tiến hành đăng ký Viusual Studio
Chọn Personal account:
Trang 17Hì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:
- 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)
Trang 18- 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
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áclỗi trong trang web:
S&k=k(MSDNSTART)&rd=true
Trang 19https://msdn.microsoft.com/query/dev15.query?appId=Dev15IDEF1&l=en-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 2bài tập Console với tên: BTCB1,BTCB2 và 2 bài tập Form với tên: LTWF1,LTWF2
Trang 20BÀI 2: CÁC THÀNH PHẦN CƠ BẢN
Mã bài: 20.2 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ằngkhi 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:
3 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
char extern is readonly true for
class finally long return typeof short
const fixed namespace sbyte uint uncheckedcontinue float new sealed ulong
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,float, enum, struct, …
Trang 21Biến của kiểu giá trị lưu trữ một giá trị thực, giá trị này được lưu trữ trongstack, không thể mang giá trị null và phải chứa giá trị xác định.
Bảng 2.2: Bảng mô tả các kiểu dữ liệu giá trị trong C#
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.767ushort 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.647 uint 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,4E-
38 đế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,7E-308 đến 1,7E+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 chí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
Trang 22Kiể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:
Sử dụng lớp Convert:
Đây là một lớp được C# xây dựng sẵn phục vụ cho việc chuyển đổi từ kiểu dữliệu này sang kiểu dữ liệu khác Các phương thức trong lớp Convert phần lớnđều là phương thức tĩ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 đượcint b = Convert.ToInt32(“123456787654”); //Tràn bộ nhớ, không chuyển đượcdouble d = Convert.ToDouble(null); //Trả về giá trị mặc định
Sử dụng phương thức Parse:
Trang 23Phươ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ươngthứ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
3 Biến, hằng, biểu thức
a Biến
Biến là nơi lưu trữ dữ liệu của chương trình Dữ liệu của biến nằm trong bộ nhớvật lý của Ram và có thể thay đổi được Muốn sử dụng biến trước tiên lập trìnhphải
chỉ định biến có một kiểu dữ liệu cụ thể nào đó
Cú pháp khai báo biến:
< 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:
< Tên biến > = <giá trị>
Trong đó:
= là phép toán gán giá trị
Trang 24Quy tắc đặt tên: Các tên biến, tên hằng, tên hàm, … trong C# đề phải đặt tên
đúng với quy tắc sau:
Một tên biến có thể bắt đầu bằng chữ hoa hay chữ thường Tên có thể chứa kýtự
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
Không hợp lệ, không được chứa ký tự đặcbiệt
b 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 kiểu hằng
Trang 25Hằng được phân thành ba loại: giá trị hằng (literal), biểu tượng hằng (symbolicconstants), kiểu liệu kê (enumerations).
Giá trị hằng: ta có một câu lệnh gán như sau:
<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ấtmộ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
4 Các phép toán
a Toán tử (Operator) trong C#
Cá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ũngvậy
Bảng 2.3: Bảng mô tả các toán tử trong C#
/ 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ụ:
Trang 26b 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#
-= 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 trừbit)
|= x|=2 Gán giá trị x = x|2 (Phép OR bit)
Ví dụ:
Trang 27Kết quả khi chạy chương trình trên
c 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:
Cò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.
d Toán tử logic
Trang 28Đô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ý
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
Bảng 2.6: Bảng mô tả các toán tử quan hệ trong C#
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
Trang 29Nhữ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ộtphé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 Dovậ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ẽ được trình bàychi 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:
var2 = var1 = 24;
Lệnh này sẽ được thực hiện từ bên phải sang khi đó biến var1 sẽ nhận được giátrị là 24 và tiếp sau đó thì var2 cũng được nhận giá trị là 24 Do vậy cả hai biếnđều cùng nhận một giá trị là 24 Có thể dùng lệnh trên để khởi tạo nhiều biến cócùng một giá trị như:
a = b = c = d = 24;
* Khoảng trắng (whitespace)
Trong ngôn ngữ C#, những khoảng trắng, khoảng tab và các dòng được xemnhư là khoảng trắng (whitespace), giống như tên gọi vì chỉ xuất hiện nhữngkhoả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ếuchúng ta viết:
Trang 30hơ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ốtthì 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ịchthì 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ôngphả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àykhô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âulệ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ềudò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ảicách nhau một dấu chấm phẩy
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 baogồ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ấuchấm phẩy, ví dụ như:
int 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ệnhcuố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ânnhá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 (conditionalbranching statement)
Trang 31Ngoà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ệnnhiề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áclệ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
4 Tạo một project dưới dạng Console thực hiện khai báo các loại biếnsau:
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 32BÀ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: 20.3 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ủamộ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 ramàn hình Console.WriteLine(); và lệnh nhập dữ liệu vào từ bàn phím lệnhConsole.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ấnmộ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ể
Trang 33Ý 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ốngdò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ể
Đọc 1 ký tự từ bàn phím và trả về kiểu số nguyên là mã ASCII (American
Standard Code for Information Interchange – Chuẩn mã trao đổi thông tin HoaKì,là bộ kí tự và bộ mã kí tự dựa trên bảng chữ cái La Tinh được dùng trongtiế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,
d Console.ReadLine();
Cú pháp:
Console.ReadLine();
Ý 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 đượcluôn là một chuỗi
e Console.ReadKey();
Cú pháp:
Console.ReadKey(<tham số kiểu bool>)
Ý nghĩa:
Trang 34 Lệnh này cũng dùng để đọc một ký tự từ bàn phím nhưng trả về
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ìnhconsole 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ọnLocation -> Chọn OK
Hình 3.2: Màn hình đặt tên và chọn nơi lưu của Project
Trang 35Project sau khi tạo
Hình 3.3: 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.4: Code để nhập xuất thông tin sinh viên
Bước 3: Chạy chương trình
Chọn Start hoặc nhấp vào biểu tượng để chạy chương trình
Hình 3.5: Chọn biểu tượng để thực thi (chạy) chương trình
Giao diện chương trình khi chạy sau khi nhập thông tin sinh viên
Trang 36Hình 3.6: Màn hình hiển thị kết quả chương trình
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ềukiệ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 trongthâ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ệnhnà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> }]
Như 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ặcvuông Ví dụ: câu lệnh điều kiện if else
Trang 37Kết quả chương trình:
Hình 3.7 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ườngxuyê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:
Như 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ặcvuông Ví dụ: câu lệnh điều kiện if else
Trang 38Kết quả chương trình:
Hình 3.8 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ườngxuyê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 39var2: 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ềukiệ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 tacầ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ộtcô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ựatrê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 kiện làchưa có gia đình
• Nếu công dân là nữ thì độ tuổi có thể kết hôn là 19 cũng với điều kiện là chưa có gia đình
• Tất cả các công dân có tuổi nhỏ hơn 19 điều không được kết hôn
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.9 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ỉ