プロデル、調査 その17

# 概要
プロデルが、CLRらしいので、調べて見た。
練習問題やってみた。

# 練習問題
Forth電卓を作れ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/c8ee182a-40bb-4d95-a600-2b169b29a8ef.png)

# サンプルコード

```

メイン画面を表示する
待機する

メイン画面とは
	-保留値
	-演算記号
	+stack
	ウィンドウを継承する
	はじめの手順
		初期化する
		stackというスタックを、作る
		ボタン配列は{ボタン0,ボタン1,ボタン2,ボタン3,ボタン4,ボタン5,ボタン6,ボタン7,ボタン8,ボタン9}
		ボタン配列のすべての要素についてそれぞれ繰り返す
			要素のクリックされた時の手順は、数字ボタンがクリックされた
		そして
		ボタン1にフォーカスする
	終わり
	初期化する手順
		初期化開始する
		この実質大きさは{345,498}
		この種類は「固定」
		この最大化ボタンは、×
		この内容は「Forth電卓」
		この文字色は「標準の文字」
		モードラベルというラベルを作る
			その位置と大きさは{233,9,100,23}
			その文字配置は「右上」
			その移動順は、19
			その文字色は「標準の文字」
		入力ラベルというラベルを作る
			その位置と大きさは{15,39,318,61}
			その内容は「0」
			そのフォントは「MS UI Gothic,20」
			その見た目は「フラット」
			その文字配置は「右」
			その移動順は、12
			その文字色は「標準の文字」
			その背景色は「PaleGreen」
		足すボタンというボタンを作る
			その位置と大きさは{258,337,75,72}
			その見た目は「フラット」
			その内容は「+」
			その移動順は、12
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン1というボタンを作る
			その位置と大きさは{15,181,75,72}
			その見た目は「フラット」
			その内容は「1」
			その移動順は、20
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン2というボタンを作る
			その位置と大きさは{96,181,75,72}
			その見た目は「フラット」
			その内容は「2」
			その移動順は、1
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		計算ボタンというボタンを作る
			その位置と大きさは{177,415,156,72}
			その見た目は「フラット」
			その内容は「.」
			その移動順は、11
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン5というボタンを作る
			その位置と大きさは{96,259,75,72}
			その見た目は「フラット」
			その内容は「5」
			その移動順は、4
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン4というボタンを作る
			その位置と大きさは{15,259,75,72}
			その見た目は「フラット」
			その内容は「4」
			その移動順は、3
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン9というボタンを作る
			その位置と大きさは{177,337,75,72}
			その見た目は「フラット」
			その内容は「9」
			その移動順は、8
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン8というボタンを作る
			その位置と大きさは{96,337,75,72}
			その見た目は「フラット」
			その内容は「8」
			その移動順は、7
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン7というボタンを作る
			その位置と大きさは{15,337,75,72}
			その見た目は「フラット」
			その内容は「7」
			その移動順は、6
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		引くボタンというボタンを作る
			その位置と大きさは{258,259,75,72}
			その見た目は「フラット」
			その内容は「-」
			その移動順は、13
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		Cボタンというボタンを作る
			その位置と大きさは{96,103,75,72}
			その見た目は「フラット」
			その内容は「dup」
			その移動順は、16
			そのフォントは「MS UI Gothic,10」
			その文字色は「標準の文字」
		CEボタンというボタンを作る
			その位置と大きさは{15,103,75,72}
			その見た目は「フラット」
			その内容は「drop」
			その移動順は、17
			そのフォントは「MS UI Gothic,10」
			その文字色は「標準の文字」
		ボタン0というボタンを作る
			その位置と大きさは{96,415,75,72}
			その見た目は「フラット」
			その内容は「0」
			その移動順は、9
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン3というボタンを作る
			その位置と大きさは{177,181,75,72}
			その見た目は「フラット」
			その内容は「3」
			その移動順は、2
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		ボタン6というボタンを作る
			その位置と大きさは{177,259,75,72}
			その見た目は「フラット」
			その内容は「6」
			その移動順は、5
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		掛けるボタンというボタンを作る
			その位置と大きさは{258,181,75,72}
			その見た目は「フラット」
			その内容は「×」
			その移動順は、14
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		割るボタンというボタンを作る
			その位置と大きさは{258,103,75,72}
			その見た目は「フラット」
			その内容は「÷」
			その移動順は、15
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		小数点ボタンというボタンを作る
			その位置と大きさは{15,415,75,72}
			その見た目は「フラット」
			その内容は「clr」
			その移動順は、10
			そのフォントは「MS UI Gothic,18」
			その文字色は「標準の文字」
		初期化終了する
		この設計スケール比率は{144,144}
	終わり
	数字ボタンがクリックされた時の手順
		結果は、ボタン配列から発生元を探す
		結果の個数が0なら返す
		入力をクリアする
		番号は、結果(1)
		stackに、(番号-1)を、積む
		入力ラベルの内容が「0」なら入力ラベルの内容は「」
		入力ラベルの内容を入力ラベルの内容&(番号-1)に変える
	終わり
	小数点ボタンがクリックされた時の手順
		入力をクリアする
	終わり
	CEボタンがクリックされた時の手順
		topは、stackから、取り出したもの
	終わり
	Cボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		stackに、topを、積む
		stackに、topを、積む
		入力ラベルの内容は、top
	終わり
	入力をクリアする手順
		入力ラベルの内容は「0」
	終わり
	足すボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		top2は、stackから、取り出したもの
		v = top2 + top
		stackに、vを、積む
	終わり
	引くボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		top2は、stackから、取り出したもの
		v = top2 - top
		stackに、vを、積む
	終わり
	掛けるボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		top2は、stackから、取り出したもの
		v = top2 * top
		stackに、vを、積む
	終わり
	割るボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		top2は、stackから、取り出したもの
		v = top2 / top
		stackに、vを、積む
	終わり
	【記号】へ演算子を変更する手順
		演算記号は、記号
		モードラベルの内容を演算記号に変える
		保留値は、入力ラベルの内容
	終わり
	計算ボタンがクリックされた時の手順
		topは、stackから、取り出したもの
		入力ラベルの内容は、top
	終わり
終わり




```

以上。