Fortran实验报告.docx
- 文档编号:30393105
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:41
- 大小:645.51KB
Fortran实验报告.docx
《Fortran实验报告.docx》由会员分享,可在线阅读,更多相关《Fortran实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
Fortran实验报告
FORTRAN实验报告
实验日期2012年2月24日
1、实验目的
1、了解FORTRAN90软件开发环境
2、学会启动Fortran,掌握程序的编辑、编译、构建、运行方法。
3、了解软件开发环境常用菜单、工具按钮、环境窗口基本功能。
掌握文件、文件夹的移动、复制、删除等操作方法。
二、实验内容
1、运行MicrosoftDeveloperStudio软件开发环境。
2、理解有关工作区(Workspaces)、项目(Projects)、文件(Files)的基本概念。
3、掌握工作区(Workspaces)、项目(Projects)、文件(Files)创建方法。
4、掌握程序的编辑(Edit)、编译(Compile)、构建(Build)、运行(Run)方法
三、实验步骤
1、建立文件夹
2、启动MicrosoftDeveloperStudio软件开发环境,并创建工作区、项目
3、创建文件
4、编译项目内源程序文件
5、构建可执行程序文件。
6、运行可执行程序文件
四、实验结果与分析
实验结果:
FORTRAN实验报告
实验日期2012年3月2日
一、实验目的
1、掌握源程序的书写格式;
2、掌握FORTRAN90中基本数据类型及其描述、运算;
3、掌握基本语句的使用
二、实验内容
编写简单程序代码
1、整数类型
programex0404
integera
a=3
write(*,*)"a=",a
stop
End
programex0406
integer(kind=4)write
write=2+2*4-3
write(*,*)"2+2*4-3=",write
stop
End
2、浮点数类型
programex0410
real:
:
a,b,c
a=0.5
b=0.5
c=sin(a)**2+cos(b)**2
write(*,*)"c=",c
stop
End
3、复数类型
programex0411
complex:
:
a,b
a=(1.0,1.0)
b=(1.0,2.0)
write(*,*)"a+b=",a+b
write(*,*)"a-b=",a-b
write(*,*)"a*b=",a*b
write(*,*)"a/b=",a/b
stop
end
4、字符类型
programex0413
character(len=20)string
string="Goodmorning."
write(*,*)string
string(6:
)="evening."!
重设设定从第6个字符之后的字符串
write(*,*)string
end
5、逻辑类型
programex0416
logicala,b
a=.true.
b=.false.
write(*,*)a,b
end
三、实验步骤
1、编译、构建、运行、调试程序
2、编写实验报告
四、实验结果与分析
1、执行结果:
2、执行结果:
3、执行结果:
4
5、
FORTRAN实验报告
实验日期2012年3月9日
一、实验目的
1、掌握自定义数据类型的使用,熟练进行程序编写
2、实验内容
自定义类型
programex0434
implicitnone
!
开始建立person这个类型
type:
:
person
character(len=30):
:
name!
人名
integer:
:
age!
年龄
integer:
:
height!
身高
integer:
:
weight!
体重
character(len=80):
:
address!
地址
endtypeperson
type(person):
:
a!
声明一个person类型的变量
write(*,*)"NAME:
"
read(*,*)a%name
write(*,*)"AGE:
"
read(*,*)a%age
write(*,*)"HEIGHT:
"
read(*,*)a%height
write(*,*)"WEIGHT:
"
read(*,*)a%weight
write(*,*)"ADDRESS:
"
read(*,"(A80)")a%address
write(*,100)a%name,a%age,a%height,a%weight
100format("Name:
",A10/,"Age:
",I3/,"Height:
",I3/,"Weight:
",I3,&
&"Addres:
",A50)
stop
end
三、实验步骤
1、编写程序代码、编译、调试
2、编写实验报告
四、实验结果与分析
实验结果:
输入Chang2317159hebeidaxue
执行结果:
FORTRAN实验报告
实验日期2012年3月16日
一、实验目的
掌握输入输出的格式及变量声明的应用
二、实验内容
1、输入输出的格式
programex0421
integera
realb
complexc
logicald
character(len=20)e
a=10
b=12.34
c=(1,2)
d=.true.
e="FORTRAN"
write(*,"(1X,I5)")a!
用I来格式化整数
write(*,"(1X,F5.2)")b!
用F来格式化浮点数
write(*,"(1X,F4.1,F4.1)")c!
complex也是浮点数
write(*,"(1X,L3)")d!
用L来输出logical
write(*,"(1X,A10)")e!
用A来输出字符串
End
二、变量声明的应用
programex0432
implicitnone
integer:
:
a=1
integer:
:
b=2
real:
:
c
c=real(a)/real(b)!
经由库函数real把整数转换成浮点数
write(*,"(F5.2)")c
end
2、实验步骤
1、编译、调试
2、编写实验报告
四、实验结果与分析
实验结果:
1、
2、
FORTRAN实验报告
实验日期2012年3月23日
1、实验目的
1、熟悉和掌握各种顺序结构的实现方法
2、掌握基本语句的使用
二、实验内容
1、编写程序,将华氏温度转化为摄氏温度,公式为:
。
要求:
输入一个华氏温度值F,按照公式将其转化为摄氏温度值C。
implicitnone
REALC,F
READ*,F
C=5*(F-32)/9
PRINT*,C
END
2、编写程序,其功能是:
输入a,b,x的值,计算并输出y的值。
implicitnone
reala,b,x,y
read*,a,b,x
y=(exp(a*x)-log(x)*log(x))/(5*b)
print*,y
end
三、实验步骤
1、分析问题,设计算法,编写程序
2、编译、调试
3、编写实验报告
四、实验结果与分析
第一个实验结果:
输入80
第二个实验结果:
当x=1.234,a=-5,b=0.9876时,y=
FORTRAN实验报告
实验日期2012年3月30日
1、实验目的
1、熟悉和掌握选择结构程序的编写方法
2、熟悉和掌握各种选择结构的实现方法
二、实验内容
1、编写计算身高、体重是否正常代码
programex0502
implicitnone
real(kind=4):
:
height!
记录身高
real(kind=4):
:
weight!
记录体重
write(*,*)"height:
"
read(*,*)height!
读入身高
write(*,*)"weight:
"
read(*,*)weight!
读入体重
if(weight>height-100)then
!
如果体重大于身高减去100,会执行下面的程序
write(*,*)"Toofat!
"
else
!
如果体重不大于身高减去100,会执行下面的程序
write(*,*)"Undercontrol."
endif
stop
End
2、计算学生的成绩
programex0512
implicitnone
integerscore
charactergrade
write(*,*)"Score:
"
read(*,*)score
selectcase(score)
case(90:
100)!
90到100分之间
grade='A'
case(80:
89)!
80到89分之间
grade='B'
case(70:
79)!
70到79分之间
grade='C'
case(60:
69)!
60到69分之间
grade='D'
case(0:
59)!
0到59分之间
grade='E'
casedefault!
其它情形
grade='?
'
endselect
write(*,"('Grade:
',A1)")grade
stop
end
三、实验步骤
1、分析问题,设计算法,编写程序
2、编译、构建、运行、调试程序
3、编写实验报告
四、实验结果与分析
第一个程序执行结果:
输入17058
输入17089
第二个程序执行结果:
输入89
输入98
FORTRAN实验报告
实验日期2012年4月6日
一、实验目的
1、进一步掌握关系表达式和逻辑表达式。
2、掌握循环控制条件的描述。
掌握三种循环结构的特征及相互之间的等价转换。
掌握DO、DOWHILE语句的语法规则和使用要求。
3、掌握循环结构概念和循环结构程序设计方法。
二、实验内容
验证不同的循环格式
1、进行简单累加
programex0601
implicitnone
integercounter
integer,parameter:
:
lines=10
!
counter<=lines之前会一直重复循环
!
每跑一次循环counter会累加1
docounter=1,lines,1
write(*,*)"HappyBirthday",counter
enddo
stop
end
2、编写fn=fn_2+fn_1,fn_2=fn_1
fn_1=fn从3开始到10结束
programex0611
implicitnone
integercounter
integer:
:
fn_1=1
integer:
:
fn_2=0
integer:
:
fn=0
write(*,*)fn_2
write(*,*)fn_1
docounter=3,10
fn=fn_2+fn_1
write(*,*)fn
fn_2=fn_1
fn_1=fn
enddo
stop
end
三、实验步骤
1、分析问题,设计算法,绘制框图,编写程序
2、编译、构建、运行、调试程序
3、编写实验报告
四、实验结果与分析
第一个程序执行结果:
第二个程序执行结果:
FORTRAN实验报告
实验日期2012年4月13日
一、实验目的
1、掌握Fortran90标准中的可分配数组的使用方法。
2、掌握派生类型与结构体的使用。
3、基本掌握指针类型的用法
二、实验内容
1、读入矩阵A、B的内容,把矩阵A,B相加并输出结果
programex0704
implicitnone
integer,parameter:
:
row=2
integer,parameter:
:
col=2
integer:
:
matrixA(row,col)
integer:
:
matrixB(row,col)
integer:
:
matrixC(row,col)
integerr!
用来指定row
integerc!
用来指定column
!
读入矩阵A的内容
write(*,*)"MatrixA"
dor=1,row
doc=1,col
write(*,"('A(',I1,',',I1,')=')")r,c
read(*,*)matrixA(r,c)
enddo
enddo
!
读入矩阵B的内容
write(*,*)"MatrixB"
dor=1,row
doc=1,col
write(*,"('B(',I1,',',I1,')=')")r,c
read(*,*)matrixB(r,c)
enddo
enddo
!
把矩阵A,B相加并输出结果
write(*,*)"MatrixA+B="
dor=1,row
doc=1,col
matrixC(r,c)=matrixB(r,c)+matrixA(r,c)!
矩阵相加
write(*,"('(',I1,',',I1,')=',I3)")r,c,matrixC(r,c)
enddo
enddo
stop
end
三、实验步骤
1、分析问题,设计算法
2、编译、构建、运行、调试程序,得到输出结果文件
3、写出实验报告
四、实验结果与分析
FORTRAN实验报告
实验日期2012年4月20日
一、实验目的
1、了解子程序定义、调用、形式参数、实在参数、参数传递的基本内容和使用规则
2、了解结构化程序设计方法
3、了解使用子程序设计和编写程序的方法
二、实验内容
1、要求验证书本所讲的Fortran程序的子程序编写规则及调用方法。
programex0806
implicitnone
integer,parameter:
:
players=5
real:
:
angle(players)=(/30.0,45.0,35.0,50.0,40.0/)
real:
:
speed(players)=(/25.0,20.0,21.0,27.0,22.0/)
real:
:
distance(players)
integer:
:
I
doI=1,players
callGet_Distance(angle(i),speed(i),distance(i))
write(*,"('Player',I1,'=',F8.2)")I,distance(i)
enddo
stop
end
!
把0~360的角度转换成0~2PI的弧度
subroutineAngle_TO_Rad(angle,rad)
implicitnone
realangle,rad
real,parameter:
:
pi=3.14159
rad=angle*pi/180.0
return
end
!
由角度、切线速度来计算投射距离
subroutineGet_Distance(angle,speed,distance)
implicitnone
realangle,speed!
传入的参数
realdistance!
准备传回去的结果
realrad,Vx,time!
内部使用
real,parameter:
:
G=9.81
callAngle_TO_Rad(angle,rad)!
单位转换
Vx=speed*cos(rad)!
水平方向速度
time=2.0*speed*sin(rad)/G!
在空中飞行时间
distance=Vx*time!
距离=水平方向速度*飞行时间
return
end
三、实验步骤
1、根据问题描述,按结构化思想进行程序设计,并进行程序编写。
2、正式实验时进行程序测试和调试。
3、编写实验报告
四、实验结果与分析
执行结果:
FORTRAN实验报告
实验日期2012年4月27日
一、实验目的
1、掌握自定义函数、语句函数的定义及引用方法
2、掌握FORTRAN程序单元间的数据传递方法
二、实验内容
1、生成随机数
programex0825
implicitnone
interface!
定义函数func的接口
functionrandom10(lbound,ubound)
implicitnone
real:
:
lbound,ubound
real:
:
random10(10)!
传回值是个数组
endfunction
endinterface
real:
:
a(10)
CALLRANDOM_SEED()!
库函数子程式,使用随机数前调用
a=random10(1.0,10.0)!
产生10个1.0~1.0之间的随机数
write(*,"(10F6.2)")a!
输出数组a的内容
end
!
random10会返回10个范围在lbound到ubound之间的随机数
functionrandom10(lbound,ubound)
implicitnone
real:
:
lbound,ubound
real:
:
len
real:
:
random10(10)
realt
integeri
len=ubound-lbound!
计算范围大小
doi=1,10
callrandom_number(t)!
t会是0~1之间的随机数
random10(i)=lbound+len*t!
把t转换成lbound~ubound间的随机数
enddo
return
end
3、实验步骤
1、根据问题描述,按结构化思想进行程序设计,并进行子程序和主程序的编写。
2、正式实验时进行程序测试和调试。
3、编写实验报告
四、实验结果与分析
执行结果:
FORTRAN实验报告
实验日期2012年5月4日
一、实验目的
1、掌握文件与记录的概念
2、掌握文件的打开和关闭
3、掌握文件的存取方法
二、实验内容
1、编写程序:
班上多少名同学,并把同学的中文、英文、数学成绩存放到data.txt中
moduletypedef
typestudent
integerChinese,English,Math
endtype
endmodule
programex0906
usetypedef
implicitnone
integer:
:
students
type(student),allocatable:
:
s(:
)
character(len=80):
:
filename="data.txt"
integer,parameter:
:
fileid=10
integer:
:
i
write(*,*)"班上有多少学生?
"
read(*,*)students
allocate(s(students),stat=i)
if(i/=0)then
write(*,*)"Allocatebufferfail."
stop
endif
open(fileid,file=filename)
doi=1,students
write(*,"('请输入'I2'号同学的中文、英文及数学成绩')")i
read(*,*)s(i)%Chinese,s(i)%English,s(i)%Math
write(fileid,"('座号:
'I2/'中文:
'I3'英文:
'I3'数学:
'I3)")i,s(i)
enddo
close(fileid)
stop
end
3、实验步骤
1、分析问题,设计算法,编写程序
2、编译、构建、运行、调试程序,得到输出结果文件
3、写出实验报告
4、实验结果与分析
例如:
输入班里有四个人及其成绩
生成的data.txt文件
FORTRAN实验报告
实验日期2012年5月11日
一、实验目的
1、掌握指针的基本概念和定义格式,学会指针的一些简单的应用
2、理解动态变量的含义
二、实验内容
1、求最小值
odulefunc
contains
functiongetmin(p)
implicitnone
integer,pointer:
:
p(:
)
integer,pointer:
:
getmin
integeri,s
integermin
s=size(p,1)!
查寻数组的大小
min=2**30!
先把min设定成一个很大的值
doi=1,s
if(min>p(i))then
min=p(i)
getmin=>p(i)
endif
enddo
return
endfunction
endmodule
programex1008
usefunc
implicitnone
integer,target:
:
a(8)=(/10,15,8,25,9,20,17,19/)
integer,pointer:
:
p(:
)
p=>a(1:
8:
2)
!
p
(1)=>a
(1),p
(2)=>a(3),p(3)=>a(5),p(4)=>a(7)
write(*,*)getmin(p)
stop
end
三、实验步骤
1、分析问题,设计算法,编写程序
2、编译、构建、运行、调试程序
3、编写实验报告
四、实验结果与分析
执行结果:
分析:
和预期结果相同
FORTRAN实验报告
实验日期2012年5月18日
1、实验目的
1、熟悉Fortran语言编译程序的使用
2、掌握
3、一般Fortran编写程序代码,VB做界面
二、实验内容
1、使用Fortran编程代码
realfunctioncircle_area(radius)
!
DEC$ATTRIBUTESDLLEXPORT:
:
CIRCLE_AREA
!
DEC$ATTRIBUTESALIAS:
"Circle_Area":
:
CIRCLE_AREA
implicitnone
rea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 实验 报告