Giáo trình Lập trình C# 2008 cơ bản

Tóm tắt Giáo trình Lập trình C# 2008 cơ bản: ... case 6: Console.WriteLine("Thu bay") ; break; default: Console.WriteLine("Khong phai la thu trong tuan") ; break; } } } VII. Cấu trúc lặp 1. Lệnh lặp while a. Cú pháp: while (Điều_Kiện) b. Ví dụ 2.4: using System; class UsingWhile { static void Main() { // Khai...ns.OKCancel, MessageBoxIcon.Question); if ( traloi == DialogResult.OK) Application.Exit(); Ví dụ 3.3: * Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 3.3 gồm: Lưu hành nội bộ Trang 22 - Form1: được thiết kế như sau - Form2: được thiết kế như sau (txtUser, txtPas... (MẢNG) I. Mảng 1 chiều 1. Định nghĩa - Mảng là một tập hợp có thứ tự của những đối tượng (objects), tất cả các đối tượng này có cùng một kiểu dữ liệu. - Mảng trong ngôn ngữ C# sử dụng những phương thức và các thuộc tính. Thể hiện của mảng trong C# có thể truy cập những phương thức và cá...

pdf48 trang | Chia sẻ: havih72 | Lượt xem: 322 | Lượt tải: 1download
Nội dung tài liệu Giáo trình Lập trình C# 2008 cơ bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 hành nội bộ Trang 34 
Chương 3: ARRAY - STRING - EXCEPTION 
Bài 5: ARRAY (MẢNG) 
I. Mảng 1 chiều 
1. Định nghĩa 
- Mảng là một tập hợp có thứ tự của những đối tượng (objects), tất cả các đối tượng này 
có cùng một kiểu dữ liệu. 
- Mảng trong ngôn ngữ C# sử dụng những phương thức và các thuộc tính. Thể hiện của 
mảng trong C# có thể truy cập những phương thức và các thuộc tính của System.Array. 
- Một số các thuộc tính và phương thức của lớp System.Array: 
Thành viên Mô tả 
Sort() Phương thức sắp xếp giá trị tăng dần trong mảng một chiều 
Reverse() Phương thức sắp xếp giá trị giảm dần trong mảng một chiều 
Length Thuộc tính chiều dài của mảng 
SetValue() Phương thức thiết lập giá trị cho một thành phần xác định trong mảng 
2. Khai báo mảng: 
[] ; 
Ví dụ: 
int[] myIntArray ; 
 Tạo thể hiện của mảng: sử dụng từ khóa new 
