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

Bài giảng Lập trình giao diện: Chương 6 - Nguyễn Thị Mai Trang

23 3 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

Định dạng
Số trang 23
Dung lượng 449,43 KB

Nội dung

Bài giảng Lập trình giao diện: Chương 6 với mục tiêu giúp các bạn có thể mô tả, khởi tạo và sử dụng thành thạo kiểu dữ liệu mảng trong lập trình; Mô tả, khởi tạo và sử dụng thành thạo các kiểu dữ liệu tập hợp trong .Net; Mô tả, khởi tạo và sử dụng thành thạo kiểu dữ liệu chuỗi trong lập trình; Sử dụng thành thạo lớp StringBuilder khi thao tác động với chuỗi.

08/07/2020 LẬP TRÌNH GIAO DIỆN Nguyễn Thị Mai Trang Nguyễn Thị Mai Trang 1 Chương Mảng (Array) Chuỗi (String) 08/07/2020 Mục tiêu • Mơ tả, khởi tạo sử dụng thành thạo kiểu liệu mảng lập trình • Mơ tả, khởi tạo sử dụng thành thạo kiểu liệu tập hợp Net • Mơ tả, khởi tạo sử dụng thành thạo kiểu liệu chuỗi lập trình • Sử dụng thành thạo lớp StringBuilder thao tác động với chuỗi Nguyễn Thị Mai Trang 3 6.1 Mảng Giới thiệu mảng Khai báo Làm việc với mảng Truyền mảng cho phương thức Mảng nhiều chiều Các lớp tập hợp VS.Net Nguyễn Thị Mai Trang 4 08/07/2020 6.1.1 Giới thiệu mảng • Mảng tập hợp có thứ tự đối tượng có kiểu liệu • Các phần tử mảng truy xuất theo tên vị trí, số bắt đầu zero – Ví dụ: mảng số ngun có tên c, có phần tử: Nguyễn Thị Mai Trang 5 Giới thiệu mảng (tt) • Mảng kiểu liệu tham chiếu, xem đối tượng bao gồm phương thức, thuộc tính • Có nhiều loại mảng: mảng chiều, mảng nhiều chiều, … • Mảng đối tượng lớp System.Array • Các thuộc tính class Array: –Length: thuộc tính chiều dài mảng –Rank: thuộc tính số chiều mảng Nguyễn Thị Mai Trang 6 08/07/2020 Giới thiệu mảng (tt) • Các phương thức class Array: – BinarySearch(): tìm kiếm mảng chiều thứ tự – Clear(): xóa tất phần tử mảng – Copy(): chép vùng mảng vào mảng khác – Reverse(): đảo thứ tự thành phần mảng chiều – Sort(): xếp giá trị mảng chiều (đối với kiểu liệu định nghĩa sẵn) – GetLowerBound(): trả cận chiều xác định mảng – GetUpperBound(): trả cận chiều xác định mảng – SetValue(): thiết lập giá trị cho phần tử mảng Nguyễn Thị Mai Trang 7 6.1.2 Khai báo mảng • Cú pháp: type[ ] array_name; – Ví dụ: int [] pins; • Khai báo cấp phát vùng nhớ cho mảng với từ khóa new: – Ví dụ: int [] pins= new int [4]; Nguyễn Thị Mai Trang 8 08/07/2020 Khai báo mảng (tt) • Khai báo khởi tạo phần tử mảng: – Ví dụ: • string [ ] arrColors = { "Red", "Green", "Blue" }; • int [ ] pins = new int [4] { 9, 3, 7, }; • Random r = new Random (); int [ ] pins = new int [4] { r.Next() % 10, r.Next() % 10, r.Next() % 10, r.Next() % 10 }; Nguyễn Thị Mai Trang 9 6.1.3 Làm việc với mảng • Xác định số phần tử mảng: sử dụng thuộc tính Length • Sắp xếp mảng: thành phần mảng kiểu định nghĩa trước (predefined types), ta xếp tăng dần cách gọi phương thức static Array.Sort() • Duyệt mảng: – Duyệt mảng dựa vào số C++ – Duyệt mảng dùng lệnh foreach Nguyễn Thị Mai Trang 10 10 08/07/2020 6.1.4 Truyền mảng cho phương thức • Mảng ln truyền tham chiếu static void Main(string[] args) { int[] arrInt = { 1, 2, }; Console.Write("Mang khoi tao: "); foreach (int n in arrInt) Console.Write("{0,4}", n); DoubleArray(arrInt); Console.Write("\nMang sau goi DoubleArray: "); foreach (int n in arrInt) Console.Write("{0,4}", n); Console.ReadLine(); } static void DoubleArray (int [] arr) { for (int i = 0; i < arr.Length; i++) arr[i] = arr[i] * 2; } Nguyễn Thị Mai Trang 11 11 Truyền mảng cho phương thức (tt) • Truyền mảng bình thường: – Sự thay đổi giá trị phần tử mảng phương thức ảnh hưởng đến đối tượng phương thức – Sự thay đổi tham chiếu biến mảng phương thức không ảnh hưởng đến đối tượng ngồi phương thức • Truyền mảng với ref: thay đổi tham chiếu biến mảng phương thức ảnh hưởng đến đối tượng phương thức Nguyễn Thị Mai Trang 12 12 08/07/2020 6.1.5 Mảng nhiều chiều • Mảng cần phải có hai nhiều số xác định phần tử mảng gọi mảng nhiều chiều, phổ biến mảng hai chiều • Mảng hai chiều mảng cần hai số để xác định phần tử • Mảng hai chiều chia thành hai loại: – Mảng hình chữ nhật – Zagged array Nguyễn Thị Mai Trang 13 13 Mảng nhiều chiều (tt) • Mảng hình chữ nhật: – Có dạng bảng, hàng có kích thước (có số cột) – Mỗi phần tử mảng xác định qua hai số: hàng cột theo quy ước: số thứ hàng, số thứ hai cột, bắt đầu = Nguyễn Thị Mai Trang 14 14 08/07/2020 Mảng nhiều chiều (tt) • Khai báo mảng hai chiều – Cú pháp: type[ , ] array-name; – Ví dụ: int [,] arrInt = new int [2,3]; int [,] arrInt = {{1, 2},{3,4}}; int [,] arrInt = new int [,] {{1,2},{3,4},{5,6},{7,8}}; string[,] arrString = {{"Lennon","John"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Starkey","Richard"}}; Nguyễn Thị Mai Trang 15 15 Mảng nhiều chiều (tt) • Duyệt mảng hai chiều: – Sử dụng phương thức GetLength (n) để truy xuất số phần tử chiều – Sử dụng hai vòng lặp for để duyệt qua hàng cột static void Main(string[] args) { int[,] arrInt = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int sum = 0; for (int i = 0; i < arrInt.GetLength(0); i++) for (int j = 0; j < arrInt.GetLength(1); j++) sum += arrInt[i, j]; Console.WriteLine("Tong cac phan tu la {0}", sum); Console.ReadLine(); } Nguyễn Thị Mai Trang 16 16 08/07/2020 Mảng nhiều chiều (tt) • Zagged array: – Là mảng hai chiều, hàng mảng – Số phần tử hàng không – Các hàng phải khai báo tường minh Nguyễn Thị Mai Trang 17 17 Mảng nhiều chiều (tt) • Duyệt mảng Zagged array: Nguyễn Thị Mai Trang 18 18 08/07/2020 6.1.6 Các lớp tập hợp thơng dụng • Mảng kiểu liệu cho phép lưu trữ tập hợp phần tử cách hiệu • Tuy nhiên, mảng có số hạn chế: – Kích thước mảng khơng thể thay đổi chương trình thực thi – Các phần tử lưu mảng phải có kiểu liệu – Khi thêm xóa phần tử mảng, ta phải duyệt dời phần tử liên quan – Nguyễn Thị Mai Trang 19 19 Các lớp tập hợp thơng dụng (tt) • NET framework cung cấp thư viện lớp với phương thức cho phép thao tác với tập hợp cách dễ dàng như: – Lớp ArrayList – Lớp Hashtable – Lớp SortedList – Lớp Queue – Lớp Stack – • Các lớp nằm namespace System.Collections Nguyễn Thị Mai Trang 20 20 10 08/07/2020 ArrayList • Là lớp lưu trữ tập hợp đối tượng theo kiểu mảng, phần tử truy xuất thông qua số • Kích thước ArrayList thay đổi lúc chương trình thực thi • ArrayList lưu phần tử thuộc kiểu liệu khác • ArrayList cho phép lưu giá trị null giá trị trùng lặp • Một số thuộc tính lớp ArrayList: – Count: số phần tử danh sách – Capacity: số phần tử mà ArrayList chứa Nguyễn Thị Mai Trang 21 21 ArrayList (tt) • Một số phương thức lớp ArrayList: – Add: thêm phần tử vào cuối danh sách – Insert: chèn phần tử vào danh sách vị trí định – Remove: xóa phần tử khỏi danh sách – RemoveAt: xóa phần tử khỏi danh sách theo vị trí – Contains: kiểm tra phần tử có thuộc danh sách hay khơng (true: có, false: khơng) – IndexOf: trả số phần tử danh sách – Sort: xếp danh sách kiểu liệu định nghĩa trước Nguyễn Thị Mai Trang 22 22 11 08/07/2020 ArrayList (tt) • Ví dụ sử dụng ArrayList: Nguyễn Thị Mai Trang 23 23 SortedList - Hashtable • SortedList: – Là lớp danh sách kiểu từ điển, phần tử chứa xác định thông qua hai trường Key Value – Các phần tử chứa SortedList tự động xếp thứ tự dựa vào trường Key • Hashtable: – Tương tự SortedList, phần tử không tự động xếp thao tác Hashtable nhanh so với SortedList Nguyễn Thị Mai Trang 24 24 12 08/07/2020 Stack • Là loại danh sách mà phần tử tổ chức ngăn xếp theo thứ tự LIFO (Last In First Out) • Thao tác thêm phần tử vào Stack lấy phần tử khỏi Stack thực đầu danh sách Nguyễn Thị Mai Trang 25 25 Queue • Là loại danh sách mà phần tử tổ chức hàng theo thứ tự FIFO (First In First Out) • Các phần tử thêm vào cuối danh sách lấy từ đầu danh sách Nguyễn Thị Mai Trang 26 26 13 08/07/2020 6.2 Chuỗi (String) Giới thiệu chuỗi String constructor Các thuộc tính lớp String Các phương thức lớp String Các thao tác với chuỗi Lớp StringBuilder Nguyễn Thị Mai Trang 27 27 6.2.1 Giới thiệu chuỗi • Chuỗi dãy ký tự unicode liên tiếp nhớ thay đổi • Các phương thức áp dụng lên chuỗi khơng làm thay đổi nội dung thân chuỗi gốc mà trả chuỗi • Trong NET, chuỗi kiểu liệu tham chiếu, chuỗi đối tượng lớp string Nguyễn Thị Mai Trang 28 28 14 08/07/2020 Giới thiệu chuỗi (tt) • Lớp System.String có nhiều phương thức static giúp thao tác xử lý chuỗi cách dễ dàng Nguyễn Thị Mai Trang 29 29 6.2.2 String constructor • Phương thức khởi tạo lớp string: public String(char[] value); public String(sbyte* value); public String(char* value); public String(char c, int count); public String(char[] value, int startIndex, int length); public String(sbyte* value, int startIndex, int length); public String(char* value, int startIndex, int length); public String(sbyte* value, int startIndex, int length, Encoding enc); Nguyễn Thị Mai Trang 30 30 15 08/07/2020 6.2.3 Các phương thức lớp String • Phương thức static (public static): – Compare: so sánh chuỗi, trả giá trị nguyên cho biết chuỗi thứ lớn hơn, nhỏ hay chuỗi thứ hai – Concat: trả chuỗi kết việc nối hai chuỗi – Copy: trả chuỗi – Equals: so sánh hai chuỗi, trả giá trị true/false cho biết hai chuỗi có/khơng – Format: trả chuỗi định dạng xuất – Join: trả chuỗi ghép nối từ mảng chuỗi Nguyễn Thị Mai Trang 31 31 Các phương thức lớp String (tt) • Phương thức thành viên lớp: – CompareTo: so sánh chuỗi với chuỗi khác, trả giá trị nguyên, cho biết chuỗi lớn hơn, nhỏ hay chuỗi khác – EndsWith: trả giá trị true/false, xác định chuỗi kết thúc chuỗi – StartsWith: trả giá trị true/false, xác định chuỗi bắt đầu chuỗi – Equals: so sánh chuỗi với chuỗi khác, trả giá trị true/false cho biết chuỗi có/khơng với chuỗi khác – Insert: trả chuỗi kết sau chèn vào chuỗi chuỗi khác – Remove: trả chuỗi sau xóa ký tự chuỗi Nguyễn Thị Mai Trang 32 32 16 08/07/2020 Các phương thức lớp String (tt) • Phương thức thành viên (tt): – LastIndexOf: trả vị trí tìm thấy ký tự chuỗi cuối chuỗi – Split: trả mảng chuỗi sau tách chuỗi dựa vào ký tự đánh dấu – SubString: trả chuỗi trích từ chuỗi – ToCharArray: trả mảng ký tự sau chép số ký tự từ chuỗi sang mảng – ToLower: trả chuỗi ký tự thường từ chuỗi – ToUpper: trả chuỗi ký tự hoa từ chuỗi Nguyễn Thị Mai Trang 33 33 Các phương thức lớp String (tt) • Phương thức thành viên (tt): – Trim: trả chuỗi cắt bỏ khoảng trắng ký tự định đầu cuối chuỗi – TrimStart: trả chuỗi cắt bỏ khoảng trắng ký tự định đầu chuỗi – TrimEnd: trả chuỗi cắt bỏ khoảng trắng ký tự định cuối chuỗi Nguyễn Thị Mai Trang 34 34 17 08/07/2020 6.2.4 Các thao tác với chuỗi • So sánh chuỗi – Sử dụng toán tử so sánh (==) – Sử dụng phương thức Equal bool bRes = s1.Equal (s2); bRes = true s1 = s2 bRes = false s1 != s2 – Sử dụng phương thức static String.Equals bool bRes = String.Equals(s1, s2); Nguyễn Thị Mai Trang 35 35 Các thao tác với chuỗi (tt) • So sánh chuỗi (tt) – Sử dụng phương thức CompareTo int result = s1.CompareTo (s2); result < s1 > s2 result = s1 = s2 result >0 s1 < s2 – Sử dụng phương thức static String.Compare int result = String.Compare (s1, s2); – Ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 36 36 18 08/07/2020 Các thao tác với chuỗi (tt) • Trích chuỗi con: sử dụng phương thức SubString – SubString (int index): trả chuỗi vị trí index – SubString (int index, int length): trả chuỗi gồm length ký tự vị trí index • Ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 37 37 Các thao tác với chuỗi (tt) • Nối hai chuỗi – Sử dụng toán tử + – Sử dụng String.Concat (string s1, string s2) – Ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 38 38 19 08/07/2020 Các thao tác với chuỗi (tt) • Tìm ký tự, tập ký tự, chuỗi – IndexOf: vị trí xuất chuỗi ký tự chuỗi – IndexOfAny: vị trí xuất một tập ký tự chuỗi từ giới hạn cho trước – LastIndexOf: vị trí xuất cuối chuỗi ký tự chuỗi – LastIndexOfAny: vị trí xuất cuối một tập ký tự chuỗi – Ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 39 39 Các thao tác với chuỗi (tt) • Thay chuỗi chuỗi – Replace(string oldValue, string newValue) • Loại bỏ khoảng trắng / ký tự chuỗi – Trim: trả chuỗi loại bỏ đầu cuối chuỗi ký tự mảng tham số, khơng có tham số loại bỏ ký tự trắng – TrimStart: trả chuỗi loại bỏ đầu chuỗi ký tự mảng tham số, khơng có tham số loại bỏ ký tự trắng – TrimEnd: trả chuỗi loại bỏ cuối chuỗi ký tự mảng tham số, khơng có tham số loại bỏ ký tự trắng • Các ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 40 40 20 08/07/2020 Các thao tác với chuỗi (tt) • Loại bỏ chuỗi chuỗi – Remove (int index): trả chuỗi loại bỏ ký tự vị trí index – Remove (int index, int count): trả chuỗi loại bỏ count ký tự vị trí index • Tách chuỗi vào mảng: sử dụng phương thức Split • Ráp chuỗi từ mảng: sử dụng phương thức Join • Các ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 41 41 6.2.5 Lớp StringBuilder • Cho phép tạo, thao tác xử lý chuỗi chương trình thực thi • Các phương thức khởi tạo: Nguyễn Thị Mai Trang 42 42 21 08/07/2020 Lớp StringBuilder (tt) • Tạo đối tượng StringBuilder : – StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(100); string s = “This is a string”; StringBuilder sb3 = new StringBuilder(s); StringBuilder sb4 = new StringBuilder(s, 4); Nguyễn Thị Mai Trang 43 43 Lớp StringBuilder (tt) • Một số thuộc tính lớp StringBuilder: – Lenght: chiều dài chuỗi – Capacity: dung lượng tối đa mà chuỗi chứa • Một số phương thức lớp StringBuilder – Append: nối chuỗi vào cuối chuỗi – AppendFormat: định dạng chuỗi nối vào – Insert: chèn chuỗi – Replace: thay tất thể ký tự ký tự khác – EnsureCapacity: thiết lập lại kích thước mà đối tương StringBuilder chứa Nguyễn Thị Mai Trang 44 44 22 08/07/2020 Lớp StringBuilder (tt) • Thay đổi kích thước chuỗi chương trình thực thi – EnsureCapacity • Nối chuỗi: – Append – AppendFormat • Chèn, xóa, thay chuỗi – Insert – Remove – Replace • Các ví dụ: Xem tài liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 45 45 23 ... liệu học tập Lập trình giao diện Nguyễn Thị Mai Trang 41 41 6. 2.5 Lớp StringBuilder • Cho phép tạo, thao tác xử lý chuỗi chương trình thực thi • Các phương thức khởi tạo: Nguyễn Thị Mai Trang 42... Console.ReadLine(); } Nguyễn Thị Mai Trang 16 16 08/07/2020 Mảng nhiều chiều (tt) • Zagged array: – Là mảng hai chiều, hàng mảng – Số phần tử hàng không – Các hàng phải khai báo tường minh Nguyễn Thị Mai Trang. .. với chuỗi Nguyễn Thị Mai Trang 3 6. 1 Mảng Giới thiệu mảng Khai báo Làm việc với mảng Truyền mảng cho phương thức Mảng nhiều chiều Các lớp tập hợp VS.Net Nguyễn Thị Mai Trang 4 08/07/2020 6. 1.1 Giới

Ngày đăng: 23/02/2022, 10:31