p 時計
doClockwork = loop
1/10 秒経過した 何もしない
¬ 1/10 秒経過した 何もしない
時間を計測中
EE
タイマリセット 時間を増やす
ラップがゼロ
p 計測を始める
startW atch =
計測中であることにする タイマをリセットする 時間の計測を始める手続きです
計測中かどうかを区別する変数の値を設定します
計測中なら、タイマを使うことになりますので、タイマをリセットします この時を基点として時間を測り始めます
計測をいったん止めて、再開するときも大丈夫か、頭の中で確かめましょう
p 計測を止める
stopW atch = 計測中でないことにする
時間の計測を止める手続きです
計測中かどうかを区別する変数の値を設定します
次のタイマ割込み時に、タイマをリセットしないようにしなければなりませんが、そ れは doClockwork の仕事です
p ラップタイム
processLap =
ラップタイムが記録されていない
EE
ラップタイムを記録する 記録した時間を表示する ラップタイムをゼロにする ラップタイムを記録したりクリアする手続きです
計測中の処理です
ラップタイムがゼロのとき、ラップタイムは記録されていません
ラップタイムをゼロにすると、doClockwork が経過時間を表示するようにな ります
ラップタイムは、現在、測っている時間を代入することで記録できます
p クリアする
clearW atch = ラップタイムが記録されていない
EE
リセットする 現在の時間を表示する ラップタイムをゼロにする ストップウォッチをリセットしたり、ラップタイムをクリアする手続きです 計測停止中の処理です
ラップタイムが記録されていないなら、リセット動作をします ラップタイムが記録されているときは、計測時間の表示に戻ります
計測が止まっているので、doClockwork に表示してもらうことはできません
ここでスライドを 止めてください
Cricket Logo でプログラムを組み立ててみよう
あとは機械的に PAD を Logo 言語に移し変えていくだけです
L トップレベル
global [elapsed lap moving]
to run
resetWatch
when [switcha or switchb][
processPressed ]
doClockwork
end
to false
output 1 = 0 ; 偽を表します
end
to true
output 1 = 1 ; 真を表します
end
変数の意味を次のように決めます elapsed: 101 秒単位で計測してい る時間
lap: ラップタイム
moving: 計測中かどうか
どちらかのスイッチが押されるのを待 ち構える when タスク (中身は手続き processPressed) を起動します
false/true は、定数の代わりに用意し た手続きです
setmoving true のように書け ます