常数的申明方式

程序中所有处理的数据,有些事固定不变的常数,如圆周率π和重力加速度G等。

此时,程序员可以利用parameter来定义常量。

program main
implicit none
real pi
parameter(pi=3.1415926)
write(*,"(F4.2)") sin(pi/6)
end program main

在申明变量的时候,parameter相当于一个形容词,如果将形容词和变量申明写在一起时,冒号不能省略。如:

real*8,parameter::pi=3.1425926   ! 此处冒号不能省略

除了parameter,Fortran90还有其他的形容词。


变量初始化

Fortran90中要设置变量初值时,直接把数值写在变量的后面就可以了(当然要用赋值语句!!!)。

program main
implicit none
integer::a=5
real(kind=8)::pi=3.14
complex::c=(12.6,8.01)
character(len=80)::string="good good study,day day up!"
write(*,*)a,pi,c,string(1:76)
end program main

Fortran77则要用Data命令来赋初值。data的语法是其后接所要设置的变量,并将变量用两个斜杠封装。

PROGRAM MAIN   !Fortran77的程序
IMPLICIT NONE
INTEGER A
REAL B
COMPLEX C
CHARACTER*(80) string
DATA A,B,C,STRING/1,2.0,(1.0,2.0),'GOOD GOOD STUDY,DAY DAY UP!'/
WRITE(*,*)A,B,C,STRING(1:76)
END PROGRAM MAIN

等价申明EQUIALENCE

把两个以上变量,声明他们使用同一个内存地址,就是“等价声明”。使用等价声明就是给同一个房间取几个不同的名字,当其中一个变量的值发生变化时,与它等价的变量的值也相应的发生变化。

integer a,b
equivalence(a,b) !声明a,b使用同一块内存

类型转化

在同一个表达式中,数据类型不同,会出现什么现象?答案是,编译器会自动把数据类型转化,形成统一的数据类型在进行计算。但是并不能保证自动转化完全正确。所以最好使用强制类型转换。

INT(A)    ! 将A转换成整型
real(a) ! 将A转换成浮点型

自定义类型

先看一个例子:

type::book                    ! 定义一个名叫book的新变量类型
character(len=80)::name !记录输的名字
character(len=80)::author !记录作者
integer::totalpage !记录全书的页码数
end type book !结束类型自定义

type::book中的冒号可以省略。在定义了新类型之后就可以使用它定义该类型的变量。

program main
implicit none type::book ! 定义一个名叫book的新变量类型
character(len=80)::name !记录输的名字
character(len=80)::author !记录作者
integer::totalpage !记录全书的页码数
end type book !结束类型自定义 type(book)::a
a=book("Gone with the wind","Margaret Munnerlyn Mitchell",1608)
write(*,*)a end program main

KIND用法

kind主要用来声明变量所占内存的大小。变量占用内存大小,主要取决于变量的范围和他的有效位数的要求。

Fortran学习笔记2(变量声明)的更多相关文章

  1. 批处理学习笔记3 - 变量声明和goto代替while循环

    批处理中没有while循环,只能用goto代替.下面是代码 @echo off set /a i = 0 :again echo %i% set /a i= %i% + 1 if %i% lss 10 ...

  2. ES6学习笔记之变量声明let,const

    最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...

  3. scala学习笔记:变量声明中的模式

    先看个正常的写法: scala> val x = 1 x: Int = 1 体会一下元组的写法: scala> val (x,y,z)=(1,2,3) x: Int = 1 y: Int ...

  4. Fortran学习笔记:01 基本格式与变量声明

    Fortran学习笔记目录 01 基本格式与变量声明 格式 固定格式(Fixed Format):Fortran77 程序需要满足一种特定的格式要求,具体形式参考教材 自由格式(Free Format ...

  5. Fortran学习笔记:02 流控制语句

    Fortran学习笔记目录 书接上回:Fortran学习笔记:01 基本格式与变量声明 流控制语句 IF语句 IF (逻辑表达式) THEN ... ELSE ... END IF SELECT-CA ...

  6. (目录)Fortran学习笔记:开坑!!!

    前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...

  7. Fortran学习笔记4(循环语句)

    Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...

  8. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  9. Fortran学习笔记:03 数组(Array)

    Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...

  10. Fortran学习笔记6(函数、子程序)

    子程序Subroutine 自定义函数Function 全局变量COMMON BLOCK DATA 程序代码中,常常会在不同的地方重复用到某一功能和重复某一代码,这个时候就要使用函数.函数包括内嵌函数 ...

随机推荐

  1. 【渗透测试】如何使用burpsuite对特殊密码进行爆破

    爆破是渗透测试中必不可少的一部分,对于没有太大价值可利用的漏洞或是业务只有一个登陆页面时,爆破更是我们的最合适的选择.那么在爆破时,抛去目标系统对爆破频率的限制,如果遇到较为复杂的密码,该如何顺利进行 ...

  2. win10怎么修改DNS

    方法/步骤   1 鼠标右键桌面单击此电脑--属性,如下图所示 2 进入电脑属性,选择控制面板主页,如下图所示 3 我们继续选择网络和Internet进入,如下图所示 4 进入网络和Internet, ...

  3. 利用arguments对象在javaScript中实现重载(overload)

    一些概念: 重载(overload): 什么是: 相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数调用! 为什么: 减轻调用者的负担,一个函数名,可执行多种操作 ...

  4. python学习之列表元组,字典

    list:元素性质可以不一致,元素还可以是list,可类似数组方法进行索引(也可以用负数索引,-1表示最后一个),可用.append('')进行动态增加,可用pop()删除最后一个或者pop(i)删除 ...

  5. atomic用法

    memory order 源码变成可执行程序,一般由预编译,编译,汇编,链接.源码重排序一般分为编译期重排序和运行期重排序. 编译期重排序:编译器在不改变单线程程序的语义的前提下,可以重新安排语句的执 ...

  6. sgu316Kalevich Strikes Back(线段树+扫描线)

    做法:总体想法是求出一个矩形的面积以及它所包含的矩形,然后用自己的面积减掉所包含的.主要问题是怎样求解它所包含的矩形. 因为是没有相交点的,可以利用扫描线的方法去做,类似染色,当前段如果是x色,也就是 ...

  7. Spring之WebContext不使用web.xml启动 初始化重要的类源码分析(Servlet3.0以上的)

    入口: org.springframework.web.SpringServletContainerInitializer implements ServletContainerInitializer ...

  8. ObjextARX-VS2005-字符串转换

    1.使用string必须添加头文件 #include"string"using namespace std; 2.使用CString必须添加头文件(在非MFC工程中) #inclu ...

  9. ios has denied the launch request.

    ios has denied the launch request. You can choose either of the two ways. Solution 1: Open System Pr ...

  10. uvm_reg_sequence——寄存器模型(六)

    寄存器模型 uvm_reg_sequence是UVM自带所有register sequence 的基类. 该类包含model, adapter, reg_seqr(uvm_sequencer). 感觉 ...