PAGE TOP ▲

授業実践事例

論理的な思考力を育てるアルゴリズムの学習

~Scratchを使用したプログラミング実習~

1 はじめに

 本校では,「情報の科学」において,アルゴリズムやプログラムの基礎を学習する。アルゴリズムやプログラムの学習は,問題解決のための論理的な思考力を高めることにつながる。そのため,生徒には意欲的に学習に取り組んでほしい単元である。
 そこで,今回,プログラムを視覚的に表現することができるScratchというビジュアルプログラミング言語を使用した授業を行うこととした。Scratchは,命令を表すブロックを並べることでプログラムを実行することができ,構文を習得していなくても,アルゴリズムやプログラムの基本的な知識,技能の習得に集中して取り組むことができる。また,
Scratchのウェブページにアクセスすることでプログラム開発環境を利用することができるため,学校でも家庭でも同じ環境で学習することができる。さらに,生徒自ら考えて応用的な作品を作ることもできるため,プログラムに対する学習意欲を高めるとともに,論理的な思考力を高めることができると考えた。

2 単元の目標

(1)ビジュアルプログラミング言語を利用して,アルゴリズムやプログラムの基本的な知識や技能を身に付ける。
(2)問題解決のための論理的な思考力を高める。

3 指導内容

(1)Scratchについて

図1 Scratchで使用するブロックの例
 Scratchは,命令を表すブロックをドラッグアンドドロップして並べ,視覚的な操作でプログラムの構文を組み立てることができるプログラミング言語の学習環境である。Scratchの特徴は,構文を意識せずにプログラムを作成することができることである。また,ブロックで組み立てるためプログラムの流れを目で追いやすい。 さらに,組み立てたプログラムをすぐに動作させることができ,検証しやすいことなどが挙げられる。ブロックには,ブロック同士の接続のための特殊な形が施されている。プログラムとして適切な組み合わせの場合のみブロックの接続が可能になるため,ブロックの種類から接続の可否を視覚的に理解することができるようになる。 サイトが提供する既定の猫のキャラクター画像や音声だけでなく,自分で作成した画像や音声も挿入できる。アルゴリズムの三つの基本構造を組み合わせて作成することができるため,ゲームなどの応用的な作品も作成することができる。(Scratchのウェブページへのリンク

図2 Scratchの画面と使用例

(2)Scratchの基本操作とアルゴリズムの理解
 プログラムの基本的な理論やScratchの操作方法について,授業後に生徒が家庭でもパソコンを使って自主的に学習することができるように,プリント教材を作成した。生徒がこのプリントを参考にScratchを操作してプログラム作成ができるように,ブロックを組み立てた例を掲載した。また,それぞれのブロックの役割やScratchの操作方法の説明を記載するとともに,アルゴリズムの基本構造なども習得できるようにした。

図3 プリント教材の例

(3)プログラムの基本を学ぶ実習課題
 プログラムの基本を学ぶ実習課題として,教科書に記載されている数当てゲームに取り組ませた。
 教科書には,数当てゲームの説明と,数当てを一度しか挑戦できないアルゴリズムが記載されている。最初は,そのアルゴリズムを順にたどり,実行した結果を考えさせた。次に,Scratchでプログラムを組み立て,動作を確認させた。さらに,繰り返し挑戦できるようなアルゴリズムを考えさせるとともに,Scratchで動作させ検証させた。検証を終えた生徒には,最も早く数を当てるアルゴリズムを考えさせ,Scratchを使い生徒同士で競争させた。

図4 数当てゲームのプログラム例

(4)発展的な実習課題
 ここまでに学習した基本的な知識を定着させ,論理的な思考力を高めるため,Scratchを使って作成する発展的な課題「脱出ゲーム」に取り組ませた。
 脱出ゲームは,脱出用の鍵の状態などを変数に置きかえて,条件が揃ったときに脱出できるものである。生徒が自主的にプログラムを作成することに主眼を置き,より高度な課題も提示して取り組ませるとともに,理解度が遅い生徒に対しては段階的に説明を加えながら課題に取り組ませた。

図5 脱出ゲームの例

4 指導の流れ

▽1時限目

学習内容・学習活動 指導上の留意点
導入
(10分)
授業の流れ
・プログラムについての意識調査
・事前アンケートに答える。
・身の回りにどんなコンピュータがあるかを考える。



・大半の生徒は,身近なコンピュータの存在に気付いていないため,テレビや炊飯器などもコンピュータで制御されていることに気付かせる。
展開①
(10分)
アルゴリズムとプログラムの基本の理解
・アルゴリズムが問題解決のための手順であることを理解する。

・アルゴリズムをプログラミング言語で表現することで,コンピュータが動作することを理解する。

・ご飯を炊くときの手順など具体的な例を示し,アルゴリズムの考え方を理解させる。
展開②
(10分)
Scratchの操作の理解
・配布した教材にしたがってScratchを操作し,Scratchの操作方法(パレット切り替え,移動,配置,削除など)を理解する。
   

・画像や音声の挿入や変更など,応用的な操作方法も説明し,生徒が自分で操作できるようにする。
展開③
(10分)
Scratchを使ったアルゴリズムの基本構造の理解
・配布したプリント教材にしたがってScratchを操作し,プログラム作成の基本を理解する。
    

・生徒の様子を観察し,取組状況が遅い生徒にアドバイスする。 ・ブロックの配置によって流れが分かりにくくなる場合があることを伝え,配置する方法を工夫させる。
まとめ
(10分)
まとめ
・アルゴリズムの基本構造について復習する。

・教科書に書かれている基本構造の説明を読ませ,確認をさせる。

▽2時限目

学習内容・学習活動 指導上の留意点
導入
(5分)
アルゴリズムの基本構造の復習
・Scratchでプログラムが動作しているのを見て,アルゴリズムの基本構造について振り返る。

・Scratchでプログラムを動かして,基本構造を一つずつ提示する。
展開①
(10分)
変数を使用した基本的なアルゴリズムの理解
・変数の基本を理解する。





・変数を使った四則演算などの簡単なアルゴリズムを読み取り,手順を追跡して結果を予想し,変数の使い方を理解する。

・変数を理解させるために,名札を付けたプラスチックコップを用意する。コップにビー玉などを入れて数値の変化を確認させつつ,コップに付けた名札の名前は変化していないことで変数を理解させる。
展開②
(10分)
変数を使ったプログラムの作成
・教材に書かれているプログラムをScratchで作成する。


・Scratchでプログラムを実行する。

・変数の変化を確認できるようにScratchで扱う変数は,画面内に常に表示するように設定させる。
・難しい内容なので,予想と結果が異なる場合は,一段階ずつプログラムが進む状況を観察するように指示する。
展開③
(10分)
数当てゲーム概要理解とアルゴリズムの検討
・数当てゲームの概要を理解する。
・1回のみの数当てゲームのアルゴリズムを順にたどり,動作を予想する。
・Scratchでプログラムして,動作結果を検証する。
    




・予想と結果が異なる生徒には,順を追って説明し,理解させる。
展開④
(10分)
数当てゲームのプログラム
・繰り返し数当てゲームをScratchでプログラムし,動作結果を検証する。

・早く完成した生徒は,より早く解答を見つけることができるようプログラムを修正させ,生徒同士で競争させる。
まとめ
(5分)
Scratchを使ったプログラムの実例を確認
・Scratchのウェブサイトで公開されているプログラムを見て,動作させる。

・自宅のパソコンからでもScratchのアドレスに接続すれば,同じようにプログラムが開発できることや,登録すれば自分が作ったものを公開できることを説明する。

▽3時限目

学習内容・学習活動 指導上の留意点
導入
(5分)
発展的な課題の概要理解
・脱出ゲームの動作を見て,課題についての概要を理解する。

・発展的な課題に取り組むことを伝える。
・どのような手順であれば先にゲームの出口へ進んでいけるのか,アルゴリズムを考えることが大切なことを伝える。
展開①
(15分)
アルゴリズムの検討
・用意された扉と引き出し,鍵を使った脱出ゲームのアルゴリズムを考える。
・脱出ゲームのアルゴリズムをグループで検討する。

・変数について理解できているか確認をする。
・お互いに自分の意見を出すとともに,グループ全員が理解できるように説明させる。
展開②
(25分)
脱出ゲームのプログラム
・脱出ゲームをScratchでプログラムする。動作検証と修正を繰り返し,脱出ゲームを完成する。
   

・早く完成した生徒には,応用課題として,さまざまなアイテムや鍵などを追加したプログラムを自由に考えさせる。
まとめ
(5分)
事後アンケートへの回答

5 実践結果の考察

 プログラムを学習する際に学習意欲が高まるのは,自分が想定したとおりにプログラムが動作して,達成感を得ることができたときである。Scratchでは使い方を説明するだけで生徒が自分でプログラムを作成し実行することができるようになる。記述型言語と比較すると,Scratchを使った場合は,生徒がプログラムを実行することができるようになるまでの時間が短い。今回,どの生徒もプログラム作成を経験したことがなかったが,1時間の授業だけで基本操作を習得することができた。
 生徒は数当てゲームや脱出ゲームといった課題のプログラムに取り組む際,何度もブロックを並べかえて,動作を検証し,意図した動作にならない理由を考えて,自分で解決していった。また,生徒同士で,意図した動作にするためのブロックの並べ方について,お互いに納得できるまで話し合うこともあった。このことから,Scratchを使用したプログラムの学習は,論理的な思考力の育成に役立つものと考えられる。

7 おわりに

 今回は,Scratchを用いてアルゴリズムとプログラムの基本について学習活動を行った。しかし,アルゴリズムの基本については,画面上で操作するよりも,手で物を組み合わせて作業し,実際に動きを動作で確認できる教材の方が,生徒の学習意欲を高め理解を促進することができると考えている。今後は,立体物のブロックを組み合わせてプログラムを制作する装置の開発を行い,より効果的にアルゴリズムやプログラム作成の基本を理解させることができるよう,教材や指導方法の研究を進めたい。