[Fortranのはじめ方] Part16: 標準入出力(READ, WRITE)

Fortran

プログラムが外部とやり取りするための基本的な方法、標準入出力について学びましょう。📝 ユーザーからのデータを受け取ったり、計算結果を表示したりするために不可欠な機能です。 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 *, ...WRITE(*, *) ... とほぼ同じ意味です。👍

PRINT *, 'これは PRINT 文による出力です。'
PRINT *, '変数も出力できます:', count

コードを簡潔に書けるため、特にデバッグ時や簡単な表示によく用いられます。

まとめ

標準入出力は、プログラムとユーザーが対話するための基本です。

主な目的構文例 (リスト形式)ユニット指定書式指定
READ標準入力(キーボード)からの読み込みREAD(*, *) var1, var2* (標準入力)* (リスト形式)
WRITE標準出力(画面)への書き込みWRITE(*, *) 'Text', var1* (標準出力)* (リスト形式)
PRINT標準出力(画面)への書き込み (簡易版)PRINT *, 'Text', var1(暗黙的に標準出力)* (リスト形式)

今回は最も基本的なリスト形式(*)での入出力を見ました。 次のステップでは、ファイル操作や、より細かく表示形式を指定する「フォーマット指定」について学びます。🔢

コメント

タイトルとURLをコピーしました