categoryFORTRAN覚書

do

trackback0  comment0
プログラミング覚書 Fortran-023

do
----------------------------------------------------------------------

program sum
implicit none
integer total, i
total = 0
do i = 1, 10
total = total + i
end do
print *, total
end program sum

categoryFORTRAN覚書

平均

trackback0  comment0
プログラミング覚書 Fortran-022

平均
----------------------------------------------------------------------

c sample program
c 平均を計算する
real a(20),asum,av
integer i,k/3/
write(*,*) ' 3つの実数の平均を求める '
write(*,*) ' 実数を3つ、カンマまたはブランクで区切って入力する'
read(*,*) (a(i),i=1,k)
asum=0.0
do 100 i=1,k
asum=asum+a(i)
100 continue
av=asum/real(k)
write(*,*) ' a= ',(a(i),i=1,k), ' 平均 ',av
end

categoryFORTRAN覚書

DIMENSION

trackback0  comment0
プログラミング覚書 Fortran-021

DIMENSION
----------------------------------------------------------------------

REAL, DIMENSION(3) :: a
a(1)=10; a(2)=20; a(3)=30
PRINT *, a(1), a(2), a(3)
PRINT *, a
PRINT *, a(2:3)

categoryFORTRAN覚書

DO WHILE

trackback0  comment0
プログラミング覚書 Fortran-020

DO WHILE
----------------------------------------------------------------------

i=1
DO WHILE(i <= 5)
WRITE(*,*) i
i=i+1
END DO
END
categoryFORTRAN覚書

SUBROUTINE

trackback0  comment0
プログラミング覚書 Fortran-019

SUBROUTINE
----------------------------------------------------------------------

! --- 3つの整数の並べ替え ---
INTEGER :: i,j,k
READ*, i,j,k
IF(i < j) CALL swap(i,j)
IF(j < k) CALL swap(j,k)
IF(i < j) CALL swap(i,j)
PRINT *, i,j,k
END
!
SUBROUTINE swap(p,q)
INTEGER :: p,q,r
r=p; p=q; q=r
END

categoryFORTRAN覚書

OPEN,CLOSE

trackback0  comment0
プログラミング覚書 Fortran-018

OPEN,CLOSE
----------------------------------------------------------------------

!----- Character Code Table -----
INTEGER :: i, j
OPEN(8, FILE='Code_Table')
DO i = 0, 31
WRITE(8, "(7(2X, I3, 2X, A))") (i+32*j, CHAR(i+32*j), j = 1, 7)
END DO
CLOSE(8)
END


categoryFORTRAN覚書

出力の書式指定

trackback0  comment0
プログラミング覚書 Fortran-017

出力の書式指定
----------------------------------------------------------------------

!----- Table of SIN and COS -----
REAL, PARAMETER:: RAD = 3.1415926/180.0
REAL :: r, s, c ; INTEGER :: k
PRINT*, "角度 SIN COS CHECK"
DO k = 0, 90, 10
r = k*RAD; s = SIN(r); c = COS(r)
PRINT '(1X, I3, 2X, 3F10.5)', k, s, c, s**2+c**2
END DO
END


categoryFORTRAN覚書

SELECT CASE

trackback0  comment0
プログラミング覚書 Fortran-016

SELECT CASE
----------------------------------------------------------------------

!----- Seiseki Hyoka -----
INTEGER :: i, n1, n2, n3, n4
n1=0; n2=0; n3=0; n4=0
1 READ*, i ; IF(i<0 .OR. i>100) GOTO 9
SELECT CASE(i)
CASE(80:) ; PRINT*,'優' ; n1 = n1 + 1
CASE(70:79) ; PRINT*,'良' ; n2 = n2 + 1
CASE(60:69) ; PRINT*,'可' ; n3 = n3 + 1
CASE DEFAULT; PRINT*,'不可'; n4 = n4 + 1
END SELECT
GO TO 1
9 PRINT*, ' 優=', n1, ' 良=', n2, ' 可=', n3, ' 不可=', n4
END


categoryFORTRAN覚書

うるう年判定2

trackback0  comment0
プログラミング覚書 Fortran-015

うるう年判定2
----------------------------------------------------------------------

!----- Alternative Program -----
INTEGER :: n
READ*, n
IF( ( MOD(n, 4)==0 .AND. MOD(n, 100)/=0 ) &
.OR. MOD(n, 400)==0 ) THEN
PRINT*,"うるう年です。"
ELSE
PRINT*,"平年です。"
END IF
END


categoryFORTRAN覚書

うるう年判定

trackback0  comment0
プログラミング覚書 Fortran-014

うるう年判定
----------------------------------------------------------------------

!----- Leap or not -----
INTEGER :: n
READ*, n
IF( MOD(n, 400) == 0 ) THEN
PRINT*, "うるう年"
ELSE IF( MOD(n, 100) == 0 ) THEN
PRINT*, "平年"
ELSE IF( MOD(n, 4) == 0 ) THEN
PRINT*, "うるう年"
ELSE
PRINT*, "平年"
END IF
END


categoryFORTRAN覚書

ブロックIF構文

trackback0  comment0
プログラミング覚書 Fortran-013

ブロックIF構文
----------------------------------------------------------------------