Ví dụ: 
myIntArray = new int[5] ; 
3. Khởi tạo thành phần của mảng 
- Tạo thể hiện của mảng đồng thời với khởi tạo các giá trị: 
+ Cách 1: 
int[] myIntArray = new int[5] {2, 4, 6, 8, 10}; 
+ Cách 2: 
int[] myIntArray = {2, 4, 6, 8, 10}; 
- Các khai báo trên sẽ thiết lập bên trong bộ nhớ một mảng chứa 5 số nguyên. 
Chú ý: Không thể thiết lập lại kích thước cho mảng. 
4. Giá trị mặc định: 
- Khi chúng ta tạo một mảng có kiểu dữ liệu giá trị, mỗi thành phần sẽ chứa giá trị mặc 
định của kiểu dữ liệu. 
Ví dụ: 
Với khai báo int myIntArray = new int[5] ; thì: 
- Mỗi thành phần của mảng được thiết lập giá trị là 0 (giá trị mặc định của số nguyên). 
- Những kiểu tham chiếu trong một mảng không được khởi tạo giá trị mặc định, chúng 
được khởi tạo giá trị null. 
5. Truy cập các thành phần trong mảng: 
- Để truy cập vào thành phần trong mảng ta sử dụng toán tử chỉ mục ([]). 
- Chỉ mục của thành phần đầu tiên trong mảng luôn luôn là 0. 
- Thuộc tính Length của mảng cho biết số đối tượng trong một mảng. 
Lưu hành nội bộ Trang 35 
6. Duyệt mảng 1 chiều: 
for (int i=0; i < myIntArray.Length; i++) { 
xử lý myIntArraya[i]; 
} 
Có thể thay for bằng foreach như sau 
foreach (int phantu in a){ 
xử lý myIntArraya[i]; 
} 
Ví dụ 5.1: (Mảng 5 số nguyên từ 1 đến 5) 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 5.1 như sau: 
* Yêu cầu 
- Thiết kế form như mẫu (lblKQ, btnIn, btnXoa, btnDung). 
- Khai báo mảng 1 chiều (a) gồm 5 số nguyên từ 1 đến 5. 
- Nhắp vào button In mảng (btnIn) sẽ in ra label (lblKQ) các giá trị trong mảng. 
- Nhắp vào button Xóa (btnXoa) sẽ xóa trống nội dung của label (lblKQ). 
- Nhắp vào button Dừng sẽ dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Khai báo mảng: qua code, thêm đoạn code để được kết quả như sau: 
public partial class Form1 : Form 
{ 
// Khai bao mang 1 chieu gom 5 so nguyen tu 1 den 5 
int[] a = { 1, 2, 3, 4, 5 }; 
} 
- Nhắp đúp vào button In mảng, thêm đoạn code sau: 
// Xuat cac phan tu trong mang ra man hinh 
this.lblKQ.Text="Các phần tử trong mảng là:\n\r"; 
for (int i=0; i < a.Length; i++) { 
this.lblKQ.Text += a[i]+" "; 
} 
Có thể thay for bằng foreach như sau 
foreach (int phantu in a){ 
this.lblKQ.Text += a[i]+" "; 
} 
- Nhắp đúp vào button Xóa, thêm đoạn code sau: 
this.lblKQ.Text = ""; 
- Nhắp đúp vào button Dừng, thêm đoạn code sau: 
Application.Exit(); 
Lưu hành nội bộ Trang 36 
Ví dụ 5.2: (Mảng 5 số nguyên) 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 5.2 như sau: 
* Yêu cầu 
- Thiết kế form: btnNhap, txtNhap, btnTang, btnGiam, lblKQ, btnIn, btnXoa, btnDung. 
- Khai báo mảng 1 chiều (a) chứa 5 số nguyên, số phần tử hiện có (sopt) là 0. 
- Nhập số vào TextBox txtNhap, nhắp vào button Nhập 1 phần tử mảng (btnNhap) cho 
phép đưa giá trị trong TextBox txtNhap vào mảng. Khi mảng đã đủ 5 số nguyên thì phải 
thông báo “Mảng đã đầy” và không cho nhập nữa. 
- Nhắp vào button Sắp tăng (btnTang) sẽ sắp xếp mảng theo thứ tự tăng dần. 
- Nhắp vào button Sắp giảm (btnGiam) sẽ sắp xếp mảng theo thứ tự giảm dần. 
- Nhắp vào button In mảng (btnIn) sẽ in ra label (lblKQ) các giá trị trong mảng. 
- Nhắp vào button Xóa (btnXoa) sẽ xóa trống nội dung của label (lblKQ) đồng thời khai 
báo lại số phần tử hiện có (sopt) của mảng là 0. 
- Nhắp vào button Dừng sẽ dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Khai báo mảng như sau: 
public partial class Form1 : Form 
{ 
// Khai bao mang 1 chieu gom 5 so nguyen 
int[] a = new int[5]; 
// Khai bao so phan tu hien co cua mang 
int sopt = 0; 
 } 
