• 検索結果がありません。

Fortran 4 [ IFによる分岐] 授業過去資料 FUNO Fortran 5

N/A
N/A
Protected

Academic year: 2018

シェア "Fortran 4 [ IFによる分岐] 授業過去資料 FUNO Fortran 5"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)

FORTRAN 4

IF

非常勤講師 宇 史睦

(2)

前回 課題 回答 解

半旬 計算方法 講師推奨ver 他方法

計算 場合 複数 方法

(3)

0 グラ 違い&一部抜粋'

Do ii = 1, 3

k = (ii – 1 ) * 5 sum = 0.0

j = 0

Do i = 1 + k, 5 + k

sum = sum + tmp(i) j = j + 1

End do

j2 = REAL(j) ave = sum / j2 End do

Do i = 1, 60, 5 sum = 0.0

j = 0 do k = 0, 4

sum = sum + tmp(i+k) j = j + 1

End do

j2 = REAL(j) ave = sum / j2 End do

今回 場合 大差 い!

選択

(4)

ii 特定 半旬 規定

Do ii = 1, 3

k = (ii – 1 ) * 5 sum = 0.0

j = 0

Do i = 1 + k, 5 + k

sum = sum + tmp(i) j = j + 1

End do

j2 = REAL(j) ave = sum / j2 End do

例えば

10半旬~12半旬 計算 い場合

ii

Do ii = 10, 12

必要 計算 可能

理解

グラ

変数k 一目

(5)

計算 い日付& 60 'さえ変え ば OK

Do i = 1, 60, 5 sum = 0.0

j = 0 do k = 0, 4

sum = sum + tmp(i+k) j = j + 1

End do

j2 = REAL(j) ave = sum / j2 End do

大 計算 場合 便利

Do i = 1, 60, 5

60さえ変え

簡単 計算区間 変更

グラ

グラ 理解 変数k 一目

(6)

そ 他 回答

k = 0

Do i = 1, 12 sum = 0.0 j = 0 do n = 1, 5

sum = sum + tmp(k) j = j + 1

k = k + 1 End do

j2 = REAL(j) ave = sum / j2 End do

Do i = 1, 12 sum = 0.0 j = 0 do k = 1, 5

read(1,*)imn, idy, tmp sum = sum + tmp

j = j + 1 End do

j2 = REAL(j) ave = sum / j2 End do

K 全体 Loop ウン 配列 使用 計算 方法

(7)

1 2 い コ ン

途中 半旬 計算 面倒 い

パッ 見 う 計算 い わ い

& ウン 多用'

前回習 二 応用 ○

結果的 OK & 作成 OK

計算 セス い い 何番目

込 計算 い 断 時間 必要

途中 半旬 計算 面倒 い

結果 考え 結果 ば良い 綺麗

や汎用性 高い グラ OK. /~2

方法 計算 セス 理解 ば良い

(8)

前回 課題 calc_ave.f90

使用 FORTRAN 機能 以

• implicit none

変数 宣言 配列&Dimension 宣言

• OPEN, READ, WRITE

• Do &一部

• Do 配列 活用

ukushu.csv

全気温 & 均 最高 最低' 均値 計算 う

復習/

教員 作成

以降 スライ

(9)

配列 組 方 可能

込 変数 そ 配列 使用

容易 間違わ

必要 日 取 出

Integer :: day

real,dimension(31) :: tmp

OPEN ,FILE= ./test.csv , “TATU“= old DO i = 1, 28

read(1,*) day, tmp(day) END DO

CLOSE(1)

test.csv

Day, temperature 1, 4.7 2, 5.6 3, 7.0 4, 0.5 5, -0.4

28, 9.1

講師 一緒 作成

(10)

本日 話題

IF 場合

(11)

IF

条件文 処理 岐さ 機能

IF 基本的

IF 開始 条件文 i k

IF 処理

いいえ

変数i 変数j

処理A

処理B

ELSE or ELSE IF IF(条件文)THEN

処理A ELSE

処理B END IF

IF(条件文1)THEN 処理A

ELSE IF(条件文2)THEN END IF

if ( data > 0.0 ) then write(*,*) data

具体例

(12)

IF 利用 ==

特定条件 一致 場合 指示 処理 行う

一致 い場合 処理 行う 可能&ELSE IF文'

気象 利用 使用 処理

処理

不明 自動

(13)

IF 条件文&場合 等'

IF( 条件文 ) then

文法

条件文

複数条件

:; イコ

<; イコ

;; イコ &等号

-; ノッ イコ

.and.

.or.

IF( r <= s ) THEN 処理A

END IF

IF( r <= s .and. r >= 0.0) THEN 処理A

END IF

(14)

IF 使 i j 比較

sample1.f90

PROGRAM sample implicit none INTEGER :: i, j

WRITE(0,*)"---- CASE 1 ---" i = 1

