亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VB程序連乘算法的教學(xué)設(shè)計(jì)

        2015-07-05 07:59:30何海燕
        科技資訊 2015年34期

        何海燕

        摘 要:該文主要對(duì)程序設(shè)計(jì)課程中的連乘算法進(jìn)行教學(xué)設(shè)計(jì),結(jié)合實(shí)例介紹了連乘算法的關(guān)鍵點(diǎn),對(duì)算法中經(jīng)常會(huì)遇到的內(nèi)存溢出問(wèn)題進(jìn)行解析,針對(duì)連乘算法的通用表達(dá)式進(jìn)行了優(yōu)化,使程序更易理解,達(dá)到加深理解,優(yōu)化教學(xué)效果。

        關(guān)鍵詞:程序設(shè)計(jì) 算法 連乘算法 溢出

        中圖分類(lèi)號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2015)12(a)-0220-02

        在程序設(shè)計(jì)課程中,算法是課程的重點(diǎn),同時(shí)也是難點(diǎn),如何將算法原理向?qū)W生講解透徹并可以讓其輕松接受,是在教學(xué)過(guò)程中需要思考的一個(gè)問(wèn)題。

        在計(jì)算機(jī)中,算法(Algorithm)是對(duì)特定問(wèn)題求解步驟的一種描述,它是指令序列的集合。程序設(shè)計(jì)就是設(shè)計(jì)算法、編寫(xiě)代碼、調(diào)試運(yùn)行的過(guò)程。顯而易見(jiàn),算法是程序設(shè)計(jì)的基礎(chǔ),程序設(shè)計(jì)是算法的具體實(shí)現(xiàn)。在程序設(shè)計(jì)課程的教學(xué)設(shè)計(jì)過(guò)程中,常用算法一般包括求最大/最小值、累加/連乘、窮舉法、遞推法等,該文將主要針對(duì)連乘算法進(jìn)行分析。

        1 連乘算法

        在程序基礎(chǔ)教學(xué)中,為了提高教學(xué)效果,針對(duì)剛?cè)腴T(mén)的程序設(shè)計(jì)初學(xué)者,教師們一般采用任務(wù)驅(qū)動(dòng)法[1]進(jìn)行算法的分析,引導(dǎo)學(xué)生理解和掌握該算法的核心思想,進(jìn)而再用程序的方式來(lái)描述與驗(yàn)證該算法。例如:

        以上是一個(gè)典型的連乘算法,該算法描述的關(guān)鍵點(diǎn)可歸納如下:

        (1)每一項(xiàng)和每次連乘之積是變化量。

        (2)因此,需要兩個(gè)變量:

        ①用T表示每一項(xiàng)的值:T=T+1。

        ②用S表示連乘之積:S=S*T。

        (3)循環(huán)終止條件: 循環(huán)次數(shù)>n。

        (4)初始化:S=1 。

        2 內(nèi)存溢出問(wèn)題

        在講解程序算法時(shí),大多數(shù)程序設(shè)計(jì)教程都很少提及賦值或計(jì)算中的“溢出”問(wèn)題,然而在學(xué)生的編程操作中,“溢出”卻是經(jīng)常會(huì)遇到的一個(gè)問(wèn)題[2],這些問(wèn)題常常會(huì)讓學(xué)生覺(jué)得困惑,查找原因時(shí)卻無(wú)從下手,導(dǎo)致學(xué)生出現(xiàn)畏難情緒。因此,教師有必要在授課過(guò)程中,對(duì)程序在內(nèi)存中的存儲(chǔ)方式進(jìn)行初步講解,讓學(xué)生可以了解程序的運(yùn)行機(jī)制,加深理解。

        軟件在運(yùn)行過(guò)程中,如果程序調(diào)用的數(shù)據(jù)文件過(guò)大,或程序設(shè)計(jì)中存在著死循環(huán)等bug,軟件寫(xiě)入內(nèi)存中的數(shù)據(jù)量超過(guò)了系統(tǒng)分配給該軟件的內(nèi)存空間大小,則會(huì)發(fā)生內(nèi)存空間裝不下而溢出的現(xiàn)象,這種現(xiàn)象就叫內(nèi)存溢出。在求階乘的算法中,由于階乘的結(jié)果累積速度較快較大,容易發(fā)生數(shù)據(jù)溢出。

        讓學(xué)生進(jìn)行程序的調(diào)試與運(yùn)行,當(dāng)n=10和=50時(shí)運(yùn)行結(jié)果如圖1所示,但當(dāng)n=100時(shí),卻彈出如圖2所示的警告信息。

        分析導(dǎo)致“溢出”錯(cuò)誤的原因:

        當(dāng)程序運(yùn)行發(fā)生“溢出”錯(cuò)誤時(shí),通過(guò)調(diào)試跟蹤,在T=(2* i) ^ 2/((2*i-1)*(2*i+1))語(yǔ)句處,把光標(biāo)移至i變量上,可以發(fā)現(xiàn)溢出時(shí)i的值為91;當(dāng)i=91時(shí),表達(dá)式((2*i-1)*(2*i+1))=<溢出>,該表達(dá)式的值為33123。程序?qū)⒔Y(jié)果值S設(shè)置為double類(lèi)型,當(dāng)i=91時(shí),結(jié)果為33123,這個(gè)值按道理應(yīng)在double類(lèi)型的數(shù)值范圍內(nèi),但程序仍然發(fā)生了溢出錯(cuò)誤,問(wèn)題在哪里呢?

        實(shí)際上,產(chǎn)生這個(gè)溢出問(wèn)題的原因是由于VB本身的內(nèi)存分配機(jī)制造成的,VB在進(jìn)行計(jì)算過(guò)程中,它總是分配一個(gè)最省內(nèi)存的臨時(shí)內(nèi)存空間去存儲(chǔ)這些中間計(jì)算結(jié)果數(shù)值,這個(gè)最省的內(nèi)存空間容量根據(jù)表達(dá)式中數(shù)據(jù)類(lèi)型決定,如上述相乘的兩個(gè)表達(dá)式(2*i-1)和(2*i+1),他們當(dāng)中的變量i是整型,因此,VB也將使用一個(gè)類(lèi)型為整型的臨時(shí)變量來(lái)存儲(chǔ)兩個(gè)表達(dá)式的乘積。所以,當(dāng)i=91時(shí),得到乘積結(jié)果33 123,此時(shí)即使是乘積結(jié)果變量S設(shè)置為double類(lèi)型,但乘積結(jié)果(33 123)已超過(guò)了聲明為整型的臨時(shí)變量空間的極限(-32 768~+32 767),所以仍然會(huì)發(fā)生溢出錯(cuò)誤。

        根據(jù)上面的原因分析,可以從以下幾方面進(jìn)行修正:

        (1)將變量 i 定義為長(zhǎng)整型或?qū)崝?shù)型或變體型。

        (2)將錯(cuò)誤語(yǔ)句中的變量 i或常量(1或2)其一操作數(shù)利用轉(zhuǎn)換函數(shù)Clng(i)或Clng(1),以求足以容納計(jì)算結(jié)果。

        (3)避免大數(shù)相乘,可將錯(cuò)誤語(yǔ)句改為T(mén)=(2*i)^ 2/(2*i - 1)/(2*i+1)。

        (4)連乘算法的改進(jìn)。

        同一問(wèn)題可用不同算法解決,而一個(gè)算法的質(zhì)量?jī)?yōu)劣將影響到算法乃至程序的效率。雖然上述方法解決了“溢出”問(wèn)題,但是表達(dá)式T=(2*i)^2/(2*i-1)*(2*i+1)顯得很笨重,表達(dá)式明顯復(fù)雜。能否有辦法可以降低復(fù)雜度,簡(jiǎn)化表達(dá)式以求程序優(yōu)化呢?

        可以把通項(xiàng)表達(dá)式T=(2*i)^2/(2*i-1)*(2*i+1)中的分子式分解開(kāi)來(lái),把問(wèn)題理解為簡(jiǎn)單表達(dá)式T=A/B(其中A=(2*i)^2和B=(2*i-1)*(2*i+1),如此一來(lái)問(wèn)題就變得較為簡(jiǎn)單且易于解決。因此,求∏的近似值的VB程序代碼優(yōu)化實(shí)現(xiàn)如下:

        在此例中,關(guān)鍵點(diǎn)在于如何將復(fù)雜的通項(xiàng)表達(dá)式分解為簡(jiǎn)單表達(dá)式,進(jìn)而實(shí)現(xiàn)連乘算法的優(yōu)化。因此,如何構(gòu)造通項(xiàng)表達(dá)式尤為關(guān)鍵,必須注意2點(diǎn)。

        (1)通項(xiàng)表達(dá)式T=B/A中的A或B均可為常量或變量表達(dá)式,A和B可以繼續(xù)分解;①若A=1, 則T=B;②若B=1, 則T=1/A;

        (2)必須精選變量A與B的數(shù)據(jù)類(lèi)型,避免出現(xiàn)“溢出”。

        3 結(jié)語(yǔ)

        該文對(duì)程序設(shè)計(jì)課程中關(guān)于連乘算法的問(wèn)題進(jìn)行了初步探討,指出程序設(shè)計(jì)初學(xué)者中學(xué)習(xí)過(guò)程中經(jīng)常會(huì)遇到的“溢出”問(wèn)題,提出修正方法,并對(duì)連乘算法進(jìn)行改進(jìn)優(yōu)化,加深理解,強(qiáng)化教學(xué)效果。

        參考文獻(xiàn)

        [1] 楊晨霞,涂風(fēng)濤.任務(wù)驅(qū)動(dòng)教學(xué)法在Visual Basic程序設(shè)計(jì)教學(xué)中的應(yīng)用[J].職教論壇,2012(18):79-81.

        [2] 賈穎.“VB 程序設(shè)計(jì)”課程教學(xué)中的變量類(lèi)型使用問(wèn)題研究[J].Computer Education,2008(20):138-139.

        国产在线一区二区三区四区| 丝袜美女污污免费观看的网站| 成年女人在线观看毛片| 一区二区黄色素人黄色 | 性色av闺蜜一区二区三区| 亚洲男人的天堂网站| 国内自拍第一区二区三区| 李白姓白白又白类似的套路 | 少妇深夜吞精一区二区| av无码精品一区二区三区| 黑人巨大av在线播放无码 | 激情亚洲综合熟女婷婷| 午夜国产精品视频在线观看| 免费看av在线网站网址| 少妇高潮喷水久久久影院| 人妻丰满少妇一二三区| 国产精品日韩经典中文字幕| 精品少妇人妻av无码专区| 精品无码久久久九九九AV| 97超碰国产一区二区三区| 日本xxxx色视频在线观看| 18禁超污无遮挡无码免费游戏 | 亚洲天堂免费成人av| 亚洲国产色一区二区三区| 人人澡人人澡人人看添av| 无码一区东京热| 日韩人妖干女同二区三区| 亚洲精品色午夜无码专区日韩| 色拍拍在线精品视频| 久草国产手机视频在线观看| 久久久国产精品123| 一区二区三区日韩精品视频| 亚洲乱码国产乱码精品精| 无码中文字幕加勒比一本二本| 久草久热这里只有精品| 国偷自拍av一区二区三区| 日躁夜躁狠狠躁2001| 日韩av中出在线免费播放网站| 亚洲av高清不卡免费在线| 国产精品久久久久aaaa| a观看v视频网站入口免费|