Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,38 MB
Nội dung
I MỞ ĐẦU Lí chọn đề tài Việc đổi giáo dục vấn đề nóng bỏng cấp thiết Chương trình giáo dục phổ thông nước ta giai đoạn chuyển từ chương trình giáo dục tiếp cận nội dung sang tiếp cận lực người học “Trước bối cảnh để chuẩn bị cho trình đổi chương trình, sách giáo khoa giáo dục phổ thơng, cần thiết phải đổi đồng phương pháp dạy học kiểm tra đánh giá kết giáo dục theo định hướng phát triển lực người học”[1] Do việc nghiên cứu, áp dụng phương pháp dạy học tích cực định hướng hình thành lực học sinh vào dạy học để nâng cao chất lượng quan trọng cần thiết Phần toán thuật tốn phần học nói khó Các kiến thức phần học góp phần phát triển khả tư giải vấn đề khoa học sống; hình thành số kĩ chuẩn bị cho việc tiếp thu học ngơn ngữ lập trình cách dùng biến, khởi tạo giá trị biến… Nếu dạy theo phương pháp thơng thường học sinh học vẹt cách máy móc khơng hiểu sâu thuật toán hoạt động dẫn đến việc chuyển hóa thuật tốn để viết ngơn ngữ lập khó thực Chính vậy, cần đưa cách dạy để vừa hiểu thuật toán, vừa biết cách xây dựng thuật toán cần thiết Phương pháp khơng thực thuật tốn mà áp dụng vào thuật tốn khác, có học sinh hình thành phát triển tư thuật toán Sau nhiều năm trực tiếp giảng dạy học sinh khối 10, trăn trở quan tâm, học hỏi để tìm cách dạy tốt phần thuật tốn Do vậy, tơi lựa chọn đề tài: “Một số kinh nghiệm giúp học sinh dễ dàng hiểu biết cách xây dựng thuật toán dạy “Bài toán thuật toán”- Tin học 10” làm đề tài sáng kiến kinh nghiệm Với kinh nghiệm thân, hy vọng giúp học sinh chủ động học tập, hiểu hứng thú môn Tin học Mục đích nghiên cứu Tơi thực đề tài để giúp em học sinh lớp 10 dễ dàng hiểu thuật tốn từ xây dựng thuật toán để giải toán quen thuộc gần gũi học tập sống Từ em hình thành tư thuật toán; giúp em học tốt phần ngơn ngữ lập trình lớp 11 Và mục đích cuối để góp phần nâng cao chất lượng giảng dạy học tập trường THPT Cẩm Thủy nói riêng ngành giáo dục nói chung Đối tượng nghiên cứu Học sinh khối 10 lớp 10A2, 10A4, 10A6, 10A9, 10A11 năm học 2017-2018; lớp 10A1, 10A2, 10A3, 10A4, 10A10, 10A11 năm học 20181 2019 lớp 11A2, 11A4, 11A6, 11A9, 11A11 năm học 2018-2019 trường THPT Cẩm Thủy Trong phạm vi đề tài này, tập trung nghiên cứu nội dung “ Bài toán thuật toán” Tin học 10, kỹ thuật tinh chế bước, cách mơ thuật tốn ví dụ cụ thể, thực tế nhằm tìm cách thức truyền đạt nội dung học, cách tổ chức hoạt động dạy học giúp học sinh chủ động tiếp thu kiến thức vận dụng kiến thức cách dễ dàng để nâng cao chất lượng dạy học Phương pháp nghiên cứu Nghiên cứu lí luận: Nghiên cứu kỹ thuật tinh chế bước xây dựng thuật toán, kỹ thuật mơ thuật tốn Nghiên cứu thực tiễn: Khảo sát lực học sinh học toán thuật toán lớp 10 khả vận dụng để xây dựng thuật tốn học lập trình lớp 11 Thực nghiệm sư phạm: Tiến hành thực nghiệm đối tượng học sinh cụ thể nhằm đánh giá hiệu đề tài II NỘI DUNG Cơ sở lí luận Thuật tốn phần quan bậc để tạo nên chương trình Do học lập trình khó khăn ban đầu học sinh tìm thuật tốn để giải tốn cho Một học sinh muốn tiến sâu, tiến xa tương lai phải có tư thuật tốn tốt Bởi làm quen rèn luyện tư thuật toán cho học sinh trước bắt đầu học lập trình u cầu thiết yếu Tơi đưa cách dạy thuật tốn mà tơi đúc kết tổng hợp trình dạy học sau: B1 Xác định tốn Việc xác định tốn khơng đơn giản input/output toán cách chung chung mà phải hiểu xác định đối tượng hằng, biến cụ thể có tốn, phân tích để tìm ý đồ cần đạt kết tốn Để truyền đạt kiến thức này, GV vận dụng cách khác như: tự xác định giải thích; yêu cầu HS xác định bổ sung qua ý kiến HS khác lớp; GV dẫn dắt, định hướng cho HS xác định từ tổng quan đến cụ thể, chi tiết B2 Nêu ý tưởng thuật toán GV định hướng để đưa ý tưởng lời nói cách giải tốn dựa vào input sẵn có, phân tích input, thực số thao tác định input để tìm output tốn Việc làm nhằm giúp HS nắm bắt hiểu ý đồ giải để xác định hướng xây dựng thuật toán giải tốn Việc xem quan trọng HS tiền đề cho nội dung dạy học Hiệu học tập HS phần thuật toán phụ thuộc khác nhiều vào việc HS có hiểu ý tưởng thuật tốn hay khơng hiểu HS có thêm động lực, thêm hăng say, thích thú với việc tiếp thu mơn học, ngược lại dẫn đến chán nản, lười học kéo theo không đạt mục tiêu dạy học Với PPDH truyền thống, GV hay tiếp cận dạy học cách nêu ý tưởng sẵn có SGK giải thích ý nghĩa nó, cách làm hướng đến mục tiêu cuối học nhiên dễ gây nhàm chán, mệt mỏi cho HS (đặc biệt HS yếu, kém) em học tập thụ động, lắng nghe tiếp nhận, chấp nhận kiến thức cho dù có hiểu hay khơng Do đó, GV cần tổ chức dạy học mục thơng qua vận dụng PPDH tích cực khác tình cụ thể nhằm phát huy tính tích cực tư duy, tạo hứng thú cho Hs tiếp thu: - Tổ chức cho HS tham gia trò chơi thực tế mà nội dung thể gần với nội dung học giúp HS có liên tưởng gần đến ý tưởng thuật toán; - Đặt tình có vấn đề để HS động não, phân tích, suy luận hình thành tri thức; - Tổ chức cho HS học tập hợp tác theo nhóm để trao đổi thơng tin, tổng hợp, nảy sinh ý tưởng, trình bày trước lớp để đối chiếu, so sánh;… B3 Xây dựng thuật toán Ở phần GV phải tổ chức cho HS tiếp cận việc mô tả bước thao tác thuật tốn cho HS hiểu được, viết thuật toán SGK (theo cách khác hình thức diễn đạt khác nhau), HS giải thích thuật tốn cho bạn hiểu Một phương pháp dạy thuật toán hữu hiệu tinh chế “làm mịn” dần Mục tiêu dạy học thuật toán kĩ thuật tinh chế giúp học sinh hiểu thuật toán dễ dàng hiểu đường xây dựng thuật toán; tạo hội thuận lợi để giáo viên rèn luyện bồi dưỡng cho học sinh cách suy nghĩ, hoạt động tư phân tích q trình giải vấn đề Mấu chốt phương pháp trình dẫn dắt học sinh phân tích thuật tốn thành thuật tốn mà chúng dễ dàng xây dựng biểu diễn chi tiết Do đó, trình dạy học thuật tốn cách “làm mịn dần” tiến hành theo bước sau đây: Dẫn dắt HS hình thành thuật tốn thể ý tưởng thuật tốn (có thể chưa cần chi tiết) Dẫn dắt HS phân tích thuật tốn để phát nhiệm vụ tương đối độc lập thuật tốn Từ tiếp nhận thuật tốn tương ứng giải nhiệm vụ Dẫn dắt HS tiếp tục phân tích thuật tốn (nếu cần thiết) theo cách phân tích thuật tốn Dẫn dắt HS xây dựng biểu diễn thuật toán tổng hợp thành thuật toán chung toán ban đầu B4 Mơ thuật tốn liệu cụ thể Một khó khăn học thuật toán việc hiểu thuật toán hoạt động Để học sinh nắm bắt hiểu rõ thuật tốn học sinh phải mơ thuật toán liệu khác Trong q trình dạy học, giáo viên sử dụng chương trình mơ có sẵn flash hay soạn thảo slide powpoint để mô thuật toán cho học sinh thấy hoạt động thuật tốn nào, mơ thuật toán bảng với nhiều liệu khác Sau giao tập cho học sinh mơ thuật tốn liệu khác, đưa kết thực thuật toán liệu theo hướng dẫn giáo viên Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm Trong q trình dạy học tơi tìm hiểu vướng mắc khó khăn học sinh học phần toán thuật toán Phần nhiều học sinh chưa học tin học cấp 2, số lại học tin học học theo chương trình tự chọn nên em lên lớp 10 chưa nắm kiến thức tin học Một phận học sinh cho học tin học có nghĩa chơi máy tính Các em hào hứng, chờ đợi học tin để chơi máy tính Nhưng học tin học lớp 10 đầu đòi hỏi em phải nắm bắt nhiều khái niệm, kiến thức khô khan phần thuật tốn Thêm vào thời lượng thực hành lại có lên thực phòng thực hành khơng chơi nên em cảm thấy chán nản, không hứng thú Qua thực tế giảng dạy thân dự đồng nghiệp trường THPT Cẩm Thủy 1, thấy học Tin học 11, học sinh gặp nhiều khó khăn xây dựng thuật toán Các thuật toán dạy lớp 10 em quên gần hết Việc gây nhiều khó khăn vất vả cho giáo viên dạy ngôn ngữ lập trình Năm học 2017-2018, tơi dạy lớp 10 Trong q trình dạy học tơi dạy kỹ lưỡng cẩn thận phần toán thuật toán Khi tơi có đánh giá tiếp thu HS nhận kết không tồi Nhưng sang đến năm học em lên lớp 11 tơi phải dạy lại tồn thuật tốn tìm kiếm xếp nhiều em khơng nhớ gì.Việc giáo viên bắt học sinh ghi nhớ thụ động nội dung, khái niệm sách giáo khoa khó em khơng thực hiểu Có thể em hiểu nhớ kiến thức lúc học đến lúc kiểm tra lại qn hết Hoặc học sinh có chăm ghi nhớ bị lẫn lộn nội dung kiến thức khả vận dụng hạn chế Các giải pháp sử dụng để giải vấn đề Khi dạy “Bài toán thuật tốn” Tin học 10, tơi dạy học sinh khái niệm toán tin học Nhấn mạnh cho học sinh điểm khác biệt tin học ta sử dụng máy tính để giải tốn Mà máy tính thiết bị xử lý thơng tin nên ta cần quan tâm đến yếu tố: đưa vào máy tính thơng tin cần máy tính đưa thơng tin (sau xử lý) Từ dạy học sinh cách xác định phát biểu toán tin học (chỉ input output) Chú ý xác định toán cần phân tích đối tượng hằng, biến cần có tốn Sau tơi dạy cho học sinh khái niệm thuật tốn ln tính chất thuật tốn thơng qua ví dụ Một dãy thao tác mà vi phạm tính chất khơng coi thuật toán Chẳng hạn dãy thao tác: B1 Xóa bảng B2 Vẽ đường tròn B3 Quay lại B1 khơng xem thuật tốn vi phạm tính dừng Hay dãy thao tác mà đưa kết sai khơng chấp nhận khơng thỏa mãn tính đắn Dãy thao tác mà khơng có tính xác định tương tự có nhập nhằng thao tác máy tính khơng biết thực thao tác Vì chất máy tính máy, tự tư mà thực cách tự động chương trình người lập trình sẵn Tiếp theo, tơi dạy cho học sinh hai cách biểu diễn thuật toán: liệt kê bước sử dụng sơ đồ khối thông qua ví dụ cụ thể, đơn giản gần gũi Vì lần học sinh làm quen với thuật toán cách xây dựng thuật tốn nên tơi đưa ví dụ dễ để em xác định toán xây dựng thuật toán giải bào toán Sau ví dụ tăng dần mức độ khó lên VD1: Tính tổng số ngun * Xác định tốn: Ban đầu tơi gợi ý cho HS phát biểu lời: “Cần nhập vào máy tính thơng tin gì?” HS dễ dàng trả lời số ngun “Cần lấy thơng tin từ máy tính?” HS dễ dàng xác định tổng số nguyên vừa nhập Từ dạy cho học sinh xác định đặt tên biến cần cho toán: Input: số nguyên a b Output: Số nguyên t tổng a b (Đây bước ban đầu để học sinh xác định cấu trúc liệu toán, phần vô quan trọng việc học lập trình sau này) * Ý tưởng: Bài tốn đưa tưởng chừng đơn giản HS bắt tay xây dựng thuật toán Bởi em khơng biết phải viết Do phải hướng dẫn cặn kẽ chi tiết: Muốn máy tính tính tổng số ngun phải cho máy tính biết số nguyên Do bước thuật toán bước nhập liệu vào Phải có thơng tin vào máy tính xử lý để có kết Khi máy tính xử lý, tính tốn kết muốn cho người biết kết đó, phải thơng báo cho người dùng * Thuật tốn: Với hướng dẫn giáo viên hầu hết HS viết thuật tốn cách liệt kê bước sơ đồ khối: Bước 1: Nhập a, b ; Bước 2: T ← a+b ; Bước : Đưa t, kết thúc ; Nhập a,b t ←a +b Thông báo t kết thúc * Mô phỏng: - Khi nhập vào máy tính số: Máy tính xử lý thông báo kết qủa 12 - Khi nhập vào máy tính 2: số -3 Máy tính xử lý thơng báo kết qủa VD2: Tìm số lớn hai số a b (Mục đích dạy cho HS thao tác rẽ nhánh xây dựng thuật toán) * Xác định toán: Input: hai số a b Output: số lớn số a b * Ý tưởng: GV hỏi HS sau nhập vào máy tính số a,b muốn thơng báo ngồi số lớn số xảy trường hợp? HS dễ dàng trả lời câu hỏi trường hợp: a>b, ab máy tính thơng báo số lớn a Nếu ab thơng báo số lớn a kết thúc Số lớn Đ Bước 3: Nếu ab thúc số lớn b kết thúc S Bước 4: Thông báo hai số Đ Số lớn kết thúc a max max nhận giá trị * Thuật toán: Sau làm rõ ý tưởng thuật toán, GV cho HS thảo luận theo nhóm để đưa hướng giải tốn, GV gợi ý thuật tốn mức độ tổng qt (có thể cách đưa ví dụ thực tế), yêu cầu nhóm xác định bước làm HS xây dựng phiên mơ tả ban đầu thuật tốn sau: B1 Nhập số nguyên dương N dãy N số nguyên a1, a2, , aN B2 Cho Max a1 B3 So sánh giá trị Max với giá trị số hạng > max max nhận giá trị B4 Thông báo Max Trong mô tả GV hướng dẫn học sinh xem xét thao tác dễ hiểu, thực mà không phần phải phân tích thêm Dễ thấy, bước B1, B2, B4 rơi vào trường hợp Chỉ có bước B3 cần phải chia nhỏ thêm Việc yêu cầu HS nhận xét nhằm xác định cho HS mục tiêu cần hướng đến để giải toán dễ dàng Theo ý tưởng đưa ban đầu, ta thực việc so sánh Max với a2, , aN Công việc bước B3 làm mịn sau: So sánh Max với a2, Max < a2 gán Max a2 So sánh Max với a3, Max < a3 gán Max a3 So sánh Max với aN, Max < aN gán Max aN Ta thấy thao tác có lặp lặp lại nên hướng dẫn HS thực thu gọn việc diễn đạt sử dụng biến số tổng quát i bắt đầu N B3 Cho i từ đến N, ứng với giá trị i, so sánh Max với ai, Max < gán Max TH1 Nếu dãy số cho ban đầu có phần tử (tức N = 1) tốn giải nào? HS suy nghĩ, trả lời giải thích: phần tử phần tử có giá trị Max Khi đó, cho i = (tức i > N) không tồn phần tử để thực việc so sánh nên kết thúc B3 TH2 Nếu N = 2, thuật toán kết thúc việc so sánh nào? HS trả lởi: ta thực việc so sánh Max với a2 i = 2, B3 kết thúc i = Tổng qt với dãy có N phần tử thuật toán dừng phần so sánh Max với i > N Ở đây, GV nên tổ chức cho HS thảo luận theo nhóm hình thức trao đổi ý kiến, tranh luận sử dụng kỹ thuật “khăn trải bàn” cho nhóm HS (các nhóm chia đồng đối tượng HS) Mỗi HS tự viết phần phân tích bước B3, thảo luận, viết phiên chung thống nhóm trình bày trước lớp Bước thuật tốn hướng đến cuối là: B3.1 Đặt i = B3.2 Kiểm tra i với N, i > N chuyển sang B4 B3.3 Nếu i < N, so sánh Max với ai, Max < gán Max B3.4 Tăng i lên quay lại B3.2 Ở cần lưu ý việc tăng giá trị i lên bước B3.4 nhằm hướng đến kiểm tra phần tử dãy số Thuật tốn hồn chỉnh giải tốn tìm giá trị lớn dãy số cho trước sau: B1 Nhập số nguyên dương N dãy N số nguyên a1, a2, , aN B2 Cho Max a1 B3 So sánh giá trị Max với số lại để tìm Max B3.1 Đặt i = B3.2 Kiểm tra i với N, i > N chuyển sang B4 B3.3 Nếu i < N, so sánh Max với ai, Max < gán Max B3.4 Tăng i lên quay lại B3.2 B4 Kết luận Max Sau GV gọi HS lên bảng trình bày thuật tốn sơ đồ khối * Mơ phỏng: Tơi làm slide để mơ thuật tốn với giá trị N=5; a1=5; a2=1; a3=4; a4=7; a5=6 sau: Tệp chương trình mơ phỏng: Chương trình mơ phỏng\TimMax.ppsx Ngồi ra, ta dùng tệp Flash download mạng để mơ thuật tốn cho HS thấy hoạt động thuật toán kết qủa Cái lợi Flash ta mơ với liệu nhập vào từ bàn phím Qua HS hiểu thuật toán giải lớp tốn giống Tệp chương trình mơ phỏng: Chương trình mơ phỏng\tim max.exe VD4: Bài tốn xếp Cho dãy A gồm N số nguyên a1, a2, , aN Cần xếp số hạng để dãy A trở thành dãy không giảm (tức số hạng trước khơng lớn số hạng sau) Ví dụ: với A dãy số nguyên: 8, 4, 9, 5, 11, 3, sau xếp ta có dãy: 3, 4, 5, 8, 9, 11 * Xác định toán - Input: Dãy A gồm N số nguyên a1, a2, , aN - Output: Dãy A xếp lại thành dãy không giảm * Ý tưởng GV gọi em học sinh lên bục giảng xếp thành hàng dọc theo thứ tự ngẫu nhiên Yêu cầu xếp HS theo thứ tự thấp đứng trước, cao đứng sau Việc làm kích thích tò mò hoạt động tư HS Giả sử ban đầu em đứng sau (ta coi em số cho dễ gọi) Ta duyệt từ đầu hàng đến cuối hàng (từ phải qua trái), xét em đứng gần mà trái quy luật ta đổi chỗ em cho Lần duyệt thứ nhất: - Bạn số thấp bạn số nên không cần đổi vị trí cho 10 Bạn số cao bạn số nên ta đổi chỗ bạn cho Bạn số cao bạn số nên ta đổi chỗ bạn cho Bạn số cao bạn số nên ta đổi chỗ bạn cho Bạn số cao bạn số nên ta đổi chỗ bạn cho Sau lần duyệt thứ bạn số vị trí Lần duyệt thứ 2: 11 Bạn số cao bạn số nên ta đổi chỗ bạn cho - Bạn số thấp bạn số nên ta không cần đổi chỗ - Bạn số thấp bạn số nên ta không cần đổi chỗ - Bạn số cao bạn số nên ta đổi chỗ bạn cho Sau lần duyệt thứ thêm bạn số vị trí bạn số 6 Lần duyệt 3: - Bạn số thấp bạn số nên ta không cần đổi chỗ - Bạn số thấp bạn số nên ta không cần đổi chỗ - Bạn số cao bạn số nên ta đổi chỗ bạn cho Sau lần duyệt thêm bạn số vị trí bạn số số Lần duyệt 4: - Bạn số thấp bạn số nên ta không cần đổi chỗ - Bạn số cao bạn số nên ta đổi chỗ bạn cho - Các bạn lại khơng phải đổi thứ 12 tự Sau vòng duyệt ta hàng thứ tự sau: Từ GV cho HS nêu ý tưởng thuật tốn: Với cặp số hạng đứng liền kề dãy, số trước lớn số sau ta đổi chỗ chúng cho Việc lặp lại, khơng có đổi chỗ xảy GV đặt vấn đề: kết thúc việc tráo đổi? Khi tất HS thứ tự Vậy kết thúc việc so sánh? Trường hợp ví dụ nêu ta kết thúc việc đổi chỗ sau vòng duyệt kết thúc việc so sánh chưa? Chưa Ta phải tiếp tục so sánh dãy cần xếp lại phần tử vị trí a1 * Thuật tốn Ta có phiên mơ tả ban đầu thuật tốn sau: B1 Nhập số nguyên dương N dãy N số nguyên a1, a2, , aN B2 Đáy dãy N {M N} B3 Nếu độ dài dãy cần xếp nhỏ sang B6 B4 Làm cho phần tử lớn dãy a1, a2, , aN đặt vào cuối dãy B5 Dãy cần xếp tiếp tục dãy a1, a2, , aN-1 ; xác định lại dãy cần xếp có đáy M – {M M – 1} ; quay lại B3 B6 Kết luận dãy xếp Đến đây, ta diễn đạt rõ sau: B1 Nhập số nguyên dương N dãy N số nguyên a1, a2, , aN B2 M N B3 Nếu M < sang B6 B4 Làm cho phần tử lớn dãy a1, a2, , aN đặt vào cuối dãy B5 M M – 1; quay lại B2 B6 Kết luận dãy xếp Lúc tốn B4 phức tạp cần giải cụ thể GV gợi ý cho nhóm HS mơ tả thao tác theo ví dụ mơ 13 GV Cuối cùng, GV tổng hợp kết điều chỉnh phiên thứ theo hướng sau: B4 {Làm cho phần tử lớn dãy a1, a2, , aN đặt vào cuối dãy} B4.1 Đặt i {Xác định số phần tử cần xét} B4.2 Nếu > ai+1 tráo đổi (ai , ai+1) B4.3 Điều chỉnh giá trị i i+1 , quay lại B4.2 GV đặt vấn đề: Với cách giải trên, ngừng tăng giá trị i để việc so sánh tráo đổi kết thúc? Khi thay đổi giá trị i , ta quan tâm i có vượt ngưỡng M chưa tức i hay chưa qua hết dãy số cần xếp (i >M ?) Tuy nhiên, i = M ta có phần tử cuối cùng, khơng thực B4.2 khơng tồn ai+1 Do đó, ta cần đối chiếu i với M – 1, i > M – kết thúc việc so sánh Như B4 thuật toán điều chỉnh sau: B4.1 Đặt i {Xác định số phần tử cần xét} B4.2 i > M – sang B5 B4.3 Nếu > ai+1 tráo đổi (ai , ai+1) B4.4 Điều chỉnh giá trị i i+1 , quay lại B4.2 Tiếp tục xem xét thuật toán B4 vấn đề cần phải tinh chế cụ thể Ở B4.3 thao tác cần làm rõ tráo đổi(ai , ai+1) Vậy làm để tráo đổi vị trí chỗ ngồi HS cho nhau? GV tạo tình u cầu HS nhóm đổi vị trí chỗ ngồi cho (tối thiểu lần) yêu cầu lớp quan sát đưa trình tự bước đổi chỗ Như vậy, B4.3 thể rõ sau: B4.3 { Nếu > ai+1 tráo đổi (ai , ai+1) } B4.3.1 tam B4.3.2 ai+1 B4.3.3 ai+1 tam Thuật tốn hồn chỉnh cho toán: B1 Nhập số nguyên dương N dãy N số nguyên a1, a2, , aN B2 M N B3 Nếu M < sang B6 B4 Làm cho phần tử lớn dãy a1, a2, , aN đặt vào cuối dãy B4.1 Đặt i {Xác định số phần tử cần xét} B4.2 i > M – sang B5 B4.3 Nếu > ai+1 tráo đổi (ai , ai+1) B4.3.1 tam B4.3.2 ai+1 B4.3.3 ai+1 tam B4.4 Điều chỉnh giá trị i i+1 , quay lại B4.2 B5 M M – 1; quay lại B2 B6 Kết luận dãy xếp * Mô phỏng: 14 Do sáng kiến kinh nghiệm có quy định giới hạn số trang nên tơi khơng trình bày chi tiết phần mơ thuật tốn mà đưa tệp chương trình dùng để mơ thuật tốn sau: Chương trình mơ phỏng\Sapxep.ppsx Chương trình mơ phỏng\sap xep trao doi.exe (Các chương trình đực tơi gửi kèm theo SKKN) VD5: Bài tốn tìm kiếm Cho dãy A gồm N số nguyên khác a1, a2, , aN số nguyên k Cần biết có hay khơng có số i (1 ≤ i ≤ N) mà a i = k Nếu có cho biết số Số nguyên k gọi khóa tìm kiếm (gọi tắt khóa) * Xác định toán - Input: Dãy A gồm N số nguyên khác a1, a2, , aN số nguyên k - Output: Chỉ số i mà = k thông báo khơng có số hạng dãy A có giá trị k * Ý tưởng GV giả sử chiều cao bạn lớp khác Các em tìm xem có bạn cao 1m50 hay khơng? Nếu có ngồi vị trí nào? HS dễ dàng tìm phương pháp đo bạn lớp vị trí ngồi Nếu bạn cao 1m50 vị trí bạn thơi khơng đo nữa, ngược lại ta tiếp tục đo bạn ngồi xem có cao 1m50 hay khơng Trường hợp đo hết bạn lớp mà khơng có cao 1m50 thơng báo khơng có bạn cao 1m50 lớp Từ GV cho HS nêu ý tưởng thuật toán sau: Tìm kiếm thực cách tự nhiên Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng xét với khóa gặp số hạng khóa dãy xét hết khơng có giá trị khóa Trong trường hợp thứ hai dãy A khơng có số hạng khóa * Thuật tốn GV yêu cầu HS nêu bước dễ hiểu thực mà khơng cần phải lý giải thêm.Ta có phiên mơ tả ban đầu thuật toán với bước đơn giản ban đầu sau: B1 Nhập số nguyên dương N , dãy N số nguyên a1, a2, , aN khóa k B2 So sánh giá trị phần tử a1 với khóa k B3 Nếu a1 = k thơng báo số i = kết thúc, khơng sang B4 Dựa theo ý tưởng thuật tốn, bước làm gì? HS thảo luận nhóm đưa B4 sau: B4 Tiếp tục so sánh phần tử với khóa k - Nếu tồn = k thơng báo số i kết thúc - Nếu khơng kết luận dãy A khơng có giá trị khóa k kết thúc Ở bước B4, việc mơ tả cần phân tích cụ thể Ta cần làm rõ để thực tham chiếu đến phần tử để so sánh Ở việc so sánh phần tử với khóa k tương tự với việc làm B2 15 B3 với số i thay đổi (1< i ≤ N), tức ta sử dụng số i thay đổi tăng dần để lấy giá trị dãy A để so sánh Vấn đề ngừng việc so sánh phần tử với khóa k kết luận khơng tồn giá trị khóa k dãy? Khi số i > N Thuật toán cụ thể sau: B1 Nhập số nguyên dương N , dãy N số nguyên a1, a2, , aN khóa k B2 Đặt i 1; {Xác định số phần tử đầu tiên} B3 Nếu = k thơng báo số i sang B5 B4 {Tiếp tục so sánh phần tử với khóa k} B4.1 Cho i i + 1; B4.2 Nếu i > N dãy A khơng có giá trị khóa k chuyển sang B5 B4.3 Quay lại B3 B5 Kết thúc * Mô phỏng: Tệp chương trình mơ phỏng: Chương trình mơ phỏng\TimKiemTT.ppsx Chương trình mơ phỏng\timkiemtuantu.exe VD5: Bài tốn tìm kiếm nhị phân Cho dãy A tăng dần gồm N số nguyên khác a1, a2, , aN số nguyên k Cần biết có hay khơng số i (1 ≤ i ≤ N) mà a i = k Nếu có cho biết số * Xác định toán - Input: Dãy A gồm N số nguyên khác a1, a2, , aN số nguyên k - Output: Chỉ số i mà = k thơng báo khơng có số hạng dãy A có giá trị k *Ý tưởng GV cho HS chơi trò chơi đốn số sau: Tình 1: Một HS A nghĩ đầu số tự nhiên phạm vi giá trị từ đến 10 Một HS B đoán xem số A nghĩ cách đặt khơng q câu hỏi với đáp án mà A trả lời sai, từ suy luận đáp án GV hướng HS vào việc đoán số câu hỏi: số có lớn (hay nhỏ hơn) số hay khơng? Phương án đưa cho tình là: - B: Số có lớn khơng? A: có - B: Số có nhỏ khơng? A: có - B: Số có nhỏ khơng? A: khơng B kết luận số A nghĩ Tình 2: A nghĩ đầu số tự nhiên phạm vi giá trị từ đến 100 B hỏi không câu hỏi với đáp án A trả lời sai, B trả lời đáp án suy nghĩ A 16 Tương tự cách suy luận tình 1, ta có phương án suy luận tiến đến kết sau (tập ban đầu có 100 phần tử, xếp thứ tự tăng dần): - Sau lần hỏi 1, ta giữ lại tối đa 50 số để tìm kiếm - Sau lần hỏi 2, ta giữ lại tối đa 25 số để tìm kiếm - Sau lần hỏi 3, ta giữ lại tối đa 13 số để tìm kiếm - Sau lần hỏi 4, ta giữ lại tối đa số để tìm kiếm - Sau lần hỏi 5, ta giữ lại tối đa số để tìm kiếm - Sau lần hỏi 6, ta giữ lại tối đa số để tìm kiếm - Sau lần hỏi 7, ta giữ lại số để tìm kiếm số cần trả lời Tức số lượng phần tử sau lần hỏi giảm nửa so với số lượng trước Việc thực tìm kiếm giúp giảm thiểu số lần thực phép so sánh so với thuật tốn tìm kiếm Thơng qua trò chơi, GV nêu ý tưởng thuật tốn sau: Ta tìm cách thu hẹp nhanh phạm vi tìm kiếm sau lần so sánh khóa với số hạng chọn Để làm điều đó, ta chọn số hạng agiua “giữa dãy” để so N 1 sánh với k, Giua = Khi xảy ba trường hợp sau: TH1 Nếu agiua = k Giua số cần tìm Việc tìm kiếm kết thúc TH2 Nếu agiua > k dãy A dãy xếp nên việc tìm kiếm xét dãy a1, a2, , aGiua-1 (phạm vi tìm kiếm khoảng nửa phạm vi tìm kiếm trước đó) TH3 Nếu agiua < k thực tìm kiếm dãy aGiua+1, aGiua+2, , aN Quá trình lặp lại số lần tìm thấy khóa k dãy A phạm vi tìm kiếm rỗng * Thuật toán Thuật toán ban đầu: B1 Nhập N, số hạng a1, a2, , aN số nguyên k; B2 So sánh k với số dãy B3 Nếu thơng báo số kết thúc; B4 Nếu khơng tiếp tục kiểm tra k với nửa dãy lại chứa k; B5 Nếu hết phần tử cần kiểm tra thơng báo không tồn k dãy sang B7; B6 Quay lên B3 B7 Kết thúc Dễ thấy, bước B2 cần cho thấy rõ số đoạn dãy để thực Dau Cuoi phép so sánh, tức chia đôi số lượng phần tử công thức Ta phân tích bước B2 sau: B2.1 Đặt Dau , Cuoi N ; Dau Cuoi ; B2.2 Giua Bước B3 mô tả rõ ràng hơn: 17 Nếu aGiua = k thơng báo số Giua, chuyển sang B7; Ở bước B4 cần hướng cho HS suy nghĩ đến việc xác định đoạn lại tiếp tục xét đến aGiua khác khóa k HS xem xét cách đối chiếu giá trị aGiua với k qua hai trường hợp: B4.1 Nếu aGiua > k đặt Cuoi = Giua – sang B5 B4.2 Nếu aGiua < k đặt Dau = Giua + sang B5 Bước B5 mô tả cụ thể hơn: Nếu Dau > Cuoi thơng báo dãy cho khơng só số hạng có giá trị k, sang B7; Thuật tốn hồn chỉnh cuối là: B1 Nhập N, số hạng a1, a2, , aN số nguyên k; B2 {So sánh k với số dãy} B2.1 Đặt Dau , Cuoi N; Dau Cuoi ; B2.2 Giua B3 Nếu aGiua = k thơng báo số Giua, sang B7 B4 {Nếu phần tử tiếp tục kiểm tra k với nửa dãy lại ;} B4.1 Nếu aGiua > k đặt Cuoi = Giua – sang B5; B4.2 Nếu aGiua < k đặt Dau = Giua + sang B5; B5 Nếu Dau > Cuoi thơng báo dãy cho khơng có số hạng chứa giá trị k, sang B7; B6 Quay lên B3 B7 Kết thúc GV cần so sánh độ phức tạp thực phép tính thuật tốn tìm kiếm nhị phân so với thuật tốn tìm kiếm nhằm giúp HS biết cách lựa chọn thuật toán tối ưu để giải vấn đề * Mơ phỏng: Tệp chương trình mơ phỏng: Chương trình mơ phỏng\tim kiem nhi phan.exe Hiệu sáng kiến kinh nghiệm Với nghiên cứu nêu trên, tiến hành giảng dạy lớp khối 10 trường THPT Cẩm Thủy năm học 2018-2019 có mời Ban giám hiệu, tổ chun mơn đồng nghiệp dự số tiết Sau thao giảng có tổ chức họp rút kinh nghiệm Kết nhận sau: Học sinh hào hứng tiết dạy Hầu hết em tập trung suy nghĩ giải tình mà giáo viên đưa hăng say phát biểu ý kiến xây dựng Đa số ý kiến mà em phát biểu nội dung kiến thức Khơng có học sinh làm việc riêng Lớp học có khơng khí sơi nổi, em chủ động, tích cực nhiều việc nắm bắt kiến thức Các em tự viết thuật toán để giải toán đưa Bên cạnh đó, em thấy lợi ích tư tưởng “chia để trị” học thuật toán 18 nói riêng học lập trình nói chung Tư tưởng áp dụng cho nhiều vấn đề sống Chất lượng kiểm tra học kỳ khối 10 phần thuật toán nâng lên đáng kể so với năm học trước Tôi chưa kiểm định chất lượng học thuật toán tất em đến năm học sau em học ngơn ngữ lập trình Nhưng chun đề thực từ đầu năm học đến cuối năm học chọn số học sinh lớp 10 để làm nguồn bồi dưỡng cho đội tuyển HSG sang năm, đề kiểm tra chọn đội tuyển việc xây dựng thuật toán để giải tốn mơ thuật tốn liệu cụ thể thu kết khả quan Các em nắm thuật tốn tơi dạy tốt số em hình thành tư thuật toán để giải toán tương tự hay khó Và tất cả, mà tơi nhận sau thực chuyên đề em u thích mơn Tin học Đồng nghiệp lãnh đạo đơn vị ghi nhận đánh giá cao chủ đề dạy học Sáng kiến kinh nghiệm đồng nghiệp trường sử dụng giảng dạy lớp bồi dưỡng học sinh giỏi (phần kiến thức bản) hiệu III KẾT LUẬN, KIẾN NGHỊ Kết luận Từ kết qua thu đề tài, nhận thấy việc đổi dạy học mang lại hiệu cao phải tốn nhiều công sức Điều đòi hỏi giáo viên phải kiên trì, tích cực học hỏi, trao đổi kinh nghiệm lẫn việc đổi phương pháp dạy học để nâng cao chất lượng dạy học Trên suy nghĩ tìm tòi tơi q trình giảng dạy Tôi đồng nghiệp áp dụng sáng kiến kinh nghiệm vào công tác giảng dạy Tin học khối 10 năm nhằm nâng cao hiệu chất lượng dạy học Trong trình bày khơng tránh khỏi thiếu sót, tơi mong góp ý, nhận xét đồng chí đồng nghiệp ban giám khảo để đề tài sáng kiến kinh nghiệm tơi hồn chỉnh Kiến nghị Tôi xin đề xuất kiến nghị sau: Sở GD&ĐT, lãnh đạo nhà trường, tổ chuyên môn nên tổ chức thêm Hội thảo đổi phương pháp dạy học trang bị thêm tài liệu liên quan cho giáo viên tiện tham khảo Cần kêu gọi tổ chức thành phong trào thi đua việc đổi phương pháp nâng cao chất lượng dạy học để giáo viên hào hứng đam mê thực công việc Tôi xin chân thành cảm ơn! 19 XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ Thanh Hóa, ngày 15 tháng 05 năm 2019 Tơi xin cam đoan SKKN viết, không chép nội dung người khác Người thực hiện: Lưu Thị Can 20 ... dụng sáng kiến kinh nghiệm Trong trình dạy học tơi tìm hiểu vướng mắc khó khăn học sinh học phần tốn thuật toán Phần nhiều học sinh chưa học tin học cấp 2, số lại học tin học học theo chương... Nghiên cứu kỹ thuật tinh chế bước xây dựng thuật tốn, kỹ thuật mơ thuật tốn Nghiên cứu thực tiễn: Khảo sát lực học sinh học toán thuật toán lớp 10 khả vận dụng để xây dựng thuật toán học lập trình... thuật toán kĩ thuật tinh chế giúp học sinh hiểu thuật toán dễ dàng hiểu đường xây dựng thuật toán; tạo hội thuận lợi để giáo viên rèn luyện bồi dưỡng cho học sinh cách suy nghĩ, hoạt động tư phân