ページへ戻る

− Links

 印刷 

Articles​/D言語入門講座​/第02章 - 計算 :: D言語友の会

wiki:Articles/D言語入門講座/第02章 - 計算


ページ内コンテンツ
  • #01 - 四則演算
    • 今回は…
    • 今回のミソ
    • サンプルコード
    • 実行結果
    • まとめ
  • #02 - 余剰と実数の計算
    • 今回は…
    • 今回のミソ
    • サンプルコード
    • 実行結果
    • まとめ
  • #03 - 文字列の連結
    • 今回は…
    • 今回のミソ
    • サンプルコード
    • 実行結果
    • まとめ
  • #summary - まとめ
    • 宿題
    • コメント
  • コメント

#01 - 四則演算 anchor.png[4]

Page Top

今回は… anchor.png[5]

今回はプログラムで四則演算(+、-、×、÷)をしてみて、その結果を出力してみようと思います。
出力は、前回同様 writef(数値) を使っていきます。
D言語での演算子(+とかの記号のこと)の対応は今回のミソのとおりです。(プログラム内では全角文字の+や-、×や÷と書いてはいけないのです)

Page Top

今回のミソ anchor.png[6]

  • 計算に使う+や-の記号のことを、演算子と言う。
  • 普通の演算子とD言語の演算子の対応は以下のとおり。
    • 加算(+) … +
    • 減算(-) … -
    • 乗算(×) … *
    • 除算(÷) … /
  • 演算の優先順位は常識どおり。
  • ( ) (括弧)も使える。
  • [ ] (大括弧)や { } (中括弧) は、計算の優先順位のためには使うことができない。
Page Top

サンプルコード anchor.png[7]

filesample0201p.d[8]
Everything is expanded.Everything is shortened.
 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
39
40
41
42
43
 
 
 
-
!
-
|
-
!
-
|
|
|
!
|
-
!
-
!
|
|
-
!
|
|
-
!
|
|
-
|
!
|
|
-
!
|
-
|
!
-
!
!
// おまじない
import std.stdio;
 
// おまじない
int main(char[][] args)
{
    
    // これは前回やった文字列の出力(Hello, world!)と同じです。
    write("2 + 3 = ");
    // ここで、2+3をやった結果を出力します。
    // ポイントは、文字列のように " " で囲まないで、
    // 直接 2 + 3 のように書くことです。
    // つまり、計算結果は数値と同じと言うことです。
    writeln( 2 + 3 );
    
    // 同様に引き算や掛け算、割り算もやってみます。
    
    // 引き算
    write("3 - 2 = ");
    writeln( 3 - 2 );
    
    // 掛け算
    write("2 * 4 = ");
    writeln( 2 * 4 );
    
    // 割り算
    write("6 / 3 = ");
    writeln( 6 / 3 );
    
    // 演算の優先順位は常識と変わりません。
    // 掛け算のほうが足し算より先に行われます。
    write("3 + 5 * 3 = ");
    writeln( 3 + 5 * 3);
    
    // 括弧を使うこともできます。
    write("( 3 + 5 ) * ( 8 - 4 / 2 + 1) = ");
    writeln( ( 3 + 5 ) * ( 8 - 4 / 2 + 1) );
    // ただし、 {} や [] はプログラムの中では別の意味を持ってしまうため、
    // 使うことはできません。
    
    // おまじない
    return 0;
}
+  Tango用はこちら
filesample0201t.d[9]
Everything is expanded.Everything is shortened.
 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
39
40
41
42
43
 
 
 
-
!
-
|
-
!
-
|
|
|
!
|
-
!
-
!
|
|
-
!
|
|
-
!
|
|
-
|
!
|
|
-
!
|
-
|
!
-
!
!
// おまじない
import tango.io.Stdout;
 
