Bài giảng Lập trình trên môi trường Windows - Chương 2: Ngôn ngữ lập trình C# - Dương Thành Phết

Bài giảng Lập trình trên môi trường Windows - Chương 2: Ngôn ngữ lập trình C#

NỘI DUNG

1. Tổng quan về ngôn ngữ lập trình C#

2. Các cấu trúc điều khiển

3. Phƣơng thức

4. Mảng

5. Chuỗi

pdf 45 trang phuongnguyen 3020
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình trên môi trường Windows - Chương 2: Ngôn ngữ lập trình C# - Dương Thành Phết", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình trên môi trường Windows - Chương 2: Ngôn ngữ lập trình C# - Dương Thành Phết

Bài giảng Lập trình trên môi trường Windows - Chương 2: Ngôn ngữ lập trình C# - Dương Thành Phết
1 
Chƣơng 2 
NGÔN NGỮ LẬP TRÌNH C# 
 Giảng Viên: ThS. Dƣơng Thành Phết 
 Email: phetcm@gmail.com – YahooID: phetcm 
 Website:  
 Tel: 0918158670 
LẬP TRÌNH TRÊN MÔI TRƢỜNG WINDOWS 
KHOA CÔNG NGHỆ THÔNG TIN 
2 
NỘI DUNG 
2 
1. Tổng quan về ngôn ngữ lập trình C# 
2. Các cấu trúc điều khiển 
3. Phƣơng thức 
4. Mảng 
5. Chuỗi 
3 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
 Là ngôn ngữ lập trình được xây dựng trên nền tảng 
ngôn ngữ C/C++/Java nhưng hoạt động trên .Net 
Framework. 
 Đặc điểm : 
 Hoạt động trên .NET Framework. 
 Dựa trên phương pháp thiết kế hướng đối 
tượng. 
 Dùng cho cả 3 loại ứng dụng: Console, Winform, 
Webform. 
 Có tính diễn đạt ngữ nghĩa cao. 
 Phân biệt chữ hoa thường. 
1.1. Giới thiệu ngôn ngữ lập trình C# 
4 
1.2. Từ khoá – Keywords 
4 
abstract add* 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 get* goto if implicit in 
int interface internal is lock long namespace 
new null object operator out override params 
partial* private protected public readonly ref remove 
return sbyte sealed set* short sizeof stackalloc 
static string struct switch this throw true 
try typeof uint ulong unchecked unsafe ushort 
using value* virtual void volatile where* while 
Là từ dành riêng sử dụng để giúp trình biên dịch xác định 
cấu trúc và tổ chức của mã nguồn. 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
5 
1.3. Lệnh, Khối lệnh & Chú thích 
5 
 Câu lệnh thực hiện một chức năng nào đó (gán, xuất, 
nhập, ) và kết thúc bằng dấu chấm phẩy (;) 
 Khối lệnh gồm nhiều lệnh và được đặt trong cặp dấu 
ngoặc nhọn { } 
 Chú thích: 
// Chú thích một dòng 
/* Chú thích nhiều dòng */ 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
6 
1.4. Định danh (Identifier) 
6 
 Định danh là việc xác định tên cho các thành phần 
trong mã nguồn như : tên biến, hàm, hằng, function 
 Quy ước định danh trong C# : 
 Phân biệt chữ hoa thường 
 Quy ước đặt tên : 
• Sử dụng 26 chữ cái (thường & hoa), 10 chữ số 
• Dấu nối ( _ ) 
• Không dùng chữ số ở đầu 
• Không trùng với từ khoá 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
7 
1.5. Biến & khai báo biến 
7 
 Biến là đối tượng lưu trữ các giá trị, dữ liệu trong một 
chương trình. 
 Khai báo : ; 
Ví dụ : 
 int x; 
 float a,b; 
 char c = „A‟; 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
8 
1.6. Kiểu dữ liệu (Data Types) 
8 
 Kiểu dữ liệu là các loại dữ liệu và phạm vi giá trị của 
chúng trong bộ nhớ sử dụng để lưu trữ. 
 Có 2 loại : kiểu dữ liệu dựng sẵn & kiểu dữ liệu tự 
định nghĩa. Một số kiểu dựng sẵn : int (int16, int32, 
int64), float, bool, string, char, double, long, decimal, 
short. 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
9 
 Kiểu số nguyên(Integer) 
Kiểu 
C# 
Kích 
thƣớc 
(byte) 
Kiểu 
.NET 
Miền giá trị Mô tả 
byte 1 Byte [0..255] Nguyên dƣơng 
sbyte 1 Sbyte [-128..127] Nguyên có dấu 
bool 1 Boolean true hoặc false Giá trị logic 
char 2 Char Ký tự Unicode 
short 2 Int16 [0..65.535] Nguyên không dấu 
int 4 Int32 Từ -2.147.483.647 
đến 2.147.483.646 
Nguyên có dấu 
uint 4 Uint32 Từ 0 đến 4.294.967.295 Nguyên không dấu 
long 8 Int64 Từ -9.223.370.036.854.775.808 
đến 9.223.370.036.854.775.807 
Nguyên có dấu 
ulong 8 Uint64 Từ 0 đến 0xffff ffff ffff ffff Nguyên không dấu 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
10 
 Kiểu dấu chấm động 
10 
Kiểu 
C# 
Kích thước 
(byte) 
Kiểu 
.NET 
Miền giá trị Mô tả 
float 4 Singgle Từ 3,4E-38 
đến 3,4E+38 
Kiểu dấu chấm động, với 
7 chữ số có nghĩa 
double 8 Double Từ 1,7E308 
đến 1,7E+308 
Kiểu dấu chấm động có 
độ chính xác gấp đôi, 
với 15 chữ số có nghĩa 
decimal 8 Decimal Có độ chính xác đến 28 
con số, phải có hậu tố 
“m” hoặc “M” theo sau gi 
Ví dụ 1: 
 int x; 
 float y = 1.5; 
 x = (int)y; 
Ví dụ 2: 
 int x = 6; 
 float y; 
 y = (float)x; 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
11 
 Kiểu chuỗi (String) 
11 
 C# định nghĩa kiểu string như một kiểu dữ liệu cơ bản 
(khác với C, C++) 
 Kiểu string có thể chứa nội dung không giới hạn, vì 
đây là kiểu dữ liệu đối tượng được chứa ở bộ nhớ 
heap. 
 Khai báo : string s = “Nguyen van a”; 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
12 
 Kiểu mảng (Array) 
12 
 Mảng là một tập hợp các phần tử cùng một kiểu dữ liệu 
và được truy xuất thông qua chỉ số. 
 Chỉ số bắt đầu từ 0. 
 Khai báo : 
Mảng một chiều 
 [ ] = 
new [Số phần tử]; 
Mảng hai chiều 
 [ , ] = 
new [Số dòng, số cột]; 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
13 
1.7. Các phép toán 
13 
Ký hiệu Ý nghĩa 
+ Cộng 
- Trừ 
* Nhân 
/ Chia lấy nguyên 
% Chia lấy phần dƣ 
++x; 
x++ 
Tăng x lên 1 đơn vị 
--x; x-- Giảm x xuống 1 đơn vị 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
Toán tử số học 
14 
Toán tử quan hệ 
14 
Ký hiệu Ý nghĩa 
> Lớn hơn 
>= Lớn hơn hoặc bằng 
< Nhỏ hơn 
<= Nhỏ hơn hoặc bằng 
== Bằng 
!= Khác 
&& Và 
|| Hoặc 
! Phủ định 
1. TỔNG QUAN NGÔN NGỮ LẬP TRÌNH C# 
15 
15 
2. CẤU TRÚC ĐIỀU KHIỂN 
Gồm các cấu trúc : 
1. Rẽ nhánh: ifelse 
2. Lựa chọn: switchcase 
3. Lặp: for, while, dowhile, foreach 
4. Các cấu trúc khác: break, continue 
16 
16 
2.1. Cấu trúc rẽ nhánh 
2 CẤU TRÚC ĐIỀU KHIỂN 
Cấu trúc rẽ nhánh cho phép thực hiện một khối lệnh 
dựa vào kết quả của biểu thức điều kiện có 2 dạng: 
if (biểu thức điều kiện) 
{ 
 ; 
} 
if (biểu thức điều kiện) 
{ 
 ; 
} 
else 
{ 
 ; 
} 
 Nếu điều kiện đúng thì 
