128
TRƯỜNG ĐẠI HC KHOA HC TNHIÊN TP.HCM TRUNG TÂM TIN HC 1

Bài 3 - Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

Embed Size (px)

DESCRIPTION

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 trongchương trình Mảng (Array)

Citation preview

Page 1: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

1

Page 2: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 3: Các cấu trúc điều khiển cơ bản trong C#bản trong C#

• Tổng quan về cấu trúc điều khiển• Các cấu trúc điều khiển• Xử lý bẫy lỗi trong chương trìnhý y g g• Mảng (Array)

2

Page 3: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Tổng quan về cấu trúc điều khiển

• Một chương trình không chỉ bao gồm các lệnh tuần tự nối tiếp nhau. Trong quá trình chạy nó có thể rẽ nhánh hay lặp lại một đoạn mã nào đó Để làm điềunhánh hay lặp lại một đoạn mã nào đó. Để làm điều này chúng ta sử dụng các cấu trúc điều khiển.

• Cùng với việc giới thiệu các cấu trúc điều khiểnCùng với việc giới thiệu các cấu trúc điều khiển chúng ta cũng sẽ phải biết tới một khái niệm mới: khối lệnh, đó là một nhóm các lệnh được ngăn cách bởi dấu chấm phẩy (;) nhưng được gộp trong mộtbởi dấu chấm phẩy (;) nhưng được gộp trong một khối giới hạn bởi một cặp ngoặc nhọn: { và }.

• Nếu khối lệnh chỉ có 1 lệnh thì không cần sử dụng

3

Nếu khối lệnh chỉ có 1 lệnh thì không cần sử dụng cặp dấu ngoặc nhọn { và }

Page 4: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 5: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 6: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 1: if• Dạng 1: if −Cú pháp

if (<Điề kiệ >)if (<Điều kiện>){

<Khối lệnh A>Khối lệnh A}

−Ý nghĩagNếu <Điều kiện> Đúng Thì

Thực hiện <Khối lệnh A>

6

• <Điều kiện>: là 1 biểu thức logic, trả về true (Đúng) hoặcfalse (Sai)

Page 7: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 1: if• Dạng 1: if −Sơ đồ hoạt động:

<Biểu thức điều

kiện>

False

True

<Khối lệnh A>

True

<Khối lệnh A>

7

Page 8: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 1: if• Dạng 1: if−Ví dụ: Kiểm tra điểm trung bình để xét kết quả đậu hay rớt

• Nếu điểm trung bình >=5 thì kết quả là đạt• Nếu điểm trung bình >=5 thì kết quả là đạt

8

Page 9: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 2: if else• Dạng 2: if … else …−Đặt vấn đề: Trường Y có nhu cầu xét kết quả học tập của

học sinh dựa vào điểm trung bình để quyết định xem họchọc sinh dựa vào điểm trung bình để quyết định xem học sinh đó có được lên lớp hay không. Có 2 trường hợp có thể xảy ra:• T ờ h 1 đ lê lớ (điể t bì h 5 0)• Trường hợp 1: được lên lớp (điểm trung bình >= 5.0)• Trường hợp 2: không được lên lớp (điểm trung bình <= 5.0)

−2 trường hợp của bài toán trên loại trừ nhau để giải quyết−2 trường hợp của bài toán trên loại trừ nhau, để giải quyết bài toán này chúng ta dùng cấu trúc if … else …

9

Page 10: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 2: if else• Dạng 2: if … else …−Cú pháp

if ( Điề kiệ )if (<Điều kiện>){

<Khối lệnh A><Khối lệnh A>}else // khi điều kiện của if là false

{<Khối lệnh B>

10

}

Page 11: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 2: if … else …−Ý nghĩa

Nếu <Điều kiện> Đúng ThìThực hiện <Khối lệnh A>

N l i Điề kiệ S iNgược lại, <Điều kiện> Sai Thực hiện <Khối lệnh B>

• <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false• Cấu trúc if có thể lồng nhau

11

Page 12: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF• Dạng 2: if else• Dạng 2: if … else …−Sơ đồ hoạt động:

<Biểu thức điều

kiện>

False

True

<Khối lệnh A>

True

<Khối lệnh B> <Khối lệnh A><Khối lệnh B>

12

Page 13: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Ví dụ 1: Xét kết quả học tập dựa vào điểm trung bìnhNếu DTB <5 thì Kết quả là Ở lại lớpNgược lại là Được lên lớp

double dtb = double.Parse(Console.ReadLine());

if (dtb >= 5)( )

