第6章常用部过程_第1页
第6章常用部过程_第2页
第6章常用部过程_第3页
第6章常用部过程_第4页
第6章常用部过程_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 常用内部过程 作为一门古老而又年轻的高级计算机语言,fortran提供了大量的内部过程供程序员在编程过程中使用。并且随着新标准的推出,fortran语言的内部过程还在继续扩展,能够提供更多的常用功能,大大减轻了程序员的重复性劳动。本节主要介绍常用内部过程的基本知识。6.1 内部过程概述在fortran语言中,有很多常用的数学过程、字符处理过程和系统过程。其中,数学过程和字符处理过程通常是以函数子程序的形式存在,而系统过程则通常是以子例行子程序的形式存在。这些过程为应用程序的编写提供了非常方便的手段和丰富的功能。fortran语言将这些功能各异、用途各异的过程分别编写成一个个独立的子程序

2、,编译后组成一个大的标准过程库(有时也称为标准函数库),存放在外部存储介质(如计算机的硬盘)上。用户在完成自身源程序的编译之后,使用link命令将已翻译成二进制指令的目标程序与这个标准过程库连接起来。通过这个连接,将程序中出现过程名的地方用标准过程库中相应的一组指令代替,最终形成统一的用户可执行程序。6.2 常用数学函数 作为一种主要面向科学、工程和事务处理中的数值计算问题的高级计算机语言,fortran提供了丰富的数学函数供用户在编程时使用。本小节主要介绍在日常编程中经常会遇到和使用的数学函数。6.2.1 绝对值函数绝对值函数用于求出数据的绝对值,函数的原型如下:c = abs(x)其中,a

3、bs是fortran中绝对值函数的通用名。除了这个通用名外,绝对值函数还有4个专用名,它们是:iabs,专用于求默认种别的整型数据的绝对值,返回值也为默认种别的整型数据。abs,专用于求默认种别的实型数据的绝对值,返回值也为默认种别的实型数据。dabs,专用于求双精度实型数据的绝对值,返回值也为双精度的实型数据。cabs,专用于默认种别的复型数据的绝对值,返回值也为默认种别的复型数据。6.2.2 指数函数 指数函数用于求出数据的指数值,函数的原型如下: c = exp(x) 其中,exp是fortran中指数函数的通用名。除了这个通用名外,指数函数还有3个专用名,它们是: exp,专用于求默认

4、种别的实型数据的指数值,返回值也为默认种别的整型数据。 dexp,专用于求双精度的实型数据的指数值,返回值也为双精度的实型数据。 cexp,专用于默认种别的复型数据的指数值,返回值也为默认种别的复型数据。6.2.3 正弦函数正弦函数用于求出数据的正弦值,函数的原型如下:c = sin(x)其中,sin是fortran中正弦函数的通用名。除了这个通用名外,正弦函数还有3个专用名,它们是:sin,专用于求默认种别的实型数据的正弦值,返回值也为默认种别的整型数据。dsin,专用于求双精度的实型数据的正弦值,返回值也为双精度的实型数据。csin,专用于默认种别的复型数据的正弦值,返回值也为默认种别的复

5、型数据。函数在数学上等价于。函数中参数的单位是弧度而不是度,在使用时需要注意这一点。6.2.4 余弦函数 余弦函数用于求出数据的余弦值,函数的原型如下: c = cos(x) 其中,cos是fortran中余弦函数的通用名。除了这个通用名外,余弦函数还有3个专用名,它们是: cos,专用于求默认种别的实型数据的余弦值,返回值也为默认种别的整型数据。 dcos,专用于求双精度的实型数据的余弦值,返回值也为双精度的实型数据。 ccos,专用于默认种别的复型数据的余弦值,返回值也为默认种别的复型数据。6.2.5 反正弦函数 反正弦函数用于求出数据的反正弦值,函数的原型如下: c = asin(x)

6、其中,asin是fortran中反正弦函数的通用名。除了这个通用名外,反正弦函数还有2个专用名,它们是: asin,专用于求默认种别的实型数据的反正弦值,返回值也为默认种别的整型数据。 dasin,专用于求双精度的实型数据的反正弦值,返回值也为双精度的实型数据。6.2.6 反余弦函数 反余弦函数用于求出数据的反余弦值,函数的原型如下: c = acos(x) 其中,acos是fortran中反余弦函数的通用名。除了这个通用名外,反余弦函数还有2个专用名,它们是: acos,专用于求默认种别的实型数据的反余弦值,返回值也为默认种别的整型数据。 dacos,专用于求双精度的实型数据的反余弦值,返回

