KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

whileプログラムでif-then文を展開する

現在技術評論社から出版されている「チューリングの考えるキカイ」を読んでいます。

チューリングの考えるキカイ ~人工知能の父に学ぶコンピュータ・サイエンスの基礎

チューリングの考えるキカイ ~人工知能の父に学ぶコンピュータ・サイエンスの基礎

この本のChapter6の末尾に「if-then文」をwhileプログラムで展開しよう、という問題が出されていたので考えてみました。

whileプログラムとは

whileプログラムは次にあげる厳密なルールがある。このルール(文法)に則って書かれたものがwhileプログラムとして認められている。

変数

使用できる変数はx0,x1,x2,x3,...に限られる。

基本実行文

  • xi++
    • xiの値を1増加させる(iは変数のインデックス)
  • xi--
    • xiの値を1減少させる(iは変数のインデックス)
    • xiの値が0の場合は、0のまま

whileプログラムの<文>は上記の<基本実行文>と、下記の<while文>と<複合文>のこと。

while文は次の形をした文のことをいう。

while xi ≠ 0 do s

※ 「s」は基本実行文、while文、複合文が入る

while文の例

次のwhile文はx2に0を代入することを表している。

while x2 ≠ 0 do x2--

if-then-else文のwhileプログラム

本にはif-then-else文のwhileプログラムが例示されています。

f:id:masayuki_kato:20180607213018j:plain

begin temp1 ← e; temp2 ← 1;
  while temp1 ≠ 0 do
    begin s1; temp1 ← 0; temp2 ← 0
    end;
  while temp2 ≠ 0 do
    begin s2; temp2 ← 0
    end;
end

f:id:masayuki_kato:20180607002150j:plain

if-then文のwhileプログラム

本を参考にif-then文のwhileプログラムを作成しました。

f:id:masayuki_kato:20180607213336j:plain

begin temp ← e;
  while temp ≠ 0 do
    begin s;
    end;
end

f:id:masayuki_kato:20180607213824j:plain