當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 入門指導(dǎo) > 新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)
新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)
時(shí)間:2018-03-22 來(lái)源:c語(yǔ)言基礎(chǔ)
新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)
C語(yǔ)言是一種古老而又經(jīng)久不衰、號(hào)稱貴族編程語(yǔ)言,誕生于上個(gè)世紀(jì)60年代。由于它在工作設(shè)計(jì)中有很多優(yōu)點(diǎn),深受編程人員的喜愛(ài),并且逐漸淘汰了很多其它的語(yǔ)言。平時(shí)我們使用的大多數(shù)軟件都是基于使用C語(yǔ)言開發(fā)的。

C語(yǔ)言程序設(shè)計(jì)是我們的專業(yè)基礎(chǔ)課,但是C語(yǔ)言本身卻是一個(gè)非常強(qiáng)大的工具,它是到目前為止最為廣泛使用的工具,并且在可以預(yù)見(jiàn)的將來(lái),它仍然是皈依為程序員的人們心中的神器。這個(gè)工具作什么的呢?它在人和機(jī)器之間建立了一個(gè)交流的平臺(tái)。
某天,你需要完成一個(gè)求100的階乘的作業(yè),于是你搬來(lái)一個(gè)最新的電腦,為它安裝了最新的windows vista操作系統(tǒng),然后坐在它的身前,喊“喂電腦,給我計(jì)算100的階乘”,電腦說(shuō)“ok, wait a moment”; 過(guò)了一會(huì),一盤香菇小白菜端了上來(lái)!呵呵,電腦不是waiter, 你喂它它是不會(huì)有反應(yīng)的,如果你真的wait a moment, 恐怕你就需要wait one more moment了!一萬(wàn)年后,人們就把你命名成“望夫崖”。

既然電腦不是伺應(yīng)生,聽不懂我們的話,那么我們要怎么控制它呢?如果你們給我裝聾作啞,我會(huì)告訴你期末掛了你,哦,你立馬老實(shí)了!對(duì)于電腦,我要怎么才能使喚它,讓它為我工作呢?不錯(cuò),我們有個(gè)強(qiáng)力工具,C語(yǔ)言!
至今出現(xiàn)一些編程語(yǔ)言也仍用了很多它的技術(shù)。C語(yǔ)言是面向過(guò)程的開發(fā)方式,也就是說(shuō),在實(shí)際工作中解決問(wèn)題的時(shí)候,編程開發(fā)人員需要思考計(jì)算機(jī)應(yīng)該如何一步一步完成這個(gè)問(wèn)題,然后將相應(yīng)過(guò)程轉(zhuǎn)化為代碼。
說(shuō)了半天c語(yǔ)言到底是什么樣的呢,咱們就來(lái)簡(jiǎn)單的來(lái)了解一下新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)吧。
1、順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問(wèn)題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問(wèn)題就好像交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序?yàn)椋?c = a; a = b; b = c; 執(zhí)行結(jié)果是a = 5,b = c = 3。
如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯(cuò)誤。
順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見(jiàn)的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。
不過(guò)大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

