1. Trang chủ
  2. » Thể loại khác

Com Session 4 Data Manipulation

34 60 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 34
Dung lượng 2,15 MB

Nội dung

Trang 1

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

+ Khái niệm

+ Mảng 1 chiều, mảng nhiều chiều + Mang cua mang

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ê

Trang 2

- Khai niém

- Khai bao mang

- Lam viéc véi mang (Working with Arrays)

Trang 3

- Mả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

Trang 5

- Khai bao:

+ Cú pháp: <kiểu dữ liệu> [] <tên mảng>;

Vi du: double [ | arr_ dbl;

+ Dé tạo thể hiện của một mảng dùng từ khóa new

arr_ 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ử

Trang 6

- Truy cập các thành phần của mang: 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<arr_ dbl.Length; I++)

Trang 7

- C6 thé khởi tạo các phần tử của mảng ngay khi tạo thể hiện của mảng

- Có các cách như ví dụ sau:

int[| mylntArray = new int [5];

int[| mylntArray = new int[5] { 2, 4, 6, 8, 10};

Trang 8

- Câu lệnh foreach cho phép chúng ta lặp qua tất cả các phần tử trong một mảng hay trong một tập hợp

- Cú pháp:

foreach (<kiểu dữ liệu thành phan> <tén truy cập> in

<mang/tap hợp> )

{

// thuc hién théng qua <tén truy cap> tuong ứng với // tung muc trong mang hay tap hop

Trang 10

Mang đ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

Trang 11

- Khai bao:

<kiéu dtr liéu> [, , ,] <tén mang>:

- Tao thể hiện của một mảng k chiều:

tên mảng = new <kiểu dữ liệu>[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

Trang 12

- C6 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:

Trang 13

- 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 -_ Initialize0: 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

Trang 14

- 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[[l a = new int[3]I];// mảng 2 chiều và có 3 hàng a[0] = new int[4];// hàng thứ nhất có 4 cột

Trang 15

static void Main()

{ string[][] novelists = new string[3][];

novelists[O] = new string] {"Fyodor", "Mikhailovich", "Dostoyevsky'}: novelists[1] = new string "Joyce'}; novelists[2] = new string[] {"Miguel", "Saavedra'};

// Loop through each novelist in the array

Inf I; for ( = 0; | < novelists.GetLength(O); i++) { Ii Loop through each name for the novelist

Trang 16

- Thao tác với chuỗi

+Tao một chuỗi

+ Tạo chuỗi dùng phương thức ToString + Thao tác trên chuỗi

+ Tìm một chuỗi con + Chia chuỗi

- Thao tác trên chuỗi dùng StringBuilder

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

Trang 17

- Tạo một chuỗi: gán cho chuỗi bằng giá trị được đặt trong cặp dấu “”

Ví dụ: string exstr= “Khoa công nghệ thông tin”;

- Trong chuỗi có thể có các ký tự escape, ký tự này bắt đầu bang dau ‘\’ Vi du \n: xu6ng dong, \t: tab

- Dấu \ được dùng trong một số cú pháp, vì vậy để xác định \ là một ký tự trong xâu thì nó phải được đặt trước một dấu \

khác Ví dụ:

+ xâu “http:\W\" có giá trị bằng http: \\

+ Xâu “C:\Program Files” co gia tri bang C:\Program Files

-_ Ký tự @ được đặt trước giá trị xâu để xác định giá trị đó là

nguyên văn

Ví dụ: “C:W' có giá trị băng với @”C:V

Trang 19

- Sử dụng các phương thức, thuộc tính của lớp System.String Empty TruOng public static thé hién m6t chudi rong Compare() Phuong thức public static để so sánh hai chuÔi

CompareOrdinal() Phương thức pubilic static để so sánh hai

chuôi không quan tâm đến thứ tự

Concat() Phương thức public static để tạo chuỗi mới từ một hay nhiều chuỗi

CopyQ) Phuong thức public static tạo ra một chuỗi

mới băng

Equal(Q) Phương thức public static kiểm tra xem hai

chuỗi có cùng giá trị hay không

Trang 20

| lệnh định dạng xác định

Chars() Indexer cua chuỗi Length) Chiều dài của chuỗi Clone() Trả về chuỗi

CompareTo() So sánh hai chuỗi

CopyTo() Sao chép một số các ký tự xác định đến một mảng ký tự

Unicode

EndsWidth() Chỉ ra vị trí của chuỗi xác định phù hợp với chuỗi dua ra Insert() Trả về chuỗi mới đã được chèn một chuỗi xác định

LastIndexOf() Chi ravi trí xuất hiện cuối cùng của một chuỗi xác

định trong chuỗi

PadLeft0 Canh lề phải những ký tự trong chuỗi, chèn vào bên trái

khoảng trăng hay các ký tự xác định

PadRight() Canh lề trái những ký tự trong chuỗi, chèn vào bên

phải khoảng trăng hay các ký tự xác định Remove() Xóa đi một số ký tự xác định

SplitQ Trả về chuỗi được phân định bởi những ký tự xác định trong chuỗi

an

ỰỢ

Trang 21

tự xác định hay không

SubString() Lấy một chuÕi con

ToCharArray() Sao chép nhỮng ký tự từ một chuỗi đến mảng ký tự ToLower() Trả về bản sao của chuỗi ở kiểu chữ thường ToUpper() Trả về bản sao của chuỗi ở kiểu chữ hoa Trim() Xóa bỏ tất cả sự xuất hiện của tập hợp ký tự xác định từ vị trí đầu tiên đến vị trí cuồi cùng trong chuÕi

TrimEnd() Xóa như nhưng Ở vị trí cuối

TrimStart() Xóa như Trim nhưng ở vị trí đầu ea

Trang 22

- Cac đối tượng String trong Net khi được tạo ra thì nó không thể thay đổi

- Các phương thức thao tác trên string thì bộ thực thi sẽ tao

ra String mới chứa kết quả, bản thân xâu gốc không bị thay đổi) +Ví dụ: string str = “Phạm Đức Bình”; string str; str1= str.Remove(0,3) Kết quả: str1= “ m Đức Bình”, str= “Phạm Đức Bình”

+ Nay sinh chi phi dang ké nếu ứng dụng thường xuyên

thao tac trén String

Trang 23

- StringBuilder cho phép thao tac trén ndi dung cua

nó, không tạo ra bản sao dữ liệu

Trang 24

nắm giữ Chars Chỉ mục Length Thiết lập hay truy cập chiều dài của chuỗi MaxCapacity | Truy cập dung lượng lớn nhất của StringBuilder Append Nối một kiểu đối tượng vào cuối của StringBuilder

AppendFormat | Thay thé dinh dang xác định bằng giá trị được

định dạng của một đổi tượng

EnsureCapacity | Dam bao rang StringBuilder hiện thời có khả năng

tôi thiếu lớn như một giá trị xác định

Insert Chèn một đối tượng vào một vị trí xác định

Replace Thay thế tất cả thể hiện của một ký tự xác định

với những 24

Trang 25

- Lưu ý:

+ Nếu thiết lập Capacity < Length, phat sinh ngoai lệ

System.ArgumentOutOfRangeException

+ Nếu thiết lập Length> Capacity, capacity tự động điều chỉnh bằng Length (lấp thêm khoảng trắng)

Trang 26

- LO6p System.Text.RegularExpressions.Regex

- Thudc tinh Pattern

- Ham tao: Regex

- Mot số phương thức thường dùng

Trang 27

| Mọi ký tự trừ ký tự xuống dòng (An) \d_ | Ký tự chữ số thập phân (digit)

\D_ | Ký tự không phải chữ số (non-digit)

Trang 28

| 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 (@l)

Trang 29

* 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ó,

vi

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

Trang 30

a

" "

- 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

-Vi du: enum Gioitinh {Nam, Nu}; Khi do Nam = 0,Nu = 1;

-Có thể gán giá trị khởi đầu cho phần tử đầu tiên

Trang 31

- C6 thé chỉ định kiểu cho enum, sử dụng dấu : sau định danh của kiểu

- Vi du:

+ enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}: + enum Days : byte { Mon=1, Tue=3, Wed, Thu=4, Fri, Sat,

Trang 32

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

Trang 33

- struct c6 thé chia ham tao (constructors), hang s6, cac trường dữ liệu, phương thức, thuéc tinh (properties),

indexers, operator, events va kiểu lồng (nested types)

- Ham tao cua 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

Trang 34

Bà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

Ngày đăng: 18/01/2018, 13:04

w