数値解析法及び演習 第二回

1から10までの和
  1. 定数, 変数の型
  2. データの入出力
  3. DOループによる反復処理
  4. 今日の宿題

今日の目標

  1. 基本的なルールを覚える
  2. ファイルからデータの入出力の復習
  3. DOループによる反復処理

今日のディレクトリ, 201015を作成してください.


[1] 定数, 変数の型

[1.1]

以下は先週コンパイルしたプログラムです.これをまず分析します.

  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 ! プログラム修了

FORTRANでは定数(1.D0などの具体的な数)および変数(a, bなど定数を格納できる文字:英字から始まる31文字以内の任意の英数字)には型が定められています. 常に型を意識して変数および定数を使用してください. 当面登場する型は次の三つです. そのうち使用するのは始めの二つとなります.

注意:宣言文はプログラムの先頭に置いてください!

再度注意点をまとめると:

以上二点をいつも守るように心がけて下さい.


[2] データの入出力

[2.1]ファイルに入出力

ファイル 201015_1.dat をエディタで新規作成し,以下の数字をコピーしてください.

2.1D0 5.4D0

注意:5.4D0の後で改行してください.しないと読み込みでエラーになる場合があります.

次のプログラムを書いてみよう.


  implicit none
  double precision a,b,c

  open(1,FILE='201015_1.dat')
  open(2,FILE='201015_2.dat')

  read(1,*) a,b
  
  c = a + b
  
  write(2,*) c 

  end 

以上二つのファイルが作成できたらコンパイル後実行してください.

プログラムから数値を読み込む場合, 通常はファイルから読み込ませます. キーボードから読み込ませることもできますが, そうすると入力した数値が後で判らなくなってしまうことが多いからです. また, 計算結果も通常はファイルに書き込ませます. ファイルを開くには上の例のようにopen文を用います. 書式は次の通り.

open文 open(n,FILE='ファイル名')
n 外部装置識別子(5,6を除いた整数を使う)

つづくread, write文では, 対応する番号で開かれたファイルからの読み込み, 書き込みが行われることになる.

[3] DOループによる反復処理

次のプログラムを書いてみよう.

  program loop
  implicit none
  double precision a,c
  integer n,i

  a = 1.D0
  c = 0.D0
  n = 10
     
  do i=1, n
    c = c + a
  end do
   
  write(*,*) c,n
     
  end program loop

これは,整数iを1からnまで一つづつ増やしつつenddo文までを反復しなさいというプログラムである.フォートランでは反復計算をDOループを用いて行なう. 基本的な書き方は次の通り:

DOループ do i=m1,m2,m3
..........
enddo
i 制御変数(整数型を使う)
m1 制御変数の初期値
m2 制御変数の終値
m3 制御変数の増分(省略すると1になる)

増分を1以外の数にとったのが次の例:

  program loop2
  implicit none
  integer i

  do i=0,11,2

           write(*,*) i

  end do

  end program loop2
別の例:
  program loop3
  implicit none
  integer i

  do i=10,0,-1

    write(*,*) i

  end do

  end program loop3

DOループは重ねてつかうことができる. 例として:

   program loop4
   implicit none
   integer i,j

   do i=1,10
     do j=1,5
       write(*,*) i,j,i+j
     end do
   end do
   
   end program loop4

プログラムを作成し実行せよ. iとjがどのように増えていくか着目すること.


[4] 今日の宿題

  1. 整数の1から10までの和を求めるプログラムを作成せよ.(ヒント:和を求めるために整数型の変数を一つ用意する)
  2. 1×1+2×2+3×3...+10×10(全て整数)を求めるプログラムを作成せよ.
  3. 1×2×3×... ×10 (全て整数)を求めるプログラムを作成せよ.
  4. 1+10+100+..(全て整数)を行い,画面に以下のとおりに数字が表示されるプログラムを作成せよ.(フォートランでは,10のn乗はプログラム中では10**nと書く.)
               1
              11
             111
            1111
           11111
          111111
         1111111
        11111111
    

問題のプログラム及び解答(数値)を城野,濱本にメールで送ること.

〆切:10月20日(火曜日)


日程表へ戻る <<