Fortran90プログラミング
Fortran95対応 (および FORALL文)
1998.4 初版 /2000.1 FORALL文追加
人間・環境学研究科 冨田博之 MAILTO: tomita.hiroyuki.28m{@}st.kyoto-u.ac.jp 学外からアクセスの場合,HTMLファイルをダウンロードしてご利用ください。(ZIP File)
このノートの補充版は,培風館 から同名の教科書として発行されています。(1999年2月)
<目 次> 1. プログラムの基本構成 細目 2. 簡単な計算 細目 3. プログラムの流れを変える 細目 4. データの型 細目 5. 繰り返しと出力の書式 細目 6. 配列データ 細目 7. 文字データとファイル入出力 細目 8. 副プログラム 細目 9. 構造型,ポインタ,モジュール 細目 付録 細目 ⇒例題一覧追補: FORALL文,FORALL構文 解説
(細 目) 1. プログラムの基本構成 1.1. 使用文字 1.2. コーディング形式 1.2.1. 固定形式 1.2.2. 自由形式 [90] 1.2.3. ファイル識別名 1.3. プログラムの構成 1.3.1. プログラム単位 1.3.2. 文の順序 1.3.3. 英字名 1.3.4. 文番号とラベル 1.3.5. 定数 2. 簡単な計算 2.1. 算術演算 2.1.1. 基本的な文 2.1.2. 文字列の出力 3. プログラムの流れを変える 3.1. 論理IF文 3.1.1. 関係演算子 3.1.2. 論理演算子 3.2. ブロックIF構文 3.2.1. ブロックIF構文のいろいろ 3.2.2. 組込み関数 3.3. 多数の分岐 [90] 4. データの型 4.1. 実数型と整数型 4.1.1. 基本的な型宣言 4.1.2. 暗黙の型宣言 4.1.3. 型の変換 4.2. 文字型と論理型 4.3. 定数名(PARAMETER) 4.4. 複素数型および高精度型 4.4.1. 複素数 4.4.2. 高精度実数 4.4.3. 精度の桁数指定 [90] 4.5. 異なる型の混合演算および代入 4.6. 変数の種別と属性 [90] 5. 繰り返しと出力の書式 5.1. 決まった回数の単純な繰り返し 5.1.1. 多重ループ 5.2. 出力の書式指定 5.2.1. 書式の構成要素 5.3. 途中で抜ける 5.3.1. EXIT文とCYCLE文 [90] 5.3.2. DO WHILE文 [90] 5.4. DO型出力リスト 6. 配列データ 6.1. 1次元配列 6.1.1. 配列の宣言 6.2. 配列の演算 6.2.1. 部分配列と添字配列 6.2.2. 配列代入文 6.2.3. DO型定数 6.2.4. 初期値設定 6.2.5. 配列演算式 [90] 6.2.6. 配列の入出力 6.3. 配列の動的割付け [90] 6.4. 多次元配列 6.4.1. 宣言 6.4.2. 多次元配列要素の引用 6.4.3. 多次元配列要素の順序 6.4.4. 多次元配列の定数代入文 6.4.5. WHERE文 [90] 6.5. 配列関数 [(付)セルオートマトン] 7. 文字データとファイル入出力 7.1. 文字デ−タ 7.1.1. 文字データ宣言 7.1.2. 文字部分列 7.1.3. 代入規則 7.1.4. 文字列の結合 7.1.5. 文字列の大小比較 7.1.6. 文字関数 7.2. ファイル入出力 7.2.1. 入出力文 7.2.2. 入出力ファイルの割当て 7.2.3. その他の入出力関連文 8. 副プログラム 8.1. サブルーチン 8.1.1. 実引数について 8.1.2. 変数の有効範囲 8.1.3. 引数の入出力特性 [90] 8.2. 外部関数 8.2.1. 関数副プログラム 8.2.2. EXTERNAL宣言 8.2.3. 文関数 8.3. 内部手続き [90] 8.3.1. 内部手続きに特有の約束 8.4. 配列の扱い 8.4.1. 整合配列(形状明示仮配列)[(付)乱数の発生] 8.4.2. 形状引継ぎ配列(INTERFACE) [90] 8.4.3. 内部手続き中の配列 [90] 8.5. キーワード引数とOPTIONAL属性 [90] 8.6. 再帰的呼び出し [90] 9. 構造型,ポインタ,モジュール [90] 9.1. 構造型 9.1.1. 構造型の定義と宣言 9.1.2. 構造型の演算と代入 9.2. ポインタ 9.2.1. ポインタ変数 9.2.2. ポインタ演算 9.2.3. ポインタ配列 9.2.4. ALLOCATE文 9.2.5. 結合状態の調査と解除 9.2.6. ポインタ引数 9.3. モジュール 9.3.1. 型宣言の共通化 9.3.2. 手続きモジュール 9.3.3. ユーザ定義演算子 9.3.4. ユーザ定義代入文 付録 A プログラム例:πの任意桁の計算 B 数値型組込み関数の主なもの C 主な編集記述子 D 説明を省いた主なキーワード一覧 (例題一覧) 2. 簡単な計算 2_1「3種類の平均(プログラムの基本形)」 2_2「円錐の体積と表面積」 2_3「整数ベキ乗の出力」 2_4「関数の計算」 3. プログラムの流れを変える 3_1「試験の合格者数」 3_2「平方根を出力」 3_3「うるう年?」 3_4「三角パルス波」 3_5「優・良・可・不可を判断」 4. データの型 4_1「太陽年を時・分・秒に換算」 4_2「複素数と三角関数」 4_3「倍精度の三角関数値」 4_4「西暦1年1月1日から何日目?」 5. 繰り返し 5_1「1から100までの2乗の和」 5_2「九九の練習」 5_3「三角関数表を作成」 5_4「平均値と標準偏差」 5_5「最大公約数(互除法)」 5_6「100までの素数」 5_7「繰り返し法による平方根の計算」 6. 配列データ 6_1「整数を大きさ順に並べ替え」 6_2「配列と逆順配列の積の配列(配列演算式)」 6_3「パスカルの三角形」 6_4「素数(エラトステネスのふるい法)」 6_5「自然対数の底(Napier数)を任意の桁まで」 6_6「行列の積の計算」 6_7「配列の負の要素だけ0に変える」 6_8「エラトステネス法の改良版」 6_9「投票者の変節モデル」 7. 文字データとファイル入出力 7_1「整数の16進数表現」 7_2「単語を置換した文字列」 7_3「単語の実際の長さ」 7_4「単語を辞書順に並べ替え(バブル法)」 7_5「アルファベット文字の使用頻度」 7_6「文字コード表のファイル作成」 8. 副プログラム 8_1「三角トレード(サブルーチンの原型)」 8_2「成績分布をヒストグラムに」 8_3「16進数表現を求める関数」 8_4「今日は何曜日?(万年暦)」 8_5「抽選を行うサブルーチン」 8_6「正方行列の跡(トレース)を与える関数」 8_7「最大値を要素とする配列を返す」 8_8「3次元距離または4次元時空距離を返す」 8_9「ルジャンドル多項式をグラフに描く」 8_10「整数の分割法」 8_11「ハノイの塔の手順」 9. 構造型,ポインタ,モジュール 9_1「ベクトルのスカラ積とベクトル積」 9_2「科目成績表の構造型データの作成」 9_3「配列の部分配列=『窓』を指すポインタ」 9_4「成績リスト構造を生成」 9_5「1次元配列のサイクリック変換」 9_6「可変長英文の構造型データ」 9_7「ベクトル演算を定義」 9_8「ベクトル・配列の相互代入文を定義」 付録「πの任意桁の計算」 pi.f90 ⇒目次先頭へ
(利用にあたっての注意) ⇒目次先頭へ
1) 文法用語については,必ずしもJIS基準に従っていません。理由は,変更に気付かず 見落としたものがあることと,基準語が初心者にとって必ずしもわかりやすいとは 限らないことによります。 2) プログラム例では,学習の効率を考慮して,原則として 文法で約束された キーワード は 大文字 ユーザが定義した 変数名 などは 小文字 で表記されていますが,実際には どちらで書いてもかまいません。 3) 例題プログラムを「カット&ペースト」で複写した場合には,実行を保証できません。 理由:整形のとき全角文字の空白や,「,」「’」「”」が入り込んだ可能性が あるからです。 さらにHTML化のときに,大小記号<と>が特殊記号化されている可能性もあります。 プログラム例の前にあるリンク [ex_a_x.f90]などを「右クリック」すれば,実行を 確認したソースプログラムをダウンロードできます。 (注)ダウンロードされるソースリストは,画面のものから少し修正されています。 4) 学習・教育目的の場合は,いかなる形態でも自由にご利用いただいてかまいません。 授業に利用される場合は,そちらでWEBページを作成していただく方が便利でしょう。 ⇒ZIPファイル・ダウンロード 注:そちらでもZIPファイルを提供される場合には,このリンクを生かすために ZIPというサブフォルダに,ダウンロードしたZIPファイルを保存してください。 5) 誤りを発見された場合は,ご一報いただければ幸いです。 MAILTO: h.tomita at ht2.ecs.kyoto-u.ac.jp (Replace 'at' by usual '@', please!)〒606-8501 京都市左京区吉田二本松町 京都大学大学院人間・環境学研究科
冨田博之 (Tomita Hiroyuki) ※ このノートを補充した内容は,培風館より教科書として発行されました(1999/2)。 なお,このノートの作成にあたっては,培風館「FORTRAN77プログラミング」 (川崎,冨田,八村,藤井,広田 著)の構成を参考にしました。