エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

ビジュアルプログラミング(14)

プログラム電卓(Blockly)(2)

Blockly  |  Google Developers」を使って簡単なプログラムを作ることができる「プログラム電卓(Blockly)」でリストを扱うことができるようにしました。

使い方

プログラム電卓(Blockly)
  • (1) ブロックを選択する領域(ツールボックス)
  • (2) ブロックを表示する領域
  • (3) ボタンの領域(ボタン1~ボタン5)
  • (4) 変数の領域( x,y,z,a,b,c,,d,e,f)
  • (5) リストを表示する領域(変数名:list)
  • (6) リストを表示する領域(変数名:list2)
  • (7) リストを表示する領域(変数名:list3)
  • (8) リストを階層表示するチェックボックス
  • (9) テキストを表示する領域(変数名:text)
  • (10) ブロックの領域に読み込むボタン
  • (11) サンプルを選択するリスト
  • (12) ブロックの領域をテキストにしたものを入力する領域
  • (13) ブロックの領域をテキストにしたものを表示するボタン
  • (14) ブロックの領域をテキストにしたものを表示する領域

(1)の領域からブロックを選択して(2)の領域にドラッグ&ドロップしてつなげていってプログラムを作り、(4)の領域に変数の値を入力し、(3)のボタンのどれかを押すと、プログラムが実行されて(4)の領域に変数の値が表示されます。

(5)の領域には変数 list の値、(6)の領域には変数 list2 の値、(7)の領域には変数 list3 の値、(9)の領域には変数 text の値が表示されます。

(8)チェックボックスをチェックすると、(5)(6)(7)の領域にはリストが階層的に表示されます。このとき変数 list、list2、list3 はリストを設定してください。

「もし」と「ボタン1」から「ボタン8」までのブロックをつなげたところに実行する内容をつなげると、指定したボタンを押したときにそのプログラムが実行されます。「もし」は(1)の領域の「Logic」以下の「If」以下にあります。「ボタン1」から「ボタン8」までは(1)の領域の「Logic」以下の「Button」以下にあります。

「もし」と「ボタン1」をつなげた様子

「ボタン…実行」ブロックと数値(1 から 8 まで)のブロックを組み合わせると「ボタン1」から「ボタン8」までを実行することができます。「ボタン…実行」は(1)の領域の「Logic」以下の「Button」以下にあります。

「ボタン…実行」と「1」を組み合わせた様子

(13)のボタンを押すと(2)の領域の内容をJSONで表したテキストが(14)の領域に表示されます。これをテキストエディタなどにコピー&ペーストして保存しておくと、これを読み出して(12)の領域にコピー&ペーストの後(10)のボタンを押すと(2)の領域を復元することができます。

(11)のリストを選択すると(12)の領域にサンプルのテキスト(JSON)が表示されます。その後(10)のボタンを押すと(2)の領域にサンプルが表示されます。

ユークリッドの互除法」の使い方

(11)のリストから「ユークリッドの互除法」を選択すると(12)の領域にサンプルのテキスト(JSON)が表示されます。その後(10)のボタンを押すと(2)の領域に「ユークリッドの互除法」のサンプルが表示されます。

(I) (4) x y の領域に正の整数を入力してください(これを  x_0 y_0 とします)。

(II) (3)の「1」のボタンを押してください。(4)の領域に  a = 1 b = 0 c = 0 d = 1 が表示されます。

(III) (3)の「2」のボタンを、(4)の領域が  y=0 になるまで繰り返し押してください。 x x_0 y_0 の最大公約数となります。 x = ax_0 + by_0 となります。

(I)の後(3)の「3」のボタンを押すと(II)と(III)を続けて実行できます。

この手順を実行中、 x = ax_0 + by_0 y = cx_0 + dy_0 が成り立っています。よって最終的に最大公約数は  ax_0 + by_0 となります。