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...
                
              
                                            
                                
            
 
            
                 20 trang
20 trang | 
Chia sẻ: putihuynh11 | Lượt xem: 691 | Lượt tải: 0 
              
            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:
 csharp009_3609_1987446.pdf csharp009_3609_1987446.pdf