j = 2

IF (i < j ) THEN

W‘ITE ,* CA“E . ", i, j END IF

WRITE(0,*)"---- CASE 2 ---" i = 3

j = 2

IF (i < j ) THEN

W‘ITE ,* CA“E . ", i, j ELSE

W‘ITE ,* CA“E . ",i, j END IF

END PROGRAM sample

CASE 1

値: i = 1 j = 2 条件: i j 小さい 結果: YES

WRITE 実行さ END IF IF文終了' CASE 2

値: i = 3 j = 2 条件: i j 小さい 結果: NO

ELSE

2 WRITE 実行さ

END IF IF文終了'

(15)

色々条件 変え 結果 見 う

• sample1.f90 CASE1, CASE 2 条件 変え

思 通 挙動 示 確認 う

1. CASE: i;0 j;.

条件式 i j 場合

2. CASE: i;0 j;0

条件式 i ;; j 場合

3. CASE2 i = 2, j = 0

条件式 i j i <; .

i > j .and. i == 0

(16)

簡略化 IF 文 使い方

IF 基本的 文法

処理 1行 書 場合 簡略化

基本的 文法

IF& 条件文' then 処理A

ELSE

処理B END IF

簡略化

IF(条件文' 処理A

Sample1.f90 CASE1 IF 1 書い

(17)

人 独自 や う

い場合 講師 明 聞

-999.9 以外 画面出力

配布 sample_data.csv 3列目 -999.9 &観測

測時 使用さ 値' 画面

出力 加え IF 使用

出力 &出席点:提出'

注意点:実数 変数 -999.9 場合 -999.90000000001 いう小さ 場合 場合 IF

• CHECK POINT!!

注意

何回繰 い=

 2列目 実数data 変数 代入 場合 IF

う記述 if( date ??? then

課題/

(18)

う う 計算

う う 定義

1. 西暦 4

2. 西暦 100

3. 西暦 400

1900 2016 計算 何回

う う あ ウン 2 IF 作成

い'

=> 1900 2000 29 課題0

関数 MOD&引数, 値'

例' MOD(10,3 MOD(10,2 → 0

講師 ンス ション 行う 最初

考え 作成 [20 開始]

(19)

補足: IOSTAT EXIT 関数

READ ション: iostat

READ 正常 ば:.

正常 混 場合:/以

終え 場合:-/

返 EXIT関数

DO 実行さ 回数 関係

1 END DO

& 繰 返 回数 足

強制的 DO文 終わ '

(20)

IOSTAT EXIT 挙動

integer :: day, eof real :: tmp

OPEN(1, FILE='../data/test.csv',STATUS="old")

DO

read(1, *,IOSTAT=eof )day, tmp

WRITE(0,"(I3,F6.1,I3)")day,tmp, eof if( eof < 0 )exit

END DO CLOSE(1)

sample2.f90 EOF 出力さ

(21)

Iostat, exit 利用 便利

個数 不明 計算条件

Do 回数 指定

&例えば 複数ファイ 一気 場合'

OK!

DO ifile = 1, 2

if( ifile == 1 ) fname = ../data/dy_ 5_ .dat if( ifile == 2 ) fname = ../data/dy_ 5_ .dat OPEN(1, FILE = fname, “TATU“= old

DO

READ END DO CLOSE(/' END DO

(22)

IF 利用 複数ファイ

• OPEN DO Loop ファイ 変え

複数ファイ 込 行う

使用 ファイ 気温

変数 格納

– REAL,DIMENSION(2,31) :: tmp j = 1

Do

READ(1,*,IOSTAT = i) data(ifile,j) IF( j < 0 ) exit

j = j + 1 END DO

課題0

途中 行う 箇所 自身

作成 課題フ 提出

参照

関連したドキュメント

宮城県 青森県 群馬県 千葉県 京都府 和歌山県 佐賀県 福島県 富山県 京都府 奈良県 佐賀県.. 福島県 秋田県 埼玉県 東京都 大阪府 徳島県

ア詩が好きだから。イ表現のよさが 授業によってわかってくるから。ウ授

 米国では、審査経過が内在的証拠としてクレーム解釈の原則的参酌資料と される。このようにして利用される資料がその後均等論の検討段階で再度利 5  Festo Corp v.

Companies ignore stakeholders at their peril – companies that do not earn this trust will find it harder and harder to attract customers and talent, especially as young

(⻄廣政府委員)先般、洋上防空研究ということで、護衛隊群として対

工場設備の計測装置(燃料ガス発熱量計)と表示装置(新たに設置した燃料ガス 発熱量計)における燃料ガス発熱量を比較した結果を図 4-2-1-5 に示す。図

小学校 中学校 同学年の児童で編制する学級 40人 40人 複式学級(2個学年) 16人

スライド P.12 添付資料1 補足資料1.. 4 審査会合における指摘事項..