sẽ thực hiện khối lệnh 
 Nếu điều kiện đúng thì sẽ 
thực hiện khối lệnh 1 
 Ngược lại thì thực hiện 
khối lệnh 2 
17 
17 
Ví dụ: Giải và biện luận phƣơng trình: ax+b=0 
2. CẤU TRÚC ĐIỀU KHIỂN 
Yêu cầu: 
 Nút Giải: Giải và biện luận phương trình bậc 1, ô kết quả 
(txtketqua) cho biết phương trình có nghiệm, vô nghiệm hay 
vô số nghiệm. Trong trường hợp có nghiệm thì ô txtnghiem 
sẽ hiện kết quả nghiệm. 
 Nút Tiếp: Xoá dữ liệu có trong các ô TextBox. Đặt con trỏ 
về ô txtHesoA 
 Nút thoát: Thoát ứng dụng 
18 
18 
switch (biểu thức) 
 case n1: 
 các câu lệnh ; 
 break ; 
 case n2: 
 các câu lệnh ; 
 break ; 
 case nk: 
 ; 
 break ; 
 [default: các câu lệnh] 
 break; 
 
Phải là kiểu nguyên 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.2. Cấu trúc lựa chọn 
19 
19 
Ví dụ: 
2. CẤU TRÚC ĐIỀU KHIỂN 
String thu="" ; 
switch (DataTime.Today.Day()) 
{ 
 Case 1: 
 thu = "Chủ nhật "; break; 
 Case 2: 
 thu = "Thứ hai"; break; 
 Case 3: 
 thu = "Thứ ba"; break; 
 Case 4: 
 thu = "Thứ tư"; break; 
 Case 5: 
 thu = "Thứ năm"; break; 
 Case 6: 
 thu = "Thứ sáu"; break; 
 Case 7: 
 thu = "Thứ bảy"; break; 
} 
20 
20 
for (; ; ) 
{ 
 ; 
} 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.3. Cấu trúc lặp For 
 Bước 1: Khởi gán cho biểu thức 1 
 Bước 2: Kiểm tra điều kiện của biểu thức 2. 
- Nếu biểu thức 2 đúng thì thực hiện các lệnh của vòng lặp, 
thực hiện biểu thức 3. Quay trở lại bước 2. 
- Ngược lại thoát khỏi lặp. 
Ví dụ: Tạo Project tính tổng giá trị dãy số từ n đến m (n<m) 
21 
21 
while () 
 lệnh/ khối lệnh; 
 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.4. Cấu trúc lặp While 
VD: Tạo Project tính tìm số đảo của 1 số nguyên n 
Trong khi điều kiện lặp còn đúng, các câu lệnh trong thân 
vòng lặp còn được thực hiện tiếp 
22 
22 
do 
{ 
 ; 
} while (biểu thức điều kiện); 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.4. Cấu trúc lặp Do . . . While 
Thực hiện khối lệnh cho đến khi biểu thức điều kiện SAI 
23 
23 
2.5. Cấu trúc lặp Foreach 
foreach ( in ) 
{ 
 Khối lệnh; 
} 
2. CẤU TRÚC ĐIỀU KHIỂN 
Xét từng phần tử trong mảng 
Ví dụ: Tính tổng các phần tử chẵn trong mảng 
 int s=0; 
 int [ ] intArr = new int [5] {3, 8, 7, 1, 6}; 
 foreach(int m in intArr) 
 if(m%2==0) 
 s+=m; 
