Bài giảng Thao tác dữ liệu

Thao tác dữ liệu

1. Kiểu dữ liệu mảng.

+ Khái niệm.

+ Mảng 1 chiều, mảng nhiều chiều.

+ Mảng của mảng.

2. Kiểu dữ liệu xâu kí tự.

-Thao tác với kiểu dữ liệu xâu ký tự.

- Thao tác chuỗi một cách hiệu quả sử dụng StringBuilder.

- Sử dụng biểu thức chính quy để kiểm tra dữ liệu nhập.

3. Kiểu dữ liệu liệt kê.

4. Kiểu dữ liệu struct.

 

ppt34 trang | Chia sẻ: phuongt97 | Lượt xem: 567 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Thao tác dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Thao tác dữ liệu1. Kiểu dữ liệu mảng.+ Khái niệm.+ Mảng 1 chiều, mảng nhiều chiều.+ Mảng của mảng.2. Kiểu dữ liệu xâu kí tự.-Thao tác với kiểu dữ liệu xâu ký tự.- Thao tác chuỗi một cách hiệu quả sử dụng StringBuilder.- Sử dụng biểu thức chính quy để kiểm tra dữ liệu nhập.3. Kiểu dữ liệu liệt kê.4. Kiểu dữ liệu struct.21. Mảng (Arrays)- Khái niệm.- Khai báo mảng.- Làm việc với mảng (Working with Arrays).- Mảng nhiều chiều (Multidimensional Arrays in C#).- Mảng jagged.3Khái niệmMảng là một tập hợp có thứ tự của những đối tượng, tất cả các đối tượng này cùng một kiểu. Mảng trong C# là một đối tượng.4Mảng 1 chiềuMảng 2 chiềuMảng 3 chiều5Mảng 1 chiềuKhai báo:+ Cú pháp: [] ;Ví dụ: double [ ] arr_dbl;+ Để tạo thể hiện của một mảng dùng từ khóa newarr_dbl =new double[6]; // Thiết lập trong bộ nhớ một mảng 6 số double. (1).+ Mảng là kiểu dữ liệu tham chiếu được tạo ra trên heap.Giá trị mặc định:+ Khi tạo một mảng kiểu dữ liệu giá trị, mỗi thành phần dữ liệu sẽ chứa giá trị mặc định của kiểu dữ liệu. Như (1) 6 phần tử của mảng có giá trị 0.+ Khi tạo một mảng kiểu dữ liệu tham chiếu, các phần tử mảng mang giá trị null.6Mảng 1 chiềuTruy cập các thành phần của mảng: Dùng toán tử chỉ mục [ ]. Mảng dùng cơ sở là 0, phần tử đầu tiên của mảng có chỉ mục bằng 0.Ví dụ: arr_dbl[0] = 10.0; // Gán giá trị cho phần tử đầu tiên của mảng. - In các phần tử của mảng: for(int i=0; i 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}9Ví dụ foreachTính tổng các phần tử của mảng double. double[] arr_dbl = { 10, -0.5, 20, 12, -8.3}; double tong=0; foreach (double item in arr_dbl) tong += item;10Mảng đa chiềuMảng đa chiều là mảng mà mỗi phần tử của mảng là một mảng khác.Mảng 2 chiều được tổ chức thành các dòng và cột, các dòng được tính theo hàng ngang, các cột được tính theo hàng dọc. Trong bộ nhớ được tổ chức liên tục. Số phần tử trong mảng bằng tích các kích thước mảng theo các chiều.Lệnh foreach trong mảng đa chiều tương tự mảng 1 chiều.Mảng nhiều chiều có 2 loại:+ Mảng đa chiều cùng kích thước.+ Mảng đa chiều không cùng kích thước.11Mảng đa chiều cùng kích thướcKhai báo: [, ,,] ;Tạo thể hiện của một mảng k chiều: tên mảng = new [n1, ., nk];Để truy cập các phần tử của mảng k chiều phải dùng k chỉ số. Chỉ số cơ sở của mỗi chiều là 0.Để duyệt qua tất cả các phần tử của mảng dùng k vòng lặp for lồng nhau hoặc vòng lặp foreach.12Khởi tạo mảng nhiều chiều- Có thể khởi tạo mảng 2 chiều theo các cách như ví dụ sau:+ Mảng hai chiều gồm hai hàng ba cột với phần tử kiểu nguyên :int[,] myRectArray = new int[2,3];+ Hoặc có thể khởi tạo như sau:int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; mảng 4 hàng 2 cột.int[,] myRectArray = new int[4,2]{ {1,2},{3,4},{5,6},{7,8}}; mảng 4 hàng 2 cột.string[,] beatleName = { {"Lennon","John"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Starkey","Richard"} };13Làm việc với mảng- Thuộc tính Length trả về số phần tử của mảng:int arrayLength = integers.Length - Sắp xếp mảng tăng dần bằng cách phương thức static là Array.Sort(): Array.Sort(myArray); Đảo ngược thứ tự các phần tử của mảng dùng phương thức static Reverse() : Array.Reverse(myArray).Clone(): copy mảng ra đối tượng kiểu System.Array.CopyTo: Copy các phần tử của mảng ra một mảng khác.GetLength: trả về kích thước mảng của chiều đã chỉ định.Initialize(): khởi tạo các phần tử của mảng bằng giá trị mặc định của kiểu dữ liệu.Rank: trả về số chiều của mảng.14Mảng jagged- Jagged là mảng nhiều chiều có kích thước khác nhau. Trong mảng này, mỗi phần tử là một mảng 1 chiều. Ví dụ: int[][] a = new int[3][];// mảng 2 chiều và có 3 hàng a[0] = new int[4];// hàng thứ nhất có 4 cột a[1] = new int[3];// a[2] = new int[1]; 15Mảng jaggedstatic void Main() { string[][] novelists = new string[3][]; novelists[0] = new string[] {"Fyodor", "Mikhailovich", "Dostoyevsky"}; novelists[1] = new string[] { "James", "Augustine", "Aloysius", "Joyce"}; novelists[2] = new string[] {"Miguel", "de Cervantes", "Saavedra"}; // Loop through each novelist in the array int i; for (i = 0; i Capacity, capacity tự động điều chỉnh bằng Length (lấp thêm khoảng trắng)+ Nếu thiết lập Length < kích thước chuỗi hiện có trong bộ đệm thì chuỗi bị cắt bớt phần lớn hơn.263. Sử dụng biểu thức chính quyLớp System.Text.RegularExpressions.RegexThuộc tính PatternHàm tạo: RegexMột số phương thức thường dùng + IsMatch + Match + Matches27Các siêu ký tự trong Pattern của Regex. Mọi ký tự trừ ký tự xuống dòng (\n). \d Ký tự chữ số thập phân (digit).\D Ký tự không phải chữ số (non-digit).\s Ký tự whitespace (như khoảng trắng, tab...)\S Ký tự non-whitespace.\w Ký tự word (gồm mẫu tự, chữ số, và dấu gạch dưới)\W Ký tự non-word.^ Bắt đầu một chuỗi hoặc dòng\ABắt đầu một chuỗi$ Kết thúc một chuỗi hoặc dòng\zKết thúc một chuỗi28Các siêu ký tự trong Pattern của Regex (conti..)| Ngăn cách các biểu thức có thể so trùng, ví dụ AAA|ABA|ABB sẽ so trùng với AAA, ABA, hoặc ABB (các biểu thức được so trùng từ trái sang).[abc] So trùng với một trong các ký tự trong nhóm, ví dụ [AbC] sẽ so trùng với A, b, hoặc C[^abc] So trùng với bất cứ ký tự nào không thuộc các ký tự trong nhóm, ví dụ [^AbC] sẽ không so trùng với A, b, or C nhưng so trùng với B, F,[a-z] So trùng với bất kỳ ký tự nào thuộc khoảng này, ví dụ [A-C] sẽ so trùng với A, B, hoặc C. ( ) Xác định một biểu thức con sao cho nó được xem như một yếu tố đơn lẻ đối với các yếu tố được trình bày trong bảng này. ? Xác định có một hoặc không có ký tự hoặc biểu thức con đứng trước nó, ví dụ A?B so trùng với B, AB, nhưng không so trùng với AAB29Các siêu ký tự trong Pattern của Regex (conti..)* Xác định không có hoặc có nhiều ký tự hoặc biểu thức con đứng trước nó, ví dụ A*B so trùng với B, AB, AAB, AAAB, + Xác định có một hoặc có nhiều ký tự hoặc biểu thức con đứng trước nó, ví dụ A+B so trùng với AB, AAB, AAAB, nhưng không so trùng với B. {n}Xác định có đúng n ký tự hoặc biểu thức con đứng trước nó, ví dụ A{2} chỉ so trùng với AA. {n,} Xác định có ít nhất n ký tự hoặc biểu thức con đứng trước nó, ví dụ A{2,} so trùng với AA, AAA, AAAA, nhưng không so trùng với A. {n, m} Xác định có từ n đến m ký tự đứng trước nó, ví dụ A{2,4} so trùng vớAA, AAA, và AAAA nhưng không so trùng với A hoặc AAAAA. 3. Kiểu dữ liệu liệt kê (enumeration)- Kiểu liệt kê: là một kiểu riêng bao gồm các hằng số có tên, được gọi là danh sách liệt kê. Kiểu liệt kê có thể có kiểu số nguyên bất kỳ, ngoại trừ char. Mặc định là kiểu int, phần tử đầu tiên mang giá trị 0, các phần tử liên tiếp được tăng thêm 1.Ví dụ: enum Gioitinh {Nam, Nu}; Khi đó Nam = 0, Nu = 1;Có thể gán giá trị khởi đầu cho phần tử đầu tiên+ enum Thu {Thu2, Thu3, Thu4, Thu5, Thu6, Thu7, CN};Khi đó: Thu2 = 1, Thu3 = 2, Thu4 = 3, Thu5 = 4, Thu6 = 5, Thu7 = 6, CN =7.30Có thể chỉ định kiểu cho enum, sử dụng dấu : sau định danh của kiểu.Ví dụ:+ enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};+ enum Days : byte { Mon=1, Tue=3, Wed, Thu=4, Fri, Sat, Sun}. Khi đó Wed = 4 và Thu = 4;314. Kiểu dữ liệu struct struct là kiểu dữ liệu giá trị thường được sử dụng để nhóm các biến có liên quan. Ví dụ tọa độ của hình chữ nhật, hoặc các thuộc tính của một mặt hàng trong cửa hàng.Ví dụpublic struct Book { public decimal price; public string title; public string author; } 32struct có thể chứa hàm tạo (constructors), hằng số, các trường dữ liệu, phương thức, thuộc tính (properties), indexers, operator, events và kiểu lồng (nested types).Hàm tạo của struct phải có tham số, có thể tạo một đối tượng struct mà không cần từ khóa new.Struct có thể hiện thực một giao diện (interface), nhưng không thể kế thừa từ một struct khác, do đó các thành phần trong struct không được khai báo protected.Nên xem xét nên sử dụng struct hoặc class.3334Bài tậpBài 1: Nhập vào một mảng gồm danh sách 10 sinh viên. Hiển thị ra màn hình các sinh viên họ Nguyen.Bài 2: Nhập vào mảng 10 số nguyên, đếm xem trong mảng có bao nhiêu số chẵn (dùng vòng lặp for, while).Bài 3: Nhập vào thông tin của 10 sinh viên, dòng thông tin nhập có dạng: họ tên, ngày sinh (ngày/tháng/năm), quê quán, lớp. Sử dụng biểu thức chính quy để kiểm tra dữ liệu nhập. Sử dụng hàm Split để lấy từng thông tin về mỗi sinh viên, đếm xem có bao nhiêu sinh viên trong độ tuổi từ 19 – 22.

Các file đính kèm theo tài liệu này:

  • pptbai_giang_thao_tac_du_lieu.ppt
Tài liệu liên quan