Các điều kiện cần thiết để áp dụng sáng kiến: Học sinh lớp 10 hoặc học sinh mới làm quen với lập trình...26 X.. SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10CÁC KÝ H
Trang 1MỤC LỤC
CÁC KÝ HIỆU VIẾT TẮT TRONG SÁNG KIẾN KINH NGHIỆM 2
I Lời giới thiệu 3
II Tên sáng kiến: 4
III Tác giả sáng kiến: 4
IV Chủ đầu tư tạo ra sáng kiến: 4
V Lĩnh vực áp dụng sáng kiến: 4
VI Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử: 4
VII Mô tả bản chất của sáng kiến: 5
1 Bài toán 5
1.1 Khái niệm 5
1.2 Ví dụ xác định INPUT và OUTPUT của các bài toán sau 5
2 Thuật toán 6
2.1 Khái niệm 6
2.2 Phương pháp 6
2.3 Tính chất 6
2.4 Ví dụ 6
2.5 Bài tập vận dụng 26
VIII Những thông tin cần bảo mật: Không 26
IX Các điều kiện cần thiết để áp dụng sáng kiến: Học sinh lớp 10 hoặc học sinh mới làm quen với lập trình 26
X Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến theo ý kiến của tác giả: 26
XI Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử hoặc áp dụng sáng kiến lần đầu: 28
TÀI LIỆU THAM KHẢO 29
1
Trang 2SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
CÁC KÝ HIỆU VIẾT TẮT TRONG SÁNG KIẾN KINH NGHIỆM
[ … ] Làm tròn giá trị số trong dấu ngoặc
Trang 3BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
I Lời giới thiệu
Trong kỷ nguyên công nghệ bùng nổ, không có gì bất ngờ khi công nghệthông tin luôn giữ vững vị thế là một trong những ngành hàng đầu về nhu cầunhân lực và tiềm năng phát triển Vị thế này càng được củng cố trong bối cảnhthế giới và đất nước bước vào thời đại Cách mạng công nghiệp 4.0 Vì thế đòihỏi mỗi chúng ta dù là học sinh hay giáo viên đều phải tích cực học tập, nghiêncứu để có thể hội nhập được với thời đại
Môn Tin học là môn học giúp các em dễ dàng tiếp cận được với côngnghệ, với thế giới Tuy nhiên nó khá mới mẻ với học sinh THPT đặc biệt là họcsinh trường THPT Nguyễn Viết Xuân với phần đông học sinh thuộc khu vựcnông thôn Học sinh mới chỉ được làm quen với máy tính chứ chưa thực sự có
khái niệm về công nghệ thông tin, khái niệm về bài toán và thuật toán trong Tin học Trong khi đó phần bài toán và thuật toán được học ở lớp 10 là phần kiến
thức quan trọng nhất Là nền tảng cho kiến thức tin học lớp 11 Là cốt lõi chocác em muốn theo học lập trình Nên rất cần những phương pháp, cách tiếp cậnbài toán và thuật toán sao cho học sinh không cảm thấy sợ dẫn đến mất gốc
Bài toán và thuật toán trong Tin học khá là quen thuộc với giáo viên Và
sự thật tôi cũng đã làm một sáng kiến kinh nghiệm về phần này cách đây banăm Nhưng khi đó tôi thường tập trung vào những thuật toán khó phức tạp mà
3
BÀI TOÁN
INPUT Muốn máy tính đưa ra OUTPUT
Output từ Input CHƯƠNG TRÌNH Muốn viết chương trình
Trang 4SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
quên đi việc xây dựng cái nền móng cho học sinh Từ thực tế giảng dạy nhiềunăm tôi nhận thấy học sinh của tôi có biết cách giải bài toán nhưng gặp khókhăn trong việc trình bày bài toán đó bằng phương pháp liệt kê hoặc phươngpháp sơ đồ khối Từ đó, tôi đúc rút được là khi dạy nên để học sinh tiếp cận vớinhững thuật toán dễ từ đó phát triển lên những thuật toán khó thì học sinh dễtiếp cận hơn và nên có mô phỏng thuật toán bằng các bộ test trong những trườnghợp đặc biệt để học sinh hiểu rõ hơn Không cần quá nặng nề việc phải bám sáttrình tự các ví dụ trong sách giáo khoa Mục đích sáng kiến kinh nghiệm này củatôi là muốn học sinh làm quen dần với các thuật toán từ đơn giản rồi nâng caodần để học sinh hình thành kỹ năng viết thuật toán thành thạo
Do thời gian và khả năng có hạn nên sáng kiến kinh nghiệm tôi viết vẫncòn nhiều tồn tại Kính mong đồng nghiệp và học sinh góp ý để sáng kiến kinhnghiệm của tôi được hoàn thiện hơn Để một phần nào đó giúp ích cho giáo viên
và học sinh trong quá trình giảng dạy và học tập
II Tên sáng kiến:
Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
III Tác giả sáng kiến:
- Họ và tên: Nguyễn Thị Hà
- Địa chỉ tác giả sáng kiến: Hội Hợp – Vĩnh Yên – Vĩnh Phúc
- Số điện thoại: 0977 212 636
- E_mail: nguyenthiha.gvnguyenvietxuan@vinhphuc.edu.vn
IV Chủ đầu tư tạo ra sáng kiến: Nguyễn Thị Hà
V Lĩnh vực áp dụng sáng kiến: Giảng dạy cho học sinh lớp 10 và
học sinh mới học lập trình
VI Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử: Năm 2017 - 2018
Trang 5VII Mô tả bản chất của sáng kiến:
1 Bài toán
1.1 Khái niệm
Là việc nào đó mà ta muốn máy tính thực hiện để từ thông tin đưa vào (Input) tìm được thông tin ra (Output).
Vậy bài toán trong tin học gồm:
Thông tin, dữ liệu vào: Input
Thông tin ra, kết quả: Output
1.2 Ví dụ xác định INPUT và OUTPUT của các bài toán sau
Ví dụ 1: Cho hai số a, b Tính tổng hai số.
Input: Hai số nguyên a và b
Output: Kết luận nghiệm của PT
5
Trang 6SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Ví dụ 4: Giải phương trình: ax 2 + bx + c = 0 (a ¿ 0)
Input: Số nguyên a, b, c với a ¿ 0
Output: Kết luận nghiệm của phương trình
2 Thuật toán
2.1 Khái niệm
Thuật toán để giải một bài toán là 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, ta nhận được Output cần tìm.
2.2 Phương pháp
Có hai phương pháp trình bày thuật toán:
* Phương pháp liệt kê: Là nêu trình tự thực hiện các bước giải một bài toán
bằng máy tính
* Phương pháp sơ đồ khối: Là sử dụng các hình khối để thể hiện thuật toán với:
: Thể hiện nhập hoặc xuất dữ liệu
Trang 7- Output: Tổng hai số
* Thuật toán
- Phương pháp liệt kê
B1: Nhập a, bB2: S := a + bB3: Tổng là S
- Phương pháp sơ đồ khối
* Mô phỏng thuật toán
- Phương pháp sơ đồ khối
Trang 8SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng thuật toán
B21: b = 0 kết luận PT VSNB22: Ngược lại kết luận PT VNB3: Ngược lại phương trình có 1 nghiệm x := -b/a
- Phương pháp sơ đồ khối
* Mô phỏng thuật toán
N là số lẻ
Trang 9- Với a = 0, b = 0 thì phương trình vô số nghiệm
- Với a = 0, b = 1 thì phương trình vô nghiệm
- Với a = 1, b = 1 thì phương trình có nghiệm x := -1
Ví dụ 4: Trình bày thuật toán giải phương trình: ax 2 + bx + c = 0 (a#0)
Trang 10SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng thuật toán
−3+√12∗1 = -1
Ví dụ 5: Cho dãy có N phần tử a1, a2, … an Trình bày thuật toán tính tổng cácphần tử của dãy
Trang 11* Mô phỏng thuật toán
- Với N = 0 thì tổng của dãy là 0
- Với N = 3 và dãy số 4, 7, 2
+ B1: Nhập 3; 4, 7, 2+ B2: S := 0; i := 1+ B3: 1 > 3 (sai)+ B4: S := 0 + 4+ B5: i := 2, quay lại B3
Trang 12SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
- Phương pháp sơ đồ khối
* Mô phỏng thuật toán
- Với N = 0 thì tổng của dãy là 0
- Với N = 5 và dãy số 6, 5, 7, 8, 9
+ B1: Nhập 5; 6, 5, 7, 8, 9+ B2: S := 0; i := 1
+ B3: 1 > 5 (sai)+ B4: 6 ⋮ 2 nên S := S + 6+ B5: i := 2, quay lại B3
Nhập N; a1, a2, … an
Trang 13- Phương pháp sơ đồ khối
Trang 14SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10B3: Max < 8 (đúng) nên Max := 8
B3: Nếu i > N thông báo giá trị 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
- Phương pháp sơ đồ khối
14
GTLN là Max
Nhập N; a1, a2, ,
aN Max := a1; i := 2
i > N Đ
S
Max := ai
ai > Max Đ
Trang 15SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
- Input: N là 1 số nguyên dương
- Output: N là số nguyên tố hay không
15
Trang 16SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N
B2: Nếu N = 1 thì thông báo N không là số nguyên tố
B3: Nếu N < 4 thì thông báo N là số nguyên tố
B4: Gán i := 2; d := [ N ] (i = 2 d)
B5: Nếu i >= d thì thông báo N là số nguyên tố
B6: Nếu N chia hết cho i thì N không là số nguyên tố
Trang 18SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
B3: Nếu M > N thì M := M – N rồi quay lại B2
B4: N := N – M rồi quay lại B2
- Phương pháp sơ đồ khối
Trang 19SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng thuật toán
Trang 20SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10B3: Nếu i > d thì đưa ra tổng S
Trang 22SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10B2: S := 1; i := 2
B3: 2 > 5 (sai)
B4 : S := 1 * 2
B5: i := 2+1
…
Giai thừa của 5 là 120
Ví dụ 14: Cho N và dãy các số nguyên a 1 , a 2 , … a n Trình bày thuật toán tìm sắp xếp các phần tử của dãy theo thứ tự tăng dần.
* Cách xác định bài toán
- Input: Dãy số nguyên a1, a2, , aN
- Output: Dãy số đã được sắp xếp
* Thuật toán
- Phương pháp sơ liệt kê
B1: Nhập N và dãy a1, a2, , aN
B2: Gán giá trị M := NB3: Nếu M <2 thông báo dãy đã được sắp xếp và kết thúc
B4: Gán M := M - 1; i := 0;
B5: Gán i := i + 1B6: Nếu i > M quay lại B3B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhauB8: quay lại bước 5
- Phương pháp sơ đồ khối
Trang 23SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
* Mô phỏng thuật toán
Trang 24SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Thực hiện tương tự cho các lần duyệt tiếp theo cho đến khi không còn sự đổi chỗ nào nữa
Ví dụ 15: Cho N và dãy các số nguyên a 1 , a 2 , …, a n và số nguyên K Trình bày thuật toán cho biết vị trí xuất hiện của K trong dãy.
* Cách xác định bài toán
- Input: N; Dãy số nguyên a1, a2, , aN; K
- Output: Vị trí xuất hiện của K hoặc K không có trong dãy
* Thuật toán
- Phương pháp liệt kê
B1: Nhập N và dãy a1, a2, , aN; KB2: Gán i := 1
Trang 25B3: Nếu ai = K thì thông báo vị trí xuất hiện K là iB4: i := i + 1
B5: Nếu i > N thì thông báo trong dãy không có KB6: Quay về B3
- Phương pháp sơ đồ khối
* Mô phỏng thuật toán
Trang 26SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Bài 6: Cho số N Trình bày thuật toán kiểm tra N có là số hoàn hảo hay không
Gợi ý: N được gọi là số hoàn hảo nếu N có giá trị bằng tổng các ước của nó (không kể chính nó) Ví dụ: N = 6; N = 28 …
Bài 7: Cho N và dãy các số nguyên a1, a2, … an Trình bày thuật toán tìm sắpxếp các phần tử của dãy theo thứ tự giảm dần
Bài 8: Cho N và dãy các số nguyên a1, a2, …, an và số nguyên K Trình bày thuậttoán đếm số lần xuất hiện của K trong dãy
VIII Những thông tin cần bảo mật: Không
IX Các điều kiện cần thiết để áp dụng sáng kiến: Học sinh
lớp 10 hoặc học sinh mới làm quen với lập trình
X Đánh giá lợi ích thu được hoặc dự kiến có thể thu được
do áp dụng sáng kiến theo ý kiến của tác giả:
Học sinh được học theo nội dung trình bày trong sáng kiến sẽ có cái nhìntoàn diện hơn, tự tin hơn khi đối mặt với bài toán trong Tin học từ đó các em sẽ
Trang 27thích học và chủ động tìm hiểu kiến thức Nội dung sáng kiến được trình bàylogic, phù hợp với trình độ phát triển tư duy của học sinh từ nhận biết, thônghiểu đến vận dụng, nâng cao và sáng tạo qua đó giúp cho học sinh phát triển tưduy tổng hợp và rèn luyện các kĩ năng viết thuật toán.
Bảng số liệu kết quả của học sinh lớp 10 – khối A trường THPT NguyễnViết Xuân năm học 2016 – 2017 khi chưa thực hiện đề tài:
STT Lớp Sỉ số Đạt yêu cầu Không đạt yêu cầu
- Khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên, đa số các
em tránh được các lỗi thường gặp khi trình bày thuật toán
- Một số không ít học sinh có tiến bộ rõ rệt khi trình bày thuật toán bằng haiphương pháp
- Nâng cao việc yêu thích học tin học đối với một bộ phận học sinh và một số
em có định hướng nghề nghiệp sau này
- Bảng số liệu kết quả đạt được của học sinh lớp 10 – khối A trường THPTNguyễn Viết Xuân năm học 2017 – 2018 sau khi thực hiện đề tài:
STT Lớp Sĩ số Đạt yêu cầu Không đạt yêu cầu
Sáng kiến kinh nghiệm sẽ là tài liệu tham khảo cơ bản về thuật toán đểtrao đổi kinh nghiệm với đồng nghiệp và truyền đạt cho học sinh
27
Trang 28SKKN: Dạy bài toán và thuật toán trong Tin học cho học sinh lớp 10
Mặc dù đã cố gắng rất nhiều trong quá trình viết sáng kiến kinh nghiệm
này nhưng chắc chắn sẽ không tránh khỏi những sai sót Kính mong quý thầy cô,
đồng nghiệp và học sinh chân thành góp ý để sáng kiến kinh nghiệm: “Dạy bài
toán và thuật toán cho học sinh lớp 10” được hoàn thiện hơn và trở thành một tài
liệu hay, hữu ích trong việc dạy và học thuật toán
XI Danh sách những tổ chức/cá nhân đã tham gia áp
dụng thử hoặc áp dụng sáng kiến lần đầu:
CHỦ TỊCH HỘI ĐỒNG SÁNG KIẾN CẤP CƠ SỞ
(Ký tên, đóng dấu)
Vĩnh Tường, ngày 29 tháng 01 năm 2019
Tác giả sáng kiến
(Ký, ghi rõ họ tên)
Nguyễn Thị Hà
TÀI LIỆU THAM KHẢO
1 Sách giáo khoa tin học 10 – NXB Giáo dục
2 Sách giáo khoa tin học 11 – NXB Giáo dục
Trang 293 Giải thuật và lập trình – Lê Minh Hoàng
4 Một số vấn đề về thuật toán – NXB Giáo dục – Tác giả: Nguyễn Hữu Điển
5 Giáo trình thuật toán và kỹ thuật lập trình Pascal – NXB Sở giáo dục và đào tạo Hà Nội – Tác giả: Nguyễn Chí Trung
29