Scratch リスト課題6
2023.01.05
Scratch リスト課題6
課題内容
入力した年・月・日から、曜日を計算して出力
ツェラーの公式
※ただし、1月と2月は、前年のそれぞれ13月・14月として扱う。
$$ h = \left( y + \left\lfloor \frac{y}{4} \right\rfloor – \left\lfloor \frac{y}{100} \right\rfloor + \left\lfloor \frac{y}{400} \right\rfloor + \left\lfloor \frac{13 m + 8}{5} \right\rfloor + d \right) \bmod 7 $$
課題準備
リストに「月曜日」〜「日曜日」の要素を生成
スプライト1
解答
解答を表示する
スプライト1
追加
@greenFlagが押されたとき
[年を入れてください。]と聞いて待つ
[年 v]を(答え)にする
[月を入れてください。]と聞いて待つ
[月 v]を(答え)にする
[日を入れてください。]と聞いて待つ
[日 v]を(答え)にする
もし<(月)<(3)>なら
[年 v]を((年)-(1))にする
[月 v]を((月)+(12))にする
end
[位置 v]を(((((((年)+(((年)/(4))の[切り下げ v]::operators))-(((年)/(100))の[切り下げ v]::operators))+(((年)/(400))の[切り下げ v]::operators))+(((((13)*(月))+(8))/(5))の[切り下げ v]::operators))+(日))を(7)で割った余り)にする
[曜日 v]を([リスト v]の(位置)番目)にする
([曜日:]と(曜日))と(2)秒言う
解説
解説を表示する
スプライト1
追加
@greenFlagが押されたとき
緑の旗が押されたとき、スクリプトを開始する
[年を入れてください。]と聞いて待つ
[年 v]を(答え)にする
[月を入れてください。]と聞いて待つ
[月 v]を(答え)にする
[日を入れてください。]と聞いて待つ
[日 v]を(答え)にする
キーボードから入力した数値を変数「年」・「月」・「日」に格納する
もし<(月)<(3)>なら
[年 v]を((年)-(1))にする
[月 v]を((月)+(12))にする
end
1月と2月は、前年のそれぞれ13月・14月にする
[位置 v]を(((((((年)+(((年)/(4))の[切り下げ v]::operators))-(((年)/(100))の[切り下げ v]::operators))+(((年)/(400))の[切り下げ v]::operators))+(((((13)*(月))+(8))/(5))の[切り下げ v]::operators))+(日))を(7)で割った余り)にする
変数「年」・「月」・「日」から、<ツェラーの公式で計算して変数「位置」に格納する
[曜日 v]を([リスト v]の(位置)番目)にする
変数「曜日」にリストの変数「位置」番目の要素を格納する
([曜日:]と(曜日))と(2)秒言う
スプライトの上に変数「曜日」のふきだしを表示する
サンプル
sb3ダウンロード