第2章 Fortran程序设计基础.

Slides:



Advertisements
Similar presentations
上页下页  结束返回首页 一、微分的定义 二、微分的几何意义 三、微分公式与微分运算法则 微分的定义 可微与可导的关系 基本初等函数的微分公式 函数和差积商的微分法则 复合函数的微分法则 上页下页  结束返回首页 §2 . 6 函数的微分.
Advertisements

1 第二讲 C++ 编程基础. 2 主要内容 C++ 语言概述 C++ 编程基础 数据的简单输入输出 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境.
学年高三一轮复习 第五章 机械能及其守恒定律 第 3 节 机械能守恒定律及其应用 作课人:李明 单 位:河南省淮滨高级中学 时 间: 2015 年 10 月 12 日.
应用软件Excel 对外经济贸易大学信息学院.
第2章 Visual Basic 6.0编程基础 (第一部分)
电子成绩单项目实现.
Computational Geometry
欢迎大家来到生命科学课堂.
岳阳市教学竞赛课件 勾股定理 授课者 赵真金.
Matlab教學 Speaker:林昱志 Date:2012/10/18.
上課囉 職場甘苦談 小資男孩向錢衝 育碁數位科技 呂宗益/副理.
致亲爱的同学们 天空的幸福是穿一身蓝 森林的幸福是披一身绿 阳光的幸福是如钻石般耀眼 老师的幸福是因为认识了你们 愿你们努力进取,永不言败.
1.1.2 四 种 命 题.
Chapter 4 流程控制.
算法和程序设计 第4课 分支结构的算法设计 •.
四 VBScript编程基础.
第八章 符号表 符号表的作用: 一致性检查和作用域分析; 辅助代码生成..
VB內建函數與應用.
第五章 数 组 Fortran 90数组的特点: *** 可以逐个元素对数组进行操作,也可以对数组整体、数组段直接进行操作;
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
MATLAB介紹.
第3章 變數、資料型別與運算子.
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
第四章 程序设计初步 顺序结构:赋值语句、输出语句
Visual Foxpro程序设计 第三章 VisualFoxpro中的数据 123.
算法与程序设计.
第4章 程序控制结构与算法基础.
Visual Basic 程序设计 教师:王 杨 电话:
第3章 Visual Basic语言基础 郭清溥.
Chapter 2 Basic Elements of Fortran
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
新觀念的 VB6 教本 第 6 章 資料型別.
第八章 欧氏空间 8.1 向量的内积 8.2 正交基 8.3 正交变换 8.4 对称变换和对称矩阵.
第五模块 微积分学的应用 第四节 二阶常系数线性微分方程.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
第4章 常量和变量 常量和变量都是程序中预留的用于保存数据的内存空间。常量的值在程序运行过程中始终不会发生变化。而变量的值在程序的运行过程中是可以变化的。在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)。按用途,又可以分数值型、字符型和逻辑型三种。相应的常量和变量也可以分为这三种。本章将按照用途介绍常量和变量的基本概念。
第2课时 三角变换与求值 要点·疑点·考点 课 前 热 身   能力·思维·方法   延伸·拓展 误 解 分 析.
1 試求下列各值: cos 137°cos (-583°) + sin 137°sin (-583°)。
Introduction to MATLAB
算法与程序设计 周少品.
第三章 VB语言基础 本章重点和难点 3.1 Visual Basic 程序代码的组织方式 3.2 代码行的书写规则
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
1 在平面上畫出角度分別是-45°,210°,675°的角。 (1) (2) (3)
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
第6章 常用内部过程 作为一门古老而又年轻的高级计算机语言,Fortran提供了大量的内部过程供程序员在编程过程中使用。并且随着新标准的推出,Fortran语言的内部过程还在继续扩展,能够提供更多的常用功能,大大减轻了程序员的重复性劳动。本节主要介绍常用内部过程的基本知识。
第3章 流程控制和逻辑运算.
数学实验与MATLAB简介  课程的背景和基本要求 MATLAB 使用简介 MATLAB 常用函数介绍 宝石切割问题实验.
第2章 数据类型及表达式 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
第 二 章 数据类型、运算符与表达式.
课题:已知三角函数值求角 sina tana y P 。 x P’ 。.
莫爾圓應力分析 (動畫資源取材自張國彬 葛兆忠老師)
实验教学 MATLAB在行列式和矩阵中的应用 授课教师:杨梦云.
第6章 運算式與運算子 [算術與多功能計算機]
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
第二章 基本数据类型 ——数据的表示.
第7章 MATLAB工程计算.
美丽的旋转.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
三角比的恆等式 .
VB语言基础 一、 常量 1 定义:在程序运行过程中不能发生改变的量 2 分类 整型常量: 整数 不带小数点的数 数值常量
Fortran 实用编程 系列视频教程 Fortran Coder 研讨团队
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第二模块 函数、极限、连续 第七节 无穷小量的比较
Fortran 实用编程 系列视频教程 Fortran Coder 研讨团队
三角 三角 三角 函数 已知三角函数值求角.
Presentation transcript:

第2章 Fortran程序设计基础

Win 7 OS Microsoft Visual Studio Intel Visual Fortran 安装

安装文件 Grid.ustc.edu.cn 学校已经购买正版安装文件

安装过程

初步使用

初步使用 编译 连接 运行(Debug) 运行(非Debug) 在Release模式下,编译程序只会将源代码中的有效语句编译成可执行文件,因此编译出来的可执行文件“个头小”、“跑得快”。

编写Fortran程序所能使用的字符和符号 字符集和书面格式 编写Fortran程序所能使用的字符和符号 英文26个字母 A-Z及a-z (不区分大小写) 数字 0-9 22个特殊符号 :=+-*/(),.’!”%&;<>?$_以及空格 书面格式 文件后缀名 固定格式 *.f 或者*.for 自由格式 *.f90

自由格式注意事项 叹号!后面的文本均为注释 每行可以编写132个字符 一行程序代码的最后如果是符号&,代表下一行程序会和这一行连接。如果一行程序代码的开头是符号&,代表它会和上一行程序连接。 空格实际无意义,主要用来作为分割以及方便阅读程序代码使用。字符串中出现除外。 C=A+B C=A+& B C=A+ &B

数据类型的概念 数值型 数据 类型 非数值型 数据类型有四个性质: 类型名:如:Integer 允许值的集合:如整型 长整型 短整型 REAL 单精度 双精度 COMPLEX 非数值型 CHARACTER 字符 字符串 LOGICAL 数据类型有四个性质: 类型名:如:Integer 允许值的集合:如整型 允许值(常量)的表示方法 操作这些值的运算集合

整型数据 整型变量的说明基本格式为: INTEGER [ ( [ KIND = ] 类别参数值 ) ] [ [ ,属性列表 ] :: ] 变量列表 其中类别参数值取1,2,4 例:INTEGER I,TOTAL INTEGER(2) :: K,LIMIT INTEGER(KIND=4) :: MIN,MAX INTEGER*2 :: K,LIMIT INTEGER*4 :: MIN,MAX

整型数据 INTEGER I,N ! 默认整型 INTEGER(2)::K,L ! 两字节整型 integer*2::n=1,m !两字节表示 INTEGER*4::MIN,MAX !四字节表示 integer*4 m,n1,n2,n3 !四字节表示

变量的属性 属性是被说明对象的所属性质。一个对象被说明具有某一属性时,就使该对象具有某种附加功能、特殊的使用方式与适用范围。属性的种类有很多,这里介绍两种最常见属性的说明格式。 INTEGER, PARAMETER :: I=5,J=24 INTERGER, DIMENSION(1:10) :: A

整型数据 整数不应包括小数点,例如8.0不是整数 整数可以包含数符,例如,+8(与8等价),-8 整数常数各数字间的空格不起作用 类别参数 字节数 取值范围 1 -128~127 2 -32,768~32,767 4 -2,147,483,648~2,147,483,647 整数不应包括小数点,例如8.0不是整数 整数可以包含数符,例如,+8(与8等价),-8 整数常数各数字间的空格不起作用 整数常数不允许加入逗号

整型数据 在FORTRAN90中,还可以使用二进制、八进制和十六进制整型常量,但它只能用于DATA语句中。 二进制常量的形式是以字母B开头,后跟用一对撇号或双引号括起来的数字串,而且每个数字不是0就是1。例如 B'10101101'、B"1011101" 八进制常量的形式是以字母O开头,后跟用一对撇号或双引号括起来的数字串,而且每个数字是0到7之间的一个数字。例如,O'453'、O"376"。 十六进制常量的形式是以字母Z开头,后跟用一对撇号或双引号括起来的数字串,而且每个数字是0到9或字母A到F之间的一个。例如,Z'FFA9'、 B"9B45" 。 INTEGER i, j, k DATA i /B'110010'/ DATA j /O'62'/ DATA k /Z'32'/ 题目2.1 请写出如下三组数对应的二进制、八进制和十六进制形式。 B'110010‘ O'62‘ Z'32'

实型数据 FORTRAN用类别类型参数区分不同类型的实型数据。实型数据有单精度和双精度之分。单精度类别类型参数值为4,双精度数类别类型参数值为8。 一般形式为: 有效数E指数 有效数D指数

实型变量的说明 REAL [ ( [KIND = ] 类别参数值) ] [ [ ,属性列表] :: ] 变量列表 单精度用REAL(4)定义,双精度用REAL(8)或DOUBLE PRECISION定义。缺省的类别值为4,即为单精度。 REAL :: M12,AREA,LEN REAL(4) :: DX,DY REAL*4 :: DX,DY REAL(8) :: D_PRE,X REAL*8 :: D_PRE,X DOUBLE PRECISION :: D_PRE,X

实型数据 单精度类型 REAL X,Y REAL(4):: A,B 等价于 REAL*4::A,B 双精度类型(一般为8个字节来存储数据,提供15~17位有效数字) REAL(8)::X1,X2 等价于 REAL*8::X1,X2 REAL*8 X1,X2 或者 DOUBLE PRECISION X1,X2

双精度数据类型 Fortran中双精度常数要用指数表示(小数位数达到15位: 如:12.3456789 → 1.2345656789D+1 注意:不可写成 1.2345676789E-1 否则相当于 1.234568E-1 2018/11/13 18

复型数据 复型变量 COMPLEX [ ( [KIND = ] 类别值) ] [ [ ,属性列表] :: ] 变量列表 COMPLEX Z1,Z2 COMPLEX(4) :: COM_VAL COMPLEX(8) :: CZ, CQ CZ = (3.0, 6.3) CQ = (8.76E+5, -67.8E-3) Fortran中复型常数要用一个括弧中的两个实数来表示,第一个实数表示复数中的实部,第二个实数表示复数中的虚部。 如:1+2.5i → (1.0, 2.5) -5.4i → (0.0, 5.4)

复型类型数据 直接赋值 如: c=(3.0, 4.0) d=(8.76E+5, -5.8E-3) 当实部和虚部不是常数,而是表达式时,则应该用CMPLX函数将实部和虚部组成复型数据再赋给复型变量 如: C=cmplx( 3.0*A, 5.0+B )

复型类型数据 如果CMPLX函数只有一个自变量,则它代表实部 如:cmplx(3.0) → (3.0, 0.0) 在内存中一个复型数据占两个实数的存储单元,在PC中通常为8个字节

数学运算符号 数值型类型 + 加法 –减法 *乘法 / 除法 **乘幂(特别注意,两个星号要连续) () 括号 (表示括号部分优先计算)

运算注意事项 乘号用*表示,不可以写成×(避免和X混淆),也不能用 ’.’ 代替。 两个运算符不能紧邻,例如A*-B 是不合法的 运算符优先级 () > ** > *,/ > +,- 同一优先级的两个运算,按“先左后右”原则 3**2**3=? Fortran 77 规定,对于多次乘方按照“先右后左”原则 题目2.2 请采用Fortran90 自由格式编写程序,计算 3**2**3=?

运算类型问题 同类型算术量之间的运算保持原类型 4*8/5=? 不同类型算术量之间的运算,编译系统会将他们首先转换成同一类型,然后进行运算。转换的规律是,将低级类型转换成高级类型 4*8.0/5=? 1/4*20.0=?

数值型运算内部函数 作为一种主要面向科学、工程和事务处理中的数值计算问题的高级计算机语言,Fortran提供了丰富的数学函数供用户在编程时使用。 无需自己编写,仅需直接调用,最终由编译器连接生成可执行文件

绝对值函数 绝对值函数用于求出数据的绝对值,函数的原型如下: C = ABS(X) 其中,ABS是Fortran中绝对值函数的通用名。除了这个通用名外,绝对值函数还有4个专用名,它们是: IABS,专用于求默认种别的整型数据的绝对值,返回值也为默认种别的整型数据。 ABS,专用于求默认种别的实型数据的绝对值,返回值也为默认种别的实型数据。 DABS,专用于求双精度实型数据的绝对值,返回值也为双精度的实型数据。 CABS,专用于默认种别的复型数据的绝对值,返回值也为默认种别的复型数据。

指数函数 指数函数用于求出数据的指数值,函数的原型如下: C = EXP(X) 其中,EXP是Fortran中指数函数的通用名。除了这个通用名外,指数函数还有3个专用名,它们是: EXP,专用于求默认种别的实型数据的指数值,返回值也为默认种别的整型数据。 DEXP,专用于求双精度的实型数据的指数值,返回值也为双精度的实型数据。 CEXP,专用于默认种别的复型数据的指数值,返回值也为默认种别的复型数据。

正弦函数 正弦函数用于求出数据的正弦值,函数的原型如下: C = SIN(X) 其中,SIN是Fortran中正弦函数的通用名。除了这个通用名外,正弦函数还有3个专用名,它们是: SIN,专用于求默认种别的实型数据的正弦值,返回值也为默认种别的整型数据。 DSIN,专用于求双精度的实型数据的正弦值,返回值也为双精度的实型数据。 CSIN,专用于默认种别的复型数据的正弦值,返回值也为默认种别的复型数据。 函数在数学上等价于。函数中参数的单位是弧度而不是度,在使用时需要注意这一点。

余弦函数 余弦函数用于求出数据的余弦值,函数的原型如下: C = COS(X) 其中,COS是Fortran中余弦函数的通用名。除了这个通用名外,余弦函数还有3个专用名,它们是: COS,专用于求默认种别的实型数据的余弦值,返回值也为默认种别的整型数据。 DCOS,专用于求双精度的实型数据的余弦值,返回值也为双精度的实型数据。 CCOS,专用于默认种别的复型数据的余弦值,返回值也为默认种别的复型数据。

6.2.5 反正弦函数 反正弦函数用于求出数据的反正弦值,函数的原型如下: C = ASIN(X) 6.2.5 反正弦函数 反正弦函数用于求出数据的反正弦值,函数的原型如下: C = ASIN(X) 其中,ASIN是Fortran中反正弦函数的通用名。除了这个通用名外,反正弦函数还有2个专用名,它们是: ASIN,专用于求默认种别的实型数据的反正弦值,返回值也为默认种别的整型数据。 DASIN,专用于求双精度的实型数据的反正弦值,返回值也为双精度的实型数据。

反余弦函数 反余弦函数用于求出数据的反余弦值,函数的原型如下: C = ACOS(X) 其中,ACOS是Fortran中反余弦函数的通用名。除了这个通用名外,反余弦函数还有2个专用名,它们是: ACOS,专用于求默认种别的实型数据的反余弦值,返回值也为默认种别的整型数据。 DACOS,专用于求双精度的实型数据的反余弦值,返回值也为双精度的实型数据。

正切函数 正切函数用于求出数据的正切值,函数的原型如下: C = TAN(X) 其中,TAN是Fortran中正切函数的通用名。除了这个通用名外,正切函数还有2个专用名,它们是: TAN,专用于求默认种别的实型数据的正切值,返回值也为默认种别的整型数据。 DTAN,专用于求双精度的实型数据的正切值,返回值也为双精度的实型数据。

反正切函数 反正切函数用于求出数据的反正切值,函数的原型如下: C = ATAN(X) 其中,ATAN是Fortran中反正切函数的通用名。除了这个通用名外,反正切函数还有2个专用名,它们是: ATAN,专用于求默认种别的实型数据的反正切值,返回值也为默认种别的整型数据。 DATAN,专用于求双精度的实型数据的反正切值,返回值也为双精度的实型数据。

自然对数函数 自然对数函数用于求数据的自然对数值,函数的原型如下: C = LOG(X) 其中,LOG是Fortran中自然对数函数的通用名。除了这个通用名外,自然对数函数还有3个专用名,它们是: ALOG,专用于求默认种别的实型数据的自然对数值,返回值也为默认种别的整型数据。 DLOG,专用于求双精度的实型数据的自然对数值,返回值也为双精度的实型数据。 CLOG,专用于求默认种别的复型数据的自然对数值,返回值也为默认种别的复型数据。

6.2.10 常用对数函数 常用对数函数用于求数据的常用对数值,函数的原型如下: C = LOG10(X) 6.2.10 常用对数函数 常用对数函数用于求数据的常用对数值,函数的原型如下: C = LOG10(X) 其中,LOG10是Fortran中常用对数函数的通用名。除了这个通用名外,常用对数函数还有2个专用名,它们是: ALOG10,专用于求默认种别的实型数据的常用对数值,返回值也为默认种别的整型数据。 DLOG10,专用于求双精度的实型数据的常用对数值,返回值也为双精度的实型数据。

取整函数 取整函数用于将数据转换为整型,函数的原型如下: C = INT(X) 其中,INT是Fortran中取整函数的通用名。除了这个通用名外,取整函数还有3个专用名,它们是: IFIX,专用于将默认种别的实型数据转换为整数,返回值为默认种别的整型数据。 INT,专用于将默认种别的实型数据转换为整数,返回值为默认种别的整型数据。 IDINT,专用于将双精度的实型数据转换为整数,返回值为默认种别的整型数据。 函数的执行结果同数学上的取整有所不同,Fortran中的取整函数只是将数据的小数部分截去,不使用四舍五入规则。函数的参数可以是实型、整型和复型。

求余函数 求余函数用于求第一个变量被第二个变量所除后的余数,函数的原型如下: C = MOD(X1, X2) 其中,MOD是Fortran中求余函数的通用名。除了这个通用名外,求余函数还有2个专用名,它们是: MOD,适用于默认种别的整型数据,返回值为默认种别的整型数据。 AMOD,适用于默认种别的实型数据,返回值为默认种别的实型数据。

取符号函数 取符号函数返回第一个参数的绝对值与第二个参数的符号的乘积,函数的原型如下: C = SIGN(X1, X2) 其中,SIGN是Fortran中取符号函数的通用名。除了这个通用名外,取符号函数还有3个专用名,它们是: ISIGN,适用于默认种别的整型数据,返回值为默认种别的整型数据。 SIGN,适用于默认种别的实型数据,返回值为默认种别的实型数据。 DSIGN,适用于双精度的实型数据,返回值为双精度的实型数据。

最大值函数 最大值函数用于找出一系列数据中的最大值,函数的原型为: C = MAX(X1, X2[, X3]…) 其中,MAX是Fortran中最大值函数的通用名。除了这个通用名外,最大值函数还有5个专用名,它们是: MAX0,适用于默认种别的整型数据,返回值为默认种别的整型数据。 AMAX0,适用于默认种别的整型数据,返回值为默认种别的实型数据。 MAX1,适用于默认种别的实型数据,返回值为默认种别的整型数据。 AMAX1,适用于默认种别的实型数据,返回值为默认种别的实型数据。 DMAX1,适用于双精度的实型数据,返回值为双精度的实型数据。

最小值函数 最小值函数用于找出一系列数据中的最小值,函数的原型为: C = MIN(X1, X2[, X3]…) 其中,MIN是Fortran中最小值函数的通用名。除了这个通用名外,最小值函数还有5个专用名,它们是: MIN0,适用于默认种别的整型数据,返回值为默认种别的整型数据。 AMIN0,适用于默认种别的整型数据,返回值为默认种别的实型数据。 MIN1,适用于默认种别的实型数据,返回值为默认种别的整型数据。 AMIN1,适用于默认种别的实型数据,返回值为默认种别的实型数据。 DMIN1,适用于双精度的实型数据,返回值为双精度的实型数据。

赋值语句 ‘=’为赋值符号,而不是等于号。赋值号左边只能是变量名,而不能是表达式;赋值号右边可以是常量、变量和表达式 X+y=3.6 A=1.0 B=2.0 A=B 赋值号的理解应是带方向的,“A=3.6”应理解为A<=3.6 N=N+1? 赋值语句的作用是将一个确定的值赋格一个变量,其一般格式为 V=e 其中,V为变量,e为表达式 表达式分为三类: 算术表达式 关系表达式 逻辑表达式 字符表达式

字符型数据 一、字符型常量:又称字符串,是用撇号括起来的若干个字符 如:'CHINA' 'U.S.A'

字符型数据 一、字符串常量 1. 空格也是有效字符 ' ' 2. 用单撇号或双撇号括起来 如:'How are you?' 1. 空格也是有效字符 ' ' 2. 用单撇号或双撇号括起来 如:'How are you?' 'abc@sina.com.cn' 都是合法字符串 3. 当字符串本身有撇号时,用两个撇号表示 如:'That''s right' 或 "That''s right"

字符串中含有单撇号或双引号的处理 当字符串中又含有单撇号时,例如要将I′M A STUDENT作为一个字符串来处理,为了区分′是字符串中的字符还是定界符,可采用两种方式表示: ″I′M A STUDENT″ ′I′′M A STUDENT′ 前者用双撇号作定界符,后者用单撇号作定界符,而将字符串的单撇号用两个单撇号表示,系统会自动将其处理为字符串的一个单撇号字符。

字符型变量 CHARACTER(LEN=n1[,KIND=n2])[[,属性说明] ::] 变量列表 格式中的n1和n2是一个整数和整型表达式,n1代表被说明变量的长度,n2代表字符变量的类别参数,各项属性说明是字符型变量有关属性的说明。例如 CHARACTER(LEN=25,KIND=2)::A,B,C CHARACTER(KIND=3,LEN=15)::VAR,CH CHARACTER(LEN=8),DIMENSION(1:10)::X,Y,Z CHARACTER(LEN=10),PARAMETER::NAME=′FORTRAN_90′ CHARACTER(LEN=15)::A CHARACTER*15::A CHARACTER(LEN=15)::A,B*8,C*5 CHARACTER(LEN=8)::B Character(LEN=5)::C

在以下两种状态下均可以采用星号来说明长度: (1)具有PARAMETER属性的字符常量。例如以下两个语句: CHARACTER(LEN=*),PARAMETER::PARA= ′FORTRAN_90′ CHARACTER*(*),PARAMETER::PARA= ′FORTRAN_90′ 给出的字符串长度是确定的,因此字符符号常数PARA的长度是可知的(等于10),可用*说明。 (2)用字符变量作虚元时 在子程序中,用字符型变量作虚元时可以不指明其具体长度,即用*定义长度。这时它可以与任意长度的字符型实元相结合,有利于提高子程序的通用性。

字符型数据 ︺ 字符变量的赋值 用赋值语句直接对字符型变量赋值 如: character*5 A, B*6, C*7 A='CHINA' B='NANJING' C='WHU' A B C C H I N A N A J I W H U ︺

字符型数据 子字符串:一个字符串连续的一部分 如:一个字符串nanjing 则na,nan,nanj,nanji,…都是其子串 子串表示形式 字符变量名(m:n) m和n是整型表达式,分别表示子字符串在原字符串中的起止位置,且1≤m≤n≤L,L是字符变量的长度。

字符型数据 如:str='structured programming in fortran' 子字符串 子串的值 备注 子字符串 子串的值 备注 str(12:22) programming str(27:) fortran 与str(27:33)相同 str(:10) structured 与str(1:10)相同 str(5:5) c str(:) 原字符串 与str(1:33)相同

字符型数据 可以将一个子字符串赋给一个字符变量或另一个子字符串 如:name=str(27:33) str(1:10)= str(27:33) 赋值号两侧的子串不能相互覆盖 如:str(25:29)= str(27:33) 错误!

字符型数据 字符表达式 Fortran只提供一种字符运算符“//”,即为字符连接符,其功能是把前后两个字符型数据连接起来 如:'a'//'b' → 'ab'

用于字符处理的内部函数 1. LEN(A) — 计算字符串a的长度 2. LGT(a,b) — 若a>b则返回真,否则为假 3. LGE(a,b) — 若a≥b则返回真,否则为假 4. LLT(a,b) — 若a<b则返回真,否则为假 5. LLE(a,b) — 若a≤b则返回真,否则为假 5. INDEX(a,b) — 检查字符串a是否包含字符串b 7. CHAR(I) — 得到ASCII码为I的字符 CHAR(97) → 'a' CHAR(65) → 'A' 8. ICHAR(a) — 得到字符串a中第一个字符的ASCII码 ICHAR('apple') → 97 2018/11/13 52

用于字符处理的内部函数 求字符串长度函数(LEN和LEN_TRIM) LEN(String)和LEN_TRIM(String) LEN_TRIM(′ABC D′)的值为5 LEN(′ABC D′)的值为5 LEN_TRIM(′ABC ′)的值为3 LEN(′ABC ′)的值为5 LEN_TRIM(′ ′)的值为0 LEN(′ ′)的值为5

除去字符串尾部空格函数(TRIM) 其一般形式为:TRIM(String) 函数的结果值是去掉String中的尾部空格后剩余的字符串。例如 TRIM(′ABC ′)的值为′ABC′ TRIM(′ ABC ′)的值为′ ABC′

子串位置函数(INDEX) 其一般形式为:INDEX(String1, String2) 其中String1,String2均为字符型,且类别参数应该一致。若String2是String1的一个子串,其函数的结果值是一个正整数,该数表示String2在String1中最左边的子串的起始位置;若String2不是String1的子串,则函数结果值为0。例如,INDEX(′FOLLOW ME′, ′ME′)的值为8,因为′ME′的第一个字符M出现在′FOLLOW ME′的第8个字符位置上;INDEX(′FOLLOW ME′, ′L O′)的值为0。

首、尾部空格调整函数(ADJUSTL和ADJUSTR) 其一般形式为:ADJUSTL(String)和ADJUSTR(String) 调左函数ADJUSTL的函数值是把String的首部空格调到尾部,调右函数ADJUSTR的函数值是把String的尾部空格调到首部。例如 ADJUSTL(′ ABC ′)的值为′ABC ′ ADJUSTR(′ABC ′)的值为′ ABC′

逻辑型数据 逻辑常量只有真和假两种值:.TRUE.和.FALSE.。变量说明的格式为: LOGICAL [ ( [ KIND = ] 类别值 ) ] [ [ ,属性列表 ] :: ] 变量列表 逻辑型变量可以定义为LOGICAL,LOGICAL(1),LOGICAL(2),LOGICAL(4) LOGICAL DOIT, DONT LOGICAL(2) :: IIS, IIF LOGICAL*4 :: FLAG1, FLAG2 逻辑型数据能否直接参与数学计算呢? 题目2.3 请采用Fortran90 自由格式编写程序,检验逻辑型变量能否直接参与数学计算。已知逻辑型变量A=.ture.,请输出A-1,A+0, A+1 和 A+2 的具体值。

变量类型隐含规定 Fortran变量并不一定要经过声明(定义)才能使用。 I-N规则:程序中的变量名,凡以字母I, J, K, L, M, N 六个字母开头的,默认为是整型变量,而以其他字母开头的默认为实型变量。 Implicit 语句隐含说明,将某一字母开头的全部变量指定为所需类型。 Implicit integer (A,C, T-V)

类型说明 优先级: 显式类型说明>IMPLICIT 语句>I-N规则 类型说明仅在本程序单位有效。例如,主程序和子程序中同一名称变量可以具有不同类型。 类型说明语句应该出现在本程序单元所有执行语句前面,其中,implicit语句又硬放在所有显式类型说明的前面。

常数声明 Parameter 语句 Parameter (PI=3.1415926) Fortran 77 Real,parameter:: PI=3.1415926 Fortran 90 Parameter 语句不是执行语句,需要放在可执行语句前面 常数变量在程序代码中不得改变数值,否则编译时会出现错误信息。 把不会改变内容的变量设置为常数,可以提高程序的运行效率。

设置变量的初值 Fortran 77 源程序书写规则 每一行80列 第1-5列为标号区,可以写1-5位整数,也可以没有标号。标号区内第1列为“C”或“*”,该行即被认为是注释行。如果第一列不是数字、空格或者“C”,“*”,编译时按出错处理。、 第6列为续行标志区,如果在一行的第6列上写一个非空格和非零的字符,则该行为上一行的续行。 第7-72列为语句区。语句可以从第7列之后的任何位置开始书写。 第73-80列为注释区。 Program main implicit none integer::a=1 real:: b=2.0 complex::c=(1.0,2.0) Character(len=20):: str=’Fortran 90 ’ End program Program main implicit none Integer a real b complex c character*20 str data A, B, C, STR & /1, 2.0,(1.0,2.0),’Fortran & 77’/ end

等价声明 使两个以上的变量共同分享一个内存地址 Integer a, b Equivalence (a,b) 精简代码,并加速程序运行。例如,程序中可能经常使用数组某个元素array(1,1,5)的值,这时就可以用如下声明 Eqyuivalence (array(1,1,5),A) 这个声明可以让A代替array(1,1,5),除了程序代码精简外,程序直接读取变量A的速度也会比读取数组Array(1,1,5)要快

Fortran 90 自定义数据类型 创建类型 Type:: person character(len=30)::name integer:: age integer::length Integer::weight character(len=80)::address End type person

简单输出输入语句 输出语句 Print*, A,B Write(*,*) A,B 输入语句 Read*,I,j,a,b 键盘输入:3,10,7.5,3.7 (数据间以逗号或者一个或多个空格分隔) 题目2.4 请采用Fortran90 自由格式编写程序,求解实系数一元二次方程ax2+bx+c=0的解。要求:系数a,b,c 为程序执行时键盘输入;所有的解(包括实数和复数)都输出到屏幕。