Console.Write("Được lên lớp“);

else

13

Console.Write("Ở lại lớp“);

Page 14: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Ví dụ 2: Xét kết quả học tập dựa vào điểm trung bìnhNếu DTB <5 thì Kết quả là Ở lại lớp và phải thi lạiNgược lại là Được lên lớp và không phải thi lại

14

Page 15: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Ví dụ 3: Lập trình cho phép nhập vào từ bàn phím thông tin họ tên khách hàng mã số điện kế chỉ số đầu chỉ số cuốihọ tên khách hàng, mã số điện kế, chỉ số đầu, chỉ số cuối. Sau đó xuất kết quả ra màn hình dạng sau:• Họ tên khách hàng:• Mã số điện kế:• Chỉ số đầu:

ố ố• Chỉ số cuối:• Số tiền phải trả:

15

Page 16: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Quy ước tính toán:• Nếu 0 < số Kw tiêu thụ <= 100 => đơn giá là 500 đồng/1kw• Nếu 100 < số Kw tiêu thụ <= 250 => đơn giá là 600 đồng/1kw• Nếu 250 < số Kw tiêu thụ <= 300 => đơn giá là 800 đồng/1kw• Nếu 250 < số Kw tiêu thụ <= 300 => đơn giá là 800 đồng/1kw• Nếu 300 < số Kw tiêu thụ => đơn giá là 1000 đồng/1kw

16

Page 17: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Các bước thực hiện:• Bước 1: khởi động Visual Studio 2005 và tạo mới một project

dạng Console Application, đặt tên project là TinhTienDien• Bước 2: trong hàm Main có thể khai báo các lệnh như saug ệ

– Khai báo các biến cần sử dụng

17

Page 18: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Các bước thực hiện:• Bước 2: (tt)

– Xử lý nhập dữ liệu từ bàn phím

18

Page 19: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Các bước thực hiện:• Bước 2: (tt)

– Xử lý tính tiền điện phải trả

19

Page 20: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 - IFf• Dạng 2: if … else …

−Các bước thực hiện:• Bước 2: (tt)

– Xử lý xuất kết quả ra màn hình

• Bước 3: chạy trình ứng dụng nhập vào các thông tin cần thiết ể ếvà kiểm tra kết quả.

20

Page 21: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF

• Dạng 3: if … else if …−Cú pháp

if (<Điều kiện 1>)<Tập lệnh 1>

else if (<Điều kiện 2>)<Tập lệnh 2>…

else<Tập lệnh n>

21

ập ệ

Page 22: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc rẽ nhánh - IF

• Dạng 3: if … else if …−Ý nghĩag

Nếu <Điều kiện 1> Đúng ThìThực hiện <Tập lệnh 1>

Ngược lại nếu <Điều kiện 2> Đúng ThìThực hiện <Tập lệnh 2>

…Ngược lại tất cả điều kiện trên

Thực hiện <Tập lệnh n>

22

Thực hiện <Tập lệnh n>

Page 23: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Lưu ý−Có thể phối hợp các dạng if với nhaup ợp ạ g−Cấu trúc IF có thể lồng nhau

if (<Điều kiện 1>) IF Dạng 1{ if (<Điều kiện A>)

<Tập lệnh A>else if (<Điều kiện B>)else if (<Điều kiện B>)

<Tập lệnh B>…else

<Tập lệnh n>}

23

}

Page 24: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Lưu ý−Có thể phối hợp các dạng If với nhaup ợp ạ g−Cấu trúc IF có thể lồng nhau

if (<Điều kiện 1>){

if (<Điều kiện A>)<Tập lệnh A><Tập lệnh A>

else if (<Điều kiện B>)<Tập lệnh B> IF Dạng 3

…else

<Tập lệnh n>

24

<Tập lệnh n>}

Page 25: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Lưu ý−Ví dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loạiVí dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loại

double dtb = double.Parse(Console.ReadLine());string xl="";if (dtb < 0 || dtb > 10)

Console.WriteLine("Điểm không hợp lệ !");else{

if (dtb < 5)if (dtb < 5)xl = "Yếu";

else if (dtb < 6.5)l "T bì h"

25

xl = "Trung bình";

Page 26: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Lưu ý−Ví dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loạiVí dụ: Kiểm tra điểm nhập hợp lệ trước khi xếp loại

else if (dtb < 8)xl = "Khá";

elsexl = "Giỏi";

Console.WriteLine(“Xếp loại: {0}”, xl);}

26

Page 27: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 IFBài 1: Kết quả học tập−Bài 1: Kết quả học tập• Nhập vào điểm học kỳ 1 (HK1), học kỳ 2 (HK2)• Tính và xuất ra điểm trung bình (ĐTB) = (HK1 + HK2*2 ) /3Tính và xuất ra điểm trung bình (ĐTB) (HK1 HK2 2 ) /3• Dựa vào ĐTB xuất ra Kết quả và Xếp loại học lực với:

– Kết quả:ếĐược lên lớp: nếu ĐTB >=5

Ở lại lớp : nếu ĐTB <5– Xếp loại học lực:p

Giỏi: nếu ĐTB >=8Khá: nếu 6.5 < ĐTB <8Trung bình: nếu 5 < = ĐTB <6 5

27

Trung bình: nếu 5 < = ĐTB <6.5Yếu: nếu ĐTB <5

Page 28: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 29: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

ẫ• Hướng dẫn−Bài 1: Xếp loại học tập

• Có thể sử dụng IF dạng 2 (lồng nhau) hoặc dạng 3

−Bài 2: Tìm số ngày của thángể ế ề ề• Dùng toán tử || để kết hợp nhiều điều kiện trong IF

• Thuật toán– Nếu tháng =1 hoặc tháng =3 hoặc 5, 7, 8, 10, 12Nếu tháng 1 hoặc tháng 3 hoặc 5, 7, 8, 10, 12

Số ngày =31– Nếu tháng =4 hoặc tháng =6 hoặc 9, 11

Số ngày =30Số ngày 30– Nếu tháng =2

Nếu năm nhuầnSố ngày =29

29

Số ngày 29Ngược lại

Số ngày =28

Page 30: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Hướng dẫn−Bài 2: Tìm số ngày của thángBài 2: Tìm số ngày của tháng

• Năm nhuần là năm:– Chia hết cho 400 (nam % 400 == 0)Hoặc – Chia hết cho 4 và không chia hết cho 100

(nam % 4 == 0 && Nam % 100 != 0)

• Ví dụ– Năm 2000: năm nhuần vì năm chia hết cho 400

Năm 1900: không nhuần vì năm chia hết cho 4 và chia hết 100– Năm 1900: không nhuần vì năm chia hết cho 4 và chia hết 100

30

Page 31: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài tập−Bài 1: Giải phương trình bậc I: ax + b = 0

• Yêu cầu:– Nhập 2 hệ số a và bNhập 2 hệ số a và b– Tìm nghiệm x của phương trình

• Thuật toán– Nếu a = 0:

Nếu b = 0: Phương trình có vô số nghiệmNgược lại (nếu b != 0): Phương trình vô nghiệmg ợ ạ ( ) g g ệ

– Ngược lại (nếu a != 0)Nghiệm x = -b/a

31

Page 32: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

−Bài 2: Giải phương trình bậc 2: ax2 + bx +c =0ầ• Yêu cầu:

– Nhập 3 hệ số a, b và c– Tìm nghiệm x của phương trình

• Thuật toán– Nếu a=0:

Giải phương trình bậc nhất: bx + c=0Giải phương trình bậc nhất: bx + c=0– Ngược lại (nếu a!=0)

Tính Delta = b2 - 4acTìm nghiệm theo DeltaDelta <0: Phương trình vô nghiệmDelta =0: Phương trình có nghiệm kép x1=x2=-b / 2a

32

g g p

Delta >0: Phương trình có 2 nghiệm:

Page 33: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 34: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Toán tử điều kiện - ?• Toán tử ? hoạt động tương tự như dạng 2 của cú• Toán tử ? hoạt động tương tự như dạng 2 của cú

pháp IF• Cú pháp• Cú pháp

Biến_kết_quả = <Điều kiện> ? <biểu_thức_1> : <biểu_thức_2>

Ý• Ý nghĩaNếu <Điều kiện> Đúng Thì

ề ểTrả về <Biểu_thức_1>Ngược lại

Trả về <Biểu thức 2>

34

Trả về <Biểu_thức_2>− <Điều kiện>: là 1 biểu thức logic, trả về true hoặc false

Page 35: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Toán tử điều kiện - ?

• Ví dụ: Xét kết quả học tập dựa vào điểm trung bình

• Nếu DTB <5 thì Kết quả là Ở lại lớp• Ngược lại là Được lên lớp

double dtb = double.Parse(Console.ReadLine());

t i k t (dtb > 5) ? "Đ lê lớ “ "Ở l i lớ “string ket_qua = (dtb >= 5) ? "Được lên lớp“ : "Ở lại lớp“;

Console.WriteLine(“Kết quả: {0}”, ket_qua);

35

Page 36: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 37: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lựa chọn – switch• Công dụng−Với cấu trúc IF, khi có nhiều trường hợp cần xét, ta sẽ

dùng toán tử || để nối các điều kiện phức tạp khi có quádùng toán tử || để nối các điều kiện phức tạp khi có quá nhiều điều kiện

−Do đó có thể sử dụng cấu trúc chọn switch để thay thế choDo đó có thể sử dụng cấu trúc chọn switch để thay thế cho cấu trúc IF trong trường hợp này

37

Page 38: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lựa chọn – switch• Cú pháp• Cú pháp

switch (<biểu thức chọn lựa>){

< iá t ị 1>case <giá trị 1>:<Tập lệnh 1>break;

< iá t ị 2>case <giá trị 2>:<Tập lệnh 2>break;

…default: // các lệnh thực thi khi <biểu thức> không bằng bất kỳ <giá trị> nào của case

<Tập lệnh n>

38

<Tập lệnh n>break;

}

Page 39: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 40: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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ầnint thu = Int.Parse(Console.ReadLine());switch (thu){

case 2:case 2:Console.WriteLine(“Thứ Hai”);break;

...case 8:

Console.WriteLine(“Chủ Nhật”);break;

default:Console.WriteLine(“Thứ nhập vào không hợp lệ”);

40

break;}

Page 41: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 42: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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ángint thang = int.Parse(Console.ReadLine());g ( ())

int nam = int.Parse(Console.ReadLine());

switch(thang)

{{

case 1:

case 3:

case 5:

case 7:

case 8:case 8:

case 10:

case 12:

42

Console.WriteLine(“Tháng {0} năm {1} có 31 ngày”, thang, nam);

break;

Page 43: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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ángcase 4:

case 6:

case 9:

11case 11:

Console.WriteLine(“Tháng {0} năm {1} có 30 ngày”, thang, nam);

break;

case 2:

if ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0)

Console WriteLine(“Tháng {0} năm {1} có 29 ngày” thang nam);Console.WriteLine( Tháng {0} năm {1} có 29 ngày , thang, nam);

else

Console.WriteLine(“Tháng {0} năm {1} có 28 ngày”, thang, nam);

43

break;

Page 44: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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ángdefault:

Console.WriteLine(“Tháng nhập vào không hợp lệ”);

break;

}}

