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

Bài giảng Đặc tả hình thức: Chương 4 - PGS.TS. Vũ Thanh Nguyên

36 78 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 36
Dung lượng 691,42 KB

Nội dung

Bài giảng Đặc tả hình thức - Chương 4: Số và kiểu mảng cung cấp cho người học các kiến thức: 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.

Trường Đại học Công Nghệ Thông Tin, ĐHQG-HCM Khoa Công Nghệ Phần Mềm Chương 4: Số Kiểu mảng Giảng viên: PGS.TS Vũ Thanh Nguyên 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội Dung Số mảng khái niệm quan trọng Đặc tả hình thức Ngơn ngữ Z mơ tả dạng số - đặc biệt số tự nhiên dùng tương ứng với mảng 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu Số Tập số nguyên Z = {…, -2,-1,0,1,2,…} Tập số tự nhiên N = {n:Z|n 0} = {0,1,2,…} Tập số nguyên dương N1 = {n:Z|n>0} = {1,2,…} 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu Số Tập số hữu tỉ Q = {x|x=m/n, m Z, n Z\{0}} Tập số vô tỉ I = {x|x m/n, m Z, n Z\{0}} Tập số thực R=Q I 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu Số  Các phép toán tập số nguyên 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu Số  Các phép toán số 4/5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiểu Số  Ví dụ hàm trả lại giá trị tuyệt đối số nguyên sử dụng miêu tả rỏ ràng sau:  abs Z Z n:Z n abs n = -n n abs n = n     4/5/2019 Hàm successor (succ) trả lại giá trị số số tự nhiên Succ = { ↦ 1, ↦ 2, ↦ 3,…} Hàm predecessor (pred) trả lại giá trị số phía trước pred == succ∼ CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu Số  Miền xác định số  Miền xác định số a, b: Z xác đị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 a b = ∅ a a = {a} 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu Số  Cardinality  Số phần tử tập (số nguyên)  Xác định card hay # (ngơn ngữ z)  Ví dụ: #∅ (hay #{}) = 0, #{a} = 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu Số  Cardinality  Đối với miền xác định a b #a b = 1+b-a a = a > b b #a b = max {0, 1+b-a} Vậy tương ứng … b-a 1+b-a ↧ ↧ ↧ … ↧ ↧ a a+1 a+2 … b-1 b 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 10 Các hàm thao tác mảng/chuỗi 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Các hàm thao tác mảng/chuỗi 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Các hàm thao tác mảng/chuỗi  Cập nhật phần tử mảng †  4/5/2019 Ví dụ: [1, 2, 3, 4] (3) †11 = [1, 2, 11, 4] CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Các hàm thao tác mảng/chuỗi  Lưu ý (ứng dụng cho tiếp đầu ngữ (prefix) mảng):  (s t t s) s = t  (r s s t) r t  (r t s t) (r s s r) 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 25 Các hàm thao tác mảng/chuỗi  Phép tốn phân bố (ngơn ngữ Z)  ⃕/[] = []  ⃕/[a,b,…,n] = a⃕b⃕ … ⃕n  ⃕/([a]⃕s) = [a]⃕(⃕/s)  ⃕/(s⃕[a]) = (⃕/s)⃕[a] 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 26 Các hàm thao tác mảng/chuỗi  Hàm Head (hd) Tail (tl)  Ví dụ: hd [„p‟, „q‟, „r‟] = „p‟  Hàm head mảng khơng rổng định nghĩa sau: hd (s: X*) r:X pre s [] post r = s(1) 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 27 Các hàm thao tác mảng/chuỗi  Hàm tail mảng khơng rổng định nghĩa sau: tl (s: X*) rs:X pre s [] post s = [hd s]⃕rs  Ví dụ tl [„p‟, „q‟, „r‟] = [„q‟, „r‟] tl [42] = []  Ví dụ: hd s1 = b hd s2 = a tl s1 = [b,c] tl s2 = [] 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 28 Các hàm thao tác mảng/chuỗi  Chèn phần tử vào đầu mảng (cons)  Ví dụ: cons (6, [2, 3]) = [6, 2, 3] 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 29 Các hàm thao tác mảng/chuỗi  Hàm inds: trả tập số phần tử mảng inds s = {i | i len s}  Ví dụ: inds [12, 4, 6, 38, 12] = {1, 2, 3, 4, 5}  inds s = {1,…,len s}  inds s1 = {1,2,3}  inds s2 = {1}  inds [] = {} 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt Các hàm thao tác mảng/chuỗi  Hàm elems: trả tập hợp giá trị phần tử 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 [] = {} 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 31 Các hàm thao tác mảng/chuỗi  Hai mảng  sa = s b len sa = len sb i inds sa sa (i) = sb (i)  Các mảng liên kết 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àm concat(sa,sb) 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 32 Các hàm thao tác mảng/chuỗi  Các mảng liên kết nhờ phép liên kết phân bố tất mảng mảng 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]  4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 33 Các hàm thao tác mảng/chuỗi  Xác định độ dài mảng mảng đả cho có kích thước từ i tới j  subseq(s:X*, i:N1, j:N) rs:X* pre i j+1 i len s + j len s post s1,s2 X* len s1 = i-1 len s2 = len s – j s= s1⃕rs⃕s2 Có thể thấy rằng: len rs = len s – (i-1 + (len s -j)) = (j – i) + 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 34 Các hàm thao tác mảng/chuỗi  Thường hàm subseq(i,j,q) viết s(i,…,j)  Ví dụ:  s1(2,…,2)=[b]  s1(1,…,3)=[b,b,c]  s1(1,…,0)=[]  s1(4,…,3)=[] 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 35 Các hàm thao tác mảng/chuỗi  Sơ đồ phép toán mảng 4/5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 36 ...Nội Dung Số mảng khái niệm quan trọng Đặc tả hình thức Ngơn ngữ Z mơ tả dạng số - đặc biệt số tự nhiên dùng tương ứng với mảng 4/ 5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt... x2,…,xn] 4/ 5/2019 CuuDuongThanCong.com Prof.Dr.Vu Thanh Nguyen https://fb.com/tailieudientucntt 12 Kiểu mảng  Ví dụ: [4, 2, 7, 1, 5, 6, 3] [7, 2, 1, 4, 3, 6, 5] [„C‟, „O‟, „N‟] [42 .0, 343 .0, 42 .0]... https://fb.com/tailieudientucntt Kiểu Số Tập số nguyên Z = {…, -2 ,-1 ,0,1,2,…} Tập số tự nhiên N = {n:Z|n 0} = {0,1,2,…} Tập số nguyên dương N1 = {n:Z|n>0} = {1,2,…} 4/ 5/2019 Prof.Dr.Vu Thanh Nguyen CuuDuongThanCong.com

Ngày đăng: 11/01/2020, 19:50

TỪ KHÓA LIÊN QUAN