intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Mảng, Chỉ Mục, Tập Hợp phần 2

Chia sẻ: Tuan Bui Nghia | Ngày: | Loại File: PDF | Số trang:11

70
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Mảng, Chỉ Mục, Tập Hợp phần 2

  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 ( 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ằ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; }
  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”); } } } }
  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:
  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: [,] 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:
  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]); } } }
  6. } }
  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à
  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. -----------------------------------------------------------------------------
  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]); } } } } } ------------------------------------------------------------------------- r ---- e Kết quả: c rectangularArray[0,0] = 0 t rectangularArray[0,1] = 1 a rectangularArray[0,2] = 2 n rectangularArray[1,0] = 3 g rectangularArray[1,1] = 4 u rectangularArray[1,2] = 5 l rectangularArray[2,0] = 6 a
  10. rArray[2,1] = 7 rectangularArray[2,2] = 8 rectangularArray[3,0] = 9
  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.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2