連載

プロフェッショナルVB.NETプログラミング
―― VB 6プログラマーのためのVB.NET入門 ――

第22回 コンソール・アプリケーションの開発と活用(後編)

(株)ピーデー
川俣 晶
2002/10/26

Page1 Page2 Page3

コンソール・アプリケーションと入出力

 前回で解説したコマンドライン引数は、ファイル名などを指定するのには便利だが、処理させたい大量のデータを記述するのには向かない。また、結果を表示するための出力も重要である。もちろん、ファイルを読み書きすれば対処できるが、そのほかに、コンソール・アプリケーションには、「標準入出力」という便利な機能が用意されている。

 このうち、標準出力へ出力する手段は、すでにSystem.ConsoleクラスのWriteLineメソッドとして紹介している。WtiteLineメソッドのほかに、出力後に改行しないWriteメソッドが存在する。

 標準入力は、1文字を入力するReadメソッドと、1行を入力するReadLineメソッドが存在する。

 これらを使用したサンプル・プログラムを以下に示す。これは、2つの数値を入力して、その四則演算の結果を出力する。

  1: Module Module1
  2:
  3:   Sub Main()
  4:     Dim s1, s2 As String
  5:     Dim i1, i2 As Single
  6:
  7:     s1 = Console.ReadLine()
  8:     i1 = Single.Parse(s1)
  9:
 10:     s2 = Console.ReadLine()
 11:     i2 = Single.Parse(s2)
 12:
 13:     Console.WriteLine(i1 + i2)
 14:     Console.WriteLine(i1 - i2)
 15:     Console.WriteLine(i1 * i2)
 16:     Console.WriteLine(i1 / i2)
 17:   End Sub
 18:
 19: End Module
2つの数値が入力されると四則演算の結果を出力するサンプル・プログラム1

 このソースでは、まず7行目で1行を入力し、8行目で実数に変換する。そして次に、10行目でさらに1行を入力し、11行目で実数に変換する。最後の13〜16行目で一気に四則演算を行って結果を出力する。

 以下はこれを実行した一例である。

サンプル・プログラム1の実行結果例(「2、Enter、3、Enter」と入力した場合)

 実行ファイル名はSample004n.exeだったので、「Sample004n、Enter」と入力してプログラムを起動する。そして、「2、Enter、3、Enter」と入力する。すると、5、-1、6、0.6666667という結果を表示して終了する。

 このプログラムでは、10行目のReadLineメソッドを実行したら、もはや7行目のReadLineメソッドに戻る手段が存在しないことに注意が必要である。一度、7行目のReadLineメソッドに対応する入力でEnterキーを押してしまったら、もはや入力したデータを訂正する手段はない。ダイアログ・ボックスでテキスト・ボックスを2つ並べて入力を促すような使い方は、標準入力では実現しにくい。しかし、それだけのデメリットを甘受しても、標準入力には大きなメリットがある。次に、そのメリットについて説明する。

標準入力と標準出力

 標準入力と標準出力では、「リダイレクト」という機能が使用できる。これは、コマンドラインの指定により、標準入力や標準出力をキーボードやコンソール・ウィンドウではなく、ファイルやデバイスに切り替える機能である。例えばこの機能を使えば、前項のサンプル・プログラムの入力を、キーボードではなくファイルから入力させることが簡単にできる。

 標準入力を切り替えるには、コマンドライン引数のどこかに、「<」記号を入力し、それに続いてファイル名を入力する。指定するファイルは通常のテキスト・ファイルである必要がある。一般的な日本のパソコンなら、シフトJISのテキスト・ファイルになる。例えば、前項のプログラムに、c:\test.txtファイルの内容を入力させるには、

Sample004n <c:\test.txt

と入力する。実際に実行してみた例が以下の画面写真である。

リダイレクトにより、ファイルの内容を入力とした例
  typeコマンドによりファイルの内容を表示
  ファイルの内容を入力としてサンプル・プログラム1(Sample004n)を実行

 最初に実行しているtypeコマンドは、テキスト・ファイルの内容を表示するコマンドである。引数のファイル名のファイル内容を表示する。typeコマンドの実行結果を見てのとおり、内容は2行で、1行目は3、2行目は4が記述されている。このファイルを入力に指定すると、キーボードから「3、Enter、4、Enter」と入力したのと同じ効果が得られる。入力データをファイルで用意しておけば、同じような処理を何度も実行する際に、データを繰り返し打ち込む必要がなく便利である。この機能があれば、必ず大量の指定を入力しないと動作しないGUIアプリケーションよりも、コンソール・アプリケーションの方が便利に利用できる場合もあるだろう。

 さて、入力の次は標準出力のリダイレクトを試してみよう。出力を切り替えるときには、「<」記号の代りに「>」記号を使用するだけで、入力と同様である。実際に使ってみた例は以下のとおりである。

リダイレクトにより標準入力と標準出力を使用した例
  サンプル・プログラム1の実行結果をファイルに出力(コマンドの実行後に「4、Enter、5、Enter」と入力している)。
  typeコマンドにより実行結果ファイルの内容を表示。
  ファイルを入力としてサンプル・プログラム1を実行し、別ファイルに実行結果を出力。
  typeコマンドにより実行結果ファイルの内容を表示。

 「Sample004n >c:\result.txt」と入力した後は、「4、Enter、5、Enter」と入力している。次のtypeコマンドで、確かに結果がファイルに出力されていることが確認できる。また、後半は、標準入力と標準出力の両方を指定したケースを示している。膨大なデータを入力して出力するプログラムを実行する場合でも、このように使えば、(処理時間の長さを除けば)データの膨大さを意識せずに操作することができる。


 INDEX
  連載 プロフェッショナルVB.NETプログラミング
  第22回 コンソール・アプリケーションの開発と活用(後編)
  1.コンソール・アプリケーションと入出力
    2.パイプの活用
    3.スケジュールして無人実行
 
「プロフェッショナルVB.NETプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間