小菜的前端編程散談(3)

小菜的前端編程散談(3)

數據類型

在程序中要存儲和表示不一樣的數據,這固然要使用不一樣的數據類型,所謂的類型就好像是一個數據的容器同樣。打個比方,在平常生活中,咱們使用杯子裝水,使用碗盛飯,不一樣的東西使用不一樣的容器。計算機的世界裏也是同樣。
計算機的世界只有二進制,而二進制來存儲數據,固然就是存在0和1的位(Bit)上,因此不一樣的類型的主要差別在於位上面的區別。這是類型的第一重意義。類型的第二個意義在於,明確表示數據的含義。好比整型類型用來表示數據,字符類型表示字符描述。
通常的程序中,會使用最基本的一些類型,好比 bool(有的也叫boolean)、int(有的也叫integer)、char或者string(字符串,也就是一段文本),這裏大概說一下這幾個類型:前端

  1. bool布爾類型,布爾類型通常表示真(true)或者假(false),也就是說,布爾類型實際上只描述兩個值,因此,使用一個位(Bit)就夠了(好比0表示false,1表示true)
  2. 整型,整型分常規整型和長整型,通常編程語言把常規整型定義爲32位的長度,默認是有符號整數,最高一位表示正負,剩餘31位表達0到2的31次方減1的整數範圍。不過須要注意的是,好比,最大的32位整數2的31次方減1位2147483647,那麼若是這個數加1會如何呢?這實際上等於越界,超過了最大數會變成最小數(改變了最高的正負位),而有的編程語言直接會報出越界錯誤。做爲開發人員,須要時刻謹防數據越界,使用合理的方式進行數據檢查
  3. 字符和字符串,字符在上一張就說過,每一個字符爲一個byte(字節),一個字節包含8個位。能夠表達255種含義,對應ASCII編碼表或者Unicode字符集合表。而一個字符串其實就是字符的集合(或者叫數組),好比「Hello World」這個字符串,其實就是由11個字符組成。

程序結構

函數

程序結構指的是一個程序是如何組成和如何執行的,在傳統的C語言環境中,程序由一系列的定義組成,定義包含類型(自定義類型、後面會講到)定義和函數定義。而程序的執行就是從Main函數開始。函數是程序的基本執行單元。所謂函數就是定義了一個名稱,定義了一組參數(輸入),定義了返回類型(輸出,也能夠不用返回數據,就是void),而後函數體裏面進行處理。函數能夠嵌套和遞歸,嵌套就是函數裏面調用其餘函數,遞歸就是函數調用本身的過程。這些都有必要了解一下。我舉個現實中的例子:編程

string A(string message){
  return B(message);
}
string B(string message){
  return C(message);
}
string C(string message){
  return "This is your brick";
}數組

注意,這裏我演示的例子是一個函數嵌套的例子,首先咱們看定義,咱們定義了三個函數,我把他們叫搬磚頭,每一個函數接受一個名字爲message類型爲string的參數用來表示接收的指令,返回string表示磚頭結果。(明顯看出函數3大要素,函數名,參數名和參數類型,返回類型),說完了函數定義再說函數實現,A接收到一個指令說要搬一塊磚頭,而後A把指令告訴B讓B搬一塊磚頭,而後B又把指令轉給C,而後C就返回This is your brick。這個結果實際上又往回傳遞給B而後傳遞給A最後傳遞給調用A函數的那我的。
在真正的程序中,函數的結構每每都比這個複雜,好比A中調用B,而後作一些事情而後調用C最後再返回。
還有一種狀況,那就是函數調用本身,這個叫遞歸函數,遞歸函數是一種很是好用的比較實用型的容易理解的函數。具體含義(應該是有3個要素,才能符合一個標準的遞歸函數)去網上搜一下。我這裏舉一個例子來理解,拿最著名的斐波那契數列舉例,求第N個數是多少?編程語言

int Fib(int n){
  if(n<=1){
    return 1;
  }
  return Fib(n-1) + Fib(n-2);
}函數

看上去應該很容易理解吧,你能夠發現遞歸函數的一些特徵,好比必須有一個基準點能夠返回一個值,好比函數調用本身,而且逐漸靠近基準點。編碼

其實關於函數的調用,在計算機中的處理指令通常都是入棧出棧操做,進入一個新的函數調用等因而壓入一個函數棧,調用完一個函數等因而出棧操做。關於棧是什麼後面會講到。如今最好的是體會這個過程,在大腦中想象一顆倒着的樹,最上層是函數調用者,往下就是各個子調用。本身想象一下,能夠把函數調用理解成一棵樹嗎?咱們生活中作的不少事情,你把它畫成圖,其實也能夠是一棵樹,好好發揮想象力想一下吧!code

今天就到這裏,提示一下:若是有了一點積累有了一點理解,不妨立刻用代碼把它寫出來吧,光說沒用光讀沒用,必需要寫代碼!遞歸

ps:下一次說一下程序控制流程了開發

相關文章
相關標籤/搜索