この実習では以下の要領で成績を評価します.
この授業では,プログラミング言語の習得を目標とします.習得すると何ができるようになるのでしょうか? 大きくわけると二つのことができるようになります.
プログラムは「エディタ」とよばれるアプリケーションで作成します。エディタとは、文字列のみ作成できるもので、ワード等のワープロとは根本的に異なります。メモ帳(windows),テキストエディット(Mac)が標準で付属しているエディタです.さまざまなフリーのエディタがありますので好みに応じて使ってください.標準のものでも十分です.以下の解説は,サテライトラボのiMacにインストールされている emacs エディタの解説です.
画面下のアイコンが並んでいる中に,バックがうすむらさき色の上にペンの絵があるアイコンがあります.一度クリックすると起動します.
以下で C-x とは CTRLキーを押しながら「x」キーを押すことを意味します. 次の3つは最低限覚えましょう!
ここで練習をしてみましょう. test.txtというファイルを開いてください. 今の場合, test.txtはまだ存在しません. その場合は新たにファイルが作成されます. 開くことができたら, ローマ字,かな漢字を入力してみましょう. 一通り書いたらセーブしてみましょう.
作成したプログラムは,「コンパイル」という作業をすることで実際に動くようになります.この作業は「ターミナル」という画面で行います.この画面での操作は,マウスでクリックといった直感的なものではなく,コマンドを入力することで実行します.windowsの方は gfortran を起動してください.macの方は「ターミナル」を起動してください.
cd | いま自分がいるフォルダ名の表示 |
---|
cd フォルダ名 | フォルダ間の移動 |
---|---|
cd Mail | Mail フォルダに移動 |
cd ../ | 一つ上の階層のフォルダに移動 |
mkdir フォルダ名 | フォルダの作成 |
---|---|
mkdir hoge | hogeフォルダを作成 |
del ファイル名 | ファイルの削除 |
---|---|
del hogehoge | ファイルhogehogeを削除 |
dir | ファイルのリスト表示 |
---|
pwd | いま自分がいるフォルダ名の表示 |
---|
cd フォルダ名 | フォルダ間の移動 |
---|---|
cd Mail | Mail フォルダに移動 |
cd ../ | 一つ上の階層のフォルダに移動 |
mkdir フォルダ名 | フォルダの作成 |
---|---|
mkdir hoge | hogeフォルダを作成 |
rm ファイル名 | ファイルの削除 |
---|---|
rm hogehoge | ファイルhogehogeを削除 |
ls | ファイルのリスト表示 |
---|
毎週必ず行なう手順を示します.
こうしておくと後で見返すことが容易にできます.
次のプログラムを書いてみましょう.example1.f90という名前でさきほど作成したフォルダの中に保存してください. もし間違えたら再度 231005 ディレクトリに保存してください.保存したら,dir (ls:今後,特記しなかぎりwindowsのコマンドをかっこ無しで明記し,かっこの中にmac でのコマンドを書きます) コマンドでファイルが存在していることを確認してください.
program example1 ! プログラムの開始 implicit none ! 暗黙の型宣言を使わない double precision :: a,b,c ! 倍精度型実数a,b,cを宣言 a = 1.D0 ! aに倍精度の1を代入 b = 2.D0 ! bに倍精度の2を代入 c = a + b ! cにaとbの和を代入 write(*,*) a,b,c ! a,b,cに格納されている数値をモニタに出力 end program example1 ! プログラム終了
まず覚えてほしいフォートランのきまり:
さて作成したプログラムはこのままでは計算機は理解できません. 実行形式(バイナリ)に変換する必要があります. この操作をコンパイルと呼びます. コンパイルはエディタ上ではできません. ターミナル上で入力します.
gfortran example1.f90で行われます.すると a.exe (a.out) と言うファイルが作成されます.以下のコマンドで実行してみましょう.
a.exe (./a.out)
program example2 implicit none double precision :: a,b real :: c integer :: n a = 2.1D0 b = 2.1 c = 2.1 n = 2.1 write(*,'(D24.16,1x,D24.16,1x,D24.16)') a,b,c write(*,'(I3)') n end program example2モニタ上の表示はどうなったでしょうか? 何桁目まで正しく表示されていますか? nの表示はどうなっていますか? 再度注意点をまとめると:
program example2 implicit none double precision :: a,b,c,d a = 1.D0 b = 2.D0 c = a + b read(*,*) d write(*,*) d write(*,*) a,b,c end program example2と変更して実行してみよう.
open(1,FILE='test.dat')を追加してください. こうするとその後write(1,*)とすることによりtest.datに結果が出力されます.
レポートは毎回とも城野,古田にメールで送ること.
日程表へ戻る <<