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

Mảng, Chỉ Mục, Tập Hợp phần cuối

9 361 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mảng, Chỉ Mục, Tập Hợp phần cuối
Định dạng
Số trang 9
Dung lượng 195,44 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong khi một lớp có bộ chỉ mục thì nó chứa một mảng các giá trị nào đó, và cho phép bên ngoài truy cập mảng này thông qua bộ chỉ mục.. Trả lời 3: Giao diện tập hợp cũng là một giao diện

Trang 1

3 bộ giá trị vào theo thứ tự khóa/giá trị Sau khi các item đã được thêm vào chúng ta có thể lấy giá trị thông qua khóa với cách thức dùng toán tử offset

Tập khóa và tập giá trị

Các kiểu từ cung cấp thêm hai thuộc tính là thuộc tính Keys, và thuộc tính Values Trong đó Keys truy cập đối tượng ICollection với tất cả những khóa trong Hashtable,

và Values truy cập đối tượng ICollection với tất cả giá trị Ví dụ 9.18 minh họa như sau

Ví dụ 9.18 Tập khóa và tập giá trị

-

namespace Progrmming_CSharp

{

using System;

using System.Collections;

public class Tester

{

static void Main()

{

// tạo và khởi tạo hashtable Hashtable hashTable = new Hashtable();

hashTable.Add(“00440123”,”Ngoc Thao”);

hashTable.Add(“00123001”,”My Tien”);

hashTable.Add(“00330124”,”Thanh Tung”);

// nhận tập khóa ICollection keys = hashTable.Keys;

// nhập tập giá trị ICollection values = hashTable.Values;

// xuất tập khóa foreach( string s in keys)

{

Trang 2

Console.WriteLine(“{0}”, s);

}

// xuất tập giá trị foreach( string s in values)

{

Console.WriteLine(“{0}”, s);

} }

}

}

-

Kết quả:

00123001

00440123

00330124

My Tien

Ngoc Thao

Thanh

Tung

-Mặc dù thứ tự của keys không được đảm bảo theo thứ tự nhưng chúng đảm bảo rằng cùng với thứ tự đưa ra của giá trị Như chúng ta thấy trên khóa 00123001 tương ứng với My Tien,

Giao diện IDictionaryEnumerator

Những đối tượng IDictionary cũng hỗ trợ vòng lặp foreach bằng việc thực thi

phương thức GetEnumerator(), phương thức này trả về một IDictionaryEnumerator IDictionaryEnumerator được sử dụng để liệt kê bất cứ đối tượng IDictionary nào Nó cung cấp thuộc tính để truy cập cả khóa và giá trị cho mỗi thành phần trong từ điển Ta

có ví dụ 9.19 minh họa như sau:

Ví dụ 9.16: sử dụng giao diện IDictionaryEnumerator

-

namespace Progrmming_CSharp

{

using System;

using System.Collections;

Trang 3

static void Main()

{

Trang 4

// tạo và khởi tạo hashtable Hashtable hashTable = new Hashtable();

hashTable.Add(“00440123”,”Ngoc Thao”);

hashTable.Add(“00123001”,”My Tien”);

hashTable.Add(“00330124”,”Thanh Tung”);

Console.WriteLine(“hashTable”);

Console.WriteLine(“Count: {0}”,hashTable.Count);

Console.WriteLine(“Keys and Values:”);

Print( hashTable );

}

public static void Print(Hashtable table)

{

IDictionaryEnumerator enumerator = table.GetEnumerator();

while ( enumerator.MoveNext() )

{

Console.WriteLine(“\t{0}:\t{1}”, enumerator.Key, enumerator.Value);

}

Console.WriteLine();

}

}

}

-

Kết quả:

hashTableg

Count: 3

Keys and Values:

-

Câu hỏi và trả lời

Câuhỏi 1: Điều phân biệt giữa mảng và các thành phần bên trong một mảng?

Trả lời 1: Mảng là kiểu dữ liệu tham chiếu, còn các thành phần bên trong mảng được cấp phát dựa theo kiểu dữ liệu của chúng Do vậy một mảng của kiểu dữ

Trang 5

