Fortranプログラミング入門

Fortranプログラミング入門
-Fortranプログラムの基本-
関根 晃太
プログラム作成の流れ
0. 作成したいプログラムを決める
失敗なんて
怖くない!!
1. エディターを使ってソースコードを書く
2. gfortranを使って実行ファイルを作成
3. 実行ファイルを実行し,期待通りの動作をしない場合
1.に戻りソースコードを修正
何も考えずに一度作ってみよう!!
P-01
例題1
0. 作成したいプログラムを決める
失敗なんて
怖くない!!
1. エディターを使ってソースコードを書く
2. gfortranを使って実行ファイルを作成
3. 実行ファイルを実行し,期待通りの動作をしない場合
1.に戻りソースコードを修正
P-02
例題1
例題1 :
画面に「好きな言葉」を表示させるプログラムを作成
P-03
例題1:ソースコードを書く
0. 作成したいプログラムを決める
失敗なんて
怖くない!!
1. エディターを使ってソースコードを書く
2. gfortranを使って実行ファイルを作成
3. 実行ファイルを実行し,期待通りの動作をしない場合
1.に戻りソースコードを修正
P-04
例題1:ソースコードを書く
英字(26文字) : A-Z
※大文字と小文字の区別はありません!!
数字(10文字) : 0-9
特殊文字(21文字) :
空白(半角スペース) = + - * / ( ) , . ‘ : ! ” % &
; < > ? ¥または$
P-05
例題1:ソースコードを書く
Fortranのメインプログラムの書き方!!
program プログラムの名称
宣言文
実行文
stop
end program プログラムの名称
P-06
例題1:ソースコードを書く
ファイル名 : like_word.f90
本講義では拡張子はf90としましょう!!
program like_word
write (*,*) ’好きな言葉’
stop
end program like_word
忘れてしまった人のためのエディタの使い方
emacs like_word.f90 &
と端末で書こう!
P-07
例題1:コンパイル
0. 作成したいプログラムを決める
失敗なんて
怖くない!!
1. エディターを使ってソースコードを書く
2. gfortranを使って実行ファイルを作成
3. 実行ファイルを実行し,期待通りの動作をしない場合
1.に戻りソースコードを修正
P-08
例題1:コンパイル
端末で…
gfortran like_word.f90
と書けば良い!!
gfortran [オプション] ファイル名
良く使うオプション
オプション名
-o FILENAME
-O0, -O1, -O2, -O3
説明
実行ファイル名をFILENAMEとして実行ファイルを作成
最適化のレベルを指定(デフォルトは0)
P-09
例題1:実行方法
0. 作成したいプログラムを決める
失敗なんて
怖くない!!
1. エディターを使ってソースコードを書く
2. gfortranを使って実行ファイルを作成
3. 実行ファイルを実行し,期待通りの動作をしない場合
1.に戻りソースコードを修正
P-10
例題1:実行方法
端末で…
./a.out
と書けば良い!!
できたかな?
./実行ファイル名
今いるディレクトリという意味
エラーでうまくいかないときは聞いてください!!
P-11
プログラムの詳細
1行目 program like_word
☆文法 program 名前
・主プログラムの開始を表す.
・「end program 名前」と対になる
・わかりやすい名前をつける
・ファイル名とは別の名でOK!
・省略可能であるが,ちゃんと書こう!
P-12
プログラムの詳細
2行目 write (*,*) ’好きな言葉’
☆文法 write (装置番号,書式) 出力対象, 出力対象, …
・「装置番号」に「書式」の通りに「出力対象」を出力.
・装置番号 * か 6 は標準出力 (ディスプレイ出力)
・書式 * は標準書式で出力.自動的に設定.
装置番号・書式の詳細は別の機会に!!
P-13
プログラムの詳細
3行目 stop
☆文法 stop
・プログラムの実行を終了させる
・stop ’コメント’ と書いて「コメント」を出力できる
P-14
プログラムの詳細
4行目 end program lile_word
☆文法 end program 名前
・主プログラムの終わりを表す.
・「program 名前」と対になる
・end以下の「program 名前」は省略可能だが,ちゃん
と書こう
P-15
変数
変数とは…
メモリーのどこかに名前をつけて,様々なデータを
格納及び利用できるようにしたもの.
変数名の付け方の注意
・英字,数字,アンダースコアー_のみ
・変数名の先頭は英字のみ
・Fortranで用意されている予約語(write等)は使えない
・プログラム名と同じ変数名は使えない
P-16
変数
変数のデータ型とは…
・変数に格納するデータの種類.
・変数を利用する際は,宣言時にデータ型を指定する
データ型
説明
宣言文
整数型
32bitの整数
INTEGER :: 変数リスト
整数型(長い桁)
64bitの整数
INTEGER(8) :: 変数リスト
単精度実数型
32bit 有効数字約7桁の実数
REAL :: 変数リスト
倍精度実数型
64bit 有効数字約7桁の実数
REAL(8) :: 変数リスト
複素数型
実部,虚部が単精度の複素数
COMPLEX :: 変数リスト
文字型
文字データ
CHARACTER :: 変数リスト
論理型
論理演算 真(.ture.) 偽(.false.)
LOGICAL :: 変数リスト
P-17
変数
変数の宣言文
program プログラムの名称
implicit none
データ型1 :: 変数1, 変数2, …
データ型2 :: 変数3, 変数4, …
…
実行文
stop
end program プログラムの名称
P-18
変数
暗黙の型宣言とは…
FORTRAN77では宣言文を書かなければ
・i, j, k, l, m, nから始まる変数は整数型
・それ以外は単精度浮動小数点数型
になる.必要なときに限り宣言文を書いていた.
implicit noneとは
Fortran90以降は暗黙の型宣言を推奨しておらず,
「暗黙の型宣言をなくす」という文.
P-19
必ず書くようにしましょう!!
定数
定数の書き方
数字を書く際,書き方によってデータ型が変わる
整数型
1402
-25
間違った例
1.2
+39
0
1,000
P-20
定数
定数の書き方
数字を書く際,書き方によってデータ型が変わる
単精度実数型
1.23
1.0
2.4e3
+5.43e2
倍精度実数型
2.45d-3
2.4d3
+5.43d2
2.45e-3
-3.14e2
-3.14d2
P-21
定数
定数の書き方
数字を書く際,書き方によってデータ型が変わる
複素数型
(3.14,2.5)
(1.58e-2,40.3)
(-2.0,4.2e3)
(1.56e-4,6.88e4)
P-22
代入文
代入演算子=
変数に値を代入する
変数 = 代入したい値
例
implicit none
integer :: i, j
i=5
j = 100
P-23
例題2
整数型の変数 intを宣言し,
5, 5.1, 5.0d-2, (1.0, 2.0)
をそれぞれintに代入し,それぞれ出力するプログラムを
作成せよ.
但し,ファイル名をsubs.f90とせよ.
定数と変数の
型が違うぞ!?
P-24
例題2
program subs
implicit none
integer :: int
int = 5
write (*,*) int
int = 5.1
write (*,*) int
・・・
stop
end program subs
定数と変数の
型が違うぞ!?
P-25
課題1
5, 5.1, 5.0d-2, (1.0, 2.0)
をそれぞれ適切に代入できる型の変数を宣言,代入,及
び出力するプログラムを作成せよ.
但し,ファイル名をsubs2.f90とせよ.
(コマンド cp subs.f90 subs2.f90 を使うとよい)
P-26
演算子
算術演算
Fortranでの表現
+
+
-
-
×
*
÷
/
べき乗
**
例
a + b÷c
a × bc
→
→
a + b/c
a*b**c
P-27
課題2
a = 3,h = 5とする.そのとき,三角形の底辺の長さaと高
さhに対し,面積Sを表示するプログラムを書け.
但し,プログラム名をmes.f90とせよ.
※変数,定数の型に注意しましょう!!
P-28
エクストラ課題
整数型,単精度実数型,倍精度実数型を混在で計算さ
せ,型の優先順位を見つけ出せ.
P-29