1/14の情報処理の課題 | Michaelの日常(C08525)

Michaelの日常(C08525)

なんか、授業で作れと言われたので作ってみました。

<サブローチン>



c234567890123456789

implicit none
integer i
real x,y,z,xmin,xmax,b,a

xmin=-24
xmax=16

b=1-(2*xmin)
a=(2*xmax)+1-(2*xmin)
do i=1,a
x=(i-b)*0.5

call sub(x,y)


z=z+y


end do
write(6,*)'z=',z
write(6,*)'xmin=',xmin
write(6,*)'xmax=',xmax

end


subroutine sub(x,y)

real x
if(x<.0)then
y=3.0+cos(x)
end if
if (x>=0)then
y=sqrt(3.0*x)+2.0
end if
return


end

<結果>

xs4%
xs4% g77 subroutine.f
xs4% a.out
z= 358.959015
xmin= -24.
xmax= 16.
xs4%




<関数副プログラム>


c234567890123456789

implicit none
integer i


real x,y,z,xmin,xmax,b,a,f

xmin=-24
xmax=16

b=1-(2*xmin)
a=(2*xmax)+1-(2*xmin)
do i=1,a
x=(i-b)*0.5



y=f(x)




z=z+y

end do
write(6,*)'z=',z
write(6,*)'xmin=',xmin
write(6,*)'xmax=',xmax

end





function f(x)
implicit none
real x,f
if(x<.0)then
f=3.0+cos(x)
end if
if (x>=0)then
f=sqrt(3.0*x)+2.0
end if
return


end


<結果>

xs4%
xs4% g77 fuku.f
xs4% a.out
z= 358.959015
xmin= -24.
xmax= 16.
xs4%



<注意>めんどくさかったので、 Xmin と Xmax をプログラム内に入力すれば、勝手に i の領域か決まるようにしてあります。