====== Fortran Samples ======
===== prog1.f90 =====
program prog1
print *, 'Hello, World (1)'
print '(A)', 'Hello, World (2)'
print '(A8)', 'Hello, World (3)'
print '(A)', 'Hello, World'
print '(A$)', 'Hello, '
print '(A)', 'World'
stop
end
==== ポイント ====
* プログラムは
program プログラムの名前
プログラムの本体
stop
end
という形式になる。
* 何でもいいから適当に出力したいときは
print *, 出力したいものをコンマで区切って並べる
* 文字列はシングルクォート(一重引用符)でくくる。文字列を出力する正式な方法は
print '(A)', '出力したい文字列'
となる。
===== prog2.f90 =====
program prog2
implicit none
real(8):: xvalue
print '(A$)', 'Input X: '
read (*, *) xvalue
print '("X = ", E15.7)', xvalue
stop
end
===== prog3.f90 =====
program prog3
implicit none
integer:: counter
real(8):: xvalue
do counter = 1, 5
xvalue = 1./dble(counter)
print *, counter, xvalue
end do
stop
end
===== prog4.f90 =====
program prog4
implicit none
integer, parameter:: IMAX = 10
integer:: i, isum
real(8):: dsum
isum = 0
dsum = 0.d0
do i = 1, IMAX
isum = isum + i
dsum = dsum + dble(i)
print *, i, isum, dsum
end do
print *, 'ISUM = ', isum
print *, 'DSUM = ', dsum
print *, '1/ISUM = ', 1/isum
print *, '1.D0/DSUM = ', 1.d0/dsum
stop
end
===== prog5.f90 =====
program prog5
implicit none
integer, parameter:: IMAX = 10
integer:: i
real(8):: r
do i = 1, IMAX
call random_number(r)
print *, i, r
end do
stop
end
===== prog6.f90 =====
program prog6
implicit none
integer:: N, M !!! M <- N - 1
integer:: i !!! Counter
real(8), dimension(:), allocatable:: r
print '(A$)', 'N = '
read (*, *) N
print *, 'N = ', N
M = N - 1
allocate (r(0:M))
call random_seed()
call random_number(r)
do i = 0, M
print *, i, r(i)
end do
deallocate (r)
stop
end
===== prog7.f90 =====
program prog7
implicit none
integer:: N, M
integer:: i, idummy
real(8):: dmini, trial
real(8), dimension(:), allocatable:: r
read (*, *) N
write (*, *) 'Number of Data = ', N
M = N - 1
allocate (r(0:M))
do i = 0, M
read (*, *) idummy, r(i)
end do
!
dmini = r(0)
do i = 1, M
trial = r(i)
if (trial <= dmini) then
dmini = trial
print '(A10$)', 'CHANGED: '
print '(I8, 2E15.7)', i, trial, dmini
else
print '(A10, I8, 2E15.7)', '', i, trial, dmini
end if
end do
deallocate (r)
print *, 'Minimum Value = ', dmini
stop
end
===== prog8.f90 =====
program prog8
implicit none
integer, parameter:: N = 100, M = N - 1
real(8):: a, b, h
real(8), dimension(0:M):: x, y, z
real(8):: getvalue
integer:: i
a = 0.d0
b = 1.d0
h = (b - a)/dble(N)
do i = 0, M
x(i) = a + h*dble(i)
call setvalue(x(i), y(i))
z(i) = getvalue(x(i))
end do
do i = 0, M
print '(3E15.7)', x(i), y(i), z(i)
end do
stop
end
subroutine setvalue(xval, yval)
implicit none
real(8):: xval, yval
yval = sin(xval)
return
end
function getvalue(xval) result(yval)
implicit none
real(8):: xval, yval
yval = exp(-xval)
return
end