44

Page 45: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 IFint thang = int.Parse(Console.ReadLine());int thang int.Parse(Console.ReadLine());int nam = int.Parse(Console.ReadLine());if (thang==1 || thang==3 || thang==5 || thang==7 || thang==8 || thang==10 ||

thang==12)g )Console.WriteLine(“Tháng {0} có 31 ngày”, thang);

else if (thang==4 || thang==6 || thang==9 || thang== 11)Console WriteLine(“Tháng {0} có 30 ngày” thang);Console.WriteLine( Tháng {0} có 30 ngày , thang);

else if (thang==2){if (( % 400 0) || ( % 4 0 && % 100 ! 0))if ((nam % 400==0) || (nam % 4==0 && nam % 100 !=0))

Console.WriteLine(“Tháng {0} có 31 ngày”, thang);else

45

ngay=28;}

Page 46: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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 IFelseelse

Console.WriteLine(“Tháng nhập vào không hợp lệ”);

46

Page 47: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 48: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài tập áp dụng switchÁp dụng switch cho các bài tập saup ụ g ập−Bài 1: Viết lại bài Tìm số ngày của tháng sử dụng switch−Bài 2: Đọc số bằng chữ g

• Nhập 1 số nguyên (từ 0 đến 9)• Đọc số bằng chữ

0 Không– 0 Không– 1 Một– …

Bài 3 Tì thứ t t ầ−Bài 3: Tìm thứ trong tuần• Nhập vào ngày, tháng, năm• Cho biết ngày đó là thứ mấy

48

C o b ết gày đó à t ứ ấytrong tuần

Page 49: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

• Hướng dẫn−Bài 1: Tìm số ngày của thángBài 1: Tìm số ngày của tháng

• Dựa vào bài tập tính số ngày trong tháng đã viết bằng cấu trúc IF để viết lại bằng cấu trúc switch

−Bài 2: Đọc số bằng chữ • Đọc số dạng đơn giản (chỉ có 1 chữ số từ 0 9)

