您的位置:首页 > 财经 > 产业 > ps软件下载安装_迅睿cms教程_广告精准推广平台_搜索引擎优化的内容包括

ps软件下载安装_迅睿cms教程_广告精准推广平台_搜索引擎优化的内容包括

2024/12/23 12:04:22 来源:https://blog.csdn.net/2303_76186566/article/details/142820298  浏览:    关键词:ps软件下载安装_迅睿cms教程_广告精准推广平台_搜索引擎优化的内容包括
ps软件下载安装_迅睿cms教程_广告精准推广平台_搜索引擎优化的内容包括

1.输入输出及声明

1.1 Fortran程序的主要结构

程序通常以program描述来开头,后接定义的程序名(可以省略,但建议使用并取有意义的名称,便于阅读),最后以end描述结尾,可以有三种方式:end、end program与end program main。

程序基本结构:

Program main

…….

Stop

End

1.2 输出命令(write、print)

1.write命令用法

格式:write(UNIT=6,FMT=*)a

UNIT:输出位置(*表示默认值,等同于6,代表屏幕)

FMT:输出格式(*表示不限定格式)

write(*,*)a  !简写方法

注意:

(1)每次执行一次write命令,会自动换到下一行。

(2)用双引号或单引号来封装要输出的字符串。

(3)如果要输出双引号,则连续使用两个双引号。

(4)可以同时输出多个数据,中间用逗号隔开。

2.print命令用法

格式:print*,a

Print命令的用法和write大致相同,但是print后面不使用括号,而且只有一个星号。这个星号的意义是不限定输出格式,print相比于write的不同之处在于少了赋值输出位置的能力,print只能针对屏幕输出使用。

1.3 输入命令(read)

格式:read(unit=5,fmt=*)a   !严谨的写法

Unit:输入设备(*表示默认值,等同于5,代表键盘)

Fmt:输入格式(*表示不赋值输出格式)

同一行程序代码一次读入多个数值

Read(*,*)a,b,c

输入时要注意对应的变量类型,若输入内容出现空格,输入的字符串会被截断,只能得到第一个字符串的内容,解决方法是用引号封装字符串,或者使用格式化输入输出。

1.4基本数据类型

1.整数类型(integer)

格式:integer a (或integer:: a)

可以同时声明多个变量,中间用逗号隔开。声明了一个整数变量,如果赋值有小数时会忽略不计。

整型又分长整型与短整型两种,下面是长整型的声明:

      Integer(kind=4) a

      Integer*4 b

      Integer(4)c

下面是短整型的声明:

Integer(kind=2)a

Integer*2 b

Integer(2)c

2.浮点数(real)

格式:real a

不加上任何形容词时,通常会声明占用4字节的单精度浮点数,下面是单精度浮点数的声明:

      Real(kind=4)a

      Real*4 b

      Real(4)c

下面是双精度浮点数的声明:

Real(kind=8)a

Real*8 b

Real(8)c

3.复数(complex)

格式:complex a

复数是由实部和虚部两部分组成,在fortran中保存复数的方法是用两个浮点数来保存,所以复数也可以分为单精度和双精度。单精度复数声明如下:

Complex(kind=4) a

Complex*4 b

Complex(4)c

双精度复数声明如下:

      Complex(kind=8) a

      Complex*8 b

      Complex(8) c

要设置一个复数数值的方法如下:

a=(x,y) !x为实部,y为虚部,表示a=x+iy

4.字符及字符串(character)

格式:character a

声明时要求使用好几个字符,就是在声明字符串,声明方法如下:

Character(len=10) a

Character(10) b

Character*10 c

Character*(10) d

字符串类型除了直接设置之外,还可以改变字符串的某一部分,字符串可以一次只改变其中的几个字符。字符串也可以连接,连接方法是通过操作符“//”完成。

Fortran中有关字符串运行的函数:

Char(num):返回ASII字符表中数值num所代表的字符

Ichar(char):返回字符char的在ASCII字符表中的编号

Len(string):返回字符串string的声明长度

Len_trim(string):返回字符串string去除尾端空格后的实际长度

Trim(string):返回字符串string去除尾端空格后的字符串

5.逻辑变量(logical)

格式:logical a

它只用来保存两种数值:“真”或“假”

a=.true.

b=.false.

1.5 格式化输入输出(format)

格式化输入输出的目的就是吧数据经过“有计划”的版面设计显示出来。某些情况下要读取数据时,要设置恰当的输入格式。

例:write(*,“(1X,I5)”)a

  1. Iw[.m]:以w个字符宽度来输出整数,至少输出m个数字。

例:

(1)write(*,”(I5)”)100

表示以5个字符的长度来输出一个整数,输出结果前面会补2个空格。

1

0

0

(2)write(*,”(I3)”)1000

输出格式设置不足时,会输出*。

*

*

*

