Chapter : Arrays.

Slides:



Advertisements
Similar presentations
Báo cáo Cấu trúc đề thi PISA và Các dạng câu hỏi thi PISA
Advertisements

Sử dụng năng lượng hiệu quả
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
XÂY DỰNG VÀ PHÁT TRIỂN CHƯƠNG TRÌNH ĐÀO TẠO THEO ĐỀ XƯỚNG CDIO
Rainforest Alliance đào tạo cho các nông trại trà ở Việt Nam
Kiểm thử và đảm bảo chất lượng phần mềm
PHẦN 1. HỆ ĐIỀU HÀNH WINDOWS. 2 Nội dung trình bày  1.1. Thao tác cơ bản sử dụng máy tính  1.2. Màn hình nền desktop  1.3. Quản lý tệp tin và thư mục.
L/O/G/O NGUYÊN LÝ KẾ TOÁN Nguyễn Hữu Quy (MBA,CPA,APC)
1 ĐỒNG NAI ĐÁNH GIÁ TÌNH HÌNH VÀ ĐỀ XUẤT ÁP DỤNG HIỆU QUẢ MÔ HÌNH KINH TẾ DƯỢC TẠI BỆNH VIỆN ĐA KHOA ĐỒNG NAI NĂM 2017 Học viên: Nhóm 5 _ PP111.
GIỚI THIỆU TRÌNH BIÊN DỊCH FREE PASCAL
Bài giảng e-Learning Bài giảng e-Learning là sản phẩm được tạo ra từ các công cụ tạo bài giảng (authoring tools), có khả năng tích hợp đa phương tiện.
Thực hiện các cuộc họp quan trọng
Sứ Mệnh GoCoast 2020 được thành lập bởi thống đốc Phil Bryant thông qua điều hành để phục vụ như là hội đồng cố vấn chính thức cho việc phân phối quỹ nhận.
QUẢN TRỊ THÀNH TÍCH Performance Management
TẬP HUẤN TÀI CHÍNH CÔNG ĐOÀN NĂM 2015
Ghi chú chung về khóa học
TÌM HIỂU VỀ WEB SERVICES VÀ XÂY DỰNG MỘT WEB SERVICE
Tham gia Intel ISEF 2013 và một số kinh nghiệm chia sẻ
Thực hiện cải thiện chất lượng
Giới thiệu chương trình trách nhiệm xã hội của doanh nghiệp
KHAI PHÁ DỮ LIỆU (DATA MINING)
THÔNG TIN MÔN HỌC Quản trị chuỗi cung ứng (Supply Chain Management): 45 tiết Tài liệu nghiên cứu Quản lý chuỗi cung ứng –Th.S. Nguyễn Kim Anh, Đại học.
Tổ chức The Natural Step và IKEA
Công nghệ phần mềm Thẩm định và kiểm định.
Software testing Kiểm thử phần mềm
Ngôn ngữ lập trình C/C++
Đức Hồng Y Nguyễn Văn Thuận cầu bầu
Module 6 – Managing for Sustainability
Khởi động SXSH với công cụ quản lý nội vi 5S
Hệ Thống Quản Lý An Toàn Thực Phẩm
Hệ điều hành Windows Sever 2003
Bộ nhớ máy tính Tổng quan bộ nhớ trong máy tính Bộ nhớ bán dẫn
BÀI TẬP ÔN LUYỆN IC3 SPARK
CHAPTER 7: TREES (Cấu trúc cây)
Theo mặc định toàn bộ dung lượng dùng lưu trữ, các thư mục hiện có trong các Partition , các dịch vụ hệ thống đã được chia sẽ cho mọi người được phép sử.
Chương 3 Mô hình dữ lịêu quan hệ
XÂY DỰNG LỢI THẾ CẠNH TRANH THÔNG QUA CHIẾN LƯỢC CẤP KINH DOANH
E-LEARNING TỪ POWERPOINT
Bài 2: Từ tiêu chuẩn sức khoẻ tới nơi làm việc lành mạnh
Chương 6 Thiết kế hướng đối tượng
DI SẢN THẾ GIỚI WORLD HERITAGE CỔ THÀNH HUẾ VIỆT NAM
Chiến lược CSR –Là gì và làm thế nào để chúng ta sàng lọc lựa chọn?
Con trỏ và mảng cấp phát động trong C++
KỸ THUẬT LẬP TRÌNH GV: Phạm Thị Xuân Diệu
LẬP TRÌNH ỨNG DỤNG WINDOW FORM
Quản lý con người Quản lý người làm việc như những cá nhân và theo nhóm.
THUYẾT TRÌNH JAVASCRIPT
Chapter 16: Chiến lược giá
Biến và Kiểu Dữ Liệu Chương 2.
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM ADOBE PRESENTER
Operators and Expression
Trách nhiệm giải trình của doanh nghiệp ở diện rộng
Chapter 6 Introduction to Arrays And String
Chương 2: Các phép toán cơ bản trên hệ nhị phân
Chương 2 Căn bản về Cung và Cầu 1.
QUẢN TRỊ TÍNH ĐA DẠNG THÔNG QUA NHIỀU HOẠT ĐỘNG KINH DOANH
Kế hoạch Quản lý Hóa chất & Tích hợp vào Quy trình Nhà máy và Quản lý
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
HƯỚNG DẪN MÃ HÓA BỆNH TẬT, TỬ VONG THEO ICD - 10
Giới thiệu : Trong Windows XP trở về sau, tích hợp sẵn 1 công cụ rất hay đó là Group Policy. Group Policy là 1 trong các thành phần của Microsoft Management.
Điều kiện Chương 5.
Chương 18 Quản lý bán lẻ, bán sỉ và hậu cần
Lập trình Visual Studio .NET
NHÂN QUYỀN LÀ GÌ? Dẫn Nhập Nhân quyền và thu thập tài liệu: Bài Một.
Giới thiệu : Trong Windows XP trở về sau, tích hợp sẵn 1 công cụ rất hay đó là Group Policy. Group Policy là 1 trong các thành phần của Microsoft Management.
Chương 8 NHỮNG VẤN ĐỀ QUẢN TRỊ CƠ BẢN TRONG THỰC THI CHIẾN LƯỢC
Đầu tiên chỉ là 1 giao thức đơn giản
So sánh marketing online & marketing truyền thống
Chương 4: Tập gõ 10 ngón Chương 2: Học cùng máy tính
Presentation transcript:

