李莫凡
摘 要C++程序作為一種計(jì)算機(jī)語(yǔ)言,廣泛應(yīng)用于工業(yè)軟件研發(fā)當(dāng)中,不僅具有很高的開(kāi)發(fā)價(jià)值,而且研究?jī)r(jià)值也很高。具有功能豐富等優(yōu)點(diǎn),有利就會(huì)有弊,其程序同時(shí)具有概念復(fù)雜的缺點(diǎn),對(duì)于初學(xué)者來(lái)說(shuō)經(jīng)常出現(xiàn)錯(cuò)誤,令其茫然失措,會(huì)使學(xué)習(xí)的信心受到挫傷,因此加深對(duì)常見(jiàn)錯(cuò)誤的認(rèn)識(shí)與掌握有效的解決方法顯得尤為重要。
【關(guān)鍵詞】C++程序 常見(jiàn)錯(cuò)誤 解決方法
C程序編寫(xiě)中涉及到不計(jì)其數(shù)的C語(yǔ)言,可以說(shuō)程序設(shè)計(jì)是在與C語(yǔ)言打交道。C語(yǔ)言具有強(qiáng)大的靈活性,也是編程中出現(xiàn)錯(cuò)誤最為頻繁的錯(cuò)誤類(lèi)型之一,為程序設(shè)計(jì)帶來(lái)了不便,最終影響了程序的正常運(yùn)行,所以盡量減少各種錯(cuò)誤發(fā)生的頻率。本文以C++程序?yàn)檠芯繉?duì)象,對(duì)常見(jiàn)錯(cuò)誤與解決方法展開(kāi)了論述。
1 常見(jiàn)錯(cuò)誤解析
C語(yǔ)言是C程序編寫(xiě)使用的語(yǔ)言,相當(dāng)于數(shù)學(xué)符號(hào)公式一樣,傳遞著有關(guān)計(jì)算機(jī)編程的信息。C語(yǔ)言的基本特點(diǎn)主要體現(xiàn)在內(nèi)容與語(yǔ)法規(guī)則上,具有豐富的內(nèi)容與靈活的語(yǔ)法規(guī)則,這兩個(gè)基本特點(diǎn)為程序設(shè)計(jì)造成了不便,在設(shè)計(jì)中由于疏忽,忽略了某個(gè)設(shè)計(jì)環(huán)節(jié),很容易導(dǎo)致錯(cuò)誤的發(fā)生。尤其是對(duì)初學(xué)者來(lái)說(shuō),第一次接觸C語(yǔ)言感覺(jué)陌生,感覺(jué)若干個(gè)英文、數(shù)字、字符組成的C語(yǔ)言給人一種雜亂無(wú)章,十分復(fù)雜的感覺(jué),初學(xué)對(duì)知識(shí)掌握還不夠扎實(shí),更容易在程序設(shè)計(jì)中有所遺漏,更容易出現(xiàn)錯(cuò)誤。綜合起來(lái),經(jīng)常出現(xiàn)頻率較高的錯(cuò)誤主要有三個(gè)類(lèi)別。
1.1 語(yǔ)法錯(cuò)誤
C程序當(dāng)中的語(yǔ)言與人們?nèi)粘贤ń涣髦惺褂玫恼Z(yǔ)言有著如出一轍的共同特征,有著特定的固定模式。C語(yǔ)言錯(cuò)誤就是與程序當(dāng)中特定的語(yǔ)法規(guī)定相違背,這種錯(cuò)誤在程序設(shè)計(jì)中較為常見(jiàn),也是出現(xiàn)頻率最高的程序錯(cuò)誤之一。出現(xiàn)這種錯(cuò)誤只要編程語(yǔ)言知識(shí)扎實(shí),一般不會(huì)頻繁地出現(xiàn)錯(cuò)誤,即使出現(xiàn)錯(cuò)誤,編譯程序會(huì)給予提示,指出出現(xiàn)錯(cuò)誤的部分,只要牢記語(yǔ)法規(guī)則,在設(shè)計(jì)中保持認(rèn)真仔細(xì)的態(tài)度,錯(cuò)誤是可以避免的。
1.2 邏輯錯(cuò)誤
程序是由若干個(gè)連續(xù)不斷的語(yǔ)言串聯(lián)組成,與電路中的導(dǎo)線(xiàn)一樣共同履行各自的職責(zé),其實(shí)程序本身并沒(méi)有違背語(yǔ)法規(guī)則,因?yàn)槊糠N語(yǔ)法有著特定的規(guī)則,程序由大量的語(yǔ)言組成,符合正確的語(yǔ)言規(guī)則才能完成程序的設(shè)計(jì),這其中需要經(jīng)過(guò)多次反復(fù)的檢查修改,這是一個(gè)嚴(yán)謹(jǐn)?shù)倪^(guò)程,從原則上來(lái)說(shuō)程序違背語(yǔ)法規(guī)則的結(jié)論是不成立的,違背語(yǔ)言規(guī)則的是程序在執(zhí)行中的結(jié)果與原意不相符合,這也從邏輯角度說(shuō)明一些錯(cuò)誤的產(chǎn)生并不是因?yàn)槌绦蜻`背了語(yǔ)法規(guī)則,而是從邏輯上執(zhí)行結(jié)果與原意不符合才導(dǎo)致的一些錯(cuò)誤的產(chǎn)生。具體來(lái)說(shuō),從參與設(shè)計(jì)的人員角度來(lái)講,出現(xiàn)了這種錯(cuò)誤的原因是算法與編寫(xiě)程序出現(xiàn)了錯(cuò)誤,使程序在執(zhí)行中產(chǎn)生的結(jié)果與解題原意之間存在差異。如果想解決錯(cuò)誤,就要熟悉語(yǔ)法規(guī)則,有著豐富的編程經(jīng)驗(yàn),對(duì)語(yǔ)句邏輯關(guān)系仔細(xì)斟酌檢查,按照作者的原意,做出部分修改與調(diào)整。
1.3 運(yùn)行錯(cuò)誤
當(dāng)程序不存在語(yǔ)法與邏輯錯(cuò)誤,那就是出現(xiàn)了運(yùn)行錯(cuò)誤,嚴(yán)重情況時(shí)導(dǎo)致程序的停止運(yùn)行。如下面的這個(gè)公式:
這是一個(gè)程序段,其本身按照并無(wú)語(yǔ)法錯(cuò)誤,問(wèn)題就出現(xiàn)在輸入數(shù)據(jù)上。當(dāng)這里的a值為0時(shí),錯(cuò)誤就會(huì)出現(xiàn),程序與數(shù)據(jù)之間不相適應(yīng)。為保證程序能夠順利進(jìn)行,應(yīng)限制對(duì)輸入數(shù)據(jù)的輸入。程序編寫(xiě)是編程工作在編寫(xiě)工作的最后一道工序,但這不能保證程序運(yùn)行的可持續(xù)性,為保證程序編寫(xiě)的有效性,需要后期耐心細(xì)致的調(diào)試工作。
2 程序調(diào)試
針對(duì)上述提出的幾種常見(jiàn)錯(cuò)誤,需要通過(guò)后期的程序調(diào)試加以解決,調(diào)試是為了檢查出錯(cuò)誤,根據(jù)檢查出的具體錯(cuò)誤采取不同的排除方法。一般來(lái)講調(diào)試程序分為以下幾個(gè)步驟:
2.1 靜態(tài)檢查
一個(gè)程序編寫(xiě)好之后,以人工檢查的方式對(duì)紙面上的程序進(jìn)行檢查,這就是靜態(tài)檢查。在檢查中發(fā)現(xiàn)因疏忽引起的錯(cuò)誤,便于程序設(shè)計(jì)人員對(duì)設(shè)計(jì)工作做出檢討總結(jié),避免類(lèi)似錯(cuò)誤的發(fā)生。為保證人工檢查的有效性,使程序具有可讀性,編程設(shè)計(jì)方法采用結(jié)構(gòu)化的編程方法;為更加深刻地增加對(duì)每段程序的理解,多添加注釋?zhuān)粸槭箯?fù)雜程序時(shí)方便閱讀與調(diào)試,盡可能地使用函數(shù)。
2.2 動(dòng)態(tài)檢查
動(dòng)態(tài)檢查用于上機(jī)運(yùn)行階段,是對(duì)運(yùn)行程序進(jìn)行的檢查。編輯好上機(jī)程序后開(kāi)始試運(yùn)行,結(jié)合顯示的信息,根據(jù)檢查分析的結(jié)果,對(duì)存在的問(wèn)題逐一修改,一直達(dá)到編譯成功為止。在動(dòng)態(tài)檢查實(shí)行中應(yīng)注意出錯(cuò)行的真實(shí)性,錯(cuò)誤不是發(fā)生在所提示的出錯(cuò)行上,這就需要從上一行尋找;針對(duì)具有關(guān)聯(lián)性與類(lèi)型多樣的錯(cuò)誤,提示的信息不宜輕信,應(yīng)通過(guò)詳細(xì)的分析,發(fā)現(xiàn)問(wèn)題到底出現(xiàn)在哪里,而不是完全按照提示的信息開(kāi)展檢查,避免完全被出錯(cuò)信息所制約;當(dāng)遇到出錯(cuò)信息數(shù)量繁多的情況,改進(jìn)應(yīng)按照逐一從上至下的順序。根據(jù)上面提到的一些錯(cuò)誤具有關(guān)聯(lián)性,表面上看上去出現(xiàn)錯(cuò)誤的信息類(lèi)型繁多,實(shí)際上只有一至兩個(gè)錯(cuò)誤。針對(duì)上面提到的錯(cuò)誤也不必過(guò)于擔(dān)心,只需針對(duì)包含某變量的語(yǔ)句,當(dāng)錯(cuò)誤信息發(fā)送出去之后,全部錯(cuò)誤在變量定義補(bǔ)充之后得到解決。
3 結(jié)論
通過(guò)上面的論述可知,本文從常見(jiàn)錯(cuò)誤解析與程序調(diào)試這兩個(gè)對(duì)C++程序中的常見(jiàn)錯(cuò)誤和解決方法展開(kāi)了論述。C程序中出現(xiàn)的錯(cuò)誤各種各樣,但綜合起來(lái)無(wú)非就是語(yǔ)法、邏輯、運(yùn)行這三大類(lèi)錯(cuò)誤,按照出現(xiàn)錯(cuò)誤的不同特點(diǎn),又細(xì)分為不同種類(lèi)的錯(cuò)誤。程序編程并不是簡(jiǎn)單易學(xué)的一門(mén)課程,避免錯(cuò)誤的產(chǎn)生,需要進(jìn)行程序調(diào)試??偠灾槍?duì)在c程序設(shè)計(jì)中除了掌握扎實(shí)的基礎(chǔ)知識(shí),還需在具體的編程實(shí)踐中堅(jiān)持認(rèn)真負(fù)責(zé)的態(tài)度,反復(fù)檢查輸入的語(yǔ)言規(guī)則是否正確等事項(xiàng),最大限度地減少錯(cuò)誤的產(chǎn)生。
參考文獻(xiàn)
[1]周建亮,權(quán)奇哲.C語(yǔ)言程序設(shè)計(jì)的技巧和常見(jiàn)錯(cuò)誤分析[J].中外企業(yè)家,2014,06:204.
[2]霍卓群.初學(xué)者學(xué)習(xí)C語(yǔ)言中常見(jiàn)問(wèn)題的探討[J].電腦知識(shí)與技術(shù),2014,13:3012-3015+3020.
[3]程靜飛,鄭鳳婷.試析C語(yǔ)言常見(jiàn)錯(cuò)誤[J].電腦編程技巧與維護(hù),2015,16:8-9+11.
作者單位
北京師范大學(xué)附屬實(shí)驗(yàn)中學(xué) 北京市海淀區(qū) 100000