⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sec4-3.htm

📁 fortran 教程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
 </span><![endif]><!--[if gte vml 1]></o:wrapblock><![endif]--><br
style='mso-ignore:vglayout' clear=ALL>
<span lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>设一个学生记录为一个结构,内由学号、班级、姓名、宿舍、成绩等有关信息组成,它们分别为不同类型。有些成员下还可再由若干数据组成,如图</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>71</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>所示。边注的英文名是程序中所取的该成员的名称。在程序中,如要访问整个学生结构,只要在被访问处写上结构名,即写上</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>STUDENT</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>。访问其中成员,如成员是一个简单数据,例如学生姓名,则在程序中被访问处写上</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>STUDENT</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>%</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>NAME</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>即可。访问成员中结构成员下的简单数据,则用两个%表示。如访问学生所在系,则在被访问处写</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>STUDENT</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>%</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>CLASS</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>%</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>DEPARTMENT</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>。第</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>2</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>个百分号表示</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>DEPARTMENT</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>是</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>CLASS</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>的成员。如果</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>DEPARTMENT</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>下面还有成员,要访问这些成员时后面还需加上‘%成员名’。</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></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;
text-autospace:none'><a name="第4_3_2"><span lang=EN-US style='font-size:16.0pt;
mso-bidi-font-size:12.0pt;mso-fareast-font-family:楷体_GB2312'>4.3.2</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=MsoNormal style='text-indent:24.0pt;mso-char-indent-count:2.0;
line-height:17.0pt;mso-line-height-rule:exactly;text-autospace:none;mso-char-indent-size:
10.5pt'><span lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>为了便于组织数据,</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>F90</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>允许定义和使用派生数据类型。任何复杂的数据结构,经分析后都可分解为较简单的成员,可用自定义的派生类型反映它。派生数据类型有一个类型名称,它不能和任何内部数据类型或已定义的派生数据类型重名。定义一种派生数据类型后就可以用它来定义变量、命名常量或其它派生类型了。</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></p>

