Lưu đồ - WordPress.com

Download Report

Transcript Lưu đồ - WordPress.com

Planning the Computer Program
(Lập kế hoạch cho chương trình máy tính)
1
Nội dung
Mục đích của việc lập kế hoạch chương trình
Thuật giải
Lưu đồ
Mã giả
Bảng quyết định
Mục đích của việc lập kế hoạch
chương trình
Mục đích:
– Để viết một chương trình đúng và hiệu quả.
– Logic của một chương trình là rất phức tạp, để viết một
chương trình đúng, người lập trình cần lập kế hoạch
trước.
Do đó, trước khi chúng ta tìm hiểu làm thế nào để viết một
chương (chương kế) thì đầu tiên chúng ta sẽ tìm hiểu làm thế
nào để lập một kế hoạch cho một chương trình trên máy tính
 Cách thực hiện:
– Thu thập thông tin: xác định dữ liệu nhập và xuất
– Xác định các kiểu dữ liệu, cách tổ chức và cài đặt dữ liệu
– Xác định các công việc cần phải giải quyết
Thuật giải -Algorithm
Thuật toán:
– Liên quan đến tính logic của một chương trình.
– là tập các bước có thể tính toán được (là một tập
hợp các hàm, thủ tục, cấu trúc điều khiển được
sắp xếp theo trình tự) nhằm thực hiện một bài
toán nhất định để đạ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.
Thuật giải -Algorithm
Ví dụ: thuật toán để giải phương trình bậc nhất
ax + b = 0
Nếu a = 0
Nếu b = 0 thì phương trình có vô số nghiệm
Nếu b ≠ 0 thì phương trình vô nghiệm
Nếu a ≠ 0
Phương trình có duy nhất một nghiệm x = -b/a
Thuật giải -Algorithm
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.
Thuật giải -Algorithm
Có 2 loại Giải thuật:
– Xác định: Là những giải thuật được áp dụng cho
những bài toán mà lời giải của nó có thể biểu diễn
dưới dạng toán học. Trong loại giải thuật này các
bước giải bài toán, vòng lặp sử dụng,...được xác
định từ trước và ít khi sử dụng cấu trúc rẽ nhánh
Ví dụ: Tính tổng của các số từ 1 tới 100.
– Không xác định: Là giải thuật áp dụng cho những
bài toán mà lời giải của nó chưa có sẵn mà có
được ở 1 bước nhất định nào đó.
Ví dụ: Nhập 1 số nguyên dương ngẫu nhiên, tính
tổng các số từ 1 tới số đó.
Thuật giải -Algorithm
Ví dụ: Tìm số lớn nhất trong 3 số A, B, C.
Giải:
- Bắt đầu
- B1: Nhập 3 số A, B, C.
- B2: Tìm số lớn nhất giữa 2 số A và B, lưu vào biến
Max_AB.
- B3: Tìm số lớn nhất giữa 2 số Max_AB và C.
- Xuất giá trị Max.
- Kết thúc
Thuật giải -Algorithm
Ví dụ: Xây dựng các thuật giải sau:
– Nhập 2 số nguyên. 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
– Tính trung bình của N số nguyên đầu tiên.
– Viết chương trình giải phương trình bậc hai:
ax2+ bx+c=0( với a# 0).
– Tính lương cho nhân viên biết:
Luong = LCB + Thuong
Thảo luận
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 : độ chính xác của cách giải quyết cho
một vấn đề.
Tính tổng quát: có thể xử lý hàng loạt các dữ liệu đầu
vào.
Biểu diễn thuật giải
Các cách biểu diễn một thuật giải:
– Bằng chương trình - As programs
– Bằng lưu đồ - As flowcharts
– Bằng mã giả - As pseudocodes
– Bằng bảng quyết định – As decision tables
Khi thuật toán được biểu diễn bằng một ngôn ngữ
lập trình thì nó trở thành một chương trình.
Lưu đồ - Flowcharts
 Lưu đồ: là một hình ảnh, 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.
 Lưu đồ như một công cụ kế hoạch của
một chương trình để tổ chức một dãy
các bước cần thiết nhằm giải quyết
một vấn đề bằng máy tính.
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
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.
Các kí hiệu cơ bản của lưu đồ
Các ký hiệu trong lưu đồ:
Các kí hiệu cơ bản của lưu đồ
Biểu thức
điều kiện
Lệnh 1
Lệnh 2
Lệnh 3
(a) Cấu trúc
tuần tự
true
false
Biểu thức
điều kiện
true
Lệnh 1
Lệnh 1
Lệnh 1
Lệnh 2
Lệnh 2
Lệnh 2
Lệnh 3
Lệnh 3
Lệnh 3
(b) Cấu trúc lựa chọn (IF - THEN - ELSE)
Các kí hiệu cơ bản của lưu đồ
Ví dụ: lưu đồ rẽ nhánh
Nếu I = 10
Đúng
Sai
(a) Một quyết định có hai nhánh
lựa chọn
A< B
So sánh
A&B
A>B
A=B
(b) Một quyết định có ba nhánh lựa
chọn
Các kí hiệu cơ bản của lưu đồ
Ví dụ: lưu đồ có nhiều lựa chọn
I=?
=0
=1
=2
=3
=4
=5
Giá trị khác
(c) Một quyết định có nhiều nhánh lựa chọn
Ví dụ: Biểu thức 1.. n: số nguyên
Biểu thức
True
Biểu thức
==n1?
Các câu lệnh1
False
True
Biểu thức
==nk?
Các câu lệnh n
False
True
default:
Các câu lệnh
Kết
thúc
Các kí hiệu cơ bản của lưu đồ
Cấu trúc lặp
Cấu trúc lặp
Dãy biểu thức 1
false
Điều kiện
true
Khối lệnh lặp
Dãy biểu thức 2
exit
20
Cấu trúc lặp
false
Điều kiện
true
Khối lệnh lặp
Thoát
21
Cấu trúc lặp
Khối lệnh lặp
true
Điều kiện
false
Thoát
22
Các kí hiệu cơ bản của lưu đồ
Ví dụ: Vẽ lưu đồ thuật toán nhập vào 1 số và cho biết số đó
nhỏ hơn, lớn hơn 10.
Lưu đồ minh họa cấu trúc lựa chọn.
Bắt đầu
Các kí hiệu cơ bản của lưu đồ
Ví dụ1: vẽ lưu đồ thuật toán tính
điểm trung bình của sinh viên, với
số môn học là 10.
Đọ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
Các kí hiệu cơ bản của lưu đồ
Bài tập 1:
1. Vẽ lưu đồ cho thuật toán nhập vào 2 số a,b. Tính và
xuất tổng, tích, hiệu, thương của 2 số.
2. Vẽ lưu đồ thuật toán giải phương trình bậc nhất :
ax+b=0.
3. Vẽ lưu đồ thuật toán tính điểm trung bình của sinh
viên, với số môn học là 10 cho 50 sv
Thảo luận tại lớp
Các kí hiệu cơ bản của lưu đồ
Bài tập 2: Vẽ lưu đồ cho các thuật giải sau:
– Nhập điểm toán, lý, hóa. Tính điểm trung bình
– Tính trung bình của N số nguyên đầu tiên.
– Viết chương trình giải phương trình bậc hai:
ax2+ b2+c=0( với a# 0).
– Tính lương cho nhân viên biết:
Luong = LCB + Thuong
Thảo luận tại lớp
Lưu đồ - Flowchart
Ví dụ 2: 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 để in ra danh sách sinh
viên có tỷ lệ phần trăm điểm >=30% trong kỳ thi
này, và sau đó in ra theo mã sinh viên và tên sinh
viên. Giả sử điều kiện kết thúc là Rollno=9999999.
28
Các kí hiệu của lưu đồ
Bài tập 3: 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ớ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)
Bài tập về nhà
Các kí hiệu của lưu đồ
Bài tập 4: 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.
Bài tập về nhà
Các kí hiệu bổ sung của lưu đồ
Các kí hiệu bổ sung của lưu đồ
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
33
Các luật của lư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
đồ.
Các luật của lư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.
35
Thuận lợi và hạn chế của lư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.
36
Thuận lợi và hạn chế của lư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.
37
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
38
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.
39
Mẫu bảng quyết định
40
Ư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
41
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.
42
MÃ GIẢ
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.
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).
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 đó. Cấu trúc lưu đồ và mã giả
.
Lệnh 1
.
Lệnh 1
.
.
Lệnh 2
.
Lệnh 2
.
.
.
(a) Lưu
. đồ
(b) Mã giả
Cấu trúc lưu đồ và mã giả
Logic lựa chọn
Còn gọi là logic quyết định, được dùng để đưa ra quyết
định.
 3 loại logic lựa chọn thường sử dụng: IF….THEN…ELSE,
