[1] 2つの数値を比較する演算子
2つの数値を比較する演算は頻繁に出てきます。これらの結果はbool型になります。
1.等しいか等しくないかを調べる
これは、==演算子と !=演算子を用います。前者は2つの数値が等しいときに真を、後者は2つの数値が等しくないときに真を返します。これらは、C言語と全く同じ演算子です。
import std.stdio;
void main(){
int value = 100;
writefln("%s,%s",value == 100,value == 10);
writefln("%s,%s",value != 100,value != 10);
}
► スポイラーを表示
まず、すべての数値型に対して、>,>=, value2 → value1がvalue2よりも大きいとき
value1 >= value2 → value1がvalue2よりも大きいか、もしくは等しいとき
value1 < value2 → value1がvalue2よりも小さいとき
value1 <= value2 → value1がvalue2よりも小さい、もしくは等しいとき
[/code]
► スポイラーを表示
これは、条件によってプログラムの流れを分岐する為の制御文です。C言語と全く同じです。条件式は、bool型以外の場合は、bool型に暗黙変換されます。
import std.stdio;
void main(){
int input;
write("Input Number:");
readf("%d",&input);
if(input < 100){
writefln("Input data is smaller than 100.");
}else if(input == 100){
writefln("Input data is just 100!!");
}else{
writefln("Input data is greater than 100.");
}
}
► スポイラーを表示
基本はC言語と同じなのですが、C言語よりも高機能になっています。例を見ながら解説します。
import std.stdio;
void main(){
int input;
write("Input Number 1 to 10:");
readf("%d",&input);
switch(input){
/*(1)*/
case 1:
writeln("Input data is 1");
break;
/*(2)*/
case 2:
writeln("Input data is 2");
case 3:
case 9:
writeln("Input data is 2, 3 or 9");
break;
/*(3)*/
case 4:..case 7:
writeln("Input data is 4, 5, 6 or 7");
break;
/*(4)*/
case 8,10:
writeln("Input data is 8 or 10");
break;
/*(5)*/
default:
writeln("Obey my order!!!");
break;
}
}
(2) ここもC言語と同様で、case文の最後にbreak文をつけないと、次の文も実行されます。
(3) これは、4~7の数値に対応するcase文をまとめるときの簡略記法です。..でcaseをつなぎます。
(4) 一つのcase文にコンマで並べた複数の数値を対応付けることが出来ます。
(5) 対応する数値が無いときは、C言語と同様にdefaultラベルにジャンプします。default文が複数ある場合はコンパイルエラー。
[4] 繰り返し文 ~for文、while文そしてdo-while文
これもC言語と全く同じです。do-while文は、最初の一回は必ず実行される繰り返し文ですね。
ただし、for文では、初期化式で変数の宣言を行うことが出来ます。次の二つのコードは全く同じ意味を持ちます。
もちろん、break文やcontinue文も使うことが出来ます。
► スポイラーを表示
► スポイラーを表示