// おまじない
int main(char[][] args)
{
    
    // これは前回やった文字列の出力(Hello, world!)と同じです。
    Stdout("2 + 3 = ");
    // ここで、2+3をやった結果を出力します。
    // ポイントは、文字列のように " " で囲まないで、
    // 直接 2 + 3 のように書くことです。
    // つまり、計算結果は数値と同じと言うことです。
    Stdout( 2 + 3 ).newline;
    
    // 同様に引き算や掛け算、割り算もやってみます。
    
    // 引き算
    Stdout("3 - 2 = ");
    Stdout( 3 - 2 ).newline;
    
    // 掛け算
    Stdout("2 * 4 = ");
    Stdout( 2 * 4 ).newline;
    
    // 割り算
    Stdout("6 / 3 = ");
    Stdout( 6 / 3 ).newline;
    
    // 演算の優先順位は常識と変わりません。
    // 掛け算のほうが足し算より先に行われます。
    Stdout("3 + 5 * 3 = ");
    Stdout( 3 + 5 * 3).newline;
    
    // 括弧を使うこともできます。
    Stdout("( 3 + 5 ) * ( 8 - 4 / 2 + 1) = ");
    Stdout( ( 3 + 5 ) * ( 8 - 4 / 2 + 1) ).newline;
    // ただし、 {} や [] はプログラムの中では別の意味を持ってしまうため、
    // 使うことはできません。
    
    // おまじない
    return 0;
}
Page Top

実行結果 anchor.png[10]

1
2
3
4
5
6
7
$ dmd -run sample0201p.d
2 + 3 = 5
3 - 2 = 1
2 * 4 = 8
6 / 3 = 2
3 + 5 * 3 = 18
( 3 + 5 ) * ( 8 - 4 / 2 + 1) = 56
Page Top

まとめ anchor.png[11]

さて、そんなわけで、こんな感じで計算をすることができます。
次は、割り算したあまりを出す方法を説明しますよ。
お次へどうぞー

Page Top

#02 - 余剰と実数の計算 anchor.png[12]

Page Top

今回は… anchor.png[13]

前のプログラムでは、四則演算をしましたが、D言語だとほかに余剰というものを計算することができます。
余剰というのは、割り算をしたときのあまりで、たとえば10÷7なら3があまりになります。
これを計算する方法があったりします。
ほかにも、5÷2をしたとき、前回の方法では、2と出てしまいます。これはおかしいですね。
これは、「整数」で計算した答えが、「整数」でしか出せないためです。
これを解決するには、「実数」で計算して、答えを「実数」で出すようにすることです。

Page Top

今回のミソ anchor.png[14]

  • 余剰の演算子は、 "%"
  • 整数の後に、.0をつけると、実数として判断される。
  • 実数で計算すると、実数で計算結果が出てくる。
Page Top

サンプルコード anchor.png[15]

filesample0202p.d[16]
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 
 
 
-
!
-
-
!
|
-
!
|
-
!
!
// おまじない
import std.stdio;
 
// おまじない
int main(char[][] args)
{
    // 余剰計算には、 % の記号をつかう。
    writeln( 10 % 7 );
    
    // 実数での計算してほしいときには、5.0などとして、実数で計算してもらう。
    writeln( 5.0 / 2 );
    
    // おまじない
    return 0;
}
+  Tango用はこちら
filesample0202t.d[17]
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 
 
 
-
!
-
-
!
|
-
!
|
-
!
!
// おまじない
import tango.io.Stdout;
 
// おまじない
int main(char[][] args)
{
    // 余剰計算には、 % の記号をつかう。
    Stdout( 10 % 7 ).newline;
    
    // 実数での計算してほしいときには、5.0などとして、実数で計算してもらう。
    Stdout( 5.0 / 2 ).newline;
    
    // おまじない
    return 0;
}
Page Top

実行結果 anchor.png[18]

1
2
3
$ dmd -run sample0202p.d
3
2.5
Page Top

まとめ anchor.png[19]

これで、いろいろと計算することができるようになりました。
しかし、D言語ができる計算は、当然これだけではありません。
次は、「文字列」を計算してみます。
さあ、早速お次へどうぞー

Page Top

