国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

從小學(xué)典型數(shù)學(xué)問題出發(fā)在編程學(xué)習(xí)中培養(yǎng)計算思維

2021-03-29 01:05:36董燁華
電腦與電信 2021年8期
關(guān)鍵詞:編程建模算法

董燁華

(浙江省紹興市第一中學(xué),浙江 紹興 312000)

1 引言

計算思維是個體運用計算機科學(xué)領(lǐng)域的思想方法和在形成問題解決方案的過程中產(chǎn)生的一系列思維活動。[1]計算思維的本質(zhì)是抽象。[2]編程教學(xué)是計算思維培養(yǎng)的重要手段。目前,面向小學(xué)生的編程課程,以Scratch一類的可視化編程和樂高機器人一類的實體設(shè)備編程為主。像C++這類注重算法學(xué)習(xí)的編程課程是比較小眾的,究其原因在于C++編程解決的問題較抽象、思維難度較大。筆者面向小學(xué)高年級學(xué)生開設(shè)C++編程課程,培養(yǎng)學(xué)生計算思維,嘗試將編程解決的問題與小學(xué)數(shù)學(xué)課堂典型問題結(jié)合,使得教學(xué)更“平易近人”。

2 開展C++編程教學(xué)的抽象基礎(chǔ)

瑞士知名教育學(xué)家、心理學(xué)家皮亞杰提出了兒童認(rèn)知發(fā)展理論。根據(jù)該理論,小學(xué)高年級兒童認(rèn)知發(fā)展正處于具體運算階段向形式運算階段過渡,已經(jīng)適合抽象思維的培養(yǎng)。抽象是計算思維的核心。在小學(xué)高年級通過編程培養(yǎng)學(xué)生計算思維,正是抓住了學(xué)生抽象思維發(fā)展的關(guān)鍵時期。在教學(xué)中,要提升并借助學(xué)生的形象思維能力,培養(yǎng)學(xué)生的抽象思維能力,最終使學(xué)生在問題解決過程中能習(xí)慣運用計算思維。

小學(xué)高年級學(xué)生已經(jīng)具備了良好的語言學(xué)習(xí)基礎(chǔ)。語言語法的突出特點是其抽象性。除了語音和詞匯均各有其抽象性,語法的抽象性是所有這些抽象基礎(chǔ)上的更高層次的抽象[3]。面向小學(xué)生的C++編程教學(xué),一方面,要以問題解決為中心,弱化語句語法學(xué)習(xí),減少學(xué)生因為語法的抽象對問題解決感到困擾,語法學(xué)習(xí)做到夠用就行。例如,C++的循環(huán)結(jié)構(gòu)有for循環(huán)、while循環(huán)、do…while循環(huán),在實際教學(xué)中可以先只學(xué)一種for循環(huán),直到學(xué)生能熟練運用,再拓展介紹其他循環(huán)語法。再例如,for循環(huán)在實際編程中可以有很多靈活變化的寫法,教學(xué)時要盡量從最一般的格式入手,在之后學(xué)習(xí)中根據(jù)問題需要再做格式上的加減操作。另一方面,要利用好學(xué)生原有自然語言抽象概念、數(shù)學(xué)語言抽象概念,將其遷移到編程學(xué)習(xí)中,幫助學(xué)生完成二次抽象,即計算思維相關(guān)的抽象??梢宰寣W(xué)生將C++語法保留字作為英語單詞記憶,記住了單詞的含義也就大致理解該保留字的C++語法意義。然后,要求學(xué)生習(xí)慣用自然語言將問題解決的算法思路講出來。實踐表明,通過以上問題解決中自然語言和C++代碼的抽象含義對應(yīng),學(xué)生很快理解了if語句語法,掌握速度和理解Scratch編程相應(yīng)功能模塊無明顯差異,后者是自然語言和Scratch圖標(biāo)抽象含義的對應(yīng)。

3 數(shù)學(xué)學(xué)科核心素養(yǎng)與計算思維培養(yǎng)

