1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Mảng, Chỉ Mục, Tập Hợp phần 2 ppt

11 329 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Câu lệnh lặp foreach
Thể loại Bài thuyết trình
Định dạng
Số trang 11
Dung lượng 176,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cú pháp sử dụng lệnh lặp foreach như sau: foreach in { // thực hiện thông qua tương ứng với // từng mục trong mảng hay tập hợp } Do vậy, chúng ta có thể cải tiến ví dụ 9.1 trước bằ

Trang 1

Câu lệnh lặp foreach

Câu lệnh lặp foreach khá mới với những người đã học ngôn ngữ C, từ khóa này được sử dụng trong ngôn ngữ Visual Basic Câu lệnh foreach cho phép chúng ta lặp

qua tất cả các mục trong một mảng hay trong một tập hợp

Cú pháp sử dụng lệnh lặp foreach như sau:

foreach (<kiểu dữ liệu thành phần> <tên truy cập> in <mảng/tập hợp> )

{

// thực hiện thông qua <tên truy cập> tương ứng với

// từng mục trong mảng hay tập hợp

}

Do vậy, chúng ta có thể cải tiến ví dụ 9.1 trước bằng cách thay việc sử dụng vòng lặp

for

bằng vòng lặp foreach để truy cập đến từng thành phần trong mảng

Ví dụ 9.2: Sử dụng foreach

-

namespace Programming_CSharp

{

using System;

// tạo một lớp đơn giản để lưu trữ trong mảng

public class Employee

{

// bộ khởi tạo lấy một tham số

public Employee( int empID )

{

this.empID = empID;

}

Trang 2

public override string ToString()

{

return empID.ToString();

}

// biến thành viên private

private int empID;

private int size;

}

public class Tester

{

static void Main()

{

int[] intArray;

Employee[]

empArray; intArray =

new int[5];

empArray = new Employee[3];

// tạo đối tượng đưa vào mảng

for( int i = 0; i < empArray.Length; i++) {

empArray[i] = new Employee(i+10); }

// xuất mảng nguyên

foreach (int i in

intArray)

{

Console.Write(i.ToString()+”\t”); }

// xuất mảng Employee

foreach ( Employee e in empArray) {

Console.WriteLine(e.ToString()+”\t”); }

}

}

}

Trang 3

-

Kết quả của ví dụ 9.2 cũng tương tự như ví dụ 9.1 Tuy nhiên, với việc sử dụng vòng

lặp for

ta phải xác định kích thước của mảng, sử dụng biến đếm tạm thời để truy cập đến từng thành phần trong mảng:

Trang 4

for (int i = 0 ; i < empArray.Length; i++)

{

Console.WriteLine(empArray[i].ToString());

}

Thay vào đó ta sử dụng foreach , khi đó vòng lặp sẽ tự động trích ra từng mục tuần tự

trong mảng và gán tạm vào một tham chiếu đối tượng khai báo ở đầu vòng lặp:

foreach ( Employee e in empArray)

{

Console.WriteLine(e.ToString()+”\t”);

}

Đối tượng được trích từ mảng có kiểu dữ liệu tương ứng Do đó chúng ta có thể sử dụng bất

cứ thành viên public của đối tượng

Mảng đa chiều

Từ đầu chương đến giờ chúng ta chỉ nói đến mảng các số nguyên hay mảng các đối tượng Tất cả các mảng này đều là mảng một chiều Mảng một chiều trong đó các thành phần của nó chỉ đơn giản là các đối tượng kiểu giá trị hay đối tượng tham chiếu Mảng có thể được tổ chức phức tạp hơn trong đó mỗi thành phần là một mảng khác, việc tổ chức này gọi là mảng đa chiều

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 do khó hình dung Trong mảng ba chiều những dòng bây giờ là các mảng hai chiều

Ngôn ngữ C# hỗ trợ hai kiểu mảng đa chiều là:

Mảng đa chiều cùng kích thước: trong mảng này mỗi dòng trong mảng có cùng kích thước với nhau Mảng này có thể là hai hay nhiều hơn hai chiều

Mảng đa chiều không cùng kích thước: trong mảng này các dòng có thể không cùng kích thước với nhau

Mảng đa chiều cùng kích thước

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) Trong mảng hai chiều cổ điển, chiều đầu tiên được tính bằng số dòng của mảng và chiều thứ hai được tính bằng số cột của mảng

Để khai báo mảng hai chiều, chúng ta có thể sử dụng cú pháp theo sau:

<kiểu dữ liệu> [,] <tên mảng>

Ví dụ để khai báo một mảng hai chiều có tên là myRectangularArray để chứa hai dòng

và ba cột các số nguyên, chúng ta có thể viết như sau:

Trang 5

int [ , ] myRectangularArray;

Ví dụ tiếp sau đây minh họa việc khai báo, tạo thể hiện, khởi tạo và in nội dung ra

màn hình của một mảng hai chiều Trong ví dụ này, vòng lặp for được sử dụng để

khởi tạo các thành phần trong mảng

Ví dụ 9.4: Mảng hai chiều

-

namespace Programming_CSharp

