Chương 5: Mảng, chỉ mục
và tập hợp
Nội dung chương 4
1. Mảng
2. Câu lệnh lặp foreach
3. Mảng đa chiều
4. Lớp System.Array
5. Bộ chỉ mục
6. Tập hợp (collection)
1. Mảng
1. Mảng
Nội dung:
Khai báo mảng
Giá trị mặc định
Truy cập các thành phần trong mảng
Khởi tạo thành phần trong mảng
Sự dụng từ khóa params
1. Mảng
Mảng là gì ?
Mảng là một tập hợp có thứ tự của những đối tượng,
Các đối tượng này cùng một kiểu.
Mảng có thể sử dụng các phương thức và thuộc tính.
Cú pháp được kết hợp giữa cú pháp khai báo mảng
của C và định nghĩa lớp của C#. Do đó các đối tượng của
mảng có thể truy cập những phương thức và thuộc tính
của lớp System.Array.
1. Mảng
Tại sao phải sử dụng mảng?
Ví dụ:
Viết chương trình
nhập vào 3 số a,
b, c và tìm số lớn
nhất
static void Main(string[] args)
{
int a, b, c;
Console.Write("Nhap vao so a");
a = int.Parse(Console.ReadLine());
Console.Write("Nhap vao so b");
b = int.Parse(Console.ReadLine());
Console.Write("Nhap vao so c");
c = int.Parse(Console.ReadLine());
int max = a;
if (max < b) max = b;
if (max < c) max = c;
Console.ReadLine();
}
1. Mảng
Tại sao phải sử dụng mảng?
Nhược điểm của cách này:
- Có sự rời rạc trong lưu trữ của biến giá trị
- Trong trường hợp phải tìm số lớn nhất trong 1000 số
thì giải pháp bên là không khả thi
buộc phải sử dụng mảng để lưu trữ, kết hợp với vòng
lặp phục vụ cho quá trình tính toán
1. Mảng
Cú pháp khai báo mảng
1. Khai báo mảng:
[] ;
Cú pháp 1: cho phép khai báo 1 mảng thuộc kiểu dữ liệu
xác định
Vi dụ: float [] diemthi;
Sau khi đã khai báo xong mảng, tiến hành tạo đối tượng
của mảng bằng cách sử dụng từ khóa new như sau:
= new [];
Ví dụ: diemthi = new float[10];
Khai báo này sẽ thiết lập bên trong bộ nhớ một mảng
chứa mười số thực
1. Mảng
2. Khai báo và khởi tạo mảng đồng thời
[] = new [];
Cú pháp 2: cho phép khai báo và khởi tạo 1 mảng đồng
thời thông qua từ khóa new.
Vi dụ:
int[] thu=new int[38];
char[] kt=new char[26];
1. Mảng
3. Tạo mảng với các giá trị ban đầu
[] = {,,…, }
Cú pháp 3: cho phép khai báo 1 mảng có số phần tử
tương ứng với các giá trị được liệt kê trong tập hợp.
Ví dụ:
string[] thuTT={“hai”,”ba”,”tu”,”nam”,”sau”,”bay”,”cn”};
int[] myIntArray=new int [6]{1,2,3,4,5,6};
1. Mảng
Lưu ý: sau khi ta khởi tạo mảng bằng toán tử new các
phần tử của mảng sẽ mang các giá trị mặc định như bảng
bên
Kiểu dữ liệu Giá trị mặc định
Ví dụ:
int []sn = new int[5];
tạo ra mảng sn có 5 phần tử số
nguyên và mỗi phần tử có gt là 0
int, long,
byte,…
bool
0
False
char
‘\0’ (null)
enum
0
reference
Null
1. Mảng
Tuy nhiên, nếu mảng tạo ra là mảng kiểu tham chiếu thì
các giá trị mặc định sẽ không được gán.
Ví dụ: sinhvien[] msv = new sinhvien[5];
Kiểu dữ liệu Giá trị mặc định
int, long,
byte,…
bool
0
False
char
‘\0’ (null)
enum
0
reference
Null
1. Mảng
Do đó, để sử dụng mảng này ta phải tạo và gán đối tượng
sinhvien cho từng thành phần tham chiếu trong mảng.
Ví dụ:
for (int i=0;i<5;i++)
{
sinhvien[i]=new sinhvien();
sinhvien[i].nhap();
}
Sử dụng toán tử []
để lấy chỉ số
Khởi tạo thông qua
constructor
1. Mảng
Để truy cập các thành phần trong mảng ta sử dụng toán
tử chỉ mục []. Với phần từ đầu tiên của mảng mang chỉ số 0
Có thể dùng thuộc tính length để xác định chiều dài của
mảng.
Ví dụ:
int[] mang=new int[6]{1,2,3,4,5,6};
for(int i=0; i 0);
Console.Write(doc);
Console.ReadLine();
}
1. Mảng
Bài tập 2: Viết chương trình nhập vào 1 năm dương lịch, in
ra năm âm lịch tương ứng.
Biết năm âm lịch được được kết hợp bởi can và chi. Can và
chi được mô tả lần lượt như sau:
Can=“Giáp,Ất,Bính,Đinh,Mậu,Kỷ,Canh,Tân,Nhâm,Quý”
Chi=“Tý,Sửu,Dần,Mão,Thìn,Tị,Ngọ,Mùi,Thân,Dậu,Tuất,Hợi”
Ví dụ:
x= 2013
in ra: Nam duong lich: 2013 -> am lich: quý tị
1. Mảng
Từ khóa Params:
- Được sử dụng khi không xác định được số lượng đối số
truyền vào cho một phương thức.
- Cho phép truyền một số biến của tham số mà không
cần thiết phải tạo mảng.
Ví dụ:
public void DisplayVals(params int[] intVals)
{
for(int i=0;i- Xem thêm -