Fortran90(data)

旧2-5. Fortran毎日学習

Fortran続きです。dataで配列の初期化を行います。

takk@deb9:~$ cat data.f90
      program main
        integer a(10),s
        data a /5,5,5,5,5,5,5,5,5,5/
        s = 0
        write(*,*) a(3)
        do i = 1,10
          s = s + a(i)
        end do
        write(*,*) s
        stop
      end
takk@deb9:~$
takk@deb9:~$ gfortran data.f90
takk@deb9:~$ ./a.out
           5
          50
takk@deb9:~$

値が同じならまとめて記述することもできます。

takk@deb9:~$ cat data.f90
      program main
        integer a(10),s
        data a /5,5,5,5,5,5,5,5,5,5/
        s = 0
        write(*,*) a(3)
        do i = 1,10
          s = s + a(i)
        end do
        write(*,*) s
        stop
      end
takk@deb9:~$ gfortran data.f90
takk@deb9:~$ ./a.out
           5
          50
takk@deb9:~$

初期値を設定したい配列が複数あるときは、カンマで区切って記述できます。

takk@deb9:~$ cat data.f90
      program main
        integer a(10),b(10),s
        data a,b /10*5,10*2/
        s = 0
        write(*,*) a(3)
        do i = 1,10
          s = s + a(i) + b(i)
        end do
        write(*,*) s
        stop
      end
takk@deb9:~$ gfortran data.f90
takk@deb9:~$ ./a.out
           5
          70
takk@deb9:~$

dataを使わず型宣言で初期化することもできます。

takk@deb9:~$ cat arr.f90
      program main
        integer :: a(10) = (/1,2,3,4,5,6,7,8,9,10/)
        integer s
        s = 0
        write(*,*) a(3)
        do i = 1,10
          s = s + a(i)
        end do
        write(*,*) s
        stop
      end
takk@deb9:~$ gfortran arr.f90
takk@deb9:~$ ./a.out
           3
          55
takk@deb9:~$

コメント

タイトルとURLをコピーしました