「高等学校情報B」の版間の差分

削除された内容 追加された内容
内容3までを追加。内容4はまだ作成していない。
'計測・制御の技術'を追加。次は、情報Cか。
727 行
 
 
====情報社会を支える情報技術====
 
情報化社会では、社会の構成員は大量の情報を処理することを日常的に行なう必要が
あるのだが、これは、それぞれの人間にとって負担の大きいことである。幸い、
人間に取ってより扱いやすい形に情報を加工する手段についても研究が進んでおり、
それらを用いることで、情報をより直観的で解りやすい手段で扱うことが出来る。
この章では、そのような手法の説明と、それらを用いる際の注意点についてまとめる。
 
====情報通信と計測・制御の技術====
<!--
情報通信と計測・制御の仕組み及び社会におけるそれらの技術の活用について理解させる。
-->
 
情報技術の発展は、様々な機器を用いて、人間の意思をコンピュータに伝達することを
可能にして来た。古いコンピュータでは、情報を伝達する手段として、紙に穴を
あけて0と1を表現する機具を用いて、コンピュータへの情報伝達を行なっていた。
現在ではキーボードやマウスなどを用いて、情報を伝達することが出来る。
また、例えば銀行のキャッシュディスペンサーなどでは、パネルに触れる事で、
情報をコンピュータに伝えることが出来、利用者に取って非常に親切なシステムと
なっている。これらの機器では、機器が読み取った入力を、その情報を元に、
実際の制御を行なうコンピュータへと、情報を伝達する手段が問題となる。
 
実際には同様の問題は、あらゆるコンピュータの周辺機器に対して生じる。
情況によっては、これらの周辺機器はコンピュータの本体から極めて遠い所に
あることがある。極端な例では、人工衛星から地上のコンピュータにデータを送信
することも、コンピュータとデータの計測機器との情報伝達といえる。
 
多くの計測機器、例えばキャッシュディスペンサーやキーボードは、受け取った情報を
ケーブルなどを用いて、電気的にCPUに送っている。信号を受け取ったCPUは、
その信号に対して、所定の動作を行ない、その信号を受けいれるのである。
このように、機器が信号を発してからそれに対応してそれを扱うCPUが動作する
一連の動きを、[[w:割り込み]]、もしくは'ハードウェア割り込み'と呼ぶことがある。
ここで、所定の動作とは計測機器とCPUの間の約束事として定めておく必要が
ある約束事であり、具体的には0と1をどのような仕方でくり返すか、などの
情報である。
 
実際には、信号に対するCPUの動きは単純でない場合も多い。例えば、キーボードとCPUの
通信の場合には、押されたキーによって異なった信号が送られて来るため、それぞれの
信号と実際に受けいれる情報、例えば画面に表示される文字との間の対応を取る必要が
ある。また、CPUとハードディスクが情報の交換を行なうときには、ある一定程度の
通信が行なわれることを確認してから、実際の書きこみや読み取りを行なうことが
多い。これは、情報交換の過程が時間のかかるものであるため、一度にいくらかの
量をまとめて行なう方が都合がよいからである。このように、CPUと周辺機器との
情報交換を行なう過程は非常に複雑である。実際にはこのような作業を専門に
行なうプログラムを作成し、機器への出力や、機器からの入力を整形させる場合が
多い。特に、それが[[w:OS]]の機能として与えられるとき、そのようなプログラムを
[[w:デバイスドライバ]]と呼ぶことがある。
 
このように複雑な入力機器を用いるためには、ハードウェアとソフトウェアの両面で、
多くの努力が必要となることがわかる。ここでは最も単純な入力を用いて、
コンピュータによる制御の例を作成してみる。
 
入出力をどのように扱うかはプログラミング言語によって異なっており、それらは
言語の1つの特徴となる。解りやすい入出力があれば、言語は使い勝手のよいものと
なる。ただし、一方で使いやすさを求めるあまり、元々の入出力の複雑さが全くわからなく
なってしまうことは、厄介な問題を引き起こしかねないことを注意しておく。
 
pythonでは、最も簡単な入力は、raw_input() という関数で与えられる。これは、
s = raw_input()
の形で用いられ、キーボードから入力された文字列を、sに代入する働きをする。これを用いて、簡単な
コマンド指定のためのプログラムを作ってみる。例えば、あるプログラムで実行したいことが
複数あり、その中から利用者がどの作業を実際に行ないたいかを選ぶ必要があるとする。
ここでは、それぞれの作業に1,2,3の番号をつける。このうちのどれを選択したいかを
利用者に選択させることが、ここでの目的である。
 
ここでは、利用者の選択が、'1','2','3'のどれかであることを調べればよい。このような
条件分岐は、以前出て来たif文に加えてelif文と、else文を用いる。これらの文は、
if (a):
b
elif (c):
d
else:
e
の構文に従う。ここで、a, c は条件式であり、b, d, e は、それぞれ1つの文である。
この文の意味は、やや複雑である。まずaが真であるかを調べ、真であったらbの文を実行する。
そうでなかったときには、次にcが真であるかを調べ、真であったときにはdの文を
実行する。それも偽であったときには、eの文の実行をするという手順になる。
ここで、aの式が真であったときには、dとeの文は実行されないことに注意が必要である。
 
実際には、elif文は必要に応じていくつでも連ねることが出来る。さらに、else文は
省略しても構わない。
 
これを用いて、1, 2, 3 のどれかを選ぶためのプログラムを作ることが出来る。
情報の入力部分は次のようになる。
print "Please give me one of 1, 2, 3."
s = raw_input()
これはraw_input()を用いて情報を受け取るための文である。ただし、print文を1つ
つけて、何が求められているかを解りやすくした。
 
受け取った情報から必要な作業がどれであるかを見出す部分は次のようになる。
if (s == '1'):
print "I'll try job 1."
elif (s == '2'):
print "I'll try job 2."
elif (s == '3'):
print "I'll try job 3."
else:
print "I don't understand what you gave me."
プログラム中で、sは、先ほど受け取った利用者からの入力である。これが'1', '2', '3'のどれかであるか
を確かめるために、先ほどのif - elif - else を用いている。それぞれのif文に対応する実行文は、
ここでは、単に番号を表示するprint文である。しかし、実際により複雑な仕事を行なうときには、
この部分に対応するサブルーチンをおいた方がよいだろう。Pythonでもサブルーチンを定義することが
出来るが、ここではそれに関する説明は行なわない。[[Python]]などを参照。
また、利用者が入力した内容が1, 2, 3 のどれでもないときには、その内容に対応する作業が
無いことを述べて、プログラムの実行を終えている。しかし、実際には1, 2, 3 が入力されなかった
時には、再び入力部分に戻る方が親切であるとも考えられる。このようなプログラムを作ることは
実は難しくないが、ここでは行なわない。
 
ここまでで、単純な入力に対して、対応する作業を行なうためのプログラムについて説明した。
実際のコンピュータでは、入力装置はより複雑な情報を与えることが普通であり、また、
実際に行なわねばならない作業も、より複雑なものである場合が多い。しかし、多くの場合に、
入力部分と制御部分は分割して考えることができることは確かである。
 
 
====情報技術における人間への配慮====
<!--
情報技術を導入する際には,安全性や使いやすさを高めるための配慮が必要であることを理解させる。
-->
 
情報技術を上手く用いることで、情報を処理することに関する人間の負担を減らすことが出来る。同時に、そのような技術を上手く用いることで、人間が行なう処理の間違いを
検出したり、より使いやすい入力装置を作成することが出来る。
 
しかし、このようなプログラムを作成するには多くの時間が必要であり、価格として
高価になる場合が多い。そのため、実際にどの程度の使い易さを要求するかは、
プログラムの作成の段階で問題になることが多い。実際には要求を増やすほど、
作成の時間もコストも増える傾向があるため、常に優れた情報技術が用いられるとは
限らないことにも注意する必要がある。
 
しかし、[[w:ヒューマンエラー]]の発生を減らすためにも、使い方が明快で解りやすい情報技術の
作成は重要な役割を持つ。この分野については今後の発展が期待されるところである。
 
====情報技術の進展が社会に及ぼす影響====
<!--
情報技術の進展が社会に及ぼす影響を認識させ,情報技術を社会の発展に役立てようとする心構えについて考えさせる。
-->
 
現在ではハードウェアの面でも、ソフトウェアの面でも非常に多くの情報技術が
開発されており、その数は現在でも増え続けている。これらは使いこなすことで
我々の生活が便利になる可能性を秘めている一方、使い方を間違えば、我々の
生活を大変な混乱に導く可能性も秘めている。実際的には、我々はコンピュータ技術の
発展に常に注目し、それらを用いて実行できることを把握しておくことが望まれる。
 
<!--
現実的には、 'wikibooks を読み、そして、最新のIT技術を修得せよ。'
の一言が最も現実的な気がするが ... 。わざわざ自分に投資して勉強を続ける人はいないだろうに ... 。
-->
 
 
===付録===
 
====Pythonの導入====
 
Pythonは、よく知られたオープンソースソフトウェアであり、多くの環境で無料で用いることが出来る。ただし、無料であることの
代償として、ソフトウェアのバグなどによって引き起こされたいかなる損害に対しても、作成者は責任を負わないことが
明記されている。実際には、Pythonは非常に安定しており、そのような結果が引き起こされる確率は高くはないが、
常に自身に責任があることには注意する必要がある。
 
Pythonは、Linux、Mac OS Xなどでは配布者によってインストールされていることが多い。このような環境を用いているときには、コマンド
$python
を試してみるとよい。このとき既にインストールが行なわれているなら、pythonのバージョンが表示されるはずである。
一方、インストールされていないときには'そのようなプログラムは存在しない'という文章が表示されるはずである。
正確な文字列は環境による。この様な場合には、これらをインストールする手順が必要になる。詳しくは、
http://www.python.jp などを参照すること。
 
Windowsを用いているときにも、いくつかの方法でPythonを導入することが出来る。[[w:ActivePython]]、[[w:Cygwin]]などを参照。また、マイクロソフト純正の
プログラムツールとして、[[w:IronPython]]が、現在開発中のようである。
 
====情報通信と計測・制御の技術====