久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2867|回復: 2
打印 上一主題 下一主題
收起左側

C語言基礎教程(1)-前奏

[復制鏈接]
跳轉到指定樓層
樓主
ID:99082 發表于 2015-12-10 03:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
--C語言開講啦系列大致介紹


很多同學到了大學迷茫、厭學,很大的原因就是不知道學這些東西有啥用,又這么難又學不會。或者還有很多同學為了考試成績而苦讀,失了學習基本的興趣,專心服侍考試。下邊是我很喜歡的一句話,每次讀都能讓內心一顫。

平時則放蕩冶游,考試則熟讀講義,不問學問之有無,惟爭分數之多寡;試驗既終,書籍束之高閣,毫不過問,敷衍三四年,潦草塞責,文憑到手,即可借此活動于社會,豈非與求學初衷大相背馳乎?光陰虛度,學問毫無,是自誤也!---蔡元培《就任北京大學校長演示》

1917年蔡元培就說出了這樣的話,現在2014年了,每次讀這段話都不得不說人家真不愧是大教育家。這話說了這么久依舊是一針見血、直抵真相!想想他老人家的話如今竟然成了“普遍現象”,真是讓人倒抽涼氣。

分享給大家,警鐘長鳴。所以大家要明確目標--我們的目標是學以致用!不能不學 浪費光陰,也不能盲目學習充當被添的鴨子。

接下來麥粒er準備開始一個講解C語言基礎的系列文章,畢竟工科的知識還是有點難懂的,單靠這點篇幅遠遠不夠。預計連著用六篇小文章來講C語言入門基礎知識,大致包括(C介紹、書籍推薦、關鍵字、運算符、控制語句、函數、還會介紹下指針和數組以便大家接著學習)拋磚引玉、各灑潘江,哈哈。

學習嵌入式需要很多科目(C語言、模電、數電、自控、信號等等)的知識結合在一起,綜合能力的提升很重要的。要不然難免遇到木桶效應的尷尬。學習的樂趣是學以致用。知識就是力量嗎?學會使用知識才能創造生產力,那才是力量!理論指導實踐,實踐踐行理論,才是學習的樂趣所在。

其實大部分同學都應該學過了C語言基礎了,大一的同學們正在學,大二大三的估計都忘光光了吧。其實正常,學完了用不到慢慢自然會忘。還可能當時學的不好,其實真心不用自責真心沒關系,誰說必須要一次就學懂呢,不懂就不懂,以后碰到需要用的情況就接著學接著研究,幾次之后總會懂的。


--說說C語言吧


上圖中的老爺爺很慈祥吧。Dennis Ritchie 丹尼斯·里奇,C語言之父和UNIX之父。這個UNIX大家不熟悉,Linux操作系統可能大家都聽說過,這沒聽過那Androi安卓大家一定一定聽說過吧,安卓就是一種基于Linux的自由及開放源代碼的操作系統。

1969年,通用電氣、麻省理工、貝爾實驗室聯合研制一種叫Multics的操作系統,但研制完了發現系統太大太復雜,幾乎徹底失敗。

從失敗項目撤出后,貝爾實驗室的工程師們Dennis Ritchie和Ken Thompson設計了一個比Multics更簡單更輕量級的操作系統UNIX,1970年將UNIX移植到PDP-11小型機上,但當時的高級語言BCPL(Basic Combined Programming Language,由倫敦大學和劍橋大學合作研發的早期高級語言)簡稱“B語言”不適合作為UNIX系統的編程語言。所以Dennis Ritchie創立了“New B”語言。很快就被人稱為C語言

C語言能干啥呢?大部分同學都能知道--編程唄,那給什么東西編程呢?又有點說不清了吧--不太清楚,但我最起碼知道嵌入式系統用,C語言現在在嵌入式軟件開發中的比例仍占60%左右。所以要學嵌入式,一定要學好C語言。自然隨著深入還會學到更高級的語言如C++、java,但先學好C會給你的編程語言進階提供基礎。


--書籍推薦


大家學C語言的教程是譚浩強版的吧,很多人說那是國內C方面最經典之作,教材就不用我推薦了吧。


基礎推薦:C Primer Plus(第五版)中文版

作者[美]Stephen Prata著 出版社:人民郵電出版社

