もどる


研究授業〜「プログラムと計測・制御の学習」(3年生)・・・・(2001.1.16.)

 簡易プログラム言語「オートマ君」によるプログラムで機械を制御します。分担してプログラムを作成し、校内LANのネットワークを使ってプログラムを1つにまとめていきます。

教材観(学習指導案より)
人類がコンピュータという機械に出会って(つくり出して)、50年以上の歳月が過ぎた。20世紀のちょうど半ばあたりに登場したコンピュータは、この半世紀の間に私たちの生活に深く浸透し、生活様式から意識のあり方まで、あらゆる部分に影響を与える存在となった。コンピュータに関する技術や科学も、まさに日進月歩で急激に変化している。たとえばパーソナルコンピュータも今後、姿を大きく変えていくと予想されている。
 そうした時代の急激な変化の中で、私たちに求められる「コンピュータの知識」とはどんなものになるのであろうか。今後、コンピュータが「人にやさしい機械」になれば、今までのようなパソコンの操作方法に関する知識は無用になってくると考えられている。しかし、だからといって「コンピュータの知識なんてまったく不要だ」ということにはならない。コンピュータがもっと身近なものになればなるほど問われてくるのが、コンピュータの本質につながる理解であり、知識である。高度な情報化社会を、主体的に生きていくためには、コンピュータに関する本質的な理解が非常に重要なこととなる。
 では、コンピュータに関する本質的な理解につながる知識とは、どのようなものだろうか。コンピュータは、他の機械と異なり、ソフトウェアによってどのようにでも変化する特殊な機械である。コンピュータは、人間のつくりだした機械の中で、唯一用途を選ばない「汎用性のある」機械であるところに特徴がある。しかし、誤解をしてはならないことは、「何にでも使える」という言葉は、ともすると「万能」というイメージを与えるが、コンピュータは残念ながらそんな魔法使いではない。コンピュータの汎用性を引き出すには、使う人がコンピュータの特性をよく知っている必要がある。コンピュータの長所や欠点を知らずに使うと、コンピュータはとんでもない間違いをしかねないし、本来、コンピュータはそうした間違いを平気で犯すものであるという認識が非常に重要なのである。これは、コンピュータが人間のプログラムによってのみ動作していることによるもので、コンピュータの判断は人間があらかじめ設定したものによって行われているということであり、コンピュータがそれ自身で判断を下したりしているのではないということである。
 もうひとつは、私たちの身のまわりでもっともたくさん利用されているコンピュータは、機器を制御するためのマイクロコンピュータである。こうした、普段は直接目にすることのない部分でたくさんの種類のコンピュータが、さまざまな機器を制御することに使われている。そして、それらのコンピュータの制御を設定しているのが人間なのである。
  技術科の学習内容の中に
  技術分野 内容A「技術とものづくり」
        内容B「情報とコンピュータ」
          (6)プログラムと計測・制御
              ア.プログラムの機能、簡単なプログラムの作成
              イ.コンピュータを用いた簡単な計測・制御
が含まれているのも、こうしたコンピュータの本質的な知識と理解を深めるためなのでる。これは、コンピュータそのものについて学習することを示している。
  はじめに、プログラムについて述べると、コンピュータに対する一定の意味を持った命令とデータの集まりを「プログラム」といい、コンピュータのためのプログラムをつくる作業を「プログラミング」、プログラムをつくるために用いる言葉を「プログラミング言語」という。ソフトウェアと、それをつくるためのプログラミングという作業は、人間にとってはハードウェア以上に身近な存在なのだが、実体がない上に、専門的な技術の世界であるために、一般にはなじみの薄い分野でもある。
 一般にプログラミングというと、具体的にプログラムを作成する段階(これを「コーディング」という)だけを考えがちであるが、本来プログラミングとは、次の@〜Dの段階に分けられるものであり、これらすべてを総称するものである。

 @システムの分析:入力として、何がどのような形式で与えられるか、何をどのような形で出力すればよいのかを調べる。
 Aアルゴリズムの決定:どのような手法で問題を解決するかを決める。
 Bプログラムの設計:どの部分をサブルーチン(プログラム全体の総括をするプログラムの単位をメインルーチンといい、下請け処理をする小さなプログラムの単位をサブルーチンという)にするか、どのような変数を用いるかを決定し、フローチャートを作成する。
 Cプログラムの記述(「コーディング」):プログラム言語を用いて、具体的にプログラムを記述する。
 Dプログラムのテスト:期待どおりに動作するか試し、不都合があれば再検討する。

  また、コーディング(具体的にプログラムを作成する段階)には、依然として高度な技術力が必要とされ、本格的なプログラミング教育を受けずに誰もが一朝一夕にプログラムが書けるというわけにはいかない。(ただし、1990年代に入ってRAD(Rapid Application Development)ツールの登場で、やや容易になってきている。)
 初期のコンピュータは規模が小さく、プログラミング自体の規模も小さく単純であったため、プログラミングのための特別な手法、技術は必要としなかった。しかし、1970年代以降に集積回路技術が急激な発展を示すにつれて、CPU(中央演算処理装置)の機能が向上し、メモリ(内部記憶装置)の容量も増大した。また、外部記憶装置(ハードディスクなど)やプリンタなどの周辺装置の利用も進み、それに伴って、プログラムの規模が大きく複雑なものになった。その結果、プログラムの開発コストや、デバッグ(エラーを除去して正しいプログラムにする作業)および保守のコストが急激に増大し、開発するプログラマの不足などの問題が生じた。こうしたことからプログラム開発の生産性を向上させるために、「構造化プログラミング」などの方法が考案された。
 構造化プログラミングは、プログラムの生産性を高めるために考案されたプログラミングの方法で、オランダのE.W.ダイクストラたちが提唱したプログラミングの方法で、「構造的プログラム」とも呼ばれる。構造化プログラミングとは、「入口と出口がそれぞれ1つのプログラムは、
  @「順次処理」:順番に命令を実行していくプログラム。連接ともいう。
  A「繰り返し処理」:同じ命令の組み合わせを繰り返す。反復ともいう。
  B「分岐処理」:ある条件によって実行する内容が変化するもの。選択ともいう。
の3種類の構造の組み合わせで表現できる」という考え方に基づいたものである。この3種類の構造を基本として、モジュールごとにプログラミングを行うと、プログラムの規模が大きくなったときでも、プログラムの修正が容易になる。
  コンピュータに関する本質的な知識と理解とは、こうしたコンピュータのプログラムの基本的な3つの機能と、プログラミングの基本的な手法の考え方を理解することから始まる。
 これらのことは、一見すると複雑で難解なものと思われがちであるが、基本的にはきわめて簡潔で具体的な事柄であり、中学生にとっても、それらを理解することは、学習方法によっては難しいことではない。

 さらに、こうした「プログラミング」という行為を通して、人がどのようにして機械とかかわってきたかを考えたり、コンピュータのプログラムの開発には、人間がこれまでつくり上げてきたさまざまな技術が注ぎ込まれていることや、プログラムのしごとは、普段、わたしたちの目には見えないが、こうした優れたプログラムを開発しているたくさんの技術者の地道で丹念な仕事が、わたしたちの日常生活を支えていることも知っておくべきことであろう。

  そして、こうした学習を通して、「モノづくり」(「モノ」とカタカナ表記をするときには、これまでの製造業が担っていたハードウェアに加えて、コンピュータのプログラムなどのソフトウェア開発が含まれていることを示す)というものがどのように行われているのかということや、ユニークな発想のおもしろさ、発想を実用化することの苦労や楽しさを知ったり、社会や産業の中で、技術・工学の果たす役割を考え、主体的に技術とかかわりあっていける力を育てていくことにつながるものと考える。


もどる