計算思維源于數(shù)學(xué)思維與工程思維,數(shù)學(xué)思維最大的認(rèn)知特征便是:概念化,抽象化,模式化。《普通高中數(shù)學(xué)課程標(biāo)準(zhǔn)》提煉的數(shù)學(xué)學(xué)科核心素養(yǎng)為:數(shù)學(xué)抽象、邏輯推理、數(shù)學(xué)建模、直觀想象、數(shù)學(xué)運算、數(shù)據(jù)分析,而這些正與計算思維過程中分析數(shù)據(jù)、界定問題、分解問題、抽象特征、建立結(jié)構(gòu)模型、算法實現(xiàn)等環(huán)節(jié)高度對應(yīng)。所以,從數(shù)學(xué)問題出發(fā)在編程學(xué)習(xí)中提升計算思維能力,具備良好的遷移基礎(chǔ),可以實現(xiàn)數(shù)學(xué)學(xué)科核心素養(yǎng)和信息技術(shù)學(xué)科核心素養(yǎng)雙發(fā)展。

3.1 分析、界定與分解

分析、界定與分解是在收集、分析數(shù)據(jù)基礎(chǔ)上實現(xiàn)數(shù)據(jù)表征、概念界定、明確問題實質(zhì),并將一個復(fù)雜的問題分解成若干易處理的子問題的過程。教學(xué)中可以從典型數(shù)學(xué)問題出發(fā),將問題解決過程中分析、界定與分解的思維過程進(jìn)行強化。例如,人教版《數(shù)學(xué)》三年級下冊的一個面積計算問題(以下簡稱例1):客廳的長是6米,寬是3米;正方形地磚的邊長是3分米;問鋪滿客廳地面一共要用多少塊地磚。經(jīng)過分析,我們可以得出問題涉及:正方形、長方形、邊長、長、寬、面積等概念,問題的實質(zhì)是與面積有關(guān),涉及不同長度單位的換算,是整數(shù)運算。問題可以分解為:①求客廳地面面積問題;②求地磚面積問題;③求兩個面積之間的關(guān)系問題。還可以分解為:①求客廳地面的長對應(yīng)幾塊地磚的問題;②求客廳地面的寬對應(yīng)幾塊地磚的問題;③已知客廳地面長和寬分別對應(yīng)地磚數(shù),求總地磚數(shù)問題。

3.2 抽象與建模

抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征的過程。計算思維下的抽象可以歸納為三個逐級上升的層次:概念抽象→數(shù)學(xué)抽象→計算抽象。[4]建模就是建立結(jié)構(gòu)模型,是為了理解事物而對事物做出的一種抽象,同樣可以對應(yīng)概念建模、數(shù)學(xué)建模、計算建模三個層次?;氐嚼?,之前的教學(xué)中學(xué)生應(yīng)該已經(jīng)理解了正方形、長方形、長、寬、面積等抽象概念,在本問題中是把地磚抽象為邊長為3分米正方形這個數(shù)學(xué)模型,地面抽象為長6米、寬3米的長方形模型。如果采用例1中第二種問題分解方式,還需要分別從地面和地磚邊長中抽象出線段模型。

計算建模是要讓這個模型可以被運算,可以交給計算機幫助運算解決,要考慮從具體個例到一般情況的抽象泛化。例1中提供的數(shù)據(jù)符合長方形的長和寬是正方形邊長的倍數(shù),針對這組特殊數(shù)據(jù),可以在整數(shù)運算范圍下,采用前面提到的兩種方式來分解問題、抽象建模。如果把問題數(shù)據(jù)一般化,可能出現(xiàn)客廳地面面積不能被瓷磚面積整除的情況,建模就要考慮小數(shù)運算,還要從工程思維的角度分析,不湊整的面積地磚怎么拼,1/3塊地磚算不算用掉一塊。于是在計算建模的時候,需要加上一些約束條件。如果條件保證客廳地面面積數(shù)據(jù)一定能被瓷磚面積數(shù)據(jù)整除,又會出現(xiàn)前面第一種問題分解方式在某些數(shù)據(jù)情況下不符合實際的情況,比如長6米、寬1米的客廳地面和3分米邊長的地磚,雖然兩者面積可以整除,但實際鋪設(shè)的時候地磚是要切割了的。所以,圍繞典型數(shù)學(xué)問題,教師需要在教學(xué)中幫助學(xué)生鞏固相關(guān)概念,明確數(shù)學(xué)模型;要引導(dǎo)學(xué)生提煉出可運算、一般化的計算模型。

3.3 設(shè)計算法

算法的概念源自數(shù)學(xué),在數(shù)學(xué)中,算法通常是指能夠使用計算機來解決的某一類問題的步驟或程序,這些步驟或程序必須是明確和有效的,而且能夠在有限步驟之內(nèi)完成。[5]浙教版《信息技術(shù)必修一數(shù)據(jù)與計算》教材中給出廣義的概念,“算法”是解決問題或者完成任務(wù)的一系列步驟,解決的問題不僅僅指傳統(tǒng)意義上的計算任務(wù)(算術(shù)),還可以是社會生活中各種事務(wù)的處理。在計算機學(xué)科領(lǐng)域內(nèi),“算法”指的是用計算機解決問題的步驟,是為了解決問題而需要讓計算機有序執(zhí)行的、無歧義的、有限步驟的集合,需要解決的問題包含數(shù)值計算和非數(shù)值計算的數(shù)據(jù)處理。根據(jù)廣義的算法概念,可以認(rèn)為計算思維不僅適用于數(shù)學(xué)學(xué)科和計算機學(xué)科,也適用于其它各個學(xué)科領(lǐng)域的問題解決過程,是一種通用思維。數(shù)學(xué)學(xué)科和計算機學(xué)科中“算法”的定義高度一致,可見,從解決數(shù)學(xué)問題出發(fā)培養(yǎng)學(xué)生計算思維是一條最直接的路徑。例1面積計算問題,在計算建?;A(chǔ)上,分解的子問題①、②、③,可以設(shè)計成有先后關(guān)系、依次執(zhí)行的三個算法步驟:①→②→③或者②→①→③,每個子問題又有相應(yīng)的算術(shù)運算步驟。

4 從小學(xué)典型數(shù)學(xué)問題出發(fā)的編程學(xué)習(xí)實例

4.1 從常用編程語法教材中發(fā)掘?qū)W習(xí)實例

在C++語言入門教材里一般都會用到一些小學(xué)數(shù)學(xué)相關(guān)的例題和練習(xí)題,對于大部分教材用戶,小學(xué)數(shù)學(xué)問題已經(jīng)不存在數(shù)學(xué)建模的困難,所以這些題目的作用主要是幫助熟悉C++語法,但在面向小學(xué)生的教學(xué)中,這些題目往往是開展計算思維培養(yǎng)的好素材。教師要善于把數(shù)學(xué)問題和小學(xué)數(shù)學(xué)課堂結(jié)合起來,為最終通過計算機編程解決搭建良好的思維情境。例如,判斷閏年問題是編程常用例題,教師可以從人教版《數(shù)學(xué)三年級下冊》第六課“年、月、日”找到數(shù)學(xué)基礎(chǔ)。教學(xué)中可以結(jié)合數(shù)學(xué)教材,完成閏年等概念抽象,同時明確什么是判斷閏年問題。接著,通過分析閏年形成的原因,讓學(xué)生了解數(shù)學(xué)教材里判斷閏年的規(guī)則“公歷年份是4的倍數(shù)的,一般都是閏年;但公歷年份是整百數(shù)的,必須是400的倍數(shù)才是閏年”。下一步,把年份抽象成一個數(shù)字,問題就轉(zhuǎn)換為對年份數(shù)字的判斷,完成計算建模。將閏年判斷規(guī)則整理為可操作的算法步驟:判斷年份數(shù)字能被4整除但不能被100整除,或者判斷能被400整除。最后,用C++代碼實現(xiàn),語法要求并不高,套用IF語句格式就行。另外,像“雞兔同籠”問題也是很好的例題,人教版數(shù)學(xué)教材里先讓學(xué)生通過列表分析“雞、兔、腳”之間的關(guān)系,所以編程教學(xué)中需要從枚舉算法入手,之后可以拓展解析算法,這樣會更符合計算思維解決問題的過程。

4.2 從小學(xué)數(shù)學(xué)教材入手開發(fā)學(xué)習(xí)實例

教師可以從數(shù)學(xué)教材中找適合運用計算思維的問題實例。例如,人教版《數(shù)學(xué)五年級上冊》第七節(jié)“植樹問題”。植樹問題是指在一定的線路上,根據(jù)總路程、間隔長和棵數(shù)進(jìn)行植樹的問題。編程解決的問題簡單描述為“總路程為L米的馬路,在一邊每間隔S米種M棵樹,一共要種幾棵樹”。抽象建模:樹用點來表示,植樹的沿線用線來表示,這樣就把植樹問題轉(zhuǎn)化為一條非封閉或封閉的線上的點與被均分的線段之間的關(guān)系問題。算法設(shè)計:根據(jù)問題描述,如果線段兩端都植樹,計算公式:總數(shù)=(L÷S+1)×M。代碼編寫只要定義相應(yīng)int類型變量,順序結(jié)構(gòu)可以實現(xiàn)。

