Kỹ năng - Hiểu và trình bày được thuật toán tìm giá trị lớn nhất của một dãy số nguyên theo 2 cách: liệt kê hoặc sơ đồ khối; nhận biết được các bài toán khác thuộc lớp các bài toán ví dụ[r]
Trang 1Ngày dạy : Lớp :
§4 BÀI TOÁN VÀ THUẬT TOÁN
(Tiết 2)
I MỤC TIÊU
1 Kiến thức
- Biết Input và Output của bài toán tìm giá trị lớn nhất của một dãy số nguyên; biết thuật toán của bài toán đó
2 Kỹ năng
- Hiểu và trình bày được thuật toán tìm giá trị lớn nhất của một dãy số nguyên theo
2 cách: liệt kê hoặc sơ đồ khối; nhận biết được các bài toán khác thuộc lớp các bài toán (ví dụ: tìm min,…)
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC
1 Chuẩn bị của giáo viên
- Đồ dùng: Giáo án, SGK, SGV, tài liệu tham khảo máy chiếu (nếu có)
- Phương pháp: Thuyết trình, vấn đáp
2 Chuẩn bị của học sinh
Đồ dùng học tập: SGK, vở ghi, bút,
III NỘI DUNG BÀI GIẢNG
1 Ổn định tổ chức lớp
- Ổn định lớp
- Chỉnh đốn trang phục
- Sĩ số: Vắng:
2 Kiểm tra bài cũ
Câu 1: Hãy phát biểu một bài toán và chỉ rõ Input và Output của bài toán?
Câu 2: Em hãy trình bày khái niệm thuật toán?
3 Đặt vấn đề
4 Nội dung bài mới
2 Khái niệm thuật toán
Ví dụ: Tìm giá trị lớn nhất của một dãy số nguyên
Yêu cầu học sinh xác định Input và Output của bài
toán
Hoạt động 1: Hướng dẫn học sinh tìm ý tưởng của bài
toán
Trò chơi: Tìm max:
Cho 5 tấm bìa a1, a2,a3,a4,a5 Trên mỗi tấm bìa có ghi
một số nguyên và được đặt úp sao cho người chơi
không biết trước giá trị ghi trên nó
- Input: Số nguyên dương
N và dãy N số nguyên a1, a2, .,
aN
- Output: Giá trị lớn nhất
Max của dãy số trên
Trang 2*) Quy tắc chơi: Tại mỗi thời điểm người chơi được lật
lần lượt từng tấm bìa để đọc giá trị; Và sử dụng một ô
nhớ Max luôn cập nhật giá trị lớn nhất của các tấm bìa
đã lật đến thời điểm trước khi lật tấm bìa tiếp theo Sao
cho khi lật hết các tấm bìa thì tìm ra được giá trị lớn
nhất ghi trong ô Max
- Em khởi tạo giá trị ban đầu max =?
- Tại sao không chọn giá trị khác mà lại chọn a1 để
khởi tạo cho max?
- Lần lượt với tấm bìa thứ i (i = 2->5), em làm gì?
- Thông qua các thao tác tìm max của trò chơi trên, em
cho biết ý tưởng bài toán “Tìm giá trị lớn nhất của một
dãy số nguyên”
- HS: lên bảng thực hiện trò chơi
Luật a1 = 17, ghi giá trị vào ô max (max= 17); lật a2= 11, so sánh với a1 thấy nhỏ hơn, lật tiếp a3=19, so sánh với max thấy lớn hơn, cập nhật giá trị đó cho max (max=19); tiếp tục lật a4=23, so sánh với max thấy lớn hơn, cập nhật giá trị đó cho max (max=23); lật tiếp a5=18, thấy nhỏ hơn max Kết thúc, ô nhớ max ghi giá trị lớn nhất là 23
Trả lời: giá trị lớn nhất là 23
- HS: max = a1;
- Nếu max là số khác a1 thì phải thêm 1 thao tác so sánh a1 với max; mặt khác, nếu giá trị ban đầu lớn hơn tất cả các ai -> nó không phải là giá trị lớn nhất cần tìm
- HS: So sánh giá trị trên bìa với giá trị của ô max, nếu lớn hơn -> thay vào max; nếu nhỏ hơn -> tiếp tục lật tấm bìa tiếp theo để
so sánh với max
- HS trả lời
*) Ý tưởng:
- Khởi tạo max = a1
- Với i từ 2 đến N, so sánh
ai với max: nếu ai>max
Trang 3thì max nhận giá trị mới
là ai (biến i để xét các số hạng sẽ so sánh với số ở max)
Hoạt động 2: Hướng dẫn tìm hiểu 1 số khái niệm sử
dụng trong diễn tả thuật toán
- Khái niệm biến
- Giới thiệu phép gán
VD: x < 3; y < 3+x;
? x< 2;
x< 5; thì biến x có giá trị là bao nhiêu?
A< 8;
B< A; thì A và B mang giá trị là bao nhiêu?
Qua khái niệm trên, nếu muốn biến max nhận giá trị
của a1 phải viết thế nào? Và biến i nhận giá trị khởi tạo
là 2?
- Sau mỗi thao tác muốn tăng i lên 1 đơn vị ta có thể sử
dụng lệnh gán i< i+1;
- Khái niệm biến: Là 1 đại lượng mà giá trị của nó có thể thay đổi khi thực hiện chương trình; biến là một vùng nhớ dùng để lưu trữ
dữ liệu, mỗi biến có 1 tên
- Phép gán: Dùng để gán (chuyển) giá trị của 1 biểu thức cho 1 biến, có dạng: biến biểu thức;
*) Đặc điểm của phép gán:
+) khi gán giá trị mới thì giá trị cũ bị xoá (luôn lưu trữ giá trị gán mới nhất) +) Nếu gán a< b thì giá trị của biến b ở vế phải không bị thay đổi (b cho a bản sao của b)
- HS trả lời
- HS trả lời
- HS: phải gán a1 cho biến max:
Max < a1; i< 2;
Hoạt động 3 : Hướng dẫn học sinh các cách biểu
diễn thuật toán và các tính chất của thuật toán.
Ta có thể mô tả thuật toán bằng 2 cách:
Cách 1 : Cách liệt kê
B1: Nhập N và dãy số a1, a2, , aN
Trang 4Cách 2: Sử dụng sơ đồ khối
- Với bài toán trên ta có thể biểu diễn dưới dạng sơ đồ
khối như sau:
* Tính chất của thuật toán:
- Đọc và trả lời câu hỏi 2 ( SGK – 44)
B2: max < a1; i< 2;
B3: Nếu i > N thì đưa ra max rồi kết thúc B4: Nếu ai > max thì max
< ai;
B5: i < i +1; rồi quay lại
B3
* Quy định:
+ Hình ellip : Các thao tác nhập, xuất dữ liệu
+ Hình thoi :
Thao tác so sánh
+ Hình chữ nhật : Các phép toán
+ Mũi tên Quy định trình tự thực hiện các thao tác
- HS theo dõi trên bảng
phụ
* Tính chất của thuật toán:
- Tính dừng: Thuật toán phải kết thúc sau một dãy hữu hạn lần thực hiện các thao tác
- Tính xác định: Sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng 1 thao tác xác định để thực hiện tiếp theo
- Tính đúng đắn: Sau khi thuật toán kết thúc, ta phải nhận được Output cần
Trang 5tìm
Hoạt động 4: Mô phỏng việc thực hiện thuật toán với
dãy số có N= 10 phần tử
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
ds 17 11 19 23 18 47 32 54 45 16 54
M
A
x
17 17 19 23 23 47 47 54 54 54
- Cho thêm bài tập để HS tự mô phỏng:
Nhóm 1, 2: Cho N = 7
Nhóm 3, 4: N = 6
- HS làm theo nhóm và
lên trình bày
5 Củng cố
- Các cách biểu diễn thuât toán
- Các tính chất của thuật toán
6 Bài tập về nhà
- Làm bài tập trong SBT
- Đọc sách trước bài sau: Bài toán và thuật toán: ví dụ - Kiểm tra tính nguyên tố của 1 số nguyên dương