(S đó ó thể â ấ đ hiề hữ ố)(Sau đó có thể nâng cấp đọc nhiều chữ số)• Kiểm tra số hợp lệ trước khi đọc

−Bài 3: Tìm thứ trong tuần−Bài 3: Tìm thứ trong tuần• Dùng phương thức DateTime.Parse để tạo ra 1 ngày từ các

thành phần ngày, tháng, năm

49

• Dùng thuộc tính DayOfWeek của biến kiểu DateTime để tìm thứ trong tuần.

Page 50: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 51: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Cô d• Công dụng−Dùng để thực hiện lặp đi lặp lại công việc nào đó khi thoả điều kiệnđiều kiện

−Bản chất của câu lệnh lặp while là trước tiên sẽ kiểm tra biểu thức điều kiện lặp, nếu kết quả kiểm tra là :ệ ặp, q• True : sẽ thực hiện một câu lệnh hay khối lệnh thuộc câu lệnh

while.• False sẽ chấm dứt câ lệnh hile à ch ển đến câ lệnh• False : sẽ chấm dứt câu lệnh while và chuyển đến câu lệnh

tuần tự kế tiếp.

51

Page 52: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Cú há• Cú pháp

while (<Điều kiện lặp>)

{

<Tập lệnh>

[continue;]

[break;]

}

52

Page 53: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Ý hĩ• Ý nghĩa− Điều kiện lặp: là biểu thức logic, trả về true/false

− Tập lệnh: chỉ có thể được thực hiện và lặp nếu và chỉ nếu <Điều kiện lặp> = true

break: thoát khỏi vòng lặp− break: thoát khỏi vòng lặp

− continue: quay trở lên kiểm tra điều kiện của vòng lặp khi cầncần

53

Page 54: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Sơ đồ hoạt động:• Sơ đồ hoạt động:

<Điều kiện lặp>False

Thoát khỏi vòng lặp

<Khối lệnh lặp>

Truevòng lặp

<Khối lệnh lặp>

54

Page 55: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – whileổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100

int i=1, tong=0;

hil (i < 100)while (i <= 100)

{

tong += i; // tong =tong + itong i; // tong tong i

//Tăng i tác động đến điều kiện lặp

i ++;

}

Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);

55

Page 56: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – whileổ ố ế• Ví dụ 2: Tính tổng các số nguyên lẻ từ 1 đến 100

int i=1, tong=0;

while (i <=100)

{

t i // t t itong += i; // tong =tong + i;

// Tăng i lên 2 để có được những số lẻ

i += 2;i 2;

}

56

Page 57: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Ví d 3 Tì ố ê lớ hất t kh ả từ• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ

1 đến 100 chia hết cho n (0<n<=100)i t i 100int i=100, max;

while (i >= 1)

{ if (i % n == 0){ if (i % n 0)

{

max = i;

break; //thoát khỏi vòng lặp

}

57

i -= 1;

}

Page 58: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Cá ê tắ bả ầ l ý khi là iệ ới• Các nguyên tắc cơ bản cần lưu ý khi làm việc với

cấu trúc while:Khởi tạo giá trị ban đầu cho biến tham gia biểu thức điều−Khởi tạo giá trị ban đầu cho biến tham gia biểu thức điều kiện của cấu trúc lặp while trước khi cấu trúc lặp while được thực hiện.

−Nếu có nhiều hơn một câu lệnh bên trong vòng lặp while phải đặt các lệnh đó trong dấu khối lệnh { }

Bê t ò lặ hải ó ít hất ột â lệ h tá độ−Bên trong vòng lặp phải có ít nhất một câu lệnh tác động lên biến tham gia điều kiện lặp. Tác động này phải có khuynh hướng sau hữu hạn số lần lặp biểu thức điều kiện lặ ẽ th đổi iá t ị (để t á h ò lặ ô h )

58

lặp sẽ thay đổi giá trị (để tránh vòng lặp vô hạn)

Page 59: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – while• Cá ê tắ bả ầ l ý khi là iệ ới• Các nguyên tắc cơ bản cần lưu ý khi làm việc với

cấu trúc while:Câu lệnh while “xét trước làm sau” do vậy các câu lệnh−Câu lệnh while xét trước làm sau do vậy các câu lệnh bên trong nó có thể sẽ không thực hiện lần nào cả nếu ngay lần đầu tiên kết quả của kiểm tra biểu thức điều kiện là sailà sai.

−Câu lệnh while đặc biệt hữu dụng cho các dạng bài toán mà số lần lặp của các câu lệnh bên trong vòng lặp làmà số lần lặp của các câu lệnh bên trong vòng lặp là không thể xác định.

−Câu lệnh while có thể được sử dụng lồng trong một câu lệ h hil khá

59

lệnh while khác.

Page 60: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài tập áp dụng whileÁp dụng vòng lặp while cho các bài tập sauÁp dụng vòng lặp while cho các bài tập sau

−Bài 1: Tìm ước số chung lớn nhất• Nhập vào số thứ nhất (so 1) và số thứ hai (so 2)Nhập vào số thứ nhất (so_1) và số thứ hai (so_2)• Tìm ước số chung lớn nhất của so_1 và so_2 sau đó xuất kết

quả ra màn hình

ố−Bài 2: Tìm số nghịch đảo• Nhập vào một số bất kỳ (n)• Tì à ất ố đả ủ ( í d ố 123 ó ố hị h• Tìm và xuất ra số đảo ngược của n (ví dụ: số 123 có số nghịch đảo là 321)

60

Page 61: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – do• Cô d• Công dụng−Câu lệnh do thực thi một hoặc nhiều câu lệnh đặt trong

khối lệnh {} và chúng sẽ được lặp lại cho đến khi giá trịkhối lệnh {}, và chúng sẽ được lặp lại cho đến khi giá trị xác định trong biểu thức điều kiện lặp là false.

−Bản chất của cấu trúc lặp do là trước tiên sẽ thực hiện một ặp ự ệ ộcâu lệnh hay khối lệnh trước, sau đó sẽ kiểm tra biểu thức điều kiện lặp, nếu kết quả kiểm tra là : • True : sẽ thực hiện lặp lại một câu lệnh hay khối lệnh thuộc• True : sẽ thực hiện lặp lại một câu lệnh hay khối lệnh thuộc

câu lệnh do.• False : sẽ chấm dứt câu lệnh do và chuyển đến câu lệnh tuần

tự kế tiếp

61

tự kế tiếp .

Page 62: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – do• Cú há• Cú pháp

do

{

<Tập lệnh>

[continue;]

[break;]

}

while (<Điều kiện lặp>)

62

Page 63: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – do• Ý hĩ• Ý nghĩa− Điều kiện lặp: là biểu thức logic, trả về true/false

− Tập lệnh: có thể chỉ được thực hiện một lần nếu <Điều kiện lặp> = false hoặc được lặp lại nhiều lần nếu <Điều kiện lặp> = trueệ ặp

− break: thoát khỏi vòng lặp

− continue: quay trở lên kiểm tra điều kiện của vòng lặp khicontinue: quay trở lên kiểm tra điều kiện của vòng lặp khi cần.

63

Page 64: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – do• Sơ đồ hoạt động:• Sơ đồ hoạt động:

<Khối lệnh lặp>

<Điều kiện lặp>False

TrueThoát khỏi

64

vòng lặp

Page 65: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – doổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100

int i = 0, tong = 0;

ddo

{

tong += i; // tong =tong + itong i; // tong tong i

i ++; //Tăng i tác động đến điều kiện lặp

}

while (i <= 100)

Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);

65

Page 66: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – doổ ố ế• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100

int i = 0, tong = 0;

ddo

{

i ++;i ;

tong += i;

}

while (i <= 100)

Console.WriteLine(“Tổng các số nguyên từ 1=> 100: {0}”, tong);

66

− Bạn có nhận xét gì khi đưa dòng lệnh i++ lên trước tong +=i ?

Page 67: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Công dụng−Dùng để thực hiện lặp đi lặp lại một xử lý khi thoả điều

kiệ lặkiện lặp

−Vòng lặp for thích hợp cho việc duyệt các mảng và cho việc xử lý tuần tựviệc xử lý tuần tự.

−Bản chất của vòng lặp for là số lần lặp xác định trước khi bắt đầu thực hiện.

67

Page 68: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Cú pháp

for (<biến đếm> = <gt đầu>; <điều kiện lặp>; <tăng/giảm biến đếm>)đếm>)

