D 入門指南/基礎/D 的結構
本節假設您已經閱讀了關於程式設計的一般介紹,並且瞭解什麼是程式以及什麼是原始碼。
從根本上說,計算機程式是計算機執行的一系列指令。 從文字編輯器到 3D 遊戲,一切都是如此。 在其最低級別(中央處理器),計算機有一組它可以執行的指令。 雖然這組指令是一種程式語言,但它有一些問題,使其難以用於普通程式設計。 正因為如此,有程式語言更具表現力,併為程式設計師提供了更輕鬆的編寫程式的方式,例如 D。 編譯器是一種程式,它將用這種程式語言編寫的程式碼轉換為計算機可以使用的語言(稱為機器碼)。
包括 D 在內的許多程式語言都以一系列指令的形式表達,這些指令按順序執行。 這一概念對計算機和人類來說都很容易理解。 在 D 中,這些指令稱為語句。
語句是對計算機的(可能是非常複雜的)指令。 單個語句以 ';'(分號)結尾,並且可以將任意數量的語句直接放在彼此之後,只要它們都以 ';'(分號)結尾即可。 因此,語句序列 'a'、'b'、'c' 寫成
a; b; c;
這段程式碼將使程式按順序執行假設指令 'a'、'b' 和 'c'。
語句有很多型別,每種語句都有不同的用途。
程式能夠儲存資訊非常重要。 在 D(以及大多數程式語言)中,用於儲存資訊的儲存位置稱為變數。 變數有幾種型別,使用哪種型別取決於變數應該儲存哪種資訊。
要使用變數,您首先必須宣告它。 宣告變數只是指定用於儲存它的空間,並將您提供的名稱與該空間關聯起來。 變數宣告是一個語句,其中包含要宣告的變數的型別和名稱。 所有型別的變數將在後面的部分中介紹; 目前只介紹兩種
| 型別 | 它是什麼 |
| int | 一個數字,例如 1、2、3、0、-4、-3 等。 不能有小數,例如 1.1、2.025。 |
| float | 一個數字,例如 1.1、2、3.141、0、-4.15、-3 等。 |
要宣告一個名為 'foo' 的型別為int的變數,使用以下語句
int foo;
當然,這可以針對任何型別或名稱進行更改,其通用格式為
type name;
如果您不能在其中儲存任何東西,那麼變數就不太有用。 在變數中儲存值稱為賦值該值給變數。 變數只能在宣告之後才能為其賦值,如上所述。 以下語句將值 5 賦值給變數 'foo'
foo = 5;
任何變數都可以透過這種方式被賦值任何值,其通用格式為
variable = value;
D 中的數學很簡單。+用於加法,-用於減法,/用於除法,並且*用於乘法。 要將兩個數字相加,只需在它們之間放置一個+即可,例如
2 + 2
運算順序與數學中的相同。 也就是說,*和/在+和-之前完成。 因此,2 + 2 * 2為 6,而不是 8。您可以透過使用(和)(括號)來改變這一點。 括號內的任何內容都將在括號外的任何內容之前完成; 同樣,如正常數學。 當2 + 2 * 2為 6 時,(2 + 2) * 2為 8。
這種數學可以在大多數可以使用簡單值的地方使用,包括在賦值中
foo = 2 + 2;
上面的程式碼將值 4 賦值給變數 'foo'。
此外,與代數一樣,您可以在數學中使用變數名而不是數字。 如果存在一個名為 'bar' 的變數,'foo' 可以透過以下方式被賦值 'bar' 的值加 2
foo = bar + 2;
上面提到的型別之間的差異會導致除法產生意外結果。 如果兩個數字(運算元)都是int,則結果值也將是int。 例如,如果您編寫以下除法
1 / 2
則結果將是int。 結果向下取整,因此結果不是 0.5,而是 0!
要避免這種情況,您可以強制一個值成為float:
1 / 2.0
。 由於包含小數點,因此 2.0 被解釋為float,因此整個運算現在被計算為float並得到 0.5 的結果。
任何非平凡的程式都應該像任何其他非平凡的任務一樣,被細分為小塊。
洗車可以細分為首先清潔引擎蓋,然後清洗窗戶,清潔輪輞等等。 您可能需要不同的工具、技術和清潔劑來進行每個子清潔,並且您可能需要進一步細分其中一些任務,因為它們太複雜了。 從根本上說,計算機非常愚蠢:它們必須由人類完成所有這些細分和指令,以供它們使用。 人類大腦會為相當複雜的任務幾乎自動執行此任務細分。
從技術上講,D 中的函式封裝了一組語句,以執行比單個語句可以執行的更抽象的任務。 這些語句中的一個或多個可以反過來是函式呼叫(函式的使用)。
函式有助於組織程式。 在洗車示例中,您可以為清潔汽車窗戶編寫一個函式,而在編寫它時,您不必考慮汽車的其他部分。
稍後,當您在另一個函式中呼叫(使用)它來清潔整輛車時,您不必記住清潔窗戶的詳細方法,因為“清潔窗戶”函式已經“知道”這些細節了。
函式和呼叫的實際結構將在後面的章節中討論。
[TODO:壓縮此節] 要討論的最後一個主題是註釋。 註釋是您告訴 D 編譯器忽略的原始碼檔案的一部分。 它們很有用,因為它們可以讓您在程式碼本身中記錄您的程式碼,或者為了測試目的刪除程式碼的一部分(稱為註釋掉程式碼)。 D 有三種基本型別的註釋:行註釋、非巢狀塊註釋和巢狀註釋。
行註釋非常簡單。 它們以兩個斜槓開頭 (//) 並在一行的末尾結束。 它們主要用於記錄或註釋掉單個程式碼行。 非巢狀塊註釋以斜槓和星號開頭 (/*) 並以星號和斜槓結尾 (*/)。 它們可以跨越多行,但不能巢狀,也不允許多個級別,這意味著即使您有多個/*註釋開啟符,它只需要一個*/註釋更接近於關閉所有註釋。這些註釋主要用於記錄程式碼的整個部分。最後一種型別的註釋,巢狀註釋,與塊註釋的工作方式相同,只是它們確實巢狀,並以斜槓和加號 (/+) 和加號和斜槓 (+/) 分隔。以下示例旨在展示註釋的功能,不應將其視為最佳使用示例。
number = 5; //Number is set to 5 //number = 6; //We don't want number set to 6 /* The next section of code subtracts one from number and assigns that value to number2 */ number2 = number - 1; //The following lines demonstrate nesting vs. non-nesting comments: /+ This type of comment /+ Can /+ nest +/ ... +/ still in comment +/ /* This type cannot /* nest */ number = 7; //number is now set to 7