Phiếu đụ lỗ

Một phần của tài liệu Kỹ thuật lập trình (Trang 35 - 40)

) Hiến thị thơng tin

c Phiếu đụ lỗ

Ghi chú

38 Chương 1. Máy tinh - Phương pháp luận lập trình

Ví dụ 1.10: Sau đây là sơ đồ tiến trình tìm ước số chung lớn nhất (GCD - Greatest Common Divisor) của hai số nguyên dương a và b bàng giải thuật Euclid (Euclid's algorithm).

Hình 1.12. Sơ đồ tiến trình tìm ước sổ chung lớn nhắt cùa a và b

1.6. P h ư ơ ng pháp luận lập trình

Phương pháp luận lập trình (programming methodology) giải quyết các

vấn đề về phân tích (analysis), thiết kế (design) và thực hiện (implementation)

các chương trình.

Phương pháp luận lập trình cịn được gọi là phút triển chương trình

(program development).

Một phương pháp luận quan trọng là cách tiếp cận từ trên xuống (top-

Clncơng 1. Máy tính - Phương pháp luận lập trình 39

Quy trình giải quyết vấn đề {problem-solving process) bàng máy tính

gồm cĩ các giai đoạn {phase) quan trọng sau đây:

1. Đặc tả và phân tích vấn đề {problem analysis and specification) 2. Thiết kế giải thuật {algorithm design)

3. Xây dựng chiến lược kiểm thử {testing strategy development) 4. Viết chương trinh {program coding)

5. Thực hiện và kiểm tra chương trình {program execution and testing)

6. Bảo trì chương trình {program maintenance)

Trong thực tể, các giai đoạn này cĩ thể được thực hiện một cách tuần tự theo mơ hình thúc nước {waterfall model) hoặc chúng được thực hiện lặp vịng nhiều lần theo mơ hình xoắn ốc {spiral model).

1.6.1. Đặc tă và phân tích vấn đề

Đặc tả ban đầu của vấn đề {problem) cĩ thể hơi mơ hồ và khơng chính xác.

Do đĩ, giai đoạn đầu tiên cùa quy trinh giải quyết vấn đề là xem xét lại

{review) vấn đề một cách cẩn thận để xác định phần nhập và phần xuất của vấn

đề. Giai đoạn này cịn được gọi là hiểu vẩn đề {problem understanding). Giai đoạn này cĩ thể là rất khĩ nhưng nĩ cũng là giai đoạn hồn tồn quyết định.

Đặc tủ vấn đề {problem specification), cịn được gọi là định nghĩa vân đê {problem definition), bao gơm các định nghĩa chính xác của hai

thành phần chính là phần nhập và phần xuất và sự liên hệ giữa chúng.

- Phần nhập {input) là thơng tin gì được cho và những điều nào là

quan trọng để giải quyết vấn đề. Phần nhập được gọi là giả thiết {supposition) của bài tốn. Phần nhập phải được xác định dầy đủ đế

giải quyết vấn đề.

- Phần xuất {output) là thơng tin gì phải đạt được sau khi giải quyết

vấn đề. Phần xuất được gọi là két luận {conclusion) của bài tốn. Việc xác định phần nhập và phần xuất của vấn đề giúp cho ta hiểu vấn đề một cách rõ ràng và chính xác.

Phân tích vẩn đề {problem analysis) là một quá trình hiểu vấn đề, các

yêu câu của người sử dụng và đè xuât các giải pháp {solution) để giải quyết

các yêu câu này. Mục tiêu của phân tích vân đề là hiếu rõ vắn đề trước khi giải quyết nĩ.

40 Chương 1. Máy tính - Phương pháp luận lập trình

Người sử dụng nêu ra vấn đề và người giải quyết vấn đề {problem solver) phải cùng làm việc chung với nhau để bảo đảm cả hai cùng hiểu rõ

vấn đề.

Các bước của phân tích vấn đề gồm cĩ:

1. Đạt được sự chấp thuận (agreement) về định nghĩa vấn đề: Một cách đơn giản nhất để cĩ được sự chấp thuận là người giải quyêt vân đề phải ghi chép vấn đề rõ ràng vả bàn luận với người sử dụng. Các nguyên tắc ghi chép là KISS {Keep It Simple Stupid) và SVDPĨ {Subject-Verb- Direct-Preposition-Indirect).

2. Hiểu được các nguyên nhân cơ bản {root cause): vấn đề ở đẳng sau

vấn đề. Phân tích các nguyên nhân cơ bản là một cách làm cĩ hệ thống để làm rõ các nguyên nhân và những tim ẩn cùa vấn đề.

3. Xác định những người sử dụng {user) và những người cĩ Hên quan {stakeholder). Hiểu được các yêu cầu của người sử dụng và người cĩ

liên quan là yếu tố chính để xây dựng giải pháp hiệu quả. Người cĩ liên quan là người chịu ảnh hường chủ yếu do việc thực hiện giải quyết vấn đề bằng hệ thống {system) hoặc ứng dụng {application). 4. Xác định phạm vi của hệ thống {system boundary). Phạm vi của hệ

thống là sự giao tiếp {interface) với mơi trường ngồi hoặc với các hệ thống khác.

5. Xác định các ràng buộc {constraint) áp đặt cho giải phcáp. Ràng buộc là sự hạn chế hoặc giới hạn cần phải tuân thủ khi đề xuất giải pháp.

Ví dụ 1.11: Vấn đề ban đầu ià giải phương trình bcậc hai a x 2 + b x + c = 0 trong trường số thực.

Phần nhập: cho ba hệ số a, b, c là các số thực. Phần xuất: tìm nghiệm X là số thực.

1.6.2. Thiết kế giải thuật

Giai đoạn thiết kế giải thuật {algorithm design) gồm cĩ hai bước: - Thiết kế giải pháp

- Tinh chế giải pháp

Trong bước thiết kế giãi pháp {solution design), ta xác định giải pháp

sơ bộ. Ta chia vấn đề ban đầu thành nhiều vấn đề con nhỏ hơn, dễ giải quỵêt hom và cứ như thế cho đến khi các vấn đề con cuối cùng được giải quyết. Khi đỏ, ta đã tìm ra được giải pháp cuối cùng.

Chương 1. Máy tinh - Phương pháp luận lập trình 41

Các giải pháp từng phần để giải quyết các vấn đề con và giải pháp cuối cùng để giải quyết vấn đề ban đầu đều được trình bày ở dạng ỷ tưởng

{idea), chưa đề cập đến các yểu tố kỹ thuật cụ thể.

Cách tiếp cận này là cách tiếp cận từ trên xuống {top-down approach) với chiến lược chia đe trị {devide and conquer).

Các giải pháp cần phải cĩ tính tung quát. Tuy nhiên, ta cũng cần phải

lưu ý các khía cạnh riêng biệt {particular aspect) của vấn đề để tìm ra các

giải pháp thích hợp cho chúng.

Ví dụ 1.12: vấn đề ban đầu là giải phương trình bậc hai a x 2 + b x + c = 0

trong trường số thực, vấn đề này được chia thành hai vấn đề con nhỏ hơn như sau:

- Vấn đề ban đầu: Neu a = 0 thì giải phương trinh bậc nhất b x + c = 0, ngược lại thì giải phương trình bậc hai đủ a x 2 + b x + c = 0. - Vấn đ ề con I: giải phương trình bậc nhất b x + c = 0, khi a = 0.

Giải pháp từng phần là tìm nghiệm X (bậc nhất), nếu cĩ.

- Vắn đề con 2: giải phương trình bậc hai đủ a x 2 + b x + c = 0, khi

a # 0. Giải pháp từng phần là tìm nghiệm X (bậc hai), nếu cĩ.

Trong bước tinh chế giải pháp {solution refinement), một giải pháp

phải được mơ tả chi tiết hơn bằng một chuồi các hành động {action) cụ thể

được thực hiện trên dừ liệu của phần nhập để cho ra kết quả của phần xuất và được gọi là giải thuật {algorithm).

Quá trình tinh chế {refinement process) thực hiện chi tiết hĩa một

giải pháp cho đến khi đạt được mơ tả giải thuật tương tự với chương trình. Quy trình này được gọi là tinh chế dần từng bước {stepwise refinement).

Chương trình thực hiện giải thuật phải được viết bàng một ngơn ngừ mà máy tính hiêu được. Ngơn ngữ này được gọi là ngơn ngữ lập trình {progì amm ỉng language)

Do đĩ, ta thường mơ tà giải thuật bằng một ngơn ngữ tương tự vĩi ngơn ngữ ỉập trình, ngơn ngữ này được gọi là ngơn ngữ lập trình giả {pseudoprogramming language) và thường được gọi là mã gia {pseudocode).

Ngơn ngũ' này là sự pha trộn giũa ngơn ngữ tự nhiên {natuaral language) và ký hiệu tốn học {mathematical notation). Mã giã khơng phải là một ngơn

Một phần của tài liệu Kỹ thuật lập trình (Trang 35 - 40)

Tải bản đầy đủ (PDF)

(49 trang)