VD: Bài toán “Tìm giá trị lớn nhất của dãy số nguyên” ở trên được mô tả bằng +GV: Hướng dẫn HS chuyển từng bước sơ đồ khối như sau: NhËp N vµ d·y a ,..., a trong mô tả thuật toán theo cá[r]
Trang 1Ngày soạn: 28/09/2006; ngày giảng: 02/10/2006; Lớp: 10
Tiết PPCT: 10, 11, 112,13, 14
I MỤC TIÊU BÀI HỌC:
1 Kiến thức :
-Hiểu khái niệm “bài toán” trong Tin học và biết 2 thành phần cơ bản của một bài toán (Input, Output)
-Hiểu khái niệm “thuật toán” và 2 cách mô tả các thao tác trong thuật toán (liệt kê, sơ đồ khối) Nắm chắc các biểu tượng thể hiện các thao tác trong sơ đồ khối
-Hiểu được khái niệm sơ lược ban đầu về “ngôn ngữ lập trình”
-Nắm được các thuật ngữ chính trong bài
-Qua bài học, HS hình dung rõ hơn một bước nữa về cách thức hoạt động của máy tính
2 Kỹ năng :
-Biết cho ví dụ một số bài toán trong Tin học
-Xác định được Input và Output của các bài toán
-Mô tả được các thao tác trong thuật toán của một số bài toán cụ thể bằng 2 cách: liệt kê và dùng sơ đồ khối
3 Thái độ :
Nghiêm túc, cẩn thận, đoàn kết, có tinh thần giúp đỡ nhau trong xây dựng bài học
II CHUẨN BỊ:
1 Tài liệu, bài tập:
2 Dụng cụ, thiết bị:
III TIẾN TRÌNH LÊN LỚP:
1 Ổn định, tổ chức lớp:
2 Kiểm tra bài cũ:
1/ -Khái niệm hệ thống tin học?
-Các thành phần của một hệ
thống tin học?
2/ -CPU là gì?
-Kể tên một số thiết bị vào?
1/ (SGK)
2/ (SGK)
Trang 23 Bài giảng:
GV: (ĐVĐ) Để viết được chương trình
cho máy tính thực hiện ta cần biết thế nào
là bài toán và thuật toán Hôm nay ta
sang bài 4
Hoạt động 1:
-Nội dung: Khái niệm bài toán.
-Mục tiêu: HS nắm được khái niệm bài
toán
-Cách tiến hành:
+GV: Trong Toán học ta nhắc nhiều đến
khái niệm “bài toán” và ta hiểu đó là
những việc mà con người cần phải thực
hiện sao cho từ những dữ kiện đã có phải
tìm ra hay chứng minh một kết quả nào
đó
Vậy khái niệm “bài toán” trong Tin
học có gì khác không? Để khẳng định cho
vấn đề này, chúng ta xét các yêu cầu sau
+HS: Thảo luận các yêu cầu trên bảng
+GV: Trong các yêu cầu trên, yêu cầu
nào được xem như là một bài toán?
*Trong phạm vi Toán học?
*Trong phạm vi Tin học?
+HS: Đưa ra kềt quả
+GV: Nhận xét kết quả
§4 BÀI TOÁN VÀ THUẬT TOÁN
I/ BÀI TOÁN:
1/ Khái niệm bài toán:
*Xét các yêu cầu sau:
1)Giải phương trình bậc hai
ax2 + bx + c = 0;
2)Viết 1 dòng chữ ra màn hình máy tính; 3)Tìm giá trị nhỏ nhất của các số trong một dãy số
4)Tìm ƯCLN của 2 số nguyên dương a và b;
5)Xếp loại học tập các HS trong lớp 6)Quản lý các cán bộ trong 1 cơ quan;
→Yêu cầu nào được xem như là một bài toán?
*Kết quả:
-Trong phạm vi Toán học:
Yêu cầu 1) và 4) được xem là bài toán
-Trong phạm vi Tin học:
Tất cả các yêu cầu trên được xem là bài toán
Trang 3+GV: Từ kết quả trên, em nào có thể
đưa ra khái niệm “bài toán” trong Tin
học
+HS: nêu khái niệm bài toán
Hoạt động 2 :
-Nội dung: Tìm hiểu các yếu tố cơ bản
của một bài toán.
-Mục tiêu: Giúp HS nắm được 2 yếu tố
cơ bản (Input, Output) của một bài toán
-Cách tiến hành:
+GV: Ghi vấn đề lên bảng
+HS thảo luận vấn đề trên bảng
+GV: Để giải 1 bài toán công việc đầu
tiên chúng ta phải làm gì?
+HS: Trà lời (xác định đâu là dữ kiện
đã cho và đâu là cái cần tìm)
+GV: Nhận xét câu trả lời của HS, đưa
ra kết luận và giới thiệu 2 thành phần
tuơng ứng của một bài toán trong Tin
học
*Kết luận:
2 Các thành phần cơ bản của một bài toán :
* Vấn đề thảo luận:
Các yếu tố cần quan tâm khi giải một bài toán trong Toán học?
-Giả thiết (cái đã biết) -Kết luận (cái cần tìm) Trong Tin học :
-Giả thiết Input (Các thông tin đã có)
(Đầu vào: Các T.tin đưa vào máy)
-Kết luận Output (Các t tin cần tìm)
(Đầu ra: Các t.tin cần lấy ra từ máy)
*Kết luận :
Các bài toán được cấu tạo bởi hai yếu tố cơ bản :
-Input : Các thông tin đã có
(Các giả thiết)
-Output : Các thông tin cần tìm
(Kết luận)
Trong phạm vi Tin học, bài toán là một việc nào đó ta muốn máy tính thực hiện.
Trang 4+GV: Hướng dẫn học sinh tìm Input và
Ouput của một số bài toán thông qua các
ví dụ
+HS: Theo dõi sự hướng dẫn của GV
và áp dụng giải quyết các bài toán còn
lại
+GV: Qua các VD trên ta thấy bài toán
được cấu tạo bởi hai yếu tố cơ bản, đó là:
*input: Các thông tin đã có.
* Output : Các thông tin cần tìm.
3 Các ví dụ : Tìm input và output của bài toán
VD1: Giải phương trình bậc hai
ax2+bx+c =0 (a ≠ 0)
-Input : Các số thực a,b,c (a ≠ 0)
VD2: Tìm giá trị nhỏ nhất của các số
trong một dãy số
-Input : Các số trong dãy số.
-Output : Giá trị lớn nhất trong dãy số.
VD3: Tìm ước chung lớn nhất của hai số
VD4: Xếp loại học tập các học sinh trong
lớp
-Output :Bảng xếp loại học tập của học sinh
VD5: Viết 1 dòng chữ ra màn hình máy
tính
-Input: Các kí tự.
-Output: Một dòng chữ
Trang 5Hoạt động 3 :
-Nội dung: Khái niệm thuật toán.
-Mục tiêu: Giúp HS hiểu và nắm được
khái niệm thuật toán
-Cách tiến hành:
+GV: (ĐVĐ) Chúng ta đã biết khái
niện về “bài toán” và các yếu tố cơ bản
của một bài toán đó là: input, output Để
tìm được output từ input của bài toán, ta
làm bằng cách nào? Hôm nay chúng ta
sang phần tiếp theo (II Thuật toán)
+GV: Trình bày khái niệm thuật toán
thông qua sơ đồ
+HS: Lắng nghe và quan sát sơ đồ
trên bảng
+GV: Muốn tìm ra kết luận từ giả
thiết của bài toán, thì chúng ta phải làm
gì?
+HS: Đứng tại chỗ trả (Giải bài
toán)
+GV: Yêu cầu HS dựa vào sơ đồ đó
phác thảo khái niệm “thuật toán”
+HS: Trình bày theo cách hiểu của
bản thân
+GV: Nhận xét và đưa ra kết luận
II THUẬT TOÁN
1 Khái niệm thuật toán:
*Sơ đồ:
Bài tốn
Giải bài tốn
Hướng dẫn các thao tác cho
máy thực hiện để tìm ra lời giải
Thuật tốn
Nói cách khác :
(Thao tác 1Thao tác 2 Thao tác n)
*Kết luận:
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ác thao tác này đượ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 đó, từ Input của bài toán ta nhận được Output cần tìm.
BÀI TỐN
Trang 6Hoạt động 4 :
-Nội dung: Mô tả các thao tác trong
thuật toán.
-Mục tiêu : Giúp HS biết được 2 cách mô
tả thuật toán: liệt kê và dùng sơ đồ khối.
-Cách tiến hành:
+ GV: Đưa ra bài toán giải “Tìm giá trị
lớn nhất của dãy số nguyên” và yêu cầu
HS xác định các yếu tố cơ bản của bài
toán: Input và Output
+GV: Trong Toán học sau bước xác
định yêu cầu bài toán, bước kế tiếp
chúng ta phải làm công việc gì?
+HS: Trả lời (xác định hướng hay
phương pháp giải)
+GV: Đó là ý tưởng của bài toán
+GV: sau bước xác định yêu cầu bài
toán và phương pháp giải, công việc còn
lại chúng ta phải làm gì để tìm ra kết
luận từ giả thiết của bài toán?
+HS: Trả lời (Giải bài toán)
+GV: Nhận xét và giải thích: “Giải bài
toán”là trong Toán học, còn trong Tin
học gọi là “Thuật toán”.
Từ đó, GV hướng dẫn HS cách
chuyển từ ý tưởng của bài toán này sang
mô tả thuật toán bằng cách liệt kê
+ HS: Lắng nghe và hiểu được các bước
mô tả thuật toán
2 Mô tả các thao tác trong thuật toán:
Có 2 cách : Liệt kê và dùng sơ đồ khối
Bài toán : “Tìm giá trị lớn nhất của dãy
số nguyên”
*Xác định bài toán:
-Input: Số nguyên dương N và dãy N
số nguyên dương a1, a2, , aN
-Output: Giá trị lớn nhất Max của dãy
số
*Ý tưởng:
-Khởi tạo giá trị Max = a1; -Lần lượt với i từ 2 đến N, so sánh số hạng ai với giá trị Max, nếu ai > Max thì Max nhận giá trị mới là ai
*Thuật toán:
a Mô tả theo cách liệt kê:
(Nêu ra tuần tự các thao tác cần tiến
hành).
Bước 1: Nhập N và dãy a1, a2, , aN;
Bước 2: Max a1 ; i 2;
Bước 3: Nếu i > N thì đưa ra kết quả và
kết thúc; ngược lại thì sang Bước 4;
Bước 4:
4.1: Nếu ai > Max thì Max ai ;
Trang 74.2: i i + 1 rồi quay lại Bước 3.
+GV: Ngoài cách liệt kê các thao tác
như trên, ta có thể dùng sơ đồ khối để mô
tả thuật toán
+GV: Ghi các qui ước trong sơ đồ lên
bảng
b Biểu diễn bằng sơ đồ khối:
Trong sơ đồ khối ta qui ước:
-Hình ô van : thể hiện thao tác nhập, xuất dữ liệu;
Trang 8(Đặc biệt yêu cầu HS học thuộc tại lớp
các biểu tượng thể hiện các thao tác trong
sơ đồ khối)
+GV: Lấy lại VD: Bài toán “Tìm giá trị
lớn nhất của dãy số nguyên”
+GV: Hướng dẫn HS chuyển từng bước
trong mô tả thuật toán theo cách liệt kê
sang cách mô tả thuật toán bằng sơ đồ
khối tương ứng
+HS: Phân biệt được điểm giống và
khác nhau giữa 2 cách mô tả này Thuộc
lòng tại lớp ý nghĩa các biểu tượng trong
sơ đồ khối
-Hình thoi : thể hiện thao tác so sánh;
-Hình chữ nhật : thể hiện phép tính toán;
-Các mũi tên : qui định trình tự thực hiện các thao tác
VD: Bài toán “Tìm giá trị lớn nhất của dãy số nguyên” ở trên được mô tả bằng
sơ đồ khối như sau:
*Ghi chú:
-Mũi tên hiểu là gán giá trị của biểu thức bên phải mũi tên cho biến ở bên trái mũi tên;
-VD: i i + 1: Đặt cho biến I giá trị mới bằng giá trị trước đó tăng thêm 1 đơn vị.
3 Tính chất của thuật toán:
§ĩng
§ĩng
Sai
Sai NhËp N vµ d·y a 1 , , a N
Max a i
a ii > Max
i > N
Max a 1 , i 2
§a ra Max råi kÕt thĩc
i i + 1
Trang 9+GV: Thoõng qua Khaựi nieọm thuaọt toaựn
vaứ VD treõn, neõu tớnh chaỏt cuỷa thuaọt toaựn
vaứ giaỷi thớch vaứ ủửa ra VD tửứng tớnh chaỏt
+HS: Chuự yự theo doừi vaứ ghi cheựp
-Tớnh dửứng:
Thuaọt toaựn phaỷi keỏt thuực sau 1 soỏ hửừu
haùn laàn thửùc hieọn thao taực.
-Tớnh xaực ủũnh:
Sau khi thửùc hieọn 1 thao taực thỡ hoaởc
laự thuaọt toaựn keỏt thuực hoaởc laứ coự ủuựng 1 thao taực xaực ủũnh ủeồ ủửụùc thửùc hieọn tieỏp theo.
-Tớnh ủuựng ủaộn:
Sau khi thuaọt toaựn keỏt thuực, ta nhaọn
ủửụù Output caàn tỡm.
VD: Với thuật toán tìm Max đã xét:
-Tính dừng:
Vì giá trị của i mỗi lần tăng lên 1 nên sau N lần thì i > N, khi đó kết quả phép so
Max rồi kết thúc
-Tính xác định:
Thứ tự thực hiện các b,ớc của thuật toán đ,ợc mặc định là tuần tự nên sau b,ớc 1 là b,ớc 2, sau b,ớc 2 là b,ớc 3 Kết quả các phép so sánh trong b,ớc 3 và b,ớc 4 đều xác định duy nhất b,ớc tiếp theo cần thực hiện
-Tính đúng đắn:
Vì thuật toán so sánh Max với từng số hạng của dãy số và thực hiện Max ai
nếu ai > Max nên sau khi so sánh hết N số
hạng của dãy thì Max là giá trị lớn nhất
+ GV: ẹửa ra baứi toaựn giaỷi phửụng
Trang 10trình bậc nhất và yêu cầu HS trình bày
lời giải theo cách thông thường
+Từ đó, GV hướng dẫn HS cách
chuyển từ lời giải thông thường này
sang 2 cách liệt kê và dùng sơ đồ khối
(Đặc biệt yêu cầu HS học thuộc tại lớp
các biểu tượng thể hiện các thao tác
trong sơ đồ khối)
+ HS: Lắng nghe và hiểu được 2 cách
mô tả thuật toán Phân biệt được điểm
giống và khác nhau giữa 2 cách mô tả
này Thuộc lòng tại lớp ý nghĩa các biểu
tượng trong sơ đồ khối
+GV: Giải thích để học sinh có được
cảm nhận ban đầu về chương trình và
ngôn ngữ lập trình.
+HS: Có được khái niệm ban đầu về
ngôn ngữ lập trình và chương trình
VD : Tìm nghiệm phương trình bậc nhất
tổng quát : ax + b = 0
a Bằng cách liệt kê:
-Bước 3 : Gán cho x giá trị -b/a
-Bước 4 : Đưa ra kết quả x và kết thúc
b.Bằng sơ đồ khối:
a <> 0
Nhập a, b
Sai
Đúng
x -b/a
Đưa ra x rồi kết thúc
* Lưu ý:
Ta cần diễn tả thuật toán bằng một ngôn ngữ sao cho máy tính có thể hiểu và thực hiện được, ngôn ngữ đó gọi là
ngôn ngữ lập trình Kết quả diễn tả
thuật toán như vậy gọi là một chương
trình.
Trang 11Hoaùt ủoọng 5 :
-Noọi dung: Xeựt caực vớ duù veà thuaọt toaựn
-Muùc tieõu : Giuựp HS vaọn duùng nhửừng
kieỏn thửực coự ủửụùc trong hoaùt ủoọng 4 vaứo
moọt soỏ baứi toaựn cuù theồ
-Caựch tieỏn haứnh :
+GV: Hửụựng daón caực bửụực thửùc hieọn
baứi toaựn trong VD
+HS: Theo doừi sửù hửụựng daón cuỷa giaựo
vieõn
Ghi chú:
-Biến i nhận giá trị nguyên thay đổi
để kiểm tra N có chia hết cho i hay
không
-[x] kí hiệu phần nguyên của x, là số
nguyên không lớn hơn x và gần x nhất
III CAÙC VÍ DUẽ VEÀ THUAÄT TOAÙN:
nguyên dương
*Xác định bài toán
- Input: N là một số nguyên =,OR -Output: "N là số nguyên tố" hoặc "N
không là số nguyên tố"
*ý tưởng: Ta nhớ lại định nghĩa: Một số
Từ định nghĩa đó, ta suy ra:
-Nếu N = 1 thì N không là số nguyên tố; -Nếu 1 < N < 4 thì N là số nguyên tố;
từ 2 đến phần nguyên căn bậc hai của N thì
N là số nguyên tố
Từ đó ta có thuật toán , sau:
*Thuật toán
a) Thuật toán diễn tả bằng cách liệt kê
Bửụực1: Nhập số nguyên =,O N;
Bửụực2: Nếu N = 1 thì thông báo N không
nguyên tố rồi kết thúc;
Bửụực3: Nếu N < 4 thì thông báo N là
nguyên tố rồi kết thúc;
Bửụực4: i ← 2;
Bửụực5: Nếu i > [ N]* thì thông báo N là
nguyên tố rồi kết thúc;
Bửụực6: Nếu N chia hết cho i thì thông báo N
không nguyên tố rồi kết thúc;
Bửụực7: i ← i + 1 rồi quay lại +, 5.
Trang 12b) Sơ đồ khối: Kiểm tra tính nguyên tố
Đúng
Nhập N
N = 1
Thông báo N là
số nguyên tố rồi kết thúc
i 2
i> N
i i + 1 N chia hết cho i
N < 4
Thông báo N không
là số nguyên tố rồi kết thúc
Đúng Sai
Sai
Đúng
Sai
Đúng Sai
Y, đây là ví dụ mô phỏng các +, thực
Kiểm tra tính nguyên tố.
Với N = 29 ( 29 5 ) Với N = 45 ( 45 6)
Chia hết
không? Không Không Không Không
Chia hết không?
Không Chia hết a) 29 là số nguyên tố b) 45 không là số nguyên tố
Trang 13+GV: Trong cuộc sống, ta ,c gặp những
việc liên quan đến sắp xếp chaỳng haùn nhử:
Danh saựch học sinh cuỷa lụựp 10C ủửụùc xeỏp theo
thửự tửù tửứ A ủeỏn Z (thửự tửù ABC); Xếp loại học
lực học sinh trong lớp;
Nói một cách tổng quát, cho một dãy
đối ,6# cần sắp xếp lại vị trí các đối ,6
theo một tiêu chí nào đó.
VD: Cho 10 chiếc cọc có chiều cao khác
nhau (hỡnh a), cần xếp lại sao cho cọc thấp ở
,# cọc cao ở sau (hỡnh b).
a) Dữ liệu gốc b) Sau khi sắp xếp
VD: Với A là dãy gồm N số nguyên ( N = 10):
6, 1, 5, 3, 7, 8, 10, 7, 12, 4,
Sau khi sắp xếp ta có dãy:
1, 3, 4, 5, 6, 7, 7, 8, 10, 12.
+GV Giụựi thieọu sụ qua PP Saộp xeỏp: Saộp xeỏp
ủửụùc chia laứm 2 loaùi ủoự laứ: SX trong vaứ SX
ngoaứi.
*Saộp xeỏp TRONG:
→ +Phửụng phaựp Choùn (Selection Sort);
+ PP ẹoồi choó (Exchange Sort);
+ PP Cheứn (Insertion Sort ).
*Saộp xeỏp NGOAỉI:
→ PP Troọn tửù nhieõn (Natural Merge
Sort).
Trong phaùm vi SGK chuựng ta chổ hoùc thuaọt
toaựn saộp xeỏp baống PP ẹoồi choó hay coứn goùi laứ
traựo ủoồi (Exchange Sort).
+GV: Hửụựng daón caực bửụực thửùc hieọn baứi
toaựn trong VD.
+HS: Theo doừi sửù hửụựng daón cuỷa giaựo
vieõn.
Ví dụ 2 Bài toán sắp xếp
Cho dãy A gồm N số nguyên a1 , a 2 , , a N Cần sắp xếp các số hạng để dãy A trở thành dãy không
giảm (tức là số hạng trước không lớn hơn số hạng sau).
Thuật toán Sắp xếp bằng tráo đổi (Exchange Sort)
*Xác định bài toán
- Input: Dãy A gồm N số nguyên a1 , a 2 , , a N
- Output: Dãy A ,6 sắp xếp lại thành dãy
không giảm.
*YÙ tưởng:
Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số tr,ớc lớn hơn số sau ta đổi chỗ chúng cho nhau Việc đó đ,ợc lặp lại, cho đến khi không có
sự đổi chỗ nào xảy ra nữa.
*Thuật toán
a) Cách liệt kê:
Bước 1 Nhập N, các số hạng a 1 , a 2 , , a N;
Bước 2 M ← N;
Bước 3 Nếu M < 2 thì , ra dãy A đã
,6 sắp xếp rồi kết thúc;
Bước 4 M ← M - 1, i ← 0;
Bước 5 i ← i + 1;
Bước 6 Nếu i > M thì quay lại +, 3;
Bước 7 Nếu a i > a i+1 thì tráo đổi a i và a i+1
cho nhau;
Bước 8. Quay lại +, 5.
... tố; -Nếu < N < N số nguyên tố;từ đến phần nguyên bậc hai N
N số ngun tố
Từ ta có thuật tốn , sau:
*Thuật toán< /b>
a) Thuật. ..
Thuật toán Sắp xếp tráo đổi (Exchange Sort)
*Xác định toán< /small>
- Input: Dãy A gồm N... số nguyên ( N = 10) :
6, 1, 5, 3, 7, 8, 10, 7, 12, 4,
Sau xếp ta có dãy:
1, 3, 4, 5, 6, 7, 7, 8, 10, 12.