Tải bản đầy đủ (.pptx) (35 trang)

Bài giảng kỹ thuật lập trình chương 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (370.7 KB, 35 trang )

Chương 2

Xử lý mảng và chuỗi


Nội dung

Mảng
Các thao tác trên mảng
Chuỗi
Các thao tác trên chuỗi


Mảng

Là tập hợp nhiều phần tử có cùng kiểu dữ liệu
Số phần tử trong mảng được xác định trước
Mỗi phần tử được đánh số chỉ mục, bắt đầu từ 0


Hình ảnh

Một phòng chứa các tủ

 Số lượng tủ chứa ?
 Tủ Chứa gì?
 Số thứ tự tủ, chỉ mục tủ


Ví dụ mảng
Mảng các từ


Khoa

Tin

Học

Quản



0

1

2

3

4

Mảng các số nguyên

4

0

6

1


1

2

8

9

0

1

2

3

4

5

6

7


Khai báo mảng

KiểuDữLiệu[]
Ví dụ





tênMảng;

int[] bangDiem;
string[] loiNoi;
DateTime[] ngaySinh;


Khởi tạo mảng

tenMang = new KieuDuLieu[soPhanTu]
Ví dụ





diem = new int[10];
loiNoi = new string[20];
ngaySinh = new DateTime[7];
float diemTB = new float[5];

0

0

0


0

0

0

1

2

3

4


Khởi tạo và gán giá trị

tenMang = new KieuDuLieu[spt]{gtri1, gtri2, gtri3,…};


diem = new int[5]{ 5, 6, 7, 6, 9 }

Giá trị không nhất thiết phải là hằng số


Ví dụ

Random r = new Random();
int[] pins = new int[4]{
r.Next() % 10, r.Next() % 10,

r.Next() % 10, r.Next() % 10 };

Số giá trị trong dấu ngoặc phải bằng số phần tử mảng được khai báo


Truy xuất từng phần tử mảng

Xác định số phần tử của mảng


tenMang.Length

Truy xuất phần tử: tenMang[soThuTu]


0 <= soThuTu <= (tenMang.Length – 1)

Ví dụ


Lấy điểm thứ 3 (soThuTu = 2) của mảng diem

int diem3 = diem[2];
 diem3 = 7

5

6

7


6

9

0

1

2

3

4


Gán giá trị cho phần tử mảng

Gán điểm thứ 3 của mảng diem là 10


diem[2] = 10

5

6

10

6


9

0

1

2

3

4

Gán điểm thứ 4 của mảng diem bằng điểm thứ nhất cộng 4


diem[3] = diem[0] + 4

5

6

10

9

9

0


1

2

3

4


Duyệt mảng

Dùng vòng lặp for
Ví dụ duyệt mảng diem
for (int i = 0; i < diem.Length; i++)
{
Console.WriteLine(diem[i].ToString());
}

Duyệt và gán phần tử
for (int i = 0; i < diem.Length; i++)
{
diem[i] += 1;
}

Console.WriteLine(diem[i].ToString());


Duyệt mảng bằng foreach

Ví dụ

foreach (int i in diem)
{
Console.WriteLine(i.ToString());
}

Không nên dùng foreach khi





Cần duyệt một phần trong mảng (ví dụ duyệt từ phần tử thứ 2 tới thứ 10)
Cần duyệt từ cuối về đầu mảng
Cần biết chỉ số mảng trong vòng lặp
Cần thay đổi giá trị của phần tử mảng


Sao chép mảng

Mảng là kiểu tham chiếu  gán mảng là gán tham chiếu
Ví dụ




int[] mangA = diem;
 mangA và diem cùng tham chiếu đến vùng nhớ chứa các phần tử của mảng
Thay đổi giá trị trong mangA sẽ ảnh hưởng đến diem



Sao chép mảng
diem

5

6

7

6

9

mangA

diem

5

6

8

mangA

6

9



Sao chép mảng

Tạo mảng mới và gán giá trị từ mảng cũ
Dùng CopyTo



int[] mangA = new int[diem.Length];
diem.CopyTo(mangA, 0);

