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

Bài giảng Lập trình Windows - Chương 8: Arrays

Chia sẻ: Hấp Hấp | Ngày: | Loại File: PPT | Số trang:83

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

Bài giảng "Lập trình Windows - Chương 8: Arrays" trình bày các nội dung: Giới thiệu, khai báo, cách sử dụng mảng, các giải thuật cơ bản trên mảng, các phương thức của mảng, các đối tượng mảng trên C#. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình Windows - Chương 8: Arrays

  1. 1 Chương 8 ­ Arrays • Giới thiệu • Khai báo • Cách sử dụng mảng • Các giải thuật cơ bản trên mảng • Các phương thức của mảng • Các đối tượng mảng trên C#
  2. 2 Giới Thiệu • Mảng là kiểu dữ liệu có cấu trúc bao  gồm  nhiều phần tử cùng kiểu và được đặt liên  tiếp trong vùng nhớ. • Mỗi  phần  tử  của  mảng  được  tham  chiếu  thông  qua  chỉ  mục  (index).  Nếu  mảng  có  n  phần tử thì phần tử đầu tiên có chỉ mục là 0  và  phần  tử  cuối  có  chỉ  mục  là  n­1.  Cách  tham  chiếu  một  phần  tử  là  tenmang[chỉ  mục]. • Mảng  có  kích  thước  là  số  phần  tử  trong  mảng.
  3. Giới Thiệu 3 c[ 0 ] ­45 (0) Janet Baker c[ 1 ] 6 Name of array  (1) George Lee (Note that all  c[ 2 ] 0 (2) Sue Li elements of this  c[ 3 ] 72 (3) Samuel array have the  c[ 4 ] 1543 (4) Hoosier same name, c) c[ 5 ] ­89 (5) Sandra Weeks c[ 6 ] 0 (6) William Macy c[ 7 ] 62 (7) Andy Harrison Position number  c[ 8] ­3 (8) Ken Ford (index or  subscript) of the  c[ 9 ] 1 (9) Denny Franks element within  c[ 10 ] 6453 Shawn James array c c[ 11 ] ­78 Fig. 7.1 A 12­element array. 
  4. 4 Khai báo và khởi tạo Mảng • Khai báo   [ ]  ; Ex:  int[ ] c;  • Tạo mảng, gán giá trị cho biến mảng   = new  ; Ex :  c = new int[ 12 ];  int [ ] c = new int[ 12 ];
  5. 5 Ví dụ sử dụng mảng  void Main( string[] args ) { string output = ""; int[] x; x = new int[ 10 ]; int[] y = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; const int ARRAY_SIZE = 10; int[] z; z = new int[ ARRAY_SIZE ]; for ( int i = 0; i < z.Length; i++ ) z[ i ] = 2 + 2 * i; for ( int i = 0; i < ARRAY_SIZE; i++ ) output += z[ i ] + "\t"; }
  6. 6 Ví dụ sử dụng mảng  int[] aa == int[] {{ 1, 2, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10 10 }; }; int total int total == 0; 0; for (( int for int ii == 0; 0; ii
  7. 7 Truyền Mảng vào Hàm (Phương thức) • Để truyền Mảng vào Hàm, ta chỉ định tên của  mảng. • Có 2 cách truyền: – Truyền theo giá trị (Value) – Truyền theo địa chỉ (Reference)
  8. 8 Truyền Mảng vào Hàm (Phương thức) // method modifies the array it receives, // original will be modified public void ModifyArray( int[] b ) { for ( int j = 0; j < b.Length; j++ ) b[ j ] *= 2; }
  9. 9 Truyền Mảng vào Hàm (Phương thức) int[] a = { 1, 2, 3, 4, 5 }; outputLabel.Text = "Effects of passing entire array " + "call-by-reference:\n\nThe values of the original " + "array are:\n\t"; for ( int i = 0; i < a.Length; i++ ) outputLabel.Text += " " + a[ i ]; ModifyArray( a );// array is passed by reference ModifyElement( a[ 3 ] ); // array element passed call-by-value
  10. 10 Truyền Mảng vào Hàm (Phương thức) • Truyền theo giá trị – Tạo một bản sao của biến mảng – Bất  kỳ  thay  đổi  nào  của  biến  mảng  trong  hàm  cũng không ảnh hưởng đến giá trị của biến gốc. • Truyền theo địa chỉ – Tạo ra một bản sao tham khảo tới đối tượng.  – Bất kỳ những thay đổi tới những tham khảo trong  phương thức không làm ảnh hưởng đến biến gốc. – Bất  kỳ  những  thay  đổi  nội  dung  của  đối  tượng  trong phương thức làm ảnh hưởng đến đối tượng  ngoài phương thức.
  11. Các giải thuật cơ bản trên mảng  11 • Các thao tác cơ bản trên mảng 1 chiều: • Nhập giá trị cho các phần tử mảng. • Xuất giá trị các phần tử mảng (ra màn hình). • Thêm 1 phần tử vào mảng. • Xóa một phần tử ra khỏi mảng. • Tìm kiếm trên mảng. • Sắp xếp mảng.
  12. 12 Nhập xuất Array Nhập, xuất thực chất là gán hoặc lấy giá trị của array  tại vị trí nào đó. Thông thường nhập xuất mảng kết  hợp vòng lặp. Ví dụ nhập mảng: int [] A= new int [50]; Random n = new Random();             int i=0;             while (i 
  13. 13 Nhập xuất Array Ví dụ truy xuất Array: long t = 0;             while (i 
  14. 14 Nhập xuất Array Truy xuất các phần tử trong array dùng cấu trúc  lặp for each rất hiệu quả. Cú pháp foreach ( type identifier in arrayName )  statement
  15. 15 Nhập xuất Array Truy xuất qua vị trí Truy xuất qua foreach long tongmang(int[] A) long tongmangForeach(int[] A)         {         {             int i = 0, x;             long t = 0;             long t = 0;             foreach (int x in A)             while (i 
  16. 16 Sắp xếp Mảng ­ Sorting Arrays • Sắp xếp các phần tử tăng dần private void sap_xep_tang_dan() {    int i, j; for (i = 0; i 
  17. 17 Sắp xếp Mảng ­ Sorting Arrays
  18. 18 1 // Fig. 7.10: BubbleSorter.cs 2 // Sorting an array's values into ascending order. 3 using System; 4 using System.Drawing; 5 6 using System.Collections; using System.ComponentModel; BubbleSort 7 8 using System.Windows.Forms; using System.Data; er.cs 9 10 public class BubbleSorter : System.Windows.Forms.Form 11 { 12 private System.Windows.Forms.Button sortButton; 13 private System.Windows.Forms.Label outputLabel; 14 15 // Visual Studio .NET generated code Declare and initialize array a 16 17 [STAThread] 18 static void Main() Output the contents of array a 19 { 20 Application.Run( new BubbleSorter() ); 21 } Call method Bubble sort on array a 22 23 private void sortButton_Click( object sender, 24 System.EventArgs e ) 25 { 26 int[] a = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; 27 28 outputLabel.Text += "Data items in original order\n"; 29 30 for ( int i = 0; i < a.Length; i++ ) 31 outputLabel.Text += " " + a[ i ]; 32 33 // sort elements in array a 34 BubbleSort( a ); 35
  19. 19 36 outputLabel.Text += "\n\nData items in ascending order\n"; 37 38 for ( int i = 0; i < a.Length; i++ ) 39 outputLabel.Text += " " + a[ i ]; Swaps two elements  40 41 } // end method sortButton_Click of an array If an given element is bigger  BubbleSort 42 Output sorted array a then the following element,  er.cs 43 // sort the elements of an array with bubble sort 44 public void BubbleSort( int[] b ) swap the elements 45 { 46 for ( int pass = 1; pass < b.Length; pass++ ) // passes 47 48 for ( int i = 0; i < b.Length - 1; i++ ) // one pass 49 50 if ( b[ i ] > b[ i + 1 ] ) // one comparison 51 Swap( b, i ); // one swap 52 } 53 Perform contents of for loop  Perform b.Length­1 passes 54 // swap two elements of an array for each element of array b 55 public void Swap( int[] c, int first ) 56 { 57 int hold; // temporary holding area for swap 58 59 hold = c[ first ]; 60 c[ first ] = c[ first + 1 ]; 61 c[ first + 1 ] = hold; 62 } 63 }
  20. 20 Tìm kiếm: Linear Search and Binary Search • Tìm kiếm tuyến tính: Linear Search • Tìm kiếm nhị phân: Binary Search
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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