Chapter : Arrays

1. Introduction Arrays List or series of values all referenced by the same name and type Refer to particular element in the array by position number Refer to any element by giving the name of the array followed by the position number (subscript) of the element in square brackets ([ ]) First element is the zeroth element First element of array c is c[ 0 ] Windows Programming 1 Chapter 11: Collections Slide 2

Array Terms Element Index Boundaries Individual item in the array Zero based number used to reference the specific elements in the array Must be an integer Boundaries Lower Subscript, 0 by default Upper Subscript Windows Programming 1 Chapter 11: Collections Slide 3

Arrays strName Array [0] Janet Baker [1] George Lee [2] Sue Li [3] [4] [5] [6] [7] [8] [9] Janet Baker George Lee Sue Li Samuel Hoosier Sandra Weeks William Macy Andy Harrison Ken Ford Denny Franks Shawn James Windows Programming 1 Chapter 11: Collections Slide 4

Declaring and Creating Arrays Programmer specifies the type of the elements of the array new operator to allocate dynamically the number of elements in the array Array declarations and initializations need not be in the same statement In arrays of value types, each element contains one value of the declared type Windows Programming 1 Chapter 11: Collections Slide 5

Creating an Array <Datatype> [ ] <NameArray>; Declare the array variable <Datatype> [ ] <NameArray>; Ex: int[ ] c; Create the array; assign to array variable <NameArray> = new <Datatype> <[ARRAY_SIZE]>; Ex : c = new int[ 12 ]; int [ ] c = new int[ 12 ]; Windows Programming 1 Chapter 11: Collections Slide 6

Examples Using Arrays Windows Programming 1 Chapter 11: Collections Slide 7

Using an Array Initializer Optionally, the elements in the array may be assigned values in the statement int[] n = { 10, 20, 30, 40, 50 }; Index Value 10 1 20 2 30 3 40 4 50 Windows Programming 1 Chapter 11: Collections Slide 8

