SKKN Nâng cao kỹ năng viết thuật toán cho học sinh thông qua một số bài tập cơ bản

SKKN Nâng cao kỹ năng viết thuật toán cho học sinh thông qua một số bài tập cơ bản

Năm học 2016 -2017 là năm tôi được tổ chuyên môn phân công dạy Tin học 10. Đứng trước nhiệm vụ của năm học này, tôi đã lên kế hoạch và mục tiêu dạy học cho mình nhằm đạt hiệu quả dạy học được tốt nhất cũng như sẽ đạt được chỉ tiêu đăng kí. Trong quá trình giảng dạy môn Tin học 10, khi dạy Bài 4 “BÀI TOÁN VÀ THUẬT TOÁN ” tôi nhận thấy đây là nội dung khó và mới đối với các em nhưng khi các em hiểu được thì vô cùng lý thú. Với các ví dụ được trình bày trong kinh nghiệm của mình sẽ giúp cho học sinh nắm bắt tốt hơn về cách viết thuật toán của một bài toán.

• Khảo sát tình trạng:

Giáo viên đưa ra đề kiểm tra 1 tiết đối với lớp 10A2 (40 học sinh) như sau:

Bài 1: Xác định Input và Output của bài toán sau:

 “Tính tổng các bình phương các chữ số của 1 số tự nhiên bất kỳ có 4 chữ số ”

Bài 2: Liệt kê các bước của thuật toán để giải bài toán sau :

 “Rút gọn phân số với a, b bất kỳ, b ”

 

doc 17 trang thuychi01 9000
Bạn đang xem tài liệu "SKKN Nâng cao kỹ năng viết thuật toán cho học sinh thông qua một số bài tập cơ bản", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA
TRƯỜNG THPT HOẰNG HÓA II
SÁNG KIẾN KINH NGHIỆM
ĐỀ TÀI: 
NÂNG CAO KỸ NĂNG VIẾT THUẬT TOÁN 
CHO HỌC SINH THÔNG QUA MỘT SỐ BÀI TẬP CƠ BẢN
Người thực hiện : LÊ THI HOÀI THU
Chức vụ	: Giáo viên
Đơn vị công tác : THPT HOẰNG HÓA 2
	SKKN thuộc lĩnh vực môn: TIN HỌC
THANH HÓA NĂM 2017 
PHẦN I. MỞ ĐẦU
LÝ DO 
Năm học 2016 -2017 là năm tôi được tổ chuyên môn phân công dạy Tin học 10. Đứng trước nhiệm vụ của năm học này, tôi đã lên kế hoạch và mục tiêu dạy học cho mình nhằm đạt hiệu quả dạy học được tốt nhất cũng như sẽ đạt được chỉ tiêu đăng kí. Trong quá trình giảng dạy môn Tin học 10, khi dạy Bài 4 “BÀI TOÁN VÀ THUẬT TOÁN ” tôi nhận thấy đây là nội dung khó và mới đối với các em nhưng khi các em hiểu được thì vô cùng lý thú. Với các ví dụ được trình bày trong kinh nghiệm của mình sẽ giúp cho học sinh nắm bắt tốt hơn về cách viết thuật toán của một bài toán.
Khảo sát tình trạng: 
Giáo viên đưa ra đề kiểm tra 1 tiết đối với lớp 10A2 (40 học sinh) như sau: 
Bài 1: Xác định Input và Output của bài toán sau: 
 “Tính tổng các bình phương các chữ số của 1 số tự nhiên bất kỳ có 4 chữ số ”
Bài 2: Liệt kê các bước của thuật toán để giải bài toán sau :
 “Rút gọn phân số với a, b bất kỳ, b”
Bài 3: Viết thuật toán để sắp xếp 1 dãy số nguyên bất kỳ nhập từ bàn phím theo thứ tự giảm dần.	 
 Kết quả kiểm tra khi không áp dụng kinh nghiệm như sau: 
Lớp 10A2 có 40 học sinh: 
Điểm
Số học sinh
Tỉ lệ
3
9
23 %
4
10
25 %
5
11
28 %
6
5
13 %
7
5
13 %
Đối với Bài 1, hầu như học sinh chỉ tìm được Input và Output của bài toán mà chưa viết được đầy đủ thuật toán để giải nó.
Đối với Bài 2, Bài 3 học sinh chưa mô phỏng được thuật toán bằng sơ đồ khối 
MỤC TIÊU NGHIÊN CỨU
Trong dự thảo báo cáo chính trị về phát triển văn hoá – giáo dục – đào tạo của báo Nhân dân ra ngày 3.2.2001 có đề cập: “Đổi mới căn bản và toàn diện nội dung, phương pháp dạy và học, hệ thống trường lớp và hệ thống quản lí giáo dục theo hướng chuẩn hoá, hiện đại hoá, xã hội hoá và dân chủ hoá”. Trên cơ sở đó, mục tiêu của đề tài nhằm: 
Giúp học sinh hiểu rõ khái niệm Thuật toán
Giúp học sinh viết thuật toán dễ dàng, khắc phục tình trạng cảm thấy mơ hồ khi học về thuật toán.
Khuyến khích học sinh biểu diễn thuật toán bằng sơ đồ khối.
Là cơ sở để phát hiện và bồi dưỡng học sinh giỏi tin học và để học tiếp kiến thức viết chương trình trong năm sau của học sinh.
ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU
Nội dung bài 4 Bài toán và thuật toán nằm trong chương trình Tin học 10, gồm 6 tiết (5 tiết lý thuyết và 1 tiết bài tập) , tôi đã áp dụng đề tài lồng ghép trong cả giờ lý thuyết và giờ bài tập.
Đối tượng là học sinh các lớp 10 mà tôi đã dạy.
PHƯƠNG PHÁP NGHIÊN CỨU CHUNG
Đứng trước một vấn đề còn mới và trừu tượng đối với học sinh, việc xây dựng các bài tập ví dụ là hết sức quan trọng. Học sinh học thông qua ví dụ sẽ hiểu rõ và cụ thể hơn về thuật toán.
Vì vậy, trước hết, tôi phải giúp học sinh giải quyết các bài tập trong sách giáo khoa và sách bài tập, sau đó, tôi có thể đưa ra một số ví dụ khác ngoài sách giáo khoa nhưng gần gũi với các em.
CẤU TRÚC ĐỀ TÀI
Phần I. Mở đầu
Lí do 
Mục tiêu nghiên cứu
Đối tượng phạm vi nghiên cứu
Phương pháp nghiên cứu chung
Cấu trúc đề tài
Phần II. Nội dung
Giúp học sinh hiểu rõ khái niệm “Bài toán” trong tin học
Giúp học sinh hiểu rõ khái niệm “Thuật toán” trong tin học
Một số bài tập 
Đánh giá
Phần III. Kết luận
PHẦN II. NỘI DUNG
 Giúp học sinh hiểu rõ khái niệm "Bài toán" trong Tin học:
Giáo viên đặt vấn đề bằng cách đưa ra các ví dụ để học sinh quan sát:
Ví dụ 1: Giải phương trình bậc 2 tổng quát: ax2+ bx+ c= 0 (a 0).
Ví dụ 2: Bài toán kiểm tra tính nguyên tố của một số nguyên dương N
	Phát vấn học sinh: Em hãy xác định INPUT(thông tin ban đầu) và Output(kết quả) của mỗi bài toán sẽ có dạng gì ? (Dạng số, hình ảnh, hay văn bản ?)
	Học sinh trả lời: 
