* Về kiến thức: - Nắm kĩ các khái niệm: Bài toán, thuật toán, chương trình - Hiểu biết được nhiều loại ngôn ngữ lập trình.. Trả lời: Mỗi loại máy tính đều có ngôn ngữ máy của nó, đó là n
Trang 1GIÁO ÁN CHI TIẾT I
o0o Người soạn: Nguyễn Thị Tú
Lớp : Tin 4A
Tên bài giảng:
Bài 6: Giải bài toán trên máy tính
I. Mục đích-yêu cầu.
* Về kiến thức:
- Nắm kĩ các khái niệm: Bài toán, thuật toán, chương trình
- Hiểu biết được nhiều loại ngôn ngữ lập trình
- Hiểu các bước cơ bản khi tiến hành giải bài toán trên máy
* Về kĩ năng:
- Giải được các bài toán đơn giản trên máy tính
II Phương pháp, phương tiện.
- Vấn đáp, thuyết trình, mô phỏng
- Máy tính, máy chiếu, bảng đen, SGK
III Ổn định lớp.
- Kiểm tra sĩ số, ổn định trật tự
- Kiểm tra bài cũ:
Câu hỏi 1:
Tại sao viết chương trình bằng ngôn ngữ bậc cao cần phải có chương trình dịch?
Trả lời:
Mỗi loại máy tính đều có ngôn ngữ máy của nó, đó là ngôn ngữ duy nhất để viết chương trình mà máy tính trực tiếp hiểu và thực hiện được Vì vậy, mỗi chương trình viết bằng ngôn ngữ khác muốn thực hiện được trên máy tính đều phải được dịch ra ngôn ngữ máy bằng một chương trình dịch
Câu hỏi 2:
Ngôn ngữ bậc cao hình thành các câu lệnh có ưu điểm gì so với ngôn ngữ hợp ngữ?
Trả lời:
Ngôn ngữ bậc cao có các câu lệnh được viết gần với ngôn ngữ tự nhiên hơn, có tính độc lập cao hơn ít phụ thuộc vào các loại máy cụ thể Do
đó người sử dụng dễ nhớ hơn,dễ thao tác hơn và thông dụng hơn
Trang 2IV Nội dung bài mới.
Nội dung ghi bảng Hoạt động của thầy Hoạt động của trò
Bài 6: GIẢI BÀI TOÁN TRÊN
MÁY TÍNH
*Các bước giải bài toán:
- Xác định bài toán
-Lựa chọn và xây dựng thuật toán
-Viết chương trình
-Hiệu chỉnh
-Viết tài liệu
1.Xác định bài toán.
Xác định phần INPUT, OUTPUT
của bài toán và mối quan hệ giữa
chúng Từ đó xác định ngôn ngữ và
cấu trúc dữ liệu một cách thích hợp
Đặt vấn đề: Biết rằng
máy tính là công cụ
hỗ trợ con người rất nhiều trong cuộc sống, con người muốn máy thực hiện bài toán thì phải đưa lời giải bài toán đó vào máy tính dưới dạng các lệnh
Vậy các bước để xây dựng một bài toán là gì?
-Ta đi tìm hiểu từng bước
Bước 1: Xác định bài
toán
-Xác định bài toán tức cần phải xác định những gì?
- Sau khi xác định được Input và Output của bài toán ta phải xác định gì nữa?
-Tìm hiểu Input , Output và mối quan
hệ giữa chúng để làm gì?
-Đúng vậy, trước mỗi bài toán ta cần xác định được Input, Output của nó và mối liên hệ giữa chúng nhằm lựa chọn thuật
Xác định Input, Output
Mối quan hệ giữa chúng
Để lựa chọn thuật toán, cách thể hiện các đại lượng đã cho,các đại lượng phát sinh trong quá trình giải bài toán
và ngôn ngữ lập trình thích hợp
Trang 3Ví dụ: Bài toán tìm UCLN của hai
số nguyên dương a,b
-Input: 2 số nguyên dương a,b
-Output: UCLN của 2 số a,b
2 Lựa chọn và xây dựng thuật
toán.
a Lựa chọn thuật toán.
-Mỗi thuật toán chỉ giải 1 bài toán
song một bài toán có thể có nhiều
thuật toán để giải Vậy ta phải chọn
thuật toán tối ưu nhất trong những
thuật toán đã đưa ra
toán và ngôn ngữ lập trình thích hợp
-Sau khi xác định được Input, Output và mối liên hệ giữa chúng ta sang bước tiếp theo:
Bước 2: Lựa chọn và
xây dựng thuật toán
-Hãy nhắc lại thuật toán là gì?
-Theo em thuật toán của bài này có giải được bài toán khác không?
-Với mỗi bài toán có phải chỉ có một thuật toán duy nhất không?
Ví dụ: Bài toán tìm
UCLN của 2 số có phải chỉ có thuật toán dung hiệu hai số như
đã xét ở bài trước không?
-Vậy khi nào thì ta phải lựa chọn thuật toán?
Input: a, b là hai số nguyên dương Output: UCLN của
a và b
-Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình
tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ Input của bài toán
ấy ta nhận được Output cần tìm -Mỗi thuật toán chỉ giải được 1 bài toán
-Một bài toán có thể có nhiều thuật toán để giải bài toán
-UCLN của 2 số ta
có thể sử dụng thuật toán dùng thương nữa ngoài thuật toán trừ hai số
-Khi có nhiều thuật toán để giải cho 1 bài toán
Trang 4*Thuật toán tối ưu: Là thuật toán có
các tiêu chí sau:
-Dễ hiểu
-Trình bày dễ nhìn
-Thời gian chạy nhanh
-Ít tốn bộ nhớ
Như vậy mỗi thuật toán chỉ giải 1 bài toán nhưng cũng có thể nhiều thuật toán cùng giải một bài toán Vậy ta phải chọn thuật toán tối ưu nhất trong những thuật toán đó Tiêu chí nào
để lựa chọn thuật toán?
Ví dụ: Trong máy tính
còn 64Mb Thuật toán 1: thời gian chạy nhanh hơn nhưng tốn 70Mb
Thuật toán 2: thời gian chạy chậm hơn nhưng tốn 54Mb
-Theo em thì nên chọn thuật toán nào để giải?
Vì sao?
-Trong các tiêu chí trên người ta lựa chọn tiêu chí nào?Vì sao?
Giải thích: Những tiêu chí như: độ phức tạp
ít, tài nguyên thuật toán phù hợp với tài nguyên thực tế, hay ít tốn bộ nhớ đều có thể khắc phục được, còn thời gian đã mất đi thì không thể lấy lại được nên khi lựa chọn thuật toán người ta thường quan tâm đến thời gian thực hiện thuật toán đó
Giải thích rõ hơn về
Các tiêu chí để lựa chọn thuật toán:
- Dễ hiểu
-Trình bày dễ nhìn -Thời gian chạy nhanh
-Ít tốn bộ nhớ
Thuật toán 2 vì thuật toán 1 có dung lượng lớn hơn dung lượng của máy tính
-Thời gian thực hiện nhanh vì thời gian là tài nguyên không thể tái tạo được
-Độ phức tạp vì độ phức tạp ít thì thời gian thực hiện sẽ ít
Trang 5b Biểu diễn thuật toán.
Là việc diễn tả thuật toán ở trên
Diễn tả thuật toán theo 2 cách:
+Theo cách liệt kê
+Theo cách dùng sơ đồ
Ví dụ: Tìm UCLN(a,b).
Có thể chọn 1 trong 2 cách sau:
*Theo liệt kê:
B1: nhập a,b
B2: nếu a=b thì UCLN=a
B3: Nếu a>b thì gán
a:=a-b, quay lại B2
B4: Nếu a<b thì gán
b:=b-a, quay lại B2
B5: Đưa kết quả ra màn hình
*Theo sơ đồ khối:
các tiêu chí này
-Sau khi đã xác định được thuật toán thích hợp để giải bài toán thì ta đi tìm cách diễn
tả thuật toán, việc đó gọi là Biểu diễn thuật toán
-Nhắc lại: Có mấy cách biểu diễn thuật toán?
Ví dụ: Tìm UCLN của
số nguyên a và b
-Thuật toán này đã được học ở bài trước nên cô mời hai bạn lên bảng viết thuật toán theo hai cách
-Sau khi viết thuật toán xong chúng ta bắt tay vào viết chương trình luôn không?
-Kiểm tra thuật toán bằng cách gì?
-Có 2 cách biểu diễn thuật toán: Biểu diễn bằng sơ
đồ khối và biểu diễn theo kiểu liệt kê
-Với bài toán tìm UCLN của hai số không phải chỉ có cách dùng hiệu của
2 số mà còn có cách dùng thương của 2 số Do đó một bài toán không nhất thiết chỉ có một thuật toán HS: Lên bảng viết thuật toán theo hai cách liệt kê hoặc sơ
đồ khối
-Không, phải kiểm tra thuật toán trước đã
-Xây dựng các bộ test cụ thể
Nhập a,b
a: = a-b
b: = b-a
Kết thúc a=b
a>b
Trang 63 Viết chương trình.
Là việc lựa chọn cấu trúc dữ liệu và
ngôn ngữ lập trình để diễn đạt thuật
toán trên máy tính
-Khi viết chương trình cần chọn
ngôn ngữ thích hợp, viết chương
trình trong ngôn ngữ nào thì phải
tuân thủ theo qui định ngữ pháp của
ngôn ngữ đó
4 Hiệu chỉnh
Sau khi viết xong chương trình cần
phải thử chương trình bằng một số
Ví dụ: Tìm UCLN của
2 số nguyên a và b
a=25, b=5→UCLN=5 a=17,b=13→UCLN=1
-Đến đây ta đã có được thuật toán của bài toán, công việc tiếp theo là chuyển thuật toán đó sang chương trình Ta đi vào bước tiếp theo:
Bước 3: Viết chương
trình
- Trước tiên ta đi lựa chọn ngôn ngữ lập trình thích hợp
-Có mấy loại ngôn ngữ lập trình, đó là những loại nào?
-Dựa vào đâu để lựa chọn ngôn ngữ?
Do có nhiều ngôn ngữ dùng để viết thuật toán nên việc chọn ngôn ngữ nào là tùy thuộc vào bài toán, vào người viết chương trình… Song chọn ngôn ngữ nào đi chăng nữa thì khi viết chương trình phải tuân thủ theo những qui định của ngôn ngữ đó
Bước 4: Hiệu chỉnh
-Chương trình được viết không phải lúc
Lắng nghe và quan sát ví dụ
-Có nhiều loại ngôn ngữ khác nhau
-Dựa vào ngôn ngữ
mà người lập trình nắm chắc
Lắng nghe và ghi chép
Trang 7Input đặc trưng Trong quá trình thử
này nếu phát hiện ra sai sót thì phải
sửa lại chương trình Quá trình này
gọi là hiệu chỉnh
5 Viết tài liệu.
-Viết tài liệu mô tả thuật toán,
chương trình và hướng dẫn sử dụng
chương trình
nào cũng đảm bảo là hoàn toàn đúng đắn,
do đó phải thử chương trình bằng các bộ Input đặc trưng để phát hiện sai sót
-Sau khi chương trình
đã hoàn thiện công việc còn lại
Bước 5: Viết tài liệu.
-Viết tài liệu là viết gì?
-Trong 5 bước trên bước nào có thể bỏ qua? Vì sao?
Giải thích: Mình có
thể bỏ qua bước 2 khi mình đã có tư duy giải thuật tôt, mình đã nắm vững thuật toán để giải quyết bài toán rồi
Cũng có thể bỏ qua bước 5 khi chương trình được viết cho chính người lập trình
sử dụng
-Viết tài liệu mô tả thuật toán, chương trình và hướng dẫn
sử dụng chương trình
-Bước 2, vì bước 2 chỉ giúp người lập trình dễ dàng hơn
để viết chương trình
-Bước 5, vì bước này giúp cho người
sử dụng hiểu chương trình của người lập trình nên
ta có thể bỏ nếu chỉ viết cho người lập trình sử dụng thôi
V Củng cố và giao nhiệm vụ về nhà:
- Các bước để giải bài toán trên máy tính:
B1: Xác định bài toán
B2: lựa chọn và xây dựng thuật toán
B3: Viết chương trình
B4: Hiệu chỉnh
B5: Viết tài liệu
Trang 8- Bài tập: Trả lời các câu hỏi trong SGK (trang 51)