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 |
Chia sẻ: putihuynh11 | Lượt xem: 547 | 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