Hình thành và phát triển khả năng tư duy thuật toán là một trong các mục tiêu của môn Tin học ở phổ thông. Có một khoảng trống về mặt thể hiện tri thức, ngầm diễn ra trong tư duy, giữa phần nêu ý tưởng thuật toán và phần mô tả thuật toán. Bài báo đề xuất một phương pháp tiếp cận mô tả thuật toán mà dựa vào đó, giáo viên có thể dẫn dắt học sinh phân tích, tìm tòi các thao tác quan trọng để hiểu và mô tả được thuật toán.
JOURNAL OF SCIENCE OF HNUE FIT., 2013, Vol 58, pp 157-168 This paper is available online at http://stdb.hnue.edu.vn PHƯƠNG PHÁP PHÁT TRIỂN TƯ DUY THUẬT TOÁN CHO HỌC SINH PHỔ THÔNG TRÊN CON ĐƯỜNG TỪ Ý TƯỞNG ĐẾN MÔ TẢ THUẬT TỐN Nguyễn Chí Trung Khoa Cơng nghệ thơng tin, Trường Đại học Sư Phạm Hà Nội E-mail: trungnc@hnue.edu.vn Tóm tắt Hình thành phát triển khả tư thuật tốn mục tiêu mơn Tin học phổ thơng Có khoảng trống mặt thể tri thức, ngầm diễn tư duy, phần nêu ý tưởng thuật toán phần mơ tả thuật tốn Bài báo đề xuất phương pháp tiếp cận mơ tả thuật tốn mà dựa vào đó, giáo viên dẫn dắt học sinh phân tích, tìm tịi thao tác quan trọng để hiểu mơ tả thuật tốn Từ khóa: Tư thuật tốn, mơn Tin học, thuật tốn Mở đầu Xét toán đơn giản sau: Bài toán Hãy tính S tổng bình phương n số tự nhiên Cách trình bày thuật tốn giải tốn này, giống cách trình bày thuật toán hầu hết tài liệu khác thuật toán, kể sách giáo khoa Tin học lớp 10 [1], gồm phần sau đây: Phần 1: Xác định toán Input: số tự nhiên n Output: S giá trị biểu thức 12 + 22 + + n2 Phần 2: Tìm ý tưởng thuật toán Khởi tạo S ←− Lần lượt với i từ đến n, cộng dần giá trị i2 vào cho S Phần 3: Mơ tả thuật tốn Bước Nhập số n; Bước S ←− 0; i ←− 0; Bước i ←− i + 1; Bước Nếu i > n đưa tổng S kết thúc; Bước S ←− S + i2 ; Quay bước 3; Rõ ràng ý tưởng thuật tốn dễ hiểu, mơ tả thuật tốn thường làm học sinh khó hiểu với câu hỏi như: Tại lại gán i i + 1?, Tại gán 157 Nguyễn Chí Trung S S + i2 ?, Tại phải tăng i lên đơn vị để cộng dần i2 vào S? Liệu thay dãy bước từ đến bước với cách viết dễ hiểu sau không? Bước 3: S = 12 + 22 + + n2 = n i2 (*) i=1 Những thắc mắc học sinh cố gắng hiểu mơ tả thuật tốn cho thấy có khoảng trống lớn mặt thể tri thức, ngầm diễn tư duy, chuyển từ phần nêu ý tưởng thuật toán sang phần mơ tả thuật tốn Khoảng trống cần lấp đầy tư thuật tốn góc độ tin học Với nhiệm vụ biến tri thức giáo khoa thành tri thức dạy học, người thầy phải dạy cho học sinh đường tư để từ ý tưởng thuật tốn, học sinh hiểu xây dựng mơ tả thuật tốn giải tốn cho Nguyễn Bá Kim bàn “Dạy học qui tắc, phương pháp” dạng hoạt động để phát triển tư cho học sinh, không đề cập đến việc vận dụng dạng hoạt động để hướng dẫn học sinh cách tư “khoảng trống” nói [2] Lê Khắc Thành ý đến việc rèn luyện cho học sinh hoạt động trí tuệ, chưa rõ phương cách cụ thể để rèn luyện cho học sinh tư thuật toán [3] Knuth, D E so sánh mối quan hệ tư thuật toán tư tốn học, khơng đề cập đến việc hướng dẫn người học tư xây dựng thuật toán [4] Theo Gerald Futschek [5], tư thuật toán kết nối lực tư theo cách để hiểu xây dựng thuật toán, bao gồm: - Năng lực phân tích tốn cho; - Năng lực xác định xác tốn; - Năng lực tìm thao tác tương ứng với toán cho; - Năng lực xây dựng thuật tốn xác để giải toán cho cách sử dụng thao tác bản; - Năng lực tư tất trường hợp bình thường đặc biệt xảy tốn; - Năng lực nâng cao hiệu thuật toán Hai lực giúp học sinh thực tốt nhiệm vụ “Xác định toán” Các lực lại giúp học sinh hiểu làm tốt nhiệm vụ “Mơ tả thuật tốn” Trong đó, lực xem lực tư giúp học sinh xây dựng thuật toán đảm bảo tính đắn tính hiệu quả; lực xem lực tìm thao tác để mơ tả thuật toán giải toán Gerald đề nghị nên dùng tốn khó phát biểu tốn dễ hiểu để rèn luyện tư thuật toán cho người học, chọn tốn “Tìm đường mê cung” để phân tích q trình tìm thuật tốn đắn thơng qua q trình tối ưu hóa “cách đi” (thao tác bản) để thoát khỏi mê cung Bài báo tập trung vào lực và đề nghị hướng khác: Thứ xem xét tất toán từ dễ đến khó để phù hợp cho tất trình độ người học; Thứ hai không chọn cách tối ưu dần thao tác mà đề xuất số thao tác cố định (khái niệm mới) tìm cách dùng chúng để mơ tả thuật toán dựa 158 Phương pháp phát triển tư thuật tốn cho học sinh phổ thơng ý tưởng thuật tốn Hướng tiếp cận hình thành đường cho học sinh tư để hiểu xây dựng thuật toán, nhằm lấp đầy khoảng trống phần nêu ý tưởng thuật tốn phần mơ tả thuật toán 2.1 Nội dung nghiên cứu Dạy cho học sinh cảm nhận cách “tư duy” máy tính Khơng thể dạy cho học sinh phổ thơng kiến thức Kiến trúc tập lệnh (Instruction set architecture), hình ảnh trừu tượng hệ thống tính tốn nhìn từ góc độ lập trình viên sử dụng ngôn ngữ máy (hay hợp ngữ) [6] Nhưng hiểu vấn đề hiểu rõ cách mà máy tính “tư duy” để thực thuật toán giải toán, biết cách diễn tả thuật tốn Mâu thuẫn dẫn đến khó hiểu cách viết thao tác mơ tả thuật tốn dường bị áp đặt lên học sinh Bởi vậy, hội được, giáo viên cần dạy cho học sinh cảm nhận cách tư máy tính Cơ hội trả lời câu hỏi dạng “Tại gán x x + 1?” Thao tác gán thao tác đặc trưng, gặp thường xuyên thuật tốn tin học, khơng thể giải thích dựa vào phép tốn thơng thường tốn học Học sinh phải hiểu thao tác gán x ←− x + thực theo thứ tự: giá trị biểu thức bên phải phép gán tính tốn trước, sau giá trị gán cho biến bên trái phép gán Như giá trị x vế phải khác với giá trị x vế trái (các giá trị tương ứng giá trị x trước sau thực thao tác gán) Trong ngôn ngữ lập trình Pascal, kí hiệu ←− thay kí pháp :=, máy tính thực thao tác gán x := x + theo thuật toán sau: Bước Tìm địa biến x biểu thức bên phải lấy giá trị x; Bước Tính giá trị biểu thức bên phải; Bước Tìm lại địa biến x bên trái để lưu kết vừa tính Ta gọi thao tác bước thao tác nguyên tố, nghĩa thao tác nhỏ (không thể phân chia thành thao tác khác) mà phần tử vật lí thực chức tính tốn máy tính “hiểu” thực Phép gán x ←− x + ngôn ngữ C/C++ viết x++ máy tính thực thao tác gán thông qua thao tác nguyên tố sau đây: Bước Tìm địa biến phép gán để lấy giá trị; Bước Tăng giá trị lên đơn vị; Bước Đặt giá trị vào địa biết Trở lại Bài toán 1, cách viết (*) phản ánh cách tư quen thuộc toán học, S biểu diễn tốn học tổng bình phương phần tử từ đến n Cách viết từ bước đến bước phản ánh cách tư tin học, chúng phù hợp với kiến trúc vật lí thực chức tính tốn máy tính, chúng dãy thao tác dễ chuyển đổi thành chương trình viết dạng ngơn ngữ lập trình Đây hội thứ hai để giáo viên giải thích cho học sinh biết “Tại phải tăng i lên đơn vị để cộng dần i2 vào S?” Máy tính hiểu 159 Nguyễn Chí Trung tổng có số hạng hồn tồn xác định, ví dụ 12 + 22 + 32 + 42 + 52 , khơng thể hiểu tổng có số hạng biểu thị cách trừu tượng dạng 12 + 22 + + n2 Vì biểu thức tổng dạng (*) phải phân tích thành n tổng có số hạng xác định, nghĩa là: Bước 3: S ←− S + i2 , i = 1, 2, , n; (**) Cách viết (**) phản ánh gần giống cách tư tin học cách viết tóm tắt dãy bước từ đến 2.2 Dạy cho học sinh biết sử dụng “thao tác sở” để mô tả thuật toán Để ý thấy thuật toán giải toán xuất số thao tác sau đây: - Thao tác nhập: nhập giá trị cho biến - Thao tác xuất: đưa ra giá trị biến - Thao tác gán: gán giá trị biểu thức cho biến, có dạng: ←− ; - Thao tác chuyển: chuyển đến bước phía trước phía sau bước - Thao tác kiểm tra: thực thao tác dạng "Nếu P Q"; P mệnh đề có hai giá trị sai, Q thao tác (có thể thao tác kiểm tra khác) Ta gọi thao tác thao tác sở chung Ví dụ, Bài tốn 1, giáo viên u cầu học sinh sử dụng thao tác sở chung để mơ tả thuật tốn giải tốn Ngồi thao tác sở chung, tốn cịn có thao tác sở riêng nó, ta gọi chúng thao tác sở riêng Cả hai loại thao tác gọi chung thao tác sở, định nghĩa sau: Định nghĩa Thao tác sở thao tác nhỏ nhất, dùng để diễn tả bước thuật toán biểu thị khả hiểu thực tác nhân tương ứng Trong định nghĩa trên, từ nhỏ hiểu thao tác sở khơng thể phân chia thành thao tác sở khác (nhưng phân chia thành thao tác nguyên tố) Tác nhân đối tượng, ví dụ người, máy tính hay “máy” có khả hiểu thực thuật tốn mơ tả Cụm từ tác nhân tương ứng nhằm nhấn mạnh thao tác sở thuật toán phải khơng vượt q “năng lực trình độ” tác nhân, nghĩa tác nhân hiểu thực chúng Bài toán sau minh họa tốn có thao tác sở riêng cách sử dụng thao tác sở để mơ tả thuật tốn Bài tốn Giả sử máy tính thực thao tác cộng hai số nguyên dương, không thực thao tác trừ Hãy bước hướng dẫn máy tính tính giá trị biểu thức a – b với a b hai số nguyên dương nhập vào, a > b? Ý tưởng thuật toán: gọi c hiệu a trừ b, ta có c = a – b ←→ a = b + c Khi đó, 160 Phương pháp phát triển tư thuật toán cho học sinh phổ thông đặt s = b + c s = a Vậy ta bắt đầu với c = 0, s = b, tăng đơn vị cho c để tính lại s = b + c, (hoặc s c đồng thời tăng dần đơn vị) đến s a đương nhiên giá trị thu c hiệu cần tìm Tìm cách mơ tả thuật tốn: Ta thấy lời giải tốn (hay thuật tốn) trình bày phương tiện cách thức Phương tiện thao tác sở chung thao tác sở riêng toán (thao tác cộng) Cách thức phán đoán, suy luận để lựa chọn thao tác sở, tìm cách viết chúng theo thứ tự thích hợp để diễn tả lời giải tốn Nói cách khác, có đường để mơ tả thuật tốn, sử dụng thao tác sở để diễn tả bước thuật tốn Một mơ tả thuật tốn giải tốn trình bày Bảng đây: Bước 2.3 Bảng Mơ tả thuật tốn giải tốn Thao tác chọn Sử dụng thao tác Nhập Nhập a b; Gán c ←− 0; s ←− b; Nếu s = a đưa giá trị c kết Kiểm tra xuất thúc; Cộng, gán chuyển c ←− c + 1; s ←− b + c; Quay bước 3; Dạy cho học sinh biết xây dựng “thao tác bản” để mô tả thuật toán Trong nhiều toán, dùng thao tác sở để mơ tả thuật tốn thuật tốn dài dịng khó hiểu Bài toán minh họa nhu cầu phải xây dựng thêm thao tác để mô tả thuật toán ngắn gọn, dễ hiểu Bài toán Biết máy tính thực thao tác cộng Hãy bước hướng dẫn máy tính tính giá trị biểu thức s = (a - b) + (b - c) + (c - d) + (d - e), với a, b, c, d, e số nguyên dương cho trước a > b > c > d > e Ý tưởng thuật toán: Dựa vào thuật toán giải toán 2, ta khởi tạo s 0, mô tả thuật tốn tính hiệu cộng dần kết vào cho biến s Tìm cách mơ tả thuật toán: Theo ý tưởng thuật toán nêu, rõ ràng ta phải lặp lại việc mơ tả thuật tốn tính hiệu Để tránh phải viết mơ tả thuật tốn dài dịng, trước hết ta hướng dẫn máy tính cách sử dụng thao tác sở để thực thao tác trừ hai số nguyên dương Ta gọi số nguyên dương tham số Hướng dẫn "đóng gói" mơ tả thuật tốn độc lập, giải toán độc lập (bài toán thực phép trừ) Ta xem gói thao tác sở để sử dụng lại nhiều lần mơ tả thuật tốn giải u cầu tốn nêu Ta gọi gói thao tác Có thể định nghĩa thao tác sau: Định nghĩa Một thao tác thao tác xây dựng từ thao tác sở, mơ tả thuật tốn giải tốn độc lập, đóng gói thành thao tác để sử dụng thao tác sở 161 Nguyễn Chí Trung Một thao tác “đóng gói” theo dạng Hình đây: Định nghĩa thao tác : Input: tham số; Output: thơng tin cần đưa ra; Thuật tốn: Các thao tác sở để tìm output từ input Hình Đóng gói thao tác Mơ tả thuật tốn tính biểu thức s Bảng sau đây: Bước I II Bảng Mơ tả thuật tốn giải toán Thao tác chọn Sử dụng thao tác Xây dựng thao tác Định nghĩa thao tác trừ: x - y Input: x, y; Output: z hiệu x - y; Thuật toán: Gán z ←− 0; h ←− y; Kiểm tra xuất Nếu h = x đưa z kết thúc; Cộng, gán chuyển z ←− z + 1; h ←− y + z; quay bước 3; Thuật tốn Nhập Nhập a, b, c, d, e; Gán s ←− a - b; Trừ, cộng gán h ←− b - c; s ←− s + h; Trừ, cộng gán h ←− c - d; s ←− s + h; Trừ, cộng gán h ←− d - e; s ←− s + h; Xuất Đưa giá trị s Nhận xét 1: Ta thấy phép nhân qui dãy phép cộng, ví dụ × = + + + Phép chia nguyên qui dãy phép cộng, phép trừ hai phép kiểm tra, ví dụ xét phép chia : 3, ta có + = < 7, + + = > 7, (tổng số 3) cộng với (hiệu - 6) Vậy : dư Từ nhận xét này, tương tự tốn 3, học sinh xây dựng ba thao tác trừ, nhân chia, sau vận dụng thao tác sở thao tác để tính giá trị biểu thức theo thứ tự ưu tiên phép tốn tốn học 2.4 Dạy cho học sinh biết hình thành “thao tác tổng hợp” để mô tả thuật toán Trên toán đơn giản Đối với tốn khó Bài tốn đây, học sinh cần xây dựng thêm thao tác mới, khó q trình hình thành mơ tả thuật toán 162 Phương pháp phát triển tư thuật tốn cho học sinh phổ thơng Bài tốn 4: Xét trị chơi "Xoay vịng" có cấu Hình 2a đây, có hai vịng xoay X Y hình chữ nhật, chung dây MN Mỗi vịng xoay chiều ngược chiều kim đồng hồ số vị trí (nấc) Ví dụ, vịng X xoay vị trí theo chiều kim đồng hồ ta thu trạng thái Hình 2b Hãy hướng dẫn máy tính cách xoay vịng cho thỏa mãn yêu cầu: (1) đưa kí tự "*" vào dây MN, (2) đưa chữ số vào vòng X, chữ vào vòng Y, (3) kí tự chữ số chữ thứ tự Hình 2c * Giải yêu cầu Ý tưởng thuật toán: Lần lượt đưa kí tự “*” Y (tính dây MN) vị trí Y, đổi chỗ với vị trí X, quay X theo chiều kim đồng hồ vị trí để chuyển kí tự “*” đến vị trí X Cứ làm vậy, đến X quay vịng tất kí tự “*” chuyển sang X cách liên tục vị trí 2, 3, 4, 5, Bây ta việc quay ngược chiều kim đồng đồ vịng X vị trí để chuyển dãy “*” sang dây MN Tìm cách mơ tả thuật tốn giải u cầu 1: Trước hết ta cần xác định thao tác sở riêng tốn Từ cách xoay hình cho, ta thấy có thao tác sở kí hiệu giải thích sau: thao tác X(k): xoay vịng X k vị trí theo chiều kim đồng hồ (nếu k > 0) ngược chiều kim đồng hồ (nếu k < 0); Y(k): xoay vòng Y k vị trí, chiều hay ngược chiều kim đồng hồ tương ứng với k > hay k < Theo ý tưởng thuật toán đây, để thuận lợi cho việc mơ tả thuật tốn, ta cần xây dựng thêm hai thao tác sau đây: - SW11: thao tác đổi chỗ hai kí tự vị trí tương ứng hai vịng X Y Có thể suy SW11 = X(-1); Y(1); X(1), Y(-1) - Tìm vị trí kí tự “*” Y: thao tác cho biết vị trí kí tự "*" vòng Y, qui ước vị trí khơng tìm thấy kí tự “*” Y Thao tác xây dựng từ thao tác sở chung Thuật tốn biểu thị thao tác thuật tốn tìm kiếm - thuật toán sách giáo khoa tin học lớp 10 Có thể trình bày sơ lược thao tác mô tả thuật toán để giải yêu cầu sau: i) Lặp q trình sau cịn kí tự “*” vịng Y: - Tìm vị trí kí tự “*” Y gán cho k; - Nếu k = thực hai thao tác SW11 X(1) để chuyển kí tự “*” sang vị trí 163 Nguyễn Chí Trung 1, sang vị trí vịng X; - Nếu k ≤ (tức kí tự * khơng thuộc dây MN) thực dãy thao tác Y(k-1); SW11; X(1) để chuyển kí tự “*” đến vị trí vịng Y, vị trí 1, vị trí vịng X; - Nếu ≤ k ≤ 12 (tức kí tự “*” nằm dây MN) thực dãy thao tác Y(-(k-7)); SW11; X(1) để chuyển kí tự “*” đến vị trí bước 1.3; ii) Thực thao tác X(-6) để chuyển dãy kí “*” sang dây MN * Giải yêu cầu Ý tưởng thuật toán: Tiến hành đổi chỗ tất cặp kí tự (chữ X, chữ số Y) cho giữ nguyên dây MN Liệu ý tưởng có thực khơng? Câu hỏi trả lời nhờ việc phân tích sâu tìm cách mơ tả thuật tốn thể ý tưởng nêu Tìm cách mơ tả thuật tốn giải yêu cầu 2: Sau đưa kí tự “*” vào dây MN, ta suy nghĩ cách chuyển chữ số sang vòng X chữ sang vịng Y Chỉ có chỗ “bế tắc” hướng giải quyết, xoay vòng X Y để đưa kí tự đến vị trí mong muốn đó, kí tự khác bị thay đổi vị trí so với vị trí mà trước ta chuyển đến, ta mong đợi đứng cố định Vậy ta phải tìm thao tác mà có khả đổi chỗ số vị trí cấu hình cho phần trọng cấu hình phải giữ nguyên Phần không cần trọng cấu hình dây MN đổi chỗ kí tự “*” dây MN giữ nguyên tính chất “dây MN bao gồm kí tự ‘*’ ” Theo ý tưởng thuật tốn, ta mong muốn có thao tác, kí hiệu XY(i,j), có khả đổi chỗ kí tự vị trí i vịng X với kí tự vị trí j vịng Y, cho, trừ đoạn chung MN, kí tự lại vòng X Y giữ nguyên Các thao tác X(k), Y(k) SW11 không đủ để xây dựng XY(i,j) Bằng đường suy diễn lùi, ta suy dãy thao tác cần xây dựng sau đây: - Thao tác đổi chỗ kí tự thứ i vịng X với kí tự vị trí vịng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: PX(i) = X(-i+1); SW11; X(i-1) - Thao tác đổi chỗ kí tự thứ j vịng Y với kí tự vị trí vịng X, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: PY(j) = Y(-j+1); SW11; Y(j-1) - Thao tác đổi chỗ kí tự thứ i vịng X với kí tự thứ j vòng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: XY(i, j) = PX(i); PY(j); SW11; PX(i); PY(j) Bây mơ tả thuật tốn giải u cầu diễn đạt sơ lược sau: Lặp q trình sau cịn tìm chữ X (hoặc cịn tìm chữ số Y) - Tìm vị trí i chữ vịng X - Tìm vị trí j chữ số vòng Y 164 Phương pháp phát triển tư thuật tốn cho học sinh phổ thơng - Thực thao tác XY(i, j) Nhận xét 2: Ta thấy thao tác PX(i), PY(i) xây dựng từ thao tác sở thao tác bản, ta gọi chúng thao tác tổng hợp Riêng thao tác XY(i,j) lại xây dựng từ thao tác từ thao tác tổng hợp khác, ta gọi thao tác tổng hợp Vậy ta định nghĩa thao tác tổng hợp cách đệ qui sau: Định nghĩa Nếu A xây dựng từ thao tác A thao tác tổng hợp Nếu B, C hai thao tác tổng hợp thao tác D xây dựng từ B C D thao tác tổng hợp Giống thao tác bản, thao tác tổng hợp đóng gói mơ tả thuật toán giải toán độc lập, chúng sử dụng thao tác sở để diễn tả bước thuật toán * Giải yêu cầu Ý tưởng thuật toán: Khi cấu hình trị chơi đạt đến trạng thái thỏa mãn yêu cầu 2, ta việc áp dụng thuật toán xếp lên đoạn từ vị trí đến vị trí vịng X vịng Y Tìm cách mơ tả thuật tốn giải u cầu 3: Để thực ý tưởng thuật toán nêu, ta cần đến thao tác có khả đổi chỗ hai kí tự vịng X (tương tự vòng Y) cho trừ đoạn MN, kí tự cịn lại cấu hình giữ ngun vị trí Tiếp tục phân tích, phán đốn suy diễn lùi, ta tìm thao tác tổng hợp sau đây: - Thao tác hoán đổi hai kí tự vị trí i j vịng X, cho trừ đoạn chung MN, kí tự lại X Y giữ nguyên: XX(i, j) = XY(i, j); XY(j,j); XY(i, j) - Thao tác hốn đổi hai kí tự vị trí i j vòng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: YY(i, j) = XY(i,j); XY(i,i); XY(i, j) Phần mơ tả thuật tốn giải u cầu trị chơi sau: - Sắp xếp tăng dần dãy X[1 7] Khi cần đổi chỗ sử dụng thao tác XX(i,j); - Sắp xếp tăng dần dãy Y[1 7] Khi cần đổi chỗ sử dụng thao tác YY(i,j) 2.5 Dạy cho học sinh lực tư trường hợp đặc biệt bình thường xảy thuật tốn * Xem xét lại yêu cầu trò chơi Giáo viên minh họa cho học sinh thấy q trình lặp chuyển hết kí tự "*" khỏi vịng Y xảy trường hợp mà kết chuỗi gồm kí tự "*" cạnh nhau, có kí tự "*" đứng tách riêng vị trí vị trí vịng X Do thao tác X(-6) khơng thể thu dây MN mong đợi Cách khắc phục đơn giản: Ngay vịng lặp, ta xử lí trường hợp đặc biệt sau: Nếu kí tự "*" vị trí 1, ta cho thực thao tác X(-2) đặt lại k = 9; Nếu kí tự "*" vị trí 7, ta cho thực thao tác X(2) đặt lại k = 12 165 Nguyễn Chí Trung * Xem xét lại yêu cầu trị chơi Giáo viên đề nghị học sinh kiểm tra lại thao tác XY(i,j) số vị trí đặc biệt Các em phát thao tác XY(i,j) không đạt ý đồ đổi chỗ (hoặc hai biến) i j Đây trường hợp riêng, cần thao tác đổi chỗ riêng Ví dụ i j 1, XY(i,j) = SW11 Tiếp theo, giáo viên nên cẩn thận dẫn dắt học sinh kiểm thử số trường hợp lại để phát thêm thao tác XY(i,j) j ≤ (với ≤ i ≤ 4), ta gọi trường hợp bình thường Việc xem xét trường hợp riêng khó (j ≥ 5) dẫn đến nhiều hướng giải quyết, chẳng hạn ta xây dựng thêm thao tác Y4j(j) để đổi chỗ kí tự xa vịng Y với kí tự vị trí thứ nhằm qui trường hợp bình thường Nhu cầu dẫn đến loạt thao tác tổng hợp như: SW77; PX7(i), PY7(j), XY7(i, j) Các thao tác tương tự thao tác SW11, PX(i), PY(j), XY(i,j) việc đổi chỗ thay dựa vào hai vị trí dựa vào hai vị trí vòng X vòng Y Nhờ thao tác này, giáo viên dẫn dắt học sinh suy cách xử lí trường hợp cịn lại i j * Xem xét lại yêu cầu trị chơi Khi xây dựng thành cơng thao tác đổi chỗ kí tự xa (j ≥ 5) với kí tự vị trí thứ vịng Y, giáo viên giúp học sinh khái quát hóa thành thao tác tổng hợp YY(i, j) để đổi chỗ hai phần tử vị trí i vị trí j vịng Y (tương tự thao tác XX(i,j)) mà ln xét đủ trường hợp đặc biệt 2.6 Định hướng vận dụng Đối với tốn cần mơ tả thuật toán thao tác sở, lần giáo viên cung cấp cho học sinh khái niệm thao tác sở yêu cầu em hoạt động tùy theo mức độ từ cao xuống thấp như: (1) dùng thao tác sở để mơ tả thuật tốn giải tốn; (2) giáo viên trình bày sai thứ tự bước thuật toán yêu cầu học sinh xếp lại cho đúng; (3) yêu cầu học sinh làm tập trắc nghiệm dạng “điền khuyết” “ghép nối” thao tác cần dùng bước tương ứng thuật toán Ví dụ, bảng mơ tả thuật tốn, giáo viên để trống cột “Thao tác chọn” vài chỗ cột “Sử dụng thao tác” yêu cầu học sinh điền vào chỗ trống cho Khi thành thạo việc phán đốn, suy luận để mơ tả thuật toán thao tác sở, học sinh biết cách xây dựng thao tác (mới) để mơ tả thuật tốn gọn gàng, sáng Giáo viên cần tạo tình thuật tốn mà thao tác nảy sinh cách tự nhiên, điển hình tình xuất nhiều đoạn mơ tả thuật toán giống Để rèn luyện cho học sinh biết xây dựng thao tác dùng chúng mơ tả thuật tốn, giáo viên thiết kế kiểu dạy học chương trình hóa theo đường thẳng (xem [2,3]) để bước dẫn dắt học sinh tiếp cận thuật tốn đích cần xây dựng Mỗi “liều” chương trình đề cập đến thao tác (nếu có) 166 Phương pháp phát triển tư thuật tốn cho học sinh phổ thơng “liều” cuối thuật tốn giải tốn Chỉ nên cho học sinh có trình độ từ mức trở lên tiếp cận với thao tác tổng hợp Bài tập loại nên phân hóa thành yêu cầu mà theo thứ tự thao tác tổng hợp hình thành cách tự nhiên, ví dụ Bài tốn Giáo viên thiết kế phương pháp dạy học chương trình hóa kiểu phân nhánh, nhánh sử dụng để đưa gợi ý dạng toán Các toán giúp học sinh dễ suy thao tác tổng hợp phức tạp, dùng để xây dựng thao tác tổng hợp phức tạp hơn, lại gần với ý tưởng thuật toán Các phương pháp dạy học tích cực “khám phá có hướng dẫn”, “dạy học dựa truy vấn”, “phát giải vấn đề”, áp dụng để rèn luyện cho học sinh dạng tập Các toán sách giáo khoa Tin học 10, THPT tốn mơ tả thuật tốn dựa loại thao tác Bảng sau đây: Stt Bảng Các loại thao tác cho thuật toán SGK Tin học 10 Bài toán, thuật tốn Loại thao tác cần sử dụng Tìm giá trị lớn Các thao tác sở chung dãy số nguyên Kiểm tra tính nguyên tố Các thao tác sở chung; Các thao tác sở số nguyên dương riêng (phép lấy căn, phép chia hết) Các thao tác sở chung; Các thao tác Bài toán xếp tráo đổi (tráo đổi hai số, đưa phần tử “nặng” vị trí cuối dãy xác định M) Bài tốn tìm kiếm Các thao tác sở chung Bài tốn tìm kiếm nhị phân Các thao tác sở chung Kết luận Mục tiêu môn Tin học, bậc phổ thông “nhằm cung cấp cho học sinh kiến thức phổ thông ngành khoa học tin học, hình thành phát triển khả tư thuật toán, lực sử dụng thành tựu ngành khoa học học tập lĩnh vực hoạt động sau này." Trên thực tế có giáo viên quan tâm nghiên cứu câu hỏi “Tư thuật tốn gì?” “Cần phải dạy học để rèn luyện phát triển tư thuật toán cho học sinh?” Bài báo thảo luận vấn đề đặt câu hỏi trình bày quan điểm dạy cho học sinh phương cách tư để chuyển hóa ý tưởng thuật tốn thành mơ tả thuật tốn giải tốn Có thể thấy hầu hết tốn xây dựng thuật tốn giải dựa việc tìm loại thao tác: thao tác sở (chung, riêng), thao tác thao tác tổng hợp Với tốn tính tốn, loại thao tác tìm sau có ý tưởng thuật tốn Với tốn khó tốn biến đổi trạng thái, câu đố, trị chơi ý tưởng thuật tốn thường hình thành với việc xây dựng loại thao tác Điều giúp cho việc hiểu mơ tả thuật tốn Ví dụ trị chơi xoay rubic × có thuật tốn phức tạp dài dịng có hướng giải giống hướng 167 Nguyễn Chí Trung giải trò chơi “Xoay vòng” đề cập Bài báo tập trung vào việc rèn luyện lực tìm loại thao tác tương ứng với toán cho, lực xây dựng thuật tốn xác giải tốn cho cách sử dụng thao tác tìm ra, lực tư tất trường hợp bình thường đặc biệt xảy toán Hướng nghiên cứu báo lực nâng cao hiệu thuật tốn Ngồi ra, phần thực nghiệm triển khai để vận dụng kết nghiên cứu, từ đánh giá điều chỉnh cần thiết TÀI LIỆU THAM KHẢO [1] Hồ Sĩ Đàm cộng sự, 2006 Tin học 10 Nxb Giáo dục Việt Nam, SGK trang 32-44 SGV trang 4-10 [2] Nguyễn Bá Kim, 2009 Phương pháp dạy học mơn Tốn Nxb Đại học Sư phạm, Hà Nội, trang 383 [3] Nguyễn Bá Kim, Lê Khắc Thành, 2006 Phương pháp dạy học đại cương môn Tin học Nxb Đại học Sư Phạm, Hà Nội, trang 91-104, 148-153 [4] Knuth, D E., 1985 Algorithmic Thinking and Mathematical Thinking American Mathematical Monthly, 92, pp 170-181 [5] Gerald Futschek: Algorithmic Thinking, 2006 The Key for Understanding Computer Science Springer - Verlag Berlin Heidelberg R.T Mittermeir (Ed.): ISSEP 2006, LNCS 4226, pp 159-168 [6] Ronald A Thisted, 1997 Computer Architecture Encyclopedia of Biostatistics Available at: galton.uchicago.edu/ thisted/Distribute/comparch.pdf ABSTRACT A method of developing algorithm thinking: From idea to description The development of creative thinking to deal with algorithms is the most important objective in the teaching of Informatics in high school There is a gap in that the presentation of the material by the lecturers regarding the idea and description of algorisms is poorly processed by the students This paper proposes an method of approach in algorithm presentation in which teachers guide their students in analyzing and finding important steps to understand and presenting algorithms 168 ... dạy cho học sinh đường tư để từ ý tư? ??ng thuật tốn, học sinh hiểu xây dựng mơ tả thuật tốn giải toán cho Nguyễn Bá Kim bàn “Dạy học qui tắc, phương pháp? ?? dạng hoạt động để phát triển tư cho học sinh, ... tả thuật tốn dựa 158 Phương pháp phát triển tư thuật tốn cho học sinh phổ thơng ý tư? ??ng thuật toán Hướng tiếp cận hình thành đường cho học sinh tư để hiểu xây dựng thuật toán, nhằm lấp đầy khoảng... luyện cho học sinh tư thuật toán [3] Knuth, D E so sánh mối quan hệ tư thuật toán tư tốn học, khơng đề cập đến việc hướng dẫn người học tư xây dựng thuật toán [4] Theo Gerald Futschek [5], tư thuật