24 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.6. Lệnh break: 
 Thoát khỏi các cấu trúc switch, while, for, dowhile 
chứa nó gần nhất. 
 Tại thời điểm break không cần kiểm tra kết quả của 
biểu thức điều kiện. 
 Tuy nhiên, cần phân biệt với lệnh return là lệnh trả về 
từ hàm, nghĩa là thoát khỏi hàm đang thi hành, nên 
cũng giúp thoát luôn khỏi tất cả các vòng lặp. 
25 
2. CẤU TRÚC ĐIỀU KHIỂN 
2.7. Lệnh continue: 
 Được sử dụng trong các vòng lặp while, for, 
dowhile. 
 Khi lệnh continue được gọi thì chương trình sẽ quay 
trở về đầu vòng lặp để bắt đầu lần lặp mới (có kiểm 
tra điều kiện lặp để xác định có lặp tiếp hay không). 
 Nếu có các lệnh còn lại (cùng trong vòng lặp) đặt sau 
continue sẽ không được thực hiện. 
 Lệnh continue thường dùng để bỏ qua một lần lặp 
nào đó nếu thỏa điều kiện. 
26 
3. PHƢƠNG THỨC 
Phương thức/Hàm con là một đoạn chương trình độc 
lập thực hiện trọn vẹn một công việc nhất định và trả về 
giá trị cho chương trình gọi nó. 
Mục đích sử dụng phương thức: 
 Khi có một công việc giống nhau cần thực hiện ở 
nhiều vị trí. 
 Khi cần chia một chương trình lớn phức tạp thành 
các đơn thể nhỏ (hàm con) để chương trình được 
trong sáng, dễ hiểu trong việc xử lý/quản lý. 
3.1. Khái niệm về phƣơng thức. 
27 
3.2. Cú pháp khai báo 
 TênPhươngThức([ds các tham số]); 
Trong đó: 
 Kiểu dữ liệu của phương thức (đầu ra), gồm 2 loại 
 void: Không trả về giá trị (các phương thức Nhập/Xuất) 
 float / int / long / string / kiểu cấu trúc /  : Trả về 1 giá trị 
kết quả có kiểu dữ liệu tương ứng. 
 Phạm vi 
 Xác định phạm vi hay cách phương thức được gọi 
 Các từ khoá phạm vi: private, public, static. 
 Tên phương thức : Đặt tên phản ánh đúng chức năng 
 DS các tham số (nếu có): đầu vào của phương thức 
3. PHƢƠNG THỨC 
28 
28 
3. PHƢƠNG THỨC 
3.3 Phƣơng thức không có giá trị trả về Void 
Cài đặt phƣơng thức 
static void TênPhươngThức([danh sách các tham số]) 
{ 
 Khai báo các biến cục bộ; 
 Khối lệnh; 
} 
Gọi phƣơng thức 
 TênPhươngThức(danh sách tên các đối số); 
Những phương thức loại này thường rơi vào những nhóm 
chức năng: Nhập/xuất dữ liệu , thống kê, sắp xếp, liệt kê. 
29 
29 
3. PHƢƠNG THỨC 
VD: Viết chương trình liệt kê các số nguyên tố nhỏ hơn n 
30 
30 
Cài đặt phƣơng thức: 
static TênPhươngThức([ds các tham số]) 
{ 
 kq; 
 Khai báo các biến cục bộ 
 Các câu lệnh / khối lệnh hay lời gọi đến phương thức khác. 
 return kq; 
} 
Gọi phƣơng thức: 
 Tên biến = TênPhươngThức (DS các đối số); 
3. PHƢƠNG THỨC 
3.4 Phƣơng thức có giá trị trả về 
Những phương thức này thường rơi vào các nhóm: Tính 
tổng, tích, trung bình, đếm, kiểm tra, tìm kiếm 
31 
31 
VD: Viết chương trình nhập số nguyên dương n và tính tổng 
Phân tích bài toán: 
 Input: n 
 Kiểu dữ liệu: số nguyên dương (uint). 
 Giá trị n không bị thay đổi trong quá trình tính tổng 
