SlideShare uma empresa Scribd logo
1 de 128
Baixar para ler offline
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

128

Mais conteúdo relacionado

Mais procurados

Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL server
Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL serverBài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL server
Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL serverMasterCode.vn
 
Chuong5 KIỂM ĐỊNH PHI THAM SỐ
Chuong5 KIỂM ĐỊNH PHI THAM SỐChuong5 KIỂM ĐỊNH PHI THAM SỐ
Chuong5 KIỂM ĐỊNH PHI THAM SỐThắng Nguyễn
 
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐ
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐChuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐ
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐThắng Nguyễn
 
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverMasterCode.vn
 
C10 chuanhoacsdl
C10 chuanhoacsdlC10 chuanhoacsdl
C10 chuanhoacsdlVan Chau
 
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...vietlod.com
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hocladoga
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánVan Vo
 
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...nataliej4
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanHữu Duy Duy
 
Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Trần Huy
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanlethilien1993
 
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615clbinternet.info
 

Mais procurados (20)

Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL server
Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL serverBài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL server
Bài 4.3 - SQL (STRUCTURED QUERY LANGUAGE) - SQL server
 
Chuong5 KIỂM ĐỊNH PHI THAM SỐ
Chuong5 KIỂM ĐỊNH PHI THAM SỐChuong5 KIỂM ĐỊNH PHI THAM SỐ
Chuong5 KIỂM ĐỊNH PHI THAM SỐ
 
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐ
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐChuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐ
Chuong4 PHÂN TÍCH PHƯƠNG SAI MỘT YẾU TỐ
 
Luận văn: Hồi quy bội tuyến tính và Hồi quy phi tuyến, HOT, 9đ
Luận văn: Hồi quy bội tuyến tính và Hồi quy phi tuyến, HOT, 9đLuận văn: Hồi quy bội tuyến tính và Hồi quy phi tuyến, HOT, 9đ
Luận văn: Hồi quy bội tuyến tính và Hồi quy phi tuyến, HOT, 9đ
 
Sai số
Sai sốSai số
Sai số
 
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
 
Ontap
OntapOntap
Ontap
 
C10 chuanhoacsdl
C10 chuanhoacsdlC10 chuanhoacsdl
C10 chuanhoacsdl
 
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...
Phát hiện và khắc phục phương sai thay đổi (heteroskedasticity) trên Eview, S...
 
Chủ đề 4
Chủ đề 4Chủ đề 4
Chủ đề 4
 
Thuat toan tin hoc
Thuat toan tin hocThuat toan tin hoc
Thuat toan tin hoc
 
Bai giang ctrn
Bai giang ctrnBai giang ctrn
Bai giang ctrn
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...
GIÁO ÁN HỌC PHẦN: Nhập môn Lý thuyết xác suất và thống kê Toán LỚP DẠY: Đại h...
 
Kế toán Excel
Kế toán ExcelKế toán Excel
Kế toán Excel
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02Baigiang4 thuattoan-120116191825-phpapp02
Baigiang4 thuattoan-120116191825-phpapp02
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
CLB Internet - iShare: Ky nang Excel cho moi nguoi - 240615
 
Excel 2007 bai 2-1
Excel 2007   bai 2-1Excel 2007   bai 2-1
Excel 2007 bai 2-1
 

Semelhante a Bai3cautrucdieukhien 130622085309-phpapp02

8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel
8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel
8 tuần học Excel - Tuần 3 : Kết hợp hàm trong ExcelHuuCuong3
 
Huong danontapc
Huong danontapcHuong danontapc
Huong danontapcHồ Lợi
 
Phan2 chuong4 caclenhcautruc
Phan2 chuong4 caclenhcautrucPhan2 chuong4 caclenhcautruc
Phan2 chuong4 caclenhcautrucLy hai
 
Tổng quát về tích phân
Tổng quát về tích phân Tổng quát về tích phân
Tổng quát về tích phân Hoàng Hải Huy
 
KHAI PHÁ DỮ LIỆU - C5.pptx
KHAI PHÁ DỮ LIỆU - C5.pptxKHAI PHÁ DỮ LIỆU - C5.pptx
KHAI PHÁ DỮ LIỆU - C5.pptxPhanAnhNht
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uXephang Daihoc
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Hoàng Hà
 
Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Hoàng Hà
 
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngoc
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngocGiao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngoc
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngocNgoc Vu Thi Quynh
 
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy Thích
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy ThíchTổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy Thích
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy ThíchBồi dưỡng Toán lớp 6
 

Semelhante a Bai3cautrucdieukhien 130622085309-phpapp02 (13)

8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel
8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel
8 tuần học Excel - Tuần 3 : Kết hợp hàm trong Excel
 
Huong danontapc
Huong danontapcHuong danontapc
Huong danontapc
 
Phan2 chuong4 caclenhcautruc
Phan2 chuong4 caclenhcautrucPhan2 chuong4 caclenhcautruc
Phan2 chuong4 caclenhcautruc
 
Tổng quát về tích phân
Tổng quát về tích phân Tổng quát về tích phân
Tổng quát về tích phân
 
KHAI PHÁ DỮ LIỆU - C5.pptx
KHAI PHÁ DỮ LIỆU - C5.pptxKHAI PHÁ DỮ LIỆU - C5.pptx
KHAI PHÁ DỮ LIỆU - C5.pptx
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4u
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02
 
Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02Bai06interface 130622091935-phpapp02
Bai06interface 130622091935-phpapp02
 
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#
Bài 6 - Interface - Nền tảng lập trình ứng dụng với C#
 
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngoc
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngocGiao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngoc
Giao an tin hoc 11 - Chuong 3 - Bai 9 Cau truc re nhanh - vtq ngoc
 
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy Thích
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy ThíchTổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy Thích
Tổng hợp lý thuyết Toán lớp 8 cơ bản - Toán Thầy Thích
 
Toán lớp 5 - Chuyên đề về phân số
Toán lớp 5 - Chuyên đề về phân sốToán lớp 5 - Chuyên đề về phân số
Toán lớp 5 - Chuyên đề về phân số
 

Bai3cautrucdieukhien 130622085309-phpapp02

  • 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