Fortran基本用法小结档

合集下载

FORTRAN知识点总结

FORTRAN知识点总结

F O R T R A N第2章FORTRAN90基础知识:程序单元的概念:fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。

每个程序只有一个主程序单元。

各单元体的程序体形式上相同。

程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。

语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。

字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。

数据结构:整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回;实型REAL ,小数形式和指数形式;复型COMPLEX (种别类型参数值取实部与虚部中较大者);字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成;逻辑型LOGICAL。

派生数据类型TYPE;数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A);字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。

变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。

第3章基本语句:类型说明语句:类型说明(种别说明),属性说明::变量名表尽量避免把两个实数作相等或不相等的比较。

淘汰隐式说明IMPLICIT NONE种别说明:种别参数即对可移植数据精度和范围进行选择的机制KIND(X) 返回变元X的种别参数值SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。

fortranwrite用法 -回复

fortranwrite用法 -回复

fortranwrite用法-回复如何正确使用Fortran编程语言中的"fortranwrite"函数。

Fortran是一种广泛应用于科学计算领域的编程语言,它的特点之一就是对于数据的读写处理非常方便。

而"fortranwrite"函数作为Fortran语言中用于写入数据到文件的函数之一,具有其独特的用法和特点。

1.引言Fortran语言中的"fortranwrite"函数可用于将数据写入文件或输出设备。

通过将数据写入文件,我们可以轻松地将计算结果保存并进行后续分析。

在本篇文章中,我们将详细讨论"fortranwrite"函数的用法及相关注意事项,以帮助读者更好地理解并正确使用该函数。

2.基本用法Fortran语言在许多方面都具有简洁而不失灵活的特点,"fortranwrite"函数的使用也不例外。

下面是一些"fortranwrite"函数的基本用法:WRITE(unit, format) var1, var2, ...其中,"unit"参数表示输出单元,可以是一个文件名或其它合法的输出设备,例如控制台;"format"参数表示数据的格式,可以是一个预定义的格式字符串或一个用户自定义的格式化语句;"var1, var2, ..."是需要写入的变量。

3.数据格式化数据格式化在数据的输出和处理中至关重要。

在Fortran语言中,"format"参数用于指定数据的格式。

Fortran提供了一种方便的方式来格式化数据输出。

例如,我们可以使用以下语句将一个整数和一个实数写入文件:WRITE(unit, '(I4, F8.2)') int_var, real_var上述代码中,"I4"表示输出一个宽度为4的整数,"F8.2"表示输出一个宽度为8的实数,其中小数点后保留两位小数。

fortran用法总结

fortran用法总结

我的Fortran基本用法小结周日, 10/14/2007 - 21:00 — gator一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=For mula Tran slator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

ortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。

以下是77和90的一些格式上的区别。

fortran print用法

fortran print用法

fortran print用法Fortran编程语言是一种高级的程序设计语言,广泛应用于科学计算、工程计算和数据处理等领域。

其中,print函数是Fortran编程语言中最常用的函数之一,用于输出数据到控制台或文件中。

Fortran的print函数有很多用法,包括格式化输出、指定输出文件、控制输出位置等。

下面我们将对Fortran中print函数的用法进行详细介绍。

1. 格式化输出格式化输出是print函数中最常用的用法之一。

格式化输出可以将数据按照一定格式输出,使输出的数据更加清晰、易读。

格式化输出可以使用格式字符串,格式字符串中包含一些特殊的控制字符,用于指定输出数据的类型、精度、宽度等信息。

格式化输出通常的语法为:```print *, format_string, variable1, variable2, ...```下面是一个简单的例子,演示如何使用Fortran的print函数进行格式化输出:```program format_outputimplicit noneinteger :: a,b,ca = 10b = 20c = a + b! 使用格式化输出将a、b、c的值输出到控制台上print *, "a = ", a, ", b = ", b, ", c = ", cend program```输出结果为:```a = 10 ,b = 20 ,c = 30```在这个例子中,我们使用了format_string字符串将输出结果进行了格式化,其中用逗号隔开的每个变量都输出了一个空格,这让输出结果更加清晰。

在Fortran中,可以通过指定格式字符串来改变输出结果的格式。

下面是一些常用的格式控制符:- %d: 整数类型- %f: 浮点数类型- %g: 通用类型(基于数据的大小选择%e或%f)- %c: 字符类型- %s: 字符串类型```program format_outputimplicit nonereal :: num1,num2,num3num1 = 1234.5678num2 = 45.6789num3 = 0.2345678! 使用格式化输出将num1、num2、num3的值输出到控制台上print *, "num1 = ", num1, ", num2 = ", num2, ", num3 = ", num3! 使用格式化输出将num1、num2、num3的值按照不同的格式输出到控制台上print *, "num1 = ", num1, " (default)"print *, "num2 = ", num2, " (f6.2)", FMT="(f6.2)"print *, "num3 = ", num3, " (g10.5)", FMT="(g10.5)"end program``````num1 = 1234.56787 , num2 = 45.6788902 , num3 = 0.234567806num1 = 1234.56787 (default)num2 = 45.68 (f6.2)num3 = 0.23457 (g10.5)```在上面的程序中,我们使用了默认的格式化输出来输出num1、num2、num3的值。

Fortran基本用法小结

Fortran基本用法小结

【以下文字转载自D_Atmosphere 讨论区】【原文由superjyq 所发表】我的Fortran基本用法小结高级语言和算法组heavensky目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的地方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

Fortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。

fortran format用法

fortran format用法

fortran format用法1.引言1.1 概述Fortran是一种编程语言,由IBM公司于1950年代开发。

它被广泛应用于科学计算和数值分析领域,尤其在大规模计算和高性能计算方面表现出色。

Fortran语言的一个重要特性是它的格式化输出功能,即Fortran Format。

Fortran Format是一种格式控制语句,用于指定数据的输出或输入格式。

