何晴 劉瑩



【摘 ? 要】“豎式”算法是小學階段數學課程內容中的“人為規定”,具有“主客統一”的特征。因其“普遍適用”及“所需基本技能簡單”,成為小學階段學生必須掌握的內容。一方面“豎式”算法是解決計算問題的方法,可以滿足人們提高計算效率及減輕思維負擔的需要,反映的是人們“求簡”的思想;另一方面“豎式”算法不是“任意而為”的產物,其發明和創造的過程離不開“客觀規律”。由此算法的教學既要體現“主觀性”,即感受需要,也要注重“客觀性”,即通過活動發現“規律”。
【關鍵詞】算法;知識屬性;人為規定;客觀規律
“數的運算(Operation)”是貫穿整個義務教育階段的重要課程內容之一,習得“算法(Algorithm)”解決問題是其中的一個重要方面。作為現代人所熟知的筆算方式之一,筆算“豎式”是小學階段學生必須掌握的學習內容。傳統課堂一般是由授課教師創設相應的問題情境或直接給出算式,同時要求學生運用盡可能多的方法計算出結果并寫出自己的思考過程。而后學生則在教師的“引導”下“發現”標準豎式算法的“優越”,并在之后計算中被動地將其奉為圭臬。
這樣的體驗不禁使學生感到疑惑:既然最終都要學習標準豎式,為什么還要運用多種方法進行計算,到頭來還要受到否定?進一步需要思考:應如何看待“標準豎式”?“算法”學習又如何開展?謝明初教授指出“數學知識的性質直接決定著數學的學習過程”[1],故而解決“學什么”和“如何學”的問題就需要重新審視“豎式”算法的知識屬性。
一、“豎式”算法具有“規定”的特征
新世紀以來,在“建構主義(Constructivism)知識觀”的影響下,我國學者對數學課程知識的本質屬性產生了新的認識,相對一致的觀點是數學中既有“發現(Discover)”又有“發明(Invention)”。前者是指數學課程中那些不證自明(Self-evident)的客觀事實,后者則是指那些因滿足人的某種習慣或數學自身發展的需要做出的“規范性設定”,如“0是自然數”等,郜舒竹教授將這類知識統稱為“人為規定(Artificial rules)”[2]。
《柯林斯數學詞典(Collins Maths Dictionary)》將“算法”解釋為:可以解決問題的設定完成的“程序”(Procedure),由一系列明確定義和確定順序的操作步驟組成,屬于人類的“發明”。如使用“豎式”計算[12×4]所對應的“算法”:第一步將12拆分為10和2;第二步計算[4×2]得到8;第三步計算[4×10]得到40;最后將兩步計算結果相加得到算式結果48。算法所描述的操作過程往往可以通過流程圖(Flowchart)的形式表示出來。
一個問題可以對應多種不同的“算法”,作為“人造(Artificial)”的知識,“算法”并不具備“唯一”的特征。李維武《從歷史的視角看“豎式”的人文性》、郜舒竹《筆算方法多樣性的歷史考察》等系列文章都對古今中外有史可稽的筆算算法進行了深入細致的梳理,足以證明筆算“豎式”僅是眾多“算法”之一。另外“豎式”算法始終處于選擇與優化之中,通過對比不難發現:現代“標準豎式”改善了某些算法因“移位”引起的計算過程的繁雜與混亂;避免了因從高位算起造成的“進位計算”的重復;精簡了不必要的計算過程的呈現……
至于為何“豎式”具有如此廣泛的應用性,成為小學階段計算方法學習的重心,與其普遍適用性及所需基本技能簡單的特征有關。如前文所述筆算“豎式”是程序化的,不論數的大小,不論執行程序的對象是人還是機器,只要嚴格執行設定的步驟就能得到正確的結果。而所需“基本技能簡單”是指學生僅需理解“位值制(Place Value)”和掌握101以內四則運算就能解決幾乎所有計算問題。
二、“規定”因“需要”而產生
從某種意義上來講,“豎式”算法是一種解決計算問題的手段,符合人們的某種期望(Exception)。試想下面的情形:根據加法運算的意義,計算兩個一位數相加(如[2+3])可以由2開始數“3、4、5”三步得到算式結果5;也可以使用學具(如鉛筆、小棒……)將2個和3個相同的物品“合”在一起,通過數“1、2、3、4、5”得到結果。總之“數(shǔ)數(shù)”可以解決某些簡單的加法問題。然而隨著參與運算的“數(shù)”增大,數(shǔ)的過程也會變得枯燥且不那么“有效(Efficient)”,此時便亟待找到一種方法使得計算能夠擺脫或盡量減少“一個一個”地“數(shǔ)”的過程。
阿拉伯記數系統(Arabic Numeral System)提供了這樣的捷徑。該記數系統以“位值制記數法(Positional Notation)”為基本記數規則,“位值”簡單來說就是數碼的值取決于它的位置[3],不同的數位對應的“計數單位”不同:個位的計數單位是“一”,十位的計數單位是“十”,百位的計數單位是“百”……數碼0~9表示該位置“計數單位”的個數。這就好比數一個倉庫的蘋果數量,打開倉庫發現這些蘋果是被整齊地放置著——不足10個的放在一起,剩下的以10個為一箱,以10箱為一組,以10組為一排……數出幾排、幾組、幾箱、幾個便能輕松得到蘋果的數量。這提供了一個自然而然的思考傾向2:分部——由“一個一個”地數變為“一類一類”地數。
“豎式”算法產生的另一個需要是減輕思維負擔。[4]這不僅是因其以筆算的形式呈現了部分計算過程而減輕記憶上的負擔,而且是滿足了人們的某種情感偏好:求簡。具體來說,無論是生活還是學習,人們都不希望解決太過困難的問題,對比四種運算的“豎式”算法不難發現這樣的情感傾向:運算中的每一步盡可能都只涉及一位數的運算,使得運算對象由復雜變得簡單。更進一步,這種想法實際是將復雜的計算問題簡單化、分部化,通過逐一解決部分問題以實現解決整體問題。數學乃至生活中許多問題的解決(如求組合圖形的面積、稱大型物體的重量等)都與它相關,是重要的數學思想,稱之為“化整為零”。