Dữ kiện
Kết quả
ở ví dụ 1
Các hệ số a, b, c bất kỳ
Nghiệm của phương trình (nếu có) có dạng số nguyên hoặc số thực.
ở ví dụ 2
Số nguyên dương N
N là số nguyên tố hoặc N không phải là số nguyên tố
	 Lâu nay, học sinh mới chỉ tiếp xúc và quen với khái niệm bài toán trong Toán học. Vì vậy, giáo viên nên đưa ra câu hỏi so sánh sự giống và khác nhau giữa bài toán trong Tin học và bài toán trong Toán học?
	Giáo viên giải thích: Bài toán trong Toán học yêu cầu chúng ta giải cụ thể để tìm ra kết quả, còn bài toán trong Tin học yêu cầu máy tính giải và đưa ra kết quả cho chúng ta. 
	Từ đây giáo viên trình chiếu khái niệm Bài toán trong Tin học : Là một việc nào đó mà ta muốn máy tính thực hiện để từ thông tin đưa vào máy tính cho ta kết quả mong muốn. 
	- Những dữ kiện của bài toán được gọi là Input.
	- Kết quả máy tính trả ra được gọi là Output của bài toán.
Sau đó giáo viên yêu cầu học sinh tìm lại Input và Output của 2 ví dụ trên. 
F Như vậy, khái niệm bài toán không chỉ bó hẹp trong phạm vi môn toán, mà phải được hiểu như là một vấn đề cần giải quyết trong thực tế, để từ những thông tin đã cho máy tính tìm ra kết quả cho chúng ta.
 Giúp học sinh hiểu rõ khái niệm "Thuật toán" trong Tin học:
Bước 1: Giáo viên nêu tình huống để giúp học sinh t́ìm Input và Output 
Làm thế nào để từ Input của bài toán, máy tính tìm cho ta Output ?
Ta cần tìm cách giải bài toán và làm cho máy tính hiểu được cách giải đó.
Giáo viên giải thích: Nếu như trong Toán học chúng ta phải giải trực tiếp từng bài để lấy kết quả, thì ở đây, chúng ta chỉ cần tìm cách giải bài toán tổng quát và máy tính sẽ giải cho ta một lớp các bài toán đồng dạng. 
Ví dụ: Bài toán giải phương trình bậc 2 với 3 hệ số a,b,c bất kỳ, bài toán tìm diện tích tam giác với độ dài 3 cạnh được nhập bất kỳ, bài toán tìm UCLN của 2 số nguyên bất kỳ, bài toán quản lý học sinh 
Bước 2: Giáo viên đưa ra khái niệm thuật toán và phân tích, nhấn mạnh các tính chất của một thuật toán:
Ø Khái niệm: “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 các thao tác ấy, từ thông tin đầu vào (Input) của bài toán ta nhận được kết quả (Output) cần tìm”.
Ø Các tính chất của một thuật toán:
- Tính dừng: thuật toán phải kết thúc sau một số hữu hạ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 một thao tác xác định để thực hiện bước tiếp theo.
- Tính đúng đắn: Sau khi thuật toán kết thúc, ta nhận được kết quả cần tìm.
Các bước tiến hành khi viết thuật toán của một bài toán :
Xác định bài toán: Là đi tìm Input và Output của bài toán .
Tìm ý tưởng để giải bài toán 
Viết thuật toán bằng phương pháp liệt kê hay sơ đồ khối
Bước 3: Giới thiệu cho học sinh 2 cách biểu diễn một thuật toán
- Cách l: Liệt kê các bước: Chính là dùng ngôn ngữ tự nhiên để diễn tả các bước cần làm khi giải một bài toán bằng máy tính.
- Cách 2: Dùng sơ đồ khối.
Quy ước :
Hình thoi thể hiện thao tác so sánh 
Hình chữ nhật thể hiện các phép tính toán 
Hình ô van thể hiện thao tác nhập, xuất dữ liệu
Các mũi tên trình tự thực hiện các thao tác. 
 Giáo viên lưu ý học sinh phải nhớ các quy ước trên để biểu diễn thuật toán được chính xác. Các quy ước trên có thể hiểu như là ngôn ngữ của thuật toán, Vì vậy, giáo viên khuyến khích học sinh biểu diễn thuật toán bằng sơ đồ khối. Ưu điểm của sơ đồ khối là tránh được việc mô tả thừa câu chữ như cách biểu diễn liệt kê, người đọc thấy trực quan hơn trong từng bước của thuật toán.
