Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Bài 3 - Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#
1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
1
2. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 3: Các cấu trúc điều khiển cơ
bản trong C#bản trong C#
• Tổng quan về cấu trúc điều khiển
• Các cấu trúc điều khiển
• Xử lý bẫy lỗi trong chương trìnhý y g g
• Mảng (Array)
2
3. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tổng quan về cấu trúc điều khiển
• Một chương trình không chỉ bao gồm các lệnh tuần
tự nối tiếp nhau. Trong quá trình chạy nó có thể rẽ
nhánh hay lặp lại một đoạn mã nào đó Để làm điềunhánh hay lặp lại một đoạn mã nào đó. Để làm điều
này chúng ta sử dụng các cấu trúc điều khiển.
• Cùng với việc giới thiệu các cấu trúc điều khiểnCùng với việc giới thiệu các cấu trúc điều khiển
chúng ta cũng sẽ phải biết tới một khái niệm mới:
khối lệnh, đó là một nhóm các lệnh được ngăn cách
bởi dấu chấm phẩy (;) nhưng được gộp trong mộtbởi dấu chấm phẩy (;) nhưng được gộp trong một
khối giới hạn bởi một cặp ngoặc nhọn: { và }.
• Nếu khối lệnh chỉ có 1 lệnh thì không cần sử dụng
3
Nếu khối lệnh chỉ có 1 lệnh thì không cần sử dụng
cặp dấu ngoặc nhọn { và }
4. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tổng quan về cấu trúc điều khiển
• Trong C# có 3 loại cấu trúc cơ bản:
ấ ầ− Cấu trúc tuần tự
− Cấu trúc quyết định chọn lựa rẽ nhánh
ấ− Cấu trúc lặp
4
5. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các cấu trúc điều khiển
• Cấu trúc rẽ nhánh
ề• Toán tử điều kiện ?
• Cấu trúc lựa chọn switch
• Cấu trúc lặp while, do, for, foreach
5
6. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 1: if• Dạng 1: if
−Cú pháp
if (<Điề kiệ >)if (<Điều kiện>)
{
<Khối lệnh A>Khối lệnh A
}
−Ý nghĩag
Nếu <Điều kiện> Đúng Thì
Thực hiện <Khối lệnh A>
6
• <Điều kiện>: là 1 biểu thức logic, trả về true (Đúng) hoặc
false (Sai)
7. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 1: if• Dạng 1: if
−Sơ đồ hoạt động:
<Biểu
thức điều
kiện>
False
True
<Khối lệnh A>
True
<Khối lệnh A>
7
8. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 1: if• Dạng 1: if
−Ví dụ: Kiểm tra điểm trung bình để xét kết quả đậu hay rớt
• Nếu điểm trung bình >=5 thì kết quả là đạt• Nếu điểm trung bình >=5 thì kết quả là đạt
8
9. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 2: if else• Dạng 2: if … else …
−Đặt vấn đề: Trường Y có nhu cầu xét kết quả học tập của
học sinh dựa vào điểm trung bình để quyết định xem họchọc sinh dựa vào điểm trung bình để quyết định xem học
sinh đó có được lên lớp hay không. Có 2 trường hợp có
thể xảy ra:
• T ờ h 1 đ lê lớ (điể t bì h 5 0)• Trường hợp 1: được lên lớp (điểm trung bình >= 5.0)
• Trường hợp 2: không được lên lớp (điểm trung bình <= 5.0)
−2 trường hợp của bài toán trên loại trừ nhau để giải quyết−2 trường hợp của bài toán trên loại trừ nhau, để giải quyết
bài toán này chúng ta dùng cấu trúc if … else …
9
10. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 2: if else• Dạng 2: if … else …
−Cú pháp
if ( Điề kiệ )if (<Điều kiện>)
{
<Khối lệnh A><Khối lệnh A>
}
else // khi điều kiện của if là false
{
<Khối lệnh B>
10
}
11. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 2: if … else …
−Ý nghĩa
Nếu <Điều kiện> Đúng Thì
Thực hiện <Khối lệnh A>
N l i Điề kiệ S iNgược lại, <Điều kiện> Sai
Thực hiện <Khối lệnh B>
• <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false
• Cấu trúc if có thể lồng nhau
11
12. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 2: if else• Dạng 2: if … else …
−Sơ đồ hoạt động:
<Biểu
thức điều
kiện>
False
True
<Khối lệnh A>
True
<Khối lệnh B> <Khối lệnh A><Khối lệnh B>
12
13. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Ví dụ 1: Xét kết quả học tập dựa vào điểm trung bình
Nếu DTB <5 thì Kết quả là Ở lại lớp
Ngược lại là Được lên lớp
double dtb = double.Parse(Console.ReadLine());
if (dtb >= 5)( )
Console.Write("Được lên lớp“);
else
13
Console.Write("Ở lại lớp“);
14. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Ví dụ 2: Xét kết quả học tập dựa vào điểm trung bình
Nếu DTB <5 thì Kết quả là Ở lại lớp và phải thi lại
Ngược lại là Được lên lớp và không phải thi lại
14
15. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Ví dụ 3: Lập trình cho phép nhập vào từ bàn phím thông tin
họ tên khách hàng mã số điện kế chỉ số đầu chỉ số cuốihọ tên khách hàng, mã số điện kế, chỉ số đầu, chỉ số cuối.
Sau đó xuất kết quả ra màn hình dạng sau:
• Họ tên khách hàng:
• Mã số điện kế:
• Chỉ số đầu:
ố ố• Chỉ số cuối:
• Số tiền phải trả:
15
16. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Quy ước tính toán:
• Nếu 0 < số Kw tiêu thụ <= 100 => đơn giá là 500 đồng/1kw
• Nếu 100 < số Kw tiêu thụ <= 250 => đơn giá là 600 đồng/1kw
• Nếu 250 < số Kw tiêu thụ <= 300 => đơn giá là 800 đồng/1kw• Nếu 250 < số Kw tiêu thụ <= 300 => đơn giá là 800 đồng/1kw
• Nếu 300 < số Kw tiêu thụ => đơn giá là 1000 đồng/1kw
16
17. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Các bước thực hiện:
• Bước 1: khởi động Visual Studio 2005 và tạo mới một project
dạng Console Application, đặt tên project là TinhTienDien
• Bước 2: trong hàm Main có thể khai báo các lệnh như saug ệ
– Khai báo các biến cần sử dụng
17
18. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Các bước thực hiện:
• Bước 2: (tt)
– Xử lý nhập dữ liệu từ bàn phím
18
19. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Các bước thực hiện:
• Bước 2: (tt)
– Xử lý tính tiền điện phải trả
19
20. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
f• Dạng 2: if … else …
−Các bước thực hiện:
• Bước 2: (tt)
– Xử lý xuất kết quả ra màn hình
• Bước 3: chạy trình ứng dụng nhập vào các thông tin cần thiết
ể ếvà kiểm tra kết quả.
20
21. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 3: if … else if …
−Cú pháp
if (<Điều kiện 1>)
<Tập lệnh 1>
else if (<Điều kiện 2>)
<Tập lệnh 2>
…
else
<Tập lệnh n>
21
ập ệ
22. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc rẽ nhánh - IF
• Dạng 3: if … else if …
−Ý nghĩag
Nếu <Điều kiện 1> Đúng Thì
Thực hiện <Tập lệnh 1>
Ngược lại nếu <Điều kiện 2> Đúng Thì
Thực hiện <Tập lệnh 2>
…
Ngược lại tất cả điều kiện trên
Thực hiện <Tập lệnh n>
22
Thực hiện <Tập lệnh n>
23. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Lưu ý
−Có thể phối hợp các dạng if với nhaup ợp ạ g
−Cấu trúc IF có thể lồng nhau
if (<Điều kiện 1>) IF Dạng 1
{ if (<Điều kiện A>)
<Tập lệnh A>
else if (<Điều kiện B>)else if (<Điều kiện B>)
<Tập lệnh B>
…
else
<Tập lệnh n>
}
23
}
24. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Lưu ý
−Có thể phối hợp các dạng If với nhaup ợp ạ g
−Cấu trúc IF có thể lồng nhau
if (<Điều kiện 1>)
{
if (<Điều kiện A>)
<Tập lệnh A><Tập lệnh A>
else if (<Điều kiện B>)
<Tập lệnh B>
IF Dạng 3
…
else
<Tập lệnh n>
24
<Tập lệnh n>
}
25. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Lưu ý
−Ví dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loạiVí dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loại
double dtb = double.Parse(Console.ReadLine());
string xl="";
if (dtb < 0 || dtb > 10)
Console.WriteLine("Điểm không hợp lệ !");
else
{
if (dtb < 5)if (dtb < 5)
xl = "Yếu";
else if (dtb < 6.5)
l "T bì h"
25
xl = "Trung bình";
26. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Lưu ý
−Ví dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loạiVí dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loại
else if (dtb < 8)
xl = "Khá";
else
xl = "Giỏi";
Console.WriteLine(“Xếp loại: {0}”, xl);
}
26
27. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập áp dụng IF
Bài 1: Kết quả học tập−Bài 1: Kết quả học tập
• Nhập vào điểm học kỳ 1 (HK1), học kỳ 2 (HK2)
• Tính và xuất ra điểm trung bình (ĐTB) = (HK1 + HK2*2 ) /3Tính và xuất ra điểm trung bình (ĐTB) (HK1 HK2 2 ) /3
• Dựa vào ĐTB xuất ra Kết quả và Xếp loại học lực với:
– Kết quả:
ếĐược lên lớp: nếu ĐTB >=5
Ở lại lớp : nếu ĐTB <5
– Xếp loại học lực:p
Giỏi: nếu ĐTB >=8
Khá: nếu 6.5 < ĐTB <8
Trung bình: nếu 5 < = ĐTB <6 5
27
Trung bình: nếu 5 < = ĐTB <6.5
Yếu: nếu ĐTB <5
28. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập áp dụng IF
−Bài 2: Tìm số ngày của tháng
• Nhập vào Tháng và Năm
• Tính và xuất ra số ngày có trong Tháng và Năm được nhập
28
29. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
ẫ• Hướng dẫn
−Bài 1: Xếp loại học tập
• Có thể sử dụng IF dạng 2 (lồng nhau) hoặc dạng 3
−Bài 2: Tìm số ngày của tháng
ể ế ề ề• Dùng toán tử || để kết hợp nhiều điều kiện trong IF
• Thuật toán
– Nếu tháng =1 hoặc tháng =3 hoặc 5, 7, 8, 10, 12Nếu tháng 1 hoặc tháng 3 hoặc 5, 7, 8, 10, 12
Số ngày =31
– Nếu tháng =4 hoặc tháng =6 hoặc 9, 11
Số ngày =30Số ngày 30
– Nếu tháng =2
Nếu năm nhuần
Số ngày =29
29
Số ngày 29
Ngược lại
Số ngày =28
30. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Hướng dẫn
−Bài 2: Tìm số ngày của thángBài 2: Tìm số ngày của tháng
• Năm nhuần là năm:
– Chia hết cho 400 (nam % 400 == 0)
Hoặc
– Chia hết cho 4 và không chia hết cho 100
(nam % 4 == 0 && Nam % 100 != 0)
• Ví dụ
– Năm 2000: năm nhuần vì năm chia hết cho 400
Năm 1900: không nhuần vì năm chia hết cho 4 và chia hết 100– Năm 1900: không nhuần vì năm chia hết cho 4 và chia hết 100
30
31. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập
−Bài 1: Giải phương trình bậc I: ax + b = 0
• Yêu cầu:
– Nhập 2 hệ số a và bNhập 2 hệ số a và b
– Tìm nghiệm x của phương trình
• Thuật toán
– Nếu a = 0:
Nếu b = 0: Phương trình có vô số nghiệm
Ngược lại (nếu b != 0): Phương trình vô nghiệmg ợ ạ ( ) g g ệ
– Ngược lại (nếu a != 0)
Nghiệm x = -b/a
31
32. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
−Bài 2: Giải phương trình bậc 2: ax2 + bx +c =0
ầ• Yêu cầu:
– Nhập 3 hệ số a, b và c
– Tìm nghiệm x của phương trình
• Thuật toán
– Nếu a=0:
Giải phương trình bậc nhất: bx + c=0Giải phương trình bậc nhất: bx + c=0
– Ngược lại (nếu a!=0)
Tính Delta = b2 - 4ac
Tìm nghiệm theo Delta
Delta <0: Phương trình vô nghiệm
Delta =0: Phương trình có nghiệm kép x1=x2=-b / 2a
32
g g p
Delta >0: Phương trình có 2 nghiệm:
33. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các cấu trúc điều khiển
• Cấu trúc rẽ nhánh
ề• Toán tử điều kiện ?
• Cấu trúc lựa chọn switch
• Cấu trúc lặp while, do, for, foreach
33
34. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Toán tử điều kiện - ?
• Toán tử ? hoạt động tương tự như dạng 2 của cú• Toán tử ? hoạt động tương tự như dạng 2 của cú
pháp IF
• Cú pháp• Cú pháp
Biến_kết_quả = <Điều kiện> ? <biểu_thức_1> : <biểu_thức_2>
Ý• Ý nghĩa
Nếu <Điều kiện> Đúng Thì
ề ểTrả về <Biểu_thức_1>
Ngược lại
Trả về <Biểu thức 2>
34
Trả về <Biểu_thức_2>
− <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false
35. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Toán tử điều kiện - ?
• Ví dụ: Xét kết quả học tập dựa vào điểm trung
bình
• Nếu DTB <5 thì Kết quả là Ở lại lớp
• Ngược lại là Được lên lớp
double dtb = double.Parse(Console.ReadLine());
t i k t (dtb > 5) ? "Đ lê lớ “ "Ở l i lớ “string ket_qua = (dtb >= 5) ? "Được lên lớp“ : "Ở lại lớp“;
Console.WriteLine(“Kết quả: {0}”, ket_qua);
35
36. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các cấu trúc điều khiển
• Cấu trúc rẽ nhánh
ề• Toán tử điều kiện ?
• Cấu trúc lựa chọn switch
• Cấu trúc lặp while, do, for, foreach
36
37. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lựa chọn – switch
• Công dụng
−Với cấu trúc IF, khi có nhiều trường hợp cần xét, ta sẽ
dùng toán tử || để nối các điều kiện phức tạp khi có quádùng toán tử || để nối các điều kiện phức tạp khi có quá
nhiều điều kiện
−Do đó có thể sử dụng cấu trúc chọn switch để thay thế choDo đó có thể sử dụng cấu trúc chọn switch để thay thế cho
cấu trúc IF trong trường hợp này
37
38. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lựa chọn – switch
• Cú pháp• Cú pháp
switch (<biểu thức chọn lựa>)
{
< iá t ị 1>case <giá trị 1>:
<Tập lệnh 1>
break;
< iá t ị 2>case <giá trị 2>:
<Tập lệnh 2>
break;
…
default: // các lệnh thực thi khi <biểu thức> không bằng bất kỳ
<giá trị> nào của case
<Tập lệnh n>
38
<Tập lệnh n>
break;
}
39. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lựa chọn – switch
Ý• Ý nghĩa
− case: Liệt kê các trường hợp cần xét
− Giá trị i: chứa các giá trị cần so sánh với <biểu thức>
− Tập lệnh x: được thực hiện khi biểu thức chọn lựa =
ốmột trong số các giá trị của <Tập giá trị i>
39
40. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: nhập vào thứ, cho biết tên thứ trong tuần
int thu = Int.Parse(Console.ReadLine());
switch (thu)
{
case 2:case 2:
Console.WriteLine(“Thứ Hai”);
break;
...
case 8:
Console.WriteLine(“Chủ Nhật”);
break;
default:
Console.WriteLine(“Thứ nhập vào không hợp lệ”);
40
break;
}
41. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lựa chọn – switch
• Chú ý:
− Nếu như các trường hợp cần xét có cùng một tập giá trị
thì lần lượt liệt kê các trường hợp, sau đó mới viết tập giá
trị
41
42. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: Tính số ngày trong tháng
int thang = int.Parse(Console.ReadLine());g ( ())
int nam = int.Parse(Console.ReadLine());
switch(thang)
{{
case 1:
case 3:
case 5:
case 7:
case 8:case 8:
case 10:
case 12:
42
Console.WriteLine(“Tháng {0} năm {1} có 31 ngày”, thang, nam);
break;
43. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: Tính số ngày trong tháng
case 4:
case 6:
case 9:
11case 11:
Console.WriteLine(“Tháng {0} năm {1} có 30 ngày”, thang, nam);
break;
case 2:
if ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0)
Console WriteLine(“Tháng {0} năm {1} có 29 ngày” thang nam);Console.WriteLine( Tháng {0} năm {1} có 29 ngày , thang, nam);
else
Console.WriteLine(“Tháng {0} năm {1} có 28 ngày”, thang, nam);
43
break;
44. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: Tính số ngày trong tháng
default:
Console.WriteLine(“Tháng nhập vào không hợp lệ”);
break;
}}
44
45. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: So sánh với cách viết dùng IF
int thang = int.Parse(Console.ReadLine());int thang int.Parse(Console.ReadLine());
int nam = int.Parse(Console.ReadLine());
if (thang==1 || thang==3 || thang==5 || thang==7 || thang==8 || thang==10 ||
thang==12)g )
Console.WriteLine(“Tháng {0} có 31 ngày”, thang);
else if (thang==4 || thang==6 || thang==9 || thang== 11)
Console WriteLine(“Tháng {0} có 30 ngày” thang);Console.WriteLine( Tháng {0} có 30 ngày , thang);
else if (thang==2)
{
if (( % 400 0) || ( % 4 0 && % 100 ! 0))if ((nam % 400==0) || (nam % 4==0 && nam % 100 !=0))
Console.WriteLine(“Tháng {0} có 31 ngày”, thang);
else
45
ngay=28;
}
46. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Ví dụ: So sánh với cách viết dùng IF
elseelse
Console.WriteLine(“Tháng nhập vào không hợp lệ”);
46
47. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
ố• Ví dụ: Tính số ngày trong tháng
47
48. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập áp dụng switch
Áp dụng switch cho các bài tập saup ụ g ập
−Bài 1: Viết lại bài Tìm số ngày của tháng sử dụng switch
−Bài 2: Đọc số bằng chữg
• Nhập 1 số nguyên (từ 0 đến 9)
• Đọc số bằng chữ
0 Không– 0 Không
– 1 Một
– …
Bài 3 Tì thứ t t ầ−Bài 3: Tìm thứ trong tuần
• Nhập vào ngày, tháng, năm
• Cho biết ngày đó là thứ mấy
48
C o b ết gày đó à t ứ ấy
trong tuần
49. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
• Hướng dẫn
−Bài 1: Tìm số ngày của thángBài 1: Tìm số ngày của tháng
• Dựa vào bài tập tính số ngày trong tháng đã viết bằng cấu trúc
IF để viết lại bằng cấu trúc switch
−Bài 2: Đọc số bằng chữ
• Đọc số dạng đơn giản (chỉ có 1 chữ số từ 0 9)
(S đó ó thể â ấ đ hiề hữ ố)(Sau đó có thể nâng cấp đọc nhiều chữ số)
• Kiểm tra số hợp lệ trước khi đọc
−Bài 3: Tìm thứ trong tuần−Bài 3: Tìm thứ trong tuần
• Dùng phương thức DateTime.Parse để tạo ra 1 ngày từ các
thành phần ngày, tháng, năm
49
• Dùng thuộc tính DayOfWeek của biến kiểu DateTime để tìm
thứ trong tuần.
50. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các cấu trúc điều khiển
• Cấu trúc rẽ nhánh
ề• Toán tử điều kiện ?
• Cấu trúc lựa chọn switch
• Cấu trúc lặp while, do, for, foreach
50
51. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Cô d• Công dụng
−Dùng để thực hiện lặp đi lặp lại công việc nào đó khi thoả
điều kiệnđiều kiện
−Bản chất của câu lệnh lặp while là trước tiên sẽ kiểm tra
biểu thức điều kiện lặp, nếu kết quả kiểm tra là :ệ ặp, q
• True : sẽ thực hiện một câu lệnh hay khối lệnh thuộc câu lệnh
while.
• False sẽ chấm dứt câ lệnh hile à ch ển đến câ lệnh• False : sẽ chấm dứt câu lệnh while và chuyển đến câu lệnh
tuần tự kế tiếp.
51
52. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Cú há• Cú pháp
while (<Điều kiện lặp>)
{
<Tập lệnh>
[continue;]
[break;]
}
52
53. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Ý hĩ• Ý nghĩa
− Điều kiện lặp: là biểu thức logic, trả về true/false
− Tập lệnh: chỉ có thể được thực hiện và lặp nếu và chỉ nếu
<Điều kiện lặp> = true
break: thoát khỏi vòng lặp− break: thoát khỏi vòng lặp
− continue: quay trở lên kiểm tra điều kiện của vòng lặp khi
cầncần
53
54. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Sơ đồ hoạt động:• Sơ đồ hoạt động:
<Điều kiện lặp>
False
Thoát khỏi
vòng lặp
<Khối lệnh lặp>
True
vòng lặp
<Khối lệnh lặp>
54
55. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
ổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100
int i=1, tong=0;
hil (i < 100)while (i <= 100)
{
tong += i; // tong =tong + itong i; // tong tong i
//Tăng i tác động đến điều kiện lặp
i ++;
}
Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);
55
56. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
ổ ố ế• Ví dụ 2: Tính tổng các số nguyên lẻ từ 1 đến 100
int i=1, tong=0;
while (i <=100)
{
t i // t t itong += i; // tong =tong + i;
// Tăng i lên 2 để có được những số lẻ
i += 2;i 2;
}
56
57. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Ví d 3 Tì ố ê lớ hất t kh ả từ• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ
1 đến 100 chia hết cho n (0<n<=100)
i t i 100int i=100, max;
while (i >= 1)
{ if (i % n == 0){ if (i % n 0)
{
max = i;
break; //thoát khỏi vòng lặp
}
57
i -= 1;
}
58. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Cá ê tắ bả ầ l ý khi là iệ ới• Các nguyên tắc cơ bản cần lưu ý khi làm việc với
cấu trúc while:
Khởi tạo giá trị ban đầu cho biến tham gia biểu thức điều−Khởi tạo giá trị ban đầu cho biến tham gia biểu thức điều
kiện của cấu trúc lặp while trước khi cấu trúc lặp while
được thực hiện.
−Nếu có nhiều hơn một câu lệnh bên trong vòng lặp while
phải đặt các lệnh đó trong dấu khối lệnh { }
Bê t ò lặ hải ó ít hất ột â lệ h tá độ−Bên trong vòng lặp phải có ít nhất một câu lệnh tác động
lên biến tham gia điều kiện lặp. Tác động này phải có
khuynh hướng sau hữu hạn số lần lặp biểu thức điều kiện
lặ ẽ th đổi iá t ị (để t á h ò lặ ô h )
58
lặp sẽ thay đổi giá trị (để tránh vòng lặp vô hạn)
59. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – while
• Cá ê tắ bả ầ l ý khi là iệ ới• Các nguyên tắc cơ bản cần lưu ý khi làm việc với
cấu trúc while:
Câu lệnh while “xét trước làm sau” do vậy các câu lệnh−Câu lệnh while xét trước làm sau do vậy các câu lệnh
bên trong nó có thể sẽ không thực hiện lần nào cả nếu
ngay lần đầu tiên kết quả của kiểm tra biểu thức điều kiện
là sailà sai.
−Câu lệnh while đặc biệt hữu dụng cho các dạng bài toán
mà số lần lặp của các câu lệnh bên trong vòng lặp làmà số lần lặp của các câu lệnh bên trong vòng lặp là
không thể xác định.
−Câu lệnh while có thể được sử dụng lồng trong một câu
lệ h hil khá
59
lệnh while khác.
60. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập áp dụng while
Áp dụng vòng lặp while cho các bài tập sauÁp dụng vòng lặp while cho các bài tập sau
−Bài 1: Tìm ước số chung lớn nhất
• Nhập vào số thứ nhất (so 1) và số thứ hai (so 2)Nhập vào số thứ nhất (so_1) và số thứ hai (so_2)
• Tìm ước số chung lớn nhất của so_1 và so_2 sau đó xuất kết
quả ra màn hình
ố−Bài 2: Tìm số nghịch đảo
• Nhập vào một số bất kỳ (n)
• Tì à ất ố đả ủ ( í d ố 123 ó ố hị h• Tìm và xuất ra số đảo ngược của n (ví dụ: số 123 có số nghịch
đảo là 321)
60
61. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
• Cô d• Công dụng
−Câu lệnh do thực thi một hoặc nhiều câu lệnh đặt trong
khối lệnh {} và chúng sẽ được lặp lại cho đến khi giá trịkhối lệnh {}, và chúng sẽ được lặp lại cho đến khi giá trị
xác định trong biểu thức điều kiện lặp là false.
−Bản chất của cấu trúc lặp do là trước tiên sẽ thực hiện mộtặp ự ệ ộ
câu lệnh hay khối lệnh trước, sau đó sẽ kiểm tra biểu thức
điều kiện lặp, nếu kết quả kiểm tra là :
• True : sẽ thực hiện lặp lại một câu lệnh hay khối lệnh thuộc• True : sẽ thực hiện lặp lại một câu lệnh hay khối lệnh thuộc
câu lệnh do.
• False : sẽ chấm dứt câu lệnh do và chuyển đến câu lệnh tuần
tự kế tiếp
61
tự kế tiếp .
62. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
• Cú há• Cú pháp
do
{
<Tập lệnh>
[continue;]
[break;]
}
while (<Điều kiện lặp>)
62
63. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
• Ý hĩ• Ý nghĩa
− Điều kiện lặp: là biểu thức logic, trả về true/false
− Tập lệnh: có thể chỉ được thực hiện một lần nếu <Điều
kiện lặp> = false hoặc được lặp lại nhiều lần nếu <Điều
kiện lặp> = trueệ ặp
− break: thoát khỏi vòng lặp
− continue: quay trở lên kiểm tra điều kiện của vòng lặp khicontinue: quay trở lên kiểm tra điều kiện của vòng lặp khi
cần.
63
64. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
• Sơ đồ hoạt động:• Sơ đồ hoạt động:
<Khối lệnh lặp>
<Điều kiện lặp>
False
TrueThoát khỏi
64
vòng lặp
65. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
ổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100
int i = 0, tong = 0;
ddo
{
tong += i; // tong =tong + itong i; // tong tong i
i ++; //Tăng i tác động đến điều kiện lặp
}
while (i <= 100)
Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);
65
66. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – do
ổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100
int i = 0, tong = 0;
ddo
{
i ++;i ;
tong += i;
}
while (i <= 100)
Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);
66
− Bạn có nhận xét gì khi đưa dòng lệnh i++ lên trước tong +=i ?
67. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Công dụng
−Dùng để thực hiện lặp đi lặp lại một xử lý khi thoả điều
kiệ lặkiện lặp
−Vòng lặp for thích hợp cho việc duyệt các mảng và cho
việc xử lý tuần tựviệc xử lý tuần tự.
−Bản chất của vòng lặp for là số lần lặp xác định trước khi
bắt đầu thực hiện.
67
68. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Cú pháp
for (<biến đếm> = <gt đầu>; <điều kiện lặp>; <tăng/giảm biến
đếm>)đếm>)
{
<Khối lệnh lặp>
[continue;]
[break;]
}
68
69. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
Ý• Ý nghĩa
−Khối lệnh lặp: chỉ được thực hiện nếu <biến đếm> còn
thỏ điề kiệ lặthỏa điều kiện lặp
−break: thoát khỏi vòng lặp khi cần
−continue: bỏ qua các lệnh còn lại (nếu có) và tiếp tục
lặp
69
70. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Sơ đồ hoạt động:• Sơ đồ hoạt động:
<Gán giá trị ban đầu<Gán giá trị ban đầu
cho biến chạy>
<Điều
kiện lặp>
False
Thoát khỏi
True
Thoát khỏi
vòng lặp
<Tăng/Giảm giá trị
70
<Khối lệnh lặp>
<Tăng/Giảm giá trị
biến đếm>
71. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100
int tong =0;
int i;int i;
for(i = 1; i<=100; i++)
{{
tong += i; tong =tong + i
}
Console.WriteLine(“Tổng các số nguyên 1=>100: {0}”, tong);
71
72. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Ví dụ 2: Tính tổng các số nguyên lẻ từ 1 đến 100
int i, tong;
tong =0;
for(i=1; i<=100; i=i+2) for(i=1; i<=100; i++)
{{
tong += i;
{
if(i%2 != 0)
tong += i;
}
Hoặc
}
Console.WriteLine(“Tổng các số nguyên lẻ từ 1=>100: {0}”, tong);
}
72
73. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ
1 đến 100 chia hết cho n (0<n<=100)
int i, max;int i, max;
int n = int.Parse(Console.ReadLine());
for(i = 100; i>=1; i--)
{ if( i%n == 0)
{ max = i;
//break; //thoát khỏi vòng lặp
}
}
73
}
Console.WriteLine(“Số lớn nhất chia hết cho {0} là {1}”, n, max);
74. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Ví dụ 4: Tính tổng các số nguyên chẵn từ 1 đến• Ví dụ 4: Tính tổng các số nguyên chẵn từ 1 đến
100
int tong=0;
for(int i = 1; i<=100;i++)
{
if(i%2 != 0)
continue;
tong+=i;
}
74
}
75. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – for
• Ví dụ 4: Cho số nguyên n. Liệt kê các ước số của
nó
int i;
int n = int.Parse(Console.ReadLine());
string kq = "";string kq = "";
for (i = 1; i < n; i++)
{ if (n % i == 0)
kq = kq + " " + i;
}
C l W it Li (k )
75
Console.WriteLine(kq);
76. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – foreach
• Cú há• Cú pháp
foreach (<kiểu dữ liệu> <phần tử> in <tập hợp>)
{{
<Tập lệnh>
}}
• Ý nghĩa
• Duyệt qua từng phần tử trong tập hợp để thực hiện xử lýDuyệt qua từng phần tử trong tập hợp để thực hiện xử lý
tương ứng
76
77. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Cấu trúc lặp – foreach
• Ví dụ: Duyệt mảng• Ví dụ: Duyệt mảng
77
78. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập
Áp dụng vòng lặp for cho các bài tập sauÁp dụng vòng lặp for cho các bài tập sau
−Bài 1:Tạo bảng cửu chương
• Nhập vào số cho biết cửu chương mấyNhập vào số cho biết cửu chương mấy
• Xuất bảng cửu chương tương ứng
78
79. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập
Áp dụng vòng lặp for cho các bài tập sauÁp dụng vòng lặp for cho các bài tập sau
−Bài 2: Số nguyên tố
• Nhập vào một số nguyên NNhập vào một số nguyên N
• Kiểm tra xem số N có phải là số nguyên tố hay không
79
80. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 3: Các cấu trúc điều khiển cơ
bản trong C#bản trong C#
• Tổng quan về cấu trúc điều khiển
• Các cấu trúc điều khiển
• Xử lý bẫy lỗi trong chương trìnhý y g g
• Mảng (Array)
80
81. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý bẫy lỗi trong chương trình
• Phân loại lỗi
ỗ• Xử lý lỗi
81
82. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Phân loại lỗi
• Lỗi cú pháp (syntax error)
− Xuất hiện khi ta viết code.ệ
− Được thông báo ngay khi viết sai cú pháp.
− Nguyên nhân: viết sai hoặc thiếu cú phápNguyên nhân: viết sai hoặc thiếu cú pháp.
• Lỗi thực thi (runtime error)
Xả khi t th thi h t ì h− Xảy ra khi ta thực thi chương trình.
− Khó xác định hơn lỗi cú pháp.
N ê hâ Mở ột tậ ti đ tồ t i hi h 0
82
− Nguyên nhân: Mở một tập tin đang tồn tại, chia cho 0,
truy xuất bảng không tồn tại trong CSDL, …
83. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Phân loại lỗi
• Lỗi luận lý
− Xảy ra khi ta thực thi chương trìnhXảy ra khi ta thực thi chương trình
− Được thể hiện dưới những hình thức hoặc những kết
quả không mong đợi.q g g
− Nguyên nhân: sai lầm trong thuật giải.
83
84. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dò và sửa lỗi thủ công
− Khi có lỗi phát sinh thì VS sẽ tự động thông báo lỗi và tựKhi có lỗi phát sinh thì VS sẽ tự động thông báo lỗi và tự
động nhảy đến dòng lệnh gây ra lỗi
− Cách sửa lỗi:
• Xem thông báo lỗi và dòng xảy ra lỗi
• Kiểm tra lại cú pháp của dòng lệnh gây ra lỗi
84
85. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Lệnh throw
−Câu lệnh throw thường được dùng để báo hiệu sự cố xảy
ủ ột tì h t bất th ờ ( i lệ ti )ra của một tình trạng bất thường (sự ngoại lệ - exception)
trong khi chương trình thực thi.
−Cú pháp:Cú pháp:
throw new <loại Exception>( [“Câu thông báo lỗi”]);
85
86. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Phân loại lỗi
• Lệnh throw
−Ví dụ:
86
87. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dùng try…catch để bẫy và xử lý lỗi
− Try … catch: cho phép thử thực hiện một khối lệnh xem
ỗ ế ẫ ỗcó bị lỗi hay không, nếu có sẽ bẫy và xử lý lỗi.
− Cấu trúc try … catch có ba khối:
ố ỗ• Khối try: chứa các câu lệnh có khả năng gây ra lỗi
• Khối catch: chứa các câu lệnh để bẫy và xử lý lỗi phát sinh
trên khối try.
• Khối finally: chứa các câu lệnh sẽ được thực hiện cuối cùng
(cho dù có lỗi xảy ra hay không)
Một lỗi ả ra khi th c thi ch ơng trình gọi là một
87
− Một lỗi xảy ra khi thực thi chương trình gọi là một
Exception.
88. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dùng try…catch để bẫy và xử lý lỗi
− Nếu không có vấn đề nào xảy ra công cụ vận hành sẽ bỏNếu không có vấn đề nào xảy ra, công cụ vận hành sẽ bỏ
qua khối catch.
− Một số nguồn tài nguyên cần phải được thu dọn, ví dụg g y p
như việc đóng một tập tin, phải luôn được thực thi ngay
cả khi một exception đã được throw. Để hoàn tất điều
này có thể sử dụng khối lệnh finally.y g y
− Một khối lệnh finally luôn được thực thi, không quan tâm
đến việc liệu một exception có đã được throw hay không.
88
89. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dùng try…catch để bẫy và xử lý lỗi
− Ví dụ:Ví dụ:
89
90. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dùng try…catch để bẫy và xử lý lỗi
− Lưu ý:
• Một khối try có thể dùng một hay nhiều khối catch
• Mỗi khối catch hiển thị một loại lỗi khác nhau. Lúc đó công
cụ vận hành sẽ chỉ thực thi khối catch với kiểu exception phù
ầ
ụ ậ ự p p
hợp đầu tiên
• Trường hợp có nhiều khối catch thì khối catch với các
exception cụ thể phải được liệt kê trước các exception tổng
quátquát.
• Các khai báo biến trong khối lệnh try sẽ không có hiệu lực
đối với các lệnh sử dụng nó nằm ở bên ngoài. Do vậy, nếu
bên trong khối lệnh finally có sử dụng các biến liên quan đến
90
bên trong khối lệnh finally có sử dụng các biến liên quan đến
các biến được khai báo và sử dụng trong khối lệnh try
phải đưa các khai báo biến này ra ngoài khối lệnh try.
91. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xử lý lỗi
• Dùng try…catch để bẫy và xử lý lỗi
− Ví dụ:Ví dụ:
91
92. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 3: Các cấu trúc điều khiển cơ
bản trong C#bản trong C#
• Tổng quan về cấu trúc điều khiển
• Các cấu trúc điều khiển
• Xử lý bẫy lỗi trong chương trìnhý y g g
• Mảng (Array)
92
93. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Mảng
• Khái niệm
• Khai báo và khởi tạo mảng
• Các thao tác trên mảng
93
94. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Mảng
• Giới thiệu
−Mảng là tập hợp các biến có cùng kiểu dữ liệu, cùng tên
h ó hỉ ố khá hnhưng có chỉ số khác nhau.
−Trong C#, mảng có chỉ số bắt đầu là 0 và luôn luôn là
mảng động (mảng có khả năng thay đổi kích thước)mảng động (mảng có khả năng thay đổi kích thước).
−Ví dụ: Mảng nguyên 5 phần tử
0 1 2 3 4
10 20 15 6 8
Chỉ sốChỉ số
Giá t ịGiá t ị
94
10 20 15 6 8 Giá trịGiá trị
95. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Mảng
• Khái niệm
• Khai báo và khởi tạo mảng
• Các thao tác trên mảng
95
96. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo mảng
Kh i bá khô khởi kí h h ớ à iá ị• Khai báo không khởi tạo kích thước và giá trị
<Kiểu dữ liệu>[ ] Tên_mảng;
Ví dụ: int[ ] a;Ví dụ: int[ ] a;
• Khai báo có khởi tạo kích thước nhưng không khởi tạo• Khai báo có khởi tạo kích thước nhưng không khởi tạo
giá trị ban đầu:
<Kiểu dữ liệu>[ ] Tên_mảng = new <Kiểu dữ liệu>[<số phần tử>];
Ví dụ: Khai báo mảng nguyên 10 phần tử
int[ ] a = new int[10];
96
97. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo mảng
• Kh i bá ó khởi t kí h th ớ à khởi t iá t ị b• Khai báo có khởi tạo kích thước và khởi tạo giá trị ban
đầu:
<Kiểu dữ liệu>[ ] Tên mảng = new <Kiểu dữ liệu>[<Số phần tử>]ệ [ ] _ g ệ [ p ]
{giá trị 1, giá trị 2, giá trị 3, ...};
hoặc:
<Kiể dữ liệ >[ ] Tê ả { iá t ị 1 iá t ị 2 iá t ị 3 }<Kiểu dữ liệu>[ ] Tên_mảng = {giá trị 1, giá trị 2, giá trị 3, ...};
Ví dụ: Khai báo và khởi tạo mảng nguyên có 5 phần tử
int[ ] a = new int[5]{2,10,4,8,5};int[ ] a new int[5]{2,10,4,8,5};
int[ ] a = {2, 10, 4, 8, 5};
97
98. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Mảng
• Khái niệm
• Khai báo và khởi tạo mảng
• Các thao tác trên mảng
98
99. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Truy xuất giá trị của một phần tử trong mảng
ế• Tìm kiếm trên mảng
• Sắp xếp mảng
• Thêm, bớt phần tử trong mảng
99
100. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Truy xuất 1 phần tử của mảng
Tên_mảng[<vị trí i>]
• Vị trí i: trong khoảng từ 0 Số phần tử -1
100
101. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
ấ ề• Lấy chiều dài của mảng
−Sử dụng thuộc tính Length của mảng
−Ví dụ:
int[ ] a = {2, 10, 4, 8, 5};
Console.WriteLine(a.Length.ToString());
// kết quả là 5
101
102. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Duyệt mảng
−Duyệt qua và xử lý trên từng phần tử của mảngyệ q ý g p g
for (int i = 0; i<Tên_mảng.Length; i++)
{{
// Xử lý trên phần tử Tên_mảng[i]
}}
102
103. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Duyệt mảng
−Ví dụ: Duyệt và xuất mảngụ yệ g
int[] d = {1, 2, 3, 4, 5};
string chuoi_mang = "";
for (int i = 0; i < d.Length; i++)
{
S ()chuoi_mang += d[i].ToString() + " ";
}
Console WriteLine(chuoi mang);
103
Console.WriteLine(chuoi_mang);
104. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Duyệt mảng
− Ví dụ: Duyệt và nhập giá trị cho từng phần tử của mảng mang_nguyen
int[ ] mang_nguyen;
mang nguyen = new int[sopt];mang_nguyen new int[sopt];
for (int i = 0; i < mang_nguyen.Length; i++)
{
Console Write(“Nhập giá trị cho phần tử thứ {0}” i + 1);Console.Write(“Nhập giá trị cho phần tử thứ {0}”, i + 1);
string n = Console.ReadLine();
if(n != "")
mang_nguyen[i] = int.Parse(n);
}
104
105. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Duyệt mảng• Duyệt mảng
−Ví dụ: Duyệt và xuất giá trị từng phần tử của mảng
mang nguyenmang_nguyen
string chuoi_mang = "";
for (int i = 0; i < mang_nguyen.Length; i++)
{
chuoi_mang += mang_nguyen[i] + " ";
}
return chuoi_mang;
105
106. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Truy xuất giá trị của một phần tử trong mảng
ế• Tìm kiếm trên mảng
• Sắp xếp mảng
• Thêm, bớt phần tử trong mảng
106
107. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tìm kiếm trên mảng
• Tìm phần tử lớn nhất / nhỏ nhất• Tìm phần tử lớn nhất / nhỏ nhất
int i, max;
[0] // hầ tử đầ tiêmax = mang_nguyen[0]; // phần tử đầu tiên
for (i = 0; i < mang_nguyen.Length; i++)
{
// nếu gặp phần tử lớn hơn
if (max < mang_nguyen[i])
max = mang_nguyen[i];
107
}
108. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tìm kiếm trên mảng
• Tìm phần tử lớn nhất / nhỏ nhấtTìm phần tử lớn nhất / nhỏ nhất
int i, min;
min = mang nguyen[0]; // phần tử đầu tiênmin mang_nguyen[0]; // phần tử đầu tiên
for (i = 0; i < mang_nguyen.Length; i++)
{
// nếu gặp phần tử nhỏ hơn
if (min > mang_nguyen[i])
i [i]min = mang_nguyen[i];
}
108
109. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tìm kiếm trên mảng
• Tìm phần tử có giá trị được cung cấpTìm phần tử có giá trị được cung cấp
int so_tim = int.Parse(Console.ReadLine());
// Khai báo và tạo giá trị mặc định: giả sử không tìm thấyạ g ị ặ ị g g y
string kq = "Không tìm thấy " + so_tim + " trong mảng";
for (int i = 0; i < mang_nguyen.Length; i++)
{{
if(mang_nguyen[i]==so_tim) // nếu tìm thấy
{
kq = "Tìm thấy " + so_tim + " trong mảng, tại ví trí " + (i+1);
break;
}
109
}
}
Console.WriteLine("Kết quả tìm kiếm: {0}“, kq);
110. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Truy xuất giá trị của một phần tử trong mảng
ế• Tìm kiếm trên mảng
• Sắp xếp mảng
• Thêm, bớt phần tử trong mảng
110
111. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sắp xếp trên mảng
• Sắp xếp các phần tử tăng dầnSắp xếp các phần tử tăng dần
for (int i = 0; i < mang_nguyen.Length - 1; i++)
{
for (int j = i + 1; j < mang_nguyen.Length; j++)
{
if (mang_nguyen[i] > mang_nguyen[j])
{ // nếu gặp phần tử nhỏ hơn thì đổi chỗ
int tam = mang_nguyen[i];
mang_nguyen[i] = mang_nguyen[j];
mang_nguyen[j] = tam;
} //if
} // for j
111
} j
} // for i
112. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sắp xếp trên mảng
• Sắp xếp các phần tử tăng dầnSắp xếp các phần tử tăng dần
1 83 2155 1334 2895
1 82155 133 289534
3 82155 131 289534
3 82155 131 289345 3 82155 131 289345
………………………………
112
13 342 213 551 8985
113. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức của mảng
• Sắ ế• Sắp xếp
−Sắp tăng dần
Array.Sort(<Mảng>);
• Array: lớp được xây dựng sẵn
• Ví d• Ví dụ
// Sắp xếp mang_nguyen tăng dần
Array.Sort(mang_nguyen);
113
114. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức của mảng
• Sắ ế• Sắp xếp
−Đảo ngược mảng
Array.Reverse(<Mảng>);
• Ví dụ
// Đảo ngược mang_nguyen
Array.Reverse(mang_nguyen);
114
115. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức của mảng
• Tì kiế• Tìm kiếm
−Tìm 1 giá trị trong mảng, sẽ trả về vị trí của phần tử nếu
tìm thấy nếu không sẽ trả về 1tìm thấy, nếu không sẽ trả về -1
Array.IndexOf(<Mảng>, <giá trị tìm>)
Ví dVí dụ
int gia_tri = 5; // Tìm vị trí của phần tử có giá trị là 5
int vi tri = Array.IndexOf(mang nguyen, gia tri);_ y ( g_ g y , g _ );
if (vi_tri < 0)
Console.WriteLine("Không tìm thấy!", "Thông báo");
else
Console WriteLine("Đã tìm thấy {0} tại vị trí {1}“ gia tri vi tri);
115
Console.WriteLine("Đã tìm thấy {0} tại vị trí {1} , gia_tri, vi_tri);
116. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các thao tác trên mảng
• Truy xuất giá trị của một phần tử trong mảng
ế• Tìm kiếm trên mảng
• Sắp xếp mảng
• Thêm, bớt phần tử trong mảng
116
117. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào cuối mảngThêm một phần tử vào cuối mảng
−Sử dụng phương thức Resize của lớp Array để tăng thêm
kích thước của mảng một phần tửg ộ p
−Gán giá trị cho phần tử cuối cùng là giá trị cần thêm
−Cú pháp:Cú pháp:
Array.Resize <Kiểu dữ liệu>(<Mảng tham chiếu>, <Số phần tử mới>)
−Ví dụ: thêm 1 phần tử có giá trị là 9 vào cuối mảng sau:
int[ ] a = {4, 2, 5}; //ban đầu mảng a có 3 phần tử
Array.Resize <int> (ref a, 4); //tăng kích thước của mảng a
117
a[3] = 9;
118. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào vị trí bất kỳ trong mảng
−Xác định vị trí k cần chèn thêm 1 phần tử
−Sử dụng phương thức Resize của lớp Array để tăng thêm
kích thước của mảng một phần tử
ể ầ ố ế−Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số k đến
phần tử kế cuối có chỉ số n-1 sang phải 1 phần tử
−Gán giá trị cho phần tử thứ k là giá trị cần thêmGán giá trị cho phần tử thứ k là giá trị cần thêm
118
119. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào vị trí bất kỳ trong mảng
−Ví dụ: thêm 1 phần tử có giá trị là 9 vào vị trí thứ 2 trong
ả A ó 3 hầ tử đ kh i bá hmảng A có 3 phần tử được khai báo như sau:
int[ ] A = {4, 2, 5};
4 2 5Mảng A trước khi thêm:
4 9 2Mảng A sau khi thêm: 5
119
120. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào vị trí bất kỳ trong mảng
−Các bước thực hiện:
• Bước 1: tăng kích thước của mảng A lên một phần tử
Array.Resize <int>(ref A, 4);
4 2 5Mảng A sau khi Resize: 0
120
121. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào vị trí bất kỳ trong mảng
−Các bước thực hiện:
• Bước 2: Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số
k (k=1) đến phần tử kế cuối có chỉ số n-1 (n=3) sang phải 1
phần tử
for(int i = A.Length - 1; i > 1; i--)
{
A[i] = A[i – 1];[ ] [ ];
};
121
4 2 2Mảng A sau khi dịch chuyển: 5
122. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Thêm một phần tử vào vị trí bất kỳ trong mảng
−Các bước thực hiện:
• Bước 3: Gán giá trị cho phần tử thứ k (k=1) là giá trị cần thêm
A[1] = 9;
4 9 2Mảng A sau gán giá trị: 5g g g ị
122
Phần tử mới thêm vào
123. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Xóa một phần tử ở cuối mảng
−Sử dụng phương thức Resize của lớp Array để giảm kíchụ g p g p y g
thước của mảng xuống một phần tử
−Cú pháp:
Array.Resize <Kiểu dữ liệu>(<Mảng tham chiếu>, <Số phần tử mới>)
−Ví dụ: xóa 1 phần tử cuối cùng có giá trị là 5 trong mảng
sau:sau:
int[ ] a = {4, 9, 2, 5}; //ban đầu mảng a có 4 phần tử
Array.Resize <int> (ref a, 3); //giảm kích thước của mảng a
123
y ( , ); g g
124. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Xóa một phần tử tại vị trí bất kỳ trong mảng
−Xác định vị trí k của phần tử cần xóa
−Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số k+1
đến phần tử cuối cùng có chỉ số n sang trái 1 phần tử
ể−Sử dụng phương thức Resize của lớp Array để giảm kích
thước của mảng một phần tử
124
125. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Xóa một phần tử vào vị trí bất kỳ trong mảng
−Ví dụ: xóa phần tử có giá trị là 9 tại vị trí thứ 2 trong mảng
A ó 4 hầ tử đ kh i bá hA có 4 phần tử được khai báo như sau:
int[ ] A = {4, 9, 2, 5};
4 9 2Mảng A trước khi xóa: 5
4 2Mảng A sau khi xóa: 5
125
126. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Xóa một phần tử tại vị trí bất kỳ trong mảng
−Các bước thực hiện:
• Bước 1: Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số
k+1 (k=1) đến phần tử cuối cùng có chỉ số n (n=3) sang trái 1
phần tử
for(int i = 2; i < A.Length; i++)
{
A[i - 1] = A[i];[ ] [ ];
};
126
4 2 5Mảng A sau khi dịch chuyển: 5
127. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thêm, bớt phần tử trong mảng
• Xóa một phần tử tại vị trí bất kỳ trong mảng
−Các bước thực hiện:
• Bước 2: giảm kích thước của mảng A xuống một phần tử
Array.Resize <int>(ref A, 3);
4 2 5Mảng A sau khi Resize:
127
128. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
128