情報処理概論Ⅰ(Fortran)

 ガイダンス  IF文   並び替え 最大/最小値   平均・分散・標準偏差 相関係数・最小二乗法 
 バイナリファイルの
入出力
 平均水温画像   地衡流計算 逐次近似法   定積分 おまけ 
ガイダンス
>前準備
  • Zドライブに「JOUHOU」というフォルダを作成する。
  • 今後すべてのファイル(Fortranスクリプト、データ)は、この「JOUHOU」フォルダに保存する。
  • Fortranスクリプトの編集は TeraPad、もしくはメモ帳を使って行う。
  • Fortranスクリプトのコンパイルは、cygwin64 Terminal を使って行う。
  • まずCドライブのcygwin64というフォルダにあるcygwin terminalのショートカットを「JOUHOU」フォルダに作成する。
  • Cygwin terminal64を起動する(ショートカットをクリックするだけ)。
  • 次に cd /cygdrive/z/JOUHOU/ と入力する。
  • pwd コマンドでPC内のどこにいるかを確認する。

>本学の情報処理センターで,Fortranを使う時の約束
 UNIXコマンド一覧
 Viコマンド一覧

よく使うコマンド集
pwd: 現在のフォルダ(ディレクトリ)の場所を返す。
ls: (現在いる)フォルダのファイルをリストアップしてくれるコマンド。
cd : change directory、フォルダ(ディレクトリ)移動の際のコマンド。例)ZドライブにあるJOUHOUというフォルダに移動したい場合、「cd JOUHOU」と入力
gfortran: 作成したFortranスクリプトをコンパイルする。  


簡単なFortranスクリプトにチャレンジ
1.Terapadを立ち上げて、以下のスクリプトを書いてみる。

C---- ここから ----
C234567
    real k
    write(*,*) "Hello world!"
    do k=1,10
     write(*,*) k
    enddo
    stop
    end
C---- ここまで ----


2.書き込めたら、名前をつけて「JOUHOU」フォルダに保存する。ここでは名前を sample1.for とする。
3.Windows上で見ると、 sample1.for.txt となっている。「.txt」という拡張子は消したい。
 そこでファイルを指定して、右クリック→名前の変更 として、「.txt」を消す。ショートカットキーのF2をつかってもよい。
4.Cygwin Terminal64を立ち上げる。
5.cd /cygdrive/z/JOUHOU  と入力
6.ls コマンドでsample1.forがあることを確認する。
7.gfortran sample1.for と入力する。(コンパイル)
8.ls コマンドで a.exe が作成されたことを確認する。
9../a.exe と入力するとターミナル内に 「Hello world!」 と数字の1~10までが表示される。


IF文
戻る↑
open文+read文+close文でデータを読み込む

>授業で使うファイル:「右クリック→名前をつけて保存」でZドライブの情報処理概論用のフォルダにファイルを保存すること

 使用するファイルは Day of Year、深度、 CTDで計測した塩分、地上で計測した塩分、 塩分比、観測点番号、の345行x6列のデータを示したテキストファイル。
 Fortranスクリプトによる読み込みは以下のように行う。
 ※このまま流行のコピペをしてもたぶんできませんよと。。

~~~~ここから~~~~
    parameter(num=345)
    real doy(num), dpt(num), csal(num), bsal(num), ss(num), stn(num)

    open(10,file="./data.txt")

    do k=1,345
    read(10,*) doy(k),dpt(k),csal(k),bsal(k),ss(k),stn(k)
    write(*,*) doy(k),dpt(k),csal(k),bsal(k),ss(k),stn(k)
    enddo

    close(10)
   
    stop
    end
~~~~ここまで~~~~

今回使うのは
CTD(Conductivity-Temperature-Depth)で計測された塩分データと
ニスキンボトルで得られた海水を陸上で調べた塩分データ

海洋学実習Ⅱ:ニスキンボトルから採水しているところ
このスクリプトは主に3つに分けることができる。

①宣言文 1~2行目:あらかじめ、こういう変数名・こういうデータを扱いますよ、という宣言。

 integer (整数型)
 real (実数型)
 character (文字型)
 
 ※ちなみに変数icは、前回でてきた暗黙の型宣言で、整数として扱われるので宣言文にはでてこない。

②データ入力部分
③stop+end: 絶対にわすれてはだめ。

※上のスクリプトは、データの行数を事前に知らなくてもできるようにしています。
※最終的に変数icにデータの行数が格納されることになります。


以降の授業ではここで作成したスクリプトを改良していく形で進めます。

  

  DOループを使わない方法もある。あらかじめデータの数がわかっていない場合はこっちのほうが便利。

~~~~ここから~~~~
    parameter(num=345)
    real doy(num), dpt(num), csal(num), bsal(num), ss(num), stn(num)
    ic=1
    open(10,file="./data.txt")
1000 read(10,*,end=555) doy(ic),dpt(ic),csal(ic),bsal(ic),ss(ic),stn(ic)
    write(*,*) doy(ic),dpt(ic),csal(ic),bsal(ic),ss(ic),stn(ic)
    ic=ic+1
    goto 1000
555   ic=ic-1
    close(10)
   
    stop
    end
~~~~ここまで~~~~

戻る↑
データを並び替える(バブルソート)
戻る↑
最大値・最小値・合計を求める 
戻る↑
平均・分散・標準偏差を求める,標準偏差に基づくデータの品質管理を行う (レジュメ(PDF)) 
  
  おさらいと戦略
戻る↑
相関係数・最小二乗法を知る
戻る↑
バイナリファイル(海底地形)の入出力を行う
戻る↑
平均水温画像を作成する
戻る↑
海面高度画像から地衡流を推定する. 
戻る↑
逐次近似法(ニュートン法)で代数方程式を解く。 
 接線の方程式を思い出すこと。x-f(x)=0で表せる式を解く。

サンプルプログラムのダウンロード

課題のサンプルプログラム(平方根を求める)

戻る↑
定積分を行う。 
戻る↑
~おまけ~