Lập trình .NET và C# - Lecture 8 continue: Mảng, chỉ mục và tập hợp

Tài liệu Lập trình .NET và C# - Lecture 8 continue: Mảng, chỉ mục và tập hợp: 1Lập trình .NET và C# Lecture 8 continue: MẢNG, CHỈ MỤC, VÀ TẬP HỢP TS Đào Nam Anh UTM, Khoa KH&CN 2Resources  Các giải pháp lập trình C#, Nguyễn Ngọc Bình Phương - Thái Thanh Phong  Allen Jones. C# Programmer's Cookbook. Microsoft Press, 2004  John Connell. Coding Techniques for Microsoft Visual Basic .NET. Microsoft Press, 2002.  Harvey M. Deitel, Paul J. Deitel, & Tem R. Nieto. Visual Basic .NET How to Program, Second Edition. Prentice Hall, 2002.  Jose Mojica. C# and VB .NET Conversion Pocket Reference. O'Reilly, 2002.  James Avery. Ten Must-Have Tools Every Developer Should Download Now. MSDN Magazine, 2004.  Karl Moore. The Ultimate VB.NET and ASP.NET Code Book. Apress, 2003  Matthew MacDonald. Microsoft Visual Basic .NET Programmer's Cookbook. Microsoft Press, 2003.  Mark Schmidt & Simon Robinson. Microsoft Visual C# .NET 2003 Developer's Cookbook. Sams Publishing, 2003.  Dương Quang Thiện. Lập trình Visual C# thế nào? Nhà xuất bản Tổng Hợp TP...