2、 分支結(jié)構(gòu)
順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問(wèn)題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問(wèn)題就要使用分支結(jié)構(gòu)。
分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ(yǔ)句。
分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開,使得問(wèn)題簡(jiǎn)單化,易于理解。
程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。
學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過(guò)是分支中又包括分支語(yǔ)句而已,不是新知識(shí),只要對(duì)雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。
①if(條件) { 分支體 }
這種分支結(jié)構(gòu)中的分支體可以是一條語(yǔ)句,此時(shí)“{ }”可以省略,也可以是多條語(yǔ)句即復(fù)合語(yǔ)句。
它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過(guò)分支體,這時(shí)分支體就不會(huì)執(zhí)行。如:要計(jì)算x的絕對(duì)值,根據(jù)絕對(duì)值定義,我們知道,當(dāng)x>=0時(shí),其絕對(duì)值不變,而x<0時(shí)其絕對(duì)值是為x的反號(hào),因此程序段為:if(x<0) x="-x;
②if(條件) {分支1} else {分支2}
這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語(yǔ)句構(gòu)成。如:求ax^2+bx+c=0的根
分析:因?yàn)楫?dāng)b^2-4ac>=0時(shí),方程有兩個(gè)實(shí)根,否則(b^2-4ac<0)有兩個(gè)共軛復(fù)根。其程序段如下: d=b*b-4*a*c; if(d>=0) {x1=(-b+sqrt(d))/2a; x1=(-b-sqrt(d))/2a; printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2); } else {r=-b/(2*a); i =sqrt(-d)/(2*a); printf(“x1=%8.4f+%8.4fi\n”r, i); printf(“x2=%8.4f-%8.4fi\n”r,i) }
③嵌套分支語(yǔ)句:其語(yǔ)句格式為: if(條件1) {分支1}; else if(條件2) {分支2} else if(條件3) {分支3} …… else if(條件n) {分支n} else {分支n+1}
嵌套分支語(yǔ)句雖可解決多個(gè)入口和出口的問(wèn)題,但超過(guò)3重嵌套后,語(yǔ)句結(jié)構(gòu)變得非常復(fù)雜,對(duì)于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過(guò)3重可以用下面的語(yǔ)句。
④switch開關(guān)語(yǔ)句:該語(yǔ)句也是多分支選擇語(yǔ)句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路。
它不同if…else 語(yǔ)句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語(yǔ)句;如果不匹配,查找下一個(gè)分支是否匹配。
這個(gè)語(yǔ)句在應(yīng)用時(shí)要特別注意開關(guān)條件的合理設(shè)置以及break語(yǔ)句的合理應(yīng)用。
3、 新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)之循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來(lái)描述重復(fù)執(zhí)行某段算法的問(wèn)題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。
四種循環(huán)可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會(huì)給程序的運(yùn)行帶來(lái)不可預(yù)料的錯(cuò)誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。
常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的 重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會(huì)明白如何替換使用。
如把while循環(huán)的例題,用for語(yǔ)句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語(yǔ)句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見(jiàn)錯(cuò)誤。
在學(xué)完這三個(gè)循環(huán)后,應(yīng)明確它們的異同點(diǎn):用while和do…while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語(yǔ)句1中進(jìn)行的;
while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說(shuō)do…while的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就可能一次都不執(zhí)行。
另外還要注意的是這三種循環(huán)都可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán),而goto語(yǔ)句與if構(gòu)成的循環(huán),是不能用break和 continue語(yǔ)句進(jìn)行控制的。
順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實(shí)不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個(gè)語(yǔ)句。
在實(shí)際編程過(guò)程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計(jì)出相應(yīng)程序,但是要編程的問(wèn)題較大,編寫出的程序就往往很長(zhǎng)、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個(gè)問(wèn)題的方法是將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。
4、 新手人工智能c語(yǔ)言基礎(chǔ)入門要點(diǎn)之模塊化程序結(jié)構(gòu)
C語(yǔ)言的模塊化程序結(jié)構(gòu)用函數(shù)來(lái)實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C函數(shù),然后通過(guò)主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)一大型問(wèn)題的C程序編寫。
因此常說(shuō):C程序=主函數(shù)+子函數(shù)。 因此, 對(duì)函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過(guò)上機(jī)調(diào)試加以鞏固。
三 掌握一些簡(jiǎn)單的算法
編程其實(shí)一大部分工作就是分析問(wèn)題,找到解決問(wèn)題的方法,再以相應(yīng)的編程語(yǔ)言寫出代碼。這就要求掌握算法,只要我們掌握一些簡(jiǎn)單的算法,在掌握這些基本算法后,要完成對(duì)問(wèn)題的分析就容易了。
如兩個(gè)數(shù)的交換、三個(gè)數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義。
當(dāng)我們把握好上述幾方面后,只要小伙伴們能克服畏難、厭學(xué)、專心學(xué)習(xí),做好練習(xí)與上機(jī)動(dòng)手寫代碼,其實(shí)C語(yǔ)言并不難學(xué)。
華清遠(yuǎn)見(jiàn)90+項(xiàng)目獲批!教育部2021最新協(xié)同育人項(xiàng)目名
華清遠(yuǎn)見(jiàn)榮獲2021騰訊教育“年度口碑影響力職業(yè)教育品
華清遠(yuǎn)見(jiàn)受邀參加2021年武漢民辦高校信息學(xué)科合作聯(lián)盟
溫暖同行共創(chuàng)佳績(jī) 2019華清遠(yuǎn)見(jiàn)北京總部年會(huì)大曝光
助力高校AI人工智能學(xué)科建設(shè) 華清遠(yuǎn)見(jiàn)人工智能師資班
華清遠(yuǎn)見(jiàn)受邀參加四川省物聯(lián)網(wǎng)年會(huì),榮獲優(yōu)秀企業(yè)專家