<p style='margin-left:0cm;text-indent:0cm;mso-list:l0 level1 lfo2;tab-stops:
list 18.0pt;text-autospace:none'><a name="第4_3_2a"></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"'>&nbsp;&nbsp;&nbsp;
</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=MsoNormal style='text-indent:24.0pt;mso-char-indent-count:2.0;
line-height:17.0pt;mso-line-height-rule:exactly;text-autospace:none;mso-char-indent-size:
12pt'><span lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>定义派生类型时必须使用</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>块。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>块应写在程序的说明部分中,通常写在说明的前部,其一般形式是:</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.75pt;mso-para-margin-left:3.5gd;
text-indent:24.0pt;mso-char-indent-count:2.0;line-height:15.0pt;mso-line-height-rule:
exactly;text-autospace:none'><span lang=EN-US style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>TYPE[,</span><span lang=ZH-CN style='font-size:
12.0pt;font-family:宋体;color:#FF9900'>访问属性说明</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体;color:#FF9900'>::] </span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体;color:#FF9900'>派生类型名</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:#FF9900'><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.75pt;mso-para-margin-left:3.5gd;
text-indent:52.45pt;mso-char-indent-count:4.37;line-height:15.0pt;mso-line-height-rule:
exactly;text-autospace:none'><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>成员</span><span lang=EN-US style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>1</span><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>类型说明</span><span lang=EN-US style='font-size:
12.0pt;font-family:宋体;color:#FF9900'><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.75pt;mso-para-margin-left:3.5gd;
text-indent:52.45pt;mso-char-indent-count:4.37;line-height:15.0pt;mso-line-height-rule:
exactly;text-autospace:none'><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>……</span><span lang=EN-US style='font-size:12.0pt;
font-family:宋体;color:#FF9900'><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.75pt;mso-para-margin-left:3.5gd;
text-indent:52.45pt;mso-char-indent-count:4.37;line-height:15.0pt;mso-line-height-rule:
exactly;text-autospace:none'><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>成员</span><span lang=EN-US style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>n</span><span lang=ZH-CN style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>类型说明</span><span lang=EN-US style='font-size:
12.0pt;font-family:宋体;color:#FF9900'><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.75pt;mso-para-margin-left:3.5gd;
text-indent:24.0pt;mso-char-indent-count:2.0;line-height:15.0pt;mso-line-height-rule:
exactly;text-autospace:none'><span lang=EN-US style='font-size:12.0pt;
font-family:宋体;color:#FF9900'>END TYPE [</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体;color:#FF9900'>派生类型名</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:#FF9900'>]<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:24.0pt;mso-char-indent-count:2.0;
line-height:17.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>其中,</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>是关键字,表示派生类型定义开始。访问属性说明关键字是</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:fuchsia'>PUBLIC</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>或</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体;color:fuchsia'>PRIVATE</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>,默认值是</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>PUBLIC</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>,即访问方式是共用的。</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>PRIVATE</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>表示该类型是专用的,这个关键字只有当</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>块写在模块说明部分中时,才允许使用。如果不是在模块内定义的派生类型,不可使用</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>PRTVATE</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>。派生类型名是任意取的,一旦定义完成,该类型名就成为一个新的类型,就像整型、实型、逻辑型等一样,按一种类型使用。例如可以把各种变量、各种数组说明为这种新的类型,而后按新类型特有法则操作。通常,类型的取名与物理对象的名称一致。例如上述学生结构定义成派生类型可以取派生类型名是</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>STUDENT</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:24.0pt;mso-char-indent-count:2.0;
line-height:17.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>语句下面是结构中各成员的类型说明语句,被说明的类型一般就是</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>FORTRAN</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>内部类型(整型、实型等),也允许用一个层次较低的派生类型作为某成员的类型。派生类型的说明语句的一般形式是:</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:#FF9900'>TYPE(</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体;color:#FF9900'>派生类型名</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:#FF9900'>)::</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体;color:#FF9900'>变量名</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>块中只有类型说明语句,不允许有可执行的动作语句。派生类型中字符型成员不可取</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>*</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>为长度,必须是确定长度。系统不一定会按定义时的顺序储存各个成员,除非在定义中包含有</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体;color:fuchsia'>SEQUENCE</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>语句。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:24.0pt;mso-char-indent-count:2.0;
line-height:17.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>例如:对上面的学生记录作派生定义,由于学生结构中有两个成员</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>CLASS</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>与</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>SCORES</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>本身又是次一层的结构,因此要先对</span><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>CLASS</span><span
lang=ZH-CN style='font-size:12.0pt;font-family:宋体'>与</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>SCORES</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>这两个结构作出派生类型定义。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>CLASS</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>下有两个成员:</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>DEPARTMENT(</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>字符型</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>)</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>、</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>MAJOR(</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>字符型</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>)</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>SCORES</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>下有三个成员:</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>MATH(</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>整型</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>)</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>、</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>PHYSICS(</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>整型</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>)</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>、</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>ENGLISH(</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>整型</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>)</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>。整个学生结构定义派生类型名为</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'>STUDENT_TYPE</span><span lang=ZH-CN
style='font-size:12.0pt;font-family:宋体'>。</span><span lang=EN-US
style='font-size:12.0pt;font-family:宋体'><o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:57.6pt;mso-char-indent-count:4.8;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE CLASS_TYPE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>CHARACTER(LEN=50) ::
DEPARTMENT, MAJOR<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:57.6pt;mso-char-indent-count:4.8;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>END TYPE CLASS_TYPE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:57.6pt;mso-char-indent-count:4.8;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE SCORES_TYPE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>INTEGER(1) :: MATH, PHYSICS,
ENGLISH<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:57.6pt;mso-char-indent-count:4.8;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>END TYPE SCORES_TYPE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:57.6pt;mso-char-indent-count:4.8;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE STUDENT_TYPE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>SEQUENCE<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>INTEGER(4) :: NUMBER<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE(CLASS_TYPE) :: CLASS<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>CHARACTER(LEN=10) :: NAME,
ADDRESS<o:p></o:p></span></p>

<p class=MsoNormal style='text-indent:84.95pt;mso-char-indent-count:7.08;
line-height:15.0pt;mso-line-height-rule:exactly;text-autospace:none'><span
lang=EN-US style='font-size:12.0pt;font-family:宋体'>TYPE(SCORES_TYPE) :: SCORES<o:p></o:p></span></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -