• 検索結果がありません。

EE 時間を表示する

ドキュメント内 7 : N p.1/105 (ページ 86-93)

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 でプログラムを組み立ててみよう

あとは機械的に PADLogo 言語に移し変えていくだけです

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 のように書け ます

ドキュメント内 7 : N p.1/105 (ページ 86-93)