11 Thiet Ke Chuong Trinh Voi Ham

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

Kỹ Thuật Lập Trình

(Ngôn Ngữ Lập Trình C)

Thiết kế chương trình với hàm


Phân Tích → Thiết Kế → Lập Trình
• Phân tích bài toán.
• Thiết kế một giải pháp mang tính tổng thể (big-picture solution)
– Các chức năng hàm được phân chia đi cùng với một đồ thị gọi
hàm tĩnh
• Thiết kế từng hàm cụ thể
– Các hàm này chỉ phụ thuộc vào các hàm cấp thấp (hàm cơ bản) đã
có sẵn
• Và cuối cùng là công việc lập trình chi tiết.

Trang 2
Quá Trình Phân Chia Chức Năng Hàm
• Tìm các yếu tố chung (tương tự).
• Tham số hóa các đặc trưng khác biệt
• Xác định xem một hàm cần gọi đến những hàm nào
– Vẽ đồ thị gọi hàm tĩnh để thể hiện mối liên hệ giữa các hàm

Trang 3
Các bước tiến hành thiết kế
• Yêu cầu và đặc tính kỹ thuật
• Luồng dữ liệu chương trình
• Cấu trúc dữ liệu
• Phương pháp (Top-down) hay (bottom-up)
• Viết mã nguồn
• Gỡ lỗi và kiểm tra

• Thiết kế không phải là quá trình tuần tự mà là quá trình diễn dã hoàn
thiện từng bước

4
Yêu cầu và đặc tính kỹ thuật
• Yêu cầu: chương trình sẽ phải làm gì, yêu cầu phải thể hiện rõ
mục tiêu cần làm nhưng chưa cần chi tiết cụ thể
• Đặc tính kỹ thuật: Mô tả chi tiết các chức năng của chương
trình
– Ví dụ, định dạng , phản ứng của chương trình, giới hạn bộ nhớ
• Đặc tính kỹ thuật có thể tiếp tục được mở rộng, tùy theo sự phát
triển của phần mềm

5
Luồng dữ liệu
• Vẽ sơ đồ các chức năng chính của chương trình.
– Tuần tự của hàm, vòng lặp …

• Hai loại sơ đồ chính: Sơ đồ thiết kế và biểu đồ trạng thái


(state-transition diagrams).
• Mục đích: dễ dàng nhìn được
– Các phần chính và hoạt động chính của phần mềm
– Chương trình sẽ làm gì khi chuyển từ phần này sang phần
khác
– Sự liên thuộc giữa các phần của chương trình

6
Ví dụ: sơ đồ

START

statements
statements

conditional
FALSE

TRUE

statements

END

7
Cấu trúc dữ liệu
• Quyết định dạng dữ liệu nào sẽ được sử dụng chính trong
chương trình và sẽ được trao đổi giữa các phần của chương
trình với nhau
• Các cấu trúc này sẽ được chỉ ra từ sơ đồ thiết kế của phần mềm

8
Thiết kế từ trên xuống (Top-down Design)

• Lần lượt chia chương


trình lớn thành các
phần nhỏ và liên tục
• Thiết kế ra cấu trúc
của chương trình

9
Thực hiện
• Các hàm sẽ thực hiện theo hình cây, với hàm trên là tổng hợp của
nhiều hàm dưới
• Quá trình chia sẽ tiếp tục thực hiện đến khi hàm dưới cùng là hàm
với nhiệm vụ duy nhất
• Việc này thường được tiến hành bằng đưa ra chuỗi hàm, với giao
diện nhưng không có nội dung cụ thể
• Tiến hành debug từng hàm tại từng thời điểm

• Đây là phương pháp tốt cho thiết kế cấu trúc chương trình, nhưng
các hàm có thể không được sử dụng lại (re-use) toàn diện

10
Thiết kế từ dưới lên (Bottom-up Design)

• Xác nhận các phần của chương trình cần phải có mà chưa cần
biết cấu trúc của chương trình.
• Viết từng phần của chương trình
– Với giao diện xác định
– Lập trình và kiểm tra riêng từng phần
• Các phần của chương trình sẽ dế dùng lại hơn so với top-down.
• Các phần có thể gộp lại dể tạo nên thư viện
• C standard library là ví dụ về bottom-up design.

11
Bottom-up Design
• Các nhược điểm.
– Không nhìn thấy vấn đề tổng thể. Không đưa ra cấu trúc tốt của
chương trình cụ thể
– Thiếu sự liên kết giữa các phần của chương trình

• Hai phương pháp này có thể bổ sung và kết hợp để tạo nên
chương trình

12
Thiết kế định dạng
• Đưa ra tập hợp các hàm nhưng không đưa ra chi tiếp hàm thực
hiện từng hàm.
• Mô ta chương trình theo kiểu viết văn:
loop number of times
prompt user and get integer value
calculate factorial
print factorial

• Sau đó lần lượt thay thế các phần bằng các hàm C tương ứng

13
Ví dụ: Game of Tic-Tac-Toe
• Yêu cầu:
– Cho phép người dùng chơi game of tic-tac-toe với máy tính (x và
O)
– Cho phép người dùng đi trước hay máy đi trước.
– Cho phép người dùng chơi lại

14
Mô tả
• Welcome message:

Welcome to TIC-TAC-TOE.
-----------------------

The object of this game is to get a line of X's


before the computer gets a line of O's. A line may
be across, down, or diagonal.

Bàn cờ được mô tả từ 1 – 9 như sau:

1|2|3
-----
4|5|6
-----
7|8|9

15
Mô tả kỹ thuật
• Người dùng đi trước:
Do you wish to go first (1-Yes, 0-No) ?

• Người dùng chọn số:


Your turn (1 - 9):

• Hiển thị kết quả


X| |
-----
X|O|
-----
|X|O

16
Mô tả kỹ thuật
• In ra kết quả:
You win. Congratulations!!
You lose. Better luck next time.
Its a draw. How dull.

• Hỏi người dùng có muốn chơi tiếp không ?


Do you wish to play again (1-Yes, 0-No) ?

17

You might also like