Scratchで正多角形を描く その2

プログラミング教育

2020年4月から始まる、小学校におけるプログラミング教育の必修化について、実際にどんなことをやるのか、試してみました。

Scratchで正四角形を描く

「Scratchで正多角形を描く その1」では、正三角形を描くプログラムを作成しました。
今度は、同様の手法で正四角形を描くプログラムを作成してみます。

正四角形は、内角が90度で、同一の長さがある4つの辺を持つ図形ですので、以下の手順で描くことができます。

  1. 直線を描く。
  2. 90度回転する。
  3. 前項1と同じ長さの線を描く。
  4. 90度回転する。
  5. 前項1と同じ長さの線を描く。
  6. 90度回転する。
  7. 前項1と同じ長さの線を描く。

実際にScratchで実装してみると以下の通りになります。

正三角形と正四角形のプログラミを並べると以下のようになります。

ほぼ、プログラムで行うことは、一緒です。
違いは回す角度を120度にするか90度にするか、回す回数を3回にするか4回にするか、といっ違いです。

歩く歩数を変えているのは、表示領域内に押させるためです。

これを、学習指導要領にある円の性質に関連付けようと正360角形を作ろうとすると大変なことになります。
現実的に正360角形といったようなものも描けることができるようにして、より実際のプログラムにつかづけるようにしていきます。

準備処理の作成

実際のプログラムに近づけるため、任意の頂点をもつ正多角形を描くプログラムを作成します。

まず、実際に正多角形の処理を作成する前に、何度、処理を流しても同じ結果を得られるよう準備を行います。
正多角形を描く前にやっておきたい準備は、以下のものが挙げられます。

  1. 準備処理の移動分を描かないようにする。
  2. 前回の処理で描いた図を削除する。
  3. 線を描く開始位置をもとに戻す。
  4. 線を描く向きを一定にする。
  5. 次の図形を描く準備をする。

準備処理を定義するため、「ブロック定義」というものを使用します。
このブロック定義は、一般的なプログラムで言うファンクションやサブルーチン、サブプロシージャといったものに該当します。

ブロック定義を作成する画面が表示されます。ここでは、「準備処理」として作成します。

これで、事前処理を作成することができます。

準備処理に必要になる3つの処理に該当するブロックを接続します。

具体的には、以下のよう処理ブロックを配置しています。

  1. 「準備処理の移動分を描かない」ようにするため、「ペンをあげる」ブロック
  2. 「前回の処理で描いた図を削除」するため、「全部消す」ブロック
  3. 「線を描く開始位置をもとに戻す」ため、「x座標を○、y座標を○にする」ブロック
    描き出す位置を調整します。ここでは、x座標を-100として左側とし、y座標を100とし上側に配置するようにしました。
  4. 「線を描く向きを一定」にするため、「○度に向ける」
  5. 描き出す方向を右側を向いた状態から始めるため、90度にしました。
  6. 「次の図形を描く準備」をするため、「ペンを下ろす」

これで事前の準備処理ができました。

正多角形の性質を利用したプログラムを作成

正多角形は、外角の和が360度です。ということは、作成する多角形の頂点の数をNとすると、向きを変える角度は360÷Nとなります。

ということで、以下の手順で表せます。

  • 以下の手順をN回繰り返す。
    1. 一定の長さの線を引く。
    2. 360÷Nで得られた角度だけ、向きを変える。

これをScratchで作成します。

定義済みの「準備処理」があるため、処理の開始場所を明確にするため、「開始(緑の旗)が押されたとき」とう処理ブロックを使います。

処理を実行するエリアにある緑の旗をクリックすると、この処理ブロックから処理が開始されます。
この処理ブロックによって開始位置を明確にします。

次に、定義済みの「準備処理」を接続します。

その後、任意に正多角形を作成できるように、「調べる」から「○と聞いて待つ」という処理ブロックを使い。実行時に頂点の数を入力できるようにします。「○と聞いて待つ」の○の部分には「頂点の数は?」など、わかりやすいものに変えてください。

この処理ブロックで、処理が止まり、入力待ちになります。入力した結果は、同じ色の「答え」という丸いブロックに入ります。

このあと、このプログラムのポイントになる繰り返し処理を行うため、「制御」から「○回繰り返す」という処理ブロックを使います。

この処理ブロックで囲まれた範囲を繰り返し処理を行います。
他にも無限に繰り返す処理、条件分岐といった、一般的なプログラム言語にある制御処理が用意されています。

「○回繰り返す」の○の部分には、「調べる」の「答え」ブロックを入れます。

丸いブロックは、他のブロックの丸い穴に組み合わせることができます。

ここまでの処理、以下のようなブロック構成になっているはずです。

あとは、繰り返しの処理ブロックの中に、線を引く処理と、向きを変える処理です。

向きを変える角度は、割り算をして出す必要がありますので、「演算」の「○/○」という処理ブロックを使います。

○の部分に、丸いブロック(前述の答えや、定義した変数)を組み合わせることができます。
他の四則演算の他にも、大小判定やAND/OR判定といった、一般的なプログラム言語にある演算処理があります。

外角の和が360度であることを利用したが、繰り返し処理の部分は、以下のようになります。

本来であれば、動かす歩数も描画できる大きさに合わせて動的に計算をしたいのですが、正多角形の性質の範疇を超えますので、ここでは、固定値を入力します。描画する大きさよりも大きい図形を描こうとすると、正しい図形を作ることができなくなりますので、そのような場合は、数値を小さくしてください。

作成したプログラムで正多角形を描く

以下のようなプログラムが出来上がっているはずです。このようになっていない場合は、見直しをしてください。右上のアイコンをクリックすると、プログラムを実行する領域を拡大します。

実行画面が表示されますので、緑の旗をクリックして実行します。

ここで、頂点の数を入力する質問が表示され、入力待ちになります。ここで正四角形なら「4」と入力します。
必ず、半角の数値で入力してください。
一般的なプログラムで入力がある処理は、入力内容をチェックする処理を行うのが基本ですが、学習指導要領の目的と異なるため、割愛しています。

実行すると以下のようになります。

これで、任意の多角形を描くことができるようになりました。

上のプログラムの状態で、正360角形を描こうとすると、左のようになりますので、辺の長さや開始位置を調整する必要があります。

辺の長さや、開始位置を調整して、正360角形を描くと、以下のようになります。
これで、円と関連させて正多角形をの性質も説明することができると思います。

このようなプログラムを作る授業は、研究授業として行われているようです。小学校5年生でも十分についていけるものです。

プログラミング的思考でどんなことを教えるのか、実際に試してみました。
子どもたちの好奇心上に役立つことを祈ります。

コメント

タイトルとURLをコピーしました