7、值也为双精度的实型数据。6.2.7 正切函数 正切函数用于求出数据的正切值,函数的原型如下: c = tan(x) 其中,tan是fortran中正切函数的通用名。除了这个通用名外,正切函数还有2个专用名,它们是: tan,专用于求默认种别的实型数据的正切值,返回值也为默认种别的整型数据。 dtan,专用于求双精度的实型数据的正切值,返回值也为双精度的实型数据。6.2.8 反正切函数 反正切函数用于求出数据的反正切值,函数的原型如下: c = atan(x) 其中,atan是fortran中反正切函数的通用名。除了这个通用名外,反正切函数还有2个专用名,它们是: atan,专用于求默认种别的实

8、型数据的反正切值,返回值也为默认种别的整型数据。 datan,专用于求双精度的实型数据的反正切值,返回值也为双精度的实型数据。6.2.9 自然对数函数 自然对数函数用于求数据的自然对数值,函数的原型如下: c = log(x) 其中,log是fortran中自然对数函数的通用名。除了这个通用名外,自然对数函数还有3个专用名,它们是: alog,专用于求默认种别的实型数据的自然对数值,返回值也为默认种别的整型数据。 dlog,专用于求双精度的实型数据的自然对数值,返回值也为双精度的实型数据。 clog,专用于求默认种别的复型数据的自然对数值,返回值也为默认种别的复型数据。6.2.10 常用对数函

9、数 常用对数函数用于求数据的常用对数值,函数的原型如下: c = log10(x) 其中,log10是fortran中常用对数函数的通用名。除了这个通用名外,常用对数函数还有2个专用名,它们是: alog10,专用于求默认种别的实型数据的常用对数值,返回值也为默认种别的整型数据。 dlog10,专用于求双精度的实型数据的常用对数值,返回值也为双精度的实型数据。6.2.11 取整函数取整函数用于将数据转换为整型,函数的原型如下:c = int(x)其中,int是fortran中取整函数的通用名。除了这个通用名外,取整函数还有3个专用名,它们是:ifix,专用于将默认种别的实型数据转换为整数,返回

10、值为默认种别的整型数据。int,专用于将默认种别的实型数据转换为整数,返回值为默认种别的整型数据。idint,专用于将双精度的实型数据转换为整数,返回值为默认种别的整型数据。函数的执行结果同数学上的取整有所不同,fortran中的取整函数只是将数据的小数部分截去,不使用四舍五入规则。函数的参数可以是实型、整型和复型。6.2.12 求余函数 求余函数用于求第一个变量被第二个变量所除后的余数,函数的原型如下: c = mod(x1, x2) 其中,mod是fortran中求余函数的通用名。除了这个通用名外,求余函数还有2个专用名,它们是: mod,适用于默认种别的整型数据,返回值为默认种别的整型数

11、据。 amod,适用于默认种别的实型数据,返回值为默认种别的实型数据。6.2.13 取符号函数 取符号函数返回第一个参数的绝对值与第二个参数的符号的乘积,函数的原型如下: c = sign(x1, x2) 其中,sign是fortran中取符号函数的通用名。除了这个通用名外,取符号函数还有3个专用名,它们是: isign,适用于默认种别的整型数据,返回值为默认种别的整型数据。 sign,适用于默认种别的实型数据,返回值为默认种别的实型数据。 dsign,适用于双精度的实型数据,返回值为双精度的实型数据。6.2.14 最大值函数最大值函数用于找出一系列数据中的最大值,函数的原型为:c = max

12、(x1, x2, x3)其中,max是fortran中最大值函数的通用名。除了这个通用名外,最大值函数还有5个专用名,它们是:max0,适用于默认种别的整型数据,返回值为默认种别的整型数据。amax0,适用于默认种别的整型数据,返回值为默认种别的实型数据。max1,适用于默认种别的实型数据,返回值为默认种别的整型数据。amax1,适用于默认种别的实型数据,返回值为默认种别的实型数据。dmax1,适用于双精度的实型数据,返回值为双精度的实型数据。6.2.15 最小值函数最小值函数用于找出一系列数据中的最小值,函数的原型为:c = min(x1, x2, x3)其中,min是fortran中最小值

13、函数的通用名。除了这个通用名外,最小值函数还有5个专用名,它们是:min0,适用于默认种别的整型数据,返回值为默认种别的整型数据。amin0,适用于默认种别的整型数据,返回值为默认种别的实型数据。min1,适用于默认种别的实型数据,返回值为默认种别的整型数据。amin1,适用于默认种别的实型数据,返回值为默认种别的实型数据。dmin1,适用于双精度的实型数据,返回值为双精度的实型数据。6.3 常用字符函数 fortran 90/95的内部函数中新增了许多和字符型数据操作有关的函数供用户使用,可以很方便地进行各种字符操作。6.3.1 字符与数值转换函数 这是一系列函数的总称,涉及到4个基本函数:

14、ichar,char,iachr和achar函数。 fortran 90/95中允许把字符型的值转换成数值型的值(已知字符得到字符在某种字符集中的序号数值),也可把数值型的值转换成字符型的值(已知字符在某种字符集中的序号数值进而得到该位置上的字符)。 函数ichar的作用是根据字符得到字符在计算机字符集中的位置,函数的原型为: c = ichar(字符数据)6.3.2 字符串长度函数 字符串长度函数用于求出参数字符实体的字段长度,函数的原型为: c = len(string) 其中,string必须是字符型,可以是字符标量也可以是字符数组。函数返回一个正整数,为该字符实体的字段长度(包括尾随空

15、格、中间空格在内)。比如len(abc 123 )的值是9(6个字符加3个空格)。 如果想要得到不计尾部空格的字符串长度,则可以使用len_trim函数。函数的原型如下: c = len_trim(string)6.3.3 子字符串位置索引函数子字符串位置索引函数的作用是找出指定子字符串在目标字符串内的起始位置,函数的原型如下:c = index(string, substring,back)其中,string表示要在其中进行索引的目标字符串;substring表示子字符串;back为逻辑型变量,当back的值为.true.时表示从目标字符串的后面开始搜索,当back的值为.false.或省略

16、不写时,表示从目标字符串的前面开始搜索。函数值返回一个正整数,指明子字符串在目标字符串中是从第几个字符开始的。目标字符串和子字符串可以是任何形式的字符实体。如果目标字符串中不含有子字符串中的内容,则函数的返回值为0。例如index(vitaminc,i)的值为2;index(vitaminc,i,back=.true.)的值为6;index(vitaminc,b)的值为0。6.3.4 字符串验证函数字符串验证函数的作用是确认指定的字符集中是否包含了给定字符串中所有的字符,函数的原型为:c = verify(string, set, ,back)其中,string为要在其中进行验证的字符集;se

17、t为给定的字符串;back表示是从字符集的前面还是后面开始验证:当back值为.true.时表示从后面开始验证,当back的值为.false.或省略不写时表示从前面开始验证。函数的返回值是一个正整数,指明给定字符串中与字符集相异的第一个字符是从左边第几个字符开始的。如果没有相异的字符,则返回函数值为0。比如verify (banana,nbc)的值为2,verify (banana,nbc,back=.true.)的值为6,verify(banana,nbca)的值为0。6.3.5 尾部空格除去函数尾部空格除去函数的作用就是除去字符串尾部的尾随空格,函数的原型为:c = trim(string

18、)函数的返回值与函数的输入参数类型相同、种别相同。返回值就是输入参数除去尾部空格后剩余的部分。比如trim(abc 123 )/34的值是abc 12334。这个函数在进行文件名的处理上较为方便:为了保存文件的完整路径名称,通常需要使用一个字段宽度较大的字符变量(在windows系统下,如果使用系统函数,一般要求256个字符宽度)。如果输入的文件实际路径名较短,则在显示时会留下大段的空格。使用trim函数就可以避免这种现象。6.3.6 字符大小比较函数 字符大小比较函数是一个函数族,共包含了4个基本函数。其作用就是比较字符在ascii字符集中的先后位置,其原型为: c = lge(string

19、_a, string_b) c = lgt(string_a, string_b) c = lle(string_a, string_b) c = llt(string_a, string_b) 四个函数都是用两个字符型实体作为参数,用来判断它们之间是否满足大于等于、大于、小于等于、小于关系。 6.4 常用系统过程 在fortran 90/95中还增加了许多常用的系统过程,这些系统过程大多采用子例行子程序的形式。这里介绍的主要是用于获得系统时间和随机数的系统过程。6.4.1 cpu时间函数该函数用于返回同处理器无关的精确的处理器运行时间,单位为秒。过程的原型如下:call cpu_time (time)其中,time是一个实型变量,用于保存处理器的运行时间。如果过程不能返回有意义的时间,则会返回一个与处理器无关的负值。cpu_time函数可以用于获得某一段可执行代码在cpu中的实际运行时间,比如下面的代码段用于确定代码执行时间并将其打印出来: real : time_begin, time_end call cpu_time ( time_begin ) !可执行代码段 call cpu_time ( time_end ) print *, time of operation was , time_end - time_begin, seconds6.4.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论