由于大量的接触fortran77,先学习fortran77吧

  1. 1.fortran不区分大小写,fortran77一般全部大写,感觉没必要,不好读,还是用大小写混合着写吧。后缀 .for 为固定格式的代码,比如fortran77的代码语法就是。另一种以 .f90 为后缀,是自由格式。
  1. Program ex1
  2. print *,'Hello world!'
  3. end
  •  最好在程序开头写上implicit none语句,作用是不按照默认的数据类型。要是默认的则I和N之间所有字母开头的变量都代表这个变量是整数类型。

    1. Program ex1
    2. implicit none
    3. real x,y,z,aver
    4. x=90.5
    5. y=87.0
    6. z=60.5
    7. aver=(x+y+z)/
    8. print *,'the three number are:',x,y,z
    9. print *,'average=',aver
    10. end

    但是注意所有变量要在所有执行语句之前声明。

  • 调用子函数:

在子函数中声明与子函数同名的变量,记得要返回的值赋值给这个与子函数同名的变量。

  1. c Main program,to calculate the area of the circle
  2. Program ex2
  3. implicit none
  4. real x,y,z,areaofcircle
  5. x=90.5
  6. y=87.0
  7. z=60.5
  8. print *,'r=',x,'area of circle=',areaofcircle(x)
  9. print *,'r=',y,'area of circle=',areaofcircle(y)
  10. print *,'r=',z,'area of circle=',areaofcircle(z)
  11. end
  12.  
  13. function areaofcircle(r)
  14. implicit none
  15. real r ,areaofcircle
  16. areaofcircle=3.1415926*r**
  17. return
  18. end

从上面可以看出,子函数更像数学里一个公式,其实areaofcircle可以用一个更简单的f代替,就更好理解啦。

  • 子例行函数
  1. c Main program,to calculate the area of the circle
  2. Program ex2
  3. implicit none
  4. real x,y,z,xarea,yarea,zarea
  5. x=90.5
  6. y=87.0
  7. z=60.5
  8. c 必须有call
  9. call areaofcircle(x,xarea)
  10. call areaofcircle(y,yarea)
  11. call areaofcircle(z,zarea)
  12. print *,'r=',x,'area of circle=',xarea
  13. print *,'r=',y,'area of circle=',yarea
  14. print *,'r=',z,'area of circle=',zarea
  15. end
  16. c 通过传址方式回传数值,利用了area的地址
  17. subroutine areaofcircle(r,area)
  18. implicit none
  19. c 含有implicit none语句,那么本子程序所有变量都要显示声明
  20. real r,area
  21. area=3.1415926*r**
  22. end

2. 算法

  • if:
  1. program readGrade
  2. implicit none
  3. integer num,grade,i,j
  4. i=
  5. j=
  6. print *,"请输入",i,"个人的学号和成绩:"
  7. read *,num,grade
  8. if(grade .GT. ) then
  9. print *,num,grade
  10. end if
  11. j=j+
  12. if (j .LE. i) goto
  13. end

尽量不要用goto这种跳转,多了逻辑会很乱。可以用do 代替。

由于visual studio 2013安装的inter 的fortran编译器兼容性比较好,在.for中写fortran90的语法也不报错,所以,大于号也可以直接写 >,比如:      if(grade > 80) then

判断是否是闰年:

  1. C 判断是否是闰年,这种c开头的注释是fortran77语法
  2. Program isYear
  3. implicit none
  4. integer year!year是整数类型; ! 开头的语句或!之后的部分是fortran90语法的注释
  5. !下面是执行语句
  6. year=
  7. !下面是默认的读入方式
  8. print *,'请输入年份,为整数:'
  9. read *,year
  10. if ( MOD(year,) .EQ. ) then
  11. if (MOD(year,) .NE. ) then
  12. print *,year,'年是闰年,1'
  13. else
  14. print *,year,'年不是闰年,1'
  15. endif
  16. else
  17. if (MOD(year,) .EQ. ) then
  18. print *,year,"年是闰年,2"
  19. else
  20. print *,year,'年不是闰年,2'
  21. endif
  22. endif
  23.  
  24. end

  • 计算1-1/2+1/3-...-1/100:
  1. program computeSum
  2. implicit none
  3. real sum
  4. integer i
  5. sum=0.0
  6. do i=,
  7. if (mod(i,) .EQ. ) then
  8. sum=sum-1.0/i
  9. else
  10. sum=sum+1.0/i
  11. end if
  12. print *,sum
  13.  
  14. end
  1. program computeSum
  2. implicit none
  3. real sum
  4. integer i
  5. sum=0.0
  6. do , i=, ,!10后面的逗号要不要都行
  7. if (mod(i,) .EQ. ) then
  8. sum=sum-1.0/i
  9. else
  10. sum=sum+1.0/i
  11. end if!fortran77中不让这样,但也可以执行,兼容了
  12. print *,sum
  13. sum=
  14. do , i=, ,!10后面的逗号要不要都行
  15. if (mod(i,) .EQ. ) then
  16. sum=sum-1.0/i
  17. else
  18. sum=sum+1.0/i
  19. end if
  20. continue!最好这样
  21. print *,sum
  22.  
  23. end