(3)write(*,”(I5.3)”)10

以5个字符的长度来输出一个整数,至少输出3个数字,位数不足补0。

0

1

0

  1. Fw.d:以w个字符长来输出实数,小数部分占d个字符。

例:

(1)Write(*,”(F9.3)”)123.45

表示以9个字符长度来输出实数,小数部分占3个位数。

1

2

3

.

4

5

0

(2)write(*,”(F6.3)”)123.45

总长度减小数部分与小数点长度后,整数部分长度不足会输出*。

*

*

*

*

*

*

(3)write(*,”(F9.1)”)123.45

以9个字符长度来输出实数,小数部分占1个位数。

1

2

3

.

4

3.Ew.d:用科学计数法,以w个字符长来输出实数,小数部分占d个字符长,指数部分最少输出e个数字。

例:

(1)write(*,”(E15.7)”)123.45

使用15个字符长度,小数部分占7位。总长度不足15位,前面补空格;小数部分不足7位,后面补0;指数 部分包括正负号与两位数字。

0

.

1

2

3

4

5

0

0

E

+

0

3

(2)write(*,”(E9.2E3)”)12.34

含空格共输出9个字符,其中2位小数,指数部分有三位数字。

0

.

1

2

E

+

0

0

2

4.Aw:以w个字符长来输出字符串

例:

(1)write(*,”(A10)”)“Hello”

使用10个字符长度输出字符串

H

e

l

l

o

5.nX:输出位置像右移动n位(输出n个空格)

例:

(1)write(*,”(5X.I3)”)100

先填5个空格,再输出整数。

1

0

0

6.Lw:以w个字符长来输出T或F的真假值

例:

(1)write(*,”(L4)”).true.

使用4个字符长度输出逻辑变量

T

7.Gw.d:以w个字符长来输出所有类型的数据,d不一定会使用,但不能省略。

8./:换行输出

例:

Write(*,”(I3//I3)”)10,10

结果得到三行输出,每一个“/”会换一行然后在该行继续输出。

输出结果:

1

0

1

0

9.Tc:把输出的位置移动到本行的第c个字符

Write(*,”(T3,I3)”)100/write(*,”(10X,T3,I3)”)100

把输出位置移动到第3个字符/输出位置向右移动10个字符后,移动到第3个字符

输出结果:

1

0

0

10.可以重复地以同样的格式输出数据

例:
write(*,”(3(1X,F5.2))”)1.0,2.0,3.0

连续以3个1X,F5.2的格式来输出3个实数

1

.

0

0

2

.

0

0

3

.

0

0

11.可以放进要输出的字符串

例:Write(*,”(’3+4=’,I1)”)3+4、

1.6 implicit命令

变量并不一定要经过程序的声明才能使用,编译器会根据变量名称的第一个字母来自动决定这个变量的类型。第1个字母为I,J,K,L,M,N的变量会被视为整数类型,其他字母大多会被认为是实数。

可以使用IMPLICIT命令来设置“默认类型”

例:

设置以A,B,C开头的变量都视为整型数:

Implicit integer(A,B,C)

设置A到F及I,k开头的变量都视为整型数:

Implicit integer(A-F,I,K)

设置M到P开头的变量都视为实型数:

Implicit real(M-P)

Implicit none

关闭“默认类型”功能,所有变量必须进行声明,否则会出错。

Implicit命令必须放在program命令的下一行。

1.7常量的声明

程序中有些数据是永远固定、不会改变的常数。常数只能在声明时通过parameter来设置数值,而且只能设置一次。

例:

格式:

real,parameter::pi=3.1415926

或者

real pi

Parameter(pi=3.1415926)

1.8等价声明(equivalence)

把两个以上的变量,声明使用同一内存地址,就是“等价说明”。使用同一内存位置的变量,只要改变其中一个变量,只改变其中一个变量,就会同时改变其他变量的数值。

例:

Integer a,b

Equivalence(a,b) !a,b使用同一内存空间

优点:

节省内存:声明一些暂时使用的变量

精简代码:equivalence(array(1,1,5),a)

声明的位置应该放在程序代码的可执行命令之前,在程序代码开始出现数值计算和输入输出命令时,就不能再声明变量。

DATA也算声明的一部分

Program main

  Implicit none

声明变量

可执行命令(赋值、计算、输入输出等)

End

1.9自定义数据类型

自定义数据类型:Fortran能够自由组合一些基本功能数据类型,创造出一个更复杂类型组合的功能“type”。

例:

Type::person  !开始创造一个叫person的数据类型

Character(len=30)::name

Integer::age !记录年龄

Integer::length !记录身高

Integer::weight !记录体重

Character(len=80)::address !记录姓名

end type person !自定义数据类型结束

2.逻辑循环与逻辑运算

2.1 IF语句

流程控制:在程序执行中,视情况来选择是否要执行某一段程序代码。

IF语句:能够在程序执行当中自动选择转向,跳过某些程序模块来执行程序代码。

IF用法:

(1)一个IF模块(或语句)

例:

IF(逻辑判断式)THEN

……(逻辑成立时,才会执行这里面的程序代码;逻辑不成立时,会跳到END IF之后继续执行)

END IF

如果IF模块中只有一行程序代码时,可以把与这行代码写在同一行,并省略THEN 及END IF

IF(逻辑判断式)……..

(2)一个IF-ELSE模块

例:

IF(逻辑判断式)THEN

……(逻辑成立时,执行这一段程序代码)

ELSE

……(逻辑不成立时,则执行这一段程序代码)

END IF

(3)多个IF语句嵌套模块

例:

IF(……)THEN         !第1层IF开始

IF(……)THEN     !第2层IF开始

IF(……)THEN   !第3层IF开始

Else IF(……)THEN

ELSE

END IF         !第3层IF结束

END IF           !第2层IF结束

END IF              !第1层IF结束

(4)多重判断IF-ELSE IF模块

多重判断可以一次列出多个条件及多个程序模块,但是其中最多只有一个条件成立,即最多只有一个程序模块会执行。

例:

IF(条件1)then

……(条件1成立时,执行这个模块程序)

Else if(条件2)then

……(条件2成立时,执行这个模块程序)

Else if(条件3)then

……(条件3成立时,执行这个模块程序)

Else

……(每个条件都不成立时,才执行这个模块程序,此模块可省略)

End if

2.2逻辑运算符

(1)逻辑运算符:两个数字比大小

F90以上

F77

说明

==

.EQ.

判断是否“相等”

/=

.NE.

判断是否“不相等”

>

.GT.

判断是否“大于”

>=

.GE.

判断是否“大于或等于”

<

.LT.

判断是否“小于”

<=

.LE.

判断是否“小于或等于”

(2)集合运算符:由两个或多个小的逻辑表达式组合成

.AND.

交集,如果两边的表达式都成立,整个表达式就成立

.OR.

并集,两边的表达式只要有一个成立,整个表达式就成立

.NOT.

如果后面的表达式不成立,整个表达式就成立

.EQV.

两边表达式的逻辑运算结果不同时,整个表达式就成立

.NEQV.

两边表达式的逻辑运算结果不同时,整个表达式就成立

2.3 SELECT CASE 语句

Select case(变量)   !放入所要判断的变量

Case(值1)

……       !变量等于值1时,执行此程序段

Case(值2)

……       !变量等于值2时,执行此程序段

Case(值n)

……       !变量等于值n时,执行此程序段

Case default

……       !变量不等于任何值时,执行此程序段

End select

CASE DEFAULT模块并不一定要出现,在case里的冒号前后放入两个数值时,代表这两个数字范围中的所有数值;还可以用逗号放入多个变量。

例:

Case(1) !变量=1时,会执行这个case中的程序模块

Case(1:5)!1<=变量<=5时,会执行这个case中的程序模块

使用select case来取代某些使用IF-ELSE IF的多重语句,会让程序代码看起来比较简洁。

Select case 有一些限制:

只能使用整数,字符和逻辑变量,不能使用浮点数和复数。每个case中所使用的数值必须是固定的常量,不能使用变量。

2.4 其他流程控制

1.goto命令

Goto命令提供给程序员一个任意跳跃到程序任意一行代码的能力,被跳过的代码则不会被执行。虽然这在某种情况下很方便,但是会影响代码的可读性,所以不太建议在程序中使用。

2.pause命令

程序执行到Pause时,会暂停执行,直到用户按下Enter键才会继续执行。这可以应用在当屏幕上要连续输出大量数据时,在适当的位置暂停程序,以便用户更好的阅读输出的内容。

3.continue命令

Continue命令没有什么实际的用途,它的功能

4.stop命令

终止程序。

3.循环

3.1 DO

格式:

Do counter=1,lines,1

……

End do

Counter是“计数器”,counter=1表示初始值为1,counter在使用之前需要先进行声明。

Lines是计数器的终止数值,counter<lines时会执行循环语句。

最后面的数值1代表counter变量的增量,每执行一次循环,counter就加1。

Do循环中,计数器的初值,循环终止值,以及循环增量值可以用常量或者变量来指定。

3.2 DO WHILE 循环

在循环次数未知但是循环条件已知的情况下,可以使用DO while 循环。

格式:

Do while(逻辑运算)

……

End do

3.3 循环的流程控制

1.cycle 命令

Cycle命令可以跳出本次循环,进行下一次循环,相当于c++中的continue。

2.exit 命令

Exit命令可以跳出当前循环,如果是循环嵌套的情况,则跳出的是exit语句所在的循环,面外层循环不会被其影响,相当于c++中的break。

3.4 循环的应用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com