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

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

           Program ex1
    implicit none
    real x,y,z,aver
    x=90.5
    y=87.0
    z=60.5
    aver=(x+y+z)/
    print *,'the three number are:',x,y,z
    print *,'average=',aver
    end

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

  • 调用子函数:

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

 c     Main program,to calculate the area of the circle
Program ex2
implicit none
real x,y,z,areaofcircle
x=90.5
y=87.0
z=60.5
print *,'r=',x,'area of circle=',areaofcircle(x)
print *,'r=',y,'area of circle=',areaofcircle(y)
print *,'r=',z,'area of circle=',areaofcircle(z)
end function areaofcircle(r)
implicit none
real r ,areaofcircle
areaofcircle=3.1415926*r**
return
end

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

  • 子例行函数
 c     Main program,to calculate the area of the circle
Program ex2
implicit none
real x,y,z,xarea,yarea,zarea
x=90.5
y=87.0
z=60.5
c 必须有call
call areaofcircle(x,xarea)
call areaofcircle(y,yarea)
call areaofcircle(z,zarea)
print *,'r=',x,'area of circle=',xarea
print *,'r=',y,'area of circle=',yarea
print *,'r=',z,'area of circle=',zarea
end
c 通过传址方式回传数值,利用了area的地址
subroutine areaofcircle(r,area)
implicit none
c 含有implicit none语句,那么本子程序所有变量都要显示声明
real r,area
area=3.1415926*r**
end

2. 算法

  • if:
       program readGrade
implicit none
integer num,grade,i,j
i=
j=
print *,"请输入",i,"个人的学号和成绩:"
read *,num,grade
if(grade .GT. ) then
print *,num,grade
end if
j=j+
if (j .LE. i) goto
end

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

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

判断是否是闰年:

 C     判断是否是闰年,这种c开头的注释是fortran77语法
Program isYear
implicit none
integer year!year是整数类型; 以 ! 开头的语句或!之后的部分是fortran90语法的注释
!下面是执行语句
year=
!下面是默认的读入方式
print *,'请输入年份,为整数:'
read *,year
if ( MOD(year,) .EQ. ) then
if (MOD(year,) .NE. ) then
print *,year,'年是闰年,1'
else
print *,year,'年不是闰年,1'
endif
else
if (MOD(year,) .EQ. ) then
print *,year,"年是闰年,2"
else
print *,year,'年不是闰年,2'
endif
endif end

  • 计算1-1/2+1/3-...-1/100:
       program computeSum
implicit none
real sum
integer i
sum=0.0
do i=,
if (mod(i,) .EQ. ) then
sum=sum-1.0/i
else
sum=sum+1.0/i
end if
print *,sum end
       program computeSum
implicit none
real sum
integer i
sum=0.0
do , i=, ,!10后面的逗号要不要都行
if (mod(i,) .EQ. ) then
sum=sum-1.0/i
else
sum=sum+1.0/i
end if!fortran77中不让这样,但也可以执行,兼容了
print *,sum
sum=
do , i=, ,!10后面的逗号要不要都行
if (mod(i,) .EQ. ) then
sum=sum-1.0/i
else
sum=sum+1.0/i
end if
continue!最好这样
print *,sum end

优化

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

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

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

       program arrayStudy
double precision a(:)!一维数组,包含10个整形数组
double precision b(:,:)!二维数组,3行3列
!dimension b(:,:)!和上面声明效果一样,不过是多写了一行
!double precision b
DATA C,D,E,F/-1.0,2.0,3.0,4.0/
DATA G/2.0/,H/3.0/ integer i
do ,i=,
a(i)=i**
!print *,a(i)
continue
print *,a()
end

 

       Program ex1
print *,'Hello world!'
end

fortran77.for

 

实战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. c#引用命名空间的作用

    System 包含用于定义常用值和引用数据类型.事件和事件处理程序.接口.属性和处理异常的基础类和基类.其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序 ...

  2. android的四种线程池

    使用线程池的好处: 首先通过线程池中线程的重用,减少创建和销毁线程的性能开销.其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞.最后,线程池能够对线程进行管理,比如使用Sche ...

  3. YII2中behavior行为的理解与使用

    YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为. 注意行为是对功能的扩展,不要 ...

  4. golang 创建一个简单的连接池,减少频繁的创建与关闭

    一.连接池的描述图片如下: 二.连接池代码如下: package main; import ( "time" "sync" "errors" ...

  5. python 基础数据类型 之 列表

    列表:定义 和特性 列表定义和创建: 定义:[,]内以逗号分隔,按照索引,存放各种数据类型,一般没有限制,每个位置代表一个元素 range_create = list(range(0, 10))pri ...

  6. poj 2828(线段树 逆向思考) 插队是不好的行为

    http://poj.org/problem?id=2828 插队问题,n个人,下面n行每行a,b表示这个人插在第a个人的后面和这个人的编号为b,最后输出队伍的情况 涉及到节点的问题可以用到线段树,这 ...

  7. Linux服务器有什么优势?

    为您的企业选择服务器时,您可以选择几种不同的选项.虽然许多公司使用基于Windows的服务器,但选择Linux服务器可能是您最好的选择.为什么Linux服务器比其他服务器更好?以下是使用Linux服务 ...

  8. 搭建http静态网页服务器出现“Forbidden You don't have permission to access / on this server”

    部分参考链接: 2.4+ httpd最简单example.conf, 存放目录:/etc/httpd/conf.d/example.conf Alias /newstart-zte/ "/n ...

  9. 如何通过class文件来查看java的版本

    我们知道class文件是通过javac编译生成的,如果我们想知道是java的那个版本生成的,该怎么做? 很简单,Linux下只要使用od命令,如下: 前四个字节为固定的cafe babe,接下来的四个 ...

  10. Luogu 3421 [POI2005]SKO-Knights - Exgcd

    Description 给出一个骑士的 $N$种 中行走的方式 $(a_i, b_i)$, 可以使骑士的坐标$(-a,-b)$或$(+a,+b)$. 我们需要找出 第二个骑士的 两种行走方式 $(c_ ...