Output: Tổng S 
 Trả về giá trị của S. 
 S là tổng các số nguyên dương Kiểu trả về của hàm là uint 
(hoặc ulong). 
 Xác định TênPhươngThức: Dùng tính tổng S nên có thể đặt là 
static ulong TongS(uint n) 
0;321 nnSn 
3. PHƢƠNG THỨC 
3.4 Phƣơng thức có giá trị trả về 
32 
static ulong TongS(uint n) 
 { 
 ulong kq = 0; 
 for (uint i = 1; i <= n; i++) 
 kq + = i; 
 return kq; 
 } 
3. PHƢƠNG THỨC 
VD: Viết chương trình nhập số nguyên dương n và tính tổng 
0;321 nnSn 
33 
3.5.Truyền tham số 
33 
 Tham số làm kết quả đầu ra: out 
 Tham số vừa làm đầu vào và đầu ra: ref 
 Dùng từ khóa ref hoặc out trước kiểu dữ liệu của khai 
báo tham số khi cài đặt phương thức và trước tên đối 
số khi gọi phương thức. 
 Lưu ý khi dùng ref hoặc out: 
 Nếu sử dụng từ khóa ref thì gọi phương thức cũng 
dùng ref (hoặc ngược lại cho từ khóa out) 
 Dùng từ khóa ref bắt buộc phải khởi gán giá trị cho 
biến tham chiếu trước khi gọi phương thức (Nếu 
dùng out thì không cần thiết) 
3. PHƢƠNG THỨC 
34 
3.6. Lấy số ngẫu nhiên 
34 
Sử dụng lớp Random 
Các phƣơng thức : 
Phƣơng thức Ý nghĩa 
Next () Trả về số ngẫu nhiên từ 0 đến 2,147,483,646 
Next (giá trị tối đa) Trả về số ngẫu nhiên từ 0 đến giá trị tối đa -1 
Next (giá trị tối 
thiểu, giá trị tối đa) 
Trả về số ngẫu nhiên từ giá trị tối thiểu đến giá 
trị tối đa -1 
NextDouble () Trả về số thực (double) từ 0.0 đến nhỏ hơn 1.0 
3. PHƢƠNG THỨC 
35 
Ví dụ 
35 
int songaunhien; 
double sothuc; 
Random rd = new Random(); 
songaunhien = rd.Next(); 
// Số nguyên ngẫu nhiên trong phạm vi long int 
songaunhien = rd.Next(100); 
// Số nguyên ngẫu nhiên trong phạm vi 0-99 
songaunhien = rd.Next(10, 100); 
// Số nguyên ngẫu nhiên trong phạm vi 10-99 
sothuc = rd.NextDouble(); 
// Số thực ngẫu nhiên trong phạm vi 0.0-1.0 
3. PHƢƠNG THỨC 
36 
3.7. Lấy ngày giờ hệ thống 
36 
 Sử dụng lớp DateTime 
 Khai báo một đối tượng của lớp DateTime và sử dụng 
phương thức Now 
 DateTime d = DateTime.Now 
 Các thuộc tính của lớp DateTime 
Thuộc tính Ý nghĩa 
int intNg = d.Day; intNg chứa giá trị ngày 
int intTh = d.Month; intTh chứa giá trị tháng 
int intNm = d.Year; intNm chứa giá trị năm 
int intGio = d.Hour; intGio chứa giá trị giờ 
int intPhut = d.Minute; intPhut chứa giá trị phút 
int intGiay = d.Second; intGiay chứa giá trị giây 
int intMGiay = d.Millisecond; intMGiay chứa giá trị phần ngàn của giây 
3. PHƢƠNG THỨC 
37 
4.1. Khai báo Mảng 
37 
Mảng là một tập hợp các phần tử có cùng kiểu, được xác 
định vị trí trong tập hợp bằng chỉ mục. 
Khai báo mảng 1 chiều: 
 [] tên_mảng = new [kích thước]; 
 Ví dụ: Khai báo mảng số nguyên a kích thước 10 
 int[] a = new int [10]; 