{<Khối lệnh lặp>[continue;][break;]

}

68

Page 69: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – forÝ• Ý nghĩa−Khối lệnh lặp: chỉ được thực hiện nếu <biến đếm> còn

thỏ điề kiệ lặthỏa điều kiện lặp

−break: thoát khỏi vòng lặp khi cần

−continue: bỏ qua các lệnh còn lại (nếu có) và tiếp tục lặp

69

Page 70: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Sơ đồ hoạt động:• Sơ đồ hoạt động:

<Gán giá trị ban đầu<Gán giá trị ban đầu cho biến chạy>

<Điều kiện lặp>

False

Thoát khỏiTrue

Thoát khỏi vòng lặp

<Tăng/Giảm giá trị

70

<Khối lệnh lặp> <Tăng/Giảm giá trị biến đếm>

Page 71: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100• Ví dụ 1: Tính tổng các số nguyên từ 1 đến 100

int tong =0;

int i;int i;

for(i = 1; i<=100; i++)

{{

tong += i; tong =tong + i

}

Console.WriteLine(“Tổng các số nguyên 1=>100: {0}”, tong);

71

Page 72: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Ví dụ 2: Tính tổng các số nguyên lẻ từ 1 đến 100

int i, tong;

tong =0;

for(i=1; i<=100; i=i+2) for(i=1; i<=100; i++) {{

tong += i;

{if(i%2 != 0)

tong += i;}

Hoặc

}

Console.WriteLine(“Tổng các số nguyên lẻ từ 1=>100: {0}”, tong);

}

72

Page 73: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ• Ví dụ 3: Tìm số nguyên lớn nhất trong khoảng từ

1 đến 100 chia hết cho n (0<n<=100)int i, max;int i, max;

int n = int.Parse(Console.ReadLine());

for(i = 100; i>=1; i--)

{ if( i%n == 0)

{ max = i;

//break; //thoát khỏi vòng lặp

}

}

73

}

Console.WriteLine(“Số lớn nhất chia hết cho {0} là {1}”, n, max);

Page 74: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Ví dụ 4: Tính tổng các số nguyên chẵn từ 1 đến• Ví dụ 4: Tính tổng các số nguyên chẵn từ 1 đến

100

int tong=0;

for(int i = 1; i<=100;i++)

{

if(i%2 != 0)

continue;

tong+=i;

}

74

}

Page 75: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – for• Ví dụ 4: Cho số nguyên n. Liệt kê các ước số của

nóint i;

int n = int.Parse(Console.ReadLine());

string kq = "";string kq = "";

for (i = 1; i < n; i++)

{ if (n % i == 0)

kq = kq + " " + i;

}

C l W it Li (k )

75

Console.WriteLine(kq);

Page 76: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – foreach• Cú há• Cú pháp

foreach (<kiểu dữ liệu> <phần tử> in <tập hợp>){{

<Tập lệnh>}}

• Ý nghĩa• Duyệt qua từng phần tử trong tập hợp để thực hiện xử lýDuyệt qua từng phần tử trong tập hợp để thực hiện xử lý

tương ứng

76

Page 77: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Cấu trúc lặp – foreach• Ví dụ: Duyệt mảng• Ví dụ: Duyệt mảng

77

Page 78: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài tậpÁp dụng vòng lặp for cho các bài tập sauÁp dụng vòng lặp for cho các bài tập sau

−Bài 1:Tạo bảng cửu chương• Nhập vào số cho biết cửu chương mấyNhập vào số cho biết cửu chương mấy• Xuất bảng cửu chương tương ứng

78

Page 79: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài tậpÁp dụng vòng lặp for cho các bài tập sauÁp dụng vòng lặp for cho các bài tập sau

−Bài 2: Số nguyên tố• Nhập vào một số nguyên NNhập vào một số nguyên N• Kiểm tra xem số N có phải là số nguyên tố hay không

79

Page 80: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 3: Các cấu trúc điều khiển cơ bản trong C#bản trong C#

• Tổng quan về cấu trúc điều khiển• Các cấu trúc điều khiển• Xử lý bẫy lỗi trong chương trìnhý y g g• Mảng (Array)

80

Page 81: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 82: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Phân loại lỗi

• Lỗi cú pháp (syntax error)− Xuất hiện khi ta viết code. ệ

− Được thông báo ngay khi viết sai cú pháp.

− Nguyên nhân: viết sai hoặc thiếu cú phápNguyên nhân: viết sai hoặc thiếu cú pháp.

• Lỗi thực thi (runtime error)Xả khi t th thi h t ì h− Xảy ra khi ta thực thi chương trình.

− Khó xác định hơn lỗi cú pháp.

N ê hâ Mở ột tậ ti đ tồ t i hi h 0

82

− Nguyên nhân: Mở một tập tin đang tồn tại, chia cho 0, truy xuất bảng không tồn tại trong CSDL, …

Page 83: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Phân loại lỗi

• Lỗi luận lý− Xảy ra khi ta thực thi chương trìnhXảy ra khi ta thực thi chương trình

− Được thể hiện dưới những hình thức hoặc những kết quả không mong đợi. q g g

− Nguyên nhân: sai lầm trong thuật giải.

83

Page 84: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi

• Dò và sửa lỗi thủ công− Khi có lỗi phát sinh thì VS sẽ tự động thông báo lỗi và tựKhi có lỗi phát sinh thì VS sẽ tự động thông báo lỗi và tự

động nhảy đến dòng lệnh gây ra lỗi

− Cách sửa lỗi: • Xem thông báo lỗi và dòng xảy ra lỗi• Kiểm tra lại cú pháp của dòng lệnh gây ra lỗi

84

Page 85: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi• Lệnh throw−Câu lệnh throw thường được dùng để báo hiệu sự cố xảy

ủ ột tì h t bất th ờ ( i lệ ti )ra của một tình trạng bất thường (sự ngoại lệ - exception) trong khi chương trình thực thi.

−Cú pháp:Cú pháp:throw new <loại Exception>( [“Câu thông báo lỗi”]);

85

Page 86: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 87: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi• Dùng try…catch để bẫy và xử lý lỗi− Try … catch: cho phép thử thực hiện một khối lệnh xem

ỗ ế ẫ ỗcó bị lỗi hay không, nếu có sẽ bẫy và xử lý lỗi.

− Cấu trúc try … catch có ba khối:ố ỗ• Khối try: chứa các câu lệnh có khả năng gây ra lỗi

• Khối catch: chứa các câu lệnh để bẫy và xử lý lỗi phát sinh trên khối try.

• Khối finally: chứa các câu lệnh sẽ được thực hiện cuối cùng (cho dù có lỗi xảy ra hay không)

Một lỗi ả ra khi th c thi ch ơng trình gọi là một

87

− Một lỗi xảy ra khi thực thi chương trình gọi là một Exception.

Page 88: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi

• Dùng try…catch để bẫy và xử lý lỗi− Nếu không có vấn đề nào xảy ra công cụ vận hành sẽ bỏNếu không có vấn đề nào xảy ra, công cụ vận hành sẽ bỏ

qua khối catch.

− Một số nguồn tài nguyên cần phải được thu dọn, ví dụ g g y pnhư 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

Page 89: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi

• Dùng try…catch để bẫy và xử lý lỗi− Ví dụ:Ví dụ:

89

Page 90: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi

• Dùng try…catch để bẫy và xử lý lỗi− Lưu ý:

• Một khối try có thể dùng một hay nhiều khối catch• Mỗi khối catch hiển thị một loại lỗi khác nhau. Lúc đó công

cụ vận hành sẽ chỉ thực thi khối catch với kiểu exception phù ầ

ụ ậ ự p phợp đầu tiên

• Trường hợp có nhiều khối catch thì khối catch với các exception cụ thể phải được liệt kê trước các exception tổng quátquát.

• Các khai báo biến trong khối lệnh try sẽ không có hiệu lực đối với các lệnh sử dụng nó nằm ở bên ngoài. Do vậy, nếu bên trong khối lệnh finally có sử dụng các biến liên quan đến

90

bên trong khối lệnh finally có sử dụng các biến liên quan đến các biến được khai báo và sử dụng trong khối lệnh try phải đưa các khai báo biến này ra ngoài khối lệnh try.

Page 91: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý lỗi

• Dùng try…catch để bẫy và xử lý lỗi− Ví dụ:Ví dụ:

91

Page 92: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 3: Các cấu trúc điều khiển cơ bản trong C#bản trong C#

• Tổng quan về cấu trúc điều khiển• Các cấu trúc điều khiển• Xử lý bẫy lỗi trong chương trìnhý y g g• Mảng (Array)

92

Page 93: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 94: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Mảng• Giới thiệu−Mảng là tập hợp các biến có cùng kiểu dữ liệu, cùng tên

h ó hỉ ố khá hnhưng có chỉ số khác nhau.

−Trong C#, mảng có chỉ số bắt đầu là 0 và luôn luôn là mảng động (mảng có khả năng thay đổi kích thước)mảng động (mảng có khả năng thay đổi kích thước).

−Ví dụ: Mảng nguyên 5 phần tử

0 1 2 3 4

10 20 15 6 8

Chỉ sốChỉ số