可以對教材中的數(shù)學(xué)問題進(jìn)行拓展。例如,植樹問題進(jìn)行拓展,描述為“長度為L米的馬路上有一排樹,樹從頭到尾間隔1米種植,現(xiàn)在馬路中的一段要建十字路口,要把從A米起到B米之間的樹移走,問還有多少棵樹”。抽象建模仍然是線上的點與被均分的線段之間的關(guān)系問題。算法可以0到A-1的線段上點的個數(shù)加上B+1到L的線段上點的個數(shù),也可以是0到L的線段上點的個數(shù)減去A到B的線段上點的個數(shù)。

將上述植樹問題再進(jìn)一步拓展,就是一道經(jīng)典的全國信息學(xué)奧林匹克聯(lián)賽試題“校門外的樹”(NOIP2005普及組第二題),問題簡單描述:某校大門外長度為L米的馬路上每間隔1米種著一棵樹,把馬路看成一個數(shù)軸,即數(shù)軸0到L的位置都種有一棵樹,馬路上有一些區(qū)域要用來建地鐵,這些區(qū)域用它們在數(shù)軸上的起始點和終止點的坐標(biāo)表示,這些坐標(biāo)都是整數(shù),區(qū)域之間可能有重合的部分,現(xiàn)在要把這些區(qū)域中的樹移走,問馬路上還剩多少棵樹。問題拓展到這里,學(xué)生對其數(shù)學(xué)模型已經(jīng)很清楚了,但在計算的時候如果分別考慮地鐵區(qū)域的起始點和終止點坐標(biāo),一段一段來計算會十分復(fù)雜。計算建??梢钥紤]按建地鐵區(qū)域要求將所有樹都移走后數(shù)軸的最終狀態(tài),0到L的數(shù)軸上一些點有樹一些點沒有。所以,C++編程中定義長度為L的數(shù)組,模擬這個數(shù)軸狀態(tài)變化就行。

5 結(jié)束語

C++語言在小學(xué)被認(rèn)為是編程界面枯燥、學(xué)習(xí)難度大的一種編程語言。筆者認(rèn)為,字符化編程界面并不是孩子們?nèi)鄙倥d趣的原因,看煩了都市五顏六色的霓虹,你會發(fā)覺寂靜夜空的美麗。編程學(xué)習(xí)中的抽象和算法設(shè)計的復(fù)雜,才是真正讓孩子們感到困難的,而這些正是計算思維培養(yǎng)的最核心內(nèi)容。對于小學(xué)高年級的孩子來說,在編程學(xué)習(xí)中過多地將時間花費在如Scratch圖形對象的設(shè)計上或者機器人編程硬件設(shè)備的組裝上,而問題本身的算法難度不提升,那么,一則培養(yǎng)效率低下,二則會阻礙孩子抽象能力的發(fā)展。從小學(xué)數(shù)學(xué)問題出發(fā)在小學(xué)高年級開展編程教學(xué)是計算思維培養(yǎng)一條順理成章之路。

猜你喜歡
編程建模算法
編程,是一種態(tài)度
少先隊活動(2021年2期)2021-03-29 05:41:04
元征X-431實測:奔馳發(fā)動機編程
聯(lián)想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
編程小能手
紡織機上誕生的編程
基于MapReduce的改進(jìn)Eclat算法
Travellng thg World Full—time for Rree
進(jìn)位加法的兩種算法
基于PSS/E的風(fēng)電場建模與動態(tài)分析
電子制作(2018年17期)2018-09-28 01:56:44
不對稱半橋變換器的建模與仿真
乐至县| 抚顺市| 鄱阳县| 嘉兴市| 阳原县| 普定县| 丽江市| 鸡泽县| 江西省| 万源市| 阿克陶县| 辽中县| 古丈县| 错那县| 兴海县| 察哈| 大连市| 沭阳县| 抚顺县| 于田县| 开江县| 太湖县| 太谷县| 江孜县| 绵阳市| 高邮市| 乐亭县| 和硕县| 蕲春县| 磴口县| 临桂县| 固阳县| 化隆| 涟源市| 南投市| 安福县| 许昌县| 搜索| 乐都县| 宁晋县| 彭阳县|