提高推薦:C 和指針 中文版

作者[美] Kenneth A.Reek 出版社:人民郵電出版社

這書也不是我推薦,大家都說好,確實講的比較仔細,語言也比較通俗好懂。價格都是40多元,我都買了,因為我平時比較有閑著沒事就買書的習慣,大家可以去圖書館借借,也有同樣習慣的同學也可以買。但買書不代表就看書,買得來書買不來知識,買書如山倒,讀書如抽絲。

還有更高級的,我也沒過,網上大家評價還不錯的有《C陷阱和缺陷》、《C專家編程》等等。


--小試牛刀


給大家看兩段簡單的小程序,檢驗一下自己的C語言水平:


這段程序有問題嗎?

char i

unsigned int a[300];

for(i=0;i<300;i++)

a[300]=i;

有,因為char是無符號數(ARM編輯器的編譯環境中),它的范圍是0至255。所以i會永遠小于300,所以這個循環永遠不會退出。程序也就卡死在這了。


還有

if(x[i]>MAX);

MAX=x[i];

if(x[i]>MAX)

MAX=x[i];

有什么區別?[這個給大家思考思考 周三把答案發給大家]


給大家看看這兩段小程序就是讓大家回憶回憶C語言的知識。這周的小文章就這樣吧,下周就要介紹關鍵字、運算符這樣的真材實料的知識啦。

大一正在學C的孩子們,拿出書來翻翻查查,大二大三C結課了的孩子們,快去把收起來的C語言書找出來吧!


以下是本系列教程文章列表:歡迎大家踴躍討論,有問題可在51黑論壇回帖提出.


C語言基礎教程(1):http://www.zg4o1577.cn/bbs/dpj-41177-1.html
C語言教程(2)-關鍵字 變量:http://www.zg4o1577.cn/bbs/dpj-41178-1.html
C語言教程(3)-控制語句:http://www.zg4o1577.cn/bbs/dpj-41179-1.html
C語言教程(4)-運算符:http://www.zg4o1577.cn/bbs/dpj-41180-1.html
C語言教程(5)-函數:http://www.zg4o1577.cn/bbs/dpj-41181-1.html
C語言教程(6)-數組與函數指針:http://www.zg4o1577.cn/bbs/dpj-41182-1.html

51單片機教程:http://www.zg4o1577.cn/bbs/mcu-xuexi-1.html
STM32教程:http://www.zg4o1577.cn/bbs/dpj-41167-1.html
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:99082 發表于 2015-12-10 03:30 | 只看該作者
周一更新的小文章里留了個問題啊,大家想明白了沒?


if(x[i]>MAX)

MAX=x[i];

if(x[i]>MAX);

MAX=x[i];

有什么區別?


答案公布:


其實大家仔細看看,會發現兩段代碼的區別在于那個分號。對啊,區別就是這一個分號的。但功能上卻有很大區別。

先看

if(x[i]>MAX)

MAX=x[i]

這里運用了一個C語言里常用的if判斷語句:這里的if...else...是C語言里的控制語句關鍵字。

下邊列舉我總能用到的if...else...條件判斷語句的變形形式。

1./*只有if判斷沒有else的情況*/

if(條件表達式)

{

執行表達式1;

執行表達式2;

...

}

2./*既有if還有else的情況*/

if(條件表達式)

{

執行表達式1;

執行表達式2;

...

}else{

執行表達式3;

執行表達式4;

...

}

3./*有多個if...else...嵌套的情況*/

if(條件表達式1)

{

執行表達式1;

執行表達式2;

...

}else if(條件表達式2)

{

執行表達式3;

執行表達式4;

...

}else{

執行表達式5;

執行表達式6;

...

}


顯然上邊的

if(x[i]>MAX)

MAX=x[i];

是第一種情況,只有if判斷沒有else的情況

