46
1 LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH Chương 11

LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

  • Upload
    josef

  • View
    111

  • Download
    1

Embed Size (px)

DESCRIPTION

LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH. Chương 11. 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ả. Mục đích của việc lập kế hoạch chương trình. - PowerPoint PPT Presentation

Citation preview

Page 1: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

1

LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

Chương 11

Page 2: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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ải11.3. Lưu đồ11.4. Bảng quyết định11.5. Mã giả

Page 3: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 4: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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ì?

Page 5: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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. 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.

Page 6: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 7: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 8: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 9: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 10: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 11: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

11

Các kí hiệu cơ bản của lưu đồ

Page 12: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

12

Các kí hiệu cơ bản của lưu đồ

Page 13: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

13

Các kí hiệu cơ bản của lưu đồ

Page 14: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

14

Các kí hiệu cơ bản của lưu đồ

Page 15: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

15

Các kí hiệu cơ bản của lưu đồ

Page 16: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 17: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

17

Các kí hiệu bổ sung của lưu đồ

Page 18: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

18

Các kí hiệu bổ sung của lưu đồ

Page 19: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 20: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 21: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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ẽ

Page 22: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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ẽ

Page 23: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 24: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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 đồ.

Page 25: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

25

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.

Page 26: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 27: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍ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.

Page 28: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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

Page 29: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

29

BẢNG QUYẾT ĐỊNHCá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.

Page 30: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

30

Mẫu bảng quyết định

Page 31: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY 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

Page 32: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 33: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

33

MÃ GIẢ

Page 34: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 35: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍ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).

Page 36: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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 đó

Page 37: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

37

Logic lựa chọn

Còn gọi là logic quyết định, được dùng để đưa ra quyết định.

Page 38: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

38

Logic lựa chọn

Page 39: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

39

Logic lựa chọn

Page 40: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

40

Logic lặp lại (hay vòng lặp)

Page 41: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

41

Logic lặp lại (hay vòng lặp)

Page 42: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

42

Ví Dụ Về Mẫu mã giả

Page 43: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

43

Ví Dụ Về Mẫu mã giả

Page 44: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

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.

Page 45: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍ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.

Page 46: LẬP KẾ HOẠCH VIẾT CHƯƠNG TRÌNH TRÊN MÁY TÍNH

46

Câu hỏi và bài tập

Giáo trình trang 361

Bài tập trang 40