Một số bài tập
Bài tập 1 .Viết thuật toán cho bài toán tìm nghiệm phương trình bậc 2 ax2+bx+c=0 (SGK Tin học 10, trang 44)
Lời giải :
Xác định bài toán :
 +Input : Cho ba số thực a, b, c
 + Output : Nghiệm của phương trình ax2+bx+c=0
Ý tưởng của bài toán: Để tìm nghiệm phương trình bậc 2 ta cần tính r và dựa vào kết quả của r mà suy ra nghiệm của phương trình.
Thuật toán của bài toán:
Cách 1: Liệt kê từng bước 
Bước 1: Bắt đầu
Bước 2: Nhập 3 hệ số a,b,c.
Bước 3: Tính biệt số = b2- 4ac
Bước 4: Nếu < 0 thông báo phương trình vô nghiệm rồi kết thúc.
Bước 5: Nếu = 0 thông báo phương trình có nghiệm kép rồi kết thúc.
Bước 6: Nếu > 0 thông báo phương trình có 2 nghiệm x1,x2=, rồi kết thúc.
Bước 7: Kết thúc.
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối 
 = 0
Đúng
Sai
Đúng
Phương trình vô nghiệm
Phương trình có nghiệm kép
 x= -b/2a
Phương trình có 2 nghiệm
x1,x2=(-b)/2a
Bắt đầu
Nhập a,b,c
Tính = b2- 4ac
< 0
Kết thúc
Sai
Bài tập 2 .Viết thuật toán cho bài toán tìm nghiệm phương trình bậc nhất ax +b =0
Lời giải :
Xác định bài toán :
 +Input : Cho hai số thực a, b
 + Output : Nghiệm của phương trình ax+ b=0
Ý tưởng của bài toán: Để tìm nghiệm phương trình bậc nhất ta giải và biện luận phương trình dựa vào hệ số a, b và suy ra nghiệm của phương trình 
Thuật toán của bài toán:
Cách 1: Liệt kê từng bước 
B1: Nhập a, b
B2 : Nếu a 0 thì phương trình có nghiệm x=-b/2a =>B4
B3 : Nếu a=0 
B3.1 Nếu b=0 thì kết luận phương trình cú vô số nghiệm => B4
B3.2 Nếu b 0 thì kết luận phương trình Vô nghiệm => B4
B4: Kết thúc 
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối 
Phương trình
vô nghiệm
Nhp a,b
a 0 
Phương trình có nghiệm x=-b/a
b 0 
Phương trình có 
vô số nghiệm
Kết thúc
Đúng 
Sai 
Đúng 
Sai
Bài tập 3 Viết thuật toán tính tổng sau:
 S=1/2+1/3+1/4++1/N
Lời giải :
 Xác định bài toán :
 + Input : Nhập N
 + Output : Tổng S
 Ý tưởng của bài toán:Ta thấy việc tính tổng của bài toán này được lặp đi lặp lại nhiều lần với tổng sau bằng tổng trước cộng i với i chạy từ 1 cho đến N và khi i >N thì thuật toán dừng lại và xuất tổng S
 Thuật toán của bài toán:
Cách 1: Liệt kê từng bước
 B1: Nhập số N
