プログラムの「入力」と「出力」


前回、プログラムの構成要素には、「データ」と「処理」の2つがあることを学びました。

www.tanopro.net

今回は、データと処理の関係を見ていきましょう。

データと処理の関係

データと処理の関係は、

(1)データの入力 → (2)処理 → (3)データの出力

という関係、順番になっています。

「入力」と「出力」という単語の意味

ここで「入力」と「出力」という言葉の意味を確認しておきましょう。

www.weblio.jp

入出力

読み方:にゅうしゅつりょく

別名:I/O,入力・出力,インプット・アウトプット

【英】Input-Output

入出力とは、情報処理において計算機に情報・データを入れること(入力)、および、計算機から情報を出すこと(出力)を総称した語である。

コンピューター(電子計算機)や、プログラムの処理に対して、データ(情報)を入れたり出したりすることを「入力」や「出力」と言います。

「入力」と「出力」の2つを1つに合わせて、「入出力」という言い方もします。

入力と処理と出力の順番

データの入出力の順番は、例えるなら、製麺機のような仕組みと同じです。

ラーメンやパスタを作る製麺機は、材料となる生地を入れると、麺になって出てきます。

製麺機の入力と出力

生地が入力で、麺が出力ですね。

(実際の製麺機や使い方は、以下のようになっています。)

www.youtube.com

買物の合計金額を出す処理

1冊200円のノートを5冊買ったときの合計金額を計算したい場合、プログラムは

  • 入力されるデータ:ノートの値段(1冊200円)と、買うノートの冊数(5冊)
  • 処理:200 × 5 = 1000
  • 出力されるデータ:ノート5冊分の合計金額(1000円)

という順番でデータと処理がつながっています。

上記の製麺機の例え話で言えば、生地を入れると麺が出てくるように、プログラムでは入力データを入れると欲しい出力データが出てきます。

  • プログラムはデータと処理から成り立っており、
  • データと処理の関係は、入力データ→処理→出力データという順番でつながっています。

基本的には、データの部分として「入力データ」と「出力データ」の2つがあるのですが、その変形として、

  • 入力がない処理
  • 出力がない処理

も作れます。

入力がない処理(出力だけの処理)

例えば、現在時刻を出力するだけの処理があった場合、出力されるデータは常にそのときの現在時刻だけなので、入力データがなくても処理が実行可能なのです。

仮に何等かの入力データがあったとしても無視されて、処理は常に現在時刻だけを出力データとして出してきます。

このように、入力データがない処理もあります。

出力がない処理(入力だけの処理)

逆に、入力データだけを受け取る処理もあります。

入力データを受け取った処理は、何らかの働きをして終わり、出力データを出さずに終わります。

これは、今の段階だとちょっと具体例を説明しづらいのですが、後で具体的にプログラミングのやり方を学んでいくと、

  • void型(ボイドがた)
  • 副作用(ふくさよう)

という用語が登場するのですが、そのときに再度説明します。

void型と副作用

(参考)

ja.wikipedia.org

void(ボイド)は、プログラミング言語において、「何もない」といった意味の型などに使われる名前である。

ALGOL68やC言語などでは、有意な値を返さないサブルーチンについて、関数としての形式上void型としている。

呼び出し側に返り値を戻さない関数を書く場合に用いられる。

そのような関数は、何かしらの処理、あるいは引数を出力するといった、副作用のために呼び出されるのが通例である。

ja.wikipedia.org

プログラミングにおいて、式の評価による作用には、主たる作用とそれ以外の副作用(side effect)とがある。

式は、評価値を得ること(※関数では「引数を受け取り値を返す」と表現する)が主たる作用とされ、それ以外のコンピュータの論理的状態(ローカル環境以外の状態変数の値)を変化させる作用を副作用という。

副作用の例としては、グローバル変数や静的ローカル変数の変更、ファイルの読み書きなどのI/O実行、などがある。 

後でプログラムの「副作用」という仕組みを学ぶときに、この「出力がない処理(入力だけの処理)」というパターンについて、具体的に理解できるようになります。

(今の段階では、こういう話もある、ということを知っておく程度でOKです。)

まとめ

以上、今回はデータと処理の関係・順番について学びました。

巨大なプログラムを書くときでも、基本は常に

(1)データの入力 → (2)処理 → (3)データの出力

という関係、順番になっていること覚えておいてください。