它可以精确地控制数据的显示方式,包括字段宽度、数值精度、对齐方式等。

通过使用Fortran Format,程序员可以轻松地格式化输出数据,使其更易于阅读和理解。

在Fortran程序中,可以使用一些特定的符号和代码来定义格式控制语句。

例如,可以使用A表示字符型数据、I表示整型数据、F表示浮点型数据等。

通过在格式控制语句中使用这些符号和代码,可以将不同类型和长度的数据格式化为适合打印或写入文件的形式。

除了基本的数据类型,Fortran Format还提供了许多其他功能,如控制字段宽度、指数表示法、对齐方式、填充字符等。

这些功能使得程序员能够自定义数据的输出格式,满足特定需求。

Fortran Format在科学计算和数据处理中扮演着重要的角色。

它可以帮助程序员更好地展示和共享计算结果,提高代码的可读性和可维护性。

此外,由于Fortran Format提供了丰富的格式化选项,它还可以用于数据文件的读写操作。

本文将介绍Fortran Format的基本概念和常用用法。

首先,我们将讨论Fortran Format的基本原理和语法规则。

然后,我们将探讨一些常见的格式化选项,包括字段宽度控制、数值精度控制和对齐方式控制等。

最后,我们将总结Fortran Format的重要性,并展望它在未来发展中的潜力。

通过本篇文章的阅读,读者将能够全面了解Fortran Format的用法和作用,提高对Fortran编程的理解和应用能力。

无论是初学者还是有一定经验的程序员,都可以从中获益,使其编写的Fortran程序更加出色和实用。

fortranwrite用法

fortranwrite用法

fortranwrite用法Fortran中的fortranwrite是一个用于文件写入的子程序。

它提供了一种将数据以二进制格式写入文件的方法,并可以按照指定格式将数据转换为字符文本。

fortranwrite具有灵活的选项,可以根据不同的需求调整数据写入的方式。

fortranwrite的基本语法如下:`WRITE (unit, format) [input-list]`其中,unit指定了要写入的文件单元号,通常是一个整数或逻辑单元号。

这个单元号可以是事先由OPEN语句获得的逻辑单元号,也可以是内建的实体所定义的逻辑单元号(如*或者"stdout"表示控制台输出,或者trim文件的单元号)。

format是一个字符表达式,用于指定将数据转换为字符的格式。

格式指令是用于指定如何写入和读取数据的符号,也称为“格式编辑描述符”。

Fortran的格式编辑描述符包括格式宽度、字段宽度、编辑序列等。

input-list是需要写入文件的数据列表。

数据可以是常数、数组、变量或者复合结构。

input-list中的每个元素都按照format中的格式转换为字符并写入文件。

下面是使用fortranwrite的一个例子:fortranprogram write_exampleimplicit noneinteger :: i, jreal :: x(10), y(10)! 给数组x和y赋值do i = 1, 10x(i) = iy(i) = i2end do! 打开文件并写入数据open(unit=10, file='data.dat', status='replace', action='write') do i = 1, 10write(10, '(2F10.2)') x(i), y(i)end doclose(unit=10)! 从文件读取数据并打印open(unit=10, file='data.dat', status='old', action='read')do i = 1, 10read(10, '(2F10.2)') x(i), y(i)end doclose(unit=10)! 打印读取到的数据do i = 1, 10write(*, '(2F10.2)') x(i), y(i)end doend program write_example在上面的示例中,我们首先定义了两个数组x和y,然后使用do循环为它们赋值。

fortran contains用法

fortran contains用法

Fortran contains用法1. 简介Fortran是一种面向科学计算的编程语言,最初由IBM公司于1957年开发。

Fortran以其高性能和可靠性而闻名,特别适用于数值计算和科学工程领域。

在Fortran中,可以使用contains关键字来定义子程序,使得代码更加模块化和可读性更强。

2. contains关键字的作用contains关键字用于定义在主程序中使用的子程序。

它可以将子程序的代码与主程序的代码分开,使得代码更加清晰和易于维护。

contains关键字可以在一个Fortran模块或一个主程序中使用。

3. contains关键字的语法在Fortran中,使用contains关键字来定义子程序的语法如下:subroutine/subroutine_name(arguments)! 子程序的代码end subroutine/subroutine_namefunction/function_name(arguments) result(result_variable)! 子程序的代码end function/function_name其中,subroutine_name和function_name是子程序的名称,arguments是传递给子程序的参数列表,result_variable是函数返回的结果。

4. contains关键字的示例下面是一个使用contains关键字定义子程序的示例:program mainimplicit noneinteger :: a, b, suma = 5b = 10sum = add_numbers(a, b)print *, "The sum of", a, "and", b, "is", sumcontainssubroutine add_numbers(x, y)implicit noneinteger, intent(in) :: x, yinteger :: resultresult= x + yprint *, "Adding", x, "and", yprint *, "The result is", resultend subroutine add_numbersend program main在上面的示例中,定义了一个主程序main和一个子程序add_numbers。

fortran知识点总结

fortran知识点总结

fortran知识点总结一、语法结构Fortran语言的语法结构遵循一套严格的规则。

下面是一些常见的语法结构:1. 程序单元:Fortran程序由一个或多个程序单元组成。

每个程序单元由一个或多个声明和执行语句组成。

2. 注释:在Fortran中,注释可以用来提高代码的可读性。

注释以感叹号(!)开头,直到行末为止。

3. 标识符:Fortran中的标识符由字母、数字和下划线组成,且区分大小写。

标识符用于表示变量、函数、子程序等。

4. 变量声明:在Fortran中,变量声明使用关键字“REAL”、“INTEGER”、“LOGICAL”等来指定变量的数据类型。

例如,REAL :: x 表示声明了一个实数类型的变量x。

5. 程序控制结构:Fortran提供了多种控制结构,包括顺序结构、条件结构和循环结构。

这些结构提供了程序的流程控制和逻辑控制。

6. 函数和子程序:Fortran支持函数和子程序的定义和调用。

函数和子程序可以帮助程序员组织和重用代码。

7. 模块和接口:Fortran中的模块和接口提供了一种组织代码的方式。

模块可以包含多个子程序和全局变量,接口可以用来定义子程序的接口。

二、数据类型在Fortran中,数据类型用于表示数据的类型和大小。

Fortran提供了多种数据类型,包括整数、实数、逻辑值、字符、复数等。

下面是一些常见的数据类型:1. 整数:整数类型用于表示整数值。

在Fortran中,整数类型包括“INTEGER”、“LOGICAL” 和“CHARACTER”类型。

2. 实数:实数类型用于表示实数值。

在Fortran中,实数类型包括“REAL”和“COMPLEX”类型。

REAL类型用于表示实数,COMPLEX类型用于表示复数。

3. 字符:字符类型用于表示字符值。

在Fortran中,字符类型使用CHARACTER关键字进行声明。

字符类型可以表示单个字符或者字符数组。

4. 数组:数组类型用于表示多个相同类型的数据。

fortran function的用法

fortran function的用法

fortran function的用法Fortran语言是一种非常古老的高级程序设计语言,它在科学计算及数值分析方面得到了广泛的应用。

其中,Fortran function是Fortran语言中的一个非常重要的概念。

本文将以Fortran function 为主线,分步骤介绍Fortran function的用法。

一、Fortran function概述Fortran function是Fortran语言中的一个重要概念,它与Fortran subroutine类似,但有一些不同之处。

Fortran function也是一段能够完成特定任务的代码模块,与Fortran subroutine不同的是,Fortran function有返回值,而Fortran subroutine则没有。

因此,Fortran function可用于表示函数关系,而Fortran subroutine 则更多地用于完成某些具体的操作。

二、Fortran function用法Fortran function的使用与Fortran subroutine有一些不同之处。

下面将具体介绍Fortran function的用法。

1.函数声明在Fortran程序中,声明一个函数需要使用如下格式:function 函数名(参数列表) 返回值类型其中,函数名需要符合Fortran语言的命名规则;参数列表包含了函数所需要的输入参数;返回值类型指定了函数返回的类型。

例如,如下代码段定义了一个Fortran function,它接受两个实数作为输入参数,返回它们的和:function add(a, b)real :: a, breal :: addadd = a + bend function2.调用函数在Fortran程序中,调用一个已经定义好的Fortran function 需要使用如下格式:result = 函数名(参数列表)其中,result是一个变量,用于存储函数的返回值;函数名是要调用的函数的名称;参数列表指定了函数需要的输入参数。

Fortran基本用法小结

Fortran基本用法小结

2、Fortran的主要版本及差别
按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran77和Fortr
an90。 Fortran90在Fortran77基础上添加了不少使用的功能,并且改良了77编程的版面格式,
所以编程 时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保
program main
!程序开始,main是program的名字,完全自定义
write(*,*)"Hello" !主程序
stop
!终止程序
end[program[main]] !end用于封装代码,表示代码编写完毕。
[]中的内容可省略,下同。
再看一段实用一些的程序,好有点感性认识。程序用于计算圆柱的表面积,要求输入底面
一、说明
本文多数内容是我读彭国伦《Fortran95程序设计》的笔记。只读到第九章,主要是3~9
章,都是 些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不
/?uid-1039-action-viewspace-itemid-16895
/?uid-1039-action-viewspace-itemid-16895
4/9
13-4-13
[转载] Fortran基本用法小结 - 朱文举的给排水专业博客 - 国科社区-国家科技成果网 - Powered by X-Space
interactive_loop: do
/?uid-1039-action-viewspace-itemid-16895
6/9
13-4-13
[转载] Fortran基本用法小结 - 朱文举的给排水专业博客 - 国科社区-国家科技成果网 - Powered by X-Space

fortran用法小结

fortran用法小结

Fortran用法小结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9 章,都是最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran 和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

Fortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortr an90。

Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。

以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

fortran结构体用法

fortran结构体用法

fortran结构体用法在Fortran中,结构体是一种用户自定义的数据类型,它可以包含多个不同的数据类型。

以下是Fortran结构体的基本用法:1. 结构体的定义:使用type关键字定义一个结构体,其语法如下:```Fortran`type type_name [attributes] :: var1 [attributes] :: var2 … [attributes] :: varnend type type_name````其中,type_name表示结构体名称,var1、var2…varn表示结构体中包含的变量名称,attributes表示可选的属性参数。

2. 结构体的声明:声明一个结构体变量时,需要使用type关键字和结构体名称,语法如下:```type(type_name) :: var_name```````fortrantype(Book) :: mybook```3. 结构体成员的访问:在定义一个结构体后,其中的字段(如title、author、id等)被称为该结构体的成员。

在Fortran中,通过%符号来访问一个结构体的成员。

例如,访问mybook的title成员可以使用以下语法:```fortranmybook%title```4. 结构体的使用:使用结构体的关键是它可以组合多个不同的变量类型,形成一个新的复合类型,以方便在程序中进行操作。

由于Fortran的强类型特性,结构体定义的变量和函数必须使用结构体的名称进行访问。

5. 结构体的初始化:可以使用赋值语句或构造语句对结构体进行初始化。

例如:mybook = Book("title", "author", "id")```6. 结构体的输入输出:可以使用输入输出语句对结构体进行输入和输出操作。

例如:```fortranread(,) mybook%title, mybook%author, mybook%idwrite(,) "Title:", mybook%title, "Author:", mybook%author, "ID:", mybook%id```以上是Fortran中结构体的基本用法,可以通过具体的示例代码进行进一步的学习和掌握。

Fortran语言编程小结

Fortran语言编程小结

