初歩的な文法

現在改訂中です

はじめの一歩

画面へ文字を書く

プログラム例

program ex0
  print *,"Hello, world!"
end program ex0

ソースコードの作成

$ emacs -nw ex0.f90

emacsエディタの使用法に関しては、emacs早見表を参照してください。

コンパイル例

$ ifort ex0.f90 -o ex0 -traceback [Ent]

と入力する([Ent]の手前まで入力し、最後にEnterキーを押す).[Ent]はEnterキーを押すことを意味します.

実行例

$ ./ex0 [Ent]

Hello, world!

文字やデータを書き出すことを、「出力」ということが良くあります。

練習

画面に顔文字(^^)を出力するプログラムをつくってみよう.

1. プログラムの作成

前に使った,ex0.f90をコピーし,ファイル名をex00.f90に変更する.ファイル名には半角文字を使う.

$ cp ex0.f90 ex00.f90

1行目のHello, world!の部分を顔文字に変える.

たとえば、

  print *,"Hello, world!"

  print *,"(^^)"

に変える。

注意:文字は半角を使うのが基本.全角文字は基本的には使えない(一部例外あり)

ファイルを保存する

2. コンパイル

$ ifort ex00.f90 -o ex00 -traceback [Ent]

と入力する([Ent]の手前まで入力し、最後にEnterキーを押す).[Ent]はEnterキーを押すことを意味する.

3. 実行

手順

$ ./ex00 [Ent]

[Ent]の手前まで入力し、最後にEnterキーを押します.

以下のような顔文字が画面の表示されれば成功です。

(^^)

出来ましたか? 分からなかったら質問しましょう.

これ以降Enterキーを押す意味の[Ent]という記号は省略し、表記しませんので、ご注意ください。

四則演算と変数

計算機は名前の通り計算が得意です.ちょっとした計算をやってみてもらいましょう.下記のex01.f90は,2つの数字の四則演算(和,差,積,商)を計算するプログラムでです.

ex01.f90の解説

!
! !は注釈の記号で,!から行末まではコンパイルの際に無視されます.
! !をつかって,いろいろな説明書きをいれておくと便利です.
!
! このプログラムは2つの大きな数字同士の四則演算を行います.
!
a=1235.6789 !aという変数に数値を代入
b=9876.5432 !bという変数に数値を代入
!
! 変数の名前には,アルファベットの大文字(A-Z),小文字(a-z),数字(0-9),
! 下線(_)が使える.ただし,先頭はアルファベットでないといけない.
!
write(*,*)"a=",a !aの値を画面に表示
write(*,*)"b=",b !bの値を画面に表示
! "で文字列が囲まれている場合は,そのまま囲まれた箇所の文字列を表示.
! "a="ならば,a=と画面に表示される.囲まれていない場合,変数の値が表
! 示される.
! aの値が1235.6789ならば,1235.6789と表示される.コンマ(,)で区切ると
! 改行せず,そのまま続けて出力される.
!
c1=a+b ! a+bの計算結果をc1に代入
c2=a-b
c3=a*b   !掛け算には×ではなく,*(アスタリスク)を使います.
c4=a/b  !割り算には÷ではなく,/(スラッシュ)を使います.
write(*,*) !この場合空行が表示される.
write(*,*)"a+b=",c1 !c1の値を画面に表示
write(*,*)"a-b=",c2
write(*,*)"a*b=",c3
write(*,*)"a/b=",c4
stop
end

上記をex01.f90という名前で保存します。

コンパイル例

$ ifort ex01.f90 -o ex01 -traceback

実行例

$ ./ex01

a= 1235.6790

b= 1235.6790

a+b= 11112.222

a-b= -8640.8643

a*b= 12204236.

a/b= 0.12511250

変数

データを保存するためにコンピュータの中に用意された箱のようなものを「変数」といいます。数学でいう変数に近いものです。

変数にはいくつかの型があります.基本的なものとして以下の3種類の型があります.

整数型

例: 1, 1000, -10, 517

実数型

例: 157.125, -5001.0

文字型

例: abc, abc125

プログラムの先頭でどのような変数を使用するか宣言する(これから、こういう変数を使いますよ~と計算機に教えてやる)ことが望ましいとされています.Fortranでは変数の宣言を省略してもよいことになっていますが、よほど短いプログラム(50行以下)以外では、変数を宣言しないと、プログラムを作っている人間がわけがわからなくなるので、宣言したほうがよいでしょう。

変数の宣言は,プログラムの先頭部で以下のようにして行います.

