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

?

人人都能學會編程

2018-04-18 10:40伍先軍
中國信息技術教育 2018年6期
關鍵詞:流程圖圖標程序設計

伍先軍

2017年7月,國務院印發(fā)了《新一代人工智能發(fā)展規(guī)劃》,明確要求“實施全民智能教育項目,在中小學階段設置人工智能相關課程,逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學軟件、游戲的開發(fā)和推廣”,使中小學普及編程教育上升為國家戰(zhàn)略。對人工智能和編程的理解,許多人認為人工智能屬于更高級的范疇,編程只是其中的一部分,其核心在于算法,所以在中小學編程教學過程中應更注重算法教育,這樣才能更好地過渡到人工智能的學習。

傳統(tǒng)編程教學的困境

傳統(tǒng)的編程教學是在上世紀70年代末80年代初起步,到本世紀初,教材基本就是某種計算機高級語言的操作說明書,教師和學生都以軟件操作為核心,課堂幾乎成為公司軟件培訓部,這種教學模式可稱為“程序教學1.0”。這種以程序設計語言語法為中心、按成人短訓班模式組織教學的做法,可能適合有大塊自由時間消化、肯主動鉆研的大學生,但不適合課時極少、幾乎無自由時間可支配、自我約束能力較弱的中小學生。

2003年啟動的信息技術課程改革,在“程序設計”前面增加了“算法”,教學以“解決問題”為目的。但在教學實踐中暴露出諸多問題:一是“算法”與“程序設計”常常脫節(jié)——先講算法,容易紙上談兵,空洞說教,或者講清楚了算法,卻沒時間編程實現(xiàn);先講程序設計,算法就顯得多余甚至是累贅。二是“程序設計”本來概念就多而且難懂,如常量、變量(數(shù)組)、數(shù)據(jù)類型、運算符、表達式(算術表達式、關系表達式、邏輯表達式、字符串表達式等)、函數(shù)(內置函數(shù)、自定義函數(shù))、過程,還有各種語句(如輸入、輸出、賦值、條件、循環(huán)語句)的語法。若采用面向對象的程序設計,還有各種控件(類)、對象、屬性、方法、事件等高難度概念?,F(xiàn)在引入“算法”后,又新增了許多內容,以及一些常見算法,如解析法、迭代法、窮舉法、二分查找、排序算法、遞歸算法等。三是由于課時少,上機時間不足,學生編寫代碼、調試程序經常出錯,往往無法得到及時解決,難以形成知識積累和意義建構,致使每節(jié)課幾乎都是零起點,久而久之,學生對程序設計容易產生恐懼甚至厭惡心理。這種教學模式,可稱為“程序教學2.0”,雖然引入了“算法”,但沒有厘清“算法”與“程序設計”的關系、面向過程程序設計與面向對象程序設計的關系,導致“頭發(fā)胡子一把抓”,不但原來“程序設計”的問題沒有解決,還增加了新的矛盾。

這一輪課改也在高中數(shù)學中引入了“算法”,出現(xiàn)在必修3第一章“算法初步”中。然而,放眼高中數(shù)學算法教學課堂,我們會發(fā)現(xiàn)“紙上談兵”幾乎是普遍現(xiàn)象。一是許多數(shù)學教師的算法水平和實現(xiàn)能力偏低,只會“紙上談兵”。算法是高中數(shù)學新課程新增內容,許多一線高中數(shù)學教師,尤其是年齡較大的教師,求學期間沒有系統(tǒng)地學習過算法,在職業(yè)培訓時也沒有及時有效地跟進,他們缺乏在計算機上驗證程序的意識和能力,一般只會“紙上談兵”式地模擬計算機執(zhí)行流程圖,幾乎不安排學生集體上機實踐,從而將本來實踐性強、生動有趣的內容變成了機械呆板、枯燥乏味的說教。二是“固化”“機械”的高考題型助長了教師的“紙上談兵”。由于多數(shù)高考題似乎就只考“根據(jù)流程圖寫出程序運行結果”這種題型,而且往往只需照著框圖模擬運行幾趟(一般是3~6趟)就能直接得到結果,這種極端機械的題型,使得大部分一線數(shù)學教師和學生堅信只需“紙上談兵”即可,從而大大削弱了算法教學。三是算法教學存在兩大“結構性”障礙,讓師生止步于“紙上談兵”:①分析問題時,在得出了用自然語言表示的解題步驟之后,怎么把它轉化為流程圖呢?無論是在紙上還是在黑板或電子白板上畫,無論用紙筆還是用Word、Visio等軟件畫流程圖,都費時費力。②好不容易畫出流程圖后,再怎么轉化為程序?這個框圖是給人看的,是人與人之間交流算法思想時用的,往往只能用于手工模擬。由于先學流程圖,學生還不會寫代碼,因此無法寫出代碼驗證算法。如果先學算法語句,學會編寫程序代碼,則又淡化了算法思想的主導作用,違背了高中數(shù)學算法教學的初衷:重在理解算法思想,不要上成程序設計課。這就是算法思想與程序實現(xiàn)之間的結構性矛盾:從邏輯上講,先有算法思想,再編程實現(xiàn);但從技術上講,先要編寫程序,才能承載算法。這樣就陷入了類似于先有“雞”還是先有“蛋”的“怪圈”。

