連載プロフェッショナルVB.NETプログラミング
|
コンソール・アプリケーションと入出力
前回で解説したコマンドライン引数は、ファイル名などを指定するのには便利だが、処理させたい大量のデータを記述するのには向かない。また、結果を表示するための出力も重要である。もちろん、ファイルを読み書きすれば対処できるが、そのほかに、コンソール・アプリケーションには、「標準入出力」という便利な機能が用意されている。
このうち、標準出力へ出力する手段は、すでにSystem.ConsoleクラスのWriteLineメソッドとして紹介している。WtiteLineメソッドのほかに、出力後に改行しないWriteメソッドが存在する。
標準入力は、1文字を入力するReadメソッドと、1行を入力するReadLineメソッドが存在する。
これらを使用したサンプル・プログラムを以下に示す。これは、2つの数値を入力して、その四則演算の結果を出力する。
|
|
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コマンドは、テキスト・ファイルの内容を表示するコマンドである。引数のファイル名のファイル内容を表示する。typeコマンドの実行結果を見てのとおり、内容は2行で、1行目は3、2行目は4が記述されている。このファイルを入力に指定すると、キーボードから「3、Enter、4、Enter」と入力したのと同じ効果が得られる。入力データをファイルで用意しておけば、同じような処理を何度も実行する際に、データを繰り返し打ち込む必要がなく便利である。この機能があれば、必ず大量の指定を入力しないと動作しないGUIアプリケーションよりも、コンソール・アプリケーションの方が便利に利用できる場合もあるだろう。
さて、入力の次は標準出力のリダイレクトを試してみよう。出力を切り替えるときには、「<」記号の代りに「>」記号を使用するだけで、入力と同様である。実際に使ってみた例は以下のとおりである。
リダイレクトにより標準入力と標準出力を使用した例 | ||||||||||||
|
「Sample004n >c:\result.txt」と入力した後は、「4、Enter、5、Enter」と入力している。次のtypeコマンドで、確かに結果がファイルに出力されていることが確認できる。また、後半は、標準入力と標準出力の両方を指定したケースを示している。膨大なデータを入力して出力するプログラムを実行する場合でも、このように使えば、(処理時間の長さを除けば)データの膨大さを意識せずに操作することができる。
INDEX | ||
連載 プロフェッショナルVB.NETプログラミング | ||
第22回 コンソール・アプリケーションの開発と活用(後編) | ||
1.コンソール・アプリケーションと入出力 | ||
2.パイプの活用 | ||
3.スケジュールして無人実行 | ||
「プロフェッショナルVB.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|