Transcript Document

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 toán là tập các bước có thể tính toá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.

Không có vòng 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 toá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 yêu
cầu ít thì đó là một thuật toá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 yêu cầu
bộ nhớ ít thì đó là một thuật toán tốt.
 Độ chính xác
 Tính tổng quát: 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 toá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
toá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 hoàn toà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ệu
đặ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 đồ (tt)




Đ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
Thuận lợi và hạn chế của biểu đồ
Thuận lợi:
 Giao tiếp tốt hơn.
 Phân tích hiệu quả
 Kết hợp hiệu quả
 Sơ đồ chương trình hợp lý
 Tạo mã lệnh hiệu quả
 Việc gỡ lỗi hệ thống dễ dàng
 Việc kiểm tra hệ thống hiệu quả
 Một biểu đồ tiến trình rất hữu ích trong việc kiểm tra dữ
liệu và các hoạt động của chương trình.
26
Thuận lợi và hạn chế của biểu đồ
Hạn chế:
 Rất tốn thời gian và công sức để vẽ, đặc biệt cho một
chương trình lớn và phức tạp.
 Mọi sự thay đổi và chỉnh sửa trong một chương trình sẽ
phải vẽ một biểu đồ hoàn toàn mới.
 Không thích hợp với các chương trình không ổn định
hay thay đổi.
27
BẢNG QUYẾT ĐỊNH



Là các quyết định hay các thao tác mà máy tính thực
hiện.
Gồm hai thành phần: điều kiện và hành động
Khi máy tính phải tạo một số lượng lớn các quyết định
hoặc nếu có một số lượng lớn những nhánh khác nhau
bên trong một chương trình, bảng quyết định rất hữu
ích.
Table Heading
Decision Rules
Condition Stub
Condition entries
Action stub
Action Entries
28
Một dạng của bảng quyết định
BẢNG QUYẾT ĐỊNH
Các bước xây dựng một bảng quyết định là:
 Định nghĩa một cách hợp lý bài toán.
 Liệt kê tất cả những điều kiện được kiểm tra trong bài
toán
 Liệt kê những hành động phù hợp với các điều kiện
tương ứng.
 Hình thành một bảng quyết định.
29
Mẫu bảng quyết định
30
Ưu điểm của Bảng quyết định

Bảng quyết định thường được sử dụng cùng một chỗ
với biểu đồ vì những lý do sau:

Chúng cung cấp các mô tả cốt lõi của các trường hợp phức tạp
một cách logic

Dễ dàng hơn trong việc vẽ và thay đổi so với biểu đồ

Một bảng nhỏ có thể thay thế một vài trang biểu đồ tiến trình

Dễ dàng theo dõi
31
Hạn chế của Bảng quyết định

Bảng quyết định lớn có thể trở nên khó hiểu và khó
điều chỉnh.

Lưu đồ có khả năng diễn tả toàn bộ dãy các sự kiện
cần giải quyết tốt hơn.

Lưu đồ quen thuộc hơn và được ưu tiên dùng hơn
đối với những người mới học và các nhà lập trình
viên.
32
MÃ GIẢ
33
Mã giả là gì?
•
Mã giả (Pseudocode) là một công cụ phân tích dùng để
lập kế hoạch cho chương trình.
•
Mã giả không có bất cứ quy tắc cú pháp nào để trình bày
lệnh

Dễ dàng chuyển đổi mã giả thành ngôn ngữ lập trình

Mã giả nhấn mạnh thiết kế chương trình, mã giả cũng
được gọi là Ngôn Ngữ Thiết Kế Chương Trình.
34
Mã giả cho các cấu trúc điều khiển cơ bản

Có ba cấu trúc điều khiển logic sau đây :
1. Logic trình tự,
2. Logic lựa chọn,
3. Logic lặp (hay vòng lặp).
35
Logic tuần tự (Sequence Logic)
Logic tuần tự dùng để thực hiện lần lượt các lệnh theo trình tự nào đó
36
Logic lựa chọn
Còn gọi là logic quyết định, được dùng để đưa ra quyết định.
37
Logic lựa chọn
38
Logic lựa chọn
39
Logic lặp lại (hay vòng lặp)
40
Logic lặp lại (hay vòng lặp)
41
Ví Dụ Về Mẫu mã giả
42
Ví Dụ Về Mẫu mã giả
43
Ưu điểm và Nhược diểm của mã giả
Ưu điểm
• Biến đổi mã giả thành ngôn ngữ lập trình dễ dàng hơn so
với lưu đồ hay bảng quyết định.
• Dễ điều chỉnh.
• Lối viết của mã giả sẽ tốn ít thời gian hơn, tương đương
với cách viết của lưu đồ.
• Mã giả dễ viết hơn ngôn ngữ lập trình vì nó có duy nhất
một vài luật để tuân theo giúp lập trình viên tập trung vào
logic của chương trình.
44
Ưu điểm và Nhược diểm của mã giả
Nhược điểm
• Mã giả không có sự biểu diễn đồ họa của chương trình.
• Khi dùng mã giả thì không có luật chuẩn nào để làm
theo. Các lập trình viên sử dụng phong cách của mình để
viết mã giả nên khó khăn trong vấn đề truyền đạt nội
dung vì thiếu sự tiêu chuẩn hoá.
• Khó cho người mới học.
45
Câu hỏi và bài tập
Giáo trình trang 361
Bài tập trang 40
46