pdf20 trang | Chia sẻ: putihuynh11 | Lượt xem: 558 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Lập trình .NET và C# - Lecture 8 continue: Mảng, chỉ mục và tập hợp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Lập trình .NET và C# Lecture 8 continue: MẢNG, CHỈ MỤC, VÀ TẬP HỢP TS Đào Nam Anh UTM, Khoa KH&CN 2Resources  Các giải pháp lập trình C#, Nguyễn Ngọc Bình Phương - Thái Thanh Phong  Allen Jones. C# Programmer's Cookbook. Microsoft Press, 2004  John Connell. Coding Techniques for Microsoft Visual Basic .NET. Microsoft Press, 2002.  Harvey M. Deitel, Paul J. Deitel, & Tem R. Nieto. Visual Basic .NET How to Program, Second Edition. Prentice Hall, 2002.  Jose Mojica. C# and VB .NET Conversion Pocket Reference. O'Reilly, 2002.  James Avery. Ten Must-Have Tools Every Developer Should Download Now. MSDN Magazine, 2004.  Karl Moore. The Ultimate VB.NET and ASP.NET Code Book. Apress, 2003  Matthew MacDonald. Microsoft Visual Basic .NET Programmer's Cookbook. Microsoft Press, 2003.  Mark Schmidt & Simon Robinson. Microsoft Visual C# .NET 2003 Developer's Cookbook. Sams Publishing, 2003.  Dương Quang Thiện. Lập trình Visual C# thế nào? Nhà xuất bản Tổng Hợp TP. Hồ Chí Minh, 2005.  Nguyễn Ngọc Bình Phương & Lê Trần Nhật Quỳnh. Các giải pháp lập trình Visual Basic .NET. Nhà xuất bản Giao thông Vận tải, 2006  www.msdn.microsoft.com, www.codeproject.com, www.msd2d.com, www.developersdex.com, www.windowsforms.net, www.gotdotnet.com, www.codeguru.com, www.developerfusion.com 3Mảng đa chiều Mảng đa chiều cùng kích thước  Mảng hai chiều được tổ chức thành các dòng và cột, trong đó các dòng là được tính theo hàng ngang của mảng, và các cột được tính theo hàng dọc của mảng.  Mảng ba chiều cũng có thể được tạo ra nhưng thường ít sử dụng  Mảng đa chiều cùng kích thước còn gọi là mảng hình chữ nhật (rectanguler array). 4Mảng đa chiều Mảng đa chiều kích thước khác nhau  kích thước của các chiều có thể không bằng nhau, điều này khác với mảng đa chiều cùng kích thước.  Nếu hình dạng của mảng đa chiều cùng kích thước có dạng hình chữ nhật thì hình dạng của mảng này không phải hình chữ nhật vì các chiều của chúng không điều nhau. 5Mảng đa chiều Mảng đa chiều kích thước khác nhau  Khi chúng ta tạo một mảng đa chiều kích thước khác nhau thì chúng ta khai báo số dòng trong mảng trước.  Sau đó với mỗi dòng sẽ giữ một mảng, có kích thước bất kỳ. Những mảng này được khai báo riêng.  Sau đó chúng ta khởi tạo giá trị các thành phần trong những mảng bên trong. 6Mảng đa chiều Mảng đa chiều kích thước khác nhau [] [] ... int [ ] [ ] myJaggedArray; truy cập thành phần thứ năm của mảng thứ ba bằng cú pháp: myJagged-Array[2][4] 7Mảng đa chiều Mảng đa chiều kích thước khác nhau const int rows = 4; int[][] jaggedArray = new int[rows][]; jaggedArray[0] = new int[5]; jaggedArray[1] = new int[2]; jaggedArray[2] = new int[3]; jaggedArray[3] = new int[5]; // khởi tạo một vài giá trị cho các thành phần của mảng jaggedArray[0][3] = 15; jaggedArray[1][1] = 12; jaggedArray[2][1] = 9; jaggedArray[2][2] = 99; jaggedArray[3][0] = 10; 8Chuyển đổi mảng  Những mảng có thể chuyển đổi với nhau nếu những chiều của chúng bằng nhau và nếu các kiểu của các thành phần có thể chuyển đổi được.  Chuyển đổi tường minh giữa các mảng xảy ra nếu các thành phần của những mảng có thể chuyển đổi tường minh.  Và ngược lại, chuyển đổi ngầm định của mảng xảy ra nếu các thành phần của những mảng có thể chuyển đổi ngầm định. 9System.Array  Lớp mảng Array chứa một số các phương thức hữu ích cho phép mở rộng những khả năng của mảng và làm cho mảng mạnh hơn những mảng trong ngôn ngữ khác  Hai phương thức tĩnh hữu dụng của lớp Array là Sort() và Reverse(). 10 System.Array string[] myArray = { “Who”, “is”,”Kitty”,”Mun” }; Array.Reverse(myArray); 11 B ch mc Bộ chỉ mục là một cơ chế cho phép các thành phần client truy cập một tập hợp chứa bên trong một lớp bằng cách sử dụng cú pháp giống như truy cập mảng ([]). Chỉ mục là một loại thuộc tính đặc biệt và bao gồm các phương thức get() và set() để xác nhận những hành vi của chúng. Chúng ta có thể khai báo thuộc tính chỉ mục bên trong của lớp bằng cách sử dụng cú pháp như sau: this [ ] { get; set; } 12 B ch mc public string this[int index] { get { if ( index = strings.Length) { // xử lý chỉ mục sai } return strings[index]; } set { if ( index >= ctr) { // xử lý lỗi chỉ mục không tồn tại } else strings[index] = value; } } 13 ArrayList - Danh sách mng  hạn chế của kiểu dữ liệu mảng là kích thước cố định. Nếu chúng ta không biết trước số lượng đối tượng trong một mảng sẽ được lưu giữ, thì sẽ khó khăn vì có thể chúng ta khai báo kích thước của mảng quá nhỏ (vượt quá kích thước lưu trữ của mảng) hoặc là kích thước quá lớn (dẫn đến lãng phí bộ nhớ).  Lớp ArrayList là một kiểu dữ liệu mảng mà kích thước của nó được gia tăng một cách động theo yêu cầu. 14 Danh sách mng  Khi tạo đối tượng ArrayList, không cần thiết phải định nghĩa số đối tượng mà nó sẽ chứa.  Chúng ta thêm vào ArrayList bằng cách dùng phương thức Add() 15 Danh sách mng ArrayList intArray = new ArrayList(); for( int i = 0; i < 5; i++) { intArray.Add( i*5 ); } // in tất cả nội dung for(int i = 0; i < intArray.Count; i++) { Console.Write(“{0} ”,intArray[i].ToString()); } 16 Hàng đợi (Queue)  Hàng đợi là một tập hợp trong đó có thứ tự vào trước và ra trước (FIFO)  Chúng ta có thể thêm những thành phần vào trong hàng đợi với phương thức Enqueue và sau đó lấy chúng ra khỏi hàng đợi với Dequeue Queue intQueue = new Queue(); for(int i=0; i <5; i++) { intQueue.Enqueue(i*5); } 17 Hàng đợi  Chúng ta có thể thêm những thành phần vào trong hàng đợi với phương thức Enqueue và sau đó lấy chúng ra khỏi hàng đợi với Dequeue hay bằng sử dụng enumerator.  Peek() Trả về phần tử đầu tiên của hàng đợi và không xóa nó. 18 Ngăn xp (stack)  Ngăn xếp là một tập hợp mà thứ tự là vào trước ra sau hay vào sao ra trước (LIFO)  như một chồng đĩa được xếp trong nhà hàng. Đĩa ở trên cùng tức là đĩa xếp sau thì được lấy ra trước do vậy đĩa nằm dưới đáy tức là đĩa đưa vào đầu tiên sẽ được lấy ra sau cùng.  Hai phương thức chính cho việc thêm và xóa từ stack là Push và Pop, Peek 19 CopyTo() và ToArray()  Ba lớp ArrayList, Queue, và Stack đều chứa phương thức nạp chồng CopyTo() và ToArray() dể sao chép những thành phần của chúng qua một mảng.  Trong trường hợp của ngăn xếp phương thức CopyTo() sẽ chép những thành phần của chúng đến mảng một chiều đa hiện hữu, và viết chồng lên nội dung của mảng bắt đầu tại chỉ mục mà ta xác nhận.  Phương thức ToArray() trả về một mảng mới với những nội dung của những thành phần trong mảng. 20 Question

Các file đính kèm theo tài liệu này:

  • pdfcsharp009_3609_1987446.pdf
Tài liệu liên quan