本溪廣播電視大學(xué) 熊 慧
隨著現(xiàn)代信息技術(shù)的發(fā)展,計(jì)算機(jī)軟件技術(shù)已經(jīng)普遍應(yīng)用于人們工作、生活和學(xué)習(xí)的方方面面。對(duì)于計(jì)算機(jī)軟件來(lái)說(shuō),它的出現(xiàn)為人們的生活提供了便利,然而,對(duì)于功能相似的軟件來(lái)說(shuō),其受歡迎程度存在較大差異,導(dǎo)致這一問(wèn)題的主要原因在于不同軟件之間的數(shù)學(xué)算法存在區(qū)別。數(shù)學(xué)算法是一種理論模型架構(gòu),通過(guò)理論模型的設(shè)計(jì)來(lái)實(shí)現(xiàn)較高的邏輯效率,在計(jì)算機(jī)軟件編程設(shè)計(jì)過(guò)程中,數(shù)學(xué)算法的合理使用,能夠?qū)崿F(xiàn)計(jì)算機(jī)編程的優(yōu)化,使軟件的邏輯性和適用性得到提高。
在使用計(jì)算機(jī)解決現(xiàn)實(shí)問(wèn)題的過(guò)程中,需要考慮幾個(gè)方面的問(wèn)題,首先,當(dāng)前面對(duì)的問(wèn)題所適用的數(shù)學(xué)模型,并根據(jù)與之相適應(yīng)的數(shù)學(xué)模型確定數(shù)學(xué)算法;其次,在數(shù)學(xué)算法的指導(dǎo)下,利用計(jì)算機(jī)編程軟件進(jìn)行程序設(shè)計(jì);最后,對(duì)已經(jīng)編好的程序進(jìn)行測(cè)試,并根據(jù)測(cè)試結(jié)果進(jìn)行調(diào)整,最終得到符合要求的程序設(shè)計(jì)方案。
數(shù)學(xué)建模是解決生活中實(shí)際問(wèn)題的有效手段之一,之所以進(jìn)行數(shù)學(xué)建模,是為了將抽象的問(wèn)題進(jìn)行簡(jiǎn)單化處理,降低難度。然而,這并不意味著所有的問(wèn)題都可以通過(guò)數(shù)學(xué)建模的方式實(shí)現(xiàn),數(shù)學(xué)建模僅適用于具備一定規(guī)律的問(wèn)題的研究。數(shù)學(xué)模型構(gòu)建的過(guò)程,也就是尋找相關(guān)參數(shù)之間固定規(guī)律的過(guò)程,因此,基于數(shù)學(xué)模型的計(jì)算機(jī)編程優(yōu)化,其基礎(chǔ)就是對(duì)數(shù)學(xué)算法的掌握,否則,計(jì)算機(jī)編程優(yōu)化工作將無(wú)從下手。
隨著計(jì)算機(jī)軟件更新?lián)Q代速度的加快,計(jì)算機(jī)軟件的復(fù)雜程度不斷提高,這對(duì)于計(jì)算機(jī)軟件使用者來(lái)說(shuō)不失為一個(gè)好消息,然而,對(duì)于計(jì)算機(jī)編程人員來(lái)說(shuō),對(duì)已經(jīng)較為完善的軟件程序進(jìn)行完善和優(yōu)化,是一個(gè)極為“痛苦”的過(guò)程。所謂“痛苦”,是指計(jì)算機(jī)編程人員需要對(duì)其中的數(shù)學(xué)算法進(jìn)行調(diào)整,然而,計(jì)算機(jī)編程優(yōu)化是一個(gè)系統(tǒng)化的過(guò)程,程序內(nèi)不同模塊之間的計(jì)算結(jié)果存在必然聯(lián)系,一旦出現(xiàn)失誤,將導(dǎo)致極為嚴(yán)重的連鎖反應(yīng)。因此,為便于計(jì)算機(jī)編程優(yōu)化工作的開(kāi)展,在軟件設(shè)計(jì)之初,就應(yīng)當(dāng)選擇較為科學(xué)合理的數(shù)學(xué)模型,并根據(jù)實(shí)際問(wèn)題進(jìn)行算法設(shè)計(jì),在后期編程階段,對(duì)算法的適用性進(jìn)行檢驗(yàn),并根據(jù)檢驗(yàn)結(jié)果調(diào)整數(shù)學(xué)算法,盡最大可能的對(duì)程序進(jìn)行優(yōu)化。
計(jì)算機(jī)編程是一門應(yīng)用性較強(qiáng)的專業(yè)性學(xué)科,利用計(jì)算機(jī)編程軟件,通過(guò)計(jì)算機(jī)語(yǔ)言的重新組織,設(shè)計(jì)出具備某一特定功能的程序。在實(shí)際應(yīng)用中,計(jì)算機(jī)編程語(yǔ)言種類繁多,目前使用較為廣泛的編程語(yǔ)言為C、C++兩種類型,VB、匯編等編程語(yǔ)言已經(jīng)甚少使用。
C語(yǔ)言是所有計(jì)算機(jī)高級(jí)語(yǔ)言中最為簡(jiǎn)單、基礎(chǔ)的一種類型,正因?yàn)榇耍谟?jì)算機(jī)編程教學(xué)中,C語(yǔ)言多作為入門級(jí)編程語(yǔ)言來(lái)使用,不僅如此,在某些小程序的設(shè)計(jì)中,C語(yǔ)言也有著較為廣泛的應(yīng)用。通過(guò)C語(yǔ)言的學(xué)習(xí),能夠?yàn)檫M(jìn)一步學(xué)習(xí)難度更高的計(jì)算機(jī)編程語(yǔ)言打下基礎(chǔ)。盡管,C語(yǔ)言屬于初級(jí)計(jì)算機(jī)編程語(yǔ)言,但是,在使用C語(yǔ)言編程的過(guò)程中,依然需要嚴(yán)格遵循代碼邏輯操作,對(duì)于C語(yǔ)言編程中存在的問(wèn)題,則可以使用數(shù)學(xué)算法進(jìn)行彌補(bǔ)。
例如,在計(jì)算機(jī)編程的入門級(jí)教材中,大多會(huì)遇到如何判斷某一年是否是閏年的題目,閏年的判斷標(biāo)準(zhǔn)具有復(fù)合性,從數(shù)學(xué)算法的角度來(lái)看,首先,閏年不能被100整除,但能夠被4整除;其閏年應(yīng)為100的倍數(shù)并且是400的倍數(shù)。通過(guò)歸類法,可以直接對(duì)某一年分是否是閏年進(jìn)行判斷。
如使用流程圖的方式進(jìn)行分析的話,其效果更加直觀,流程圖在這里就相當(dāng)于數(shù)學(xué)建模的形式,通過(guò)流程圖能夠更加直觀的分析編程中的冗余點(diǎn),并找到程序優(yōu)化的具體方法。
C++是一種面向?qū)ο蟮挠?jì)算機(jī)語(yǔ)言,屬于計(jì)算機(jī)高級(jí)語(yǔ)言中使用較為廣泛的一種類型,從名字就可以看出,C++語(yǔ)言是在C語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的。作為面向?qū)ο蟮挠?jì)算機(jī)編程語(yǔ)言,在實(shí)際編程過(guò)程中,會(huì)對(duì)對(duì)象進(jìn)行不同形式的封裝,從而避免C語(yǔ)言中存在的弊端,使計(jì)算機(jī)編程效率得到大大提高,這也是C++語(yǔ)言能夠編寫較為復(fù)雜的大型程序的主要原因之一。然而,C++編程語(yǔ)言的封裝和類的繼承同樣需要利用數(shù)學(xué)算法進(jìn)行優(yōu)化,否則,由于邏輯的復(fù)雜性,將導(dǎo)致軟件運(yùn)行效率無(wú)法得到提高。
在使用C++語(yǔ)言編程時(shí),需要根據(jù)程序設(shè)計(jì)的需要進(jìn)行類的定義,以及在不同類之間的嵌套、封裝和繼承,對(duì)于一個(gè)較為復(fù)雜的程序來(lái)說(shuō),類的嵌套、封裝和繼承需要消耗掉計(jì)算機(jī)大量的計(jì)算資源。在此情況下,利用數(shù)學(xué)算法對(duì)C++語(yǔ)言編程進(jìn)行優(yōu)化,能夠有效解決面向?qū)ο蟪绦蛟O(shè)計(jì)過(guò)程中的代碼冗余和邏輯陷阱等問(wèn)題,從而有效發(fā)揮面向?qū)ο蟪绦蛟O(shè)計(jì)的效率優(yōu)勢(shì)。
對(duì)于這一題目,利用傳統(tǒng)計(jì)算方式不僅難度較大,龐大的計(jì)算量也將消耗大量的時(shí)間,因此,利用計(jì)算機(jī)則可以快速求出相對(duì)應(yīng)的結(jié)果,根據(jù),將n的取值代入,得到最終結(jié)果,然后數(shù)一下最后0的個(gè)數(shù)。但是,人工錄入數(shù)據(jù)計(jì)算的方式依然過(guò)于繁瑣,利用其中存在的規(guī)律,通過(guò)計(jì)算機(jī)編程的方式則可以明顯簡(jiǎn)化這一問(wèn)題,關(guān)鍵是如何選擇數(shù)學(xué)算法。
方法一:
從以上程序代碼中可以看出,盡管,該程序能夠解決題目中的問(wèn)題,但是,由于計(jì)算次數(shù)過(guò)多,犧牲了大量的時(shí)間。不僅如此,在計(jì)算機(jī)過(guò)程中,某些數(shù)字的計(jì)算是不會(huì)出現(xiàn)末尾為0的結(jié)果,如2*3,2*4等,大量的無(wú)用計(jì)算造成了時(shí)間的浪費(fèi),因此,該數(shù)學(xué)算法并不是此題的最優(yōu)算法。
方法二:
針對(duì)方法一中的問(wèn)題,我們發(fā)現(xiàn),在末尾0被去掉的情況下,能夠再次產(chǎn)生0的情況僅有四種,也就是2*5,4*5,6*5和8*5的組合形式。針對(duì)這一邏輯關(guān)系,我們可以將代碼進(jìn)行如下調(diào)整:
由方法二可以看出,通過(guò)算法優(yōu)化,程序的計(jì)算量相當(dāng)于方法一的1/5,通過(guò)對(duì)分解數(shù)n的整理,可以發(fā)現(xiàn),n中含有5的個(gè)數(shù)就是最終答案0的個(gè)數(shù)。因此,在計(jì)算機(jī)編程優(yōu)化過(guò)程中,應(yīng)注意發(fā)現(xiàn)其中的規(guī)律,并以此指導(dǎo)數(shù)學(xué)算法的修改,盡可能的壓縮程序所占用的空間和時(shí)間。
數(shù)學(xué)算法是數(shù)學(xué)學(xué)習(xí)中經(jīng)常使用的計(jì)算方法,并且,不同數(shù)學(xué)算法的使用效果也會(huì)跟實(shí)際問(wèn)題的不同形成差異。利用數(shù)學(xué)算法思想,能夠?qū)崿F(xiàn)計(jì)算機(jī)編程優(yōu)化的深入進(jìn)行,是原本復(fù)雜的程序設(shè)計(jì)更加簡(jiǎn)單化,提高程序運(yùn)行效率,這對(duì)于競(jìng)爭(zhēng)日益激烈的計(jì)算機(jī)軟件行業(yè)來(lái)說(shuō)顯得極為重要。
[1]張楠.計(jì)算機(jī)編程中數(shù)學(xué)算法優(yōu)化探析[J].?dāng)?shù)字通信世界,2017(09).
[2]郭億鴻.?dāng)?shù)學(xué)算法在計(jì)算機(jī)編程優(yōu)化中的作用[J].電子技術(shù)與軟件工程,2016(24).
[3]高占江.計(jì)算機(jī)編程中數(shù)學(xué)算法優(yōu)化探析[J].電腦迷,2016(09).