マテリアルシミュレーション I 後半 第 2 回 (6/12) - フローチャート、型宣言、入出力、四則演算 今日の目標 フローチャートの書き方、変数の宣言、入出力の方法と性質、四則演算の使い 方を理解する。 5. フローチャート(流れ図) フローチャートは、プログラムを設計・分析する際に必須である。他の人にも一見 して理解できるように書くのが望ましい。記号が異なると意味も異なってくるので注 意する(自分勝手に記号の形を変えないこと!)。一つの文章にまとめられるものは、な るべく一つの箱に入れて、図を見やすくした方がよい。 図 2-1 フローチャートに用いる主な記号. 13 記述方法の例 1 端子 処理 記述方法の例 2 NSUM に 0 を代入 データ 判断 繰り返すかどう かの条件 初期値 繰り返し処理 繰り返し処理 戻ってきたとき に変更する条件 繰り返し処理の 書き方が異なる 図 2-2 フローチャートの例・その 1 およびその 2:「1+2+3+・・・+N」を計算するプロ グラム. 左右では繰り返し処理の部分の書き方が異なる. 14 [主プログラム] [副プログラム] 定義済み処理 定義の中身を別 に分けて書く 図 2-3 フローチャートの例・その 3: 配列の数値の加算と乗算を行うプログラム(詳 細は第 5 回). 主プログラムの一部を抜き出し副プログラム(サブルーチン)化. 6. 変数名 「6 字以内の英数字」で、「最初」の文字が「英字」であるもの。 例 NUMBER、 NUM1、 NUM2 7. 型宣言 「変数の宣言」は「プログラムの最初」で行う。以下のような「型」がある。 (1) 「文字型」変数の宣言 CHARACTER NAME1*10, NAME2*10 CHARACTER*10 NAME1, NAME2 「*10」は文字列の長さを 10 個に指定 「書かないと 1 個」に指定される 例:ABC ‘ABC DEF’ (2) 「整数型」変数の宣言 INTEGER I, J, K, L, M 10 進数で小数点のないもの: -2147483648 ~ 2147483647 の範囲 例:5 -1 123 (3) 「実数型 (単精度浮動小数)」変数の宣言 REAL O, P, Q, R あるいは、REAL*4 有効数字 7 桁以内の実数 15 O, P, Q, R 指数部:IBM[大型機]:10-78 ~ 1075 IEEE[パソコン・ワークステーション]:10-38 ~ 1038 例:5.0 17. -.003 5.0E3 5E+3 5.0×103 5.0E-7 5×103 5E-7 5.0×10-7 5×10-7 (4) 「倍精度型 (有効数字 16 桁)」変数の宣言 DOUBLE PRECISION X, Z あるいは、REAL*8 X, Z 有効数字 16 桁以内の実数 指数部:IBM[大型機]:10-78 ~ 1075 IEEE[パソコン・ワークステーション]:10-308 ~ 10308 例:3.1415926535897D+0 18.9D05 88D-3 ×100 (5) 「複素数型」変数の宣言 COMPLEX X, Z 例:(5.9, 3.76) ×105 ×10-3 (3.0E8, 12.5) 5.9 + i 3.76 暗黙の型宣言 一般には型宣言文により変数の数値の型を宣言するが、次のような「暗黙の約 束」に従う場合には型宣言文は用いる必要はない。 変数名の頭文字が I、J、K、L、M、N であるときは整変数 それ以外の英文字であるときには実変数: A ~ H、O ~ Z 8. 入出力文と FORMAT 文 入力には「READ」、出力には「PRINT」あるいは「WRITE」を用いる。 (1) 一般的な記述方法 READ ○, NUMBER 「○」の形式で変数 NUMBER に読み込み 「*」ならば、デフォルトの書式 PRINT ○, NUMBER 「○」の形式で変数 NUMBER を書き出し 16 READ (*,○) NUMBER キーボードから「○」の形式で変数 NUMBER に 読み込み 入力元の指定:「*」あるいは「5」ならばキーボード WRITE (*,○) NUMBER ディスプレイへ「○」の形式で変数 NUMBER を 書き出し 出力先の指定:「*」あるいは「6」ならばディスプレイ ・○:書式識別子 「○」には、「*」か「数値 (文番号)」が入る。 「*」の場合: 処理系自身で入出力の編集を行う。 「文番号」の場合: 次の「FORMAT 文」と組み合わせて使用する。 (2) デフォルト「*」の書式を用いた入出力文 処理系自身で入出力の編集を行う。 自分が思っているように変数に文字・数値が入出力できるかはチェックが必要。 (3)の FORMAT 文で確実に指定するほうがよい場合も多い。[演習課題参照] 例 (デフォルトの書式:「*」の利用) READ *, I デフォルトの書式で変数 I に読み込み PRINT *, I デフォルトの書式で変数 I の中身を書き出し READ (*, *) I キーボードからデフォルトの書式で変数 I に読み込み WRITE (*, *) I ディスプレイへデフォルトの書式で変数 I の中身を書き 出し READ *, I, J デフォルトの書式で変数 I, J に読み込み キーボードから 2 変数 I, J への数値入力方法: 123 45↵ または 123,45↵ または 123↵45↵ (3) FORMAT 文 「文番号」の行に記述した「FORMAT 文」の書式で入出力を行う。 例 100 READ 100, I FORMAT (I3) 文番号 100 の形式で変数 I に読み込み 形式「I3」 300 PRINT 300, I FORMAT (I5) 文番号 300 の形式で変数 I を出力 形式「I5」 文番号 編集記述子:「I5」は「5 桁の整数」を意味する。 17 (4) 編集記述子 変数の型や桁数によって表現が異なる。 4-1) 整数型データに対する編集記述子:Iw [w は桁数] 「I3」ならば「3 桁の整数」。 ただし、「桁数」に「符号(+や-)が含まれる」ので注意する。 ・入力例:キーボードからの入力 与えるデータ 編集記述子 内部での値 I5 +1234 ■1234 I5 0 ■■■■0 -1234 I5 -1234 I5 1234■ 注意 スペース 計算機・コンパイラによっては +12340 となる場合有り ・出力例:モニター上への出力 内部での値 編集記述子 表示 +1234 I5 ■1234 0 I5 ■■■■0 -1234 I5 -1234 -1234 I4 表示できない 「****」のようになる。 2 個以上の変数を入出力する場合の FORMAT 文[演習 3 参照] 300 PRINT 300, I, J FORMAT (I5, ’■’, I5) 「I」の中身が「5382」、J の中身が「23054」とすると、「■5382■23504」と出力 される。FORMAT 文の「I5」間にあるアポストロフィ「’」でくくったスペース 「■」はそのまま出力される。文字やスペースをそのまま出力したい場合はアポ ストロフィでくくる。 「’■’」がないと・・・ PRINT 300, I, J 300 FORMAT (I5, I5) [FORMAT (2I5)と書くこともできる] 「■538223504」のように I と J の値がつながって出力されてしまう。 J の中身が「230」であれば、「■5382■■230」となり、I と J を区別できる。 18 H 編集記述子[演習 4 および 5 参照] 「’■’」を以下のように書いても同様な機能となる。 300 PRINT 300, I, J FORMAT (I5, 1H■, I5) [’■’と 1H■は等価] nH と書くと(n は数字)、H 以降に書いた n 文字をそのまま出力できる。 例:「’ABCDE’」と「5HABCDE」は等価で、ともに文字列「ABCDE」を出力。 4-2) 実数型データに対する編集記述子 (a) F 編集記述子:Fw.d [w は全桁数: 符号・小数点を含む、d は小数点以下の桁数] 「F7.2」ならば「全 7 桁で小数点以下が 2 桁の実数」。 ・入力例 与えるデータ 編集記述子 内部での値 F7.2 ■123.45 +0.12345×103 -123.45 F7.2 -0.12345×103 ・出力例 内部での値 +0.12345×103 -0.12345×103 -0.12345×103 編集記述子 F6.1 F6.1 F6.2 表示 ■123.4 -123.4 表示できない -123.45 (全 7 桁) (b) E 編集記述子:Ew.d [w は全桁数:符号・小数点・E を含む、d は小数点以下の桁数] 有効数字の桁数で浮動小数点形式で表現 「E7.2」ならば「全桁が 7 桁で小数点以下が 2 桁の単精度浮動小数」。 ・入力例 与えるデータ ■123.45 0.1234E+03 -0.123E-10 ■0.12E+1■ 編集記述子 E7.2 E10.4 E10.3 E9.2 内部での値 +0.12345×103 +0.1234×103 -0.123×10-10 注意 19 計算機・コンパイラによっては 0.12×1010 となる場合有り ・出力例 内部での値 +0.12345×103 -0.12345×10-3 -0.12345×10-3 -0.12345×10-3 編集記述子 E12.5 E12.5 E12.6 E12.7 表示 ■0.12345E+03 -0.12345E-03 -.123450E-03 表示できない -.1234500E-03 (13 桁) (c) D 編集記述子:Dw.d [w は全桁数:符号・小数点・E を含む、d は小数点以下の桁数] 倍精度浮動小数の場合に用いる。 「D7.2」ならば「全桁が 7 桁で小数点以下が 2 桁の倍精度浮動小数」。 9. 演算子と演算の優先順位 演算子 演算 優先順位 ** / * + ベキ乗 除算 乗算 減算 加算 1 (最優先) 2 2 3 3 ( 3**5 = 35 ) (1) FORTRAN プログラム中での記述方法 例: 変数 A を変数 B と変数 C の和にしたい場合 A=B+C 「=」は右辺の結果を左辺の変数に「代入」することを意味する。 (2) 演算の優先順位 以下のルールがある。 (a) 乗算・除算では、左から右に評価される。 例 A=B*C/D*E は、 A=((B*C)/D)*E に等しい。 (b) 加算と減算は、左から右に評価される. (c) ベキ乗が連続する場合は、右から左に評価される。 例 L=I**J**K は、L=I**(J**K) と同じ。 20 K J I コンパイル追加事項 コンパイルにより作成される実行ファイル名を指定するコマンド g95 FORTRAN ファイル名 -o 実行ファイル名 例 g95 prog8.f -o prog8.out 演習 2-1:整数の入出力 整数の入出力を行う以下のプログラム prog2.f を作成せよ。 「1234」、 「-1234」を入力した場合、デフォルト「*」、 「I5」、 「I4」の書式の違いが 出力にどのように影響するかを確認せよ。 基本的に大文字と小文字の区別はない。 図 2-4 整数の入出力を行うプログラム prog2.f. 演習 2-2:実数の入出力 1 実数の入出力を行うプログラム prog3.f を作成し、入出力を確認せよ[123.45 や -123.45 など]。 図 2-5 実数の入出力を行うプログラム prog3.f. 21 演習 2-3:実数の入出力 2 π=3.1415926535897932 を d24.16 と d24.12 で出力するプログラム prog4.f を作成し、 d24.16 と d24.12 で出力した結果の違いを確認せよ。 変数 a に 3.1415926535897932d0 を代入 スペースキーを押し、一文字分だけ空ける。 図 2-6 π=3.1415926535897932 を d24.16 と d24.12 で出力するプログラム prog4.f. 演習 2-4:実数の入出力 3 次のプログラム prog5.f を作成し、出力結果を確認せよ。[倍精度実数の指数部の 「出力」結果において、指数部の表現は「E」となることも確認せよ。] H 編集記述子 ‘■’ = 1H■ 他の例:‘ABCDE’ = 5HABCDE nH と書くと(n は数字)、H 以降に書 いた n 文字をそのまま出力できる。 図 2-7 A, B, C の値を出力するプログラム prog5.f. *演習 2-5(レポート課題):実数の入出力 4 次のプログラム prog6.f を作成し、出力結果を確認せよ。型宣言を行っていない変 数 A がどのように取り扱われているかについて簡潔に述べよ。また、単精度実数で宣 言した変数 D に関して、指数部を「D」で表現した数値を代入した結果がどのように 22 取り扱われているかについても簡潔に述べよ。 図 2-8 A, B, C, D の値を異なる書式で出力するプログラム prog6.f. *演習 2-6(レポート課題):四則演算 1 実数型の変数を 3 つ入力し、その平均値を計算・出力するプログラムのフローチ ャートを書け。なお、プログラム prog7.f は以下のように書ける。動作を確認せよ。 図 2-9 実数型の変数を 3 つ入力し、平均値を計算・出力するプログラム prog7.f. 23 *演習 2-7(レポート課題):四則演算 2 2 個の整数 M, N を入力し、和・差・積・商・余りを出力するプログラム prog8.f を作成せよ。入出力の形式はデフォルト「*」でよい。プログラムだけでなくフロー チャートも書くこと。 第 2 回レポート 演習 2-5、演習 2-6(フローチャートのみ)、演習 2-7 を提出すること 提出方法: PDF あ る い は Word フ ァ イ ル を 電 子 メ ー ル に 添 付 し て 「[email protected]」まで送付する。 件名:マテリアルシミュレーション I 後半第 2 回レポート ******(学籍番号) ****(名前) ファイル名:xxxxxx-2.pdf あるいは xxxxxx-2.doc xxxxxx: 学籍番号、-2: 第 2 回目の演習 メールアドレスを間違えないこと。 添付ファイルの 1 ページ目にタイトル「マテリアルシミュレー ション I 後半第 2 回レポート」、 「学籍番号」、 「氏名」を必ず記載 すること。 ファイルがきちんと添付できるか、自分のアドレス宛にメール を送るなどして、テストを行った後に上記アドレスに送ること。 添付ファイルは一つにまとめ、レポートとしての体裁を整える こと。なお、複数のファイルを添付した場合は未提出扱いとす る。フローチャートだけを紙で別途提出しないこと。 24
© Copyright 2024 ExpyDoc