1、什麼是軟件?什麼是程序?什麼是計算機語言?算法
軟件:是完成某些特定功能,一到多個程序文件的組合。數據結構
程序:完成指定功能的指令。數據結構和算法
計算機語言:人與人之間溝通使用的是天然語言。人與計算機進行溝通就使用的是計算機語言。換句話說,計算機語言就是用來和計算機進行交流的。搜索引擎
沃斯:程序 = 數據結構 + 算法翻譯
程序和軟件之間的關係,就相似於生活中博客和書的關係。設計
2、計算機語言的發展史調試
計算機語言是從二十世紀40年代開始,大體分爲3個階段:對象
第一代計算機語言:機器語言:機器語言所有都是有0和1組成。能夠被計算機直接執行。可是,這樣的語言不便於理解和記憶。索引
第二代計算機語言:彙編語言:彙編語言並不比機器語言高級多少。由於彙編語言其實就是機器語言的一種助記符。雖然說彙編語言只是一種助記符,可是確實相比機器語言,它的易讀性更高事務
第三代計算機語言:高級語言:高級語言的話更加接近咱們平時所使用的天然語言。
高級語言以1980年代爲一個分界點:80年代以前的語言都是結構化語言,80年代以後都是面嚮對象語言。
3、解釋器和編譯器
使用高級語言寫出來的代碼,計算機是不能直接執行的,中間須要一個翻譯的過程。
翻譯器有兩種:
編譯器:一次性將咱們寫出來的程序轉換爲二進制。相似於生活中將整本外語書翻譯成中文。
常見的編譯性語言:C# Java
解釋器:逐行進行解釋。相似於同聲傳譯。
常見的解釋性語言:PHP JavaScript Ruby
相比解釋性語言,編譯性語言的速度更快。可是解釋性語言比編譯性語言更加靈活。
4、程序設計的步驟
編寫程序相似於咱們的蓋樓房,須要先有必定的步驟
(1)分析問題
咱們在進行程序開發以前,首先須要進行的就是分析問題。咱們必須明確問題是什麼?用戶需求是什麼?
(2)肯定數據結構和算法
數據結構:怎樣將數據存入到計算機裏面。
算法:解決問題的方法和步驟
(3) 編制程序
開始敲代碼實現具體的功能
(4)調試問題
咱們寫出來的代碼,99%都是會出現錯誤的。接下來咱們就須要對這些錯誤進行調試,直至達到預期結果。
必定程度來說,咱們的代碼不是寫出來的,而是調試出來的。
5、常見的錯誤類型
(1)語法錯誤
這種錯誤類型是沒法經過編譯的。這種錯誤是最容易發現和修改的。
(2)邏輯錯誤
這種錯誤是都符合語法規範,代碼可以經過編譯,可是邏輯思惟有問題,致使不能獲得預期的結果。這種錯誤每每比較難發現
(3)開發錯誤
每每是指開發的時候偏離了用戶需求
(4)運行錯誤
語法,邏輯,開發方向都是正確的,這種錯誤每每出現於整個程序的算法有問題。這種算法致使內存泄露,存儲空間不足等。因此這個時候須要換一個算法
6、算法:所謂算法,就是指解決問題的方法和步驟。
算法能夠分爲兩大類:數值型運算算法和非數字型運算算法
數值型運算算法:求解數值,獲得一個數值的答案
非數值型運算算法:每每應用事務的管理領域,好比搜索引擎,增刪改查
算法的特性:
通常來說,算法有5個特色:
(1)有窮性
一個算法應該包含有限的操做步驟而不能是無限的。
(2)肯定性
算法中的每個步驟都應該是有意義的,而不該該是含糊的,模棱兩可。
(3) 有零個或者多個輸入
根據算法的不一樣,有些算法在實現的過程彙總,須要輸入一些原始的數據
(4)有一個或者多個輸出
設計算法的最終目的就是爲了解決問題,因此每一個算法至少應該有一個或者多個輸出。
(5)有效性
每個步驟都是可以有效執行的。
7、算法的表示
算法的表示方法很是的多,例如:天然語言表示法,僞代碼表示法,流程圖表示法,N-S表示法。
(1) 天然語言表示法
就是利用咱們平時所使用的語言,例如中文,英文來表示算法。
例如:交換墨水瓶
第一步:須要一個空瓶
第二步:將黑墨水瓶裏面的黑墨水倒入空瓶
第三步:將藍墨水瓶裏面的藍墨水倒入空的黑墨水瓶
第四步:空瓶中的黑墨水倒入空的藍墨水瓶
第五步:交換完成
(2) 僞代碼表示法
介於天然語言和計算機語言之間的一種方式。使用一些文字和符號來對算法進行表示。
例如:交換墨水瓶
第1步:A:黑墨水瓶 B:藍墨水瓶 C:空瓶
第2步:A → C (黑墨水倒入空瓶)
第3步:B → A (藍墨水倒入黑墨水瓶)
第4步:C → B (空瓶中的黑墨水倒入藍墨水瓶)
第5步:交換結束
(3) 流程圖表示法
流程圖又稱之爲框圖,它用規定的一系列的圖形和流程線來表示算法。