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

?

例談“優(yōu)化思想” 在初中VB教學(xué)中的運(yùn)用

2019-11-16 14:28劉浩
中國(guó)信息技術(shù)教育 2019年19期
關(guān)鍵詞:代碼語(yǔ)句程序

劉浩

在目前初中學(xué)習(xí)階段,程序設(shè)計(jì)已經(jīng)納入了信息技術(shù)學(xué)科教學(xué)的范疇,而在以Visual Basic(以下簡(jiǎn)稱VB)為主要軟件的程序設(shè)計(jì)教學(xué)框架中,“優(yōu)化思想”已經(jīng)隨著教師的教學(xué)活動(dòng)的開(kāi)展逐步被潛移默化地運(yùn)用。“優(yōu)化思想”是在有限種或無(wú)限種可行方案(決策)中挑選最優(yōu)的、最合理的方案(決策)的思想。問(wèn)題的規(guī)模越大、復(fù)雜性越高,“優(yōu)化思想”在解決問(wèn)題的過(guò)程中應(yīng)用的價(jià)值也就越明顯。全國(guó)大多數(shù)區(qū)域初中信息技術(shù)課中安排了程序設(shè)計(jì)教學(xué)內(nèi)容,這部分知識(shí)在現(xiàn)階段教材中大多采用VB軟件作為教學(xué)用軟件。以這個(gè)軟件為例,教師在教學(xué)中需要不斷啟發(fā)學(xué)生對(duì)“優(yōu)化”一詞進(jìn)行體會(huì),并且通過(guò)優(yōu)化以達(dá)到節(jié)約代碼量、高效解決問(wèn)題的目的。本文就以日期格式這個(gè)實(shí)際問(wèn)題來(lái)看“優(yōu)化思想”在初中VB教學(xué)中的運(yùn)用。

● 問(wèn)題的提出

在生活中,我們常用某年某月某日這樣的格式來(lái)表示日期,而在計(jì)算機(jī)中提供了許多種不同的格式。但在一些特殊情況下需要將年月日全部提取出來(lái)組合為一個(gè)8位日期,如2018年10月18日對(duì)應(yīng)的8位日期值是“20181018”,2019年7月8日對(duì)應(yīng)的8位日期值是“20190708”。根據(jù)學(xué)生的學(xué)習(xí)進(jìn)度,VB提供的函數(shù)只能獲取指定日期的月份和日期,但是當(dāng)月份和日期為一位數(shù)的時(shí)候并不會(huì)加以處理。例如,2019年7月8日利用函數(shù)實(shí)際獲得的內(nèi)容是“201978”,這就是一個(gè)常見(jiàn)的日期格式問(wèn)題,如果不去引導(dǎo)學(xué)生運(yùn)用“優(yōu)化思想”來(lái)解決,將會(huì)給整個(gè)程序的運(yùn)行和后續(xù)學(xué)習(xí)的理解帶來(lái)麻煩。

● 問(wèn)題的解決

在程序設(shè)計(jì)中,由于算法不同、程序語(yǔ)句的選擇與編寫(xiě)不同,程序執(zhí)行的效果與效率也不同。為了能夠使解決問(wèn)題的一般程序語(yǔ)句最少、占用內(nèi)存量少、處理速度最快、外部設(shè)備使用效率最高,于是便產(chǎn)生了通過(guò)對(duì)幾個(gè)不同的程序進(jìn)行比較、修改、調(diào)整或重新編寫(xiě),把一般程序變換成最優(yōu)程序的思想。當(dāng)問(wèn)題被提出以后,學(xué)生開(kāi)始思考是否有相應(yīng)的函數(shù)可以直接得出對(duì)應(yīng)的格式日期,但是小組之間討論了很久都沒(méi)有得出結(jié)論,于是我提醒學(xué)生,當(dāng)沒(méi)有指定功能的函數(shù)時(shí),我們可以利用函數(shù)構(gòu)造新的更高級(jí)的函數(shù)。在我的指導(dǎo)下,學(xué)生找到了VB軟件提供的year、month、day、now等基礎(chǔ)函數(shù),并且嘗試?yán)眠@些函數(shù)構(gòu)造8位完整的年月日數(shù)據(jù)。假設(shè)我們用變量SDate表示結(jié)果,再考慮到代碼的易讀性,就會(huì)有代碼1產(chǎn)生(如圖1)。

這樣的代碼可讀性較高,在編寫(xiě)過(guò)程中學(xué)生也比較容易掌握賦值語(yǔ)句的寫(xiě)法,但是過(guò)于繁冗。多出的3個(gè)變量,雖然不會(huì)影響程序的整體運(yùn)行效率,但是從軟件開(kāi)發(fā)的整體設(shè)計(jì)思路來(lái)說(shuō),需要進(jìn)行精簡(jiǎn),減少不必要的變量調(diào)用,那么我們的代碼可以優(yōu)化為代碼2(如上頁(yè)圖2)。

