第9章教组 31数组的说明和数组元素的引用 §2数组的逻辑结构和存储结构 §3数组的输入和输出 §4给数组赋初值 §5程序举例 2021/2/24
1 2021/2/24 第9章 数 组 §1 数组的说明和数组元素的引用 §2 数组的逻辑结构和存储结构 §3 数组的输入和输出 §4 给数组赋初值 §5 程序举例
2 在日常计算中,经常会遇到一组类型相同数据的计算问 题,如计算某班35名同学某门课的平均成绩。 按之前所学,只能把程序编写为: read()1f2,…,35 f=(1+f2++f35)/350 print*, f end 缺点:代码效率低,不实用。 为了方便这种类型的计算, FORTRAN规定了一种“带 下标”的特殊变量,可以把35个成绩值存入这种特殊变量 中,以方便程序编写
2 在日常计算中,经常会遇到一组类型相同数据的计算问 题,如计算某班35名同学某门课的平均成绩。 按之前所学,只能把程序编写为: read(*,*) f1,f2,……,f35 f=(f1+f2+…+f35)/35.0 print*,f end 缺点:代码效率低,不实用。 为了方便这种类型的计算,FORTRAN规定了一种“带 下标”的特殊变量,可以把35个成绩值存入这种特殊变量 中,以方便程序编写
3 f f2 f35 F(1)F(2) ■■■■ F(35) 其中,F(1),F(2)F(35即“带下标”的特殊变量。 称F是一个数组,而F(1),F(2)F(35)为数组F的35个数 组元素。 数组属于一种构造数据类型(基本数据类型组合而成)。 ◇每个数组代表一组具有同一类型的变量;数组中所包含 的变量称为数组元素;通过下标的变化指定元素。 对如前的计算问题,用数组编写要方便得多。 2021/2/24
3 2021/2/24 f1 F(1 ) f2 F(2 ) f35 F(35 ) …… …… 其中,F(1), F(2),……F(35)即“带下标”的特殊变量。 称F是一个数组,而F(1), F(2),……F(35) 为数组F的35个数 组元素。 ❖数组属于一种构造数据类型(基本数据类型组合而成)。 ❖每个数组代表一组具有同一类型的变量;数组中所包含 的变量称为数组元素;通过下标的变化指定元素。 对如前的计算问题,用数组编写要方便得多
dimension f(1:35)定义了一个一维数组 read( *)f 给数组的35个元素输入数据。 sf=00 do10k=1,35 累加计算 sf=sf+f(k) 10 continue print sf/350 显示结果 end k是变化的下标 对于大批量的数据,可使用事先整理好的数据文件。 2021/2/24
4 2021/2/24 dimension f(1:35) read(*,*) f sf=0.0 do 10 k=1,35 sf=sf+f(k) 10 continue print*,sf/35.0 end 定义了一个一维数组 给数组的35个元素输入数据。 累加计算 显示结果 对于大批量的数据,可使用事先整理好的数据文件。 k 是变化的下标
§1数组的说明和教组元囊的引用(p195197 一、数组的说明(定义) 用类型说明语句或 dimension语句定义数组。 其一般形式为: 第1维的维说明符 类型说明(或 dimension)数组名(下标下界:下标上界,下 标下界:下标上界,,) 第2维的维说明符 §1数组的说明和数组元素的引用 2021/2/24
5 2021/2/24 一、数组的说明(定义) 用类型说明语句或dimension语句定义数组。 其一般形式为: §1 数组的说明和数组元素的引用(p195-197) 类型说明(或dimension) 数组名(下标下界: 下标上界, 下 标下界: 下标上界, … ) 第1维的维说明符 第2维的维说明符 §1 数组的说明和数组元素的引用
1.用类型语句定义数组 6 如 real ia(1:10),W(1:3,1:2) integer a(0:2,0:1,0:3) ()数组名后一对小括号中包含的是维说明符,多个维 说明符时用逗号隔开。 具有一个维说明符的数组为一维数组,具有两个维说明 符的数组为二维数组,…。通常我们将二维及二维以上 的数组称为多维数组。 (2)每个维说明符规定了本维中下标的下界和上界,下 界和上界之间用冒号隔开。 (3)下标下界和上界必须是整型常量或整型常量表达式, 且上界≥下界。 §1数组的说明和数组元素的引用 2021/2/24
6 2021/2/24 1. 用类型语句定义数组 如: ⑴ 数组名后一对小括号中包含的是维说明符,多个维 说明符时用逗号隔开。 具有一个维说明符的数组为一维数组,具有两个维说明 符的数组为二维数组,… 。通常我们将二维及二维以上 的数组称为多维数组。 ⑵ 每个维说明符规定了本维中下标的下界和上界,下 界和上界之间用冒号隔开。 ⑶ 下标下界和上界必须是整型常量或整型常量表达式, 且上界≥下界。 real ia(1:10), w(1:3, 1:2) integer a(0:2, 0:1, 0:3) §1 数组的说明和数组元素的引用
sn: parameter(low=1, ihig=9) 7 real ia (low: ihig+1) integer n 不允许定义可变长度的 read " " )n 数组。 real ia(1: n) (4)当下标下界为1时可以省略不写。 real ia(1:10),W(1:3,1:2) real ia(10),W(3,2) (5)数组定义包括变量定义必须放在可执行语句之前。 如 x=10 real ia(1: 10 §1数组的说明和数组元素的引用 2021/2/24
7 2021/2/24 如: ⑷ 当下标下界为1时可以省略不写。 ⑸ 数组定义(包括变量定义)必须放在可执行语句之前。 如: parameter (low=1, ihig=9) real ia(low: ihig+1) integer n read(* , *) n real ia(1: n) real ia(1:10), w(1:3, 1:2) §1 数组的说明和数组元素的引用 real ia(10), w(3, 2) 不允许定义可变长度的 数组。 x=1.0 real ia(1: 10) × ×
2.用 dimension语句定义数组 8 如: dimension ia(1:10,w(1:3,1:2),a(0:2,0:1,0:3) (1)若仅有 dimension语句,数组的类型根据数组名首 字母的隐式N规则确定。 (2)显式类型说明:由 dimension语句与类型说明语句 配合进行(由 dimension语句定义数组,由类型说明语句 对数组名的类型进行显式说明)。 : dimension ia(1:10),w(1:3,1:2),a(0:2,0:1,0:3) integer a real ia, w §1数组的说明和数组元素的引用 2021/2/24
8 2021/2/24 2. 用dimension语句定义数组 如: ⑴ 若仅有dimension语句,数组的类型根据数组名首 字母的隐式I-N规则确定。 ⑵ 显式类型说明:由dimension语句与类型说明语句 配合进行(由dimension语句定义数组,由类型说明语句 对数组名的类型进行显式说明)。 如: dimension ia(1:10), w(1:3, 1:2), a(0:2, 0:1, 0:3) dimension ia(1:10), w(1:3, 1:2), a(0:2, 0:1, 0:3) integer a real ia, w §1 数组的说明和数组元素的引用
二、数组元素的引用 9 数组元素使用的一般邢式: 数组名(下标1,下标2) 如 integer a(10) do10,=1,10 a()=0.0 10 continue ()标准 Fortran77中,除了在输入和输出语句 中外,其它场合不允许对数组进行整体操作,只 能对数组元素逐个进行操作。 §1数组的说明和数组元素的引用 2021/2/24
9 2021/2/24 二、数组元素的引用 数组元素使用的一般形式: 数组名(下标1, 下标2…) 如: ⑴ 标准Fortran77中,除了在输入和输出语句 中外,其它场合不允许对数组进行整体操作,只 能对数组元素逐个进行操作。 integer a(10) do 10, i=1, 10 a(i)=0.0 10 continue §1 数组的说明和数组元素的引用
10 (2)数组元素的下标允许是任意算术表达式,如 果表达式的类型为非整型时则自动取整。 (3)数组元素的下标值必须落在该维的上界和下 界之内,即满足:下界≤下标≤上界。 对于下标越界,大部分 Fortran系统在编译和连 接时都不会报错,程序都会执行,但其结果会有 问题。因吡,对于数组运算,尤其是采用循环时, 对于下标的范围要注意控制。 §1数组的说明和数组元素的引用 2021/2/24
10 2021/2/24 ⑵ 数组元素的下标允许是任意算术表达式,如 果表达式的类型为非整型时则自动取整。 ⑶ 数组元素的下标值必须落在该维的上界和下 界之内,即满足:下界≤下标≤上界。 对于下标越界,大部分Fortran系统在编译和连 接时都不会报错,程序都会执行,但其结果会有 问题。因此,对于数组运算,尤其是采用循环时, 对于下标的范围要注意控制。 §1 数组的说明和数组元素的引用