TypechoJoeTheme

MetMan's Blog

网站页面
搜索到 13 篇与 的结果 ———
2023-10-21

Fortran字符串处理下篇

Fortran字符串处理下篇
字符与数值类型转换通过ASCII表转换常用的字符与整数一一映射的编码表是ASCII表,规定了256个字符与0-255整数一一对应关系。下表是Fortran用于两者互相转换的内置函数,其中ACHAR与CHAR、IACHAR与ICHAR区别在于一个指定使用ASCII表,另一个是处理器使用的编码表,不一定是ASCII表。但通常两者是等价的。内置过程名功能ACHAR(I)返回整数对应的ASCII码表中字符CHAR(I,[,KIND])返回给定整数对应的处理器使用的编码序列字符IACHAR(C)返回ASCII表中字符对应的十进制整数ICHAR(C)返回处理器使用的编码表中字符对应的整数ASCII码表中字符A-Z、a-b、0-9都是有序、连续排列的,利用这个特点我们可以对字符串进行大小比较、大小写转换等操作。下面示例程序实现了一个转换大写字符串的功能。module string_utils implicit none contains function to_upper(str) implicit none character(len=*),intent(in) :...
2023年10月21日
151 阅读
0 评论
2023-10-21

Fortran字符串处理上篇

Fortran字符串处理上篇
Fortran中使用character声明单个字符或多个字符组成的字符(串)变量。Fortran标准也提供了一些内置函数用于字符串处理,但总体来说Fortran字符串处理能力和C语言一样都不是很强。说明:可以将character声明的变量理解成字符串变量。字符串变量声明与赋值声明!字符常量 character(len=5),parameter :: constr = 'Hello' character :: ch !单个字符变量 character(len=10) :: str !长度为10的字符(串)变量 character*10 :: str1 !使用*length 方式声明 character*10 :: str_arr(10) !长度为10的字符数组变量,数组有10个元素推荐使用character(len=length)声明字符串变字符串。赋值str = 'nice to' str1 = ' meet you' str_arr(1) = str !字符串变量之间赋值将一个字符串变量值赋给另一个字符串变量,不要求两个字符串变量长度相同,如果短字符串赋给长字符串...
2023年10月21日
165 阅读
0 评论
2023-10-21

Fortran Interface更多功能

Fortran Interface更多功能
过程重载过程重载类似C++中的函数重载功能,使用相同的过程名称,但根据接口匹配情况编译器调用不同的过程。编译器会根据实际调用过程的参数、返回值特征在接口块中匹配某个过程,如果匹配不上编译器会报错。过程重载定义要求接口块中多个过程的接口要有区别,不能有歧义,否则编译器不能确定使用哪个过程。一般会将多个功能相同、但传递参数区别的过程写在一个接口块中,实现过程重载功能。Fortran内置函数重度使用该功能,比如三角函数sin(x)可以对单精度、双精度、复数的参数x求sin,对应的函数是sin(x)、dsin(x)、csin(x)等。过程重载常用于函数库的编写,提供统一过程名称供用户使用。比如我们读写NetCDF数据时经常要根据处理变量的类型(整型、单双精度实型)、不同维数数组传递不同的参数给NetCDF提供的库函数。我们可以利用过程重载功能将这些细节进行封装,根据传递参数的不同编写多个处理过程,然后封装成一个接口过程供用户使用,用户不用处理这些繁琐的细节。以下是两个外部过程iadd,radd通过过程重载功能供主程序调用,我们既可以使用add这个接口名称,也可以直接使用特定的过程,比如对...
2023年10月21日
170 阅读
0 评论
2023-10-21

Fortran过程接口

Fortran过程接口
前言为了避免英文术语翻译成中文带来的歧义,首先解释下本文涉及的Fortran术语。procedure过程,简单理解就是指Fortran的函数(function)和子例程(subroutine)function函数,与C函数相同,在表达式中被调用评估(evalute)返回函数值subroutine子例程,CALL语句调用,没有返回值,类似C语言中返回类型是void的函数procedure interface过程接口,类似C语言中函数声明dummy argument哑元,也可以称为虚参,过程定义时参数actual argument实参,过程调用时传入的参数过程接口含义及分类每个过程都有一个接口说明:包括过程名称和特征,每个哑元的名称、特征及可能存在的过程被引用的通用generic标识符。上述过程特征包括:函数还是子例程如果是函数,返回值特征哑元特征是否是pure/impure/elemental是否有BIND属性哑元特征包括(也就是类型、属性登):类型和类型参数(有的话)shape/intent是否是optional是否是allocatable是否是pointer或target是否p...
2023年10月21日
169 阅读
0 评论
2023-10-21

Fortran现代化

Fortran现代化
前言Fortran作为一门非常古老的高级语言(1957年由IBM公司Backus等人设计实现),至今仍是科学工程计算领域主要编程语言之一。但由于Fortran没有跟上互联网时代现代软件开发实践,Fortran受欢迎程度在降低,使用场景逐渐被C++、Python等语言取代。大学里开设Fortran编程课程的也不多,导致Fortran生力军缺乏。下图是编程语言排行榜TIOBE Index统计的Fortran语言二十多年来的热门程度。最好的排名是在2002年排到了第10名;最低位置在2020年,第50名;目前最新排名是26名。Fortran优点Fortran语言以下设计理念及特点仍使其作为追求高性能数值计算的首选语言。目前气象数值模式领域依然将其作为主要编程语言。简单易学 正如Fortran名字由来“公式翻译器”,Fortran面向数值计算领域科学计算,语法简单易学,能够让科学家快速写出高性能的代码。Fortran强类型声明、指针的限制使用(虽然指针是C语言的最大特色)使程序不容易出错。高性能 Fortran与C/C++性能处于同一级别。作为静态强类型的编译型语言,编译器可以进行充分...
2023年10月21日
143 阅读
0 评论

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码