integer :: i !整数型のiという変数を使用する.

real :: a,b !実数型のa,bという変数を使用する.

character :: char*100 ! 文字型のcharという変数を使用する(charに収納できる文字数は最大100文字と設定する).

Fortranでは,宣言なしに変数を使用することが許されている.

  • i,j,k,l,m,nで始まる変数は自動的に整数型と判別される
  • それ以外の文字で始まる変数は自動的に実数型と判別される

というルールがあります(暗黙の型宣言).暗黙の型宣言を使うことでプログラミングの労力を軽減できる場合もあるが,間違いが生じやすくなるので,特に長いプログラムでは使用を避けることが推奨されています.

入力

変数の値を代入するためだけに,毎回プログラムを書き変えるのは面倒です.実行時に変数の値を入力できるようにプログラムを書きかえてみましょう.

ex02.f90の解説

!
! このプログラムは,キーボードから入力された2つの数字の四則演算を行います.
!
! 使用する変数を宣言
real :: a,b
real :: c1,c2,c3,c4
write(*,*)"キーボードから入力された2つの数字の四則演算を行います."
write(*,*)"最初の数字を入力してください:"
read(*,*)a ! キーボードから入力された数字をaという変数に代入
write(*,*)"2番目の数字を入力してください:"
read(*,*)b ! キーボードから入力された数字をbという変数に代入
write(*,*) !この場合空行が表示される.
write(*,*)"a=",a !aの値を画面に表示
write(*,*)"b=",b !bの値を画面に表示
c1=a+b ! a+bの計算結果をc1に代入
c2=a-b
c3=a*b
c4=a/b
write(*,*) !この場合空行が表示される.
write(*,*)"a+b=",c1 !c1の値を画面に表示
write(*,*)"a-b=",c2
write(*,*)"a*b=",c3
write(*,*)"a/b=",c4
stop
end

コンパイル

$ ifort -o ex02 -traceback ex02.f90

実行例

$ ./ex02

キーボードから入力された2つの数字の四則演算を行います.

最初の数字を入力してください:

5 [Ent]

2番目の数字を入力してください:

3 [Ent]

a= 5.0000000

b= 3.0000000

a+b= 8.0000000

a-b= 2.0000000

a*b= 15.000000

a/b= 1.6666666

参考:0割り

ex02.exeを実行させて,2番目の数字に0を入力してみよう.次のような結果になるはずす.

$ ./ex02

キーボードから入力された2つの数字の四則演算を行います.

最初の数字を入力してください:

5

2番目の数字を入力してください:

0

a= 5.0000000

b= 0.0000000

a+b= 5.0000000

a-b= 5.0000000

a*b= 0.0000000

a/b= +Infinity

割 り算の結果が,+Infinityとなっている.数学では,0の割り算は定義されていないので,このようなことが起こらないように注意しよう.コンパイラ によってはエラーメッセージを表示して実行をとめてくれるものもあるが,そうでない場合,無意味な計算を延々と続けることになることもある.

練習:消費税の計算

キーボードから金額を入力し,5%の消費税がいくらになるか計算するプログラムを作ってみましょう.

手順

  • ex02.f90をコピーして,コピーしたファイルの名前をex021.f90と変える.ファイル名には半角文字を使う.
  • ex021.f90の内容を書き換える
  • コンパイル
    • $ ifort -o ex021 -traceback ex021.f90
  • 実行
    • $ ./ex021

ファイルからのデータの読み込み

あらかじめ計算に必要なデータを別のファイルに書いておいて,それを読み込みたい場合も往々にしてある.そのような方法について解説する.

まず,エディタをつかってex03.ascという名前で,下記のような内容のファイルを作成する.

ex03.ascの内容

5.

3.

プログラムは以下のex03.f90のようになる.

ex03.f90の解説

!
! このプログラムは,ファイルから読み込んだ2つの数字の四則演算を行います.
!
!ファイル名を記憶させるための変数を使うことを宣言する(計算機に知らせる)
character :: filename*60
! ファイル番号(機番)をしているための変数を宣言する
integer :: iunit
!ファイルを開く
iunit=10 !機番は10とする(0,5,6以外で100以下だったら何でも良い)
filename="ex03.asc"
open(iunit,file=filename, action="read")
! action='read'を入れておくと,間違って上書きしないですむ.
write(*,*)"以下の名前のファイルを開きました:"
write(*,*)filename
read(iunit,*)a ! 機番iunitのファイルから読み込んだ数字をaという変数に代入
read(iunit,*)b
write(*,*) !この場合空行が表示される.
write(*,*)"a=",a !aの値を画面に表示
write(*,*)"b=",b !bの値を画面に表示
c1=a+b ! a+bの計算結果をc1に代入
c2=a-b
c3=a*b
c4=a/b
write(*,*) !この場合空行が表示される.
write(*,*)"a+b=",c1 !c1の値を画面に表示
write(*,*)"a-b=",c2
write(*,*)"a*b=",c3
write(*,*)"a/b=",c4
stop
end

