[ce94] 高等学校での「プログラミング」教育の導入– pen を用いて

7
高等学校での「プログラミング」教育の導入 – PEN を用いて 中村 亮太* 西田 知博** 松浦 敏雄*** *大阪府立泉北高等学校 **大阪学院大学 情報学部 ***大阪市立大学 大学院創造都市研究科 [email protected] 概要 プログラミングは一般に難しいものと考えられ,高等学校において教えられていることはまれである. しかし,適切なサポートツールを用意することで,生徒が比較的短い時間でプログラミングとは何かを学 び,コンピュータの本質を理解することは可能であると考える.そこで我々は,大阪府立泉北高等学校に おいて,1 年生を対象とした総合科学 I,および 2 年生を対象とした情報 A の授業で,初学者用プログラ ミング環境 PEN を用いてプログラミング教育を実践した.ここでは,その授業の内容とアンケート結果 および考査結果を報告する. Programming Education at a High School with PEN Ryota Nakamura* Tomohiro Nishida** Toshio Matsuura*** *Semboku High School **Faculty of Informatics, Osaka Gakuin University ***Graduate School for Creative Cities, Osaka City University Abstract Programming is generally considered a difficult subject and often not taught at all in high schools. However, with an appropriate support tool, we believe that it will not take a long time for students to understand what is programming and essential characteristics of computers. One of the authors conducted programming lessons in the subject of “Comprehensive Science I” (for first grade) and “Information A” (for second grade) at Semboku High School with PEN: Programming Environment for Novices. In this paper, we report the lessons and the results of the questionnaire and the examination. 1 はじめに 情報教育は,高等学校を始めとした初等中等教育 でも行われるようになり,その裾野は広がってきて いる.しかし,その内容は「情報自体の理解」を重 視し,コンピュータ等の情報機器の利活用教育が中 心となっているのが現実である.しかし,社会に普 及している情報システムの特性を理解するためは, 中等教育の段階から,単に使うだけではなく,プロ グラミングなどを通じて,コンピュータの自動処理 のメカニズムを自分で体験することにより,「情報処 理」の本質を学ぶことも不可欠である [1]一方で,プログラミングは大学においてでさえ教 育されない場合が多い.この理由としては,プログラ ミング言語は難しいものであり,その習得には多く の時間が必要と思われていることが挙げられる.し かし,プログラミングの入門教育の目標を,職業プ ログラマの養成を目指すのではなく,プログラミン グとは何かを理解し,コンピュータの本質を理解す ることと定めるならば,適切なサポートツールを用 意することで,比較的短い時間でこの目標を達成で きると考えた.我々は,そのツールとして初学者用 プログラミング環境 PEN (Programming Environment for Novices)[2] を構築し,2005 年度から大学の授業 において用い,実践を重ねてきた [3][4][5].その結 果として,文系の学生を対象とした 3 コマ程度の短 期間の授業において,JavaScript を用いたクラスと 比べてプログラミング理解度が高くなるなど,PEN のプログラミング入門教育における有用性が確認で きている. これらの実践は,大学においてのものであるが, 我々は,上に述べたようにプログラミングの入門教 育は,中学,高校などより早い時期に行うことが望

Upload: ryota-nakamura

Post on 21-Jun-2015

342 views

Category:

Education


0 download

TRANSCRIPT

Page 1: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

高等学校での「プログラミング」教育の導入 – PENを用いて

中村亮太* 西田知博** 松浦敏雄****大阪府立泉北高等学校 **大阪学院大学情報学部 *** 大阪市立大学大学院創造都市研究科

[email protected]

概要

 プログラミングは一般に難しいものと考えられ,高等学校において教えられていることはまれである.

しかし,適切なサポートツールを用意することで,生徒が比較的短い時間でプログラミングとは何かを学

び,コンピュータの本質を理解することは可能であると考える.そこで我々は,大阪府立泉北高等学校に

おいて,1年生を対象とした総合科学 I,および 2年生を対象とした情報 A の授業で,初学者用プログラ

ミング環境 PENを用いてプログラミング教育を実践した.ここでは,その授業の内容とアンケート結果

および考査結果を報告する.

Programming Education at a High School with PEN

Ryota Nakamura* Tomohiro Nishida** Toshio Matsuura****Semboku High School **Faculty of Informatics, Osaka Gakuin University ***Graduate School for

Creative Cities, Osaka City University

AbstractProgramming is generally considered a difficult subject and often not taught at all in high schools. However,

with an appropriate support tool, we believe that it will not take a long time for students to understand what is

programming and essential characteristics of computers. One of the authors conducted programming lessons in

the subject of “Comprehensive Science I” (for first grade) and “Information A” (for second grade) at Semboku

High School with PEN: Programming Environment for Novices. In this paper, we report the lessons and the

results of the questionnaire and the examination.

1 はじめに

情報教育は,高等学校を始めとした初等中等教育

でも行われるようになり,その裾野は広がってきて

いる.しかし,その内容は「情報自体の理解」を重

視し,コンピュータ等の情報機器の利活用教育が中

心となっているのが現実である.しかし,社会に普

及している情報システムの特性を理解するためは,

中等教育の段階から,単に使うだけではなく,プロ

グラミングなどを通じて,コンピュータの自動処理

のメカニズムを自分で体験することにより,「情報処

理」の本質を学ぶことも不可欠である [1].

一方で,プログラミングは大学においてでさえ教

育されない場合が多い.この理由としては,プログラ

ミング言語は難しいものであり,その習得には多く

の時間が必要と思われていることが挙げられる.し

かし,プログラミングの入門教育の目標を,職業プ

ログラマの養成を目指すのではなく,プログラミン

グとは何かを理解し,コンピュータの本質を理解す

ることと定めるならば,適切なサポートツールを用

意することで,比較的短い時間でこの目標を達成で

きると考えた.我々は,そのツールとして初学者用

プログラミング環境PEN (Programming Environment

for Novices)[2]を構築し,2005年度から大学の授業

において用い,実践を重ねてきた [3][4][5].その結

果として,文系の学生を対象とした 3コマ程度の短

期間の授業において,JavaScriptを用いたクラスと

比べてプログラミング理解度が高くなるなど,PEN

のプログラミング入門教育における有用性が確認で

きている.

これらの実践は,大学においてのものであるが,

我々は,上に述べたようにプログラミングの入門教

育は,中学,高校などより早い時期に行うことが望

Page 2: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

ましいと考える.そこで,2007年度からはいくつか

の高校においても,PENを用いた実践を行っている.

ここでは,大阪府立泉北高等学校での PENを活用し

た授業実践について紹介する.

2 PENの概要

図 1は,初学者向けプログラミング学習環境 PEN

を実行した時の画面表示例である.

PENには入力ミスによる文法エラーを減らすため,

制御構造等をプログラム入力支援ボタンにより入力

することができる.また,プログラムの実行過程を

詳しく観察できるように,プログラムの一時停止・

一行実行などの実行制御機能,実行中の各変数の値

を表示する変数表示機能を有している [3][4].また,

プログラム言語には,センター試験「情報関係基礎」

の出題用に作られた日本語でキーワード等を表現す

る手順記述言語DNCLを拡張した xDNCLを用いて

いる.

3 泉北高校での授業実践

PENを用いたプログラミング教育の実践は,2005

年度から大阪学院大学,大阪市立大学,大阪大学,京

都ノートルダム女子大学など様々な大学で行ってい

るが,2007年度からは高校でも,その実践を開始し

た.今回は,大阪府立泉北高等学校で行った実践に

ついて報告する.

泉北高校では国際理解の学習中心の国際文化科 1

学年 4クラス (40名/クラス),理数系科目の学習中

心の総合科学科 1学年 3クラス (40名/クラス)の 2

学科を設置している.

このうち 2007年度は,1年生総合科学科の生徒対

象の「総合科学 I」,2年生全生徒対象の「情報 A」

においてプログラミング教育を行った.

3.1 総合科学 I

「総合科学」とは総合科学科の生徒を対象とした、

生徒自らがテーマを設定し研究を行うことを目的と

した泉北高校の学校設定科目である (表 1).今回,1

年生の総合科学 Iにおいて PENを用いたプログラミ

ング教育を導入した.このうち,2クラスを筆者の

1人が担当し,残り 1クラスは数学科の先生が担当

した.

表 1:総合科学の目標学年 科目名 単位 目標

1年 総合科学 I 2 プレゼンテーション能

力の向上,論理的思考

の育成

2年 総合科学 II 1 与えられた課題を解決

する能力の育成

3年 総合科学 III 2 自ら研究テーマを設定

し解決する能力の育成

3.1.1 実践内容

総合科学 Iは年間約 45回 (65分/回)の授業がある

が,7,9月の計 6回で PENを用いたプログラミング

の授業を行った (図 2).各授業は,まず例題を生徒

に入力してもらいプログラムを実行してもらうこと

から始め,その後,掲示用画面で一行実行を用いて

実行し,それぞれの制御構造の意味などを説明する

形で進めた.

初回の授業では,プログラムは上から順に逐次実

行されるということを理解してもらうため,文字表

示や変数を用いた計算などの逐次処理を例題とし,

一行実行やスロー実行の機能を用いて解説した.

2回目の授業では,バグのあるプログラム (図 3)

を示し,一行実行で変数の値が変化する様子を記録

させた.また,掲示資料で生徒の記述したものを確

認しながら,どの箇所に誤りがあるのか,どのよう

にすれば正常に動くようになるのかを考えさせ,バ

グのあるプログラムを正常に動作するように修正さ

せた.

3回目の授業では,導入として生徒に日常生活の

中での「条件による行動の選択」について考えさせ,

その後,プログラム上での条件分岐の説明を行った.

課題は所持金と欲しいものの金額を入力し購入でき

るかを判別するプログラムなど,身近なものを題材

に選んだ.また,4回目の授業で乱数の説明を行い,

条件分岐と組み合わせ簡単なゲームを作成した.

5回目の授業では,計算機は同じ処理を何度も繰

り返すことが得意であることを理解させるため,範

囲指定の加算型繰り返し文 (for文)を用いた課題を

提示した.

最後の授業では,コンピュータとプログラムを用

いれば,様々な応用が可能であることを理解しても

らうため,描画命令を用いて 1次関数や 2次関数と

いった数学的なグラフを描画する課題を与えた.

Page 3: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

図 1: PENの実行画面

3.1.2 評価

生徒の理解度に合わせ授業を展開するため,各授

業終了にアンケート調査を行った (図 4).なお,第 1

回目はアンケートに理解度を調査する項目を入れて

いなかったため,データは取れていない.各授業の

理解度はおおむね良好だったが,5回目の繰り返し

命令で「理解できた」と「だいたい理解できた」の

合計が半数を割っている.繰り返しの概念は,大学

生対象の授業でも理解度が高くないという結果が得

られており [5],今後は,課題の難易度や時間数につ

いての検討が必要である.

しかし,アンケートの自由記述においては,「難し

い問題が増えてきて,解くのに時間がかかったけど,

それが解けたときの喜びが大きかったです.面白かっ

たです.」や「パソコン相手にこれほど細かい命令を,

自分自身でできたのでとても楽しかった.できるこ

とは知っていても,自分でできる機会があるとは思っ

てなかったので,いい勉強になった.」といった肯定

的な意見もいくつか見られた.一方では,「なぜプロ

グラミングをやるんだろう」という意見も少なから

ずあり,プログラミングの重要性の説明が不十分で

あったことが反省点として残った.

3.2 情報 A

2年生の国際文化科 4クラスおよび総合科学科 3

クラスの「情報 A(1単位)」において,プログラミン

グの授業を行った.7クラスの授業はすべて筆者の

1人が担当した.

3.2.1 実践内容

2年生の情報 Aは年間約 21回 (65分/回)の授業が

あり,12~2月の 5回もしくは 6回で PENを用いた

プログラミングの授業を行った (図 5).授業内容は

総合科学 I とほぼ同じであるが,その際の反省を生

かし,第 1回目の授業は「身の回りには色々な情報

機器があるが,なぜ動いているか?」という問いか

けから入り,情報機器を支えるプログラムの重要性

について考えてもらった.また,配布資料はフロー

チャートの提示を加えるなどの修正を行い,掲示資

料はプレゼンテーションソフトを用い,アニメーショ

ンを活用したものとした.

授業の進め方は,例題を入力し実行するまでは総

合科学 I の時と同じであるが,掲示用画面には事前

に作成した掲示資料で各命令や制御構造の意味を説

明した後,教員用のコンピュータで例題を再度実行

し,解説する方法に変更した.また,PENのプログ

ラム入力支援ボタンのカスタマイズ機能を用いて,

Page 4: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

� �1. 出力命令,変数と代入文

例題 1 Hello World

課題 1 自己紹介の出力

例題 2 変数宣言と値の代入

課題 2-1 算術演算と代入

課題 2-2 入力命令と算術演算

課題 2-3 三角形の面積を求める

2. 変数に代入されている値の入れ替え

例題 3 トレース作業によるバグの発見

課題 3-1 rei003のバグ修正

課題 3-2 3つの変数に代入された値の入れ替え

3. 条件分岐,2分岐の条件分岐

例題 4 10より大きい数の判断

課題 4-1 正の数の判断

課題 4-2 偶数の判断

課題 4-3 購入できるかの判断

例題 5 0より大きいか以下かの判断

課題 5-1 偶数か奇数の判断

課題 5-2 購入できるかできないかの判断

課題 5-3 5段階成績の表示

4. ランダムな数

例題 6 乱数について

課題 6-1 ハイ&ローゲーム

5. 範囲指定の加算型繰り返し命令 (for文)

例題 7 1~10の表示

課題 7-110∑i=1

Si を求める

課題 7-2n∑

i=1

Si を求める

課題 7-3 0~100までの乱数を 20回表示する

課題 7-4 FizzBuzz問題

課題 7-5 九々の表を表示する

6. グラフの描画,描画命令

例題 8 1次関数の描画

課題 8-1 点の描画

課題 8-2 y = 2x2− 5の描画

課題 8-3 y = ax2 + bx+ cの描画

課題 9 描画命令を用いて絵を作成� �図 2:総合科学 I の授業構成

� �練習問題:変数 x, yの値を入れ替えるプログラムを作成したのだが,実行した結果は x, yともに 10となってしまう.プログラムの間違いを見つけ正しく動作するようにせよ.

1 : 整数 x, y2 : x ← 53 : y ← 104 : x ← y5 : y ← x� �

図 3:変数の値を入れ替えるプログラム

図 4:各授業の理解度

授業以外に使用することのない命令や制御構造を削

除しプログラミング環境を簡素化した.

3.2.2 評価

情報 Aの後期期末考査においてプログラミングに

関する問題を解答選択式で 15問出題した (図 6,7,8).

図 6に示した問題ではプログラムコードが書けない

プログラマ志願者を見分ける手法として提唱されて

いる FizzBuzz問題で,生徒にプログラムを読み解

く力がどれだけ身に付いたかを測るために出題した.

図 7に示した問題ではx∑

i=1

Siを求めるプログラムを

2種類用意した.このプログラムは繰り返しの加算

処理で,カウンタ変数をインクリメントする箇所に

よってカウンタ変数の初期値および条件式が変化す

ることが理解できているかを問う問題で,繰り返し

処理の理解度を測るために出題した.図 8に示した

問題は正の整数Nの約数を求めるプログラムである.

この問題はプログラムの大部分を解答させるもので,

問題の意味を読み取り,プログラムを一から作成す

る力を測るために出題した.

試験の各問題毎の正答率は表 2の通りで,全設問

において,理数系中心の総合科学科の正答率が国際

Page 5: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

� �1. 出力命令,変数と代入文

例題 1 Hello World

課題 1 自己紹介の出力

例題 2 変数宣言と値の代入

課題 2-1 算術演算と代入

課題 2-2 入力命令と算術演算

課題 2-3 三角形の面積を求める

2. 変数に代入されている値の入れ替え

例題 3 トレース作業によるバグの発見

課題 3-1 rei003のバグ修正

課題 3-2 3つの変数に代入された値の入れ替え

3. 条件分岐,2分岐の条件分岐

例題 4 赤点 (40点未満)の判断

課題 4-1 正の数の判断

課題 4-2 偶数の判断

課題 4-3 購入できるかの判断

例題 5 赤点 (40点未満)かどうかの判断

課題 5-1 偶数か奇数の判断

課題 5-2 購入できるかできないかの判断

4. 条件分岐の入れ子構造

例題 6 遊園地の入園料表示

課題 6-1 5段階成績の表示

5. 繰り返し命令 (while文)

例題 7 1~10の表示

課題 7-1 0~100までの偶数の表示

課題 7-2 0~nまでの表示

課題 7-310∑i=1

Si を求める

課題 7-4n∑

i=1

Si を求める

課題 7-5 n!を求める

6. 特別課題

課題 7-1 九々の表を表示

課題 7-2 FizzBuzz問題� �図 5:情報 A の授業構成

文化科を上回る結果となった.問 1~5の FizzBuzz

問題では,問 3までの正答率が 70%を超え,多くの

生徒が一定の理解をしていることがわかる.問 6~

10では,プログラム 2においてのカウンタ変数の初

期値や繰り返し条件を答えさせる問 9,10での正答率

が低いという結果となった.プログラム 1での繰り

返し条件を答えさせる問 7の正答率も低く,繰り返

し処理については更なる教育内容の改善が必要であ

ることが伺えた.問 11~15は,プログラムの大部

分が空欄として出題されるという難しい内容であっ

たが,全問正解した生徒が 18名 (6.6%),4問正解し

た生徒が 7名 (2.6%)いた.

表 2:学科別正答率設問番号 国際文化科 総合科学科 全体

問 1 72.1% 78.3% 74.8%

問 2 74.7% 82.5% 78.1%

問 3 65.6% 85.8% 74.5%

問 4 28.6% 47.5% 36.9%

問 5 41.6% 64.2% 51.5%

問 6 69.5% 86.7% 77.0%

問 7 49.4% 69.2% 58.0%

問 8 69.5% 80.0% 74.1%

問 9 37.0% 52.5% 43.8%

問 10 26.6% 40.0% 32.5%

問 11 60.4% 76.7% 67.5%

問 12 38.3% 50.0% 43.4%

問 13 6.5% 16.7% 10.9%

問 14 15.6% 18.3% 16.8%

問 15 27.3% 44.2% 34.7%

受験者数 154人 120人 274人

4 おわりに

ここでは、大阪府立泉北高等学校の 1年生の総合

科学科と,2年生を対象としたプログラミング教育

の実践内容と結果を報告した.

1年生の総合科学科に行った授業では,アンケート

から 6~7割の生徒が授業内容はある程度理解してい

ると答えた.2年生の情報 A で行った授業では,プ

ログラムの活用方法を何度か見せることにより,「プ

ログラムができたら便利」という声を生徒から得る

Page 6: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

ことができた.考査からは 6時間程度の学習でも,

生徒はプログラムをトレースして読み解く力をある

程度得ているが確認できた.しかし一方で,繰り返

し処理に関する問題の正答率は高くなく,今後,内

容の改善や教える時間数を増やすなどの対策が必要

である.

今後は,より身近にある問題を題材としたプログ

ラミングや,プログラムを用いると便利な場面を見

せるなどし,生徒が興味を持ちやすく,理解しやす

い授業にしていきたいと考える.

参考文献

[1] 情報処理学会情報処理教育委員会: “日本の情報

教育・情報処理教育に関する提言 2005”,

http://www.ipsj.or.jp/12kyoiku/

proposal-20051029.pdf (2005-10).

[2] 初学者向けプログラミング学習環境 PEN:

http://www.media.osaka-cu.ac.jp/PEN/ (2008-04).

[3] 中村亮太,西田知博,西田知博: “プログラミング

入門教育用学習環境 PEN”,情報処理学会研究報

告 2005-CE-81,pp. 65–71(2005-10).

[4] 西田知博, 原田章, 中村亮太, 宮本友介, 松浦敏

雄: “初学者用プログラミング学習環境 PENの

実装と評価”, 情報処理学会論文誌, Vol.48,No.8,

pp.2736-2747 (2007-08).

[5] 松浦, 豊田, 菅澤, 原田, 西田, 外川, 清川, 宮本,

安留, 中西: “リテラシーとしてのプログラミン

グ入門 –大阪大学文学部・人間科学部での PEN

を用いた実践 –”,平成 19年度情報教育研究集会

(2007-11).

問題� � 次のプログラムは 1~100までの数を表示するものである.しかし,3の倍数の時に「Fizz」,5の倍数の時に「Buzz」,3かつ 5の倍数の時に「FizzBuzz」,それ以外の時に数を表示する.[問 1]~[問 5]に当てはまるものを解答群 (1)~(10)から 1つ選べ.

問 1 5行目が 5回実行されたときの i の値を答えよ

問 2 8行目が 2回実行されたときの i の値を答えよ

問 3 プログラムを実行すると「FizzBuzz」は何回表示されるか

問 4 プログラムを実行すると 12行目は何回実行されるか

問 5 16行目を「 i ← i + 2 」に変更し実行すると,「FizzBuzz」は何回表示されるか� �

プログラム� �1: 整数 i2: i ← 13: i < 101 の間,

4: | もし i % 3 = 0 ならば

5: | | 「Fizz 」 を改行なしで表示する

6: | を実行する

7: | もし i % 5 = 0 ならば

8: | | 「Buzz」 を改行なしで表示する

9: | を実行する

10: | もし i % 3 !=0 ならば

11: | | もし i % 5 != 0 ならば

12: | | | i を改行なしで表示する

13: | | を実行する

14: | を実行する

15: | 「」 を表示する

16: | i ← i + 117: を繰り返す� �

 

解答群

(1) 3 (6) 15

(2) 6 (7) 50

(3) 9 (8) 51

(4) 10 (9) 52

(5) 12 (10) 53

図 6:トレース能力を測る問題

Page 7: [CE94] 高等学校での「プログラミング」教育の導入– PEN を用いて

問題� � 次のプログラム 1,プログラム 2は 1~x まで加

算した結果を表示するプログラムである.[問 6]~

[問 10]に当てはまるものを解答群 (1)~(10)から 1

つ選べ.� �プログラム 1� �1: 整数 i, x, s2: 「数を入力:」 を改行なしで表示する

3: x ← input()4: i ← [ 問 6]5: i [ 問 7] x の間,

6: | [ 問 8]7: | i ← i + 18: を繰り返す9: 「1~」と x と「の合計: 」と s を表示する� �

 

プログラム 2� �1: 整数 i, x, s2: 「数を入力:」 を改行なしで表示する

3: x ← input()4: i ← [ 問 9]5: i [ 問 10] x の間,

6: | i ← i + 17: | [ 問 8]8: を繰り返す9: 「1~」と x と「の合計: 」と s を表示する� �

 

解答群

(1) 0 (6)>

(2) 1 (7)<

(3) s← s + i (8)>=

(4) i← i + s (9)<=

(5) = (10) !=

図 7:繰り返し処理の理解度を測る問題

問題� � 正の整数 Nの約数をすべてもとめるプログラムで

ある.[問 11]~[問 15]に当てはまるものを解答群 (1)

~(10)から 1つ選べ.� �プログラム� �1: 整数 N, i2: 「整数入力:」 を改行なしで表示する

3: N ← input()4: i ← 15: [ 問 11]6: [ 問 12]7: i を表示する

8: [ 問 13]9: [ 問 14]10: [ 問 15]� �

 

解答群

(1) i <= Nの間,

(2) iを表示する

(3)もし N % i = 0ならば

(4)もし N / i = 0ならば

(5)もし N * i = 0 ならば

(6) i← i

(7) i← i + 1

(8) N← N + 1

(9)を繰り返す

(10)を実行する

図 8:プログラムを一から作成する力を測る問題