• 
    

    
    

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

      ?

      剝開編程教學(xué)中“知識(shí)”的堅(jiān)硬果殼

      2023-01-30 05:11:56張永順江蘇省清江中學(xué)
      中國信息技術(shù)教育 2023年1期
      關(guān)鍵詞:神燈二進(jìn)制知識(shí)

      張永順 江蘇省清江中學(xué)

      胡連國 山東省利津縣高級(jí)中學(xué)

      王愛勝 山東省青州第一中學(xué)

      由于信息科技課程中算法與程序設(shè)計(jì)教學(xué)、人工智能等內(nèi)容與傳統(tǒng)文化知識(shí)差異很大,所以學(xué)習(xí)起來有一定的難度。因此,教師需要在教學(xué)中盡最大可能去剝開這些“知識(shí)”的堅(jiān)硬果殼,才能讓學(xué)生吃到里面的果肉,吸收其營養(yǎng),增長智慧。

      ● 發(fā)現(xiàn):從Python的“bug”認(rèn)識(shí)數(shù)據(jù)計(jì)算精度

      數(shù)據(jù)的計(jì)算精度,其背后的原理是二進(jìn)制。以往,在C、C++、Pascal等語言中是需要進(jìn)行數(shù)據(jù)類型定義的,而在Python中相對粗獷,這就容易出現(xiàn)誤會(huì)??蛇@也為在發(fā)現(xiàn)問題中認(rèn)識(shí)知識(shí)提供了機(jī)會(huì)。

      1.案例:發(fā)現(xiàn)了多余的小數(shù)

      一天,在講授運(yùn)算符與表達(dá)式時(shí),為了讓學(xué)生熟悉運(yùn)算符、操作數(shù),我給他們布置了一個(gè)小練習(xí):利用Python內(nèi)置的idle編輯器嘗試進(jìn)行一些常見的數(shù)據(jù)運(yùn)算,如加、減、乘、除,在給定幾個(gè)例子之外,我也請同學(xué)們發(fā)揮自己的主觀能動(dòng)性,多嘗試幾組數(shù)據(jù)。當(dāng)布置完任務(wù)之后,學(xué)生們都積極地投入到數(shù)據(jù)計(jì)算的測試之中。這時(shí),一個(gè)平時(shí)比較活潑的學(xué)生在測試了幾組數(shù)據(jù)之后,突然舉手,我示意他站起來。他站起之后大聲說:“老師,我發(fā)現(xiàn)了一個(gè)Python程序的bug?!贝藭r(shí),班內(nèi)氣氛頓時(shí)熱烈起來。

      “哦,是什么bug呢?能不能給我演示一下?”

      “老師,是這樣的,當(dāng)我使用16.888乘以100時(shí)(如圖1),結(jié)果多了一個(gè)小尾巴!”

      圖1

      見此情景,我立即表揚(yáng)了這位學(xué)生的積極探索,并趁熱打鐵給學(xué)生們深入解釋:①在Python中使用兩個(gè)浮點(diǎn)型的數(shù)據(jù)進(jìn)行計(jì)算時(shí),會(huì)發(fā)現(xiàn)某些時(shí)候計(jì)算并不準(zhǔn)確,如1.1+2.2結(jié)果是3.3000000000000003。這主要是二進(jìn)制無法精確表達(dá)十進(jìn)制小數(shù)的結(jié)果。例如11.11,整數(shù)部分按權(quán)展開1*2**1+1*2**0=(3)10,小數(shù)部分1*2**-1+1*2**-2=(0.75)10,可見二進(jìn)制小數(shù)能精確表達(dá)十進(jìn)制小數(shù)。②反過來,如果把十進(jìn)制中的小數(shù)部分轉(zhuǎn)為二進(jìn)制,把該小數(shù)不斷乘2、取整,直至沒有小數(shù)為止,發(fā)現(xiàn)有時(shí)候并不能乘盡。也就是有的小數(shù)其實(shí)并不能精確地轉(zhuǎn)換成二進(jìn)制的小數(shù),限于數(shù)據(jù)類型的長度,只能近似地表達(dá),如(0.45)10≈(0.0111001……)2無法精確表達(dá)。因?yàn)樵谟?jì)算十進(jìn)制小數(shù)時(shí)要先轉(zhuǎn)化成二進(jìn)制再進(jìn)行計(jì)算,又因?yàn)槎M(jìn)制小數(shù)無法精確表達(dá)某些十進(jìn)制小數(shù),此時(shí)Python只能盡量保證精度。如果要求特別精確,在Python語言中需要用到decimal,這是Python內(nèi)置標(biāo)準(zhǔn)庫,用它可以進(jìn)行精確浮點(diǎn)數(shù)運(yùn)算。

      總之,這位細(xì)心的學(xué)生確實(shí)發(fā)現(xiàn)了Python運(yùn)算的“bug”,通過分析探索,學(xué)生更深刻地了解了計(jì)算機(jī)進(jìn)行計(jì)算的本質(zhì),即數(shù)據(jù)類型、數(shù)據(jù)計(jì)算、二進(jìn)制等知識(shí)。

      2.案例反思

      學(xué)生在遇見問題時(shí)有好奇心,能夠去思考與探索,這些發(fā)現(xiàn)不論大小都能夠增長學(xué)生的智慧,意義重大。在數(shù)據(jù)計(jì)算精度問題的研究中,還可以鼓勵(lì)學(xué)生搜索計(jì)算機(jī)語言在相關(guān)數(shù)據(jù)類型方面的規(guī)范,甚至嘗試其他計(jì)算機(jī)語言的簡單計(jì)算,構(gòu)建更豐富的認(rèn)知空間。

      ● 質(zhì)疑:有沒有可以改變的步長

      敢于對現(xiàn)象提出問題,正是思考的表現(xiàn);敢于對知識(shí)提出質(zhì)疑,正是主動(dòng)認(rèn)知的過程。例如,在循環(huán)中較少學(xué)生能夠提出range()的意義,大都局限在對其初值、終值、步長的思考。當(dāng)有部分學(xué)生提出計(jì)數(shù)循環(huán)的步長是否可以更改時(shí),教師可以鼓勵(lì)學(xué)生探索,使其在探索中深化對列表函數(shù)特點(diǎn)的認(rèn)知。

      1.案例:range()中的步長在循環(huán)中可變嗎?

      “老師,range()是什么?”一個(gè)學(xué)生曾這樣問我。我解釋它就是一個(gè)列表函數(shù)。他又問怎么列表?我說:“在循環(huán)里不是講了嗎?”他說:“可老師講的是循環(huán)范圍,我不理解這是什么函數(shù),為什么還自己產(chǎn)生這么多數(shù)呢?什么從初值開始,又到不了終值,步長還默認(rèn)是1,好繞!”我鼓勵(lì)道:“你試著改改各個(gè)參數(shù),觀察運(yùn)行結(jié)果,在循環(huán)程序里體會(huì)!”過了一會(huì)兒,他又問道:“我試了試,步長可以是變量嗎?可是放在里面不變能呢?”(他給我看的程序如圖2所示)

      圖2

      我問道:“這說明什么?range()有什么特點(diǎn)?”他說:“步長不受后面變化的值影響?”我說:“總結(jié)一下就是range()一次性先完成了?!保▽W(xué)生讓我給再講講,我沒有細(xì)講,而是給了他如圖3所示的幾個(gè)程序,讓他試驗(yàn),并要求他試完之后總結(jié):①list是做什么的?②m的測試跟循環(huán)有什么不同?③range()、list(range())的數(shù)據(jù)類型分別是什么?)

      圖3

      后來,他又問道:“range(1,30,0.5)能否構(gòu)成小數(shù)列表?”我解釋道:“調(diào)試與試驗(yàn)是個(gè)法寶,以后學(xué)了while循環(huán)可以考慮用追加方法構(gòu)造一個(gè)小數(shù)列表,到時(shí)也可以做自己的自由變化的步長了?!?/p>

      2.案例反思

      學(xué)生對函數(shù)的理解多數(shù)是單一的映射數(shù)值,并沒有多數(shù)據(jù)列表的認(rèn)知,因此也可適當(dāng)從集合角度去理解。range()值的特點(diǎn)、數(shù)據(jù)產(chǎn)生時(shí)間、整數(shù)特征等都可以在試驗(yàn)中體會(huì),可舉例證明。問題探究可以延伸出程序功能的升級(jí)實(shí)現(xiàn),即學(xué)習(xí)while循環(huán)提高自由設(shè)計(jì)的思想。

      ● 類比:從書卡理解列表的應(yīng)用

      列表是Python的重要知識(shí),大量的程序設(shè)計(jì)基于列表進(jìn)行。但學(xué)生還沒有學(xué)習(xí)數(shù)學(xué)的“數(shù)列”,因此也無法建立數(shù)據(jù)集合的概念,所以,使用實(shí)際生活中的事物類比是破解難題的重要方法之一。

      1.案例:書卡抽屜與列表的類比

      有一天,一位學(xué)生歡喜地進(jìn)門就喊道:“老師,我太想你了!我做夢都在編程序?!蔽屹澋溃骸斑@說明你快成明白人了,就像學(xué)車做夢就快出手了?!睂W(xué)生說道:“可是夢里我什么都不會(huì),夢見一抽屜的卡片上都是你演示的一段段的程序代碼,可就是看不清楚,都急死了!”我笑了,我是提過老圖書館抽屜里的卡片,但是我說的是貼個(gè)變量X、Y的標(biāo)簽而已,哪有一大段代碼。正好當(dāng)天的課上我要讓學(xué)生練列表,因此給學(xué)生提出了分步探索的要求:①根據(jù)代碼樣式,補(bǔ)充真實(shí)內(nèi)容完成自己的程序。②每個(gè)環(huán)節(jié)的程序單獨(dú)從云課堂提交作業(yè)。

      引導(dǎo)類比方式的探索如下:

      (1)一抽屜的書卡是什么?(列表賦值)有多少張?(列表長度)哪張是第一張?(列表位置)程序如圖4所示。

      圖4

      (2)隨意抽出一張書卡是哪本書?(直接訪問列表數(shù)據(jù))(刪除列表數(shù)據(jù))程序如下頁圖5所示。

      圖5

      (3)怎樣全部查看書卡?(順序訪問列表數(shù)據(jù)、判斷數(shù)據(jù))程序如圖6所示。

      圖6

      (4)有快速查找一本書的“方法”嗎?(列表索引位置的‘方法’)程序如圖7所示。

      圖7

      (5)拿出一摞卡片(列表切片),列表有很多用途,相應(yīng)地有很多操作方式,還有列表排序list.sort()、列表切片list[x:y]等,學(xué)以致用是最好的學(xué)習(xí)。程序如圖8所示。

      圖8

      2.反思與總結(jié)

      概念厘清,即一個(gè)概念及應(yīng)用要列出1、2、3,搞清晰、有體驗(yàn),就算再做夢也不容易迷糊。操作都與需求相聯(lián)系。沒需求就不用發(fā)明這個(gè)操作了,所以編程也好、軟件也好,一個(gè)操作方法必然是對應(yīng)著應(yīng)用的,有什么用要對上號(hào),自然就容易掌握。別強(qiáng)記規(guī)則,而是理解應(yīng)用為宜。

      ● 比喻:彰顯自定義函數(shù)的神奇

      比喻是最易理解的知識(shí)描述方式,因?yàn)樗鼤?huì)更形象、生動(dòng)、有趣,如把自定義函數(shù)比喻成自我DIY一個(gè)阿拉丁神燈,體現(xiàn)出可以“復(fù)用的代碼”的形象來。

      1.案例:DIY一個(gè)阿拉丁神燈

      每到“可以復(fù)用的代碼——自定義函數(shù)”這部分內(nèi)容,我心里總是有個(gè)掙扎的聲音:內(nèi)容太抽象了,學(xué)生理解起來太困難了,不上好像也不影響學(xué)業(yè)水平測試的結(jié)果,直接跳過吧!研讀課標(biāo)與教材,發(fā)現(xiàn)程序中的自定義函數(shù)就是要讓學(xué)生理解:①為什么需要自定義函數(shù)?②自定義函數(shù)怎么寫?③自定義函數(shù)如何使用?我突發(fā)奇想,要不通過“DIY阿拉丁神燈”來講解這個(gè)自定義函數(shù)?

      (1)視頻導(dǎo)入。播放“阿拉丁神燈”實(shí)現(xiàn)愿望的視頻片段,學(xué)生需要關(guān)注那盞“燈”的作用是什么?“燈神”住在哪兒?有什么作用?“燈神”是如何被喚醒的?

      (2)程序觀察。向?qū)W生展示一段程序,提出問題:該程序?qū)崿F(xiàn)什么功能?連續(xù)執(zhí)行三次make_juice()能實(shí)現(xiàn)什么功能呢(如圖9)?

      圖9

      學(xué)生通過閱讀程序回答“make_juice( )是制作蘋果汁的流程,連續(xù)執(zhí)行三次make_juice( )可實(shí)現(xiàn)制作三杯蘋果汁”等。學(xué)生通過代碼閱讀學(xué)會(huì)了自定義函數(shù)的定義和調(diào)用方法;通過觀察輸出的結(jié)果,明白了調(diào)用的作用是什么。繼續(xù)提出思考問題:這個(gè)程序能夠?qū)崿F(xiàn)制作蘋果汁、香蕉汁、獼猴桃果汁各一杯嗎?

      (3)模仿修改。模仿:在課堂教學(xué)中,學(xué)生通過復(fù)制制作蘋果汁函數(shù),并將蘋果修改為香蕉和獼猴桃,調(diào)試運(yùn)行,發(fā)現(xiàn)結(jié)果都是獼猴桃。在學(xué)生發(fā)現(xiàn)此路不通后,我適時(shí)提出了問題:make_juice( )函數(shù)被調(diào)用的時(shí)候,知道自己是做什么的嗎?如果不知道,該如何告知呢?

      (4)增加參數(shù)。通過make_juice(‘蘋果’)語句告知我們要制作的是蘋果汁,這是在“召喚燈神”。①“神燈”設(shè)計(jì)。函數(shù)make_juice( )該如何接收“蘋果”這個(gè)值呢?通過增加參數(shù),即用make_juice(fruit)形式,參數(shù)“fruit”用來接收水果名稱。②“神燈”使用?!盁簟痹诮邮盏絝ruit參數(shù)后,在函數(shù)內(nèi)部該如何來使用呢?以“將蘋果去皮”為例,通過將具體的水果名稱替換為變量“fruit”,將其修改為“將”+fruit+“去皮”,即可實(shí)現(xiàn)內(nèi)部的名稱自適應(yīng)功能。由此,make_juice(fruit)函數(shù)可以實(shí)現(xiàn)多種果汁制作了,這是“燈神”可以滿足不同要求的要訣。具體程序如圖10所示。

      圖10

      2.案例反思

      通過“神燈”設(shè)計(jì),修改自定義函數(shù)的參數(shù)是一種良好的“適用不同對象”的“召喚燈神燈”的代碼復(fù)用。還可以繼續(xù)探討使用“循環(huán)結(jié)構(gòu)”對實(shí)現(xiàn)某個(gè)功能的基本語句的重復(fù)式復(fù)用。自定義函數(shù)能夠把多次重復(fù)的功能抽象成固定符號(hào)表達(dá),也屬于結(jié)構(gòu)化程序模塊設(shè)計(jì),在程序中通過調(diào)用函數(shù)名稱和傳遞參數(shù)達(dá)到簡潔、靈活的功能現(xiàn)實(shí)。

      猜你喜歡
      神燈二進(jìn)制知識(shí)
      天上掉下盞阿拉丁神燈
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      有趣的進(jìn)度
      二進(jìn)制在競賽題中的應(yīng)用
      習(xí)題變一變 思維現(xiàn)一現(xiàn)
      是“知識(shí)”,還是“知識(shí)權(quán)力”追求?
      考試周刊(2016年84期)2016-11-11 00:16:57
      試論新時(shí)期合格政工師應(yīng)具備的素質(zhì)
      愛與知識(shí)的力量
      旅人與神燈
      一個(gè)生成組合的新算法
      九江县| 琼海市| 阿鲁科尔沁旗| 贵港市| 曲沃县| 乃东县| 南丰县| 连南| 常德市| 金溪县| 宝清县| 郴州市| 香格里拉县| 德令哈市| 桓仁| 杂多县| 屏东市| 商南县| 酒泉市| 夏河县| 贡嘎县| 田东县| 贞丰县| 平舆县| 云安县| 桂平市| 外汇| 高尔夫| 河北区| 桦川县| 福州市| 滁州市| 玉田县| 略阳县| 修文县| 洪湖市| 靖安县| 曲水县| 大渡口区| 中方县| 海南省|