📄 sec5-1.htm
字号:
text-indent:-18.0pt;}
@list l1:level5
{mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level6
{mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level7
{mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level8
{mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l1:level9
{mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="11266">
<o:colormru v:ext="edit" colors="#fcc,#669,#99f,#ccecff,#9fc,#c5ffe2,#d9ffec,#dfe"/>
<o:colormenu v:ext="edit" fillcolor="#dfe"/>
</o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="#DDFFEE" lang=ZH-TW link=blue vlink=purple style='tab-interval:
21.0pt;text-justify-trim:punctuation'>
<div class=Section1 style='layout-grid:15.6pt'>
<p align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center'><b
style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='font-size:22.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:宋体;color:black'>第五章</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:22.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:宋体;color:black'>:</span></b><b
style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='font-size:22.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:宋体;color:black'>数组</span></b><b
style='mso-bidi-font-weight:normal'><span lang=EN-US style='font-size:22.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:宋体;color:black'><o:p></o:p></span></b></p>
<p class=MsoNormal align=center style='margin-top:15.6pt;margin-right:0cm;
margin-bottom:15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm;text-align:center'><b><span
lang=ZH-CN style='font-size:22.0pt;font-family:华文细黑;color:#333399'>数组类型与定义</span></b><a
name="第5_1"></a><b><span lang=EN-US style='font-size:22.0pt;font-family:华文细黑;
color:#333399'><o:p></o:p></span></b></p>
<p class=MsoNormal align=center style='margin-bottom:15.6pt;mso-para-margin-bottom:
1.0gd;text-align:center'><a name="第5_1_1"><span lang=EN-US style='font-size:
16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:楷体_GB2312'>5.1.1</span></a><span
lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:
楷体_GB2312'> </span><span lang=ZH-CN style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;font-family:楷体_GB2312;mso-ascii-font-family:"Times New Roman";
color:red'>定义数组</span><b><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:
12.0pt;mso-fareast-font-family:楷体_GB2312'><o:p></o:p></span></b></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=EN-US>F90</span><span lang=ZH-CN>中变量的概念与</span><span
lang=EN-US>F77</span><span lang=ZH-CN>的不同,它包含了两种变量,一种是标量,一种是数组。数组是科学和工程计算问题中常见的向量和矩阵的反映和概括。数组在</span><span
lang=EN-US>FORTRAN</span><span lang=ZH-CN>程序中有着重要的意义,在批量大的情况下,如果不利用数组就失去了计算机的优越性。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 18.0pt'><a name="第5_1_1a"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>a)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>数组的描述</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组是类型相同的一组标量数据的有序集合,即要求这些数据都必须类型相同,并按某种确定方式排列。向量是一维数组,矩阵可看成是二维数组。类型可以是整型、实型、双精度型、逻辑型等任何一种。组成数组的每一个元素称为<span
style='color:fuchsia'>数组元素</span>。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组的维数称为<span style='color:fuchsia'>秩</span></span><span
lang=EN-US>(rank)</span><span lang=ZH-CN>,</span><span lang=EN-US>F90</span><span
lang=ZH-CN>中规定数组最多可以有</span><span lang=EN-US>7</span><span lang=ZH-CN>维。在某一维中元素的个数称为该维的<span
style='color:fuchsia'>长度</span></span><span lang=EN-US>(extent)</span><span
lang=ZH-CN>。数组中所有元素的个数称为数组的<span style='color:fuchsia'>大小</span></span><span
lang=EN-US>(size)</span><span lang=ZH-CN>,它等于各维的长度的乘积,数组的大小可以为</span><span
lang=EN-US>0</span><span lang=ZH-CN>。数组的<span style='color:fuchsia'>形状</span></span><span
lang=EN-US>(shape)</span><span lang=ZH-CN>取决于秩和每一维的长度。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>例:</span><span lang=EN-US>REAL A(10,3,2)</span><span
lang=ZH-CN>的秩为</span><span lang=EN-US>3</span><span lang=ZH-CN>,大小为</span><span
lang=EN-US>10</span><span lang=ZH-CN>×</span><span lang=EN-US>3</span><span
lang=ZH-CN>×</span><span lang=EN-US>2</span><span lang=ZH-CN>=</span><span
lang=EN-US>60</span><span lang=ZH-CN>,形状为</span><span lang=EN-US>10</span><span
lang=ZH-CN>乘</span><span lang=EN-US>3</span><span lang=ZH-CN>乘</span><span
lang=EN-US>2</span><span lang=ZH-CN>,或表示成</span><span lang=EN-US>(10</span><span
lang=ZH-CN>,</span><span lang=EN-US>3</span><span lang=ZH-CN>,</span><span
lang=EN-US>2)</span><span lang=ZH-CN>。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组的形状可用内在函数</span><span lang=EN-US style='color:#993300'>SHAPE</span><span
lang=ZH-CN>得到,如</span><span lang=EN-US>SHAPE(A)</span><span lang=ZH-CN>的结果是一维数组,其元素取值为</span><span
lang=EN-US>10,3,2</span><span lang=ZH-CN>。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>每一维的大小都由一个下界和一个上界来指定,之间以冒号分开,即<span style='color:
#FF9900'>下界</span></span><span lang=EN-US style='color:#FF9900'>:</span><span
lang=ZH-CN style='color:#FF9900'>上界</span><span lang=ZH-CN>。<span
style='color:fuchsia'>维界</span>表达式是整型的数学表达式,维界值可以是正、负或零,但维上界必须大于维下界的值。<span
style='color:#FF9900'>维长=上界</span></span><span lang=EN-US style='color:#FF9900'>-</span><span
lang=ZH-CN style='color:#FF9900'>下界</span><span lang=EN-US style='color:#FF9900'>+1</span><span
lang=ZH-CN>。声明数组时下界可以省略,此时维下界为默认值</span><span lang=EN-US>1</span><span
lang=ZH-CN>。例如:</span><span lang=EN-US>REAL B(0:9,-1:1,4:5,9)</span><span
lang=ZH-CN>。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组可以用以下几种声明语句定义,</span><span lang=EN-US>F77</span><span
lang=ZH-CN>中为类型说明语句、</span><span lang=EN-US>DIMENSION</span><span lang=ZH-CN>语句和</span><span
lang=EN-US>COMMON</span><span lang=ZH-CN>语句,</span><span lang=EN-US>F90</span><span
lang=ZH-CN>中还可以用类型属性说明、</span><span lang=EN-US>POINTER</span><span lang=ZH-CN>语句、</span><span
lang=EN-US>ALLOCATABLE</span><span lang=ZH-CN>语句。例如下面都是合法的数组声明:</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>REAL<span
style='mso-spacerun:yes'>
</span>A(10,2,3)<span style='mso-tab-count:2'> </span>!
</span><span lang=ZH-CN>类型说明</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>DIMENSION<span style='mso-spacerun:yes'>
</span>A(10,2,3)<span style='mso-tab-count:2'> </span>!
DIMENSI0N</span><span lang=ZH-CN>语句</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>ALLOCATABLE B(:,:)<span style='mso-tab-count:3'> </span>!
ALLOCATABLE</span><span lang=ZH-CN>语句</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>POINTER<span style='mso-spacerun:yes'>
</span>C(:,:,:)<span style='mso-tab-count:2'> </span>!
POINTER</span><span lang=ZH-CN>语句</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>REAL</span><span lang=ZH-CN>,</span><span lang=EN-US>DIMENSION(2,5)::
D<span style='mso-tab-count:2'> </span>!
</span><span lang=ZH-CN>类型说明中的</span><span lang=EN-US>DIMENSION</span><span
lang=ZH-CN>属性</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>REAL</span><span lang=ZH-CN>,</span><span lang=EN-US>ALLOCATABLE::<span
style='mso-spacerun:yes'> </span>E(:,:,:)<span
style='mso-tab-count:1'> </span>! </span><span lang=ZH-CN>类型说明中的</span><span
lang=EN-US>ALLOCATABLE</span><span lang=ZH-CN>属性</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>REAL</span><span lang=ZH-CN>,</span><span lang=EN-US>POINTER::<span
style='mso-spacerun:yes'>
</span>F(:,:)<span style='mso-tab-count:1'> </span>! </span><span
lang=ZH-CN>类型说明中的</span><span lang=EN-US>POINTER</span><span lang=ZH-CN>属性</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>无论何种情况,数组的秩总是要指定的。数组的大小和形状是否需要声明视数组的形式而定。当</span><span
lang=EN-US>COMMON</span><span lang=ZH-CN>语句指定了数组的秩和大小后,只能定义数组的类型而不能再次重复给定维界。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo2;
tab-stops:list 18.0pt'><a name="第5_1_1b"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>b)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>数组元素</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>在程序执行部分中,数组的三种成份可供运算或输入输出:</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:21.2pt;mso-para-margin-left:
2.02gd;line-height:17.0pt;mso-line-height-rule:exactly'><span lang=EN-US>1</span><span
lang=ZH-CN>、数组名</span><span lang=EN-US><span
style='mso-spacerun:yes'> </span>-> </span><span
lang=ZH-CN>代表数组中所有元素;</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:21.2pt;mso-para-margin-left:
2.02gd;line-height:17.0pt;mso-line-height-rule:exactly'><span lang=EN-US>2</span><span
lang=ZH-CN>、数组元素</span><span lang=EN-US><span style='mso-spacerun:yes'>
</span>-> </span><span lang=ZH-CN>代表数组中某一个元素;</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:21.2pt;mso-para-margin-left:
2.02gd;line-height:17.0pt;mso-line-height-rule:exactly'><span lang=EN-US>3</span><span
lang=ZH-CN>、数组片段</span><span lang=EN-US><span style='mso-spacerun:yes'>
</span>-> </span><span lang=ZH-CN>代表数组中若干个元素,它们可以相连或分离。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组中单独的标量称为元素。标量的秩为</span><span lang=EN-US>0</span><span
lang=ZH-CN>,而数组的秩至少是</span><span lang=EN-US>1</span><span lang=ZH-CN>。如果没有下标则指整个数组。对每一维指定确切的一个下标则定义了一个数组元素,还可以通过下标可以引用数组的一部分元素。例如</span><span
lang=EN-US>A</span><span lang=ZH-CN>指整个数组,</span><span lang=EN-US>A(1)</span><span
lang=ZH-CN>指数组</span><span lang=EN-US>A</span><span lang=ZH-CN>的第</span><span
lang=EN-US>1</span><span lang=ZH-CN>个元素,</span><span lang=EN-US>A(3:4)</span><span
lang=ZH-CN>指数组</span><span lang=EN-US>A</span><span lang=ZH-CN>的第</span><span
lang=EN-US>3</span><span lang=ZH-CN>和第</span><span lang=EN-US>4</span><span
lang=ZH-CN>个元素,</span><span lang=EN-US>A(1:10:2)</span><span lang=ZH-CN>指的是数组</span><span
lang=EN-US>A</span><span lang=ZH-CN>的第</span><span lang=EN-US>1,3,5,7,9</span><span
lang=ZH-CN>个元素。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>数组的下标必须用逗号隔开,下标是整型常量、变量或表达式,可正、可负、也可以为</span><span
lang=EN-US>0</span><span lang=ZH-CN>,但必须在引用的数组的维数之内。引用下标的个数要和声明的数组的维数一致。可以使用函数或数组元素作为下标:</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:47.4pt;mso-char-indent-count:
3.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -