Chương 6 Mảng, chỉ mục và tập hợp nằm trong bài giảng cơ sở lập trình máy tính nhằm trình bày về các nội dung chính: mảng và giao diện tập hợp, khởi tạo và truy xuất mảng, câu lệnh foreach, truyền tham số mảng vào phương thức, chỉ mục đối tượng.
Chương 6: Mảng, mục tập hợp Giảng viên: Ths Nguyễn Thị Khiêm Hịa Khoa Cơng nghệ Thơng tin - Đại học Ngân hàng TP.HCM Nội dung Mảng Giao diện tập hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Danh sách Định nghĩa Danh sách dãy hữu hạn có thứ tự phần tử thuộc lớp đối tượng Ký hiệu: L(a1, a2, …, an) Danh sách tuyến tính danh sách mà quan hệ lân cận phần tử hiển thị Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Danh sách Tổ chức lưu trữ danh sách nhớ Mảng - Danh sách đặc Danh sách liên kết – Danh sách động Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mảng Tập hợp phần tử kiểu liệu, nằm liên tiếp nhớ Có số Giá trị mặc định phần tử mảng quy định theo kiểu đối tượng Mảng đối tượng Kích thước: nhiều chiều Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tạo mảng Khai báo [ ] ; Ví dụ: int [ ] array; Khởi tạo [ ] = new []; Ví dụ: int[ ] array = new int[5]; Mảng đối tượng [ ] = new []; Ví dụ: Animal [ ] animals = new Animal [10]; Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Khởi tạo truy xuất mảng Có thể dùng dấu { } để khởi tạo giá trị cho phần tử mảng int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; numbers[4] = 6; string[] animal = {"Mouse", "Cat", "Lion"}; animal[1]= "Elephant"; string someAnimal = animal[2]; Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Câu lệnh foreach Dùng câu lệnh foreach để lặp lại việc truy xuất phần tử mảng int[] numbers = {4,5,6,1,2,3,-2,-1,0}; int Tong = 0; foreach (int a in numbers) { Tong += a; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Truyền tham số mảng vào phương thức Dùng từ khóa params để truyền tham số mảng public int Sum(params int[] list) { int total = 0; foreach ( int i in list ) { total += i; } return total; } int [] pe; int value = pe.Sum( 1, 3, 5, 7, 9, 11 ); Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Chỉ mục đối tượng Dùng từ khóa this với get set properties public class Zoo { private Animal[] theAnimals; public Animal this[int i] { get {return theAnimals[i];} set {theAnimals[i] = value;} } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 10 Ngăn xếp (Stack) Ngăn xếp: tập hợp đối tượng hoạt động theo chế LIFO Ví dụ: chế giải thuật đệ quy Pop Push Top Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 31 Ngăn xếp (Stack) Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 32 Ngăn xếp (Stack) Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 33 Ngăn xếp (Stack) Phương thức Clear(): Xóa ngăn xếp Pop(): Xóa trả phần tử Push(): Thêm phần tử vào ngăn xếp Peek(): Trả phần tử khơng xóa Thuộc tính Count: Số phần tử ngăn xếp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 34 Ngăn xếp public class Test { public static void main() { Stack intStack = new Stack(); for(int i = 0; i < 8; i++) intStack.Push(i*5); Console.Write(“intStack values: \t”); PrintValues(intStack); intStack.Pop(); intStack.Pop(); Console.Write(“intStack values: \t”); PrintValues(intStack); intStack.Peek(); Console.Write(“intStack values: \t”); PrintValues(intStack); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 35 Ngăn xếp public static void PrintValue(IEnumerable mc) { Ienumerator myEnumerator = mc.GetEnumerator(); while(myEnumerator.MoveNext()) Console.Write(“{0}\t”, myEnumerator.Current); Console.WriteLine(); } } //end Test Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 36 Bài tập Thực Sử dụng ngăn xếp để thực đổi số hệ thập phân sang hệ n (n=2, 4, 6, 8, 16 ) Nhập dãy số nguyên, in dãy theo thứ tự đảo ngược 30 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 37 Giao diện tập hợp NET cung cấp giao diện chuẩn cho việc liệt kê, so sánh, tạo tập hợp Giao diện IEnumerable IComparer Mục đích Liệt kê thông qua tập hợp cách sử dụng foreach So sánh hai đối tượng lưu giữ tập hợp để xếp đối tượng tập hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 38 IEnumerable Dùng liệt kê đối tượng thông qua câu lệnh foreach Phương thức GetEnumerator(): trả thực thi IEnumerator cho phép liệt kê phần tử tập hợp Phương thức MoveNext(): tăng index tập hợp lên kiểm tra mục có vượt số phần tử tập hợp Thuộc tính Current: liệu vị trí hành tập hợp Khoa Cơng nghệ Thơng tin - Đại học Ngân hàng TP.HCM 39 IEnumerable public static void PrintValue(IEnumerable mc) { IEnumerator myEnum = mc.GetEnumerator(); while(myEnum.MoveNext()) Console.Write(“{0}\t”, myEnum.Current); Console.WriteLine(); } } //end Test Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 40 IComparer Cung cấp phương thức thực việc so sánh xếp tập hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 41 IComparer static void Main(string[] args) { string[] myArray = {"Dog","Elephant","Cat","Pig", "Bear"}; PrintArray(myArray); Array.Sort(myArray); PrintArray(myArray); Console.ReadLine(); } public static void PrintArray(params string [] list) { for (int i = 0; i < list.Length; i++) Console.WriteLine(" [{0}] : {1}",i,list[i]); Console.WriteLine(); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 42 IComparerable public class Employee: IComparable { private int empID; public Employee(int empID) { this.empID = empID;} public int EmpID { get { return empID;} set { empID = value;} } public override string ToString() { return empID.ToString();} public int CompareTo(object o) { Employee r = (Employee) o; return this.empID.CompareTo(r.empID); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 43 IComparerable public class Tester { static void Main() { ArrayList empArray = new ArrayList(); Random r = new Random(); // đưa vào mảng for( int i = 0; i < 5; i++) { empArray.Add( new Employee(r.Next(10)+100)); } // in tất nội dung PrintValue(empArray); // xếp lại mảng Employee empArray.Sort(); // hiển thị tất nội dung mảng Employee PrintValue(empArray); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 44 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 45 ... //end Test Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 36 Bài tập Thực Sử dụng ngăn xếp để thực đổi số hệ thập phân sang hệ n (n=2, 4, 6, 8, 16 ) Nhập dãy số nguyên, in dãy theo thứ... animal[2]; Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Câu lệnh foreach Dùng câu lệnh foreach để lặp lại việc truy xuất phần tử mảng int[] numbers = {4,5 ,6, 1,2,3 ,-2 ,-1 ,0}; int Tong = 0; foreach... hiển thị Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Danh sách Tổ chức lưu trữ danh sách nhớ Mảng - Danh sách đặc Danh sách liên kết – Danh sách động Khoa Công nghệ Thông tin - Đại