コンパイル例

$ ifort -o ex03 -traceback ex03.f90

実行例

$ ./ex03

以下の名前のファイルを開きました:

ex03.data

a= 5.0000000

b= 3.0000000

a+b= 8.0000000

a-b= 2.0000000

a*b= 15.000000

a/b= 1.6666666

ファイルへのデータの書き出し

プログラムで処理したデータを,ファイルに書き出したい場合が良くある.データを書き出すためのファイルをい出力ファイルと呼ぶ.出力ファイルへデータを書き出すためには,次のようにする.

iunit=10 !出力ファイルの機番

open(iunit,file=出力ファイル名)

write(iunit,*) 書き出す内容

計算結果を画面に表示させるだけでなく,出力ファイルへ書き出すプログラムの例を示す.

ex03-2.f90の解説

!

! このプログラムは,ファイルから読み込んだ2つの数字の四則演算を行います.

!

! 計算結果を画面に表示させるだけでなく,出力ファイルへも書き出します.

!

!ファイル名を記憶させるための変数を使うことを宣言する(計算機に知らせる)

character :: filename*60, outfile*60

! outfileは出力ファイル名を記憶させるための変数

! ファイル番号(機番)をしているための変数を宣言する

integer :: iunit, iunit2

! iunit2は出力ファイル用の機番

!ファイルを開く

iunit=10 !機番は10とする(0,5,6以外で100以下だったら何でも良い)

filename="ex03.asc"

open(iunit,file=filename,action="read")

write(*,*)"以下の名前のファイルを開きました:"

write(*,*)filename

read(iunit,*)a ! 機番iunitのファイルから読み込んだ数字をaという変数に代入

read(iunit,*)b

write(*,*) !この場合空行が表示される.

write(*,*)"a=",a !aの値を画面に表示

write(*,*)"b=",b !bの値を画面に表示

c1=a+b ! a+bの計算結果をc1に代入

c2=a-b

c3=a*b

c4=a/b

write(*,*) !この場合空行が表示される.

write(*,*)"a+b=",c1 !c1の値を画面に表示

write(*,*)"a-b=",c2

write(*,*)"a*b=",c3

write(*,*)"a/b=",c4

!出力ファイルへの書き出し

outfile="ex03result.data"

write(*,*)

write(*,*)"計算結果を以下のファイルに書き出します:"

write(*,*)outfile

!出力ファイルを開く

open(iunit2,file=outfile)

!データの書き出し

write(iunit2,*)"a+b=",c1 !c1の値を出力ファイルに表示

write(iunit2,*)"a-b=",c2

write(iunit2,*)"a*b=",c3

write(iunit2,*)"a/b=",c4

stop

end

コンパイル例

$ ifort ex03-2.f90 -o ex03-2 -traceback

実行例

$ ./ex03-2

以下の名前のファイルを開きました:

ex03.data

a= 5.0000000

b= 3.0000000

a+b= 8.0000000

a-b= 2.0000000

a*b= 15.000000

a/b= 1.6666666

計算結果を以下のファイルに書き出します:

ex03result.asc

ex03result.ascを開いて内容を確認してみよう.

ファイルを開く方法(3通り説明します)

$ cat ex03result.asc

$ less ex03result.asc

lessコマンドの終了方法→q

$ emacs -nw ex03result.asc

emacsの終了方法→Controlとxを同時に押したあと、Controlとcを同時に押す

プログラムの修正のしかたについて

プログラムの誤りのことをバグ(bug)といいます(由来).また,プログラムの誤りを正すことをデバッグ(debug)といいます。バグがあると,

  • コンパイル時,もしくは実行時にエラーがでて途中で終了する
  • プログラムがおかしな結果を返す

ため,バグを修正しなければなりません.デバッグのやりかたについて、以下のページにまとめましたので、参考にしてください。

https://sites.google.com/site/fcfortran/home/debug

くりかえし

do文

同じ処理を繰り返し行うのは計算機がもっとも得意とするところである.