Using an Array Initializer Index Value Ace 1 Deuce 2 Three 3 Four 4 Five 5 Six string[] faces = { "Ace", "Deuce", "Three", "Four", "Five", "Six"}; Windows Programming 1 Chapter 11: Collections Slide 9

Properties and methods of array array_name.Length: return size of array array_name.GetValue (int index): return an object at position index. array_name[int index]: return an object at position index. array_name.SetValue (object value, int index): add or modify an object at position index array_name[int index] = value: add or modify an object at position index Windows Programming 1 Chapter 11: Collections Slide 10

Passing Arrays to Methods Pass arrays as arguments to methods by specifying the name of the array (no brackets) Arrays are passed by reference Individual array elements are passed by value Windows Programming 1 Chapter 11: Collections Slide 11

Passing Arrays to Methods Windows Programming 1 Chapter 11: Collections Slide 12

Passing Arrays to Methods Windows Programming 1 Chapter 11: Collections Slide 13

Passing Arrays to Methods Truy xuất qua vị trí Truy xuất qua foreach long tongmang(int[] A) { int i = 0, x; long t = 0; while (i < A.Length) x = A[i]; t += x; i++; } return t; long tongmangForeach(int[] A) foreach (int x in A) Windows Programming 1 Chapter 11: Collections Slide 14

2. Multiple-Subscripted Arrays Require two or more subscripts to identify a particular element Multidimensional arrays with two dimensions are often used to represent tables of values consisting of information arranged in rows and columns Rectangular arrays Often represent tables in which each row is the same size and each column is the same size By convention, first subscript identifies the element’s row and the second subscript the element’s column Windows Programming 1 Chapter 11: Collections Slide 15

Multiple-Subscripted Arrays Row 0 Row 1 Row 2 Column 1 Column 0 Column 2 Column 3 a[0, 0] a[0, 3] a[0, 1] a[0, 2] a[1, 0] a[1, 3] a[1, 1] a[1, 2] a[2, 0] a[2, 3] a[2, 2] Column index (or subscript) Row index (or subscript) Array name a [2, 1] Windows Programming 1 Chapter 11: Collections Slide 16

Multiple-Subscripted Arrays DataType[ , ] ArrayName; ArrayName = new DataType [rowSize, colSize]; DataType [ , ] ArrayName = new DataType [rowSize, colSize]; Windows Programming 1 Chapter 11: Collections Slide 17

Multiple-Subscripted Arrays GetLength (int x) GetLength(0) GetLength(1) Dùng {} để nhóm các dòng trong mảng, không cần ghi số phần tử mảng khi khai báo ([,]) có khởi tạo, Vì compiler xác định số dòng bằng cách đếm số lượng {}, tính số cột bằng cách đếm số phần tử trong {} Hàm GetLength(x) trả về kích thước của chiều thứ x trong mảng. Ví dụ, b.GetLength()  trà về kích thước của mảng 1 chiều. b.GetLength(0)  trà về kích thước dòng. b.GetLength(1)  trà về kích thước cột Windows Programming 1 Chapter 11: Collections Slide 18

Multiple-Subscripted Arrays (Jagged Arrays) DataType[ ][ ] ArrayName; ArrayName = new DataType[Size][ ]; DataType[ ][ ] ArrayName = new DataType[Size][ ]; Khi chúng ta tạo một mảng đa chiều kích thước khác nhau thì chúng ta khai báo số dòng trong mảng trước. Sau đó với mỗi dòng sẽ giữ một mảng, có kích thước bất kỳ. Những mảng này được khai báo riêng. Sau đó chúng ta khởi tạo giá trị các thành phần trong những mảng bên trong. Windows Programming 1 Chapter 11: Collections Slide 19

Example int [,] a= new int[,]{{1,2,3},{4,5,6}} int TongMang(int[,] a)//tong mang 2 chieu { long T=0; for (int i = 0; i < a.GetLength(0); i++) for(int j = 0; j < a.GetLength(1); j++) T=T+a[i,j]; return T; } Windows Programming 1 Chapter 11: Collections Slide 20

