1. Trang chủ
  2. » Tất cả

04.MangVaChuoi Dac Ta Hinh Thuc

28 0 0

Đ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 28
Dung lượng 297 KB

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

Nội dung

Slide 1 * Chương 4 Số và Kiểu mảng Giảng viên PGS TS Vũ Thanh Nguyên Trường Đại học Công Nghệ Thông Tin, ĐHQG HCM Khoa Công Nghệ Phần Mềm * * Nội Dung Số và mảng là khái niệm quan trọng của Đặc tả hìn[.]

Trang 2

N ội Dung

Số và mảng là khái niệm quan trọng của Đặc tả hình thức

Ngôn ngữ Z mô tả các dạng số - đặc biệt là số tự

nhiên dùng tương ứng với mảng

Trang 4

Kiểu Số

 Các phép toán trên số

Trang 5

5Kiểu Số

 Các phép toán trên số

Trang 6

Kiểu S ố

 Ví dụ về hàm trả lại giá trị tuyệt đối của một số nguyên sử

dụng sự miêu tả rỏ ràng như sau:

Trang 7

Kiểu S ố

 Miền xác định của số

 Miền xác định giữa 2 số a, b: Z được xác định như sau:

a b = {a, a+1, a+2,…, b-2, b-1, b}

Hoặc

a b = {n:Z| a n b}

Nếu a > b khi đó a b = ∅

và a a = {a}

Trang 8

 Đối với miền xác định a b

#a b = 1+b-a nếu a  b = 0 nếu a > b

#a b = max {0, 1+b-a}

Vậy nó tương ứng là

1 2 3 … b-a 1+b-a

↧ ↧ ↧ … ↧ ↧

a a+1 a+2 … b-1 b

Trang 10

Kiểu mảng

 Mảng:

 Mảng chỉ chứa một phần tử s = {1 ↦ x} có #s=1 và được viết là [x] còn gọi là mảng đơn

Trang 11

Mảng

 Cho trước kiểu T

 Định nghĩa kiểu mảng mà mỗi phần tử thuộc kiểu T

Trang 14

Các hàm và thao tác trên mảng/chuỗi

 Truy xuất phần tử trong mảng theo chỉ số (tính từ 1)

Trang 16

Các hàm và thao tác trên mảng/chuỗi

Trang 17

Các hàm và thao tác trên mảng/chuỗi

 Lưu ý (ứng dụng cho tiếp đầu ngữ (prefix) của mảng):

 (st  ts)  s = t

 (rs  st)  rt

 (rt  st)  (rs  sr)

Trang 18

Các hàm và thao tác trên mảng/chuỗi

 Phép toán phân bố (ngôn ngữ Z)

 ⃕/[] = []

 ⃕/[a,b,…,n] = a⃕b⃕ … ⃕n

 ⃕/([a]⃕s) = [a]⃕(⃕/s)

 ⃕/(s⃕[a]) = (⃕/s)⃕[a]

Trang 20

Các hàm và thao tác trên mảng/chuỗi

 Hàm tail của một mảng không rổng có thể định nghĩa như sau:

Trang 21

Các hàm và thao tác trên mảng/chuỗi

 Chèn 1 phần tử vào đầu mảng (cons)

 Ví dụ: cons (6, [2, 3]) = [6, 2, 3]

Trang 22

Các hàm và thao tác trên mảng/chuỗi

 Hàm inds: trả về tập chỉ số của các phần tử trong mảng

Trang 23

Các hàm và thao tác trên mảng/chuỗi

 Hàm elems: trả về tập hợp các giá trị của các phần tử trong mảng

elems s = {s(i) | i  inds s}

 Ví dụ: elems [12, 4, 6, 12, 4, 6, 38, 12] = {4, 6, 12, 38}

 elems s2 = {a}

 elems s1 = {b,c}

 elems [] = {}

Trang 24

Các hàm và thao tác trên mảng/chuỗi

 Hai mảng bằng nhau

 sa = sb  len sa = len sb  iinds sa  sa (i) = sb (i)

 Các mảng có thể liên kết bởi hàm

concat(sa:X* , sb:X*) rs:X*

post len rs = len sa + len sb  (iinds sa  rs(i) = sa(i)) 

(iinds sb  rs(i+len sa) = sb(i))

 Hoặc dùng phép nối ⃕(người ta thường dùng phép nối sa⃕sb hơn là hàm concat(sa,sb)

Trang 25

Các hàm và thao tác trên mảng/chuỗi

 Các mảng có thể liên kết nhờ phép liên kết phân bố tất cả các mảng trong một mảng bởi hàm đệ quy sau:

dconc : (X*)* → X*

Dconc(ss) ≜ if ss = [] then [] else (hd ss)dconc⃕ (tl ss)

 Ví dụ:

dconc[s1, [],s2,s2] = [b,b,c,a,a]

Trang 26

Các hàm và thao tác trên mảng/chuỗi

 Xác định độ dài của mảng con của mảng đã cho có kích thước

Trang 27

Các hàm và thao tác trên mảng/chuỗi

 Thường hàm subseq(i,j,q) được viết là s(i,…,j)

Trang 28

Các hàm và thao tác trên mảng/chuỗi

 Sơ đồ của các phép toán trên mảng

Ngày đăng: 20/11/2022, 15:41

🧩 Sản phẩm bạn có thể quan tâm

w