arithmetic.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // モジュールの宣言の前に書いていいものはコメント文と, 空白文字, 改行
// #! から始まる文だけ。#!から始まるこれはこの講座では詳しく述べません.
module arithmetic;
// 特に何も指定しない場合グローバルスコープ.
// 外部から利用することができる.
// 加算
int add(int a, int b){
return a + b;
}
// 減算
int sub(int a, int b){
return a - b;
}
// 乗算
int mul(int a, int b){
return a * b;
}
// 除算
int div(int a, int b){
return a / b;
}
// private を指定した場合はファイルスコープ. このファイル内からしか
// アクセスすることができない.
private int WxH(int w, int h){
return w * h;
}
// public はグローバルスコープ.
// このモジュールがいからもアクセスすることができる.
public int volume(int w, int h, int d){
return WxH(w, h) * d;
}
|
identity_matrix.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | module identity_matrix;
import std.stdio;
public void printIdentity(){
int[4][4] identity;
/* Initialize identity matrix */
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if(i==j)
identity[i][j] = 1;
else
identity[i][j] = 0;
}
}
/* Print identity matrix */
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++)
writef("%2d ", identity[i][j]);
writeln();
}
}
|
main_arith.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /*
Build It: dmd -w main_arith.d arithmetic.d identity_matrix.d
*/
import std.stdio;
import arithmetic;
import identity_matrix;
void main(){
writeln("From customized arithmetic module:");
writeln( "add(90, 30) = ", add(90, 30) );
writeln( "sub(90, 30) = ", sub(90, 30) );
writeln( "mul(90, 30) = ", mul(90, 30) );
writeln( "div(90, 30) = ", div(90, 30) );
// writeln( WxH(90, 30) );
// This is forbidden, because we can't use a private method in one module.
writeln( "volume(90, 30, 40) = ", volume(90, 30, 40) );
// Ouput an identity matrix
printIdentity();
}
|
main_arith.d の実行結果は:
[cactus:~/code_d/d_tuts/arith]% ./main_arith.d
From customized arithmetic module:
add(90, 30) = 120
sub(90, 30) = 60
mul(90, 30) = 2700
div(90, 30) = 3
volume(90, 30, 40) = 108000
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1