Dùng Array.Copy


Array.Copy(diem, mangA, diem.Length);

Dùng Clone


mangA = (int[]) diem.Clone();


Kiểu ký tự

Lưu trữ ký tự Unicode 16-bit
Kiểu trong .NET frameword: System.Char
Miền giá trị: [0, 65535]
Cách khai báo


Khai báo ký tự






Chuyển từ số nguyên





char ch1 = 'a';

char ch2 = (char) 65; // Ký tự ‘A’

Chú ý:



Sử dụng dấu nháy đơn để khai báo kiểu char


Chuyển đổi kiểu ký tự

char.Parse(string)
Convert.ToChar(string)
Chú ý: Chuỗi đưa vào chuyển đổi chỉ có 1 ký tự.




char ch1 = Convert.ToChar("a"); // ch1 = ‘a’
char ch1 = Convert.ToChar("aa"); // báo lỗi


So sánh ký tự

Compare:



So sánh 2 ký tự, trả về hiệu số giữa ký tự so sánh và ký tự được so sánh.
Ví dụ:

char ch1 = 'A';
char ch2 = 'B';
Console.WriteLine(ch1.CompareTo(ch2));



Kết quả: -1 (ký tự ch1 nhỏ hơn 1 so với ký tự ch2)


So sánh ký tự

Equals



True: nếu 2 ký tự bằng nhau
False: nếu 2 ký tự không bằng nhau


Ví dụ
char ch1 = 'A';
char ch2 = (char)65;
char ch3 = 'B';
Console.WriteLine(ch1.Equals(ch2)); //Kết quả ‘True’
Console.WriteLine(ch1.Equals(ch3)); //Kết quả ‘False’


Kiểm tra ký tự

Char.IsDigit(ch): True nếu ch là chữ số
Char.IsLetter(ch): True nếu ch là chữ cái
Char.IsNumeric(ch): True nếu ch là chữ số Unicode
Char.IsWhiteSpace(ch): True nếu ch là khoảng trắng
Char.IsLower(ch): True nếu ch là chữ thường
Char.IsUpper(ch): True nếu ch là chữ hoa


Kiểm tra ký tự

 Console.WriteLine(Char.IsDigit('1')); //True
 Console.WriteLine(Char.IsDigit('½')); //False
 Console.WriteLine(Char.IsNumber('½')); //True
 Console.WriteLine(Char.IsNumber('2')); //True
 Console.WriteLine(Char.IsLetter('1')); //False
 Console.WriteLine(Char.IsLower('A')); //False
 Console.WriteLine(Char.IsUpper('a')); //False
 Console.WriteLine(Char.IsWhiteSpace(' ')); //True



Thao tác với ký tự

Char.ToLower(char):





Chuyển ký tự từ chữ hoa sang chữ thường
char ch1 = 'A';
Console.WriteLine(Char.ToLower(ch1));
Kết quả: a

Char.ToUpper(char):





Chuyển ký tự từ chữ thường sang chữ hoa
char ch1 = 'a';
Console.WriteLine(Char.ToLower(ch1));
Kết quả: A


Chuỗi

Mảng các ký tự thuộc kiểu char
Kiểu trong .NET framework: System.String

Khai báo chuỗi


string str = "Text";

Chuỗi với ký tự đặc biệt (escape character)




Tab: "\t"
Xuống hàng: "\n"
Backslash: "\\"

Khai báo nguyên văn: thêm dấu ‘@’


string str2 = @"C:\Windows";


Chuyển đổi sang chuỗi

ToString(): trả về chuỗi ứng với nội dung của biến



int i = 1;
string str = i.ToString();

Convert.ToString(obj)




int i = 1;
string str = Convert.ToString(i);


Thao tác với chuỗi

ToCharArray() hoặc []: Trả về mảng các ký tự trong chuỗi
string str1 = "Hello";
//Tra ve ky tu e
char ch1 = str1.ToCharArray()[1];

Console.WriteLine(ch1);

Length: Trả về độ dài chuỗi (số ký tự)



string str1 = "Text";
int i = str1.Length; //i = 4


×