Tải bản đầy đủ (.pdf) (45 trang)

Bài giảng cơ sở lập trình máy tính chương 6 ths nguyễn thị khiêm hòa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.28 MB, 45 trang )

Chương 6:
Mảng, chỉ mục và 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

2


Danh sách


Định nghĩa
Danh sách là dãy hữu hạn có thứ tự của các phần tử
thuộc một lớp đối tượng.



Ký hiệu: L(a1, a2, …, an)




Danh sách tuyến tính là danh sách mà quan hệ lân cận
giữa các phần tử được hiển thị

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

3


Danh sách


Tổ chức lưu trữ danh sách trong bộ 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

4


Mảng


Tập hợp các phần tử cùng kiểu dữ liệu, nằm liên tiếp
trong bộ nhớ



Có chỉ số bắt đầu từ 0




Giá trị mặc định của từng phần tử trong mảng quy định
theo từng kiểu đối tượng



Mảng là đối tượng



Kích thước: có thể là 1 hoặc nhiều chiều

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

5


Tạo mảng






Khai báo
<kiểu dữ liệu> [ ] <tên biến mảng>;
 Ví dụ: int [ ] array;
Khởi tạo

<kiểu DL> [ ] <tên biến mảng> = new <kiểu DL> [<số pt>];
 Ví dụ: int[ ] array = new int[5];
Mảng đối tượng
<kiểu đt> [ ] <tên biến mảng> = new <kiểu đt> [<số pt>];
 Ví dụ: Animal [ ] animals = new Animal [10];
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

6


Khởi tạo và truy xuất mảng


Có thể dùng dấu { } để khởi tạo giá trị cho các
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

7


Câu lệnh foreach



Dùng câu lệnh foreach để lặp lại việc truy xuất
từng phần tử trong 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

8


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

9


Chỉ mục đối tượng


Dùng từ khóa this với get và set trong 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


Chỉ mục đối tượng
public class MyList

{
private string [] str;
private int idx = 0;
public string this[int index]
{
get {return str[index];}
set {str[index] = value;}
}
public MyList(params string[] InitStr)
{
str = new String[256];
foreach (string s in InitStr)
str[idx++] = s;
}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

11


Chỉ mục đối tượng
public void Add(string st)
{
if (idx > str.Length)
return;
else
str[idx++] = st;
}
public int GetNumEntries()
{
return idx;

}
}//end class

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

12


Chỉ mục đối tượng
public class Test
{
static void Main()
{
MyList ml = new MyList("Cau truc du lieu",
"CSDL");
ml.Add("Lap trinh huong doi tuong");
ml.Add("Phan tich thiet ke he thong");
string sttest = "Co so du lieu";
ml[1] = sttest;
for (int i = 0; i < ml.GetNumEntries();i++)
Console.WriteLine("{0}", ml[i]);
}

}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

13


Chỉ mục đối tượng


Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

14


Bài tập
Thực hiện




Xây dựng lớp mảng số nguyên, thực hiện
việc tính tổng, tổng chẳn, tổng lẻ … trong
mảng
Xây dựng lớp Zoo chứa các động vật có
trong lớp Animal.

45 min
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

15


Các lớp đối tượng tập hợp (Collections)
Khái niệm
 Sử dụng lớp ArrayList, List<T>
 Hàng đợi (Queue), ngăn xếp (Stack)



Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

16


Khái niệm



Danh sách, hàng đợi, ngăn xếp là một số các CTDL
thông thường trong ứng dụng
Danh sách (List): là tập hợp các phần tử truy xuất bởi
chỉ mục (index)
Ví dụ: mảng; ArrayList

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

17


ArrayList Class


Hạn chế của mảng


Không linh động




Tốn bộ nhớ



Lớp ArrayList cho phép gia tăng số phần tử khi cần



Có thể chứa các phần tử dữ liệu không cùng kiểu.

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

18


ArrayList Class


Khai báo:


Thư viện
using System.Collection



ArrayList
ArrayList <Tên_biến> = new ArrayList();




Thư viện System.Collection

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

19


Các thuộc tính của ArrayList




Thuộc tính


Capacity



Count

Ghi chú:


Thuộc tính Capacity có giá trị mặc định là 16, khi số

phần tử lớn hơn, Capacity tự động nhân đôi.



Nếu gán giá trị cho Capacity < Count thì sẽ sinh ra lỗi

ArgumentOutofRangeException
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

20


Phương thức ArrayList Class


Add



Sort



AddRange



BinarySearch



Clear




Reverse



CopyTo



TrimToSize



Remove



RemoveAt



RemoveRange
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

21


ArrayList Class
public class Employee
{

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();
}
}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
22


ArrayList Class
Class Test
{
static void main()
{
ArrayList empArr = new ArrayList();
for(int i=0; i<5; i++)
empArr.Add(new Employee(i*5));
for(int i=0; iConsole.Write(“{0}”,empArr[i].ToString());
Console.WriteLine(“\nempArr.Capacity:{0}”,

empArr.Capacity);
}
}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

23


ArrayList Class


Kết quả:

0

5

10

15

20

empArr.Capacity: 16

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

24



List <T>


Là mảng đối tượng không giới hạn số phần tử.



Khai báo
List<kiểu DL> tên_biến = new
List<kiểu DL>;


Ví dụ:
List<Employee> empArray = new List<Emplyee>;

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

25


×