IF…THEN, CASE
Logic lựa chọn
Logic lựa chọn
Logic lặp lại (hay vòng lặp)
 Sử dụng khi có 1 hoặc nhiều lệnh có thể được thực
thi vài lần phụ thuộc vào vài điều kiện.
2 cấu trúc lặp thường được sử dụng:
– DO....WHILE
– REPEAT….UNTIL
Logic lặp lại (hay vòng lặp)
Logic lặp lại (hay vòng lặp)
Ví Dụ Về Mẫu mã giả
Ví Dụ Về Mẫu mã giả
Ví Dụ Về Mẫu mã giả
Viết mã giả cho các thuật giải sau:
– Nhập điểm toán, lý, hóa. Tính điểm trung bình
– In ra tất cả các số nguyên từ 1 đến N.
– Tính tổng N số nguyên đầu tiên.
– Viết chương trình giải phương trình bậc hai:
ax2+ b2+c=0( với a# 0).
– Tính lương cho nhân viên biết:
Luong = LCB + Thuong
Thảo luận tại lớp
Ư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.
Ư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.
CÂU HỎI VÀ BÀI TẬP
Vẽ lưu đồ và viết mã giả tương ứng cho các bài toán sau:
1. Nhập vào 2 số nguyên và 1 phép toán. Nếu phép toán là ‘+’, ‘-‘,
‘*’ thì in ra kết qua là tổng, hiệu, tích của 2 số. Nếu phép toán là
‘/’ thì kiểm tra xem số thứ 2 có khác không hay không? Nếu
khác không thì in ra thương của chúng, ngược lại thì in ra thông
báo “Không thể chia 1 số cho 0!”.
2. Yêu cầu người thực hiện chương trình nhập vào một số nguyên
dương là tháng trong năm và in ra số ngày của tháng đó.
- Tháng có 31 ngày: 1, 3, 5, 7, 8, 10, 12
- Tháng có 30 ngày: 4, 6, 9, 11
- Tháng có 28 hoặc 29 ngày : 2
- Nếu nhập vào số <1 hoặc >12 thì in ra câu thông báo “Không
có tháng như vậy”.
CÂU HỎI VÀ BÀI TẬP
3. Có ba số được nhập lần lượt vào các biến A, B, và C.
Sau đó in ra số lớn nhất của ba số.
4. In tất cả sinh viên trên 20 tuổi trong lớp. Mẫu tin
đầu vào chứa tên và tuổi sinh viên. Giả định giá trị
kết thúc là 99 cho trường tuổi của mẫu tin lưu động.
5. In tên và tuổi của sinh viên lớn nhất và nhỏ nhất
trong lớp. Mẫu tin đầu vào chứa tên và tuổi sinh
viên. Giả định giá trị kết thúc là 99 cho trường tuổi
của mẫu tin lưu động.