演算法是解決問題並獲得結果的過程。在這個處理過程中,問題以資料的形式輸入,結果同樣以資料的形式輸出,在演算法的處理過程中,也需要各種臨時的資料。
資料是什麼?
資料是多種不同資訊的表現。
以料理中的食譜為例,下面的材料即為演算法——食譜的資料:
豬肉120g, 洋蔥1/2個, 胡蘿蔔1/2個, 土豆2個, 糖一大勺, 料酒2大勺……
電腦程式中的演算法也是如此,為了解決問題需要使用各種資料:
1. 求最大公約數的演算法:
a. 求最大公約數的兩個整數
b. 求出的最大公約數(整數)
2. 一組資料的排序演算法:
a. 要排序的一組資料
b. 資料的個數
c. 排好序的一組結果資料
在乙個演算法的思考過程中,我們需要很多資訊,所有這些資訊都是資料,都會協助問題解決的流程。因此,所有的演算法是」處理「和」資料「的相互結合。
資料型別的理解
資料代表各種資訊,被視為資訊的資料有很多態別,根據不同種類分為不同的組,如食譜資料的分組:
計算機程式設計的演算法中需要處理的資料也分為不同的組,這樣的分組就稱為資料型別:
整數型:0, 1, 100, -100
浮點型:1.1, 3.1415926, - 2.98
字元型:a, b, x, 我, 你
字串型:abc, china, 演算法
布林型:true, false
值的理解
資料是各種資訊的表現形式,而資料的具體表現就是值。
在烹飪的食譜中, 豬肉、醬油、胡椒等是在做料理時使用的配料和調味料,也可以說是表示」物「的」值「。而100g, 1小勺,200ml等式表示分量,時間等」數「的」值「。
在演算法中,我們用數值、文字等描述」值「, 如整數型或浮點型的值:0, 1, 1.1, 3.14。字元型和字串的值,一般用單引號或雙引號括起字元或字串:'a', 'b', "china".
括起來表示是為了與一般的數值區別開,比如: 10 和 "10",這兩個分別是整數型值和字串的值。
變數的理解
在演算法中,當我們對一些資料進行操作時,需要儲存這些資料的空間,這些空間稱為」變數「。比如,我們做檔案整理的時候,需要把所有檔案分類到不同的盒子裡進行管理,在這裡,檔案就是資料,存放檔案的盒子就是所謂的變數。也就是說,變數起到了盒子的作用,我們可以移動各種資料並存入盒子裡。
在這裡需要注意一點,在整理檔案時,我們可以把多個種類的檔案放入乙個盒子裡,但變數,一般情況下,只能存入一種型別的資料。同時,在已經存入資料的變數中輸入另乙個值時,原先存入的資料將消失。比如宣告乙個變數: int i; 此時,盒子已經搬出來了,但盒子裡沒有任何資料,接著我們設定: i = 2; 於是資料2被存入了盒子 i 裡,我們可以繼續設定 i 的值: i = 3; 此時,3存入了盒子裡,而資料2已經消失了。
值得一提的是,在我們宣告乙個變數 int i;這個步驟中,i 的狀態是不放入任何資料。
變數的區分
演算法中,我們經常使用多個變數,為了區分不同的變數並方便認識變數的用途,我們需要使用變數名來為裝資料的箱子取名。
變數名要唯一。
賦值語句
變數的值的代入是通過變數指定的賦值語句完成的,賦值語句的右邊也可以是使用運算符號的公式,如:i = 10; j = 3 + 5;
賦值語句右邊可能是個變數名,此時的變數名代表儲存在此變數中的值,如 j = i + 5; 這裡的變數名 i 表示儲存在變數 i 中的值,如果 i = 3,那麼j = i + 5就相當於 j = 3 + 5;
陣列
演算法中,陣列用來儲存大量資料。例如:儲存全校學生的測試結果(分數), 或者所有註冊會員的名字等。
陣列的原則:同一陣列中的所有資料必須是同型別的值。
陣列的理解:它是把很多變數線性排列的結果,即,陣列是變數的箱子"無縫隙"地排列在一條直線上。
與變數有變數名作為標記一樣,陣列也有陣列名,陣列名是指定某乙個目標陣列而給定的唯一名稱。
構成陣列的」箱子「的個數稱為陣列元素數,可以用編號進行管理,且編號預設從0開始。
二維陣列
陣列中儲存大量的關聯資料。其中,在一條直線上排列的,像儲物櫃的陣列稱為一維陣列,另外,也有把變數像縱向和橫向無縫隙排列的矩形陣列,它稱為二維陣列。甚至還有向水平、垂直、深度三個方向無縫隙排列的立方體陣列,稱為三維陣列……
二維陣列被廣泛地使用在行和列的大量資料的管理中,如:圍棋遊戲中黑白子的管理
如果每一層的房間數排列一樣,那麼,由n層組成的賓館房間構造也可以認為是二維陣列。
總之,二維陣列必須是由變數的」箱子「無縫隙地排列成長方形的結果:
字串
在演算法中,字元和字串的處理是比較特殊的。
對於字元,計算機內部是通過數字(或字元編碼)表示的。例如:字元'a'為65, 字元 'b' 為66...
字串是上述字元編碼對應的字元連續的表現,因此,字串是字元無縫隙線性排列的資訊,或者可以定義為:字串是每個元素儲存字元的字元型陣列,例如:字串"abc",可以看成是儲存字元'a', 'b', 'c'的陣列。
指標變數和陣列
int arr 2 int arr int i arr 0 arr 1 23 char str abc 字元內容儲存在堆上 char str1 字元內容儲存在棧上第一種情況 字元內容會儲存在堆上,並在棧裡儲存str指標變數,變數值為字元在堆上的首位址。第二種情況 字元內容會儲存在棧上,但是不會有額外...
gdb顯示變數 和 陣列
程式變數 檢視檔案中某變數的值 file variable function variable 可以通過這種形式指定你所想檢視的變數,是哪個檔案中的或是哪個函式中的。例如,檢視檔案f2.c中的全域性變數x的值 gdb p f2.c x 檢視陣列的值 有時候,你需要檢視一段連續的記憶體空間的值。比如陣...
PowerShell變數 常量和陣列
變數 power shell是一種弱型別語言,所謂弱型別語言是指不用區分資料型別,弱型別的特徵決定了powershell使用變數的資料型別直接賦值,只需要在變數名前加上 變 量賦值公 式 變數賦值公式 變數賦值 公式 變數名 值 環境變數 system.environment setenvironm...