• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      人人都能學(xué)會(huì)編程

      2018-04-18 10:40伍先軍
      中國(guó)信息技術(shù)教育 2018年6期
      關(guān)鍵詞:流程圖圖標(biāo)程序設(shè)計(jì)

      伍先軍

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

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

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

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

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

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

      畫(huà)程軟件破解編程教學(xué)難點(diǎn)

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

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

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

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

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

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

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

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

      畫(huà)程軟件實(shí)際應(yīng)用案例

      下面筆者以“有限驗(yàn)證考拉茲猜想”為例,說(shuō)明畫(huà)程軟件的用法。

      1.問(wèn)題描述與算法設(shè)計(jì)

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

      設(shè)計(jì)算法驗(yàn)證考拉茲猜想(當(dāng)然只能是在有限的數(shù)據(jù)范圍內(nèi)驗(yàn)證),可用自然語(yǔ)言來(lái)描述算法:

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

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

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

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

      2.用“畫(huà)程”軟件繪制流程圖

      畫(huà)程初始化時(shí),就自動(dòng)產(chǎn)生了一個(gè)只有“開(kāi)始”圖標(biāo)和“結(jié)束”圖標(biāo)的(空的)流程圖,它們之間有一根流程線相連?!伴_(kāi)始”圖標(biāo)上有一個(gè)小紅旗,表示當(dāng)前主流程圖(畫(huà)程允許在一個(gè)流程圖文件中有多個(gè)主流程圖共存,以便于比較不同的算法,當(dāng)然只能有一個(gè)為當(dāng)前主流程圖,如下頁(yè)圖1),擁有當(dāng)前執(zhí)行權(quán)。

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

      第二步,拖入一個(gè)“判斷-分支”圖標(biāo),內(nèi)置條件怎么寫(xiě)?“n為偶數(shù)”如何用計(jì)算機(jī)的語(yǔ)言表達(dá)呢?顯然,在畫(huà)程支持的6種計(jì)算機(jī)語(yǔ)言里,取模運(yùn)算的寫(xiě)法并不一致,為此,畫(huà)程引入了一些“漢字關(guān)鍵字”,可以跨語(yǔ)言直接使用,如“取?!薄罢薄唉小薄扒摇薄盎颉薄暗扔凇薄捌椒礁ǎ薄敖^對(duì)值()”“隨機(jī)整數(shù)()”“返回”“為偶數(shù)”等,這樣就能盡量實(shí)現(xiàn)“一次性畫(huà)圖,多語(yǔ)言通用”。直接鍵入條件n為偶數(shù),在“是分支”里拖入一個(gè)“處理”圖標(biāo),在“處理”圖標(biāo)里鍵入賦值語(yǔ)句n=n整除2。在“否分支”里拖入一個(gè)“處理”圖標(biāo),鍵入賦值語(yǔ)句n=3*n+1。

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

      第四步,拖入一個(gè)“輸出”圖標(biāo),鍵入“考拉茲猜想成立!”。

      第五步,運(yùn)行程序,檢驗(yàn)算法是否正確。

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

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

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

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

      猜你喜歡
      流程圖圖標(biāo)程序設(shè)計(jì)
      云的識(shí)別指南
      基于OBE的Java程序設(shè)計(jì)個(gè)性化教學(xué)研究
      項(xiàng)目化教學(xué)在Python程序設(shè)計(jì)課程中的應(yīng)用
      C++程序設(shè)計(jì)課程教學(xué)改革研究
      醫(yī)學(xué)專業(yè)“Python程序設(shè)計(jì)”課程教學(xué)改革總結(jié)與思考
      Android手機(jī)上那些好看的第三方圖標(biāo)包
      圖標(biāo)
      有意思的廁所圖標(biāo)
      流程圖學(xué)習(xí)指南
      漂亮的網(wǎng)站Logo隨手“偷”
      绥江县| 周宁县| 延庆县| 永顺县| 沁源县| 锡林郭勒盟| 大英县| 维西| 彭阳县| 德保县| 丹凤县| 怀安县| 新绛县| 南昌县| 耒阳市| 蓬溪县| 西城区| 南开区| 云霄县| 南城县| 竹溪县| 翁源县| 项城市| 浮梁县| 广元市| 革吉县| 拉萨市| 旺苍县| 大理市| 天津市| 阿鲁科尔沁旗| 咸丰县| 宁波市| 湖州市| 子洲县| 鹰潭市| 威宁| 原阳县| 精河县| 武平县| 荥经县|