このようなことは計算機にやってもらえれば大変便利である.

繰り返しにはdo文を使う.

do文の例

下の例では,do文とend do文で囲まれた,「何かの処理」をN回(この例では1000回)繰り返し行う

N=1000

do i=1,N

「何かの処理」

end do

ここでは, doとend doをつかって,10個の数の合計を計算してみよう.プログラムの例を示す前にFortranの重要なルールを一つ説明する.

s=10.0

s=s+1.0

上のような文があったとする.この結果は,どうなるかというと最終的なsの値は11.0となる.1番目の文でsには10が代入される.2番目の文では,右辺のsの値は10.0であるが,左辺には,右辺のs(=10.0)と1.0の和が代入され,最終的なsの値は11.0となる.これは計算機独特のルールなので注意してほしい.

ex04.f90の解説

!

! このプログラムは,1から10までの数の和を計算します.

!

integer :: i

integer :: sum

N=10

sum=0 !和

write(*,*)"sum=",sum

do i=1,N

sum=sum+i

write(*,*)"i=",i, " sum=",sum

end do

write(*,*)

write(*,*)"sum=",sum

stop

end

コンパイル例

$ ifort ex04.f90 -o ex04

実行例

$ ./ex04

sum= 0

i= 1 sum= 1

i= 2 sum= 3

i= 3 sum= 6

i= 4 sum= 10

i= 5 sum= 15

i= 6 sum= 21

i= 7 sum= 28

i= 8 sum= 36

i= 9 sum= 45

i= 10 sum= 55

最終結果

sum= 55

iの値とsumの値がどのように変化しているか,注意して見て欲しい.

do文の文法

do文の文法についてもう少し詳しく解説する.

do 制御変数名=始値, 終値, 増分

(何かの処理)

end do

例1:

do i=10,100,10

(何かの処理)

end do

iは10から始まり,10づつ増えていく.iの値が100になったら終了.

例2:

do i=-10,10,2

(何かの処理)

end do

iは-10から始まり,2づつ増えていく.iの値が10になったら終了.

例3:

do x=2.0, 3.0, 0.25

(何かの処理)

end do

xは2.0からはじまり,0.25づつ増えていく.xの値が3.0になったら終了.

注意:

do文の制御変数に何かを代入するとエラーになる.

例1:

do i=1,N

i=5 ! iに値を代入しようとしている

end do

例2:

do i=1,N

read(*,*)i ! iに値を読み込もうとしている

end do

練習

do文を使って,画面にThank you!を10回表示するプログラムを作ってみよう.

手順

  • ソースファイルを作成する.
  • ソースファイルを保存する.ファイル名はthankyou.f90とする.
  • コンパイルする
    • ifort thankyou.f90 -o thankyou -traceback
  • 実行する
    • ./thankyou

配列

配列とは何か

一連のデータに番号をつけて扱うことがよくある.

例:

番号 身長 体重

1 151 52

2 172 68

... ... ...

135 168 60

変数に番号をつけて,複数のデータを記憶できるようにしたものが配列である.

Fortranでは,配列を表すのに,

配列名(要素番号)

という書き方をする.

例えば,上のデータ用の配列として,

身長:h(1), h(2), ..., h(135)

体重:w(1), w(2), ..., w(135)

のようなものをつくることができる.

一つの変数を箱と考える. これを幾つかの小箱に分けて番号をつけたものを配列と考えても良い.

配列の使い方

配列を使うためには,まず配列を使うことを宣言する必要がある.

Fortran90/95における標準的な宣言の方法は,

型名, dimension(寸法) :: 配列名

とする.

例:

real, dimension(10) :: a

10個の要素をもつ,実数型のaという配列が作られる.

配列はdo文と組み合わせて用いられることが多い.例えば,

do i=1,10

write(*,*)a(i)

end do

とすると,a(1)からa(10)の値が順番に画面に表示される.

配列を使った例として,ファイルから10個の任意の数字を読み込んで,その和を求めるプログラムについて考えよう.

ex05.f90の解説

!

! このプログラムは,ファイルから読み込んだ10個の数字の合計を計算します.

!

!ファイル名を記憶させるための変数を使うことを宣言する(計算機に知らせる)

character :: filename*60

! ファイル番号(機番)をしているための変数を宣言する

integer :: iunit

! 配列の宣言

real, dimension(10) :: a

!ファイルを開く

iunit=10 !機番は10とする(0,5,6以外で100以下だったら何でも良い)

filename="ex05.data"

open(iunit,file=filename,action="read")

