You are on page 1of 22

Bài 2.

Hàm (Function),
Mảng (Array) và Tập hợp
(Collection)
Kiểu cấu trúc
□ Tập hợp của các kiểu dữ liệu đã có dưới 01 cái tên
chung.
□ VD: Sinh viên có mã (chuỗi), họ tên (chuỗi), ngày sinh
(ngày tháng), điểm trung bình (số thực), xếp loại
(chuỗi).
Kiểu cấu trúc (tt)
□ Sử dụng:
SinhVien sv;
sv.MaSV = “K29.103.010”; sv.HoTen = “Nguyen Van Teo”;
sv.NgayThang = new DateTime(1999, 5, 19);
sv.DiemTrungBinh = 7.81;
sv.XepLoai = “Kha”;
Phương thức/Hàm
□ Khai báo phương thức (hàm)
□ Truyền tham số dạng in (0)
□ Truyền tham số dạng out
□ Truyền tham số dạng ref
Khai báo phương thức
[modifiers] return_type MethodName([parameters])
{
// Thân phương thức
}
Ví dụ:
public static void Xuat(SinhVien sv)
{
Console.Write("Ma so: {0}. Ho ten: {1}", sv.MaSV,
sv.HoTen);
//Cau lenh xuat Sinh vien
}
Phương thức dạng “in”
□ Thân phương thức chỉ tham khảo giá trị của tham số không
thay đổi giá trị của tham số
□ Ví dụ:
public static void Xuat(SinhVien sv)
{
Console.Write("Ma so: {0}. Ho ten: {1}", sv.MaSV, sv.HoTen);
//Cau lenh xuat Sinh vien
}

□ Gọi hàm trong hàm Main: Xuat(sv1);


Phương thức dạng “out”
□ Thân phương thức cấp phát (khởi tạo) giá trị của tham số
trước khi sử dụng. Ra khỏi hàm giá trị của tham số thay đổi.

□ Ví dụ:

public static void Nhap(out SinhVien sv) {

sv= new SinhVien();

//Cau lenh nhap sinh vien }

□ Gọi trong hàm Main: Nhap(out sv2);


Phương thức dạng “ref”
□ Ra khỏi hàm giá trị của tham số sẽ thay đổi
□ Ví dụ:

public static void TinhDiemTrungBinh(ref StrHocSinh hs) {


hs.DTB = (hs.Toan+ hs.Van)/2;

□ Gọi trong hàm Main:


TinhDiemTrungBinh(ref hs);
Mảng - Array
□ Mảng (array) là tập hợp các phần tử có cùng
tên và cùng kiểu dữ liệu.
□ Các loại mảng:
□ Mảng 1 chiều
□ Mảng 2 chiều
□ Mảng nhiều chiều
□ Mảng Jagged Array
Mảng 1 chiều
□ Cú pháp:
<kieu_du_lieu> [ ] <ten_mang>;
□ Ví dụ:
int[] integers; // mảng kiểu số nguyên
integers = new int[32];
integers[0] = 35;// phần tử đầu tiên có giá trị 35
integers[31] = 432;// phần tử 32 có giá trị 432
string[] myArray = {"first element", "second element",
"third element"};
Làm việc với mảng 1 chiều
□ Lấy kích thước mảng:
int arrayLength = myIntegers.Length;
□ Sắp xếp mảng số nguyên:
Array.Sort(myIntegers);
□ Đảo ngược mảng:
Array.Reverse(myArray);
□ Duyệt mảng: dùng vòng lặp for/foreach
Bài tập 1
Mảng 2 chiều
□ Cú pháp:
<kieu_du_lieu> [,] <ten_mang>;
□ Ví dụ:
int[,] myRectArray = new int[2,3];
int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}};
//mảng 4 hàng 2 cột
string[,] beatleName = {
{"Lennon","John"},
{"McCartney","Paul"},
{"Harrison","George"},
{"Starkey","Richard"} };
Làm việc với mảng 2 chiều
□ Duyệt mảng:
double [, ] matrix = new double[10, 10];
for (int i = 0; i < 10; i++)
{
for (int j=0; j < 10; j++)
matrix[i, j] = 4;
}
Mảng nhiều chiều
□ Ví dụ:
string[,,] my3DArray;
Một số lưu ý khi sử dụng mảng
- Sử dụng thuộc tính Length của mảng thay
vì phải nắm số phần tử trong mảng
- Cấu trúc lặp foreach hữu hiệu hơn là dùng
for !!!
- Lấy số chiều 1 mảng : sử dụng thuộc tính
rank
Bài tập 2
Khai báo mảng số nguyên 2 chiều 4 dòng 5 cột.
Viết chương trình:
□ Nhập vào các phần tử của mảng (giá trị = số
thứ tự dòng + số thứ tự cột)
□ In các giá trị của mảng
□ In giá trị nhỏ nhất/lớn nhất trong mảng
□ In tổng số các giá trị, giá trị trung bình
COLLECTIONS – Tập hợp
□ Là cấu trúc lưu trữ các phần tử có kiểu dữ liệu
khác nhau và không hạn chế số lượng phần tử.
□ Các lớp có kiểu tập hợp nằm trong namespace
System.Collections bao gồm:
□ List
□ ArrayList
□ HashTable
□ Queue
□ Stack
LIST – Danh sách
ArrayList – Mảng danh sách
ArrayList Members
HashTable

You might also like