!----- Calculating Square Root -----
REAL :: x
PRINT*, "Input a real number:"
READ *, x
IF(x>=0.0) THEN
PRINT*, SQRT(x)
ELSE
PRINT*,"Impossible for x<0."
END IF
END


categoryFORTRAN覚書

論理IF文

trackback0  comment0
プログラミング覚書 Fortran-012

論理IF文
IF(論理式) 実行文
----------------------------------------------------------------------

!----- 成績チェック -----
INTEGER :: n, s, k
s = 0; k = 0
10 PRINT*,'Input mark for each student (or negative one to quit):'
READ*, n; IF(n<0) GOTO 999
s = s + 1
IF(n >= 60) k = k + 1
GOTO 10
999 PRINT*, k,' students passed in this exam. Total =', s
END


categoryFORTRAN覚書

文関数

trackback0  comment0
プログラミング覚書 Fortran-011

文関数
----------------------------------------------------------------------

!----- 関数の値の計算 -----
REAL :: f, x, a
f(x) = x**5 + 6.0*x**4 + 2.0*x**3 + x**2 + 4.0
! 簡単な関数の定義
READ*, a
PRINT*, ' f(', a, ')=', f(a)
END


categoryFORTRAN覚書

累乗

trackback0  comment0
プログラミング覚書 Fortran-010

累乗
----------------------------------------------------------------------

!----- 累乗 -----
INTEGER :: m, n
PRINT*, "Input an Integer:"
READ*, n
m = n
m = m*n ; PRINT*, m
m = m*n ; PRINT*, m
m = m*n ; PRINT*, m
m = m*n ; PRINT*, m
END


categoryFORTRAN覚書

直円錐

trackback0  comment0
プログラミング覚書 Fortran-009

直円錐
----------------------------------------------------------------------

!----- 直円錐の体積と表面積 -----
REAL :: pi, r, h, v, s
pi = 3.141593
PRINT*,'Hankei r and Takasa h ?'
READ*, r, h
v = pi*h*r**2/3.0
s = pi*r*(r + (r**2 + h**2)**0.5 )
PRINT*,'Taiseki =', v
PRINT*,'Hyomenseki =', s
END


categoryFORTRAN覚書

3種類の平均値

trackback0  comment0
プログラミング覚書 Fortran-008

3種類の平均値
----------------------------------------------------------------------

!----- 3種類の平均値 -----
PROGRAM Example_1_1
REAL :: a, b, av1, av2, av3
READ *, a, b
av1 = (a + b)/2.0 ! 算術平均
av2 = (a*b)**0.5 ! 幾何平均
av3 = 2.0/(1.0/a + 1.0/b) ! 調和平均
PRINT*, av1, av2, av3
END

categoryFORTRAN覚書

階乗

trackback0  comment0
プログラミング覚書 Fortran-007

階乗
----------------------------------------------------------------------

! 階乗
INTEGER :: i, f=1 ! Initializing as f=1
DO i = 1, 10
f = f * i ; PRINT *, i, '! =', f
END DO
END

categoryFORTRAN覚書

SELECT CASE

trackback0  comment0
プログラミング覚書 Fortran-006

SELECT CASE
----------------------------------------------------------------------

INTEGER Month, Days
PRINT *, "何月か入力して下さい。:"
READ *, Month
!!Days = 31 ! デバック用
SELECT CASE(Month)
CASE(4,6,9,11)
Days=30
CASE(1,3,5,7:8,10,12)
Days=31
CASE(2)
Days=28
!Code to test for a leap year
CASE DEFAULT
!Code to flag an error
PRINT *, "1から12を入力して下さい。"
Days=-1
END SELECT
PRINT "(i3, a, i3, a)", Month, "月は", Days, "日までです。"
END

----------------------------------------------------------------------
categoryFORTRAN覚書

IF

trackback0  comment0
プログラミング覚書 Fortran-005

IF
----------------------------------------------------------------------

REAL x, y ! 特に必要はない
READ *, x
!x=16.0 ! デバッグ用

IF (x>0.0) THEN
y=x
ELSE
y=0.0
END IF

PRINT *, y
END

----------------------------------------------------------------------
categoryFORTRAN覚書

書式付出力

trackback0  comment0
プログラミング覚書 Fortran-004

書式付出力
----------------------------------------------------------------------

PRINT "( a, i2, 4x,a, f6.2,4x,a, e10.3)", &
"Integer:",77,"Float:",77.0,"Exponent:",77.0
END
! Integer:77 Float: 77.00 Exponent: 0.770E+02

----------------------------------------------------------------------
categoryFORTRAN覚書

READ

trackback0  comment0
プログラミング覚書 Fortran-003

READ
----------------------------------------------------------------------

INTEGER i,j
READ *,i
j=2*i+3
PRINT *,j
END

----------------------------------------------------------------------
categoryFORTRAN覚書

do

trackback0  comment0
プログラミング覚書 Fortran-002

do
----------------------------------------------------------------------

do i=1,10
print *, i, ' squared is ', i*i
end do
end

----------------------------------------------------------------------
categoryFORTRAN覚書

Frtranで、Hello

trackback0  comment0
プログラミング覚書 Fortran-001

Frtranで、Hello
----------------------------------------------------------------------

print *, 'Hello'
end

----------------------------------------------------------------------
New «‡Top‡» Old