Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
176,59 KB
Nội dung
Câu lệnh lặp foreach Câu lệnh lặp foreach với người học ngơn ngữ C, từ khóa sử dụng ngôn ngữ Visual Basic Câu lệnh foreach cho phép lặp qua tất mục mảng hay tập hợp Cú pháp sử dụng lệnh lặp foreach sau: foreach ( in ) { // thực thông qua tương ứng với // mục mảng hay tập hợp } Do vậy, cải tiến ví dụ 9.1 trước cách thay việc sử dụng vòng lặp for vòng lặp foreach để truy cập đến thành phần mảng Ví dụ 9.2: Sử dụng foreach namespace Programming_CSharp { using System; // tạo lớp đơn giản để lưu trữ mảng public class Employee { // khởi tạo lấy tham số public Employee( int empID ) { this.empID = empID; } 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”); } } } } Kết ví dụ 9.2 tương tự 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 mảng, sử dụng biến đếm tạm thời để truy cập đến thành phần mảng: for (int i = ; i < empArray.Length; i++) { Console.WriteLine(empArray[i].ToString()); } Thay vào ta sử dụng foreach , vịng lặp tự động trích mục mảng gán tạm vào 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 trích từ mảng có kiểu liệu tương ứng Do sử dụng thành viên public đối tượng Mảng đa chiều Từ đầu chương đến nói đến mảng số nguyên hay mảng đối tượng Tất mảng mảng chiều Mảng chiều thành phần đơn giản đối tượng kiểu giá trị hay đối tượng tham chiếu Mảng tổ chức phức tạp thành phần mảng khác, việc tổ chức gọi mảng đa chiều Mảng hai chiều tổ chức thành dịng cột, dịng tính theo hàng ngang mảng, cột tính theo hàng dọc mảng Mảng ba chiều tạo thường sử dụng khó hình dung Trong mảng ba chiều dịng 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 kích thước: mảng dịng mảng có kích thước với Mảng hai hay nhiều hai chiều Mảng đa chiều khơng kích thước: mảng dịng khơng kích thước với Mảng đa chiều kích thước Mảng đa chiều kích thước cịn gọi mảng hình chữ nhật (rectanguler array) Trong mảng hai chiều cổ điển, chiều tính số dịng mảng chiều thứ hai tính số cột mảng Để khai báo mảng hai chiều, sử dụng cú pháp theo sau: [,] Ví dụ để khai báo mảng hai chiều có tên myRectangularArray để chứa hai dòng ba cột số nguyên, viết sau: int [ , ] myRectangularArray; Ví dụ tiếp sau minh họa việc khai báo, tạo thể hiện, khởi tạo in nội dung hình mảng hai chiều Trong ví dụ này, vịng lặp for sử dụng để khởi tạo thành phần 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 số cột 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 thành phần 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 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]); } } } } } Kết quả: rectangularArray[0,0] = rectangularArray[0,1] = rectangularArray[0,2] = rectangularArray[1,0] = rectangularArray[1,1] = rectangularArray[1,2] = rectangularArray[2,0] = rectangularArray[2,1] = rectangularArray[2,2] = rectangularArray[3,0] = rectangularArray[3,1] = rectangularArray[3,2] = - Trong ví dụ này, khai báo hai giá trị: const int rows = 4; const int columns = 3; hai giá trị sử dụng để khai báo số chiều mảng: int [,] rectangularArray = new int[rows, columns]; Lưu ý cú pháp này, dấu ngoặc vuông int[,] khai báo kiểu liệu mảng số nguyên, dấu phẩy (,) mảng hai chiều (hai dấu phẩy khai báo mảng ba chiều, nhiều nữa) Việc tạo thể thực mảng lệnh new int [rows,columns] để thiết lập kích thước chiều Ở khai báo tạo thể kết hợp với Chương trình khởi tạo tất giá trị thành phần mảng thơng qua hai vịng lặp for Lặp thơng qua cột dịng Do đó, thành phần khởi tạo rectangularArray[0,0], rectangularArray[0,1] đến rectangularArray[0,2] Một điều thực xong chương trình chuyển qua thực tiếp dòng tiếp tục: rectangularArray[1,0], rectangularArray[1,1], rectangularArray[1,2] Cho đến tất cột tất dòng duyệt qua tức tất thành phần mảng khởi tạo Như biết, khởi tạo mảng chiều cách sử dụng danh sách giá trị bên dấu ngoặc ({}) Chúng ta 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, khởi tạo thành phần thơng qua danh sách giá trị ngoặc, sau in nội dung nội dung Ví dụ 9.5: Khởi tạo mảng đa chiều - 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 đị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 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] = rectangularArray[0,1] = rectangularArray[0,2] = rectangularArray[1,0] = rectangularArray[1,1] = rectangularArray[1,2] = rectangularArray[2,0] = r e c t a n g u l a rArray[2,1] = rectangularArray[2,2] = rectangularArray[3,0] = rectangularArray[3,1] = 10 rectangularArray[3,2] = 11 Ví dụ tương tự ví dụ 9.4, ví dụ thực việc khởi tạo trực tiếp tạo thể hiện: int[,] rectangularArray = { {0,1,2}, {3,4,5}, {6,7,8},{9,10,11} }; Giá trị gán thông qua bốn danh sách ngoặc móc, số có ba thành phần, bao hàm mảng 4x3 Nếu viết sau: int[,] rectangularArray = { {0,1,2,3}, {4,5,6,7}, {8,9,10,11} }; tạo mảng 3x4 ... rectangularArray[1,1] = rectangularArray[1 ,2] = rectangularArray [2, 0] = rectangularArray [2, 1] = rectangularArray [2, 2] = rectangularArray[3,0] = rectangularArray[3,1] = rectangularArray[3 ,2] = ... rectangularArray[0 ,2] = rectangularArray[1,0] = rectangularArray[1,1] = rectangularArray[1 ,2] = rectangularArray [2, 0] = r e c t a n g u l a rArray [2, 1] = rectangularArray [2, 2] = rectangularArray[3,0]... rectangularArray[0,1] đến rectangularArray[0 ,2] Một điều thực xong chương trình chuyển qua thực tiếp dòng tiếp tục: rectangularArray[1,0], rectangularArray[1,1], rectangularArray[1 ,2] Cho đến tất cột tất dòng