Example Windows Programming 1 Chapter 11: Collections Slide 21

Example Windows Programming 1 Chapter 11: Collections Slide 22

foreach Repetition Structure The foreach repetition structure is used to iterate through values in data structures such as arrays No counter A variable is used to represent the value of each element Windows Programming 1 Chapter 11: Collections Slide 23

foreach Repetition Structure Windows Programming 1 Chapter 11: Collections Slide 24

ArrayList (Danh sách mảng) Một vấn đề hạn chế của kiểu dữ liệu mảng là kích thước cố định. Chương trình của chúng ta có thể hỏi người dùng về kích thước tuy nhiên không thực tế. Windows Programming 1 Chapter 11: Collections Slide 25

ArrayList (Danh sách mảng) Lớp ArrayList là một kiểu dữ liệu mảng mà kích thước của nó được gia tăng một cách động theo yêu cầu mà không cần cho biết trước kích thước. Khi tạo đối tượng ArrayList, không cần thiết phải xác định số đối tượng mà nó sẽ chứa. Windows Programming 1 Chapter 11: Collections Slide 26

ArrayList methods Add (object value) Insert (int index, object value) Phương thức public để thêm một đối tượng vào ArrayList Insert (int index, object value) Chèn một thành phần vào trong ArrayList Remove (object obj) Xóa sự xuất hiện đầu tiên của một đối tượng xác định RemoveAt (int index) Xóa một thành phần ở vị trí index. Count Thuộc tính nhận số phần tử hiện thời trong mảng Clear() Xóa tất cả các thành phần từ ArrayList Contains (object item) Kiểm tra một thành phần xem có chứa trong mảng hay không, trả về true hoặc false IndexOf (object value) Trả về chỉ mục vị trí đầu tiên xuất hiện value

Các thao tác với ArrayList BinarySearch() Tìm xem một phần tử có trong ArrayList không, sử dụng phương pháp tìm kiếm nhị phân Clone() Tạo một bản copy CopyTo() Sao chép ArrayList đến mảng một chiều RemoveRange() Xóa một dãy các thành phần Reverse() Đảo thứ tự các thành phần trong ArrayList SetRange() Sao chép các thành phần của tập hợp qua dãy những thành phần trong ArrayList Sort() Sắp xếp ArrayList

ArrayList Windows Programming 1 Chapter 11: Collections Slide 29

ArrayList Windows Programming 1 Chapter 11: Collections Slide 30

HashTable Hashtable (bảng băm) là một kiểu từ điển được tối ưu cho việc truy cập được nhanh. Key Value Windows Programming 1 Chapter 11: Collections Slide 31

HashTable Add (object key, object value) Thêm một thành phần mới với khóa và giá trị xác định. Values Thuộc tính trả về một ICollection chứa các giá trị Keys Thuộc tính trả về một ICollection chứa các khóa trong hashtable. Remove (object obj) Xóa một thành phần với khóa xác định. Count Thuộc tính trả về số thành phần trong hashtable Clear() Xóa tất cả đối tượng trong hashtable. Trong một Hashtable, mỗi giá trị được lưu trữ trong một vùng. Mỗi vùng được đánh số tương tự như là từng offset trong mảng. Do khóa có thể không phải là số nguyên, nên phải chuyển các khóa thành các khóa số để ánh xạ đến vùng giá trị được đánh số. Mỗi khóa phải cung cấp phương thức GetHashCode() để nhận giá trị mã hóa thành số của nó. Chúng ta nhớ rằng mọi thứ trong C# đều được dẫn xuất từ lớp object. Lớp object cung cấp một phương thức ảo là GetHashCode(), cho phép các lớp dẫn xuất tự do kế thừa hay viết lại. Việc thực thi thông thường của phương thức GetHashCode() đối với chuỗi thì đơn giản bằng cách cộng các giá trị Unicode của từng ký tự lại rồi sau đó sử dụng toán tử chia lấy dư để nhận lại một giá trị từ 0 đến số vùng được phân của hashtable. Ta không cần phải viết lại phương thức này với kiểu chuỗi. Khi chúng ta thêm giá trị vào Hashtable thì Hashtable sẽ gọi phương thức GetHashCode() cho mỗi giá trị mà chúng ta cung cấp. Phương thức này trả về một số nguyên, xác định vùng mà giá trị được lưu trữ trong hashtable.Dĩ nhiên là có thể nhiều giá trị nhận chung một khóa tức là cùng một vùng trong hashtable, điều này gọi là sự xung đột. Có một vài cách để giải quyết sự xung đột này. Trong đó cách chung nhất và được hỗ trợ bởi CLR là cho mỗi vùng duy trì một danh sách có thứ tự các giá trị. Khi chúng ta truy cập một giá trị trong hashtable, chúng ta cung cấp một khóa. Một lần nữa Hashtable gọi phương thức GetHashCode() trên khóa và sử dụng giá trị trả về để tìm vùng tương ứng. Nếu chỉ có một giá trị thì nó sẽ trả về, nếu có nhiều hơn hai giá trị thì việc tìm kiếm nhị phân sẽ được thực hiện trên những nội dung của vùng đó. Bởi vì có một vài giá trị nên việc tìm kiếm này thực hiện thông thường là rất nhanh. Windows Programming 1 Chapter 11: Collections Slide 32

HashTable Contains (object item) ContainsKey(object key) Xác định xem một thành phần có trong hashtable, trả về true hoặc false ContainsKey(object key) Xác định xem hashtable có chứa một khóa xác định, trả về true hoặc false ContainsValue(object value) Xác định xem hashtable có chứa một giá trị xác định, trả về true hoặc false hashTable [object key] Trả về giá trị mang khóa truyền vào Trong một Hashtable, mỗi giá trị được lưu trữ trong một vùng. Mỗi vùng được đánh số tương tự như là từng offset trong mảng. Do khóa có thể không phải là số nguyên, nên phải chuyển các khóa thành các khóa số để ánh xạ đến vùng giá trị được đánh số. Mỗi khóa phải cung cấp phương thức GetHashCode() để nhận giá trị mã hóa thành số của nó. Chúng ta nhớ rằng mọi thứ trong C# đều được dẫn xuất từ lớp object. Lớp object cung cấp một phương thức ảo là GetHashCode(), cho phép các lớp dẫn xuất tự do kế thừa hay viết lại. Việc thực thi thông thường của phương thức GetHashCode() đối với chuỗi thì đơn giản bằng cách cộng các giá trị Unicode của từng ký tự lại rồi sau đó sử dụng toán tử chia lấy dư để nhận lại một giá trị từ 0 đến số vùng được phân của hashtable. Ta không cần phải viết lại phương thức này với kiểu chuỗi. Khi chúng ta thêm giá trị vào Hashtable thì Hashtable sẽ gọi phương thức GetHashCode() cho mỗi giá trị mà chúng ta cung cấp. Phương thức này trả về một số nguyên, xác định vùng mà giá trị được lưu trữ trong hashtable.Dĩ nhiên là có thể nhiều giá trị nhận chung một khóa tức là cùng một vùng trong hashtable, điều này gọi là sự xung đột. Có một vài cách để giải quyết sự xung đột này. Trong đó cách chung nhất và được hỗ trợ bởi CLR là cho mỗi vùng duy trì một danh sách có thứ tự các giá trị. Khi chúng ta truy cập một giá trị trong hashtable, chúng ta cung cấp một khóa. Một lần nữa Hashtable gọi phương thức GetHashCode() trên khóa và sử dụng giá trị trả về để tìm vùng tương ứng. Nếu chỉ có một giá trị thì nó sẽ trả về, nếu có nhiều hơn hai giá trị thì việc tìm kiếm nhị phân sẽ được thực hiện trên những nội dung của vùng đó. Bởi vì có một vài giá trị nên việc tìm kiếm này thực hiện thông thường là rất nhanh.

Example 1 Windows Programming 1 Chapter 11: Collections Slide 34

Example 2 Windows Programming 1 Chapter 11: Collections Slide 35

Example 2 Windows Programming 1 Chapter 11: Collections Slide 36

Finish Windows Programming 1 Chapter 11: Collections Slide 37