程式設計基礎知識

weixin_34104341發表於2020-04-07

軟體和程式是相輔相成的。程式可以看做是軟體的子集。換句話說,軟體就是由一個一個程式組成的。程式又是由一條一條的程式碼組成的。

 

擴充套件:

有一個電腦科學家沃斯提供了一個公式:程式 = 資料結構 + 演算法

 

計算機語言

一說到計算機語言,首先會想到自然語言。自然語言就是用於人與人之間進行溝通的。計算機語言就是用於人與計算機之間進行溝通。

 

計算機語言的發展史

 

計算機語言是從20世紀40年代開始出現,大致可以分為3個階段

 

第一階段:機器語言

第二階段:組合語言

第三階段:高階語言

 

機器語言:最早的機器語言最大的特點就是由01組成。之所以只有01,是因為要使用這兩個數字來類比電子元件的通電和不通電的狀態,從而向計算機傳送命令。

 

組合語言:組合語言從一定程度來講就是機器語言的一種助記符。使用助記符以後可以一定程度上幫助人類明白程式碼的含義。

 

 

高階語言:高階語言更加接近於我們的自然語言。

高階語言又可以分為兩個大類:一個叫做程式導向,另一個叫做物件導向

所謂程式導向,就是在編寫程式碼的時候,需要向機器一樣考慮每一個步驟。程式的設計是自頂向下,一步一步執行。

所謂物件導向,就是更加接近於人類的思考模式。只需要考慮我們做一個事情的時候需要哪些東西,而不需要考慮具體的步驟

高階語言可以以1980年為一個分界點。80年之前,基本上都是程式導向的語言(C語言),80年之後就基本都是物件導向的語言(JavaC#PHPRuby

 

翻譯程式

為什麼需要翻譯程式:因為計算只能識別機器語言,但是我們書寫程式的時候,使用的是高階語言。這個時候就需要將高階語言翻譯成機器語言。

翻譯的方式有兩種:一種是編譯,一種是解釋

根據翻譯的方式我們的計算機語言又可以進行分類:靜態語言和動態語言

編譯器:一次性將整個程式轉換為二進位制程式碼,這個有點類似於將外語書翻譯成中文

直譯器:進行逐行的翻譯。這個有點類似於同聲傳譯。

 

編譯器編譯程式的速度更快。直譯器解釋語言的時候更加靈活。

靜態語言:Java  C#

動態語言:JavaScript  PHP  Ruby

 

程式設計的步驟

 

分析問題

在進行程式開發之前,首先需要對問題進行分析,其實就是分析使用者的需求

 

確定資料結構和演算法

建立數學模型

 

開始進行程式的編制

就是敲程式碼來實現功能

 

軟體的除錯和測試

一步一步解決程式裡面的bug,直到獲取預期的結構。其實我們的程式一定程度來講不是寫出來的,而是調出來

 

常見的程式相關的錯誤型別

 

語法錯誤:編寫的程式碼不符合語言的語法規則,這樣的程式碼是無法通過編譯的

邏輯錯誤:編寫的程式碼符合語法規則,但是邏輯有問題,導致不能得到預期的結果

執行錯誤:這其實就是演算法除了問題。這個時候就應該重新修改自己的演算法。

開發錯誤:整個程式設計的時候偏離了使用者的需求,導致開發方向錯誤

 

演算法

從廣義上來講,演算法就是解決某一個問題的方法和步驟

如果要將演算法進行分類,那麼可以分為兩大類:數值型運算演算法 非數值型運算演算法

數值型運算演算法:就是指最終會得到一個數字的結果。

非數值型運算演算法:例如搜尋等事務相關的處理

 

演算法的特徵

  1. 1.有窮性:就是指一個演算法的步驟應該是有限的
  2. 2.確定性:演算法裡面的每一個步驟都應該是確定的,並且是有具體含義的,不能模稜兩可
  3. 3.有零個或者多個輸入:根據演算法的不同,有一些演算法是可以有輸入的
  4. 4.有一個或者多個輸出:設計演算法就是為了解決問題,因此每一個演算法都應該有一個或者多個輸出
  5. 5.有效性:演算法中的每一個步驟都應該是能夠有效執行的,並且能夠得到結果

 

演算法的表示方式

 

為了讓其他人也可以明白自己的演算法,所以一般我們會把演算法用一些方式表現出來。自然語言表示法,流程圖,虛擬碼,N-S表示法

 

自然語言表示法:所謂自然語言表示法,就是指使用人類日常生活中所使用的語言將演算法表示出來,例如:漢語,英語

例:交換墨水瓶

第一步:將黑墨水瓶裡面的黑墨水倒入空瓶

第二步:將藍墨水倒入空的黑墨水瓶

第三步:將空瓶裡面的黑墨水倒入空的藍瓶裡面

第四步:完成交換

 

虛擬碼表示法:這是一種介於自然語言和計算機語言之間的一種方式

例:交換墨水瓶

第一步:A黑墨水瓶  B藍色墨水瓶 C空瓶

第二步:AC

第三步:BA

第四步:CB

第五步:完成交換

 

虛擬碼練習:1+2+3+4+...+1000

第一步:n = 1

第二步:m = 2

第三步:n = n + m

第四步:m = m + 1

第五步:判斷m是否小於等於1000,如果是,跳回第三步,如果不是,繼續下一步

第六步:輸出結果

 

  1. 2. 1 + 3 + 5 + 7 +...+99

第一步:n = 1

第二步:m = 3

第三步:n = n + m

第四步:m = m + 2

第五步:判斷m是否小於等於99,如果是,跳回第三步,如果不是,繼續下一步

第六步:輸出結果

 

  1. 3.列印1-1000以內,能夠被5整除,或者能被6整除的數字

第一步:n = 1

第二步:n % 5 == 0 如果能,跳到第六步,如果不能,執行下一步

第三步:n % 6 == 0 如果能,跳到第六步,如果不能,執行下一步

第四步:n = n + 1

第五步:判斷n是否小於等於1000,如果是,跳回第二步,如果不是,跳到第七步

第六步:輸出n

第七步:結束

 

  1. 4.安全數的報數遊戲:找出1-60以內能夠被7整除或者尾數為7的數

第一步:n = 1

第二步:n % 7 == 0 如果能,跳到第六步,如果不能,執行下一步

第三步:n % 10 == 7 如果能,跳到第六步,如果不能,執行下一步

第四步:n = n + 1

第五步:判斷n是否小於等於60,如果是,跳回第二步,如果不是,跳到第七步

第六步:輸出n

第七步:結束

 

流程圖表示法:又被稱之為框圖。使用一系列圖形和流程線以及少量的文字說明來進行演算法的表示。特點:更加形象易懂。

 

 

圖形符號

符號名稱

作用

流程線

 橢圓形

起始框

終止框

表示程式的開始和結束

起始框:只有一個出口,沒有入口

終止框:只有一個入口,沒有出口

 平行四邊形

輸入框

輸出框

顧名思義,代表輸入和輸出

只有一個入口,一個出口

 矩形

處理框

表明程式的處理和操作

只有一個入口和一個出口

 菱形

判斷框

對判斷結果進行兩種情況的流向

一個入口,兩個出口

 箭頭

流程線

代表程式的流向,用於將上面的符號把它串起來

 

 

轉載於:https://www.cnblogs.com/lwww/p/7965913.html

相關文章