LotosLabo

プログラミング技術とか気になった情報を載せていきます

D言語について

f:id:lo25131:20140406002906p:plain

D言語とは


C言語Java言語などの良い部分を引き継いでより簡単に、ソフトウェアを生産性や移植性を確保した
プログラミング言語です。


開発環境

こちらのD言語の日本語公式サイトよりインストールできます。
http://www.kmonos.net/alang/d/


ダウンロード&ツールより、今回はWindows向けにインストールしていくので、
dmd_windows_installerをダウンロードする。



環境変数は自動的に設定されるはずです。
もしされていなかったら、
C:\D\dm\binC:\D\dmd2\windows\bin環境変数に追加



D言語を始める

テキストエディタ等を使い、 ファイル名.d というのを作る。
今回はサンプルとしてhelloworld.dを作る。
とりあえずHello worldと表示させてみます。

import std.stdio;

void main()
{
	writeln("Hello, world!");
}


これをコマンドプロンプトにて実行していきます。
保存したディレクトリに移動して、

rdmd ファイル名.d で起動します。
また dmd -run ファイル名.d でも出来ます。


>rdmd helloworld.d

Hello world!


表示

表示には3パターンあります。


write() -> 改行なし
writeln() -> 改行あり
writef() -> フォーマット指定できる表示


例:

import std.stdio;
	void main()
{
	write("test");
	writeln("test1");
	writef("%02d",1);
}

変数の宣言

int 変数名 -> 初期化される
int 変数名 = void; => 初期化されない
auto 変数名 = "文字"; => 型推論


例:

void main()
{
	int a;
	int b = void;
	auto c = "aiueo";

	a = 2;
	b = 3;
	writeln(a);
	writeln(b);
	writeln(c);
}


データ型

int
double
short
byte
char
bool

などがあります。


コメント


 // コメント

 /*
 コメント
 */


演算

num 1 + 1;

 + - * / %

例:

void main()
{
	int num = 0;
	num = 0 + 1;
	write(num);
}



インクリメント・デクリメント

num++;
num--;

例:

void main()
{
	int num = 0;
        int num1 = 1;
	num++;
        num1--;
	writeln(num);
        write(num1);
}

1 と 0 を出力

文字列

string 変数名 = "文字列"
string 変数名 = "文字列/t/n"

特殊文字等も使えます。

結合

「~」

例:

auto a = "sample" ~ "code";
write(a);


長さ

「length」

例:

auto b = "dlang".length;
write(b);

出力:5

切り出し

「[開始数字...終了数字]」

例:

auto c = "sample"[0..2];
write(c);

出力:sa


配列

配列の作成

int [] 変数名 = [値1,値2,値3]


配列の指定

変数名[]=値


例:

int [] arr = [100,200,300];
arr[0] = 400;
write(arr);

出力: [400,200,300]


配列の操作

まず配列を用意します。
auto arr = [1,2,3,4,5,6];



そして配列を操作するには、
import std.array;
というのを書きます。

先頭を取得

変数名.front

例:

auto b = arr.front;
write(b); 

出力:1

先頭を削除

変数名.popFront()

例:

arr.popFront();
write(arr);

出力:[2,3,4,5,6]


末尾を取得

変数名.back


例:

auto c = arr.back;
write(c);

出力:6

末尾を削除

変数名.popBack


例:

arr.popBack();
write(arr);

出力:[1,2,3,4,5]

末尾に追加

変数名 ~= 値


例:

arr ~= 9;
write(arr);

出力:[1,2,3,4,5,6,9]


ベクトル演算

サンプル

auto arr = [1,2,3];
a[] += 10;

出力:[11,12,13]


連想配列

例を使って説明していきます。

配列の作成

例:

int[string] 変数名
int[string] hash = ["a": 1, "b" : 2];


値の変更

hash["a"] = 5



キーの取得

hash.keys;



値の取得

hash.values;



キーがあるかどうか

auto val = "a" in hash;



キーの削除

hash.remove("a");

例:

int[string] hash = ["a" : 1, "b" : 2];
	hash["a"] = 5;
	writeln(hash);
	writeln(hash.keys);
	writeln(hash.values);
	auto val = "b" in hash;
	writeln(val);
	hash.remove("a");
	writeln(hash);

valにはポインタの値が表示されます。

条件分岐

if文

if (条件式) {

}

例:

int a = 5;
if (a == 5) {
   write("ai");
} 


if else 文

if (条件式) {

} else {

}

例:

int a = 5;
if (a == 5) {
   write("ai");
} else{
   write("haha");
}


if else if 文

if (条件式) {

} else if (条件式) {

}

例:

int a = 5;
if (a == 5) {
   write("ai");
} else if (a > 5 ) {
   write("haha");
}


switch文

switch (変数とか) {
case 条件1, 条件2:

break;
case 条件:

break;
default:
}

例:

int a = 6;
   switch(a) {
     case 5, 6:
     writeln("ha");
     break;

     case 4:
     writeln("aa");
     break;
     default:
}



while文

while (条件式) {

}

例:

int i;
while (i < 5) {
 write(i);
 i++;
}


for文

for (条件式) {

}

例:

for (int i; i < 5; i++) {
writeln("hahaha");
}


【関数】

int main() {
関数名();
}


void 関数名() {
処理
}

例:

int main() {
       kansuu();
}

void kansuu() {
      write("abcde");
}