プログラムが外部とやり取りするための基本的な方法、標準入出力について学びましょう。📝
ユーザーからのデータを受け取ったり、計算結果を表示したりするために不可欠な機能です。
Fortranでは主に READ
文と WRITE
文を使用します。
標準入力(キーボードからの読み込み) – READ文
プログラム実行中にユーザーにキーボードから値を入力してもらうには READ
文を使います。
最も基本的な形式は、標準入力(通常はキーボード)から、書式を指定せずに(リスト形式で)読み込む方法です。
基本的な構文:
READ(*, *) variable1, variable2, ...
- 最初の
*
は、入出力装置(ユニット)番号を指定します。*
は標準入力装置(通常はキーボード)を意味します。 - 二番目の
*
は、書式を指定します。*
はリスト形式(自由書式)を意味し、入力されたデータの型に合わせて適切に読み込みます。 variable1, variable2, ...
には、読み込んだ値を格納する変数をカンマ区切りで指定します。
例: 整数と実数を読み込む
program read_example
implicit none
integer :: age
real :: height
character(len=20) :: name
print *, '名前を入力してください:'
read(*, *) name ! 文字列を読み込む
print *, '年齢を入力してください:'
read(*, *) age ! 整数を読み込む
print *, '身長(m)を入力してください:'
read(*, *) height ! 実数を読み込む
print *, '--- 入力された情報 ---'
print *, '名前:', name
print *, '年齢:', age
print *, '身長:', height, 'm'
end program read_example
実行時の注意点:
read(*, *)
文が実行されると、プログラムはユーザーの入力を待ちます。コンソールに値を入力し、Enterキーを押してください。
複数の変数を一度に読み込む場合(例: read(*,*) a, b
)、入力する値はスペースやカンマで区切ります。
文字型変数(CHARACTER
)をリスト形式で読み込む場合、入力する文字列は通常、引用符('
または "
)で囲む必要があります(処理系による場合があります)。
標準出力(画面への書き込み) – WRITE文
計算結果やメッセージなどを画面に表示するには WRITE
文を使います。
標準出力(通常は画面)へ、書式を指定せずに(リスト形式で)書き出すのが最も簡単な方法です。
基本的な構文:
WRITE(*, *) output_item1, output_item2, ...
- 最初の
*
は、入出力装置(ユニット)番号を指定します。*
は標準出力装置(通常は画面)を意味します。 - 二番目の
*
は、書式を指定します。*
はリスト形式(自由書式)を意味し、データの型に合わせて適切に表示します。 output_item1, output_item2, ...
には、表示したい変数、定数、または式をカンマ区切りで指定します。文字列は引用符('
または"
)で囲みます。
例: 様々なデータ型を表示する
program write_example
implicit none
integer :: count = 10
real :: pi = 3.14159
character(len=15) :: message = 'Hello, Fortran!'
logical :: is_valid = .true.
write(*, *) '--- 計算結果 ---'
write(*, *) 'カウント:', count
write(*, *) '円周率 (概算):', pi
write(*, *) message
write(*, *) '有効フラグ:', is_valid ! 論理値は通常 T や F で表示されます
! 式の結果も直接出力できます
write(*, *) 'カウントの2倍:', count * 2
end program write_example
PRINT文について
標準出力へのリスト形式の書き出しには、より簡単な PRINT
文もよく使われます。
PRINT *, ...
は WRITE(*, *) ...
とほぼ同じ意味です。👍
PRINT *, 'これは PRINT 文による出力です。'
PRINT *, '変数も出力できます:', count
コードを簡潔に書けるため、特にデバッグ時や簡単な表示によく用いられます。
まとめ
標準入出力は、プログラムとユーザーが対話するための基本です。
文 | 主な目的 | 構文例 (リスト形式) | ユニット指定 | 書式指定 |
---|---|---|---|---|
READ | 標準入力(キーボード)からの読み込み | READ(*, *) var1, var2 | * (標準入力) | * (リスト形式) |
WRITE | 標準出力(画面)への書き込み | WRITE(*, *) 'Text', var1 | * (標準出力) | * (リスト形式) |
PRINT | 標準出力(画面)への書き込み (簡易版) | PRINT *, 'Text', var1 | (暗黙的に標準出力) | * (リスト形式) |
今回は最も基本的なリスト形式(*
)での入出力を見ました。
次のステップでは、ファイル操作や、より細かく表示形式を指定する「フォーマット指定」について学びます。🔢
コメント