1.单双精度Program ex01implicit nonereal(kind=4) :: areal(kind=8) :: ba=3.66666666666666666666666_4 ! 确定这个数字是使用单精度b=3.66666666666666666666666_8 ! 确定这个数字是使用双精度write(*,*) a,bEnd program ex012.判断kind值program ex02Implicit none ! 判断可以记录9个位数的整数kind值integer, parameter :: long_int = selected_int_kind( 9 ) ! 判断可以记录3个位数的整数kind值integer, parameter :: short_int = selected_int_kind( 3 )! 判断可以有3个有效位数, 指数可以记录到3的浮点数kind值integer, parameter :: long_real = selected_real_kind( 10, 50 )! 判断可以有10个有效位数, 指数可以记录到50的浮点数kind值integer, parameter :: short_real= selected_real_kind( 3, 3 )integer(kind=long_int) :: a = 123456integer(kind=short_int) :: b = 123real(kind=long_real) :: c = +1.23456789D45real(kind=short_real) :: d =+1230write(*, "(I3,1X,I10)" ) long_int, awrite(*, "(I3,1X,I10)" ) short_int, bwrite(*, "(I3,1X,E10.5)" ) long_real, cwrite(*, "(I3,1X,E10.5)" ) short_real, dEND3.TYPEprogram ex0434implicit noneType :: person ! 开始建立person这个类型character(len=30) :: name ! 人名integer :: age ! 年龄integer :: height ! 身高INTEGER :: weight ! 体重character(len=80) :: address ! 地址End type persontype(person) :: a ! 声明一个person类型的变量write(*,*) "NAME:"read(*,*) a%namewrite(*,*) "AGE:"read(*,*) a%agewrite(*,*) "HEIGHT:"read(*,*) a%heightwrite(*,*) "WEIGHT:"read(*,*) a%weightwrite(*,*) "ADDRESS:"read(*,*) a%addresswrite(*,100) a%name,a%age,a%height,a%weight100 format("Name:",A10/,"Age:",I3/,"Height:",I3/,"Weight:",I3/,&"Addres:",A80)End4.REAL 与INTEGERProgram ex0431implicit noneinteger :: a=1integer :: b=2real :: cc=a/b ! c=1/2=0, 虽然c是浮点数,但因为a,b是整数,计算a/b时会用整数去计算. write(*,"(F5.2)") cEnd5.DATA 变量表/初值表/,变量表/初值表/,…PROGRAM ex0430IMPLICIT NONEINTEGER AREAL BCOMPLEX CCHARACTER(20) STRDA TA A,B,C,STR /1, 2.0, (1.0,2.0), 'FORTRAN 77'/WRITE(*,*) A,B,,C,STREND6.复数实虚部Program ex0430complex :: c = (1,2)write(*,100)real(c),'+',aimag(c),'i'100 format(f5.1,a1,f5.1,a1)End7.逻辑输出Program ex0416logical a,ba=.true.b=.false.write(*,100) a,b100 format(L5,L4)End8.Program ex0415character(len=20) stringcharacter(len=5) substringstring = "Have a nice day."substring = "nice"write(*,*) ichar('A') ! 输出字符A的ASCII码write(*,*) char(65) ! 输出ASCII码65所代表的字符,也就是A write(*,*) len(string) ! 输出字符串string声明时的长度write(*,*) len_trim(string) ! 输出字符串string内容的长度write(*,*) index(string, substring) ! nice在Have a nice day的第8个位置End9.Program ex0414character(len= 6) firstcharacter(len=10) secondcharacter(len=20) addfirst="Happy "second="Birthday"add = first//second ! 经由两个连续的除号可以连接两个字符串write(*,100) add100 FORMAT('生日快乐',/,A)End10.带精度计算Program ex0408real(kind=8) :: a,ba=1b=0.1write(*,*) a,"+",b,"=",a+bEnd11.逻辑if语句Program ex0504implicit noneinteger rain, windspeedlogical r,wwrite(*,*) "Rain:"read(*,*) rainwrite(*,*) "Wind:"read(*,*) windspeedr = (rain>=500) ! 如果rain>=150, r=.true, 不然r=.false.w = (windspeed>=10) ! 如果windspeed>=10, w=.true, 不然w=.false. if ( r .or. w ) then ! 只要r或w有一个值是true就成立write(*,*) "停止上班上课"elsewrite(*,*) "照常上班上课"End ifEnd12.Select Case用法Program ex0512implicit noneinteger :: scorecharacter gradewrite(*,*) "Score:"read(*,*) scoreselect case(score)case(90:100)grade='A'case(80:89)grade='B'case defaultgrade='?'End selectwrite(*,"('Grade:',A1)") gradeEnd13.IF GOTO语句PROGRAM ex0514IMPLICIT NONEREAL heightREAL weightWRITE(*,*) "height:"READ(*,*) heightWRITE(*,*) "weight:"READ(*,*) weightIF ( weight > height-100 ) GOTO 200100 WRITE(*,*) "Under control."GOTO 300200 WRITE(*,*) "Too fat!"300 STOPEND14.DO WHILE 循环Program ex0604implicit noneinteger, parameter :: limit=10integer counterinteger :: ans = 0counter = 2do while( counter <= limit )ans = ans + countercounter = counter + 2end dowrite(*,*) ansEND15.CYCLE,EXIT 语句Program ex0609implicit noneinteger :: i,jloop1: do i=1,3loop2: do j=1,3if ( i==3 ) exit loop1 ! 跳离loop1循环if ( j==2 ) cycle loop2 ! 重做loop2循环write(*, "('(',i2,',',i2,')')" ) i, jend do loop2end do loop1End16.大小写字符Program ex0612implicit noneinteger iinteger strlencharacter(len=20) :: stringwrite(*,*) "String:"read(*,*) stringstrlen = LEN_TRIM(string)do i = 1, strlenstring(i:i) = char( ichar(string(i:i)) +32 )end dowrite(*,"('encoded:',A20)") stringEnd17.循环计算Program ex0614implicit nonereal a,b,anscharacter :: key = 'y' !为了至少循环一次do while( key=='y' .or. key=='Y' )read(*,*) aread(*,"(A1)") keyread(*,*) bselect case(key)case('+')ans = a+bcase('-')ans = a-bcase('*')ans = a*bcase('/')ans = a/bcase defaultwrite(*,"('Unknown operator ',A1)") keystopend selectwrite(*,"(F6.2,A1,F6.2,'=',F6.2)") a,key,b,answrite(*,*) "(Y/y) to do again. (Other) to exit."read(*,"(A1)") keyend doEnd18.矩阵相加pogram eximplicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: matrixA(row,col)integer :: matrixB(row,col)integer :: matrixC(row,col)integer rinteger cwrite(*,*) "Matrix A"do r=1, rowdo c=1, colwrite(*,"('A(',I1,',',I1,')=')") r,cread(*,*) matrixA(r,c)end doend dowrite(*,*) "Matrix B"do r=1, rowdo c=1, colwrite(*,"('B(',I1,',',I1,')=')") r,cread(*,*) matrixB(r,c)end doend dowrite(*,*) "Matrix A+B="do r=1, rowdo c=1, colmatrixC(r,c) = matrixB(r,c)+matrixA(r,c)write(*,"('(',I1,',',I1,')=',I3)") r,c,matrixC(r,c)end doend doend pogram ex[ write(*,"(I3,I3,/,I3,I3)") ((mc(i,j), i=1,2),j=1,2)]19.program eximplicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: a(2,2)=(/ 1,2,3,4 /)! a(1,1)=1, a(2,1)=2, a(1,2)=3, a(2,2)=4integer :: b(4)=(/ 5,6,7,8 /)integer :: c(2)write(*,*) a,2)write(*,*) a(:,1)c = a(:,1) ! c(1)=a(1,1), c(2)=a(2,1)write(*,*) c ! c(1), c(2)c = a(2,:) ! c(1)=a(2,1), c(2)=a(2,2)write(*,*) c ! c(1), c(2)write(*,*) c(2:1:-1) ! c(2), c(1)c = b(1:4:2) ! c(1)=b(1), c(2)=b(3)write(*,*) c ! c(1), c(2)End20.FORALL语句Program exImplicit noneinteger :: I,Jinteger, parameter :: size = 5integer :: a(size,size)forall ( I=1:size, J=1:size, I>J ) a(I,J)=1 ! 上半部分forall ( I=1:size, J=1:size, I==J ) a(I,J)=2 ! 对角线forall ( I=1:size, J=1:size, I<J ) a(I,J)=3 !下半部分write(*,"(5(5I5,/))") aEnd21.AllocatableProgram EXImplicit noneinteger :: size, error=0integer, parameter :: one_mb=1024*1024 ! 1MBcharacter, allocatable :: a(:)Dosize=size+one_mb !allocate( a(size), stat=error )if ( error/=0 ) exitwrite(*,"('Allocate ',I10, ' bytes')") sizewrite(*,"(F10.2,' MB used')") real(size)/real(one_mb)deallocate( a )End doEnd22.Function 函数Program eximplicit nonereal :: a=10real :: b=20real :: addwrite(*,"(f6.2)") add(a,b)EndFunction add(a,b)implicit nonereal :: a,breal :: addadd = a*bEnd23.SAVE语句Program exImplicit nonecall sub()call sub()call sub()End programSubroutine sub()Implicit noneInteger :: count = 1Save count ! 指定save变量永远活着,不会忘记它的内容Write(*,*) countcount = count+1End [运行结果:1 2 3 ]24.生成随机数program eximplicit noneinterface ! 定义函数的接口function random10(lbound, ubound)implicit nonereal :: lbound, uboundreal :: random10(10)end functionend interfacereal :: a(10)CALL RANDOM_SEED() ! 系统根据日期和时间随机地提供种子a = random10(1.0, 10.0)write(*,"(10F6.2)") aendfunction random10(lbound, ubound)implicit nonereal :: lbound, uboundreal :: lenreal :: random10(10)real tinteger ilen = ubound - lbound ! 计算范围大小do i=1,10call random_number(t) ! t会是0~1之间的随机数random10(i) = lbound + len * t ! 把t转换成lbound~ubound间的随机数end doEnd25.MODULE语句Module globalimplicit noneinteger a,bcommon a,bEnd moduleProgram ex0834use globalimplicit nonea=1b=2call sub()End programSubroutine sub()use globalimplicit nonewrite(*,*) a,breturnEnd subroutine26.写文件到textprogram ex0902implicit nonecharacter(len=20) :: stringopen(unit=10, file="test.txt")write(10,"(A20)") "I LOVE YOU." ! 写到文件中rewind(10)read(10,"(A20)") string ! 从文件中读出来write(*,"(A20)") string ! 写到屏幕上end27.随机成绩program gendataimplicit noneinteger studentsinteger ireal r(3)write(*,"(4A5)") "座位","语文","数学","英语" call random_seed()write(*,*) "How many students?"read(*,*) studentsdo i=1,studentscall random_number(r)write(*,"(6I5)") i,int(r*50+50)end doend program。