綜合上述情況,算法教學在高中是很難有效開展的。那么,算法教學的出路何在?

畫程軟件破解編程教學難點

算法思維的本質是抽象和自動化。算法中的抽象屬于人的思維范疇,可使用圖符系統(tǒng)(如流程圖)或形式化語言(如偽代碼)來表達,當然,也可以直接用自然語言表達,但最終要落實在能夠由機器自動化執(zhí)行上。算法思維連接“人”和“機器”,為確保機器的自動化,必須在抽象過程中進行精確無歧義、人易懂易操作、機器也能執(zhí)行的符號標記。此時此刻,我們渴望有一種“翻譯工具”,能把這種抽象的符號系統(tǒng),直接“翻譯”為計算機能執(zhí)行的軟件,實現(xiàn)從“抽象”到“自動化”的軟著陸。

自然語言是人的語言,但機器不懂(隨著人工智能的發(fā)展,將會有改善);偽代碼是意在跨越各種計算機語言而提出的一種通用的、簡明的文字符號系統(tǒng),書寫偽代碼,實際上需要有程序思維和代碼基礎,所以不太適合初學者,而且偽代碼并不能被計算機執(zhí)行;計算機程序設計語言,是機器能懂的語言,雖然經過多輪迭代進化,計算機語言已經離人類語言越來越近了,但對初學者而言,中間仍有巨大的鴻溝。怎么順利跨越這道鴻溝呢?

探究算法教學,其實也就是三個基本步驟:第一步,從分析問題得到用紙和筆分步驟可實現(xiàn)的通用算法,可稱為紙筆算法;第二步,把用自然語言描述的紙筆算法轉為用流程圖表達;第三步,把流程圖翻譯為程序代碼實現(xiàn)算法。高中數(shù)學“算法初步”教學,往往實現(xiàn)了前兩步,無力實現(xiàn)第三步,倒在了算法被實證檢驗的最后一公里,使教學最終淪為令學生厭煩的“紙上談兵”。高中信息技術課程中的“算法與程序設計”教學,則往往走向另一個極端:為了“解決問題”,常常舍棄算法構思與流程圖,即拋棄了前兩步,直接編寫代碼,至于為什么要這么寫代碼,常常無法向學生講清楚,而且若代碼較長,學生更接受不了,編程成為無源之水、無本之木。

綜合兩者,理想的算法教學是,第一步是根基,不可偏廢,只能通過啟迪學生數(shù)學分析能力、抽象邏輯思維能力、建立數(shù)學模型等來達成;第二步要易于用計算機軟件實現(xiàn);第三步則要由計算機軟件自動實現(xiàn)。如果學生能用拖拽圖標的方式輕松地繪制流程圖,系統(tǒng)能夠根據(jù)流程圖和學生鍵入的信息自動生成程序代碼,那么在研究、設計算法時,就能暫時不理會程序語言代碼和實現(xiàn)的細節(jié),只需專注于算法思想,這樣就大大降低了算法入門的門檻。顯然,教師需要一個算法教學的工具平臺,來輔助解決兩個問題:一是快捷方便地繪制、修改流程圖,二是自動編程實現(xiàn)算法、驗證算法。

“畫程軟件”應運而生?!爱嫵獭保⒁狻坝卯媹D(流程圖)的方式畫出程序來”。畫程軟件能把流程圖自動翻譯為程序代碼(支持Python,Java,C,C++,VB,QB等六種計算機高級語言),能編譯(或解釋)運行實現(xiàn)算法,這樣就使原來的算法教學的三步變成了兩步:第一步,設計算法(用自然語言表示);第二步,用畫程軟件畫出流程圖,而這個流程圖是可以執(zhí)行的。畫程軟件避免了一些教師上機操作底氣不足的尷尬,解放了教師;降低了算法入門門檻,適合初學者,釋放了學生;可輕而易舉地改變算法,是學生自主研習算法的好工具,激活了課堂。該軟件對電腦設備要求低,操作簡單。因此,畫程軟件成為中小學普及編程教學的極好平臺,使人人都能學會編程成為可能。

程序教學1.0和2.0,都是以“電腦”和“知識”為中心,學生要花大量精力學習它們的各種規(guī)則,才能小心謹慎地駕馭它們。令人“憤怒”的是,不同的計算機語言即使實現(xiàn)同樣的功能,它們似乎也要故意使用不同的關鍵詞和語法規(guī)則(如下表),使得人們總是為應該學習什么語言而糾結。

例如,要輸入一個變量,就要根據(jù)不同的語言選擇不同的“關鍵詞”,是input,還是read,是scanf還是cin,抑或next(),還要嚴格遵守其語法規(guī)則,否則機器就罷工。

引入畫程軟件后,程序教學升級為3.0,教學以“學生”和“思維”為中心,學生只要會用紙和筆解決問題,寫成步驟,就可以輕而易舉地畫出流程圖,讓計算機去編寫代碼并運行解決問題。如輸入變量a,只需在“輸入圖標”中鍵入變量a就行了,至于怎么寫出合法的輸入語句,那是畫程軟件的事、機器的事。