write(*,*)"以下の名前のファイルを開きました:"

write(*,*)filename

N=10

do i=1,N

! 機番iunitのファイルから読み込んだ数字をaのi番目の要素に代入

read(iunit,*)a(i)

enddo !i

write(*,*) !この場合空行が表示される.

!合計の計算

sum=0.0

write(*,*)"sum=",sum

write(*,*)"計算開始"

do i=1,N

sum=sum+a(i)

write(*,*)"i=",i," a(i)=",a(i)," sum=",sum

end do !i

write(*,*)"sum=",sum

stop

end

ex05.f90をコンパイル実行する前に,以下の例を参考に入力データを書いたファイルを作成しよう.ファイル名はex05.ascとすること.

ex05.ascの例

1.0

5.5

2.3

5.1

2.1

10.1

5.2

1.7

100.0

-55.0

コンパイル例

$ ifort ex05.f90 -o ex05

実行例

$ ./ex05

以下の名前のファイルを開きました:

ex05.asc

sum= 0.0000000

計算開始

i= 1 a(i)= 1.00000000 sum= 1.00000000

i= 2 a(i)= 5.5000000 sum= 6.5000000

i= 3 a(i)= 2.3000000 sum= 8.8000002

i= 4 a(i)= 5.0999999 sum= 13.900000

i= 5 a(i)= 2.0999999 sum= 16.000000

i= 6 a(i)= 10.100000 sum= 26.100000

i= 7 a(i)= 5.1999998 sum= 31.299999

i= 8 a(i)= 1.7000000 sum= 33.000000

i= 9 a(i)= 100.000000 sum= 133.00000

i= 10 a(i)= -55.000000 sum= 78.000000

最終結果

sum= 78.000000

判断と分岐

if文

特定の条件を満たすときだけ,処理を行いたいことがよくある.たとえば,測器の異常で,ある時刻の海水温の値が105℃と記録されていたとする.そのようなデータは明らかにおかしいので,データ処理から除外したい.

そのような処理を行うために,if文という文が用意されている.if文は次のように書く.

使用法1

if (条件式) then

(条件式が成立した場合に行う処理)

...

...

end if

注: (条件が成立した場合に行う処理)は何行にわたっても良い(長すぎると見づらくなるので,必要に応じて処理を分ける).

使用法2

if (条件式) then

(条件式が成立した場合に行う処理)

...

...

else

(条件式が成立しない場合に行う処理)

...

...

end if

使用法3

if (条件式A) then

(条件式Aが成立した場合に行う処理)

...

else if (条件式B) then

(条件式Aは成立しないが,条件式Bが成立した場合に行う処理)

...

end if

使用法2,3の組み合わせが可能である.

if (条件式A) then

(条件式Aが成立した場合に行う処理)

...

else if (条件式B) then

(条件式Aは成立しないが,条件式Bが成立した場合に行う処理)

...

else if (条件式C) then

(条件式AとBは成立しないが,条件式Cが成立した場合に行う処理)

...

else

(条件式A,B,Cが成立しない場合に行う処理)

end if

条件式Xが成立することを「Xが真である」ということがある.また,条件式Xが成立しないことを「Xは偽である」ということがある

条件式

条件式には等式と不等式,論理演算子が使える.順に説明する.

等式・不等式の書き方

意味 書き方(Fortran90/95) 古い書き方

< < .lt.

≦ <= .le.

= = .eq.

≧ >= .ge.

> > .gt.

≠ /= .ne.

古い書き方もFortran90/95は理解できる.古い書き方に慣れている人はこの書き方を用いることがあるので,注意すること.

if (A > 5)は,「もしAが5より大きいならば」という意味になる.

論理演算子

Fortranでは,「xはaより大きく,かつbより小さい」という意味で,a < x < b のような書き方が出来ない.このような場合には以下の論理演算子を用いる.

演算子 意味

.and. かつ

.or. または

.not. でない (否定)

Aが真で,Bも真ならば,

A.and.Bは真,A.or.Bも真

Aが真で,Bが偽ならば,

A.and.Bは偽,A.or.Bは真

Aが偽で,Bが真ならば,

A.and.Bは偽,A.or.Bは真

Aが偽で,Bも偽ならば,

A.and.Bは偽,A.or.Bは偽

Aが真ならば,

.not.Aは偽

Aが偽ならば,

.not.Aは真

したがって,a < x < bという式は,Fortranでは,

x > a .and. x < b

と書けばよい.

例題を考えてみよう.次のex06.f90は,ファイルからテストの点数を読み込んで,成績を判定するプログラムである.