假設(shè)now()函數(shù)取得的時(shí)間數(shù)據(jù)是“2019-7-8 12∶20∶20”,year函數(shù)用于獲取括號(hào)內(nèi)日期的年份,month函數(shù)用于獲取括號(hào)內(nèi)日期的月份,day函數(shù)用于獲取括號(hào)內(nèi)日期的日期。那么變量a的值是2019,b的值是7,c的值是8,構(gòu)造的SDate變量值為201978。因?yàn)楹瘮?shù)功能的限制,我們無(wú)法取得月份、日期兩個(gè)數(shù)據(jù)的兩位數(shù)寫(xiě)法,也就是20190708。如b的值我們希望是07,而不是7。至此我們就需要在不足兩位數(shù)的月份和日期前補(bǔ)上一個(gè)“0”,才能滿足數(shù)據(jù)要求。

此刻學(xué)生開(kāi)始分組研討該如何給需要補(bǔ)上“0”的數(shù)據(jù)補(bǔ)上“0”。學(xué)生在討論中得出結(jié)論:最重要的就是要判斷哪些日期需要加“0”。從月份和日期數(shù)據(jù)上看,1~9月都需要補(bǔ)一個(gè)“0”,1~9日也需要補(bǔ)一個(gè)“0”。此刻我一步步引導(dǎo)學(xué)生去觀察數(shù)據(jù)特征,得出只要判斷其長(zhǎng)度即可找到需要補(bǔ)“0”的數(shù)據(jù)解決方法。在我的不斷引導(dǎo)下,學(xué)生找到了判斷字符長(zhǎng)度的len函數(shù),結(jié)合已經(jīng)學(xué)習(xí)的IF判斷語(yǔ)句即可解決問(wèn)題。按照常規(guī)的代碼編寫(xiě)方法,我逐步引導(dǎo)學(xué)生將代碼改寫(xiě)為代碼3(如圖3)。

代碼3就是可以完整實(shí)現(xiàn)程序功能的代碼,運(yùn)行后可以輸出“20190708”這樣的結(jié)果。于是我讓學(xué)生在黑板上幫我繪制了本代碼的流程圖,多個(gè)判斷語(yǔ)句的存在使得流程圖非常復(fù)雜,代碼中使用了IF和多重IF判斷語(yǔ)句,增加了代碼的復(fù)雜性,且過(guò)多的判斷語(yǔ)句和多次運(yùn)用函數(shù)獲取月份和日期的做法,降低了代碼的運(yùn)行效率。于是在這里,我繼續(xù)引導(dǎo)學(xué)生思考如何再優(yōu)化代碼。上述代碼中SDate的構(gòu)成次數(shù)太多,而且判斷次數(shù)也多,我們可否將判斷放在最前面,構(gòu)造一個(gè)新的變量,然后將符合要求的變量進(jìn)行組合?在我的啟發(fā)下,學(xué)生找到了代碼4所示的解決方案(如圖4),進(jìn)一步提升了運(yùn)行效率。

代碼4比起代碼3已經(jīng)有了很大的優(yōu)化,結(jié)構(gòu)簡(jiǎn)單而且可讀性增加,重復(fù)調(diào)用的問(wèn)題已經(jīng)被解決。在我的引導(dǎo)下,學(xué)生也在黑板上幫我將原先的流程圖簡(jiǎn)化了許多,但是依舊存在多個(gè)判斷語(yǔ)句。這部分代碼在實(shí)際教學(xué)中,學(xué)生在教師的引導(dǎo)下基本可以達(dá)到,“優(yōu)化思想”也不斷啟發(fā)著學(xué)生如何才能進(jìn)一步優(yōu)化代碼段。這段代碼在實(shí)際運(yùn)行中,還會(huì)建立兩次判斷語(yǔ)句,運(yùn)用b、c兩個(gè)新的變量。于是我進(jìn)一步引導(dǎo)學(xué)生,充分運(yùn)用優(yōu)化的思想去剖析代碼:如何不用IF語(yǔ)句也能達(dá)到判斷或者解決長(zhǎng)度為1的月份、日期變成兩位數(shù)呢?

在教學(xué)的過(guò)程中我不斷啟發(fā)學(xué)生思考數(shù)學(xué)的借位算法,于是我將1到12月的12個(gè)數(shù)字在黑板上向下排開(kāi),一位數(shù)的前面加上“0”的時(shí)候,分組討論的學(xué)生瞬間想到了解決方案,即不去判斷變量長(zhǎng)度,所有月份都在前面補(bǔ)一位“0”,然后直接從右向左取兩位數(shù)即可。于是學(xué)生立刻用Right函數(shù)將代碼4優(yōu)化為代碼5(如圖5)。