x[i]>MAX是條件表達式,MAX=x[i]是執行表達式,語句進行判斷如果符合x[i]>MAX條件表達式的條件,執行MAX=x[i]執行表達式,然后;分號表示語句結束。如果不符合x[i]>MAX條件表達式的條件,就會跳出判斷語句,語句結束。(補充說明一下,當if語句只有一條執行表達式時,{}可以省略。自然如果把上句寫成:

if(x[i]>MAX)

{

MAX=x[i];

}

會更標準。


再來看看下邊的

if(x[i]>MAX);

MAX=x[i];

;c語言中,分號結尾代表語句結束,所以這段的代碼是兩個語句而不是一個。

第一個語句是if(x[i]>MAX);,也是第一種情況,只有if判斷沒有else的情況。x[i]>MAX是條件表達式,那執行表達式是什么呢?此句的執行表達式位置沒有寫東西,即為空白,也就是什么都不執行。

x[i]>MAX是條件表達式,空白是執行表達式,也就是什么都不執行。語句進行判斷如果符合x[i]>MAX條件表達式的條件,什么都不執行,然后;分號表示語句結束。如果不符合x[i]>MAX條件語句的表達式,當然什么也都不會執行,就跳出判斷語句,語句結束。

代碼從上到下執行,自然接著向下執行了。第二個語句是MAX=x[i]就是把x[i]數組里第i個元素賦值給MAX。

從語法書寫上來說這段代碼是沒有問題的,但在執行結果上卻存在問題。就是無論是否符合x[i]>MAX是條件表達式,都會得到MAX=x[i]的結果,那判斷就跟沒判斷一樣,這當然不是語句的本意。

舉個例子:比如寫完這篇小文章,我當然要保存了,我點擊了“保存按鈕”,判段“電腦提示保存成功”還是“電腦提示保存失敗”和我接下來執行的動作“關閉編輯頁面”

if(電腦提示保存成功)

關閉編輯頁面;

那就是我只有當“電腦提示保存成功”時才會關閉編輯頁面。

if(電腦提示保存成功);

關閉編輯頁面;

如果我這么執行,那當“電腦提示保存成功”或“電腦提示保存失敗”時,我都會接著把編輯頁面關掉,那我不是白打字這么半天,這顯然不是我想要的。

大家編程時,語法的錯誤(比如關鍵字寫錯,有些變量沒有定義)編譯軟件會報錯,還會提醒大家錯誤代碼的位置,這還算比較好的情況。如果一段代碼沒有報錯,但是燒寫到單片機里執行的結果卻不對,這就很讓人頭疼了!因為這是語意錯誤,就得自己一點點在大段的代碼中排除,可能就是因為一個分號啊。

舉個例子:比如你想跟一個姑娘表達:“你比我見過的所有女生都優秀!”

但是說錯了,說成“你比我女生見過都所有的!”女生就會提示你“說人話好嗎?同學!”,這還算比較好的情況。(語法錯誤,編譯軟件會提示錯誤,且錯誤代碼不執行)

如果說錯了,說成“我見過的所有女生都優秀!”,親,恭喜你沒有語法錯誤了。這時估計那姑娘也不會說什么,只是默默的走開了,大錯也就鑄成了。(語意錯誤,編譯軟件不會提示錯誤,且代碼正常執行---因為編譯軟件也不知道你本來想表達的意思)

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久 | 波多野结衣在线观看一区二区三区 | 日本在线播放 | 91午夜在线 | 翔田千里一区二区 | 欧美中文字幕在线观看 | 综合色久 | 亚洲欧美激情精品一区二区 | 暴草美女 | 特级做a爰片毛片免费看108 | 欧美久久久久久久久中文字幕 | 日本一区二区不卡 | 色综合视频 | 中文字幕一区二区三区四区 | 美国av毛片 | 免费成人国产 | 欧美 日韩 亚洲91麻豆精品 | 天天爽夜夜骑 | 国产成人99久久亚洲综合精品 | 日韩精品久久久 | 亚洲欧洲色视频 | 免费一区二区三区 | 国产小视频在线 | 久久久.com | 欧美日韩亚洲国产 | 日韩性在线 | 亚洲精品成人免费 | 欧美激情一区二区三区 | 米奇狠狠鲁 | 亚洲高清免费观看 | 福利网址 | 成人国产精品免费观看 | 伊人网站 | 一级毛片在线视频 | av网站在线免费观看 | 四虎影视免费在线 | 台湾佬成人网 | 亚洲精品国产电影 | 亚洲视频免费在线观看 | 91色在线 | 国产 日韩 欧美 制服 另类 |