B2: S ß 0; i ß 0;
B3 : Nếu i >N thì đưa ra tổng S rồi kết thúc 
B4: S ß S+ 1/i,i ß i+1
B5 : Kết thúc thuật toán 
Yêu cầu học sinh chuyển từ cách viết thuật toán bằng phương pháp liệt kê sang sơ đồ khối. 
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối 
i <=N
Đ
Nhập N
S ß0; iß0
KQ :S
S ßS+1/N
ißi+1
S
Bài 4 : Cho N và dăy a1,,aN, hăy t́ìm giá trị nhỏ nhất (Min) của dăy đó .(SGK Tin học 10 trang 44)
Lời giải: 
Xác định bài toán :
 + Input : Nhập N và dăy a1,,aN
 + Output : Giá trị nhỏ nhất (Min) của dăy số 
Học sinh có thể dựa vào bài toán t́ìm Max đã học của dăy, để nêu ý tưởng giải bài toán tìm Min.
Ý tưởng của bài toán: - Khởi tạo giá trị Min =a1
 - Lần lược với i chạy từ 2 đến N, so sánh giá trị số hạng ai với giá trị Min, nếu ai< Min th́ì Min sẽ nhận giá trị mới là ai.
Thuật toán của bài toán:
 Cách 1: Liệt kê từng bước
Bước 1. Nhập N và dăy a1,,aN 
Bước 2. Min a1, i2
Bước 3. Nếu i >N th́ì đưa ra giá trị Min rồi kết thúc 
Bước 4
Bước 4.1 Nếu ai <Min th́ Minai;
Bước 4.2 i i+1 rồi quay lại Bước 3 
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối
Đúng
Sai
Nhập N và dăy a1,,aN
Min a1, i2
i >N
ai <Min
Minai
i i+1
Đưa ra giá trị Minkết thúc
Đúng
Sai
Bài 5:Viết thuật toán hoán đổi giá trị của hai biến số thực A và C dùng biến trung gian B (Sách Bài tập Tin học 10 và Sách bài tập Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc)
Lời giải:
 Yêu cầu học sinh t́ìm Input và Output của bài toán
Xác định bài toán :
Input: Hai số thực A và C
Output: Hai số thực C và A
Giỏo viờn nêu lên ví dụ :”Có 1 cái lu đựng gạo và 1 cái thùng đựng muối, cô muốn hoán đổi số lượng gạo trong lu phải được đựng vào thùng và số lượng muối ở trong thùng phải được chuyển sang đựng trong lu” để làm được điều đó em nào có thể nêu cách làm ?
Học sinh trả lời 
B1: Em đổ gạo ở trong lu sang một chậu (ban đầu chậu không đựng gì cả)
B2: Đổ lượng muối ở trong thùng sang lu
B3: Em lấy gạo ở trong chậu đổ vào thùng 
B4: Kếp quả là em được lu thì đựng muối, thùng thì đựng gạo 
Từ ví dụ trên giáo viên hình thành ý tưởng giải bài toán 
B1:
B2:
( B lấy giá trị của biến A)
B3:
B4:
( A lấy giá trị của C )
(C lấy giá trị của B)
(Giá trị A và C lúc nhập ban đầu)
ý tưởng của bài toán:Việc hoán đổi giá trị của hai biến A và C được làm theo các bước sau:
C 
B
A
Thuật toán của bài toán:
 Cách 1: Liệt kê từng bước
B1 : Nhập giá trị A, C
B2 : B A
B3 : AC ;
B4 : CB
B5 : Đưa ra gía trị mới của A và C rồi kết thúc 
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối
Nhập A và C
B A
AC
CB
Đưa ra gía trị mới của A và C rồi kết thúc
Bài 6 : Viết thuật toán đếm các số âm trong dăy số A={ a1,a2,aN } cho trước.(Sách Bài tập Tin học 10, trang 21)
Lời giải:
 Yêu cầu học sinh t́ìm Input và Output của bài toán
Xác định bài toán :
 + Input : Nhập N và dăy a1,,aN
 + Output : Số lượng các số âm trong dăy số 
