Chương 11
LẬP KẾ HOẠCH VIẾT CHƯƠNG
TRÌNH TRÊN MÁY TÍNH
1
Nội dung
11.1. Mục đích của việc lập kế hoạch chương
trình
11.2 Thuật giải
11.3. Lưu đồ
11.4. Bảng quyết định
11.5. Mã giả
2
Mục đích của việc lập kế hoạch
chương trình
Mục đích: để tạo một chương trình hiệu quả. Kế hoạch
của một chương trình bao gồm định nghĩa các bước
thực hiện của chương trình.
Các bước thực hiện:
Thu thập thơng tin: xác định dữ liệu nhập và xuất
Xây dựng cấu trúc dữ liệu: xác định các kiểu dữ liệu, cách tổ
chức và cài đặt dữ liệu
Xây dựng thuật giải: xác định các công việc cần phải giải quyết
3
Thuật giải là gì?
Cịn gọi là thuật tốn là tập các bước có thể tính tốn
được để đạt được kết quả mong muốn.
Được xây dựng trên cơ sở của cấu trúc dữ liệu đã được
chọn.
Có thể được minh họa bằng ngôn ngữ tự nhiên (natural
language), bằng sơ đồ (flow chart) hoặc bằng mã giả
(pseudo code).
4
Thuật giải là gì?
Chất lượng của một thuật giải phải có những đặc điểm
sau:
Mỗi lệnh phải rõ ràng và chính xác.
Mỗi lệnh nên thực hiện trong thời gian giới hạn.
Một hay nhiều lệnh không nên lặp lại vô hạn.
Sau khi thực hiện các chỉ thị, thuật giải kết thúc thì
phải thu được kết quả mong đợi.
5
Các mẫu của thuật giải
Ví dụ: Xây dựng các thuật giải sau:
Tính tổng, hiệu, tích, thương của hai số nguyên.
Nhập điểm tốn, lý, hóa. Tính điểm trung bình
Viết chương trình giải phương trình bậc nhất
Tính lương cho nhân viên biết Luong = LCB + Thuong
Thảo luận
6
Chất lượng của giải thuật
Các yếu tố chính thường dùng để đánh giá chất lượng
của một thuật toán là:
Yêu cầu thời gian: là thời gian yêu cầu để thực thi một
chương trình trên hệ thống máy tính. Nếu thời gian u
cầu ít thì đó là một thuật tốn tốt.
Yêu cầu bộ nhớ: là vùng nhớ trống yêu cầu để thực thi
một chương trình trên hệ thống máy tính. Nếu u cầu
bộ nhớ ít thì đó là một thuật tốn tốt.
Độ chính xác
Tính tổng qt: có thể xử lý hàng loạt các dữ liệu đầu
vào.
7
Mô tả của giải thuật
Các cách mô tả một thuật tốn:
Bằng chương trình (ngơn ngữ tự nhiên) - As programs
Bằng lưu đồ - As flowcharts
Bằng mã giả - As pseudocodes
Bằng bảng quyết định - As decision tables
8
Lưu đồ - Flowcharts
Bắt đầu
Lưu đồ là một bản vẽ mơ tả một thuật
tốn.
Lưu đồ hoạt động như một lộ trình
cho lập trình viên và hướng dẫn họ
cách đi từ điểm bắt đầu đến điểm kết
thúc.
Đọc dữ
liệu đầu
vào
Cộng điểm các
môn thành Tổng
cộng
Phần trăm=
Tổng cộng / 10
Viết dữ
liệu xuất
9
Dừng
Tại sao phải sử dụng lưu đồ?
Khi vẽ một lưu đồ, lập trình viên khơng quan tâm đến
yếu tố ngơn ngữ lập trình. Họ quan tâm hồn tồn đến
tính luận lý của thủ tục.
Bất kỳ lỗi logic nào của thủ tục có thể bị bỏ qua một cách
dễ dàng trong một chương trình.
Khi một lưu đồ đã có, lập trình viên có thể bỏ qua tính
luận lý và chỉ quan tâm đến viết mã lệnh cho những thao
tác theo lưu đồ.
Thường dùng cho những người mới bắt đầu lập trình để
giảm bớt số lỗi và những sơ sót trong chương trình.
10
Các kí hiệu cơ bản của lưu đồ
11
Các kí hiệu cơ bản của lưu đồ
12
Các kí hiệu cơ bản của lưu đồ
13
Các kí hiệu cơ bản của lưu đồ
14
Các kí hiệu cơ bản của lưu đồ
15
Bắt đầu
Bắt đầu
Bắt đầu
Yes
Đọc dữ
liệu đầu
vào
Count=0
Đọc dữ
liệu đầu
vào
Đọc dữ liệu
đầu vào
Có phải
Rollno =
0000000 ?
Cộng tất cả điểm
của những mơn
học cho tổng số
Cộng điểm các
môn thành Tổng
cộng
Cộng tất cả điểm
của những môn
học cho tổng số
Phần trăm = tổng
số / 10
Dừng lại
Phần trăm =
tổng số / 10
Viết dữ liệu
đầu ra
No
Phần trăm=
Tổng cộng / 10
Cộng 1 vào Count
No
Viết dữ
liệu xuất
Có phải Count
= 50 ?
Yes
Viết dữ
liệu đầu ra
Hình minh họa 11.7. Tạo biểu đồ trình tự thao
tác cho lời giải của ví dụ 11.4, sử dụng khái
niệm trailer record. Vòng lặp được ngắt bởi
việc nhận ra một bản ghi không phải là dữ liệ
đặc biêt.
Dừng lại
Dừng
Hình minh họa 11.6. Biểu đồ trình tự thao tác cho lời
giải của ví dụ 11.4
16
Các kí hiệu bổ sung của lưu đồ
17
Các kí hiệu bổ sung của lưu đồ
18
Các kí hiệu của lưu đồ
Ví dụ: Một sinh viên có mặt trong một kì thi
với tổng cộng 10 mơn học, mỗi mơn học có
điểm tối đa là 100 điểm.
Mỗi sinh viên gồm: Mã số của sinh viên, tên
điểm các mơn học.
Vẽ một lưu đồ cho giải thuật để tính và in ra
tỷ lệ phần trăm điểm của mỗi sinh viên trong
kì thi này và sau đó in ra theo mã sinh viên
và tên sinh viên.
19
Các kí hiệu của lưu đồ
Example 1:
Make a list of only students who
have passed (obtained 30% marks) in the
examination. And print out the total number of
such as students.
+ Assume: input data is terminated by sentinel
value is 9999999
Solution: There are two decision symbols.
The first one checks for a trailer record by
comparing Rollno against the value 9999999 to
determine if the processing is complete.
The second one checks whether student has
passed or failed by comparing percentage marks
20
Các kí hiệu của lưu đồ
Ví dụ: Một sinh viên có mặt trong một kì thi với tổng
cộng 10 mơn học, mỗi mơn học có điểm tối đa là 100
điểm.
Mỗi sinh viên gồm: Mã số của sinh viên, tên điểm các
môn học.
Vẽ một lưu đồ cho giải thuật để tính và in ra tỷ lệ
phần trăm điểm của mỗi sinh viên trong kì thi này và
sau đó in ra theo mã sinh viên và tên sinh viên.
Vẽ lại với số sinh viên là 50
Vẽ lưu đồ in danh sách sinh viên đậu (đạt được 40%
hoặc nhiều điểm hơn)
Sinh viên vẽ
21
Các kí hiệu của lưu đồ
Ví dụ: Một sinh viên có mặt trong một kì thi với tổng
cộng 10 mơn học, mỗi mơn học có điểm tối đa là 100
điểm.
Mỗi sinh viên gồm: Mã số của sinh viên, tên điểm các
mơn học, phái có giá trị M (nam), F (nữ). Vẽ lưu đồ
thực hiện các công việc sau:
Tạo danh sách chỉ chứa những Sv nữ thi đậu (đạt từ 40% số
điểm trở lên).
Tạo danh sách chỉ chứa những Sv nữ thi đậu trong lần chia thứ
hai (đạt được 45% hoặc hơn nhưng nhỏ hơn 60% số điểm).
In ra tổng số của những sinh viên theo yêu cầu trên.
22
Sinh viên vẽ
Start
Count = 0
Read input
data
1
Yes
Is Sexcode= Z?
No
2
2
Is Sexcode= F?
2
Yes
Add marks of all
subjects giving
Total
Percentage =
Total / 10
1
Write Count
Stop
Is percentage => 45 ?
No
Yes
1
No
Is percentage < 60 ?
Yes
Write
output data
Add 1 to Count
1
Figure 11.10. Flowchart of example 11.9. Redraw
to illustrate the use of connectors
23
Các luật của biểu đồ
Nhánh chính đầu tiên của biểu đồ phải hợp nhất.
Duy trì mức độ ổn định cho một biểu đồ.
Không xây dựng lược đồ chi tiết hoặc một lược đồ chỉ là
một đồ thị biểu diễn từng bước một của một chương
trình.
Những ký hiệu của biểu đồ nên là những câu phát biểu
thông dụng và dễ hiểu.
Thống nhất trong việc sử dụng tên và các biến trong
biểu đồ.
24
Các luật của biểu đồ
Đi từ trái qua phải và từ trên xuống dưới trong quá trình
xây dựng biểu đồ.
Nên tránh sự băng qua của những đường thẳng nối tiếp
nhau.
Nếu một biểu đồ tiến trình kéo dài hơn một trang thì nên
tách tại một điểm nhập vào và điểm xuất ra.
Ngoài ra nhũng kết nối nên đặt nhãn để kết nối những
phần của biểu đồ trên các trang khác nhau.
25