見出し画像

文科省研修用教材を検討する(4) プログラミング(1)

高等学校情報科「情報I」 教員研修用教材をあらためて読む。
細かいことを突くのもどうかとは思うが,細かいところをきちんとしないとバグが発生するのがプログラミングである。
記述が多少おかしくても,プログラミングの経験者には自分で修正してしまうので問題にならない。しかし,これからプログラミングを始める人には,場合によっては障害となる。

第3章の学習13,基本的プログラム からいくつか拾う。

まず,基本的な制御構造の「順次」「分岐」「反復」の3つの例。

画像1

画像2

画像3


プログラムをやったことのない人に聞こう。
(1)「おはよう」を "おはよう" とダブルクォーテーションで括っているのはなぜですか。
(2) 行の後ろにある # はなんでしょうか。
(3) 図表10の2行目の末尾に,コロン : があるのはなんでしょう。
(4) 同じく3行目,行頭が空いているように見えますが,これは何?
(5) 図表13の1行目,x は 0 ですね。では,4行目,x は x + 10 ですか

答えられる人は多分いないだろう。

解答 以下はPython での話です。プログラミング言語によって少しずつ違う場合もあります。

(1) プログラミングでは,このような「言葉(文字が並んだもの)」は「文字列」といいます。文字列はダブルクォーテーションかシングルクォーテーションでくくります。
(2) # からあとの文は「コメント文」といい,実行されません。プログラムの説明を書くときなどに使います。
(3) for ではじまる反復は,どこからどこまでを繰り返すのでしょう。その範囲を「ブロック」で表します。:はブロックの始まりのような意味です。
(4) Pythonでは,ブロックの中は行頭にスペースを入れて(インデント)「ここはブロックの中ですよ」ということを表します。
(5) 1行目は,「x は 0 」と読んだでしょう。それとも,「xは0と等しい」や「x に 0 を代入する」と読みましたか。数学では状況に応じてどちらの読み方もしますね。しかし,プログラミングでは「x は 0 」とは読まず,必ず「x に 0 を代入する」と読みます。したがって,4行目は「x に,(現在の)xに10を足したものを代入する」です。もし,現在の x の値が20 なら,xは新しく30になります。

 この研修用教材はPythonで書かれているが,それは便宜上のことであって特定の言語にはよらない,ということかもしれない。しかし,プログラミング書法の基本的なことはやはり説明すべきだ。理由はもちろん「この教材で初めてプログラミングに触れる人には,最初からなにもわからない」からである。基本的な制御構造の話から始めるということは当然「初めての人」を想定しているのだろうから,これではとても無理だ。生徒相手の授業でも同様である。「習熟」以前の問題だからだ。
 したがって,県教委や研修センターが主催する研修会では,「書法」から始めることになるだろう。

学習14 応用的プログラム

(1)リスト

リストの説明が次のようになっている。

プログラムは,変数にデータを代入したり,参照したりすることを繰り返しながら動作しているが,複雑なプ ログラムになってくると,変数名の異なる変数が多くなり,取り扱いが困難になるため,リストが使われること が多い。

これはリストを使う理由としては正しくない。「変数が多くなる」からではなく,「同種のデータを効率よく扱うため」と考えた方がいい。「変数が多くなるから」と,なんでもかんでもリストに入れたら使いにくくなるだけのことだ。
そのあとの説明は研修用教材の通りでいいだろう。

この「リスト」は,「応用的プログラム」になっている。一般的な入門書でもそうで,応用的扱いだ。しかし,高校の情報では,リストの考え方は基本として必須。次に扱う「関数」より大切だ。「応用」というのは,リストに対する処理:要素の追加,削除,リストの各要素にある処理を施す,など:だろう。

次は「関数」だが,これを書いているとかなり長くなるので,ひとまずここまで。