Fortran语言
程序员文章站
2022-04-19 16:07:01
...
我的并行计算之路
Fortran语言
1、学习Fortran语言语法
一些注意事项
impicit none的内涵 |
---|
!为注释 |
integer(kind=1,2,4,8),real … |
read( * , * )后面没有逗号 ,read *, write( * , * )后面有逗号 , print * |
/=表示不等于,没有!= |
** 运算为求幂 |
参考教程,函数部分在Fortran过程部分
2、求两个数的最大值
命名格式:max_fortran.f90
Program maxnum
Implicit none
integer(kind=4) :: A=0,B=0
read(*,*) A, B
if(A > B) then
write(*,*) A
else
write(*,*) B
end if
End Program maxnum
3、对任意自然数n,设计一个求n的各位数字的立方和的函数子程序F(n)(如F(121)=13+23+13=1+8+1=10),并调用F(n)求1000以内的所有水仙花数(当一个数各个数位的立方和等于这个数本身时,称这样的数为水仙花数)
flower.f90
program main
implicit none
integer(kind=4):: x
integer F
read(*, *) x
print *, F(x)
end program
integer function F(x)
implicit none
integer :: x
integer, parameter :: N = 3
integer(kind=4) :: num = 0
!求余不等于0,除以10不小于0
do while( mod(x,10) /= 0 .and. x/10.0 > 0.00)
!print*, x/10
num=num+mod(x,10)**N
x=x/10
end do
!print*, x/10
F=num
end function
end function
4、二维数组运算,包括加、减、乘、乘逆
op.f90
program main
implicit none
integer(kind=4) :: x,y
character :: op
real :: num
print *, "请输入运算式"
read(*,*) x,op,y
select case (op)
case('+')
print *,x+y
case('-')
print *,x-y
case('*')
print *,x*y
case('/')
print *,x/y
case('^')
if(y>0)then
print *,x**y
else
num = 1.0/x**(-y)
print *,num
end if
end select
end program
5、一些学习记录
参考视频
强变量类型语言
IN规定类型ijklmn为整型,其他为 实型
(视频的观点,本人只了解浅表知识)IN很讨厌建议每个程序但与使用implicit None
因为Linux环境的原因,故决定学习gdb调试fortran
参考 fcode 网站视频
编译时加 -g m32表示32位编译器 | gfortran -g simp.f90 -m32 -o x.exe |
---|---|
或更简单的 | gfortran -o max_fortran max_fortran.f90 |
简单调试 | gdb x.exe |
---|---|
-g生成可调试执行文件 | gcc -g max.c -o max |
b 6 | 在第6行设置断点breakpoint |
r | 运行调试 |
c | 继续走 |
n | 向下再走一步 |
q | 退出 |
新学习到的一些命令使用方式cat -n filename显示行数 |
---|
上一篇: vue的双向数据绑定的原理
下一篇: Ubuntu搭建Samba服务器