アットウィキロゴ

FORTRAN

時代遅れ?いいえピチピチです。

FORTRANの魅力

メリット

  • およそ50年前に開発された言語でありながら科学の分野では今なお現役である。
  • 科学分野で扱われるだけあって計算が速い。
  • Cより習得がやや楽。
  • 数式を書くのが楽。
  • 変数をわざわざ宣言しなくてもよい。
  • 美しい。

デメリット

  • 無料の総合開発環境の質が悪い。
  • 現在では一般にあまり使用されていない言語であるから習得しても見返りは少ない。
  • 美しくない。


みんな大好きHello world
program main
 print *,"Hello, World!"
 end program main 
stop
end

リファレンス(入門)

大学の講義「アルゴリズムとプログラミングⅠ」で配布された教科書を基に作成。特に断りがなければ1~8カラムは省略されているものとする。

何も動作しないプログラム

  • プログラムの必要最低限の要素を確認しよう。
stop
end

コメント文

c 先頭がcで始まる一行はコメント文です。
stop
end

変数に数字を代入する

  • FORTRANではわざわざ変数を宣言する必要はありません。
a=1.0
b=1.1
stop
end

文字を画面に出力する

  • ここでは変数a,bそれぞれに代入した値を出力する。
  • 文字列を出力する際は'(クォーテーション)で囲む必要がある。
a=1.0
b=1.1
print *, a,b,'test'
stop
end

簡単な計算をする

足し算 +
引き算 -
掛け算 *
割り算 /
累乗 **
  • ここでは変数cにaとbを足し算した値を代入する。
a=1.0
b=1.1
solution=a+b
print *, solution
 

少し複雑な計算をする

  • ここでは解の公式 x=\frac{-b\pm \sqrt{b^2-4ac}}{2a} を例とする。ただし±のうち+の方のみを再現する。
  • 括弧は()のみ扱える。
  • 平方根を返す関数はsqrt(x)。
a=1.0
b=-1.0
c=-1.0
x=(-b+sqrt(b**2-4*a*c))/(2*a)
print *, x
stop
end

変数の種類を変更する(型宣言)

宣言 備考
整数型 integer I~N及びi~nで始まる変数はデフォルトでこれ
実数型 real I~N及びi~nで始まらない変数はデフォルトでこれ
文字型 character*n nに数字を入れて最大の文字数を指定できる
複素数型 complex
論理変数 logical
  • 有効数字の桁数を増やしたければ型宣言のすぐ後ろに「*n」を添えればよい。(桁数がn倍になる)
real number1
real*2 number2
number1=3.14
number2=3.14159265
print *, number1,number2
stop
end

data文を利用して変数に値を代入する

  • data文を利用すれば一行で多くの変数に値を代入できる。
  • //内に代入したい数値を対応する通り並べる。
data a,b /1.0,1.1/
print *, a,b
stop
end

端末から文字を入力する

read(*,*) a
print *,a
stop
end

DO文 (繰り返し)

  • 下のソースは1から10までの連続した自然数の総和を出力するもの。
sum=0
do i=1,10
 sum=sum+i
end do
print *,sum
stop
end
 

IF文 (条件分岐)

.EQ.
.NE.
.LT.
.GT.
.LE.
.GE.
  • 条件式(等式や不等式)を用意しそれが満たされるか満たされないかで分岐する。
  • 条件式を記述する際は上の表を参考にせよ。
  • 以下のソースは端末からの入力が5.0以上かどうかを示す。
read(*,*) a
if(a.GE.5.0) then
 print *,'OK!'
end if
else
 print *,'NO'
end if
stop
end

上のソースの簡易版

read(*,*) a
if(a.GE.5.0) print *,'OK!'
else print *,'NO'
stop
end

配列

  • 配列とは添え字付き変数に対応するものである。
  • ここでは配列の値の代入にdata文を、出力にDO文を用いた。
dimension abc(3)
data abc/1.0,1.1,1.2/
do i=1,3
 print *,'i=',i,'abc=',abc(i)
end do
stop
end

タグ:

+ タグ編集
  • タグ:
最終更新:2013年11月07日 01:47