- Nhắp đúp vào button Nhập 1 phần tử mảng, thêm đoạn code sau: 
// Nhap mot phan tu cho mang 
if (sopt == 5) 
MessageBox.Show("Mảng đã đầy!"); 
else 
{ 
a[sopt] = Convert.ToInt32(this.txtNhap.Text); 
sopt++; 
this.txtNhap.ResetText(); 
this.txtNhap.Focus(); 
} 
- Nhắp đúp vào button Sắp tăng, thêm đoạn code sau: 
// Sap xep mang giam 
if (sopt == 0) 
this.lblKQ.Text = "Mảng rỗng!"; 
Lưu hành nội bộ Trang 37 
else 
Array.Sort(a, 0, sopt); 
this.lblKQ.Text = "Đã sắp xếp mảng tăng dần!"; 
- Nhắp đúp vào button Sắp giảm, thêm đoạn code sau: 
// Sap xep mang giam 
if (sopt == 0) 
this.lblKQ.Text = "Mảng rỗng!"; 
else 
Array.Reverse(a, 0, sopt); 
this.lblKQ.Text = "Đã sắp xếp mảng giảm dần!"; 
- Nhắp đúp vào button Xóa, thêm đoạn code sau: 
this.lblKQ.Text = ""; 
sopt = 0; 
this.txtNhap.Focus(); 
- Nhắp đúp vào button In mảng, thêm đoạn code sau: 
// Xuat cac phan tu trong mang ra man hinh 
if (sopt==0) 
this.lblKQ.Text = "Mảng rỗng!"; 
else 
{ 
this.lblKQ.Text="Các phần tử trong mảng là:\n\r"; 
for (int i = 0; i < sopt; i++) 
this.lblKQ.Text += a[i] + " "; 
} 
- Nhắp đúp vào button Dừng, thêm đoạn code sau: 
Application.Exit(); 
II. Mảng nhiều chiều 
1. Định nghĩa 
- Mảng đa chiều là mảng mà mỗi thành phần là một mảng khác. 
- Ngôn ngữ C# hỗ trợ hai kiểu mảng đa chiều là: 
+ Mảng đa chiều cùng kích thước. 
+ Mảng đa chiều khác kích thước. 
- Trong phạm vi bài học này, ta chỉ khảo sát mảng 2 chiều mà thôi. 
2. Khai báo mảng 2 chiều 
[ , ] 
Ví dụ: 
int[ , ] myRectangularArray ; 
3. Khởi tạo thành phần của mảng 
int[] myRectangularArray = new int[sodong , socot] ; 
4. Duyệt mảng 2 chiều 
for (int i = 0; i < sodong; i++) 
{ 
for (int j = 0; j < socot; j++) 
{ 
Lưu hành nội bộ Trang 38 
Xử lý myRectangularArray[i,j]; 
} 
} 
Ví dụ 5.3: 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 5.3 như sau: 
* Yêu cầu 
- Thiết kế form như mẫu (lblKQ, btnIn, btnXoa, btnDung, btnNhap, btnSapXep). 
- Khai báo mảng 2 chiều gồm 4 dòng, 3 cột chứa các số nguyên. 
- Nhắp vào button Nhập mảng để nhập các phần tử cho mảng (có giá trị = dòng - cột). 
- Nhắp vào button Sắp Xếp sẽ sắp xếp mảng tăng dần theo từng hàng. 
- Nhắp vào button In mảng (btnIn) sẽ in ra label (lblKQ) các giá trị trong mảng. 
- Nhắp vào button Xóa (btnXoa) sẽ xóa trống nội dung của label (lblKQ). 
- Nhắp vào button Dừng sẽ dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Khai báo mảng: qua code, thêm đoạn code để được kết quả như sau: 
public partial class Form1 : Form 
{ // Khai bao 4 dong 3 cot 
const int sodong = 4; 
const int socot = 3; 
// Khai bao mang 2 chieu gom 4 dong, 3 cot chua 12 so 
nguyen 
int[,] Array2 = new int[sodong,socot]; 
} 
- Nhắp đúp vào button Nhập mảng, thêm đoạn code sau: 
// Nhap cac phan tu cho mang 
for (int i=0; i < sodong; i++) 
for (int j=0; j< socot; j++) 
Array2[i,j]= i-j; 
- Nhắp đúp vào button Sắp xếp, thêm đoạn code sau: 
// Sap xep mang 
int[] t = new int[sodong * socot]; 
for (int i = 0; i < sodong; i++) 
{ 
for (int j = 0; j < socot; j++) 
t[j] = Array2[i, j]; 
Array.Sort(t, 0, socot); 
Lưu hành nội bộ Trang 39 
for (int j = 0; j < socot; j++) 
Array2[i, j]=t[j]; 
} 
- Nhắp đúp vào button In mảng, thêm đoạn code sau: 
// Xuat cac phan tu trong mang ra man hinh 
this.lblKQ.Text = "Các phần tử trong mảng là:\n\r"; 
for (int i = 0; i < sodong; i++) 
{ 
for (int j = 0; j < socot; j++) 
{ 
this.lblKQ.Text += Array2[i,j] + " "; 
} 
this.lblKQ.Text += "\n\r"; 
} 
- Nhắp đúp vào button Xóa, thêm đoạn code sau: 
this.lblKQ.Text = ""; 
- Nhắp đúp vào button Dừng, thêm đoạn code sau: 
Application.Exit(); 
Bài tập 
Khởi tạo một ứng dụng Windows Forms Application: 
1. Khai báo 1 mảng nguyên 1 chiều tối đa 10 phần tử. Viết chương trình: 
- Nhập vào giá trị cho 1 phần tử trong mảng. 
- In giá trị của các phần tử trong mảng. 
- In giá trị lớn nhất, giá trị nhỏ nhất của các phần tử trong mảng. 
- In tổng số các giá trị, trung bình cộng các giá trị của các phần tử trong mảng. 
2. Khai báo 1 mảng nguyên 2 chiều 4 dòng, 5 cột. Viết chương trình: 
- Nhập giá trị cho các phần tử trong mảng (giá trị = số thứ tự dòng + số thứ tự cột). 
- In giá trị các phần tử trong mảng. 
- In giá trị lớn nhất, giá trị nhỏ nhất của các phần tử trong mảng. 
- In tổng số các giá trị, trung bình cộng các giá trị của các phần tử trong mảng. 
-- oOo -- 
Lưu hành nội bộ Trang 40 
Bài 6: (tiếp theo) STRING (CHUỖI) – EXCEPTION (NGOẠI LỆ) 
III. String (Chuỗi) 
1. Tạo một chuỗi 
a. Chuỗi hằng 
string TenChuoi = "Chuỗi" ; 
Ví dụ: 
string thongbao = "Đây là một câu thông báo." ; 
Chú ý: Ta có 2 khai báo chuỗi sau là như nhau 
string chuoi = "Dong mot \n Dong hai"; 
string chuoi = @"Dong mot 
Dong hai"; 
b. Chuỗi dùng phương thức ToString 
Ví dụ: 
int myInt = 9 ; 
string intString = myInt.ToString(); 
2. Thao tác trên chuỗi 
Lớp string cung cấp rất nhiều các phương thức để so sánh, tìm kiếm, thay thế ; các 
phương thức này được trình bày trong bảng sau: 
Phương thức Ý nghĩa 
Compare() So sánh hai chuỗi (Chuỗi 1 ? Chuỗi 2) = (-1 ; 0 ; 1) tương ứng () 
Concat() Nối chuỗi 
EndsWidth() Xem chuỗi có kết thúc bằng một nhóm ký tự xác định hay không. 
IndexOf() Chỉ ra vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi lớn. 
Insert() Trả về một chuỗi mới đã được chèn thêm. 
LastIndexOf() Chỉ ra vị trí xuất hiện cuối cùng của một chuỗi con trong chuỗi lớn. 
Length Chiều dài của chuỗi. 
Remove() Xoá đi một chuỗi con. 
Replace() Thay thế chuỗi cũ bằng chuỗi mới. 
Split() Trả về chuỗi con được phân định bởi ký tự xác định. 
StartsWidth() Xem chuỗi có bắt đầu bằng một nhóm ký tự xác định hay không. 
Substring() Lấy chuỗi con. 
ToLower() Trả về bản sao của chuỗi ở kiểu chữ thường. 
ToUpper() Trả về bản sao của chuỗi ở kiểu chữ IN HOA. 
3. Ví dụ 6.1 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 6.1 như sau: 
* Yêu cầu 
- Thiết kế form gồm: lblTieuDe, lbl1, txtS1, lbl2, txtS2, lbl3, lblKQ, và các button (xem 
hình). 
- Nhắp vào button Compare: so sánh 2 chuỗi txtS1 và txtS2 (có phân biệt chữ HOA và 
chữ thường), kết quả xuất trong lblKQ. 
- Nhắp vào button COMPARE: so sánh 2 chuỗi txtS1 và txtS2 (không phân biệt chữ 
HOA và chữ thường), kết quả xuất trong lblKQ. 
- Nhắp vào button Concat, nối 2 chuỗi txtS1 và txtS2, kết quả xuất trong lblKQ. 
Lưu hành nội bộ Trang 41 
- Nhắp button IndexOf, cho biết vị trí xuất hiện của chuỗi txtS2 trong chuỗi txtS1. Nếu 
có txtS2 trong txtS1 thì thay thế txtS2 (trong txtS1) bằng chuỗi "CHỖ NÀY". Xuất kết quả 
trong lblKQ. 
- Nhắp vào button Insert, chèn chuỗi txtS2 vào sau từ đầu tiên của chuỗi txtS1; và chèn 
chuỗi txtS2 vào trước từ sau cùng của chuỗi txtS1. Xuất kết quả trong lblKQ. 
- Nhắp vào button Substring, cho biết vị trí xuất hiện của chuỗi "TRÌNH XỬ LÝ" trong 
lblTieuDe. Nếu có thì xóa chuỗi ra khỏi lblTieuDe. Xuất kết quả trong lblKQ. 
- Nhắp button Xóa thì xóa trống: TextBox txtS1, TextBox txtS2, Label lblKQ đồng thời 
đưa con trỏ vào TextBox txtS1. 
- Nhắp button Dừng thì dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Nhắp đúp vào button Compare, thêm vào đoạn code: 
string s1=this.txtS1.Text; 
string s2=this.txtS2.Text; 
// So sánh hai chuỗi với nhau có phân biệt chữ thường và 
chữ hoa 
int kq = string.Compare(s1,s2); 
this.lblKQ.Text = "txtS1 "; 
if (kq == -1) 
this.lblKQ.Text += "<"; 
else if (kq == 0) 
this.lblKQ.Text += "="; 
else 
this.lblKQ.Text += ">"; 
this.lblKQ.Text += " txtS2"; 
- Nhắp đúp vào button COMPARE, thêm vào đoạn code: 
Lưu hành nội bộ Trang 42 
string s1=this.txtS1.Text; 
string s2=this.txtS2.Text; 
// So sánh hai chuỗi với nhau không phân biệt chữ thường 
và chữ hoa 
int kq = string.Compare(s1,s2, true); 
this.lblKQ.Text = "txtS1 "; 
if (kq == -1) 
this.lblKQ.Text += "<"; 
else if (kq == 0) 
this.lblKQ.Text += "="; 
else 
this.lblKQ.Text += ">"; 
this.lblKQ.Text += " txtS2"; 
- Nhắp đúp vào button Concat, thêm vào đoạn code: 
string s1 = this.txtS1.Text; 
string s2 = this.txtS2.Text; 
// Nối chuỗi 
this.lblKQ.Text = string.Concat(s1,s2); 
- Nhắp đúp vào button IndexOf, thêm vào đoạn code: 
string s1 = this.txtS1.Text; 
string s2 = this.txtS2.Text; 
// Chỉ ra vị trí xuất hiện của chuỗi 2 trong chuỗi 1 
if (s1.IndexOf(s2) >= 0) 
{ 
this.lblKQ.Text = "txtS2 xuất hiện trong txtS1 tại 
vị trí "; 
this.lblKQ.Text += s1.IndexOf(s2); 
this.lblKQ.Text += ".!"; 
// Thay thế chuỗi s="CHỖ NÀY" vào vị trí chuỗi 2 
trong chuỗi 1 
string s = "CHỖ NÀY"; 
this.lblKQ.Text += "\n\rThay thế txtS2 trong txtS1 
bằng chuỗi CHỖ NÀY,"; 
this.lblKQ.Text+= "\n\rKết quả:"+s1.Replace(s2, s); 
} 
else this.lblKQ.Text = "txtS2 không xuất hiện trong 
txtS1!"; 
- Nhắp đúp vào button Insert, thêm vào đoạn code: 
string s1 = this.txtS1.Text; 
string s2 = this.txtS2.Text; 
// Chèn chuỗi 2 vào sau từ đầu tiên của chuỗi 1 
this.lblKQ.Text = "Chèn txtS2 vào sau từ đầu tiên của 
txtS1:\n\r"; 
this.lblKQ.Text += s1.Insert(s1.IndexOf(" "), s2); 
// Chèn chuỗi 2 vào trước từ cuối cùng của chuỗi 1 
this.lblKQ.Text += "\n\rChèn txtS2 vào trước từ cuối cùng 
của txtS1:\n\r "; 
this.lblKQ.Text += s1.Insert(s1.LastIndexOf(" "), s2); 
- Nhắp đúp vào button Substring, thêm vào đoạn code: 
Lưu hành nội bộ Trang 43 
// Chỉ ra vị trí xuất hiện của s="TRÌNH XỬ LÝ" trong 
lblTieuDe 
string s="TRÌNH XỬ LÝ"; 
int ix; 
ix = this.lblTieuDe.Text.IndexOf(s); 
// Trích s từ lblTieuDe và in vào lblKQ 
if (ix >= 0) 
{ 
this.lblKQ.Text = this.lblTieuDe.Text.Substring(ix, 
s.Length); 
this.lblKQ.Text += " xuất hiện trong tiêu đề tại vị 
trí "; 
this.lblKQ.Text += ix; 
// Xóa s ra khỏi lblTieuDe 
this.lblKQ.Text += "\n\rTiêu đề sau khi xóa " + s; 
this.lblKQ.Text += "\n\rKết quả là: "; 
this.lblKQ.Text += this.lblTieuDe.Text.Remove(ix, 
s.Length); 
} 
else this.lblKQ.Text = "Không xuất hiện trong chuỗi 1!"; 
- Nhắp đúp vào button Xóa, thêm vào đoạn code: 
this.txtS1.ResetText(); 
this.txtS2.ResetText(); 
this.lblKQ.Text = ""; 
this.txtS1.Focus(); 
- Nhắp đúp vào button Dừng, thêm vào đoạn code: 
Application.Exit(); 
4. Ví dụ 6.2 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 6.2 như sau: 
* Yêu cầu 
- Thiết kế form gồm: lbl1, txtHoTen, lbl2, lblKQ, và các button (xem hình). 
Lưu hành nội bộ Trang 44 
- Nhắp vào button CountOfWord: đếm số từ trong chuỗi txtHoTen, kết quả xuất trong 
lblKQ. 
- Nhắp vào button Proper: đổi thành chữ Hoa Đầu Từ cho chuỗi txtHoTen, kết quả xuất 
trong lblKQ. 
- Nhắp vào button Left, lấy ra từ bên trái của chuỗi txtHoTen, kết quả xuất trong lblKQ. 
- Nhắp vào button Right, lấy ra từ bên phải của chuỗi txtHoTen, kết quả xuất trong 
lblKQ. 
- Nhắp button Xóa thì xóa trống: TextBox txtS1, TextBox txtS2, Label lblKQ đồng thời 
đưa con trỏ vào TextBox txtS1. 
- Nhắp button Dừng thì dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Nhắp đúp vào button CountOfWord, thêm vào đoạn code: 
// Đếm số từ trong chuỗi 
// Tạo ra hằng ký tự khoảng trắng 
const char Space =' '; 
// Gán giá trị cho chuỗi 
string s = hoten.Trim(); 
// Thực hiện việc chia chuỗi vào mảng --> Đếm từ = độ dài 
mảng 
int cWord = s.Split(Space).Length;) 
// Gởi kết quả trả về 
return cWord; 
** Tham khảo thêm đoạn code sau: 
// Đếm số từ trong chuỗi txtHoTen 
int count=0; 
string s=this.txtHoTen.Text.Trim(); 
for (int i = 0; i < s.Length-1; i++) 
if ((s.Substring(i, 1)==" ") && (s.Substring(i + 1, 
1)!=" ")) 
count++; 
if (s.Length > 0) count++; 
this.lblKQ.Text = "Số từ là: " + count; 
- Nhắp đúp vào button Proper, thêm vào đoạn code: 
// Đổi thành chữ Hoa Đầu Từ trong chuỗi txtHoTen 
string s = this.txtHoTen.Text.Trim(); 
if (s.Length == 0) 
this.lblKQ.Text = "Chuỗi rỗng!"; 
else 
{ 
this.lblKQ.Text = "Chuỗi kết quả là: "; 
this.lblKQ.Text += s.Substring(0,1).ToUpper(); 
for (int i = 1; i < s.Length; i++) 
{ 
if ((s[i-1].ToString()==" " 
)&&(s[i].ToString()!=" ")) 
{ 
string ss = s[i].ToString(); 
this.lblKQ.Text += ss.ToUpper(); 
Lưu hành nội bộ Trang 45 
} 
else this.lblKQ.Text += s[i].ToString(); 
} 
} 
- Nhắp đúp vào button Left, thêm vào đoạn code: 
// Từ đầu tiên của chuỗi txtHoTen 
string s = this.txtHoTen.Text.Trim(); 
if (s.Length == 0) 
this.lblKQ.Text = "Chuỗi rỗng!"; 
else 
{ 
this.lblKQ.Text = "Từ đầu tiên của chuỗi là: "; 
this.lblKQ.Text += s.Substring(0, s.IndexOf(" ")); 
} 
- Nhắp đúp vào button Right, thêm vào đoạn code: 
// Từ cuối cùng của chuỗi txtHoTen 
string s = this.txtHoTen.Text.Trim(); 
if (s.Length == 0) 
this.lblKQ.Text = "Chuỗi rỗng!"; 
else 
{ 
this.lblKQ.Text = "Từ đầu tiên của chuỗi là: "; 
this.lblKQ.Text += s.Substring(s.LastIndexOf(" ")+1, 
s.Length-s.LastIndexOf(" ") - 1); 
} 
- Nhắp đúp vào button Xóa, thêm vào đoạn code: 
this.txtHoTen.ResetText(); 
this.lblKQ.Text = ""; 
this.txtHoTen.Focus(); 
- Nhắp đúp vào button Dừng, thêm vào đoạn code: 
Application.Exit(); 
IV. Exception (Ngoại lệ) 
1. Khái niệm 
- Exception có thể được hiểu là bắt giữ lỗi với những đoạn mã hợp lệ để không tổn hại 
đến chương trình. 
- Lỗi có thể do nguyên nhân từ chính người sử dụng; hoặc có thể do những vấn đề không 
mong đợi khác như: thiếu bộ nhớ, thiếu tài nguyên hệ thống . 
- Một trình xử lý ngoại lệ là một khối lệnh chương trình được thiết kế xử lý các ngoại lệ 
mà chương trình phát sinh. 
- Xử lý ngoại lệ được thực thi trong trong câu lệnh catch. 
- Các câu lệnh có khả năng xảy ra ngoại lệ thực thi trong câu lệnh try. 
* Một cách lý tưởng, nếu một ngoại lệ được bắt và được xử lý thì chương trình có thể sửa 
chữa được vấn đề bị lỗi và tiếp tục thực hiện hoạt động. Thậm chí nếu chương trình không 
tiếp tục, bằng việc bắt giữ ngoại lệ chúng ta cũng có cơ hội để in ra những thông điệp có ý 
nghĩa và kết thúc chương trình một cách rõ ràng. 
2. Ví dụ 6.3 
* Khởi tạo một ứng dụng Windows Forms Application, lưu với tên là Vi Du 6.3 như sau: 
Lưu hành nội bộ Trang 46 
* Yêu cầu 
- Thiết kế form gồm: lbl1, txtSo1, lbl2, txtSo2, lbl3, txtKQ và các button (xem hình). 
- Nhập số vào 2 TextBox txtSo1 và TxtSo2. 
- Nhắp vào button Chia: 
+ Nếu txtSo1, txtSo2 không phải là số; hoặc nhập vào txtSo2 là 0 thì báo lỗi: “Lỗi rồi!”. 
+ Nếu txtSo1, txtSo2 là số thì xuất kết quả là txtSo1 / txtSo2 vào TextBox txtKQ. 
- Nhắp button Xóa thì xóa trống: TextBox txtS1, TextBox txtS2, Label lblKQ đồng thời 
đưa con trỏ vào TextBox txtS1. 
- Nhắp buuton Dừng thì dừng chương trình. 
* Hướng dẫn 
- Thiết kế form như yêu cầu. 
- Nhắp đúp vào button Chia, thêm vào đoạn code: 
// Xóa trống TextBox txtKQ 
txtKQ.ResetText(); 
// Đoạn code có xảy ra ngoại lệ khi thực hiện 
try 
{ 
int so1 = int.Parse(this.txtSo1.Text); 
int so2 = int.Parse(this.txtSo2.Text); 
this.txtKQ.Text += (float)so1 / so2; 
} 
// Xử lý ngoại lệ 
catch (Exception ex) 
{ 
this.txtKQ.Text = "Lỗi rồi!"; 
} 
Bài tập 
1. Viết chương trình nhập vào một chuỗi họ và tên. In ra: 
- Độ dài và số từ của chuỗi họ tên. 
- Chuỗi họ và tên dưới dạng chữ thường. 
- Chuỗi họ và tên dưới dạng chữ IN HOA. 
- Chuỗi họ và tên dưới dạng Hoa Đầu Từ. 
- Chuỗi họ và tên đã được loại bỏ các khoảng trắng thừa (đầu chuỗi, cuối chuỗi, bên 
trong chuỗi). 
2. Viết chương trình giải phương trình bậc 1: bx + c = 0 
Lưu ý: có xử lý trường hợp nhập vào b, c không phải là số. 
-- oOo -- 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_c_2008_co_ban.pdf