
FORTRAN语言程序设计
(一)FORTRAN程序的结构、书写规则
1。FORTRAN程序的构成(主程序和子程序)。
2。FORTRAN源程序的书写格式。
(二)、数据类型及其运算
1。常量和变量的类型(整型、实型、双精度型、复型、逻辑型、字符型)
2。定义变量类型的方法(用I——N规则隐式说明和显示说明)。
3。符号常量及其定义方法(PARAMETER语句)。
4。运算符及运算优先级。
5。表达式(算术表达式、关系表达式、逻辑表达式和字符表达式)及其求值规则。不同类型数据的混合运算。
(三)最基本的语句
1。赋值语句(算术、逻辑和字符型赋值语句)。
2。表控格式的输入和输出。
3。格式输入与输出。
(1)格式编辑符(X、H、I、F、E、D、A、L、/),格式的重复作用。
(2)格式语句与输入输出语句(包括READ,WRITE语句)的相互作用。
(3)在输入输出语句中包括含格式说明的方法。
4。暂停语句(STOP)语句,停语句(END语句)。
5。赋初值语句(DATA语句)。
6。转移语句(GOTO语句)。
(四)选择结构程序设计
1。逻辑IF语句。
2。块IF结构。
3。选择结构的嵌套。
(五)循环结构程序设计
1。当型循环与直到型循环。
2。用DO语句实现循环:
(1)用DO语句时循环次数的计算。
(2)循环体的概念。
(3)循环终端语句和CONTINUE语句。
3。用块IF和GOTO语句实现循环。
4。循环的嵌套。
(六)数组的应用
1。定义数组的方法(用DIMENSION语句和类型语句定义一维或多维数组)。
2。数组元素的正确引用。
3。数组在内存中存储顺序(按列存储)。
4。对数组赋初值的方法。
5。数组的输入与输出。
6。可调数组。
(七)函数和子程序
1。内部函数的调用方法。
2。语句函数的定义及引用方法。
3。函数子程序(FUNCTION子程序)的结构及调用方法。
4。子例行程序(SUBROUTINE子程序)的结构及调用方法。
5。模块间的数据传递(虚实结合)。
(八)数据联系
1。公用语句(COMMON语句),无名公用区和有名公用区。
2。数据块子程序。
(九)字符处理
1。字符串、字符型变量和字符型数组。
2。字符型数据的赋值和运算。
3。字符型数据的输入与输出。
(十)文件
1。文件与记录的概念。
2。文件的打开与关闭。
3。顺序文件的存取方法。
4。直接文件的存取方法。
原作者说得没错。
e为原矩阵,f为存放e的逆矩阵,n为矩阵e的维数
你的问题是,主程序里的 e 和 f 的数据类型或精度与子程序不同。
检查一下你对 e 和 f 的定义,是否是单精度?是否是55 ?
我试了一下你的代码,子程序完全没有问题。用一个简单的主程序测试,也没问题。
!下面是我的主程序
integer n
real e(5,5) , f(5,5)
n = 5
e(:,1) = (/1,3,5,6,6/)
e(:,2) = (/3,5,7,8,4/)
e(:,3) = (/6,8,9,4,6/)
e(:,4) = (/3,6,8,9,0/)
e(:,5) = (/5,7,9,4,3/)
call Get_nizhen(e,f,n)
write( , ) f
end
!下面是你的子程序
subroutine Get_nizhen(e,f,n)
integer i,j,k
real::e(n,n),f(n,n),a(n,n)
a=e
do i=1,n
f(i,i)=1
enddo
do i=1,n
f(i,:)=f(i,:)/a(i,i)
a(i,i:n)=a(i,i:5)/a(i,i)
do j=i+1,n
do k=1,n
f(j,k)=f(j,k)-f(i,k)a(j,i)
enddo
a(j,i:n)=a(j,i:n)-a(i,i:n)a(j,i)
enddo
enddo
do i=n,1,-1
do j=i-1,1,-1
do k=1,n
f(j,k)=f(j,k)-f(i,k)a(j,i)
enddo
enddo
enddo
return
end
动态数组允许做为参数传递至子程序,但需要先 allocate,否则会出现错误。
在某些编译器里,也允许未 allocate 的动态数组传递至子程序,但必须声明为 allocatable
且必须先 allocate 后使用。
大致思路就是只要不把他们放在一个主程序内就OK了,放在同一个文件或者不同f文件都是一样的。对于第二个问题,回答也是可以的
比如说这样的程序调用:
PROGRAM MAIN
CALL SUB1
END
SUBROUTINE S
CALL SUB2
END
SUBROUTINE SUB2()
CALL SUB3
END
SUBROUTINE SUB3()
END
这几个子程序和主程序PROGRAM MAIN可以放在同一个f文件里面编译,也可以分别放置不同f文件,编译时效果一样。
Module
虽然主程序和子程序中的 LA 定义得完全一样,但是编译器依然认为是两种不同的 type。
同样都叫 LA 并不能说明这两种 type 是相同的。而 Type 的成员 A B 是否一样,目前的编译器都不会去检查。
你需要使用一个 module 来定义 Type LA,然后在主程序和子程序里使用这个 module,这样编译器才会认为是同一个 LA
do 10 i=1,25
call pbar(i)
10 continue
end
subroutine pbar(n)
integer n
character1 c
c=''
do 10 i=1,n
write(,100)c
10 continue
write(,)
100 format(A1\)
return
end
以上就是关于有关江苏省计算机二级FORTRAN的提纲重点全部的内容,包括:有关江苏省计算机二级FORTRAN的提纲重点、fortran95子程序命名,大神帮改错高分、求FORTRAN高手帮忙: 我在主程序中调用子程序时,遇到FORRTL SERVER <157> ACCESS VIOLATION的错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)