Câuhỏi 2: Một lớp có bộ chỉ mục khác một mảng như thế nào?

Trang 6

Trả lời 2: Hoàn toàn khác nhau, một mảng chỉ đơn thuần là một đối tượng tham chiếu đến những đối tượng khác cùng kiểu dữ liệu Trong khi một lớp có bộ chỉ mục thì nó chứa một mảng các giá trị nào đó, và cho phép bên ngoài truy cập mảng này thông qua bộ chỉ mục Một lớp như vậy không chỉ có một mảng đơn thuần mà còn

có những thuộc tính khác, các phương thức Nói chung là nếu ta chỉ cần thao tác đơn thuần trên từng phần riên lẻ của một mảng thì nên dùng mảng Còn nếu chúng ta cần thực hiện một số chức năng nào đó có liên quan tới một mảng thì ta có thể xây dựng một lớp có chứa một mảng và hỗ trợ bộ chỉ mục

Câu hỏi 3: Giao diện tập hợp là gì? Có phải NET cung cấp một số giao diện chuẩn

hay không?

Trả lời 3: Giao diện tập hợp cũng là một giao diện nhưng nó chỉ đưa ra các quy định thao

tác trên tập hợp như: so sánh, liệt kê trên tập hợp, tạo các tập hợp NET cung cấp một số giao diện cho tập hợp như: IEnumerable, ICollection, IComparer, IList

Câu hỏi thêm

Câuhỏi 1: Từ khoá params được sử dụng làm gì?

Câuhỏi 2: Ý nghĩa của lệnh lặp foreach? Lệnh này được sử dụng với kiểu dữ liệu nào? Câuhỏi 3: Có mấy kiểu mảng đa chiều trong ngôn ngữ C# Hãy cho biết từng loại và khi nào

thì sử dụng từng loại cho thích hợp

Câuhỏi 4: Cách tạo ra mảng đa chiều không cùng kích thước?

Câuhỏi 5: Hãy cho biết sự khác nhau giữa hai cách gọi Arr[i][j] và Arr[i, j]?

Câu hỏi 6: Có thể dùng lệnh foreach để xuất ra tất cả các thành phần của mảng đa chiều không cùng kích thước hay không? Nếu được thì phải làm như thế nào?

Câuhỏi 7: Kiểu dữ liệu nào có thể làm chỉ mục trong bộ chỉ mục của một

lớp?

Câuhỏi 8: Làm thế nào để biết kích thước của một mảng?

Câu hỏi 9: Liệt kê những giao diện tập hợp mà NET cung cấp? Cho biết ý nghĩa của từng giao diện?

Câu hỏi 10: Có cách nào tạo một mảng mà không cần khai báo trước kích thước của mảng?

Và trong quá trình thực hiện trên mảng chúng ta có thể tăng động kích thước của mảng hay không?

Trang 7

nhiêu? Trường hợp có 33 phần tử?

Câu hỏi 12: Hàng đợi là gì? Chúng được sắp xếp theo kiểu thứ tự nào? Ứng dụng của hàng đợi ?

Câu hỏi 13: Ngăn xếp là gì? Chúng được sắp xếp theo kiểu thứ tự nào? Ứng dụng của ngăn xếp?

Câuhỏi 14: Phương thức Peek() trong hàng đợi và ngăn xếp có ý nghĩa gì?

Câu hỏi 15: Kiểu dữ liệu nào cho phép truy cập một giá trị thông qua khóa của nó? Lớp nào trong NET hỗ trợ kiểu dữ liệu này?

Câuhỏi 16: Cách lấy tập giá trị trong một đối tượng

Hashtable?

Câuhỏi 17: Cách lấy tập khóa trong một đối tượng Hastable?

Câuhỏi 18: Khóa có phải là duy nhất trong một Hastable hay không?

Câu hỏi 19: Nếu hai vùng có chung một khóa thì chúng được tìm kiếm theo kiểu nào? Và tốc

độ tìm kiếm?

Câuhỏi 20: Hashtable thực thi các giao diện tập hợp nào?

Câuhỏi 21: Phương thức nào thực hiện việc tạo các khoá trong một Hashtable?

Bài tập

Bài tập 1: Viết một chương trình tạo một mảng một chiều nguyên chứa giá trị ngẫu nhiên Sắp xếp các thành phần trong mảng theo thứ tự tăng dần và hiển thị kết quả Làm tương tự với trường hợp sắp xếp mảng theo thứ tự giảm dần

Bài tập 2: Viết một chương trình tạo một mảng một chiều nguyên chứa giá trị ngẫu nhiên Sắp xếp chúng theo thứ tự số âm thì tăng còn số dương thì giảm dần Hiển thị kết quả ra màn hình

Bài tập 3: Viết một chương trình tìm số lớn nhất và nhỏ nhất trong mảng hai chiều có kích thước cố định Các thành phần của mảng được phát sinh ngẫu nhiên

Bài tập 4: Viết chương trình cộng hai ma trận nxm, tức là mảng hai chiều có kích thước n dòng, m cột Các giá trị của hai mảng phát sinh ngẫu nhiên, cho biết kết quả cộng hai ma trận?

Bài tập 4: Viết chương trình cho phép người dùng nhập vào một ma trận nxm, sao đó tìm kiếm một giá trị nào đó theo yêu cầu người dùng, kết quả của việc tìm kiếm là giá trị

và thứ tự của giá trị tìm được trong ma trận

Trang 8

Bài tập5: Viết chương trình tạo một mảng hai chiều không cùng kích thước Cố định số dòng của mảng là 5, còn từng dòng có kích thước bằng giá trị của dòng, tứ là dòng thứ nhất có kích thước 1 (tức là có 1 cột), dòng thứ hai có kích thước là 2 (tức là 2 cột) Các giá trị phát sinh ngẫu nhiên Hãy xuất kết quả của ma trận theo kiểu sau: a[i][j] = <giá trị aij>

Việc xuất kết quả của ma trận trên có thể thực hiện bằng vòng lặp foreach được không? Nếu được thì hãy viết đoạn chương trình xuất ra kết quả?

Bài tập 6: Viết chương trình tạo ra một mảng lưu trữ 30 điểm số của học sinh Tính trung bình điểm của tất cả học sinh Xuất kết quả từng điểm và điểm trung bình

Bài tập 7: Viết một chương trình tạo ra một lớp tên là LopHoc, trong đó có khai báo

bộ chỉ mục chỉ đến tên của từng học viên trong lớp Cho phép một lớp có tối đa 30 học viên Tạo chương trình minh họa cho phép người dùng nhập vào tên của từng học viên Xuất kết quả danh sánh học viên của lớp thông qua bộ chỉ mục

Bài tập 8: Viết chương trình sử dụng ArrayList để tạo một mảng Chương trình tạo ra một vòng lặp cho phép người dùng nhập vào các giá trị cho mảng Hãy xuất kết quả mảng cùng với giá trị Count, và Capacity của mảng Ta có thể thiết lập giá trị Capacity nhỏ hơn giá trị Count được không?

Bài tập9: Viết chương trình tạo ra đối tượng Queue tên là myQueue Khởi tạo myQueue

có 5

giá trị ngẫu nhiên Hãy thực hiện các bước sau, mỗi bước thực hiện phải xuất tình trạng của myQueue:

1 Lấy một giá trị ra

2 Lấy tiếp một giá trị nữa

3 Xem một giá trị ở đầu queue

4 Đưa vào queue một giá trị

Bài tập 10: Viết chương trình tạo đối tượng Stack tên là myStack Khởi tạo myStack có 5 giá

trị ngẫu nhiên Hãy thực hiện các bước sau, mỗi bước thực hiện phải xuất tình trạng của myStack:

1 Lấy một giá trị ra

2 Lấy tiếp một giá trị nữa

3 Xem một giá trị ở đầu stack

Trang 9

lớp học Trong đó khóa là chuỗi mã số học viên còn giá trị là tên của học viên Viết chương trình minh họa cho phép nhập vào 10 học viên, và cho phép người dùng tìm kiếm tên của học viên thông qua mã số học viên

Ngày đăng: 24/10/2013, 05:15

TỪ KHÓA LIÊN QUAN

w