Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
672,5 KB
Nội dung
Chương 6– Mảng
Outline
6.1 Mảng - Arrays
6.2 Khai báo và định vị cho mảng
6.4 Một số ví dụ sử dụng mảng
6.5 Truyền giá trị của mảng bằng phương thức
6.6 Truyền giá trị của mảng theo tham trị và tham biến
6.7 Sắp xếp mảng
6.8 Tìm kiếm trên mảng
6.9 Mảng nhiều chiều
6.10 Cấu trúc lặp for/reach
6.1 Mảng - Arrays
Dạng cấu trúc dữ liệu tĩnh. Nó sẽ mang kích thước như khi được
khởi tạo.
Bao gồm các vùng nhớ kề nhau biểu diễn các dữ liệu có cùng kiểu
và cùng tên.
Khi truy nhập tới các phần tử của mảng, ta cần truy nhập theo tên
và vị trí của phần tử trong mảng.
Trong C#, mảng được xem là một đối tượng. Nghĩa là nó có các
phương thức, thuộc tính.
Lớp cung cấp các thuộc tính và phương thức cho mảng trong
C# là system. array
Kích thước của mảng chính là số phần tử có trong mảng
▪Phần tử đầu tiên của mảng là “phần tử thứ không” (zeroth
element).
▪Có sự khác nhau giữa phần tử thứ k của mảng có kích thước
n và phần tử k của mảng (k<=n):
Phần tử thứ k của mảng là phần tử có chỉ số là k-1.
Phần tử k của mảng có chỉ số là k
6.1 Mảng - Arrays
Các phương thức và thuộc tính trong lớp system. array
Các phương thức và thuộc tính trong lớp system. array
Một ví dụ của mảng
Tên của mảng : Đây
là mảng số nguyên
có tên là c
Chỉ số của mảng
6.2 Khai báo và định vị cho mảng
Người sử dụng xác định kiểu của mảng và thực hiện khai
báo mảng
Khai báo và khởi tạo mảng không nhất thiết phải nằm
trong cùng một câu lệnh
Trong mảng kiểu giá trị,mỗi phần tử chứa một giá trị thuộc
kiểu đã được khai báo.
Trong mảng kiểu tham chiếu,mỗi phần tử của mảng là
một tham chiếu tới đối tượng thuộc kiểu dữ liệu của mảng
6.2 Khai báo và định vị cho mảng
Mảng có thể được định vị dùng từ khoá new để xác định
số phần tử có thể có của mảng
Khởi tạo mảng với initializer lists
Định vị không gian cho mảng– số phần tử trong danh sách khởi
tạo quyết định kích thước của mảng
Các phần tử trong mảng được khởi tạo với giá trị trong danh
sách khởi tạo initializer list
6.4 Một số ví dụ sử dụng mảng
Khởi động và phân bố bộ nhớ cho mảng.
Tính tổng của các phần tử trong mảng.
Dùng biểu đồ để hiển thị dữ liệu mảng dạng đồ hoạ.
Sử dụng các phần tử của mảng như một bộ đếm.
Sử dụng mảng để phân tích kết quả đo đạc
1 // InitArray.cs
2 // Different ways of initializing arrays.
3
4 using System;
5 using System.Windows.Forms;
6
7 class InitArray
8 {
9 // main entry point for application
10 static void Main( string[] args )
11 {
12 string output = "";
13
14 int[] x; // declare reference to an array
15 x = new int[ 10 ]; // dynamically allocate array and set
16 // default values
17
18 // initializer list specifies number of elements
19 // and value of each element
20 int[] y = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
21
22 const int ARRAY_SIZE = 10; // named constant
23 int[] z; // reference to int array
24
25 // allocate array of ARRAY_SIZE (i.e., 10) elements
26 z = new int[ ARRAY_SIZE ];
27
28 // set the values in the array
29 for ( int i = 0; i < z.Length; i++ )
30 z[ i ] = 2 + 2 * i;
31
32 output += "Subscript\tArray x\tArray y\tArray z\n";
33
Khai báo mảng số
nguyên x
Chỉ định kích
thước của x là
10
Khai báo mảng số
nguyên y và khởi
tạo các giá trị của nó
Khai báo hằng số
ARRAY_SIZE
Khai báo mảng số
nguyên z
Khởi tạo kích thước z
là ARRAY_SIZE
Khởi tạo các giá trị của
z dùng một vòng lặp for
InitArray.cs
[...]... outputLabel.Text += " " + a[ i ]; ModifyArray( a ); // array is passed by reference Khai báo và khởi tạo mảng số nguyên a Gọi method ModifyArray, truyền tham số mảng theo kiểu tham chiếu Nội dung mảng a PassArray.cs 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 outputLabel.Text += "\n\nThe values of the modified array are:\n\t"; // display elements of array... components = null; Random randomNumber = new Random(); int[] frequency = new int[ 7 ]; Tạo đối tượng Random Khai báo một mảng số tự nhiên frequency và cho nó đủ bộ nhớ để giữ 7 số 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 public RollDie() { InitializeComponent(); } // Visual Studio NET generated code [STAThread] static void Main() { Application.Run(... outputLabel.Text += "Test passing firstArray reference by value"; outputLabel.Text += "\n\nContents of firstArray " + "before calling FirstDouble:\n\t"; 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 // print contents of firstArray for ( int i = 0; i < firstArray.Length; i++ ) outputLabel.Text += firstArray[ i ] + " "; // pass reference firstArray... void Main( string[] args ) { int[] responses = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 }; Khai báo và khởi tạo mảng số nguyên Với mỗi phần tử trong responses responses, và chia phần Khai báo tăng phần tử bộ nhớ tương ứng với frequencycho mảng số nguyên frequency answer int[] frequency = new int[ 11 ]; string output =... { 2, 6, 4, 8, 10, 12, 89, 68 , 45, 37 }; outputLabel.Text += "Data items in original order\n"; for ( int i = 0; i < a.Length; i++ ) outputLabel.Text += " " + a[ i ]; // sort elements in array a BubbleSort( a ); Khai báo và khởi tạo mảng các số nguyên a Nội dung output của mảng a Gọi method Bubble sort trên mảng a 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 } outputLabel.Text... method Main } // end class StudentPoll StudentPoll.cs 6. 5 Truyền giá trị của mảng bằng phương thức Truyền mảng như tham số cho phương thức bằng cách xác định tên của mảng (không có ngoặc đơn) Mảng được truyền bằng tham chiếu Các phần tử riêng biệt của mảng được truyền bằng giá trị 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 // PassArray.cs // Passing... phần tử tới mảng số Đặt mảng tham chiếu mảng nguyên mới chứa các giá trị 11, 12 và 13 ArrayReferenceTest.cs 6. 7 Sắp xếp mảng Sắp xếp dữ liệu là một phần quan trọng trong nhiều ứng dụng Bubble Sort : Sắp xếp nổi bọt –mảng kích thước n Mỗi lần duyệt,so sánh từng cặp hai phần tử liên tiếp Nếu phần tử đứng trước lớn hơn phần tử đứng sau thì đổi chỗ hai phần tử Dễ lập trình Duyệt mảng n lần... Dùng biểu đồ để hiển thị dữ liệu mảng dạng đồ hoạ Sử dụng các phần tử của mảng như một bộ đếm Thỉnh thoảng chương trình dùng mảng để tổng kết dữ liệu như bài toán tổng hợp kết quả của một sự nghiên cứu, đo đạc Sau đây là thí dụ minh hoạ về việc sử dụng mảng làm biến đếm trong bài toán gieo hạt xúc xắc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 //... BubbleSorter.cs 6. 8 Tìm kiếm trên mảng Thông thường các nhà lập trình làm việc với một lượng rất lớn dữ liệu lưu trên mảng Trong một số trường hợp, họ phải tìm kiếm một dữ liệu nào đó trên mảng Có hai loại tim kiếm chính : tìm kiếm tuyến tính và tìm kiếm nhị phân • Linear Search • Binary Search 6. 8.1 Tìm kiếm tuyến tính trên mảng Trả lại chỉ số của khoá tìm kiếm trên mảng Tìm kiếm tuần tự từ đầu mảng. .. tượng trong phương thức có ảnh hưởng đến đối tượng ngoài phương thức 6.6 Truyền giá trị của mảng theo tham trị và tham biến Từ khoá ref có thể dùng để truyền tham biến cho phương thức Kiểu giá trị biến không được copy – Thay đổi biến trong phương thức sẽ thay đổi biến ngoài phương thức Tham chiếu tới đối tượng không được copy –Thay đổi tham chiếu trong phương thức sẽ thay đổi tham chiếu ngoài .
Chương 6 – Mảng
Outline
6. 1 Mảng - Arrays
6. 2 Khai báo và định vị cho mảng
6. 4 Một số ví dụ sử dụng mảng
6. 5 Truyền giá trị của mảng bằng. thức
6. 6 Truyền giá trị của mảng theo tham trị và tham biến
6. 7 Sắp xếp mảng
6. 8 Tìm kiếm trên mảng
6. 9 Mảng nhiều chiều
6. 10 Cấu trúc lặp for/reach
6. 1 Mảng