Giá t ịGiá t ị

94

10 20 15 6 8 Giá trịGiá trị

Page 95: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 96: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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ảngKh i bá khô khởi kí h h ớ à iá ị• Khai báo không khởi tạo kích thước và giá trị

<Kiểu dữ liệu>[ ] Tên_mảng;Ví dụ: int[ ] a;Ví dụ: int[ ] a;

• Khai báo có khởi tạo kích thước nhưng không khởi tạo• Khai báo có khởi tạo kích thước nhưng không khởi tạo giá trị ban đầu:

<Kiểu dữ liệu>[ ] Tên_mảng = new <Kiểu dữ liệu>[<số phần tử>];Ví dụ: Khai báo mảng nguyên 10 phần tửint[ ] a = new int[10];

96

Page 97: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khai báo và khởi tạo mảng• Kh i bá ó khởi t kí h th ớ à khởi t iá t ị b• Khai báo có khởi tạo kích thước và khởi tạo giá trị ban đầu:

<Kiểu dữ liệu>[ ] Tên mảng = new <Kiểu dữ liệu>[<Số phần tử>] ệ [ ] _ g ệ [ p ]{giá trị 1, giá trị 2, giá trị 3, ...};

hoặc:<Kiể dữ liệ >[ ] Tê ả { iá t ị 1 iá t ị 2 iá t ị 3 }<Kiểu dữ liệu>[ ] Tên_mảng = {giá trị 1, giá trị 2, giá trị 3, ...};Ví dụ: Khai báo và khởi tạo mảng nguyên có 5 phần tửint[ ] a = new int[5]{2,10,4,8,5};int[ ] a new int[5]{2,10,4,8,5};int[ ] a = {2, 10, 4, 8, 5};

97

Page 98: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 99: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 100: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 101: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 102: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các thao tác trên mảng

• Duyệt mảng−Duyệt qua và xử lý trên từng phần tử của mảngyệ q ý g p g