最終的代碼不但實(shí)現(xiàn)了要求,解決了日期格式問(wèn)題,而且大大提升了運(yùn)行的效率。學(xué)生在繪制完流程圖后驚奇地發(fā)現(xiàn),流程圖也被精簡(jiǎn)到了最大程度。從代碼1到代碼5,體現(xiàn)的是運(yùn)用計(jì)算機(jī)軟件解決問(wèn)題的一般過(guò)程,同時(shí)也體現(xiàn)了“優(yōu)化思想”在VB教學(xué)中的運(yùn)用,而通過(guò)本案例也總結(jié)了初中VB教學(xué)中“優(yōu)化思想”的教學(xué)建議。

● 問(wèn)題的解決引發(fā)關(guān)于“優(yōu)化思想”運(yùn)用的思考

首先,將算法作為信息技術(shù)“優(yōu)化思想”的核心,讓學(xué)生運(yùn)用算法思維去優(yōu)化程序設(shè)計(jì)。不同的算法會(huì)影響程序編寫(xiě)的方法、程序編寫(xiě)的語(yǔ)言及程序編寫(xiě)的難易程度,所以,算法的優(yōu)劣將直接影響所編程序的質(zhì)量,可以說(shuō)算法是程序的靈魂。我們對(duì)程序進(jìn)行優(yōu)化,實(shí)際上就是對(duì)算法進(jìn)行優(yōu)化,在教學(xué)中,我為了解決這個(gè)實(shí)際問(wèn)題,在代碼4已經(jīng)解決了問(wèn)題后,又重新進(jìn)行了代碼的算法選擇,極大地提升了解決問(wèn)題的效率。

類似的問(wèn)題還出現(xiàn)在數(shù)學(xué)計(jì)算上,如求“1+2+…+100=”的值。對(duì)于這道題,我們可以采取循環(huán)結(jié)構(gòu)程序進(jìn)行設(shè)計(jì),分析過(guò)程如圖6所示。

如果用VB程序進(jìn)行編寫(xiě),最后得到的程序語(yǔ)句如圖7所示。如果我們采用高斯算法進(jìn)行編寫(xiě),則該程序的編寫(xiě)就更加簡(jiǎn)單、高效,參考程序如圖8所示。

很顯然,采用第二種算法,程序編寫(xiě)更加簡(jiǎn)單,運(yùn)行起來(lái)也更加高效。因此,程序優(yōu)化要優(yōu)化程序編寫(xiě)的過(guò)程與語(yǔ)句,使程序更容易編寫(xiě)。

要想讓學(xué)生能夠在進(jìn)行程序編寫(xiě)時(shí)將所編寫(xiě)出來(lái)的程序最優(yōu)化,培養(yǎng)學(xué)生的算法思維必不可少。祝智庭教授在《新世紀(jì) 新理念 新教材》中提出,算法思維通常被認(rèn)為是解決問(wèn)題的過(guò)程性思維方法,但我們可進(jìn)一步把算法思維看作是人與機(jī)器共通的思維形式。算法思維就是要能夠清楚地說(shuō)明其規(guī)則。能將一個(gè)復(fù)雜的問(wèn)題轉(zhuǎn)化成幾小塊并將其進(jìn)一步簡(jiǎn)化,這才是其本質(zhì)所在,也是數(shù)學(xué)、科學(xué)和設(shè)計(jì)領(lǐng)域的一項(xiàng)重要技能。在程序設(shè)計(jì)教學(xué)中,教師應(yīng)通過(guò)對(duì)學(xué)生進(jìn)行算法思維訓(xùn)練與培養(yǎng),使學(xué)生能夠清楚地懂得其中的規(guī)則,將一個(gè)復(fù)雜的問(wèn)題轉(zhuǎn)化成幾小塊并將其進(jìn)一步簡(jiǎn)化。而對(duì)學(xué)生進(jìn)行算法思維的培養(yǎng),則主要看重一個(gè)人是否具有條理化、反思性的思維習(xí)慣,能否將問(wèn)題的細(xì)枝末節(jié)與總體規(guī)劃相結(jié)合地考慮問(wèn)題,這是決定其是否能夠成功地解決問(wèn)題的一個(gè)關(guān)鍵性因素。