ex06.f90の解説

!

! このプログラムは,ファイルからテストの点数を読み込んで,成績を判定する

! プログラムです.

!

!ファイル名を記憶させるための変数を使うことを宣言する(計算機に知らせる)

character :: filename*60

! ファイル番号(機番)を指定するための変数を宣言する

integer :: iunit

! 配列の宣言

real, dimension(10) :: score !点数

character, dimension(10) :: grade*5 !成績(AA,A,B,C,D,ERROR)

!ファイルを開く

iunit=10 !機番は10とする(0,5,6以外で100以下だったら何でも良い)

filename="ex06.asc"

open(iunit,file=filename,action="read")

write(*,*)"以下の名前のファイルを開きました:"

write(*,*)filename

! データ(テストの点数)の読み込み

N=10

do i=1,N

! 機番iunitのファイルから読み込んだ数字をaのi番目の要素に代入

read(iunit,*)score(i)

enddo !i

! 成績判定

do i=1,N

if(90.0 <= score(i) .and. score(i) <= 100.0 )then

grade(i)="AA"

else if (80.0 <= score(i) .and. score(i) < 90.0 )then

grade(i)="A"

else if (70.0 <= score(i) .and. score(i) < 80.0 )then

grade(i)="B"

else if (60.0 <= score(i) .and. score(i) < 70.0 )then

grade(i)="C"

else if ( 0.0 <= score(i) .and. score(i) < 60.0 )then

grade(i)="D"

else

grade(i)="Error" !異常なデータ

end if

end do

!結果の出力

do i=1,N

write(*,'(i5, 3x, f7.1, 3x, A5)')i, score(i), grade(i)

end do

! 上のwrite文の中の'(i5, 3x, f7.1, 3x, A5)'は書式設定と呼ばれる.

! 意味

! i5: 整数型の変数を5文字分のスペースを使って表示

! 3x: 3文字分空白を表示

! f7.1: 実数型の変数を7文字分のスペースを使って表示.ただし,小数点以下の数字の

! 表示に1文字分使う.

! A5: 文字型の変数を5文字分のスペースを使って表示.

stop

end

ex06.f90用の入力データを,下記の例を参考に作成しよう.ファイル名はex06.ascとすること.

ex06.dataの例

95.0

60.0

43.0

72.0

51.0

81.0

91.0

1000.0 !わざと打ち間違えて動作を確認している

10.0

80.0

コンパイル例

$ ifort ex06.f90 -o ex06 -traceback

実行例

$ ./ex06

以下の名前のファイルを開きました:

ex06.data

1 95.0 AA

2 60.0 C

3 43.0 D

4 72.0 B

5 51.0 D

6 81.0 A

7 91.0 AA

8 1000.0 Error

9 10.0 D

10 80.0 A

練習

キーボードから気温を入力し,10℃以下なら,「寒い」,25℃以上なら「暑い」,10℃より高く,25℃より低い場合「ちょうど良い」と画面に表示するプログラムを作ってみよう.

  • TeraPadを開く
  • ソースファイルを作成する.
  • ソースファイルを保存する.ファイル名はweather.f90とする.
  • コンパイルする
    • ifort weather.f90 -o weather -traceback
  • 実行する
    • ./weather
    • 10℃以下の気温の場合,25℃以上の気温の場合,10℃より高く,25℃より低い場合の3つの場合について,プログラムを実行し,正しく動作しているかチェックする.

補遺

Fortran77について

Fortran90/95 の前のバージョンのFortranであるFortran77でかかれたプログラムは現役で使用されているものが非常に多い.Fortran77で書かれた プログラムは,ファイル名の末尾が.f90ではなく,.fとなっている.Fortran77で書かれたプログラムはFortran90/95でコンパイル 可能である.Fortran77の文法は基本的なところはFortran90/95と同一であるが,表記の仕方などで若干の相違点もあ る.

より高度な文法事項

この資料で扱っていないが重要な文法事項について列挙する.本格的なプログラミングをする場合には必要となるであろう.

  • 多次元の配列
  • サブルーチン
  • 関数
  • モジュール

上記文法事項については下記ウェブサイトを参照のこと.

http://www.research.kobe-u.ac.jp/csi-viz/members/kageyama/lectures/H22_FY2010_former/ComputationalScience/2_1_f95a.html

http://www.research.kobe-u.ac.jp/csi-viz/members/kageyama/lectures/H22_FY2010_former/ComputationalScience/2_2_f95b.html