D言語入門 第05章 - 分岐
#01 - if文
今回は…
前回の入力を踏まえて、入力されたものによって違う挙動をさせてみたいと思います。
プログラムを分岐させるには、条件が必要です。
たとえば、「入力したものが"0"であったら」このコードを実行する、というような条件です。
D言語には、このような条件を満たすか満たさないかに関する「型」が存在します。
bool 型です。
bool 型は2つの値しかありません。 true と false です。
このbool型の値を用いて、条件式を書きます。
bool a = hoge < 10;
bool b = hoge == 10;
bool c = hoge > 10;
条件式は、 hoge < 10 や hoge == 10 、 hoge > 10 というように書かれます。
注意なのは、「等しい」という意味の条件式は = ではなく、 == です。
D言語では、 = は「代入」という意味があります。
この条件式を使って、分岐のための文を書きます。
D言語の分岐のための命令文は、if文があります。
if(hoge < 10){
}
今回のミソ
- 真偽の型は、 bool 型
- bool には true と false しかない。
- 条件式では、 < や == 、 > などの記号が使える
- 分岐はif文を使う。
サンプルコード
import std.stdio;
import std.conv;
import std.string;
int main(char[][] args)
{
writef("input : ");
int hoge = toInt( chomp( readln() ) );
if (hoge < 10)
{
writefln("入力は 10 未満");
}
return 0;
}
実行結果
input : 50
input : 5
入力は 10 未満
まとめ
今回はif文による分岐でした。
ちなみに、 < や == 、 > 意外にも多くの条件式があります。
特によく使うもの(というかこれ以外を使うことは非常にまれ)としては、
hoge == fuga … hoge は fuga と等しい
hoge < fuga … hoge は fuga より小さい
hoge > fuga … hoge は fuga より大きい
hoge <= fuga … hoge は fuga 以下
hoge >= fuga … hoge は fuga 以上
hoge != fuga … hoge は fuga と等しくない
hoge is fuga … hoge は fuga と同一である
hoge !is fuga … hoge は fuga と同一でない
ですかね。
is や !is は文字列や整数では使わないません。
整数で使えるものは、
hoge == fuga … hoge は fuga と等しい
hoge < fuga … hoge は fuga より小さい
hoge > fuga … hoge は fuga より大きい
hoge <= fuga … hoge は fuga 以下
hoge >= fuga … hoge は fuga 以上
hoge != fuga … hoge は fuga と等しくない
実数で使えるものは、
( hoge == fuga … hoge は fuga と等しい )
( hoge != fuga … hoge は fuga と等しくない )
hoge < fuga … hoge は fuga より小さい
hoge > fuga … hoge は fuga より大きい
※ == と != はあまり使わないほうがいいです。たまに思っていたことと違うことが起こりますので。(何でそうなるかは考えてみるといいです。ヒント:誤差)
文字列で使えるものは
hoge == fuga … hoge は fuga と等しい
hoge != fuga … hoge は fuga と等しくない
( hoge is fuga … hoge は fuga と同一である )
( hoge !is fuga … hoge は fuga と同一でない )
次は、if文で分岐したとき「以外」の場合の処理の仕方です。
お次へどうぞ~
#02 - else文
今回は…
前回の if文で条件を満たさなかった場合にのみ実行したいコードがあったとします。
たとえば、10未満で「10未満です」と表示して、それ以外では「10以上です」と表示する場合を考えてください。
このような場合は、else文を書くと簡単に実現できます。
if(hoge < 10)
{
writefln("10未満です");
}
else
{
writefln("10以上です");
}
今回のミソ
- if文で捕らえられなかった「それ以外」の場合は、else文を使う
サンプルコード
import std.stdio;
import std.conv;
import std.string;
int main(char[][] args)
{
writef("input : ");
int hoge = toInt( chomp( readln() ) );
if(hoge < 10)
{
writefln("入力は 10 未満");
}
else
{
writefln("入力は 10 以上");
}
return 0;
}
実行結果
input : 50
入力は 10 以上
input : 5
入力は 10 未満
まとめ
今回は、if文で捕らえられなかった場合の処理方法、else文をやりました。
これで、プログラムを2つに分岐させることができるようになりました。
if文だけでは、「実行する」「実行しない」の2択でしたが、else文を使うことによって「実行する」「実行しない場合にほかの事をする」「何もしない」の3択になりました。
余談ですが、私の大学では単位制と名乗っておきながら、ある授業を「履修する」「履修しない」という2択しかなかったので、「ほかの授業を履修する」というelse if的な選択肢がほしかったです…
次回は、さらにたくさんの処理に分岐させたい場合の文法をやります。
お次へどうぞ~
#03 - else+if
今回は…
前回までのif文やelse文を使用することによって「実行する場合」「実行しない代わりにほかの事を実行する」「何もしない」の3つに分岐できるようになりましたが、それ以上に「この場合Aを実行する場合」「この場合Bを実行する」「この場合Cを実行する」…「何もしない」というように、たくさん分岐させたい場合はどのようにしたらよいかを考えます。
とりあえず前回までのもので頑張って書いてみるとすると、
if (hoge == 1)
{
writefln("hoge == 1");
}
else
{
if (hoge == 2)
{
writefln("hoge == 2");
}
else
{
if (hoge == 3)
{
writefln("hoge == 3");
}
else
{
}
}
}
というように非常に長ったらしいものになってしまいます。
そこで、 if と else を同時に使うというようなことをします。
下のように書くとスマートですね。
if (hoge == 1)
{
writefln("hoge == 1");
}
else if (hoge == 2)
{
writefln("hoge == 2");
}
else if (hoge == 3)
{
writefln("hoge == 3");
}
今回のミソ
- たくさん分岐させたい場合は else if を使う
サンプルコード
import std.stdio;
import std.conv;
import std.string;
int main(char[][] args)
{
writef("input : ");
int hoge = toInt( chomp( readln() ) );
if (hoge == 0)
{
writefln("hoge == 0");
}
else if (hoge == 1)
{
writefln("hoge == 1");
}
else if (hoge == 2)
{
writefln("hoge == 2");
}
else if (hoge == 3)
{
writefln("hoge == 3");
}
else if (hoge < 10)
{
writefln("hoge < 10");
}
else if (hoge == 10)
{
writefln("hoge == 10");
}
else
{
writefln("hoge > 10");
}
return 0;
}
実行結果
input : 50
hoge > 10
input : 5
hoge < 10
input : 2
hoge == 2
まとめ
今回でさまざまな分岐を行えるようになりました。
分岐に関してはこれだけ知っておけばプログラムを書く分には問題ありません。
読む分には、swtch文などもありますが…
それはまた別のお話です。
#summary - まとめ
第05章のミソ
- 真偽の型は、 bool 型
- bool には true と false しかない。
- 条件式では、 < や == 、 > などの記号が使える
- 分岐はif文を使う。
- if文で捕らえられなかった「それ以外」の場合は、else文を使う
- たくさん分岐させたい場合は else if を使う
宿題
4章のものよりマシな電卓を作りましょう
input number : 10.5
input operator : -
input number : 4.3
10.5 - 4.3 = 6.2
input number : 4.6
input operator : /
input number : 2.3
4.6 / 2.3 = 2
input number : 5.6
input operator : /
input number : 0
0 で割ってはいけない
コメント
さてさて、できましたかな~?
今回の宿題はかなり難しいかも。
と、いうことで、分岐がわかったら、次は繰り返しです。
分岐と繰り返しがプログラミングの基本のもっとも重要なところだと思います。
というわけで、次の章は繰り返しです。
そんなわけで、宿題できたら、あるいは予想ついたら次にいきましょう~
ページトップ /
目次 /
次へ