- 論壇徽章:
- 0
|
內容簡介
1、課程大綱
2、第一部分第一課:什么是編程?
3、第一部分第二課預告:工欲善其事,必先利其器
課程大綱
不知道為什么,一直對C語言有一種很深厚的“情懷”(類似老羅對錘子手機的那種),說不出來。
也許因為C語言是很多前輩諄諄教誨說一定要學一下的一門編程語言;也許因為C語言是自己學習的專業(yè)“嵌入式系統(tǒng)”的首要語言;也許因為C語言自1972年誕生以來歷經43年依然獨領風騷,位列編程語言排行榜首位;也許因為“C語言之難,難于上青天”,自己以前入門著實困難;也許因為需要5-10年的時間,你才能說比較好地掌握了C語言;也許因為學好了C語言,一般就能輕松入門其他語言。
有太多也許,但是可以肯定的是:C語言是一門充滿魅力的編程語言。
它的發(fā)明人,“C語言之父” Dennis Ritchie在2011年去世。很低調,甚至沒有太多新聞報道。同年喬布斯去世,各界報道鋪天蓋地。
我想說:應該多紀念那些低調付出的人。
Dennis Ritchie除了C語言這項偉大發(fā)明(Windows操作系統(tǒng),Linux操作系統(tǒng),蘋果操作系統(tǒng)底層幾乎全是C語言實現(xiàn)),還與Ken Tompson一起研發(fā)了Unix操作系統(tǒng)(雖然大部分工作是Ken起步的,后來Dennis用自己發(fā)明的C語言重寫了Unix操作系統(tǒng))。要知道,Unix操作系統(tǒng)成為了后來舉世聞名的Linux操作系統(tǒng)的參考對象,Android手機底層就是用的修改過的Linux系統(tǒng),Mac操作系統(tǒng)底層也是類Unix系統(tǒng),我們用的iPhone和iPad等的操作系統(tǒng),底層大部分也是C語言編寫的。
不為了提高編程水平,光為了感受大師的風采,光為了探尋一下我們每天都在接觸的這門語言,也要學一下這位了不起的猶太人的傳世杰作:C語言。
在這個系統(tǒng)課程中,小編和大家一起學習,共同進步,探索C語言的奇妙世界。
我們的課程分為四大部分,每一個部分結束后都會有練習題,并會公布答案。還會帶大家用C語言編寫三個游戲。
C語言編程基礎知識
什么是程序員?
工欲善其事,必先利其器
你的第一個程序
變量的世界
運算符
條件表達式
循環(huán)語句
實戰(zhàn):第一個C語言小游戲
函數(shù)
練習題
習作:完善第一個C語言小游戲
C語言高級技術
模塊化編程
進擊的指針,C語言王牌
數(shù)組
字符串
預處理
創(chuàng)建你自己的變量類型
文件讀寫
動態(tài)分配
實戰(zhàn):“懸掛小人”游戲
安全的文本輸入
練習題
習作:用自己的語言解釋指針
用基于C語言的SDL庫開發(fā)2D游戲
安裝SDL
創(chuàng)建窗口和畫布
顯示圖像
事件處理
實戰(zhàn):“超級瑪麗推箱子”游戲
掌握時間的使用
用SDL_ttf編輯文字
用FMOD控制聲音
實戰(zhàn):可視化的聲音譜線
練習題
數(shù)據(jù)結構
鏈表
堆,棧和隊列
哈希表
練習題
第一部分第一課:什么是編程?
你也許聽說過編程,也許你想要真正明白編程到底是怎么一回事。
用C語言編程,是怎么樣的呢?用C語言作為入門編程的第一門語言真的好嗎?我們能用C語言做任何事嗎?
這一課就是為了回答上述可能顯得有點愚蠢但實際上很重要的問題。而且借著這些問題,你在學完這一課后會找到你真正想要的答案。
在學一樣技術前先了解一下用它能做什么,不是很好么?
我們從最簡單的問題開始:
什么是編程?
編程意味著“編寫計算機程序”,這些程序能讓你的機器(一般來說是電腦)做你要它做的事情。
實際上,你的電腦里充滿了各樣的程序:
計算器是一個程序
文本編輯器也是一個程序
你的聊天軟件(QQ,微信,Skype等)也是程序
你玩的游戲也是程序
上圖大家可能不陌生,我那一輩的人很喜歡玩的經典游戲Metal Slug《合金彈頭》或稱《越南戰(zhàn)爭》,就是一個程序。
簡單來說,在今天的日常生活中,程序隨處可見。大到航空母艦、空間站,小到智能手表、iPhone,里面都有各種大大小小的程序。
程序幾乎可以讓你用電腦做任何事情。你可以自己編寫一個革命性的加密軟件,也可以編寫一個3D格斗游戲。你的電腦可以為你做任何事(除了泡咖啡之類,不過未來應該可以)。
注意了,我可不是讓大家現(xiàn)在就去寫一個3D格斗游戲,因為那太復雜了,會讓你手指抽筋的。我們的課程會循序漸進,一開始是最簡單的,可能只是實現(xiàn)在窗口里顯示一段文字。
這個系列課程的目的是讓讀者最終能夠自己用C語言實現(xiàn)你想實現(xiàn)的幾乎任何程序。
說來說去,C語言是什么呀?
編程,用什么語言呢?
你的計算機(電腦)真的是一個奇怪的家伙,這樣說已經算很給它面子了。我們給它傳遞命令,只能輸送給它0或1(因為電腦里面有大大小小的數(shù)不勝數(shù)的晶體管,而他們被用來做“開關”,0和1正好可以用來表示開啟或關閉的兩個狀態(tài),所以電腦最底層其實都是0和1這樣的二進制碼)。打個比方,我要讓電腦做加法:“計算1+2等于多少”。我實際上輸給電腦的是(是我隨便寫的,我并不記得怎么轉換這句話到二進制碼):
01010011101100110011110101
正如你看到的,這就是你的電腦所會的語言,被稱為“二進制語言”。它也只會這門語言,可以看到這門語言完全不容易理解。
所以,我們的第一個真正的問題來了:
怎么才能夠用更簡單的語言來和電腦對話呢,難道只能用0和1嗎?
你的電腦既不講中文也不講英語。然而,即使最瘋狂的專家也不會真的要去用二進制碼來編寫程序,那簡直令人難以忍受。
所以,我們的計算機學者們就想到:先用其他簡單一些、便于理解的語言編寫程序,之后再把它翻譯成電腦的二進制語言。
最不容易的,就是要編寫這樣一個“翻譯”程序。幸虧計算機學者們已經把這樣的翻譯程序寫好了,我們也沒必要重新做了(著實松了一口氣)。所以我們要做的就是告訴電腦:“我要做加法:1+2等于多少”,這句話會被翻譯成電腦的二進制碼:
01010011101100110011110101
一些術語
上面我在解釋時都是用的簡單的詞語,但要知道在計算機領域,每樣事情都有特定的術語。這個系列課程中我們都將使用合適的術語。
這樣有好處,不僅可以顯得你比較“高大上”,而且當你有一天要跟另一個程序員解釋一些原理,用專業(yè)術語才好。雖然周圍的人可能會把你當火星人看,但大可不必理會。
上面我們說過,我們不可能用0和1來編寫程序,所以我們使用“簡化的語言”,按專業(yè)術語應該被稱為“高級語言”。
編程語言有幾個等級,等級越高就越接近于我們人類的語言(比如英語)。高級語言使用方便,但是也有一些缺陷,之后我們會看到。
下面列舉一些高級語言:
C
C++
Java
Swift
Python
Visual Basic
Delphi
當然這里只是列舉幾種,要把所有高級語言列出來那得花不少時間。
除了剛才的高級語言,另一個我們要記得的術語是:源代碼。所謂源代碼,就是你用高級語言寫出來的代碼。所以是你寫源代碼,然后再把源代碼轉化成機器能理解的二進制碼。
接下來再來學兩個術語:編譯器。指的是把源代碼轉為電腦能理解的二進制碼的工具。這個轉換的過程,稱為 編譯。
重要:對于每一種高級語言,都有對應的不同編譯器。當然,也不難理解,因為每種高級語言本身是不同的么,我們不可能用C語言的編譯器去編譯Java的源代碼。
之后我們還會看到,即使對于一種高級語言(例如C語言),也存在好幾種不同的編譯器,有Microsoft(微軟)的編譯器,GNU的編譯器,等等。這些我們會在下一課學到。
由編譯器編譯出來的二進制程序被稱為 可執(zhí)行程序。所以對于微軟下的可執(zhí)行程序,都有一個后綴名:.exe (就是EXEcutable “可執(zhí)行的”這個英語單詞的前三個字母)。
為什么選擇學習C語言
之前說過,高級語言有很多種。我們應該在它們之中特別選擇一門來作為入門編程的語言么?
這是大問題。
我們有如下選擇:
很高級的語言
非常容易使用,可以說適合普羅大眾。其中,有Python,Ruby,Visual Basic等。通常來說,用這些語言寫程序會比較快捷。然而它們常需要一些額外的文件(比如 解釋器)才能執(zhí)行。
沒有那么高級的語言
這類的高級語言(C語言是一種),誠然不容易編寫。但是學習這樣的語言你可以更深刻地理解編程的原理和電腦運作的原理。之后你再要學一門新語言會很容易,你完全可以自學。
此外,C語言非常流行。大量我們日常使用的軟件都是用C語言編寫的。計算機學科也經常用C語言作為教授編程的語言。
你可能會問,有一個問題我不明白:C語言和C++語言有什么區(qū)別呢?
可以說,C語言和C++比較類似,都是使用非常廣的語言。為了更好地說明它們分別是如何誕生的,我們來說點歷史好了:
在電腦重達幾噸,大小像一大間屋子那樣的時代,計算機領域的前輩們開始發(fā)明一門編程語言:Algol
技術不斷進步,他們又發(fā)明了一門新的語言:CPL,之后發(fā)展成為 BCPL,后來被稱為 B語言
后來,終于發(fā)展成了C語言
又過了一段時間,人們想要在C語言上加一些東西。一些改進,如果你要這么說的話。這門新語言誕生了,就是C++,是基于C語言發(fā)明的。C++在C語言基礎上加了不少新的東西,使我們可以用不同的方式編程
注意:這并不是說C++比C更優(yōu)秀,只是可以讓我們用不同的方式編程。也不是說C語言相比就是一門老舊的語言,不,C語言今天仍然很常用,它是我們所用的WIndows,Mac OS,Linux,Unix等操作系統(tǒng)的基礎。
編程艱辛么?
這個問題可能困擾很多人。是否需要成為有幾年研究經驗的數(shù)學家才能學編程呢?
答案是:絕不。學編程并不需要在數(shù)學方面有多大造詣,當然數(shù)學好對學編程也是有好處(比如編寫3D游戲,就需要有一些空間幾何知識)。其實最常用的也就是四則運算了:加,減,乘,除。
那編程有什么難的呢?
誠然,不是那么可怕。但是可能需要知道電腦工作的機制,為了更好的理解我們用C語言做的事。
一個程序員一般有以下特質:
耐心:很多時候,你的程序不是第一次就能順利運行的,要堅持不懈
邏輯意識:不需要有很多數(shù)學知識,但是要會思考。對于認為編程輕而易舉的人,對不起了
冷靜:急躁起來也不能拿榔頭敲電腦啊。要讓程序運行不能這樣
簡單說來,學習編程沒有特別需要的技能。一個對數(shù)學一竅不通的人也可以成為很好的程序員,關鍵是要有耐心思考問題。很多人后來都發(fā)現(xiàn)自己愛上編程了,變得喜愛思考。
總結一下:
為了實現(xiàn)計算機程序,我們需要用電腦懂得的語言來編寫程序
有很多種編程語言,我們可以按等級來分。一般越高級的語言,越容易掌握。但是在最終的程序效能上可能會差一些
我們要一起來學習的C語言被認為是高級語言里偏低級的。它是全世界最著名和最常用的語言
源代碼是一系列指令,用編程語言編寫
編譯器是一個把我們的源代碼轉換成二進制碼(0和1)的程序,轉換之后的二進制程序可以被我們的電腦執(zhí)行。我們一般遇到的 .exe 文件就是二進制文件,里面可沒有源代碼
編程并不需要很高深的數(shù)學知識,除非你的程序要調用一些數(shù)學公式,比如加密程序。但是,需要你有邏輯意識,并且有條不紊
第一部分第二課預告:工欲善其事,必先利其器
今天的課就到這里,一起加油吧。下一課一起來看看我們用C語言編程可以用到哪些“利器”。
程序員聯(lián)盟 微信公眾號
*您若覺得本文不錯,請點擊畫面右上角《···》按鈕“分享到朋友圈”或“發(fā)送給朋友”
*新朋友請關注「程序員聯(lián)盟」微信搜公眾號 ProgrammerLeague
“程序員聯(lián)盟”公眾號專為程序員,App設計師,各位喜愛編程和熱愛分享的小伙伴們推送各樣編程相關知識,優(yōu)秀軟件推薦,業(yè)界動態(tài)等。搜索 ProgrammerLeague 加關注~
持續(xù)關注 程序員聯(lián)盟 微信公眾號,更多有趣,有料,有亮點的內容等著你哦!
點擊下方“閱讀原文”查看 經典教程《C編程語言 第二版 英文》
↓↓↓
閱讀原文 |
|