Ý tưởng của bài toán: 
Khởi tạo giá trị Dem =0
Lần lược với i chạy từ 1 đến N, nếu ai nhỏ hơn 0 th́ì tăng biến Dem lên 1 đơn vị cho đến khi i >N th́ì dừng lại và xuất giá trị biến Dem.
Thuật toán của bài toán:
 Cách 1: Liệt kê từng bước
B1: Nhập số nguyên dương N và n số a1,,aN;
B2: i1; Dem 0;
B3 Nếu i > N đưa ra giá trị Dem rồi kết thúc ;
B4 Nếu ai <0 th́ Dem Dem +1;
B5 ii+1, rồi quay lại B3
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối
S
S
ai <0
Nhập số nguyên dương N
và n số a1,,aN;
i1; Dem 0
i > N
ii+1
Đưa ra giá trị Dem
rồi kết thúc
Dem Dem +1
Đ
Đ
Bài 7 : Viết thuật toán tính và hiển thị tổng các số dương trong dăy số (Sách Bài tập tin học 10, trang 21)
A={ a1,a2,aN } cho trước.
Yêu cầu học sinh t́ìm Input và Output của bài toán
Xác định bài toán :
 + Input : Nhập N và dăy a1,,aN
 + Output : Tổng các số lớn hơn 0 trong dăy 
í tưởng của bài toán: 
- Khởi tạo giá trị Sum =0
- Lần lược với i chạy từ 1 đến N, nếu ai lớn hơn 0 thì tăng biến Sum lên 1 đơn vị cho đến khi i>N th́ì dừng lại và xuất giá trị biến Sum
Thuật toán của bài toán:
 Cách 1: Liệt kê từng bước
B1: Nhập số nguyên dương N và n số a1,,aN;
B2: i1; Sum 0;
B3 Nếu i > N đưa ra giá trị Sum rồi kết thúc ;
B4 Nếu ai >0 th́ì Sum Sum +1;
B5 ii+1, rồi quay lại B3
Cách 2: Biểu diễn thuật toán bằng sơ đồ khối
S
S
ai >0
 Nhập số nguyên dương 
N và n số a1,,aN;
i1; Sum 0
i > N
ii+1
Đưa ra giá trị Sum
rồi kết thúc
Sum Sum +1
Đ
Đ
4. ĐÁNH GIÁ
Kết quả kiểm tra học sinh lớp 10A1(42 học sinh) với đề kiểm tra giống lớp 10A2 (ở trên) sau khi thực hiện đề tài như sau:
Lớp 10A1:
Điểm
Số học sinh
Tỉ lệ
3
0
4
0
5
6
14%
6
10
24%
7
10
24%
8
9
21%
9
7
17%
PHẦN III. KẾT LUẬN
Với việc xây dựng các thuật toán minh họa như trên, trong quá tŕnh giảng dạy Tin học 10, bản thân tôi thấy rằng các tiết học về bài toán và thuật toán không c̣òn nhàm chán, khô cứng nữa mà trở nên sôi nổi hơn và học sinh cũng có thể hiểu các thuật toán một cách dễ dàng hơn.
Đề tài này ra đời từ kinh nghiệm của bản thân trong quá tŕnh giảng dạy và từ những kiến thức mà tôi đă tham khảo với đồng nghiệp. Tôi rất mong sự góp ý chân thành của quý thầy cô để tôi có một sáng kiến kinh nghiệm tốt hơn nữa.
Xin chân thành cảm ơn!
	THANH HÓA, ngày 25 tháng 05 năm 2017
	Giáo viên thực hiện: 
	Lê Thị Hoài Thu	
 ZZZZZZZ
Tài liệu tham khảo:
Sách giáo khoa, sách bài tập và sách giáo viên Tin học 10
Tài liệu bồi dưỡng giáo viên Tin học 10
Bài tập Ngôn ngữ lập trình pascal (Quách Tuấn Ngọc)

Tài liệu đính kèm:

  • docskkn_nang_cao_ky_nang_viet_thuat_toan_cho_hoc_sinh_thong_qua.doc