削除された内容 追加された内容
M added Category:D言語 using HotCat
Ef3 (トーク | 投稿記録)
→‎Hello World!: <syntaxhighlight lang="D" start=nnn line>
46 行
 
;hello.d
<syntaxhighlight lang="D" line>
import std.stdio;
 
69 行
C言語を知っている読者には馴染みの深い見た目ではあると思うが、初心者向けにコードを一行ずつ解説していくことにしましょう。
 
<syntaxhighlight lang="D" line>
import std.stdio;
</syntaxhighlight>
:C言語のコード冒頭によくある<code>#include <stdio.h></code>に相当する部分ですが、しかしD言語では仕様の細部が違い、D言語にはプリプロセッサはありません。このコードの意味は「<code>std</code>というフォルダにある<code>stdio</code>というモジュールをインポートする」という意味です。
:さらに意味のわからない単語が出てきましたね。一つずつ解説していきましょう。
77 ⟶ 79行目:
:「インポート」とは、そのモジュール(この場合は<code>std.stdio</code>)に書かれているシンボルの定義全て(シンボル表)を今のモジュール(この場合は<code>hello.d</code>)から使えるようにする、という意味です。5行目に "writeln" というのがありますね。"writeln" は <code>std.stdio</code> で定義されているのです。
 
<syntaxhighlight lang="D" start=3 line>
void main()
</syntaxhighlight>
 
:関数 main を定義するぞ、という宣言です。詳しくは [[D言語/関数]] を参照してください。関数というのは手続きをまとめたもので、値を返したり返さなかったりするもの、という理解で良いでしょう。<code>void</code> は「何も返さない」という意味です。--- <small>細かいことを言えば、main 関数だけは若干違っており、void main は、int main に内部的に書き換えられ、最後に必ず return 0; をするような仕様になっています。</small> ---
:D言語のプログラムのエントリーポイントは必ず main 関数です。D言語ではC言語と同じように、地の文に直接処理を書き込むことはできません。しかしそうするとプログラムの実行を指定できないため、プログラムが起動されるときは main 関数を呼ぶ、と決まっているのです。
 
<syntaxhighlight lang="D" start=4 line>
{
</syntaxhighlight>
:D言語では、<code>{ }</code> で囲まれた文のことを「ブロック」、「スコープ」と呼び、そこには文を書き並べることができます。このブロックは関数<code>main</code>に属し、この関数の処理を表しています。
 
<syntaxhighlight lang="D" start=5 line>
writeln ( writeln("Hello World!" );
</syntaxhighlight>
 
: "Hello World!" については説明の必要がないでしょう。ここにある内容が表示されているのです。D言語では文字列を表す方法はたくさんありますが、とりあえずダブルクオーテーション <code>" ... "</code> で囲むことを覚えておけば良いでしょう。
: writeln は関数です。<code>std.stdio</code> というモジュールに定義されているのでしたね。不正確になることを恐れずに言えば、これはターミナルに文字を表示するための関数です。
90 ⟶ 100行目:
: <code>;</code> は、必ず文末につけなければなりません。
 
<syntaxhighlight lang="D" start=6 line>
}
</syntaxhighlight>
:4行目の <code>{</code> に対応する閉じカッコです。