前回、プログラムの構成要素には、「データ」と「処理」の2つがあることを学びました。
今回は、データと処理の関係を見ていきましょう。
データと処理の関係
データと処理の関係は、
(1)データの入力 → (2)処理 → (3)データの出力
という関係、順番になっています。
「入力」と「出力」という単語の意味
ここで「入力」と「出力」という言葉の意味を確認しておきましょう。
入出力
読み方:にゅうしゅつりょく
別名:I/O,入力・出力,インプット・アウトプット
【英】Input-Output
入出力とは、情報処理において計算機に情報・データを入れること(入力)、および、計算機から情報を出すこと(出力)を総称した語である。
コンピューター(電子計算機)や、プログラムの処理に対して、データ(情報)を入れたり出したりすることを「入力」や「出力」と言います。
「入力」と「出力」の2つを1つに合わせて、「入出力」という言い方もします。
入力と処理と出力の順番
データの入出力の順番は、例えるなら、製麺機のような仕組みと同じです。
ラーメンやパスタを作る製麺機は、材料となる生地を入れると、麺になって出てきます。
生地が入力で、麺が出力ですね。
(実際の製麺機や使い方は、以下のようになっています。)
買物の合計金額を出す処理
1冊200円のノートを5冊買ったときの合計金額を計算したい場合、プログラムは
- 入力されるデータ:ノートの値段(1冊200円)と、買うノートの冊数(5冊)
- 処理:200 × 5 = 1000
- 出力されるデータ:ノート5冊分の合計金額(1000円)
という順番でデータと処理がつながっています。
上記の製麺機の例え話で言えば、生地を入れると麺が出てくるように、プログラムでは入力データを入れると欲しい出力データが出てきます。
- プログラムはデータと処理から成り立っており、
- データと処理の関係は、入力データ→処理→出力データという順番でつながっています。
基本的には、データの部分として「入力データ」と「出力データ」の2つがあるのですが、その変形として、
- 入力がない処理
- 出力がない処理
も作れます。
入力がない処理(出力だけの処理)
例えば、現在時刻を出力するだけの処理があった場合、出力されるデータは常にそのときの現在時刻だけなので、入力データがなくても処理が実行可能なのです。
仮に何等かの入力データがあったとしても無視されて、処理は常に現在時刻だけを出力データとして出してきます。
このように、入力データがない処理もあります。
出力がない処理(入力だけの処理)
逆に、入力データだけを受け取る処理もあります。
入力データを受け取った処理は、何らかの働きをして終わり、出力データを出さずに終わります。
これは、今の段階だとちょっと具体例を説明しづらいのですが、後で具体的にプログラミングのやり方を学んでいくと、
- void型(ボイドがた)
- 副作用(ふくさよう)
という用語が登場するのですが、そのときに再度説明します。
void型と副作用
(参考)
void(ボイド)は、プログラミング言語において、「何もない」といった意味の型などに使われる名前である。
ALGOL68やC言語などでは、有意な値を返さないサブルーチンについて、関数としての形式上void型としている。
呼び出し側に返り値を戻さない関数を書く場合に用いられる。
そのような関数は、何かしらの処理、あるいは引数を出力するといった、副作用のために呼び出されるのが通例である。
プログラミングにおいて、式の評価による作用には、主たる作用とそれ以外の副作用(side effect)とがある。
式は、評価値を得ること(※関数では「引数を受け取り値を返す」と表現する)が主たる作用とされ、それ以外のコンピュータの論理的状態(ローカル環境以外の状態変数の値)を変化させる作用を副作用という。
副作用の例としては、グローバル変数や静的ローカル変数の変更、ファイルの読み書きなどのI/O実行、などがある。
後でプログラムの「副作用」という仕組みを学ぶときに、この「出力がない処理(入力だけの処理)」というパターンについて、具体的に理解できるようになります。
(今の段階では、こういう話もある、ということを知っておく程度でOKです。)
まとめ
以上、今回はデータと処理の関係・順番について学びました。
巨大なプログラムを書くときでも、基本は常に
(1)データの入力 → (2)処理 → (3)データの出力
という関係、順番になっていること覚えておいてください。