畫程軟件實際應用案例

下面筆者以“有限驗證考拉茲猜想”為例,說明畫程軟件的用法。

1.問題描述與算法設計

德國數(shù)學家考拉茲(Lothar Collatz)于1930年提出考拉茲猜想,又名3n+1猜想或冰雹猜想,是指對于每一個正整數(shù)(用變量n表示),如果它是偶數(shù),則對它除以2,如果它是奇數(shù),則對它乘3再加1,如此循環(huán),最終都能得到1。

設計算法驗證考拉茲猜想(當然只能是在有限的數(shù)據(jù)范圍內驗證),可用自然語言來描述算法:

第一步,輸入n(正整數(shù));

第二步,若n為偶數(shù),則將其除以2,否則(n為奇數(shù)),將其乘以3后加上1,結果仍用n表示;

第三步,如果n等于1,退出到第4步,否則轉回到第2步;

第四步,輸出“考拉茲猜想成立!”。

2.用“畫程”軟件繪制流程圖

畫程初始化時,就自動產生了一個只有“開始”圖標和“結束”圖標的(空的)流程圖,它們之間有一根流程線相連?!伴_始”圖標上有一個小紅旗,表示當前主流程圖(畫程允許在一個流程圖文件中有多個主流程圖共存,以便于比較不同的算法,當然只能有一個為當前主流程圖,如下頁圖1),擁有當前執(zhí)行權。

第一步,拖入一個“輸入”圖標,在其內鍵入n。在畫程中,輸入變量的默認數(shù)據(jù)類型為浮點實型(float),本例此處應改為整型(int):在剛才的“輸入”圖標的“輸入”兩字上點鼠標右鍵,在彈出的快捷菜單中單擊“輸入變量定為整數(shù)類型(int)”。

第二步,拖入一個“判斷-分支”圖標,內置條件怎么寫?“n為偶數(shù)”如何用計算機的語言表達呢?顯然,在畫程支持的6種計算機語言里,取模運算的寫法并不一致,為此,畫程引入了一些“漢字關鍵字”,可以跨語言直接使用,如“取模”“整除”“π”“且”“或”“等于”“平方根()”“絕對值()”“隨機整數(shù)()”“返回”“為偶數(shù)”等,這樣就能盡量實現(xiàn)“一次性畫圖,多語言通用”。直接鍵入條件n為偶數(shù),在“是分支”里拖入一個“處理”圖標,在“處理”圖標里鍵入賦值語句n=n整除2。在“否分支”里拖入一個“處理”圖標,鍵入賦值語句n=3*n+1。

第三步,這里有一個詞非常關鍵——“轉回”,也就是說,流程線要回到上面來,必須使用“判斷-循環(huán)”圖標,拖入一個“判斷-循環(huán)”圖標,條件怎么寫呢?鍵入n等于1,“如果n等于1則退出”,所以這個“否”與“是”要交換,只要雙擊“是”或“否”就改變了?!胺駝t,轉回第2步”,要轉到上面來,怎么操作呢?流程線不能拖動,可以把上面的分支(條件)結構拖拽到循環(huán)體內來(放在“判斷-循環(huán)”圖標“n等于1”的上面),這樣就實現(xiàn)了“轉回第2步”。

第四步,拖入一個“輸出”圖標,鍵入“考拉茲猜想成立!”。

第五步,運行程序,檢驗算法是否正確。

單擊“保存流程圖”工具,保存畫好的流程圖文件。單擊“編譯工具”,編譯程序,成功之后,(以Python語言為例)彈出窗口(如圖2)。

此時輸入一個整數(shù),如100,按回車(如圖3)。

這個例子集聚了輸入、輸出、處理、判斷-分支、判斷-循環(huán)等五種基本圖標,讓學生重點體會“分支”與“循環(huán)”的異同。

畫程軟件還有其他功能,大家可以去做更多的探索。

猜你喜歡
流程圖圖標程序設計
云的識別指南
基于OBE的Java程序設計個性化教學研究
項目化教學在Python程序設計課程中的應用
C++程序設計課程教學改革研究
醫(yī)學專業(yè)“Python程序設計”課程教學改革總結與思考
Android手機上那些好看的第三方圖標包
圖標
有意思的廁所圖標
流程圖學習指南
漂亮的網站Logo隨手“偷”
孟州市| 泗水县| 南漳县| 西安市| 淳化县| 色达县| 孝义市| 菏泽市| 永登县| 柏乡县| 遂昌县| 阳春市| 禄丰县| 武川县| 浙江省| 兴业县| 耒阳市| 京山县| 二连浩特市| 白水县| 施甸县| 临洮县| 屏南县| 平陆县| 九龙坡区| 大埔县| 奉贤区| 普安县| 临海市| 兴义市| 宝山区| 梧州市| 滨海县| 隆昌县| 和静县| 繁昌县| 开封市| 彭山县| 江华| 衢州市| 河北区|