• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    高中程序設(shè)計(jì)中的算法優(yōu)化

    2019-02-15 08:38:48凌忠寶
    考試周刊 2019年14期
    關(guān)鍵詞:計(jì)算思維

    摘 要:信息學(xué)奧賽以培養(yǎng)學(xué)生的學(xué)習(xí)興趣為主,讓學(xué)生的核心素養(yǎng)得以提高。本文通過“百錢買百雞”問題的教學(xué)設(shè)計(jì)案例分析,在學(xué)生已有的數(shù)學(xué)知識(shí)的基礎(chǔ)之上,逐步引導(dǎo)學(xué)生進(jìn)行算法優(yōu)化,有效提高學(xué)生的計(jì)算思維這一核心素養(yǎng),培養(yǎng)他們發(fā)現(xiàn)問題、分析問題和解決問題的能力。

    關(guān)鍵詞:百錢買百雞;計(jì)算思維;時(shí)間復(fù)雜度;算法優(yōu)化

    筆者從事高中信息學(xué)奧賽多年,有一點(diǎn)感觸——開始學(xué)習(xí)這門課的學(xué)生和動(dòng)力都很大(因?yàn)橛X得很好玩,也很簡單)沒有涉及算法,就是簡單輸入輸出和一些簡單的語法,學(xué)生可以很輕松地解決一個(gè)問題,很有成就感。但是自從接觸了循環(huán)之后,有些學(xué)生已經(jīng)堅(jiān)持不了了,我仔細(xì)分析了原因:①學(xué)生缺少興趣;②學(xué)生沒有學(xué)習(xí)算法的主動(dòng)性;③學(xué)生對算法設(shè)計(jì)比較厭煩(覺得很枯燥,就是部分學(xué)生說的有的算法很燒腦);④學(xué)生的數(shù)學(xué)知識(shí)可能與程序設(shè)計(jì)的要求不一致(數(shù)學(xué)知識(shí)要滯后);⑤很有可能是我們的教法過于簡單陳舊。所以我們今后要做好這項(xiàng)工作就必須根據(jù)具體的情況制定出可行的措施對學(xué)生進(jìn)行施教。為該課程打下較好興趣基礎(chǔ)。

    “百錢買百雞”是一個(gè)古老的問題,具體解決的方法可以根據(jù)學(xué)生自己在初中學(xué)到的知識(shí)完成程序設(shè)計(jì),然后可以在程序運(yùn)行的時(shí)間復(fù)雜度上提出相應(yīng)的要求,讓學(xué)生不斷地修改程序來進(jìn)行算法的優(yōu)化,最終達(dá)到從1000000次運(yùn)算優(yōu)化到4次運(yùn)算。在這個(gè)過程中老師要不斷地加以引導(dǎo),還要不時(shí)地與學(xué)生進(jìn)行交流,找到學(xué)生理解困難的地方,并及時(shí)加以講解,一步一步地讓學(xué)生進(jìn)入自己所預(yù)設(shè)的操作當(dāng)中。要對我們預(yù)設(shè)的效果進(jìn)行合理合法的算法設(shè)計(jì)與分析,讓學(xué)生不斷地了解優(yōu)化算法的重要性(為什么我們同樣的程序雖然大家都可以得出正確的答案,但是有的同學(xué)寫的程序運(yùn)行效率很高,有些同學(xué)編寫的程序運(yùn)行時(shí)間很長),從而進(jìn)一步激發(fā)學(xué)生學(xué)習(xí)這門課的興趣。為信息學(xué)奧賽打下良好的基礎(chǔ)。

    百錢買百雞的問題描述:公元前五世紀(jì),我國古代數(shù)學(xué)家張丘建在《算經(jīng)》一書中提出了“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?翻譯為現(xiàn)代漢語的意思是:一只公雞賣5文錢,一只母雞賣3文錢,三只小雞賣1文錢,問100文錢

    買100只雞,可以買多少只公雞?多少只母雞?多少只小雞?

    教師在引導(dǎo)學(xué)生理解了題目意思之后,可以讓學(xué)生獨(dú)立完成程序設(shè)計(jì),學(xué)生的一般寫法一般都會(huì)用到三重循環(huán)和二重循環(huán)。當(dāng)然他們幾乎都沒有對程序算法進(jìn)行優(yōu)化或者說進(jìn)行了簡單的、粗暴的優(yōu)化。三重循環(huán)就沒有優(yōu)化,就是用暴力的循環(huán)完成。公雞、母雞和小雞都是從0到100之間,讓計(jì)算機(jī)用窮舉法列出符合的結(jié)果。簡單的初步優(yōu)化可以考慮100文全買公雞應(yīng)該是20,全買母雞應(yīng)該是34,最多買100只小雞。這樣對公雞、母雞和小雞進(jìn)行了初步的模糊范圍進(jìn)行修改優(yōu)化。三重循環(huán)的偽代碼如下:

    //算法1 三重循環(huán)不優(yōu)化

    Void bqmbj1( )

    { int x,y,z; //x公雞數(shù)y母雞數(shù)z小雞數(shù)

    For(x=0;x<=100;x++)

    For(y=0;y<=100;y++)

    For(z=0;z<=100;z++)

    If(x+y+z==100&&5*x+3*y+z/3==100&&z;%3==0)

    Cout<

    }

    //算法2 三重循環(huán)初步優(yōu)化

    Void bqmbj2( )

    { int x,y,z; //x公雞數(shù)y母雞數(shù)z小雞數(shù)

    For(x=0;x<=20;x++)

    For(y=0;y<=34;y++)

    For(z=0;z<=100;z++)

    If(x+y+z==100&&5*x+3*y+z/3==100&& z%3==0)

    Cout<

    }

    在三重循環(huán)基礎(chǔ)之上我們進(jìn)一步分析三個(gè)變量之間的關(guān)系,第三個(gè)變量只要通過前面的兩個(gè)變量就可以得出,即z=100-x-y;由于減少了變量的個(gè)數(shù),所以我們可以寫出下面兩個(gè)算法,算法3就是不優(yōu)化的二重循環(huán),而算法4就是考慮了公雞最多買20只,母雞最多34只。二重循環(huán)的偽代碼如下:

    //算法3 二重循環(huán)不優(yōu)化

    Void bqmbj3( )

    { intx,y,z; //x公雞數(shù)y母雞數(shù)z小雞數(shù)

    For(x=0;x<=100;x++)

    For(y=0;y<=100;y++){

    z=100-x-y;

    If(x+y+z==100&&5*x+3*y+z/3==100&&z;%3==0)

    Cout<

    }

    //算法4 二重循環(huán)初步優(yōu)化

    Void bqmbj3( )

    { int x,y,z; //x公雞數(shù)y母雞數(shù)z小雞數(shù)

    For(x=0;x<=20;x++)

    For(y=0;y<=34;y++){

    z=100-x-y;

    If(x+y+z==100&&5*x+3*y+z/3==100&& z%3==0)

    Cout<

    }

    從上面列舉的四個(gè)算法,雖然偽代碼差不多,但是優(yōu)化之后的程序在時(shí)間復(fù)雜度上有了質(zhì)的變化。

    我們看IF語句的執(zhí)行頻度,運(yùn)算量1030301次降到714次,體會(huì)到算法優(yōu)化的優(yōu)越性,也就告誡我們既要能算法設(shè)計(jì),也要有算法優(yōu)化的理念。盡可能寫出最優(yōu)的算法。

    對這個(gè)程序我們還可以進(jìn)一步進(jìn)行優(yōu)化,最終實(shí)現(xiàn)一重循環(huán)。我們在施教程序優(yōu)化的過程中要注意循序漸進(jìn),一步一步把學(xué)生引入最優(yōu)算法。當(dāng)然這里必須要以學(xué)生的數(shù)學(xué)知識(shí)作為基礎(chǔ)。否則算法優(yōu)化只能說一個(gè)空中樓閣。大家在平時(shí)的施教中灌輸算法優(yōu)化的思想,加強(qiáng)計(jì)算思維的訓(xùn)練,為學(xué)生的終身發(fā)展奠定必要的基礎(chǔ)。

    參考文獻(xiàn):

    [1]胡峰,王國胤.算法分析與設(shè)計(jì)[J].當(dāng)代教育理論與實(shí)踐,2011(12):72-74.

    [2]鄧春燕,張長海等.如何有效培養(yǎng)和提高高級語言程序設(shè)計(jì)學(xué)習(xí)興趣[J].計(jì)算機(jī)教育,2011(8).

    作者簡介:凌忠寶,江蘇省泰州市,泰州市姜堰區(qū)張甸中學(xué)。

    猜你喜歡
    計(jì)算思維
    適合高中生計(jì)算思維能力培養(yǎng)的程序設(shè)計(jì)語言初探
    高中信息技術(shù)課堂中計(jì)算思維能力培養(yǎng)問題的探討
    基于計(jì)算思維視角的計(jì)算機(jī)基礎(chǔ)課程改革
    商情(2016年39期)2016-11-21 09:41:50
    公安專業(yè)學(xué)生計(jì)算思維能力培養(yǎng)對策初探
    基于計(jì)算思維的多媒體技術(shù)及應(yīng)用課程教學(xué)模式研究
    信管專業(yè)計(jì)算機(jī)科學(xué)概論課程的教學(xué)改革實(shí)踐
    基于計(jì)算思維的軟件類研究生高級算法課程教學(xué)研究
    基于計(jì)算思維程序設(shè)計(jì)的軍事案例研究
    程序設(shè)計(jì)課程中計(jì)算思維和應(yīng)用能力培養(yǎng)問題研究
    民族高校C語言程序設(shè)計(jì)課程教學(xué)改革的研究
    軟件工程(2016年8期)2016-10-25 16:03:32
    清涧县| 扬州市| 永顺县| 浙江省| 金门县| 佛坪县| 鄂托克前旗| 龙南县| 五华县| 松江区| 如东县| 孟州市| 凤庆县| 屏山县| 武鸣县| 武定县| 毕节市| 商水县| 象州县| 剑河县| 长沙县| 重庆市| 吉木乃县| 通江县| 光山县| 五大连池市| 襄垣县| 双柏县| 辛集市| 清涧县| 鸡东县| 肥乡县| 三台县| 南宫市| 海宁市| 横峰县| 华亭县| 泗洪县| 无为县| 永善县| 馆陶县|