王鵬 巴音郭楞職業(yè)技術(shù)學(xué)院
一個(gè)程序的空間和時(shí)間之間的矛盾,通常是造成編排過(guò)程中最耗時(shí)耗力的重要因素。時(shí)間復(fù)雜度是指某個(gè)程序運(yùn)行所要消耗的時(shí)間,而空間復(fù)雜度是一個(gè)算法運(yùn)行中所占用的存儲(chǔ)空間。為了解決這個(gè)問(wèn)題,從逆向思維出發(fā),給字符串賦值,以時(shí)間換空間。
例如:
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
不難看出,這個(gè)代碼非常的靈活,可以很方便的就改變一個(gè)字符串的內(nèi)容。
再如:
const char string2[LEN] =“This is a example!”;
char * cp;
cp = string2 ;
這個(gè)代碼相比較上一個(gè),優(yōu)點(diǎn)是可以使用指針,操作起來(lái)簡(jiǎn)單快捷,執(zhí)行中也具有更高的效率;缺點(diǎn)是增添了更多的字符串,占用了大量存儲(chǔ)空間。
可以預(yù)見(jiàn),今后,隨著人工智能在疾病診斷、術(shù)前規(guī)劃、治療評(píng)估、健康預(yù)測(cè)等方面更加深入的應(yīng)用,各種機(jī)器學(xué)習(xí)算法和醫(yī)學(xué)模型必將持續(xù)優(yōu)化和更加成熟,人工智能醫(yī)療產(chǎn)品的綜合分析和預(yù)測(cè)能力將更加精準(zhǔn)。未來(lái),需要醫(yī)生根據(jù)臨床經(jīng)驗(yàn)作出主動(dòng)判斷的情形也將越來(lái)越少,在這一技術(shù)發(fā)展趨勢(shì)下,如何劃分疾病診斷方法與醫(yī)療檢測(cè)方法之間的界限將更加困難。
綜合以上兩種不同的代碼,可以看出,編程操作員可以根據(jù)實(shí)際需要,任意改變操作方式,利用技巧獲得更加高效的編程方法。
見(jiàn)招拆招,下面這個(gè)技巧就適用于實(shí)時(shí)性較高的系統(tǒng)編程:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1)<< (bs ## __bf))
#define SET_BITS(__dst, __bf, __val) /
((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
此方法好處在于:使用了宏函數(shù),而宏函數(shù)省去了很多的時(shí)間,而且其調(diào)用起來(lái)也不需要占用CPU的時(shí)間,所以如果需要不停的更換調(diào)取一個(gè)宏函數(shù)的時(shí)候,其節(jié)省時(shí)間的效果就立竿見(jiàn)影了。
計(jì)算機(jī)編程需要很廣泛的數(shù)學(xué)知識(shí),對(duì)于程序員來(lái)說(shuō),數(shù)學(xué)更是具有極特殊的意義。許多編程的組成,都離不開(kāi)數(shù)學(xué)函數(shù)、變量、參數(shù)等,所以談到C語(yǔ)言的編程技巧,必然要與數(shù)學(xué)概念掛鉤。下面一個(gè)例子:
int I , j;
for (I = 1 ;I<=100; I ++){
j += I;
}
這個(gè)代碼引用了N×(N+1)/ 2的數(shù)學(xué)公式,將加法、乘法和除法結(jié)合在一起,一次性解決了運(yùn)算,加快了程序運(yùn)行的速度??梢?jiàn),數(shù)學(xué)知識(shí)對(duì)于變成來(lái)說(shuō)真是很有幫助。
還有一項(xiàng)非常厲害的編程技巧——嵌入編程。不同于C語(yǔ)言的普通匯編方式,而是靈巧的進(jìn)行了改編,將一種數(shù)組賦值在了另一種數(shù)組中,并符合每一字節(jié)都相符的要求。這里舉個(gè)簡(jiǎn)單的例子:
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I)
其使用了多次循環(huán)方式,這里需要注意的是,這種方法有利有弊,雖然提高了運(yùn)行速度,但是如果有程序需要在其他平臺(tái)上運(yùn)行時(shí),可能會(huì)有一些意想不到的后果發(fā)生。所以,這個(gè)技巧編程員們要謹(jǐn)慎使用。
C語(yǔ)言具有嚴(yán)謹(jǐn)、整齊、規(guī)律的特點(diǎn),使用時(shí)一定不能違背C語(yǔ)言的邏輯規(guī)則。例如:do while會(huì)比while多循環(huán);switch后小括號(hào)里禁止出現(xiàn)浮點(diǎn)數(shù);如果函數(shù)的類型沒(méi)有特別說(shuō)明,則都被默認(rèn)為int型,等等。
目前很多軟件設(shè)計(jì)公司都在研發(fā)新的C語(yǔ)言編譯器,在編程時(shí)選擇合適的程序軟件也至關(guān)重要。要讓編譯器用在正確的位置,發(fā)揮出其最大的優(yōu)勢(shì)。這里列舉一些效果突出的編譯器:(1)C/C++語(yǔ)言編譯器:可以檢索、跟蹤錯(cuò)誤,多文檔管理、操作簡(jiǎn)便。(2)gcc。(3)BC 3.1。(4)WIN-TC。此軟件采用的是TC2內(nèi)核,因?yàn)槠渲С諻INDOWS系統(tǒng)的功能,還附加有語(yǔ)法加亮、自定義擴(kuò)展庫(kù)等輔助功能,因此被大部分人所接受。
C語(yǔ)言能夠發(fā)展到現(xiàn)在,變成不可替代的計(jì)算機(jī)語(yǔ)言,可見(jiàn)其必然有著某些特定的優(yōu)勢(shì)。例如:C語(yǔ)言結(jié)構(gòu)精簡(jiǎn)、表達(dá)簡(jiǎn)練、使用方便,用簡(jiǎn)化了的數(shù)字符號(hào)等編寫程序,效率高、準(zhǔn)確度高、使用靈活。但是使用過(guò)程中,程序員不能保證C語(yǔ)言編排得完全正確,會(huì)出現(xiàn)部分或者較多的語(yǔ)法錯(cuò)誤,有時(shí)候會(huì)忽視對(duì)標(biāo)越界的檢查,這種情況多發(fā)生于高級(jí)語(yǔ)法的檢查中。這時(shí)候程序員們使用C語(yǔ)言編譯程序會(huì)查錯(cuò),但是C語(yǔ)言編譯程序?qū)φZ(yǔ)法的檢查不會(huì)要求很高,語(yǔ)法檢錯(cuò)不嚴(yán)格,這就會(huì)導(dǎo)致程序員編排效率低下,錯(cuò)誤頻發(fā)。因此,程序員應(yīng)該具有很好的邏輯思維,有嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度,具有團(tuán)隊(duì)意識(shí)并發(fā)揮協(xié)作精神,巧用C語(yǔ)言編排出優(yōu)秀的程序。
[1]王肖飛.基于C語(yǔ)言的計(jì)算機(jī)軟件編程技術(shù)探究[J].無(wú)線互聯(lián)科技,2018(05):47-48.
[2]張家銘.淺析計(jì)算機(jī)C語(yǔ)言編輯程序技巧[J].才智,2017(32):214.