其次,結(jié)合現(xiàn)實(shí),提出問(wèn)題,探討優(yōu)化策略,滲透“優(yōu)化思想”。在學(xué)科領(lǐng)域,針對(duì)學(xué)科核心思想的優(yōu)化研究,研究得比較多的是數(shù)學(xué)學(xué)科,其“優(yōu)化思想”主要集中在如何解決數(shù)學(xué)問(wèn)題上。而在信息技術(shù)學(xué)科中,我們應(yīng)該結(jié)合現(xiàn)實(shí)問(wèn)題,與學(xué)生展開(kāi)探討,在解決實(shí)際問(wèn)題的過(guò)程中讓學(xué)生體悟解決該類問(wèn)題的方法,從中提煉出相關(guān)的優(yōu)化規(guī)則與思想,形成知識(shí)結(jié)構(gòu),這樣的過(guò)程對(duì)知識(shí)的掌握和理解程度甚至學(xué)科素養(yǎng)的培養(yǎng)都大有益處。

本文用日期格式的問(wèn)題展現(xiàn)了“優(yōu)化思想”如何在教師的運(yùn)用下,逐步引導(dǎo)學(xué)生去思考解決問(wèn)題并用更優(yōu)化的方式解決。生活中我們常見(jiàn)的泡茶問(wèn)題,將兩種解決方法放在一起,也會(huì)出現(xiàn)更優(yōu)的選擇:

方法一:

N1:準(zhǔn)備泡茶材料(茶杯、茶葉、水壺);

N2:在茶杯中放茶葉;

N3:將水壺中的水燒開(kāi);

N4:泡茶。

方法二:

N1:取水壺?zé)_(kāi)水;

N2:在燒水的等待中取茶杯、茶葉;

N3:水開(kāi)后,泡茶。

從上面的例子中可以看出方法二明顯優(yōu)于方法一。日期格式問(wèn)題只是我們?cè)诰幊探鉀Q實(shí)際問(wèn)題中遇到的其中一個(gè),還有許多問(wèn)題值得研究和探索。比如計(jì)算星期幾、計(jì)算閏年等題目類型,都需要結(jié)合我們的現(xiàn)實(shí)情況給出相對(duì)應(yīng)的引導(dǎo)策略,一步步地吸引學(xué)生去開(kāi)展更高效的學(xué)習(xí)。

最后,結(jié)合實(shí)踐操作,充分利用流程圖,感悟“優(yōu)化思想”。在程序編寫(xiě)的過(guò)程中,帶領(lǐng)學(xué)生繪制對(duì)應(yīng)代碼的流程圖,依托流程圖去優(yōu)化代碼并且感悟“優(yōu)化思想”。這一點(diǎn)在本節(jié)課中有較多體現(xiàn),從原來(lái)使用了IF語(yǔ)句的代碼結(jié)構(gòu)到后來(lái)最終的代碼,結(jié)構(gòu)發(fā)生了巨大的變化。不斷優(yōu)化的過(guò)程中隨之帶來(lái)的是效率的提升和代碼量的減少,甚至解決問(wèn)題的思路都發(fā)生了巨大變化,在這個(gè)過(guò)程中學(xué)生也能充分感受到“優(yōu)化思想”的巨大價(jià)值。

“優(yōu)化思想”對(duì)學(xué)生的影響是非常大的,今后他們?cè)谶\(yùn)用信息技術(shù)解決問(wèn)題時(shí),會(huì)去主動(dòng)尋找各種優(yōu)化的方法,從這個(gè)角度上講,“優(yōu)化思想”的掌握也有利于學(xué)生信息素養(yǎng)的提升。在信息技術(shù)學(xué)科的教學(xué)中,尤其是VB程序設(shè)計(jì)的教學(xué),我們不能僅局限于優(yōu)化方法的講授,而是應(yīng)著重對(duì)學(xué)生進(jìn)行“優(yōu)化思想”的滲透,積極引導(dǎo)學(xué)生運(yùn)用“優(yōu)化思想”去嘗試解決遇到的問(wèn)題,這對(duì)師生的教與學(xué)來(lái)說(shuō)都是很有價(jià)值的。

猜你喜歡
代碼語(yǔ)句程序
給Windows添加程序快速切換欄
簡(jiǎn)化化學(xué)平衡移動(dòng)教學(xué)程序探索
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
神秘的代碼
一周機(jī)構(gòu)凈增(減)倉(cāng)股前20名
重要股東二級(jí)市場(chǎng)增、減持明細(xì)
近期連續(xù)上漲7天以上的股
基本算法語(yǔ)句
我喜歡
喀喇| 高邮市| 囊谦县| 山西省| 天水市| 阆中市| 宜阳县| 门头沟区| 涪陵区| 海伦市| 新宁县| 司法| 本溪市| 哈尔滨市| 临湘市| 巴南区| 兴安县| 勐海县| 石屏县| 长寿区| 安仁县| 恩平市| 濮阳市| 尉氏县| 兴安盟| 定边县| 章丘市| 库伦旗| 凤庆县| 萝北县| 张掖市| 和龙市| 修文县| 南召县| 小金县| 盘锦市| 九龙县| 岐山县| 巫山县| 大悟县| 临邑县|