优化

--------------

  1. program mymath
  2. !double real 精度要高
  3. double precision a,b!fortran77语法
  4. a=11111.1
  5. b=1111.11
  6. print *,a*b
  7. print *,sin(1.0)
  8. print *,asin(1.0)
  9. print *,log(3.0)
  10. print *,int(8.6)
  11. print *,mod(,)
  12. print *,sign(8.5,-2.0)!将后一个数的符号给前一个数
  13. print *,max(1.0,3.0,9.0,11.0,22.0,100.0)!求一系列数的最大值,但类型必须相同,都是实数
  14. print *,max(,**,,,,)!类型必须相同,都是实数,**10代表210次方
  15. print *,min(,,,,,)
  16. !real 只能表示7位数
  17. print *,0.001+123456.0-123455.0
  18. print *,123456.0-123455.0+0.001
  19. print *,1.0/3.0*3.0
  20. print *,,
  21. print *,sqrt(4.0),sqrt(9.0)!必须为实型数据
  22. print *,sqrt(a),sqrt(b)
  23. write(*,*) ''!整数占11列,两个整数占23列,说明中间有个空格
  24.  
  25. end

--------------------------

  1. program arrayStudy
  2. double precision a(:)!一维数组,包含10个整形数组
  3. double precision b(:,:)!二维数组,33
  4. !dimension b(:,:)!和上面声明效果一样,不过是多写了一行
  5. !double precision b
  6. DATA C,D,E,F/-1.0,2.0,3.0,4.0/
  7. DATA G/2.0/,H/3.0/
  8.  
  9. integer i
  10. do ,i=,
  11. a(i)=i**
  12. !print *,a(i)
  13. continue
  14. print *,a()
  15. end

 

  1. Program ex1
  2. print *,'Hello world!'
  3. end

fortran77.for

  1.  

实战fortran77基础语法2的更多相关文章

  1. 实战fortran77基础语法

    1.数组在主函数和子例行函数中传递 一个项目中有两个源代码文件: 代码: PROGRAM ARRAYZBL DOUBLE PRECISION A,B,C,D(:) INTEGER I DATA A,B ...

  2. 学习fortran77基础语法

    Program ParamaterDefine Implicit None C FORTRAN变量名和关键字不区分大小写.但调用外部函数的话,需要在编译选项里指定 c 大小写等选项 因为链接器是区分大 ...

  3. Bootstrap定制(二)less基础语法

    前几日花了一天去看less,这几日在捣鼓其他东西,项目也在有序的进行中,今天花点时间整理下less的基础语法,也分享实际中的一些经验,与众人共享. 本篇笔者以less的基础语法着手,并配合bootst ...

  4. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  5. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  6. iOS-----正则表达式的基础语法

    正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...

  7. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  8. emmet 系列(1)基础语法

    emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...

  9. Scala基础语法 (一)

    如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...

随机推荐

  1. [剑指Offer]58-翻转字符串

    题目一 翻转单词顺序 题意 输入一个英文句子,翻转句子中的单词的顺序,但单词内自负的顺序不变.标点符号和普通字母一样处理. 例: 输入:"I am a student." 输出:& ...

  2. 删除sslvpn用户

    config user localedit xinghen unset two-factornextend config user groupedit vpngroup unselect member ...

  3. java Scanner类注意事项

    1,循环或递归调用获取数字时,不能用hasNextInt()判断是否有输入,不然会陷入死循环,应该用hasNext().获取也不能用nextInt(),应用next(),否则也会死循环 例如这段代码, ...

  4. swift4.2 - 距离传感器

    import UIKit class ViewController: UIViewController { deinit { NotificationCenter.default.removeObse ...

  5. Js 怎么遍历json对象所有key及根据动态key获取值(根据key值获取相应的value值)

    Js代码 <script type="text/javascript"> getJson('age'); function getJson(key){ var json ...

  6. SprinMVC中文件上传只在内存保留一份拷贝

    背景:web项目里经常有上传文件的模块,某些特殊场景下,上传文件的人不希望在服务器留存一份原始文件,这个时候就需要把文件放到内存里了. 笔者调试了一下springmvc里面的CommonsMultip ...

  7. socketv 验证客户端链接的合法性

    一 .socketv 验证客户端链接的合法性 send()与sendall() 验证客户端 加密验证 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加 ...

  8. 求助Ubuntu16.10如何设置默认启动为字符界面

    字符界面:sudo systemctl set-default multi-user.target图形界面:sudo systemctl set-default graphical.target

  9. windbg 边学边记attach 进程和open dump的两个方式查看线程的占用cpu资源

    首先我是attach到进程的方式,附加到进程把. vs里边有个远程调试就是通过连接到远程机附加到进程操作的.在 有公网IP情况下挺好用,但涉及到nat穿越之类的,因为用户的不方便设置,这种调试方式也有 ...

  10. PHP Jquery 代码操作 内容 属性 样式 事件 Json数据

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...