for (int i = 0; i<Tên_mảng.Length; i++){{

// Xử lý trên phần tử Tên_mảng[i]}}

102

Page 103: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các thao tác trên mảng

• Duyệt mảng−Ví dụ: Duyệt và xuất mảngụ yệ g

int[] d = {1, 2, 3, 4, 5};

string chuoi_mang = "";

for (int i = 0; i < d.Length; i++)

{

S ()chuoi_mang += d[i].ToString() + " ";

}

Console WriteLine(chuoi mang);

103

Console.WriteLine(chuoi_mang);

Page 104: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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_nguyenint[ ] mang_nguyen;mang nguyen = new int[sopt];mang_nguyen new int[sopt];for (int i = 0; i < mang_nguyen.Length; i++){

Console Write(“Nhập giá trị cho phần tử thứ {0}” i + 1);Console.Write(“Nhập giá trị cho phần tử thứ {0}”, i + 1);string n = Console.ReadLine();if(n != "")

mang_nguyen[i] = int.Parse(n);}

104

Page 105: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các thao tác trên mảng• Duyệt mảng• Duyệt mảng−Ví dụ: Duyệt và xuất giá trị từng phần tử của mảng

mang nguyenmang_nguyenstring chuoi_mang = "";

for (int i = 0; i < mang_nguyen.Length; i++)

{

chuoi_mang += mang_nguyen[i] + " ";

}

return chuoi_mang;

105

Page 106: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 107: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Tìm kiếm trên mảng• Tìm phần tử lớn nhất / nhỏ nhất• Tìm phần tử lớn nhất / nhỏ nhất

int i, max;

[0] // hầ tử đầ tiêmax = mang_nguyen[0]; // phần tử đầu tiên

for (i = 0; i < mang_nguyen.Length; i++)

{

// nếu gặp phần tử lớn hơn

if (max < mang_nguyen[i])max = mang_nguyen[i];

107

}

Page 108: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Tìm kiếm trên mảng• Tìm phần tử lớn nhất / nhỏ nhấtTìm phần tử lớn nhất / nhỏ nhất

int i, min;

min = mang nguyen[0]; // phần tử đầu tiênmin mang_nguyen[0]; // phần tử đầu tiên

for (i = 0; i < mang_nguyen.Length; i++)

{

// nếu gặp phần tử nhỏ hơn

if (min > mang_nguyen[i])i [i]min = mang_nguyen[i];

}

108

Page 109: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Tìm kiếm trên mảng• Tìm phần tử có giá trị được cung cấpTìm phần tử có giá trị được cung cấp

int so_tim = int.Parse(Console.ReadLine());// Khai báo và tạo giá trị mặc định: giả sử không tìm thấyạ g ị ặ ị g g ystring kq = "Không tìm thấy " + so_tim + " trong mảng";for (int i = 0; i < mang_nguyen.Length; i++) {{

if(mang_nguyen[i]==so_tim) // nếu tìm thấy{

kq = "Tìm thấy " + so_tim + " trong mảng, tại ví trí " + (i+1);break;

}

109

}}Console.WriteLine("Kết quả tìm kiếm: {0}“, kq);

Page 110: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 111: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Sắp xếp trên mảng• Sắp xếp các phần tử tăng dầnSắp xếp các phần tử tăng dần

for (int i = 0; i < mang_nguyen.Length - 1; i++){

for (int j = i + 1; j < mang_nguyen.Length; j++){

if (mang_nguyen[i] > mang_nguyen[j]){ // nếu gặp phần tử nhỏ hơn thì đổi chỗ

int tam = mang_nguyen[i];mang_nguyen[i] = mang_nguyen[j];mang_nguyen[j] = tam;

} //if} // for j

111

} j} // for i

Page 112: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Sắp xếp trên mảng• Sắp xếp các phần tử tăng dầnSắp xếp các phần tử tăng dần

1 83 2155 1334 2895

1 82155 133 289534

3 82155 131 289534

3 82155 131 289345 3 82155 131 289345

………………………………

112

13 342 213 551 8985

Page 113: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các phương thức của mảng• Sắ ế• Sắp xếp−Sắp tăng dần

Array.Sort(<Mảng>);• Array: lớp được xây dựng sẵn• Ví d• Ví dụ

// Sắp xếp mang_nguyen tăng dần

Array.Sort(mang_nguyen);

113

Page 114: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các phương thức của mảng• Sắ ế• Sắp xếp−Đảo ngược mảng

Array.Reverse(<Mảng>);• Ví dụ

// Đảo ngược mang_nguyen

Array.Reverse(mang_nguyen);

114

Page 115: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các phương thức của mảng• Tì kiế• Tìm kiếm−Tìm 1 giá trị trong mảng, sẽ trả về vị trí của phần tử nếu

tìm thấy nếu không sẽ trả về 1tìm thấy, nếu không sẽ trả về -1

Array.IndexOf(<Mảng>, <giá trị tìm>)Ví dVí dụ

int gia_tri = 5; // Tìm vị trí của phần tử có giá trị là 5int vi tri = Array.IndexOf(mang nguyen, gia tri);_ y ( g_ g y , g _ );if (vi_tri < 0)

Console.WriteLine("Không tìm thấy!", "Thông báo");else

Console WriteLine("Đã tìm thấy {0} tại vị trí {1}“ gia tri vi tri);

115

Console.WriteLine("Đã tìm thấy {0} tại vị trí {1} , gia_tri, vi_tri);

Page 116: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 117: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Thêm một phần tử vào cuối mảngThêm một phần tử vào cuối mảng−Sử dụng phương thức Resize của lớp Array để tăng thêm

kích thước của mảng một phần tửg ộ p

−Gán giá trị cho phần tử cuối cùng là giá trị cần thêm

−Cú pháp:Cú pháp: Array.Resize <Kiểu dữ liệu>(<Mảng tham chiếu>, <Số phần tử mới>)

−Ví dụ: thêm 1 phần tử có giá trị là 9 vào cuối mảng sau:int[ ] a = {4, 2, 5}; //ban đầu mảng a có 3 phần tử

Array.Resize <int> (ref a, 4); //tăng kích thước của mảng a

117

a[3] = 9;

Page 118: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Thêm một phần tử vào vị trí bất kỳ trong mảng−Xác định vị trí k cần chèn thêm 1 phần tử

−Sử dụng phương thức Resize của lớp Array để tăng thêm kích thước của mảng một phần tử

ể ầ ố ế−Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số k đến phần tử kế cuối có chỉ số n-1 sang phải 1 phần tử

−Gán giá trị cho phần tử thứ k là giá trị cần thêmGán giá trị cho phần tử thứ k là giá trị cần thêm

118

Page 119: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Thêm một phần tử vào vị trí bất kỳ trong mảng−Ví dụ: thêm 1 phần tử có giá trị là 9 vào vị trí thứ 2 trong

ả A ó 3 hầ tử đ kh i bá hmảng A có 3 phần tử được khai báo như sau:int[ ] A = {4, 2, 5};

4 2 5Mảng A trước khi thêm:

4 9 2Mảng A sau khi thêm: 5

119

Page 120: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Thêm một phần tử vào vị trí bất kỳ trong mảng−Các bước thực hiện:

• Bước 1: tăng kích thước của mảng A lên một phần tửArray.Resize <int>(ref A, 4);

4 2 5Mảng A sau khi Resize: 0

120

Page 121: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Thêm một phần tử vào vị trí bất kỳ trong mảng−Các bước thực hiện:

• Bước 2: Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số k (k=1) đến phần tử kế cuối có chỉ số n-1 (n=3) sang phải 1 phần tử

for(int i = A.Length - 1; i > 1; i--){

A[i] = A[i – 1];[ ] [ ];};

121

4 2 2Mảng A sau khi dịch chuyển: 5

Page 122: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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êmA[1] = 9;

4 9 2Mảng A sau gán giá trị: 5g g g ị

122

Phần tử mới thêm vào

Page 123: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng

• Xóa một phần tử ở cuối mảng−Sử dụng phương thức Resize của lớp Array để giảm kích ụ g p g p y g

thước của mảng xuống một phần tử

−Cú pháp: Array.Resize <Kiểu dữ liệu>(<Mảng tham chiếu>, <Số phần tử mới>)

−Ví dụ: xóa 1 phần tử cuối cùng có giá trị là 5 trong mảng sau:sau:int[ ] a = {4, 9, 2, 5}; //ban đầu mảng a có 4 phần tử

Array.Resize <int> (ref a, 3); //giảm kích thước của mảng a

123

y ( , ); g g

Page 124: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

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

Page 125: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Xóa một phần tử vào vị trí bất kỳ trong mảng−Ví dụ: xóa phần tử có giá trị là 9 tại vị trí thứ 2 trong mảng

A ó 4 hầ tử đ kh i bá hA có 4 phần tử được khai báo như sau:int[ ] A = {4, 9, 2, 5};

4 9 2Mảng A trước khi xóa: 5

4 2Mảng A sau khi xóa: 5

125

Page 126: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Xóa một phần tử tại vị trí bất kỳ trong mảng−Các bước thực hiện:

• Bước 1: Dịch chuyển giá trị của các phần tử tại vị trí có chỉ số k+1 (k=1) đến phần tử cuối cùng có chỉ số n (n=3) sang trái 1 phần tử

for(int i = 2; i < A.Length; i++){

A[i - 1] = A[i];[ ] [ ];};

126

4 2 5Mảng A sau khi dịch chuyển: 5

Page 127: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Thêm, bớt phần tử trong mảng• Xóa một phần tử tại vị trí bất kỳ trong mảng−Các bước thực hiện:

• Bước 2: giảm kích thước của mảng A xuống một phần tửArray.Resize <int>(ref A, 3);

4 2 5Mảng A sau khi Resize:

127

Page 128: Bài 3 -  Cấu trúc điều khiển - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

128