Bài giảng Nhập môn tin học - Chương 11: Lập kế hoạch viết chương trình trên máy tính
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ả
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn tin học - Chương 11: Lập kế hoạch viết chương trình trên máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1
LẬP KẾ HOẠCH VIẾT CHƯƠNG
TRÌNH TRÊN MÁY TÍNH
Chương 11
2
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ả
3
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
4
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).
Thuật giải là gì?
5
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.
6
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
7
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.
8
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
9
Lưu đồ - Flowcharts
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.
Bắt đầu
Đọ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
Dừng
10
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.
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
Các kí hiệu cơ bản của lưu đồ
16
Bắt đầu
Đọ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
Dừng
Bắt đầu
Count=0
Đọc dữ liệu
đầu vào
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
Viết dữ liệu
đầu ra
Cộng 1 vào Count
Có phải Count
= 50 ?
Dừng lại
No
Yes
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
Bắt đầu
Đọc dữ
liệu đầu
vào
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
Viết dữ
liệu đầu ra
Dừng lại
No
Có phải
Rollno =
0000000 ?
Yes
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.
17
Các kí hiệu bổ sung của lưu đồ
18
Các kí hiệu bổ sung của lưu đồ
19
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.
20
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
obtained against 30.
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.
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ẽ
22
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.
Sinh viên vẽ
23
Start
Count = 0
Read input
data
Is Sexcode= Z?
1
2
Add marks of all
subjects giving
Total
Percentage =
Total / 10
Is percentage => 45 ?
Is percentage < 60 ?
Write
output data
Add 1 to Count
1
1
1
2
Stop
Write Count
Is Sexcode= F?2
Yes
No
Yes
No
No
Yes
Yes
Figure 11.10. Flowchart of example 11.9. Redraw
to illustrate the use of connectors
24
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 đồ.
25
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.
26
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.
27
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.
28
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
Một dạng của bảng quyết định
29
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.
30
Mẫu bảng quyết định
31
Ư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
32
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.
33
MÃ GIẢ
34
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.
35
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).
36
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 đó
37
Logic lựa chọn
Còn gọi là logic quyết định, được dùng để đưa ra quyết định.
38
Logic lựa chọn
39
Logic lựa chọn
40
Logic lặp lại (hay vòng lặp)
41
Logic lặp lại (hay vòng lặp)
42
Ví Dụ Về Mẫu mã giả
43
Ví Dụ Về Mẫu mã giả
44
Ư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.
45
Ư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.
46
Câu hỏi và bài tập
Giáo trình trang 361
Bài tập trang 40