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

04.MangVaChuoi Dac Ta Hinh Thuc

1 0 0

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

THÔNG TIN TÀI LIỆU

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[.]

Trường Đại học Công Nghệ Thông Tin, ĐHQG-HCM Khoa Công Nghệ Phần Mềm Chương Số Kiểu mảng Giảng viên: PGS TS Vũ Thanh Nguyên 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 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,…}  Các phép toán số Kiểu Số  Các phép toán số Kiểu Số  Các phép toán số 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     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∼ 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}  Kiểu Số  Cardinality  Số phần tử tập (số nguyên)  Xác định card hay # (ngôn ngữ z)  Ví dụ: #∅ = 0, #{a} =  Đối với miền xác định a b #a b = 1+b-a a  b = a > 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 ↧ Kiểu mảng  Mảng (sequence):     Gồm hữu hạn phần tử (0 hay nhiều phần tử) Có thứ tự Một phần tử xuất nhiều lần mảng Có kiểu liệu Kiểu mảng  Mảng:  Mảng chứa phần tử s = {1 ↦ x} có #s=1 viết [x] gọi mảng đơn  Tổng quát mảng {1 ↦ x1, ↦ x2, …,n ↦ xn} viết ngắn gọn [x1, x2,…,xn]  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] [] (không giống tập mảng rổng xác định kiểu liệu) 10 Mảng  Cho trước kiểu T  Định nghĩa kiểu mảng mà phần tử thuộc kiểu T  Ví dụ: T* Word = Char* Smallstring = {‘a’, ‘b’, ‘c’}* Smallstring = { [], [‘a’], [‘b’], [‘c’], [‘a’, ‘a’], [‘a’, ‘b’], …, [‘a’,’a’, ‘c’], … } Paragraph = Word* Chapter = Paragraph* 11 Chuỗi  Chuỗi xem mảng ký tự  Ví dụ:  Lưu ý: [‘D’, ‘i’, ‘s’, ‘k’, ‘ ‘, ‘f’, ‘u’, ‘l’, ‘l’] “Disk full” ‘a’  Char “hello”  Char* “a”  Char* 12 Các hàm thao tác mảng/chuỗi  Hàm len len [] = len [1, 2, 3, 4, 1] = Tổng quan len s = card dom s  Một số ví dụ mảng  [a,b]  [b,a]  [a,b]  [a,b,b]  Giả sử s1= [b,b,c] s2= [a] Khi len s1= 3, len s2= 13 Các hàm thao tác mảng/chuỗi  Truy xuất phần tử mảng theo số (tính từ 1) sq = [2, 19, 13, 5, 17] sq(1) = sq(4) = Tổng quát s  X*   i  len s  s(i)  X  s1(1) = s1(2) = b 14 Các hàm thao tác mảng/chuỗi  Mảng/chuỗi [‘a’, ‘a’, ‘d’, ‘c’, ‘a’, ‘b’] (2, …, 4) = [‘a’, ‘d’, ‘c’] “Hello” (2, …, 2) = “e” s(1,…, len s) = s 15 Các hàm thao tác mảng/chuỗi  Phép nối ⃕  s⃕t  Ví dụ: “Hello” ⃕ “ ” ⃕ “World” = “Hello World”  Cập nhật phần tử mảng † Ví dụ: [1, 2, 3, 4] (3) †11 = [1, 2, 11, 4]  Một số quy tắc  []⃕s=s⃕[]=s  r(⃕ s⃕t) = (r⃕s)⃕t  (r⃕s = r⃕t)  s = t  Lưu ý  Nếu s,tT*, st  r:T*  s⃕r = t  16 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) 17 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] 18 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) 19 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 = [] 20 ... 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) 19 Các hàm thao tác mảng/chuỗi  Hàm tail mảng khơng

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