Ada入門:Boolean型

スポンサーリンク

・目的

 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を返す