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#
•
•
•
•
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ề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ể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ộ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
cặp dấu ngoặc nhọn { và }
3
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
− Cú pháp
if (<Điều kiệ >)
(<Điề kiện>)
{
Khối
A>
<Khối lệnh A
}
− Ý nghĩa
g
Nếu <Điều kiện> Đúng Thì
Thực hiện <Khối lệnh A>
• <Điều kiện>: là 1 biểu thức logic, trả về true (Đúng) hoặc
false (Sai)
6
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
− Sơ đồ hoạt động:
False
<Biểu
thức điều
kiện>
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
− 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
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 …
− Đặ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ọ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 đ
Trường hợp 1: được lê lớ (điểm t
lên lớp (điể trung bì h >= 5.0)
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
nhau,
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 …
− Cú pháp
if (<Điều kiệ )
( Điề kiện>)
{
<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>
Ngược l i <Điều kiệ S i
N
lại, Điề 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 …
− Sơ đồ hoạt động:
False
<Biểu
thức điều
kiện>
True
<Khối lệnh B>
<Khối lệnh A>
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
• Dạng 2: if … else …
f
− 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
Console.Write("Ở lại lớp“);
13
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
• Dạng 2: if … else …
f
− 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
• Dạng 2: if … else …
f
− 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ối.
hàng,
kế,
đầu
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
• Dạng 2: if … else …
f
− 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 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
• Dạng 2: if … else …
f
− 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ư sau
g
ệ
– 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
• Dạng 2: if … else …
f
− 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
• Dạng 2: if … else …
f
− 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
• Dạng 2: if … else …
f
− 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
ập ệ
<Tập lệnh n>
21
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ĩa
g
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
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 nhau
p
ợ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>)
<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 nhau
p
ợ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>
else if (<Điều kiện B>)
<Tập lệnh B>
IF Dạng 3
…
else
<Tập lệnh n>
}
24
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ạ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)
xl = "Yếu";
else if (dtb < 6.5)
xl = "T
l "Trung bình";
bì h"
25
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ạ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
• 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 ) /3
HK2 2
• 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
<6 5
Yếu: nếu ĐTB <5
27
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, 12
1
3
Số ngày =31
– Nếu tháng =4 hoặc tháng =6 hoặc 9, 11
Số ngày =30
30
– Nếu tháng =2
Nếu năm nhuần
Số ngày =29
29
Ngược lại
Số ngày =28
29
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á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
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à 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ệm
g ợ ạ (
)
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=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
g
g
p
Delta =0: Phương trình có nghiệm kép x1=x2=-b / 2a
Delta >0: Phương trình có 2 nghiệm:
32
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ú
pháp IF
• 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>
<Biểu_thức_2>
− <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false
34
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());
string k t
t i ket_qua = (dtb >= 5) ? "Đ
>
"Được lê lớ “ : "Ở lại lớ “
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
nhiều điều kiện
phức tạp khi có quá
− Do đó 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
switch (<biểu thức chọn lựa>)
{
case < iá t ị 1>
<giá trị 1>:
<Tập lệnh 1>
break;
case < iá t ị 2>
<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>
break;
}
38
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:
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ệ”);
break;
}
40
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 10:
case 12:
Console.WriteLine(“Tháng {0} năm {1} có 31 ngày”, thang, nam);
break;
42
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:
case 11
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
Console WriteLine(“Tháng {0} năm {1} có 29 ngày”, thang nam);
ngày thang,
else
Console.WriteLine(“Tháng {0} năm {1} có 28 ngày”, thang, nam);
break;
43
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 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
Console WriteLine(“Tháng {0} có 30 ngày , thang);
ngày”
else if (thang==2)
{
if ((
((nam % 400 0) || (
400==0) (nam % 4 0 && nam % 100 ! 0))
4==0
!=0))
Console.WriteLine(“Tháng {0} có 31 ngày”, thang);
else
ngay=28;
}
45
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
else
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 sau
p ụ 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
–1
–…
Không
Một
− Bài 3 Tì thứ ttrong tuần
3: Tìm
t ầ
• Nhập vào ngày, tháng, năm
• Cho biết ngày đó là t ứ mấy
C o b ết gày
à thứ ấy
trong tuần
48
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á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)
(Sau
(S đó có thể nâng cấp đ nhiều chữ số)
ó
â
ấ đọc hiề hữ ố)
• Kiểm tra số hợp lệ trước khi đọc
− 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
• Dùng thuộc tính DayOfWeek của biến kiểu DateTime để tìm
thứ trong tuần.
49
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ụng
Công d
− 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
− 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 q kiểm tra là :
ệ ặp,
quả
• 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âu lệnh while và chuyển đến câu lệnh
câ
hile à ch ển
câ
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ú pháp
há
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
• Ý nghĩa
hĩ
− Đ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
− continue: quay trở lên kiểm tra điều kiện của vòng lặp khi
cầ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:
False
Thoát khỏi
vòng lặp
<Điều kiện lặp>
True
<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;
while (i < 100)
hil
<=
{
tong += i; //
//Tăng i
tong =tong + i
tong
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)
{
tong += i; //
t
i
tong =tong + i;
t
t
i
// Tăng i lên 2 để có được những số lẻ
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ì số nguyên lớ nhất trong khoảng từ
d 3: Tìm ố
ê lớn hất t
kh ả
1 đến 100 chia hết cho n (0<n<=100)
int i=100,
i t i 100 max;
while (i >= 1)
{
if (i % n == 0)
{
max = i;
break; //thoát khỏi vòng lặp
}
i -= 1;
}
57
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á nguyên tắ cơ bản cần lưu ý khi làm việc với
Các
ê tắc
bả ầ l
là
iệ ớ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
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ê ttrong vòng lặ phải có ít nhất một câu lệ h tá độ
Bên
ò lặp hải ó
hất ột â 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ặp ẽ thay
lặ sẽ th đổi giá t ị (để tránh vòng lặ vô h )
iá trị
t á h ò lặp ô hạn)
58
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á nguyên tắ cơ bản cần lưu ý khi làm việc với
Các
ê tắc
bả ầ l
là
iệ ớ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
xét
sau
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à sai
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à
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ệnh hil khác.
lệ h while khá
59
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
− 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)
(so 1)
(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ì và xuất ra số đảo ngược của n (víí dụ: số 123 có số nghịch
Tìm à ất
ố đả
ủ
( d
ố
ó ố hị h
đả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ụng
Công d
− 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ị
{}
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
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
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ú pháp
há
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
• Ý nghĩa
hĩ
− Đ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 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:
<Khối lệnh lặp>
False
Thoát khỏi
vòng lặp
<Điều kiện lặp>
True
64
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;
do
{
tong += i; //
i ++;
tong =tong + i
tong
//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;
do
{
i ++;
;
tong += i;
}
while (i <= 100)
Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);
− Bạn có nhận xét gì khi đưa dòng lệnh i++ lên trước tong +=i ?
66
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ện lặp
kiệ lặ
− 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ự
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>)
{
<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ỏa điều kiệ lặp
thỏ điề kiện lặ
− 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:
<Gán giá trị ban đầu
cho biến chạy>
False
Thoát khỏi
vòng lặp
<Điều
kiện lặp>
True
<Khối lệnh lặp>
<Tăng/Giảm giá trị
biến đếm>
70
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
int tong =0;
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)
{
tong += i;
}
Hoặc
for(i=1; i<=100; i++)
{
if(i%2 != 0)
tong += i;
}
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ừ
1 đến 100 chia hết cho n (0<n<=100)
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
}
}
Console.WriteLine(“Số lớn nhất chia hết cho {0} là {1}”, n, max);
73
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
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 = "";
for (i = 1; i < n; i++)
{
if (n % i == 0)
kq = kq + " " + i;
}
Console.WriteLine(kq);
C
l W it Li (k )
75
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ú pháp
há
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ý
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
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
− Bài 1:Tạo bảng cửu chương
• Nhậ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
− Bài 2: Số nguyên tố
• Nhậ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#
•
•
•
•
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áp
pháp.
Lỗi thực thi (runtime error)
−
−
−
Xảy
Xả ra khi t thực thi chương trình.
ta th
h
tì h
Khó xác định hơn lỗi cú pháp.
Nguyên nhân: Mở một tập ti đ
N
ê hâ
ột tậ tin đang tồ t i chia cho 0
tồn tại, hi h 0,
truy xuất bảng không tồn tại trong CSDL, …
82
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ình
Được thể hiện dưới những hình thức hoặc những kết
q
quả không mong đợi.
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ự
độ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
ra của một tình trạng bất thường ( ngoại lệ - exception)
ủ
ột tì h t
th ờ (sự
i
ti )
trong khi chương trình thực thi.
− 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 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)
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.
Một lỗi xảy ra khi th c thi ch ơng trình gọi là một
ả
thực
chương
Exception.
87
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ỏ
ra,
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ụ:
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
ụ ậ
ự
p
p
cụ vận hành sẽ chỉ thực thi khối catch với kiểu exception phù
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át.
quá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
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.
90
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ụ:
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#
•
•
•
•
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
nhưng có chỉ số khá nhau.
h
ó hỉ ố khác h
− 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)
thước).
− Ví dụ: Mảng nguyên 5 phần tử
0
1
2
3
4
Chỉ số
10
20
15
6
8
Giá t ị
trị
94
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
•
Khai báo không
Kh i bá khô khởi tạo kích thước và giá trị
kí h h ớ à iá ị
<Kiểu dữ liệu>[ ] Tên_mảng;
Ví dụ: int[ ] a;
•
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
•
Khai báo ó
Kh i bá có khởi tạo kí h thước và khởi tạo giá trị ban
t kích th ớ à
t
iá t ị b
đầ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ểu
<Kiể dữ liệ >[ ] Tên_mảng = { iá t ị 1 giá t ị 2 giá t ị 3 ...};
liệu>[ Tê
ả
{giá trị 1, iá trị 2, iá 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 = {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 q và xử lý trên từng p tử của mảng
yệ qua
ý
g phần
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++)
{
chuoi_mang += d[i].ToString() + " ";
S
()
}
Console.WriteLine(chuoi_mang);
Console WriteLine(chuoi mang);
103
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
mang nguyen = new int[sopt];
for (int i = 0; i < mang_nguyen.Length; i++)
{
Console.Write(“Nhập
Console Write(“Nhập giá trị cho phần tử thứ {0}”, i + 1);
{0}”
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
− Ví dụ: Duyệt và xuất giá trị từng phần tử của mảng
mang_nguyen
mang 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
int i, max;
max = mang_nguyen[0]; // phần tử đầ tiê
[0]
hầ
đầ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ất
int i, min;
min = mang nguyen[0]; // phần tử đầu tiên
mang_nguyen[0];
for (i = 0; i < mang_nguyen.Length; i++)
{
// nếu gặp phần tử nhỏ hơn
if (min > mang_nguyen[i])
min = mang_nguyen[i];
i
[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ấp
int so_tim = int.Parse(Console.ReadLine());
// Khai báo và tạo giá trị mặc định: g sử không tìm thấy
ạ g
ị ặ ị
giả
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;
}
}
Console.WriteLine("Kết quả tìm kiếm: {0}“, kq);
109
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ầ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
} // for i
111
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ần
34
55
5
89
1
21
8
13
2
3
34 55
5
89
1
21
8
13
2
1
34 55
5
89
3
21
8
13
2
55 34 89
3
21
8
13
2
1
3
5
………………………………
1
2
3
5
8
13 21 34 55 89
112
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ắ xếp
Sắp ế
− Sắp tăng dần
Array.Sort(<Mảng>);
• Array: lớp được xây dựng sẵn
• Ví dụ
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ắ xếp
Sắ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ếm
Tìm kiế
− 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ề -1
thấy
1
Array.IndexOf(<Mảng>, <giá trị tìm>)
Ví dụ
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, g _tri);
y
(
g_ g y , gia );
if (vi_tri < 0)
Console.WriteLine("Không tìm thấy!", "Thông báo");
else
Console.WriteLine("Đã
Console WriteLine("Đã tìm thấy {0} tại vị trí {1}“, gia tri vi tri);
{1} gia_tri, vi_tri);
115
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ả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:
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
a[3] = 9;
117
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ê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
mảng A có 3 phần tử đ
ả
ó
hầ
được kh i bá như sau:
khai báo h
int[ ] A = {4, 2, 5};
Mảng A trước khi thêm:
4
2
5
Mảng A sau khi thêm:
4
9
2
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);
Mảng A sau khi Resize:
4
2
5
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];
[]
[
];
};
Mảng A sau khi dịch chuyển:
4
2
2
5
121
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;
Mảng A sau gán giá trị:
g
g g
ị
4
9
2
5
Phần tử mới thêm vào
122
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
ụ g
p
phương thức Resize của lớp Array để g
g
p
y
giảm kích
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:
int[ ] a = {4, 9, 2, 5}; //ban đầu mảng a có 4 phần tử
y
(ref , ); g
g
Array.Resize <int> ( a, 3); //giảm kích thước của mảng a
123
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 có 4 phần tử đ
ó
hầ
được kh i bá như sau:
khai báo h
int[ ] A = {4, 9, 2, 5};
Mảng A trước khi xóa:
4
9
2
Mảng A sau khi xóa:
4
2
5
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];
[
]
[ ];
};
Mảng A sau khi dịch chuyển:
4
2
5
5
126
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);
Mảng A sau khi Resize:
4
2
5
127
128. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
128