Fortran基本用法小结

Fortran基本用法小结

Fortran基本用法小结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=For mula Tran slator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

ortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。

以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f 或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

fortranwrite用法

fortranwrite用法

fortranwrite用法一、Fortranwrite简介Fortranwrite是一种用于文件读写的Fortran语言的函数或子程序。

它可以实现将数据写入文件或者从文件中读取数据的功能,是Fortran语言中非常常用的工具之一。

Fortranwrite函数的用法灵活多样,可以根据不同的需求选择合适的方式进行数据写入。

下面将介绍Fortranwrite的用法及相关注意事项。

二、Fortranwrite的基本用法Fortranwrite函数的基本用法如下:```CALL Fortranwrite(Unit, Data, Numbytes)```其中,Unit是文件的编号,Data是待写入的数据,Numbytes是待写入数据的字节数。

三、Fortranwrite的参数类型1. Unit参数类型Unit参数是Fortranwrite函数中用来指定文件编号的参数。

在写入文件前,需要先打开文件,并获得一个文件编号。

文件编号是一个整型数值,它可以是任意非零正整数,表示文件的唯一标识符。

一般情况下,可以使用以下代码获得一个文件编号:```OPEN(Unit=Unit, File=FileName, Status=Status, Action=Action)其中,FileName是文件名,Status是文件打开状态(如"OLD"表示打开已存在的文件,"NEW"表示创建新文件),Action是文件打开方式(如"READ"表示只读,"WRITE"表示只写,"APPEND"表示在文件末尾追加写入)。

2. Data参数类型Data参数是Fortranwrite函数中用来指定待写入数据的参数。

Data的类型可以是Fortran中的任意数据类型,例如整型、实型、字符型等。

3. Numbytes参数类型Numbytes参数是Fortranwrite函数中用来指定待写入数据的字节数的参数。

Fortran程序总结

Fortran程序总结

1.行的书写(行的长度、分行、续行)一行可以是0~132个字符,空格有意义,语句最长不超过2640个字符一行可以有多个语句,用“;”分隔一个语句可分行写,读行标记为&(放在尾部),但如为关键字,首尾均加&。

最多可有511个续行。

2.说明语句必须出现在可执行语句之前,格式说明语句(FORMAT语句)除外。

3.注释标志符:自由格式:!固定格式:C *语句分隔符:分号;(仅自由格式可以使用)续行符:自由格式:&申明标号: 1到5位无符号整数空格:关键字、变量、常量内部不能用空格,但相邻两者之间须用空格4.信息处理的分类:数值处理和信息处理现代计算机工作原理:程序存储和程序控制(冯·诺依曼)1、运算器——算术运算、逻辑运算2、控制器——根据指令控制计算机工作运算器、控制器和寄存器称为中央处理器CPU3、I/O设备——提供数据传输服务4、总线——数据传输的公共通道1.机器语言:二进制代码形式,可以被计算机直接执行,不可移植2.汇编语言:用助记符来代替机器指令,容易记忆,不可移植3.高级语言:接近自然语言(英语)的程序设计语言,又称算法语言,易学、易用、易维护,可移植性好例:FORTRAN、BASIC、PASCAL、C、LISP、PROLOG 等5.FORTRAN90程序是一种分块结构,由若干个程序单元块组成:主程序、外部子程序、模块、块数据单元无论是主程序单元,还是子程序单元,都是独立的程序单位,应该独立编写,它们的形式相似。

非语句行:注释语句:!后的所有字符都被编译器忽略。

可独占一行,也可在其它语句之后,空行为注释行(固定格式用C和*)6.常量的定义:常量是程序执行过程中不能变化的量。

基本数据类型有五种:整型、实型、复型、字符型和逻辑型前三种属于数值类型,后两种为非数值类型,主要用于文字处理和控制。

FORTRAN 90通过KIND值确定整数的存储开销、最大位数和取值范围,如表所示。

(完整版)FORTRAN90用法总结,推荐文档

(完整版)FORTRAN90用法总结,推荐文档

(完整版)FORTRAN90用法总结,推荐文档FORTRAN90用法总结1、数据类型整型 INTEGER实型 REAL复型 COMPLEX字符型 CHARACTER逻辑型 LOGICAL2、特殊函数1>定值函数PARAMETER(变量列表) 或类型说明符,PARAMETER::变量列表2>IMPLICIT 类型说明符(字母表)类型定义函数(默认I-N规则,取消IMPLICIT NONE)3>** 乘方4>STOP[标号]终止执行5>PAUSE[标号]暂停程序6>字符串长度函数 LEN(String)、 LEN_TRIM(String)7>除去字符串尾部空格 TRIM(String)8>字符串位置函数 INDEX(String1,String2)9>字符串比较函数LGE(String1,String2)LGT(String1,String2)LLE(String1,String2)LLT(String1,String2)10>字符串空格首位调整ADJUSTL(String)、ADJUSTR(String)11>字符串、ASSII码互相转化函数①化为ASSII码 ICHAR(String)、IACHAR(String)②化为字符串CHAR(I)、ACHAR(I)12>.LT.(<) .LE.(<=) .EQ.(=) .NE.(/=) .GT.(>) .GE.(>=)13>.AND.与 .OR.或 .NOT.非 .EQV.等于 .NEQV.不等 .XOR.异或3、IF函数1> 单支IFIF(逻辑表达式) THEN块语句END IF2> 双支IFIF(逻辑表达式) THEN块语句1ELSE块语句2END IF3>多支IFIF(逻辑表达式1) THEN块语句1ELSE IF(逻辑表达式2) THEN块语句1...ELSE IF(逻辑表达式N) THEN块语句NELSE块语句N+1END IF4>逻辑IFIF(条件表达式)可执行语句5>算术IFIF(算术表达式)标号1,标号2,标号3 标号1 可执行语句1 标号2 可执行语句2标号3 可执行语句3 4、CASE块SELECT CASE(表达式) CASE(表达式1)块语句1...CASE(表达式N)块语句NCASE DEFAULT默认块语句END SELSCT5、循环函数1>循环控制语句IF(e) EXIT 终止循环2>CYCLE跳出此次循环3>DO循环DO i=e1,e2[,e3]循环体END DO4>DO WHILE循环DO WHILE(逻辑表达式) 循环体END DO6、输入输出1>表控输入输出READ *,变量表PRINT *,输出表WRITE(*,*)输出表2>自定义输入输出标号 FORMAT(格式说明)3>其他编辑符①nX 向右跳过n个字符②nH 输出字符串③/ 换行④\ 连接7、数组1>说明数组DIMENSION 数组名类型说明,DIMENSION(维说明)::数组名2>数组赋初值DA TA 数组名/....../,数组名/....../,...3>动态数组①声明[类型],DIMENSION(:[,:]...),ALLOCA TABLE::数组名[类型],ALLOCATABLE::数组名(:[,:]...)...②申请ALLOCATE(数组名(维说明))③释放DEALLOCATE(数组名)8、子程序1>子程序CONTAINS(内部子程序的标志(外部EXTERNAL))[类型说明] FUNCTION 函数名(虚参表)函数体END2>子例行程序SUBROUTINE 子例行程序名(虚参表)函数体END调用CALL 子例行程序名(实参表)3>递归调用RECURSIVE FUNCTION(SUBROUTINE)函数名(虚参表) RESULT(返回值) 函数体END9、结构体1>定义TYPE [,ACCESS[::]] 派生类名称(ACCESS=PRIV ATE(私有),PUBLIC(公有)) 分量表END TYPE 派生类名称2>类型定义TYPE(派生类名称)::结构体变量名3>结构体成员引用①结构体名%成员名②结构体名.成员名4>定义的同时赋值TYPE(派生数据类型名)::结构体变量名=派生数据类型名(成员初值表)5>结构体数组TYPE(派生数据类型名),DIMENSION(维说明符)::结构体数组名10、指针1>定义指针类型说明,POINTER::指针变量名...类型说明,TARGET::目标变量名...P=>A2>动态变量例:INTEGER,POINTER::PINTEGER SALLOCA TE(P)P=4S=PDEALLOCA TE(P)PRINT *,SEND3>指针数组变量定义类型说明,DIMENSION(:...:),POINTER::指针变量名ALLOCATE(X(20))DEALLOCA TE(X)4>定义结点TYPE NODEINTEGER V ALUETYPE(NOPE),POINTER::NEXTEND TYPE NODE5>定义头指针TYPE LISTPRIV ATETYPE(NODE),POINTER::ENDEND TYPE LIST6>对指针初始化(对头指针清空)SUBROUTINE SETUP(L) TYPE(LIST)LNULLIFY(L%END)END SUBROUTINE SETUP。

fortran基本语法

fortran基本语法

fortran基本语法Fortran是一种高级编程语言,它的全称是Formula Translation,最初是为数学和科学工作者设计的。

它的语法简单易学,特别适合数值计算、科学计算、工程计算和数据处理等领域。

本文将介绍Fortran的基本语法。

1.程序结构Fortran程序由一系列语句组成,每个语句占一行。

程序的执行顺序是从上到下、从左到右。

程序中可以包含注释,注释以“!”开始,直到行末为止。

Fortran程序通常由三个部分组成:程序头、主程序和子程序。

程序头包含程序的名称、作者、日期等信息。

主程序是Fortran程序的核心,它包含了程序的主要计算过程。

子程序是主程序的辅助程序,在主程序中可以调用子程序完成某些计算任务。

2.变量和常量Fortran中的变量是用来保存数据的,变量的类型可以是整数、实数、字符、逻辑等。

变量名必须以字母开头,长度不超过31个字符。

变量的赋值使用符号“=”,例如:a = 10b = 3.14c = 'Hello, World!'Fortran中的常量是指在程序执行期间不会改变的值,常量可以是整数、实数、字符、逻辑等。

Fortran中的常量可以使用以下符号表示:整数常量:例如5,-10等。

实数常量:例如3.14159,-2.5E-3等。

字符常量:例如'Hello, World!','A'等。

逻辑常量:例如.TRUE.,.FALSE.等。

3.运算符Fortran中的运算符包括算术运算符、逻辑运算符和关系运算符。

算术运算符:加:+减:-乘:*除:/幂:**逻辑运算符:非:.NOT.与:.AND.或:.OR.关系运算符:等于:==不等于:/=大于:>小于:<大于等于:>=小于等于:<=4.控制结构Fortran中的控制结构包括分支结构和循环结构。

分支结构:IF语句:根据条件执行不同的语句。

IF (a > b) THENPRINT *, 'a is greater than b'ELSEPRINT *, 'b is greater than a'END IFSELECT CASE语句:根据表达式的值执行不同的语句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Fortran基本用法小结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的地方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

Fortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。

以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for (1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入输出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

Fortran 90:自由格式(free format),扩展名:.f90(1)以"!"引导注释;(2)每行可132字符,行代码放在每行最前面;(3)以&续行,放在该行末或下行初。

以下都是讨论Fortran 90。

3、Fortran的一些特点和C不同,在下面涉及具体方面时可以看到。

这里只是大致提一些。

(1)不分大小写(2)每句末尾不必要写分号(3)程序代码命令间的空格没有意义(4)不像C,Fortran不使用{ }(5)数据类型多出了复数和逻辑判断类型。

比如复数类型complex :: a !声明复数的方法。

复数显然方便了科学计算,满足了工程方面的需求a=(1.0,2.0) ! a=1+i(6)多出了乘幂运算(**)。

乘幂除了整数还可以是实数形式。

如开方,开立方a=4.0**0.5,a=8.0**(1.0/3.0)。

(7)数组有一些整体操作的功能;可以方便的对部分元素进行操作(8)有些情况下可以声明大小待定的数组,很实用的功能4、Fortran的基本程序结构先看一看所谓的"Hello Fortran"程序。

program main !程序开始,main是program的名字,完全自定义write(*,*) "Hello" !主程序stop !终止程序end [program[main]] !end用于封装代码,表示代码编写完毕。

[ ]中的内容可省略,下同。

再看一段实用一些的程序,好有点感性认识。

程序用于计算圆柱的表面积,要求输入底面半径和高。

其中展示了Fortran的一些特色用法。

程序摘自维基。

其实是一个叫的网上引用的维基的网页。

推荐去看看!能查到不少有意思的东西。

program cylinder !给主函数起个名字! Calculate the area of a cylinder.! Declare variables and constants.! constants=pi! variables=radius squared and heightimplicit none ! Require all variables to be explicitly declared ! 这个一般都是要写上的。

下面会进一步说明。

integer :: ierrcharacter :: ynreal :: radius, height, areareal, parameter :: pi = 3.1415926536 !这是常量的声明方法interactive_loop: do !do循环,Fortran中的循环可以加标签,如do前!面的 interactive_loop就是标签! Prompt the user for radius and height and read them.write (*,*) 'Enter radius and height.' !屏幕输出read (*,*,iostat=ierr) radius,height !键盘输入。

isotat的值用于判断!输入成功否。

! If radius and height could not be read from input,! then cycle through the loop.if (ierr /= 0) thenwrite(*,*) 'Error, invalid input.'cycle interactive_loop !cycle 相当于C里的continueend if! Compute area. The ** means "raise to a power."area = 2 * pi * (radius**2 + radius*height) ! 指数运算比C 方便! Write the input variables (radius, height)! and output (area) to the screen.write (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') & !"&"表示续行。

这里!还显示了格式化输出'radius=',radius,'height=',height,'area=',areayn = ' 'yn_loop: do !内嵌的另一个do循环write(*,*) 'Perform another calculation? y[n]'read(*,'(a1)') ynif (yn=='y' .or. yn=='Y') exit yn_loopif (yn=='n' .or. yn=='N' .or. yn==' ') exit interactive_loop end do yn_loop !结束内嵌do循环end do interactive_loopend program cylinderFortran程序的主要结构就是这样了。

一般还会有些module的部分在主函数前,函数在主函数后。

三、数据类型及基本输入输出1、数据类型,声明及赋初值(1)integer:短整型kind=2, 长整型kind=4integer([kind=]2) :: a=3如果声明成integer:: a,则默认为长整型。

!"::" 在声明并同时赋初值时必须要写上;类型名后面有形容词时也必须有;其他情况可略去 !所谓形容词,可以看一下这个。

比如声明常数real,parameter :: pi=3.1415926 。

parameter就是形容词。

(2)real:单精度kind=4(默认),双精度kind=8real([kind=]8) :: a=3.0还有指数的形式,如1E10为单精度,1D10为双精度(3)complex 单精度和双精度complex([kind=]4) b(4)charactercharacter([len=]10) c !len为最大长度(5)logicallogical*2 :: d=.ture. (等价于logical(2)::d=.ture.)(6)自定义类型type:类似于C中的structFortran 77中给变量赋初值常用DATA命令,可同时给多个变量赋初值data a,b,string /1, 2.0, 'fortran'/与C不同的是,Fortran中变量不声明也能使用,即有默认类型(跟implicit命令有关)。

按照默认的规定,以i,j,k,l,m,n开头的变量被定义为integer,其余为real。

取消该设置需在程序声明部分之前加implicit none。

彭国伦建议一般都使用该语句。

另一点关于声明的不同是Fortran有"等价声明":integer a,bequivalence(a,b)使得a,b使用同一块内存。

这样可以节省内存;有时可精简代码。

如:equivalence(很长名字的变量,比如三维数组的某个元素,a),之后使用a来编写程序就简洁多了。

2、基本输入输出输入:read(*,*) a !从键盘读入输出:write(*,*) "text" !在屏幕上输出。

Fortran 77用 'text'。

Fortran 90!一般" "和' '都可print *,"text" !只能屏幕输出(*,*)完整写为(unit=*,fmt=*)。

其中unit为输入/输出位置,如屏幕,文件等;fmt为格式。

如果这两项都写成*,则按默认的方式进行,即上面描述的。

print后面的*表示按默认格式输出。

四、流程控制1、运算符(1)逻辑运算符== /= > >= < <= !Fortran 90用法.EQ. .NE. .GT. .GE. .LT. .LE. !Fortran 77用法(2)涉及相互关系的集合运算符.AND. .OR. .NOT. .EQV. .NEQV.! 仅.NOT.连接一个表达式,其余左右两边都要有表达式(可以是logical类型的变量)!.EQV.:当两边逻辑运算值相同时为真, .NEQV.:当两边逻辑运算值不同时为真2、IF(1) 基本:if(逻辑判断式) then……end if如果then后面只有一句,可写为if(逻辑判断式) …… !then和end if可省略(2) 多重判断:if(逻辑判断式) then……else if……else ifelse……end if(3) 嵌套:if(逻辑判断式) thenif(逻辑判断式) thenif(逻辑判断式) thenelse if(逻辑判断式) then……else……end if !没必要跟C语句多时用{}了,因为有end ifend ifend if(4) 算术判断:program exampleimplicit nonereal cwrite (*,*) "input a number"read (*,*) cif(c) 10,20,30 !10,20和30为行代码,根据c小于/等于/大于0,执行10/20/30行的程序10 write (*,*) "A"goto 40 !goto可实现跳到任意前面或后面的行代码处,但用多了破坏程序结构20 write (*,*) "B"goto 4030 write (*,*) "C"goto 4040 stopend3、SELECT CASE类似于C的switch语句select case(变量)case(数值1) ! 比如case(1:5)代表1<=变量<=5会执行该模块…… !case(1,3,5)代表变量等于1或3或5会执行该模块case(数值2) !括号中数值只能是integer,character或logical型常量,不能是real型……case defaultend case4、PAUSE, CONTINUEpause暂停程序执行,按enter可继续执行continue貌似没什么用处,可用作封装程序的标志五、循环1、DOdo counter=初值, 终值, 增/减量 !counter的值从初值到终值按增/减量变化,…… !counter每取一个值对应着一次循环。

相关文档
最新文档