{

using System;

public class Tester

{

static void Main()

{

// khai báo số dòng và số cột của mảng

const int rows = 4;

const int columns = 3;

// khai báo mảng 4x3 số nguyên

int [,] rectangularArray = new int[rows, columns];

// khởi tạo các thành phần trong mảng

for(int i = 0; i < rows; i++)

{

for(int j = 0; j < columns; j++) {

rectangularArray[i,j] = i+j;

} }

// xuất nội dung ra màn hình

for(int i = 0; i < rows; i++)

{

for(int j = 0; j < columns; j++) {

Console.WriteLine(“rectangularArray[{0},{1}] = {2}”,

i, j, rectangularArray[i, j]);

} }

}

Trang 6

} }

Trang 7

-

Kết quả:

rectangularArray[0,0] = 0

rectangularArray[0,1] = 1

rectangularArray[0,2] = 2

rectangularArray[1,0] = 1

rectangularArray[1,1] = 2

rectangularArray[1,2] = 3

rectangularArray[2,0] = 2

rectangularArray[2,1] = 3

rectangularArray[2,2] = 4

rectangularArray[3,0] = 3

rectangularArray[3,1] = 4

rectangularArray[3,2] = 5

-Trong ví dụ này, chúng ta khai báo hai giá trị:

const int rows = 4;

const int columns = 3;

hai giá trị này được sử dụng để khai báo số chiều của mảng:

int [,] rectangularArray = new int[rows, columns];

Lưu ý trong cú pháp này, dấu ngoặc vuông trong int[,] chỉ ra rằng đang khai báo một kiểu dữ liệu là mảng số nguyên, và dấu phẩy (,) chỉ ra rằng đây là mảng hai chiều (hai dấu phẩy khai báo mảng ba chiều, và nhiều hơn nữa) Việc tạo thể hiện thực sự

của mảng ở lệnh new int [rows,columns] để thiết lập kích thước của mỗi chiều Ở

đây khai báo và tạo thể hiện được kết hợp với nhau

Chương trình khởi tạo tất cả các giá trị các thành phần trong mảng thông qua hai

vòng lặp for Lặp thông qua mỗi cột của mỗi dòng Do đó, thành phần đầu tiên

được khởi tạo là rectangularArray[0,0], tiếp theo bởi rectangularArray[0,1] và đến rectangularArray[0,2] Một khi điều này thực hiện xong thì chương trình sẽ chuyển qua thực hiện tiếp ở dòng tiếp tục: rectangularArray[1,0], rectangularArray[1,1], rectangularArray[1,2] Cho đến khi tất cả các cột trong tất cả các dòng đã được duyệt qua tức là tất cả các thành phần trong mảng đã được khởi tạo

Như chúng ta đã biết, chúng ta có thể khởi tạo mảng một chiều bằng cách sử dụng danh sách các giá trị bên trong dấu ngoặc ({}) Chúng ta cũng có thể làm tương tự với mảng hai chiều Trong ví dụ 9.5 khai báo mảng hai chiều rectangularArray, và

Trang 8

khởi tạo các thành phần của nó thông qua các danh sách các giá trị trong ngoặc, sau đó

in ra nội dung của nội dung

Ví dụ 9.5: Khởi tạo mảng đa chiều

Trang 9

-namespace Programming_CSharp

{

using System;

public class Tester

{

static void Main()

{

// khai báo biến lưu số dòng số cột mảng

const int rows = 4;

const int columns = 3;

// khai báo và định nghĩa mảng 4x3

int[,] rectangularArray = {

{0,1,2}, {3,4,5}, {6,7,8},{9,10,11}

};

// xụất nội dung của mảng

for( int i = 0; i < rows; i++)

{

for(int j = 0; j < columns; j++) {

Console.WriteLine(“rectangularArray[{0},{1}] = {2}”,

i, j, rectangularArray[i,j]);

} }

}

}

}

-

Kết quả:

rectangularArray[0,0] = 0

rectangularArray[0,1] = 1

rectangularArray[0,2] = 2

rectangularArray[1,0] = 3

rectangularArray[1,1] = 4

rectangularArray[1,2] = 5

rectangularArray[2,0] = 6

r e c t a n g u l a

Trang 10

rArray[2,1] = 7

rectangularArray[2,2] = 8 rectangularArray[3,0] = 9

Trang 11

rectangularArray[3,1] = 10

rectangularArray[3,2] = 11

-

Ví dụ trên cũng tương tự như ví dụ 9.4, nhưng trong ví dụ này chúng ta thực hiện việc khởi tạo trực tiếp khi tạo các thể hiện:

int[,] rectangularArray =

{

{0,1,2}, {3,4,5}, {6,7,8},{9,10,11}

};

Giá trị được gán thông qua bốn danh sách trong ngoặc móc, mỗi trong số đó là có ba thành phần, bao hàm một mảng 4x3

Nếu chúng ta viết như sau:

int[,] rectangularArray =

{

{0,1,2,3}, {4,5,6,7}, {8,9,10,11}

};

thì sẽ tạo ra một mảng 3x4

Ngày đăng: 26/01/2014, 03:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm