
武蔵野個別指導塾の特徴
高校情報I コンピュータの構成—命令とデータの動きから各装置の役割を説明する|武蔵野個別指導塾

命令表で入力値が加算・表示・保存へ渡る順序を追い、保存に失敗した場合に残る値まで区別します。
よくあるのは、高校生が保存先と計算中の作業場所を同一視する場面です。入力した数を計算して画面に出せたので、電源を切った後もその結果が保存されていると思ってしまいます。画面に見えることと、後で読み出せる場所に書き込むことは別の動作です。どの値がどこにあり、どの命令で移ったかを順に追うと、違いを説明できます。
装置名を答える前に動きを決める
問われ方には、入力から表示までの経路を説明する型、主記憶と補助記憶のどちらに値があるかを追う型、保存に失敗した場合に残る情報を判断する型があります。いずれも、装置の名前を並べるだけでは足りません。命令の対象と移動の前後を示すと、何が起きたかを確かめられます。
ここでは説明のために、命令と作業中の値を主記憶に置く小さなモデルを作ります。入力は整数、計算は整数の加算、表示は画面への出力、保存は補助記憶への書込みとします。これは実機の命令セットや配線を示すものではありません。実際の装置には複数の記憶階層や制御の仕組みがありますが、このモデルでは目的に必要な受け渡しに絞ります。
5つの役割と2つの記憶場所
入力装置は外からデータを受け取る役割を持ちます。例えばキー操作を通じて与えられた値が、処理に使える形で渡されます。出力装置は処理結果を外へ伝えます。画面への表示は出力の一例ですが、その表示自体を保存の完了と考えてはいけません。
記憶装置は命令やデータを保持します。主記憶は実行中に命令やデータを置く作業場所で、CPUが処理を進める際に参照します。補助記憶はファイルなどを保存し、後で取り出すために使います。主記憶は通常、電源を切ると内容が失われます。補助記憶は通常、電源を切っても保存内容を保持しますが、保存に失敗すれば新しい結果が残ったとは限りません。
制御装置は命令に従って各部分の動きを制御し、演算装置は加算などの演算を行います。CPUは制御と演算の中心を担います。制御装置が値を保存し続ける箱であるとか、演算装置が画面そのものであるとか考えないようにしましょう。役割の分類は働きに注目したものであり、必ず別々の物理的な箱が5個並ぶという意味ではありません。
図1のように、入力された値は主記憶に置かれ、CPUの演算に使われます。結果は主記憶から表示にも保存にも渡せます。図1の矢印はこのモデルで扱う受け渡しを表し、実機の全ての経路を描いたものではありません。

OSはCPUの利用や記憶領域、入出力装置などの資源を管理し、プログラムがそれらを利用できるようにします。例えば保存を求めるプログラムと保存先の間にも管理が関わります。ただしOSが存在するだけで保存が必ず成功するわけではありません。容量不足や装置の異常など、要求が完了しない場合の扱いも必要です。
基本例題: 2つの値を足して記録する
入力装置から順に4と7を受け取り、合計を表示して保存します。初めの主記憶の作業欄A、B、Cは未設定、補助記憶の結果欄は古い値3とします。命令は順番に1回ずつ実行し、全て成功した場合の画面表示と各欄の最終値を答えてください。A、B、Cは主記憶上の名前であり、補助記憶の結果欄とは別です。
番号 命令 実行後のA B C 結果欄 表示
1 4をAへ入力 4 未 未 3 なし
2 7をBへ入力 4 7 未 3 なし
3 AとBを足してCへ 4 7 11 3 なし
4 Cを表示 4 7 11 3 11
5 Cを結果欄へ保存 4 7 11 11 11
手で計算すると4と7の合計は11です。命令1と2で入力の受け取り先を分け、命令3ではAとBを読み、CPUの演算結果をCへ戻します。命令4はCの値を出力装置へ渡しますが、補助記憶の3はその時点で変わりません。命令5が成功して初めて結果欄は11になります。保存後も、このモデルではCの値は11のままです。
図2のように、表示と保存は同じCから出る別の動作です。図2で3から11へ変わるのは保存が成功した結果欄です。入力値4と7を足す手計算と、表示11、保存11を互いに照らし合わせます。

保存の成否と作業の続行
標準例題では、入力6と2を同じ手順で処理します。古い結果欄は5で、表示までは成功しますが、保存先が書込みを受け付けず、保存命令は失敗して結果欄を変更しないものとします。画面と主記憶C、結果欄をそれぞれ整数で答えてください。期待する状態は画面8、Cが8、結果欄が5です。8を表示できた事実と、8を保存できたかは別に判定します。
保存失敗の通知を受けたら、利用者は空き容量や保存先を調べて再試行できます。ただし、再試行が成功する前に電源を切れば、このモデルの主記憶Cは失われます。古い結果欄5は変更されないという問題の条件に従って残ります。実際の障害では元のファイルまで影響を受ける場合もあるため、この結果を全ての保存失敗に一般化しません。
発展例題では、入力装置が最初の値として9を受け取った後、2つ目に整数ではない文字を渡したとします。入力は整数に限り、不正な入力を検出した時点で残りの命令を中止するという仕様です。古い結果欄は12です。Aは9、BとCは未設定、表示なし、結果欄は12のままです。2つ目を0とみなして計算したり、以前のBを勝手に使ったりしてはいけません。
入力を待っている途中で時間切れになった場合も、ここでは不正な入力と同様に中止します。1つ目を受け取る前ならA、B、Cは未設定です。2つ目を待つ間ならAだけが設定済みです。途中で止まった位置が違えば残る作業状態も違いますが、どちらも表示と保存の命令には到達していません。外部の保存装置が応答しない場合も、成功の通知がない限り保存完了と判定しない設計が必要です。
この命令表は有限個の命令を順に1回ずつ実行するため、入力待ちや保存待ちにも制限を設けた場合、成功または中止で終了します。実際の待ち時間や障害後の復旧方法は環境に依存します。命令表の終了を考えるときは、待機の扱いを別に決めておく必要があります。
命令表の前提を変えたらどうなるか
命令表の読み取りでは、同じ数字が2か所にあっても、同じ場所にあるとは限りません。基本例題でCに11ができた直後、結果欄は3のままです。2つを別々の枠で描けば、Cを変更する命令3と結果欄を変更する命令5の間に、表示の命令4があることも確認できます。画面に11が残っていても、保存先の中身を見たことにはなりません。
もし命令5を命令3の直後、表示より前に移せば、正常時の最終的な表示と保存値は同じ11です。しかし表示の前に保存が失敗して処理を中止する仕様なら、画面には何も出ません。命令の集合が同じでも順序や失敗後の規則によって、途中で観察できる状態が変わります。問題の表にない順序を勝手に想像せず、どの行まで実行したかを指定して考えます。
保存した値を後から使うときには、補助記憶から読み出して作業に使う手順が必要です。前回の表示だけを見て、現在の主記憶に同じ値があると決めることはできません。特に電源を切った後は、主記憶にあったCをそのまま使えると考えず、保存に成功した結果欄を読み出す命令を別に用意します。
装置の分類には、受け渡す方向に注意します。入力装置は人などから計算機へ値を渡し、出力装置は計算機から外へ結果を伝えます。補助記憶もデータを読み書きしますが、この命令表では保存先としての役割に注目しています。1つの機器が複数の役割を持つ場合もあるので、機器の名前だけでなく、いま行っている操作を見て判断します。
制御と演算も混ぜずに説明します。制御は次にどの動作を行うかを命令に沿って進め、演算は与えられた値を使って結果を作ります。命令3の加算ではAとBが対象、Cが結果の置き場所です。命令そのものは「AとBを足してCへ」という手順であり、4や7という処理対象の値とは別に考えます。
不正な入力の試験では、値が欠けた状態をわざと作り、後続の命令が実行されないことを確認します。保存失敗の試験では、計算と表示が成功していても保存先が古い値のままという状態を作ります。時間切れの試験では、待っている段階を明示して、受け取り前の欄が未設定であることを確かめます。これらは正常な入力を変えて計算結果を見る試験と同じように、期待される途中状態を先に決めて照合します。
誤答を見つけて修正する
基本例題で「命令4の直後に結果欄は11」と答える誤りを考えます。原因は画面へ出す動作を保存と取り違えたことです。命令4の受け取り先は画面で、結果欄ではありません。表の結果欄を命令4の後も3と書き、命令5の成功後に11へ更新します。
図3のように、表示後と保存後を別の列で見ると誤りの位置が見えます。図3の修正後の表を最初から再実行すると、表示は11、保存前の結果欄は3、保存後は11です。もし命令5が失敗して結果欄を変更しない条件なら、表示は11でも結果欄は3のままです。正しい結果だけでなく失敗経路も再確認します。

5つの確認問題
次の各問は上の命令表と同じモデルを使います。作業欄は初め未設定で、入力、加算、表示、保存の順です。保存の失敗は結果欄を変更せず、入力異常や時間切れでは残りの命令を中止します。答えは指定された欄の値か「未設定」「なし」で表してください。
- 入力が2と5、古い結果欄が10で全命令が成功します。C、表示、結果欄を答えてください。
- 入力が8と3、古い結果欄が4で、表示後の保存が失敗します。C、表示、結果欄を答えてください。
- 最初の入力が1で、次の入力が文字となり中止します。古い結果欄は6です。A、B、C、表示、結果欄を答えてください。
- 最初の入力を待つ間に時間切れになりました。古い結果欄は7です。A、B、C、表示、結果欄を答えてください。
- 入力が0と0、古い結果欄が9で全命令が成功します。C、表示、結果欄を答え、0を未設定と区別してください。
答えと戻して確かめる方法
- Cは7、表示は7、結果欄は7です。2と5を戻して足すと7で、表示と保存の両方に同じCが渡っています。古い10は保存成功で置き換わります。
- Cは11、表示は11、結果欄は4です。8と3の合計11は表示済みですが、失敗した保存は古い4を変更しません。表示を確認するだけでは新しい保存を確認できません。
- Aは1、BとCは未設定、表示はなし、結果欄は6です。文字を受けた時点で止めるので、加算に必要な2つ目の整数がなく、表示や保存にも進みません。
- A、B、Cは未設定、表示はなし、結果欄は7です。最初の値を受け取る前に止まっているため、入力済みの値を仮定しません。結果欄も保存命令に到達せず元の7です。
- Cは0、表示は0、結果欄は0です。0と0を足した結果は0で、正しく設定された整数です。未設定は値がまだ用意されていない状態であり、数値の0とは異なります。
成功する3条件と、保存失敗、入力異常、時間切れの3条件を別々に追いました。処理表の各行で、変更先以外の欄を勝手に更新していないかも検査します。いずれもこの小さな命令表の仕様に対する確認であり、あらゆる装置の障害を網羅する証明ではありません。
覚えておくこと
入力と出力は外との受け渡し、制御と演算は処理の進行と計算を担います。
主記憶は作業場所、補助記憶は後で読み出すための保存場所です。
表示の成功と保存の成功は、それぞれ確かめます。
失敗した命令と中止位置を決め、残った値を追います。
説明が止まった場所を確かめる
個別指導で確認するなら、まず「表示直後の結果欄は何か」を本人に説明してもらいます。11と答えた場合は、画面と結果欄を別の枠に描き、どの命令がそれぞれを書き換えるかを指でたどります。装置名だけを暗記できても、受け取り先が変わると判断できないことがあるからです。
次に保存失敗や入力途中の時間切れを処理表に戻し、実行されなかった行を消してもらいます。どの欄が未設定で、どの古い値が条件により残るかを言葉にできれば、結果だけを覚えずに受け渡しを追えています。コンピュータの構成は、命令ごとの行き先を区別すると筋道が見えます。
読んで終わりにするか、ここから変えるか。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。


