MẢNG - ARRAYaspnhatnghe.weebly.com/uploads/1/6/9/5/16954000/asp.net... · 2016-10-29 · Mảng...

16
MẢNG - ARRAY Lương Trần Hy Hiến

Transcript of MẢNG - ARRAYaspnhatnghe.weebly.com/uploads/1/6/9/5/16954000/asp.net... · 2016-10-29 · Mảng...

MẢNG - ARRAY

Lương Trần Hy Hiến

Mảng

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

Viết hàm nhập mảng 1 chiều các số nguyên

Viết hàm xuất mảng 1 chiều các số nguyên

Viết hàm tính tổng các phần tử trong mảng

Viết hàm tìm số lớn nhất trong mảng 1 chiều

Viết hàm đếm số lượng số nguyên dương chẵn có trong

mảng

Viết hàm main thực hiện:

Khai báo mảng

Gọi hàm nhập

Gọi hàm xuất

In kết quả tổng

In số lớn nhất

In số lượng số nguyên dương chẵn

Slide 5

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

Slide 10

COLLECTIONS

www.lopasp.tk

11

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

12

List

List<kieu_DL> mylist = new List<kieu_DL>();

Phải chỉ định rõ kiểu dữ liệu khi dùng. VD:List<string> mylist = new List<string>();

13

Method / Property Diễn giải

Add() Thêm 01 phần tử

Capacity Tổng số phần tử tối đa

Clear() Xóa tất cả phần tử

Contains() Xác định 1 phần tử có trong danh sách hay không?

Count Số lượng phần tử thật sự

Insert() Chèn 1 phần tử vào vị trí cụ thể

RemoveAt() Xóa phần tử tại vị trí

Sort() Sắp xếp các phần tử

ArrayList

Không cần chỉ định kiểu khi khai báo

Các phần tử có thể có kiểu dữ liệu khác nhau.

ArrayList birds = new ArrayList();

birds.Add(“cat”);

birds.Add( 10952 );

foreach (Bird b in birds)

b.ToString();

14

ArrayList Members

Some Methods:

BinarySearch()

IndexOf()

Sort()

ToArray()

Remove()

RemoveAt()

Insert()

Some Properties:

Count

Capacity

IsFixedSize

IsReadOnly

IsSynchronized

HashTable

Là Kiểu từ điển

Mỗi phần tử bao gồm 01 cặp [key-value]

Truy xuất nhanh.

Các cặp key không trùng nhauHashtable ht = new Hashtable();

ht.Add(“masp", “SP001");

ht.Add(“soluong”, 10);

ht.Add(“gia", 123.45);

foreach (DictionaryEntry de in ht)

{

s += string.Format(“kqy={0}, value = {1}”,

de.Key, de.Value);

}

16

Key Value

masp SP001

soluong 10

gia 123.45