・目的
Boolean型を使えるようになること
・方法
Boolean型を使ったコードを図1に示した。
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure BOO is
package Enum_IO is new Ada.Text_IO.Enumeration_IO(BOOLEAN);
use Enum_IO;
rat, cat, dog, bird : INTEGER;
question, truth, lies : BOOLEAN;
begin
rat := 10;
cat := 10;
dog := 12;
bird :=2;
question := rat = cat;
Put("question is ");
Put(question);
New_Line(2);
question := rat = dog; --ratとdogが同値である
Put("question is "); -- 正しくないのでFALSE
Put(question);
New_Line(2);
question := rat /= cat; --ratとcatが同値でない
Put("question is "); --正しくないんでFALSE
Put(question);
New_Line(2);
question := rat < dog; --ratがdogより小さい
Put("question is "); --正しいのでTRUE
Put(question);
New_Line(2);
question := bird > dog; --birdがdogより大きい
Put("question is "); --正しくないのでFALSE
Put(question);
New_Line(2);
question := rat <= cat;
Put("question is ");
Put(question);
New_Line(2);
question := rat >= cat;
Put("question is ");
Put(question);
New_Line(2);
truth := rat = cat; --truth は TRUE
lies := rat < cat; --lies は FALSE
question := truth or lies;
Put("question is ");
Put(question);
New_Line(2);
question := truth xor lies;
Put("question is ");
Put(question);
New_Line(2);
end BOO;
図1:BOO.adb
実行結果
question is FALSE question is FALSE question is TRUE question is TRUE question is TRUE question is TRUE question is TRUE question is TRUE
procedure内で
Enumeration_IO();
をインスタンスすることでboolean型を使うことが
出来るようになる
or と xor について
まずorから
question := truth or lies;
--TRUE
question := lies or lies;
--FALSE
question := truth or truth;
--TRUE
を実行するとわかるが
少なくとも片方がTRUEであれば
questionはTRUEを返す
次にxor
question := truth xor lies;
--TRUE
question := lies xor lies;
--FALSE
question := truth xor truth;
--FALSE
question := truth xor lies;
--TRUE
つまり A xor B としたとき
AとBが同じ値であればFALSE
AとBが異なる値であればTRUEを返す