Khai báo mảng 2 chiều: 
 [,] tên_mảng = new [dòng,cột]; 
 Ví dụ: Khai báo ma trận M số thực gồm 4 dòng, 5 cột 
 float [,] mt = new float [4,5]; 
4. MẢNG 
38 
38 
 Khởi tạo mảng 
 int [] a = new int[5] {4, 7, 1, 21, 9}; 
 hoặc: int [] a = {4, 7, 1, 21, 9}; 
 Truy xuất phần tử của mảng: 
 [vị trí]; 
 Vị trí được đánh số từ 0 đến số phần tử -1 
 Ví dụ: a[4] sẽ cho giá trị là 9 
4. MẢNG 
4.2. Mảng 1 chiều 
39 
 Khởi tạo ma trận 
 int[,] M = new int[3, 5] { {2, 4, 8, 9, 7}, {4, 8, 11, 10, 3}, 
{21, 7, 6, 5, 0}}; 
 hoặc 
 int[,] M = { {2, 4, 8, 9, 7}, {4, 8, 11, 10, 3}, 
{21, 7, 6, 5, 0}}; 
 Truy xuất phần tử của ma trận: 
 [vị trí dòng, vị trí cột]; 
 Vị trí được đánh số từ 0 
 Ví dụ: mt[1, 3] sẽ cho giá trị là 10 
4. MẢNG 
4.3. Mảng 2 chiều 
40 
40 
Khai báo chuỗi : string s; 
Ghép chuỗi: + 
 string a = "Xin"; string b = "chào"; 
 string c = a + " " + b; c = "Xin chào“ 
Hoặc 
 string.Concat(a, “ “, b); a = “Xin Chào” 
 Lấy chuỗi con: Substring() 
 string s="Lay chuoi con".Substring(4); 
 Lấy chuỗi con từ vị trí thứ 4 về sau: s = "chuoi con“ 
 string s = "Lay chuoi con".Substring(4, 5); 
 Lấy chuỗi con từ vị trí thứ 4 và có chiều dài là 5: s=chuoi 
5. CHUỖI 
41 
41 
Thay thế chuỗi con 
 Replace(chuỗi cần thay, chuỗi thay thế); 
 string s= "thay the chuoi.".Replace('t', 'T'); 
 s = "Thay The chuoi" 
 s = "thay the chuoi.".Replace("th", "TH"); 
 s = "THay THe chuoi" 
5. CHUỖI 
42 
42 
5. CHUỖI 
 Định dạng chuỗi 
 Format (định dạng, đối số cần định dạng); 
43 
43 
 Chiều dài chuỗi: Thuộc tính Length 
 string s = "Xin chào"; 
 int n = s.Length; // n = 8 
 Tách chuỗi con theo ký hiệu phân cách cho trƣớc 
 string.Split(danh sách ký tự phân cách) 
 Ví dụ: In ra màn hình các từ trên từng dòng, mỗi từ cách 
nhau bằng dấu phẩy (,) hoặc khoảng trắng 
 string s = "Hom nay, ngay 02 thang 03 nam 2010"; 
 foreach (string tu in s.Split(' ', ',')) 
 if (tu != "") 
 txtKetqua.Text=txtKetqua.Text + “\n” + tu ; 
5. CHUỖI 
44 
44 
Ví dụ: In ra từ có độ dài dài nhất trong chuỗi cho trước 
(các từ cách nhau khoảng trắng hoặc dấu chấm câu) 
string s = "Hom nay, ngay 02 thang 03 nam 2010"; 
string tumax = ""; 
foreach (string tu in s.Split(' ', ',', '.', '!', '?', ';')) 
 if (tu != "" && tu.Length > tumax.Length) 
 tumax = tu; 
txtKetqua.Text= "Tu dai nhat: " + tumax; 
5. CHUỖI 
45 

File đính kèm:

  • pdfbai_giang_lap_trinh_tren_moi_truong_windows_chuong_2_ngon_ng.pdf