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

Bài giảng Nguyên lý và phương pháp lập trình - TS. Nguyễn Tuấn Đăng

38 79 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

Nội dung

Bài giảng Nguyên lý và phương pháp lập trình giúp người học hiểu về Kiểm chứng tính đúng đắn của chương trình. Nội dung trình bày cụ thể gồm có: Lập trình có cấu trúc, các phương pháp hình thức, lập trình có cấu trúc theo tiếp cận top-down, cách tiếp cận kết hợp, các cấu trúc trình tự (sequences), các cấu trúc điều kiện.

Ngun lý phương pháp lập trình Kiểm chứng tính ñúng ñắn chương trình TS Nguyễn Tuấn ðăng Nội dung • • • • • Lập trình có cấu trúc Các phương pháp hình thức Lập trình có cấu trúc theo tiếp cận top-down Cách tiếp cận kết hợp Các cấu trúc trình tự (sequences) – Các cấu trúc trình tự – hình thức hóa – Các cấu trúc trình tự – kiểm chứng – Các cấu trúc trình tự – sơ đồ kiểm chứng • Các cấu trúc ñiều kiện – Các cấu trúc ñiều kiện – hình thức hóa – Các cấu trúc điều kiện – kiểm chứng – Các cấu trúc ñiều kiện – sơ ñồ kiểm chứng Nội dung (tt) • Các cấu trúc vòng lặp – – – – – Các cấu trúc vịng lặp – ví dụ Các cấu trúc vịng lặp – chương trình dẫn xuất Các cấu trúc vịng lặp – kết Các cấu trúc vòng lặp – sơ đồ kiểm chứng Các cấu trúc vịng lặp – lỗi kiểm chứng • Tóm lược Lập trình có cấu trúc • Chương trình sử dụng cấu trúc ñiều khiển theo nguyên tắc 1-in, 1-out : – – – – Cấu trúc trình tự : begin S1 S2 end Cấu trúc chọn lựa : if E then S1 else S2 end Cấu trúc vòng lặp : while E loop S1 end Các cấu trúc ñiều khiển bao gồm thêm : if với elseif, case, for, etc • Boehm Jacopini, 1966 – Chứng minh cấu trúc ñiều khiển lược đồ chương trình biểu đạt mà khơng cần dùng phát biểu gotos, cần dùng cấu trúc: trình tự, chọn lựa vịng lặp Lập trình có cấu trúc • Edsger Dijkstra, 1970 – Lý luận phát biểu goto có hại chương trình, đồng thời đưa ý tưởng việc kiểm chứng tính đắn chương trình phương pháp hình thức Các phương pháp hình thức • Dựa ý tưởng chương trình đối tượng tốn học – Một chương trình “hữu hạn” (ie có tính dừng) biểu diễn hàm, hàm ánh xạ trạng thái nhớ (các trạng thái bắt ñầu) ñến trạng thái khác nhớ (các trạng thái kết thúc) – Một chương trình “vơ hạn” (ie khơng dừng) diễn đạt module “hữu hạn” (ie có tính dừng) vịng lặp vơ hạn Các phương pháp hình thức (tt) • Tony Hoare, 1969 – Viết báo tựa ñề: “An Axiomatic Basis for Computer Programming” Bài báo mô tả dẫn xuất mã chương trình từ tiên đề, theo cách tính đắn chương trình chứng minh cách hình thức • Harlan Mills, 1987 – Phát triển kỹ thuật “Cleanroom Software Engineering” dựa phương pháp hình thức để kiểm tra tính đắn chương trình Các phương pháp hình thức (tt) • Ưu ñiểm: – Cung cấp phương pháp kiểm chứng ñược ñể khai triển ñặc tả thành chương trình – Dựa kỹ thuật tốn học hình thức – Cách hiệu để kiểm chứng tính ñắn chương trình – ðược hỗ trợ số ngơn ngữ hình thức (Z, VDMSL, REFINE), hệ thống kiểm tra-kiểm chứng • Nhược điểm: – Một số khái niệm phương pháp đơi cịn chưa rõ – … Lập trình có cấu trúc theo tiếp cận top-down • Phương pháp – Lập trình cách mịn hóa bước – Dùng cấu trúc ñiều khiển dạng 1-in/1-out – Các kỹ thuật kiểm chứng • Bắt đầu với: – Một phát biểu chưa mịn hóa – Một đặc tả hình thức phát biểu Lập trình có cấu trúc theo tiếp cận top-down (tt) • Mịn hóa bước phát biểu ñể ñạt ñược kết thay chúng (nếu có) bằng: – – – – Các cấu trúc trình tự Các cấu trúc điều kiện Các cấu trúc lặp Các phát biểu thực thi (gán, gọi hàm) • Kiểm tra tính đắn bước 10 Các cấu trúc ñiều kiện – Kiểm chứng (tt) Kiểm chứng tính đắn: {P and B} C {Q} [định nghĩa phát biểu gán] {P and not B}D{Q} [ñịnh nghĩa phát biểu gán] {P} G {Q} [Qui tắc kiểm chứng cho cấu trúc ñiều kiện] {Q} H {R} [ñịnh nghĩa phát biểu gán] {P} F {R} [Qui tắc kiểm chứng cho cấu trúc trình tự] 24 Các cấu trúc ñiều kiện – Kiểm chứng (tt) Áp dụng biến đổi bảo tồn ngữ nghĩa, nhận được: if z < then z := -z end x := y * z 25 Các cấu trúc ñiều kiện – Sơ ñồ kiểm chứng P true false B P and not B C D Q Qui tắc kiểm chứng cho ñiều kiện: {P and B} C {Q}, {P and not B} D {Q} {P} if B then C else D end {Q} 26 Các cấu trúc vòng lặp Dạng tổng quát cho vòng lặp while : formal spec {P} F {R} {P} G {Q} {Q and B} H {Q} PDL [F: function] [G: initialization] while B loop [H: body] end 27 Các cấu trúc vòng lặp (tiếp theo) Qui tắc kiểm chứng cho vòng lặp while: {P} G {Q}, {Q and B} H {Q} {P} G; while B loop H end {Q and not B} Phương pháp thay F cấu trúc vòng lặp while: – – – Chọn Q (bất biến vịng lặp) B (điều kiện vịng lặp) cho (Q and not B) bao hàm R Chọn G H cho (a) G làm cho Q ñúng (b) B sai (để vịng lặp kết thúc) (c) thực H B Q ñúng Kiểm tra (a), (b), (c) 28 Các cấu trúc vòng lặp – Ví dụ Vấn đề: mịn hóa phát biểu [F: Tìm phần tử nhỏ a(j) dãy phần tử a(i n) mảng a] ðặc tả hình thức: {P} F {R} P=(a ∈ integer array and i, n ∈ integer and ≤ i ≤ n ≤ size(a)) R=(P and j ∈ integer and i≤j≤n and a(j)=min(a(i n))) Giải pháp: Q=(P and j, k ∈ integer and i≤j≤k≤n and a(j)=min(a(i k))) B=(k a(k) then [ T1: L2 and a(k) < a(j) ] [để B sai] [để Q đúng] 31 Các cấu trúc vịng lặp – Chương trình dẫn xuất (tt) else end j := k [ T2: … a(j)=min(a(i k)) ] [ F1: … a(j) ≤ a(k) ] end [ R: Q and not B ] 32 Các cấu trúc vòng lặp – Kết proc descr local pre post f (a [array], i, n [integers] ) [f(a, i, n) = j where a(j) = min(a(i n))] j, k [integers] [1 ≤ i ≤ n ≤ size(a) ] [1 ≤ i ≤ j ≤ n ≤ size(a) and a(j)=min(a(i n)) ] begin if not (1

Ngày đăng: 11/05/2021, 00:00

TỪ KHÓA LIÊN QUAN

w