#03 - 文字列の連結 anchor.png[20]

Page Top

今回は… anchor.png[21]

D言語で計算することができるのは数値だけではありません。 たとえば、文字列を計算することができます。ここでは、文字列をくっつけるお話をします。ない

Page Top

今回のミソ anchor.png[22]

  • 文字列を結合する演算子は ~ (チルダ)
Page Top

サンプルコード anchor.png[23]

filesample0203p.d[24]
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 
 
 
-
!
-
-
!
|
-
!
|
-
!
!
// おまじない
import std.stdio;
 
// おまじない
int main(char[][] args)
{
    // 文字の連結は ~ (チルダ) で行う。
    writeln("この文字列と" ~ "この文字列を連結します。");
 
    // 書式なんかも文字列だから、連結できる。
    writefln("書式も%s" ~ "連結%s" , "こういう風に", "できる");
    
    // おまじない
    return 0;
}
+  Tango用はこちら
filesample0203t.d[25]
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 
 
 
-
!
-
-
!
|
-
!
|
-
!
!
// おまじない
import tango.io.Stdout;
 
// おまじない
int main(char[][] args)
{
    // 文字の連結は ~ (チルダ) で行う。
    Stdout("この文字列と" ~ "この文字列を連結します。").newline;
 
    // 書式なんかも文字列だから、連結できる。
    Stdout.formatln("書式も{}" ~ "連結{}" , "こういう風に", "できる");
    
    // おまじない
    return 0;
}
Page Top

実行結果 anchor.png[26]

1
2
3
$ dmd -run sample0203p.d
この文字列とこの文字列を連結します。
書式もこういう風に連結できる
Page Top

まとめ anchor.png[27]

というわけで、今回は文字列を連結させることができるよっていうお話でした。
もっとも、D言語では、文字列は「文字の配列」という扱いなので、配列の連結といったほうが正しいのでしょうが…
配列についてはもっと後のほうの講義ですので、今は文字列の連結という感じで覚えておくといいと思います。

お次へどうぞー

Page Top

#summary - まとめ anchor.png[28]

第01章のミソ

  • 計算に使う+や-の記号のことを、演算子と言う。
  • 普通の演算子とD言語の演算子の対応は以下のとおり。
    • 加算(+) … +
    • 減算(-) … -
    • 乗算(×) … *
    • 除算(÷) … /
  • 演算の優先順位は常識どおり。
  • ( ) (括弧)も使える。
  • [ ] (大括弧)や { } (中括弧) は、計算の優先順位のためには使うことができない。
  • 余剰の演算子は、 "%"
  • 整数の後に、.0をつけると、実数として判断される。
  • 実数で計算すると、実数で計算結果が出てくる。
  • 文字列を結合する演算子は ~ (チルダ)
Page Top

宿題 anchor.png[29]

一辺5の正方形の、面積と周の長さを、D言語のプログラムを使って求めてください
出力結果は次のようになりますね。

1
2
面積 : 25
周の長さ : 20
Page Top

コメント anchor.png[30]

さてさて、できましたかな~?
数値の計算ができると、D言語を電卓のような感覚で使うことができるようになりますよ。
もちろん、D言語を電卓の変わりに使っても発展性もくそもないのですが…
でも、cos関数とかsin関数、ほかには乱数とかも使えるようになると多少話は変わってくるかも?
その辺は関数のあたりですかねぇ…
まぁ、とりあえず次回は「変数」です。
数学で馴染み深い変数ですが、プログラムではどうなっていうるのか、そこらへんを取り上げてみます。

さあさ、宿題できたら or 予想付いたら次に進みましょう~


Page Top

コメント anchor.png[31]

選択肢 投票
大変参考になった1  
参考になった2  
あまり参考にならなかった0  
まったく参考にならなかった0  

コメントはありません。 コメント​/Articles​/D言語入門講座​/第02章 - 計算編集[32]

お名前:

Last-modified: 2015-04-04 (土) 16:32:40 (JST) (752d) by ゲスト