999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VB程序連乘算法的教學設計

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

何海燕

摘 要:該文主要對程序設計課程中的連乘算法進行教學設計,結合實例介紹了連乘算法的關鍵點,對算法中經常會遇到的內存溢出問題進行解析,針對連乘算法的通用表達式進行了優化,使程序更易理解,達到加深理解,優化教學效果。

關鍵詞:程序設計 算法 連乘算法 溢出

中圖分類號:G64 文獻標識碼:A 文章編號:1672-3791(2015)12(a)-0220-02

在程序設計課程中,算法是課程的重點,同時也是難點,如何將算法原理向學生講解透徹并可以讓其輕松接受,是在教學過程中需要思考的一個問題。

在計算機中,算法(Algorithm)是對特定問題求解步驟的一種描述,它是指令序列的集合。程序設計就是設計算法、編寫代碼、調試運行的過程。顯而易見,算法是程序設計的基礎,程序設計是算法的具體實現。在程序設計課程的教學設計過程中,常用算法一般包括求最大/最小值、累加/連乘、窮舉法、遞推法等,該文將主要針對連乘算法進行分析。

1 連乘算法

在程序基礎教學中,為了提高教學效果,針對剛入門的程序設計初學者,教師們一般采用任務驅動法[1]進行算法的分析,引導學生理解和掌握該算法的核心思想,進而再用程序的方式來描述與驗證該算法。例如:

以上是一個典型的連乘算法,該算法描述的關鍵點可歸納如下:

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

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

①用T表示每一項的值:T=T+1。

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

(3)循環終止條件: 循環次數>n。

(4)初始化:S=1 。

2 內存溢出問題

在講解程序算法時,大多數程序設計教程都很少提及賦值或計算中的“溢出”問題,然而在學生的編程操作中,“溢出”卻是經常會遇到的一個問題[2],這些問題常常會讓學生覺得困惑,查找原因時卻無從下手,導致學生出現畏難情緒。因此,教師有必要在授課過程中,對程序在內存中的存儲方式進行初步講解,讓學生可以了解程序的運行機制,加深理解。

軟件在運行過程中,如果程序調用的數據文件過大,或程序設計中存在著死循環等bug,軟件寫入內存中的數據量超過了系統分配給該軟件的內存空間大小,則會發生內存空間裝不下而溢出的現象,這種現象就叫內存溢出。在求階乘的算法中,由于階乘的結果累積速度較快較大,容易發生數據溢出。

讓學生進行程序的調試與運行,當n=10和=50時運行結果如圖1所示,但當n=100時,卻彈出如圖2所示的警告信息。

分析導致“溢出”錯誤的原因:

當程序運行發生“溢出”錯誤時,通過調試跟蹤,在T=(2* i) ^ 2/((2*i-1)*(2*i+1))語句處,把光標移至i變量上,可以發現溢出時i的值為91;當i=91時,表達式((2*i-1)*(2*i+1))=<溢出>,該表達式的值為33123。程序將結果值S設置為double類型,當i=91時,結果為33123,這個值按道理應在double類型的數值范圍內,但程序仍然發生了溢出錯誤,問題在哪里呢?

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

根據上面的原因分析,可以從以下幾方面進行修正:

(1)將變量 i 定義為長整型或實數型或變體型。

(2)將錯誤語句中的變量 i或常量(1或2)其一操作數利用轉換函數Clng(i)或Clng(1),以求足以容納計算結果。

(3)避免大數相乘,可將錯誤語句改為T=(2*i)^ 2/(2*i - 1)/(2*i+1)。

(4)連乘算法的改進。

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

可以把通項表達式T=(2*i)^2/(2*i-1)*(2*i+1)中的分子式分解開來,把問題理解為簡單表達式T=A/B(其中A=(2*i)^2和B=(2*i-1)*(2*i+1),如此一來問題就變得較為簡單且易于解決。因此,求∏的近似值的VB程序代碼優化實現如下:

在此例中,關鍵點在于如何將復雜的通項表達式分解為簡單表達式,進而實現連乘算法的優化。因此,如何構造通項表達式尤為關鍵,必須注意2點。

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

(2)必須精選變量A與B的數據類型,避免出現“溢出”。

3 結語

該文對程序設計課程中關于連乘算法的問題進行了初步探討,指出程序設計初學者中學習過程中經常會遇到的“溢出”問題,提出修正方法,并對連乘算法進行改進優化,加深理解,強化教學效果。

參考文獻

[1] 楊晨霞,涂風濤.任務驅動教學法在Visual Basic程序設計教學中的應用[J].職教論壇,2012(18):79-81.

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

主站蜘蛛池模板: 理论片一区| 亚洲综合九九| 亚洲男女在线| 国产又粗又猛又爽| 日本欧美在线观看| 国产性猛交XXXX免费看| 亚洲欧美成aⅴ人在线观看| 亚洲午夜福利精品无码| 亚洲国产清纯| 欧美国产三级| 成人国产精品一级毛片天堂| 精品综合久久久久久97超人该| 天天综合色天天综合网| 日韩无码黄色网站| 日韩欧美在线观看| 91精品啪在线观看国产91| 东京热一区二区三区无码视频| 亚洲综合色区在线播放2019| 香蕉精品在线| 亚洲日韩精品综合在线一区二区| 国产精品伦视频观看免费| 亚洲天堂日韩在线| 国产美女丝袜高潮| 亚洲国产成人麻豆精品| 丁香五月亚洲综合在线| 亚洲二三区| 久久精品国产999大香线焦| 国产电话自拍伊人| 国产欧美日韩在线一区| 国产欧美又粗又猛又爽老| a级毛片免费看| 国产成人a毛片在线| 久久久国产精品免费视频| 亚洲成在人线av品善网好看| 成人精品午夜福利在线播放| 99久久婷婷国产综合精| 久久香蕉国产线| 日本国产精品一区久久久| 欧美福利在线播放| 美女裸体18禁网站| 国产日产欧美精品| 国产亚洲欧美在线视频| 国产一级裸网站| 青青草原国产| 在线亚洲小视频| 91精品专区国产盗摄| 茄子视频毛片免费观看| 色欲国产一区二区日韩欧美| 国产高潮流白浆视频| 亚洲美女一区二区三区| 人人妻人人澡人人爽欧美一区| 91成人免费观看在线观看| 亚洲成人高清无码| 狠狠色综合久久狠狠色综合| 永久免费无码日韩视频| 综1合AV在线播放| 国产原创第一页在线观看| 亚洲人成在线精品| 久久不卡国产精品无码| 亚洲综合色在线| 青青草久久伊人| 国产精品久久久久久久久久98| 欧洲av毛片| 日韩激情成人| 国产爽爽视频| 视频国产精品丝袜第一页| 免费看美女毛片| 色综合日本| 久久久精品无码一区二区三区| 丁香五月婷婷激情基地| 欧美日韩精品综合在线一区| 国产成人综合日韩精品无码不卡| 久久大香香蕉国产免费网站| 国产二级毛片| 成人福利在线看| 97精品伊人久久大香线蕉| 日韩一二三区视频精品| 97免费在线观看视频| 国产第一页免费浮力影院| 69国产精品视频免费| 亚洲A∨无码精品午夜在线观看| 国产视频资源在线观看|