fortran95教程5章
fortran95的使用方法5
第14章固有过程固然,我们已经能够做到运用FORTRAN 95来描述任何的计算任务,因为FORTRAN 95所提供的数据类型,固有运算,派生类型,自定义运算,以及构造函数与子例行程序的方法,都足以使得我们应付任何的计算问题。
不过FORTRAN 95标准还提供了大量的科学计算的常规计算与函数,都可以作为固有过程直接使用,而不需要我们自己来编写源码。
这就好像对于一个汽车装配师,除了给他提供螺栓,轴承之类的标准零件,还给他提供更高层次的标准配件,例如各种型号的发动机,电机之类。
因此熟练掌握固有过程,将给我们带来如虎添翼的感觉。
FORTRAN 95把固有过程作为标准来提出,就意味着任何的FORTRAN 95的编译器实现版本,都必须能够提供它们:115个固有过程,其中包括109个固有函数和6个固有子例行程序。
当然不排除很多的编译器还提供额外的固有过程。
正是由于固有过程是属于FORTRAN 95的标准内容,因此和固有运算,例如+,一样,总是“随叫随到”,无论在哪个程序单位内部,只要使用某个固有过程的名称,就等于调用了该固有过程。
不过,如果它的名称被用户定义的函数或子例行程序所“侵占”,那么在下面的情况下,被调用的将是用户自定义的函数或子例行程序而不是固有过程:●该自定义函数或子例行程序的界面是显式的;●该自定义函数或子例行程序出现在EXTERNAL语句当中;●该自定义函数属于语句函数。
当然上述的名称被侵权的有效范围只是该自定义函数或子例行程序的作用域。
相应的,固有过程也就只能在下面的情形下夺回被侵占的名称:●不存在使用该名称的语句函数;●它的名称出现在INTRINSIC语句当中;●相应的用户定义的过程的界面是隐式的。
例如在一个模块或一个内部过程里面,由于它的界面是显式的,那么固有过程的名称就能够被侵占,除非固有过程的名称出现在一个有效的INTRINSIC语句当中。
下面我们主要讨论固有过程的按照功能的分类,以及每个种类的固有过程所能够完成的计算任务。
Fortran95简介-全文版
Fortran95简介-全文版Fortran95簡介-全文版By陳鯨太FORTRAN的演進FORTRAN的起源,要追溯到1954年IBM公司的一項計畫。
由JOHN BACKUS 領導的一個小組,嘗試著在IBM 704電腦上面發展一套程式,它可以把使用接近數學語言的文字,翻譯成機械語言。
這個計畫在剛開始並不被大家看好,但他們在1957年交出了成果,也就是第一套FORTRAN編譯器,FORTRAN語言也就因此誕生了。
FORTRAN語言的執行效率普遍的令各界滿意,它證明了這項計畫的可行性,也成為第一個被廣泛使用的高階語言。
FORTRAN的名字來自於英文的FORMULA TRANSLATOR這兩個字,而這兩個字恰是數學公式翻譯器的意思。
舊版的FORTRAN77是在1978年由美國國家標準局(ANSI)所正式公布的,之後改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是為了FORTRAN 95所撰寫。
編譯器簡介1、VISUAL FORTRANVISUAL FORTRAN一開始是起源於MICROSOFT的FORTRAN POWERSTATION 4.0,這套工具後來賣給DIGITAL公司來繼續發展,下一個版本稱為DIGITAL VISUAL FORTRAN 5.0,DIGITAL後來被COMPAQ合併,所以接下來的6.0及6.5版就稱為COMPAQ VISUAL FORTRAN。
而COMPAQ目前又跟HP合併,也許下一個版本會稱為HP VISUAL FORTRAN。
VISUAL FORTRAN被整合在一個叫作MICROSOFT VISUAL STUDIO的圖形介面開發環境中,VISUAL STUDIO提供一個統一的使用介面,這個介面包括文書編輯功能,PROJECT的管理、除錯工具等等,所以在使用上其實跟上學期的VISUAL C++滿類似的,同學們上課用過VISUAL C++,對VISUAL FORTRAN應該不會陌生。
FORTRAN语言程序设计——FORTRAN95
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
该教材有配套的实验指导书——《FORTRAN95程序设计实验指导与测试》。 该教材还提供电子课件等资源。
教材特色
该教材以程序设计为主线,以编程应用为驱动,通过案例和问题引入知识点,重点讲解程序设计的思想和方 法。书中所有程序实例都是由教师在多年授课过程中挑选所得,并采用Microsoft Develop Studio集成开发环 境。为适应不断更新的计算机操作系统,在实验教材中还给出了Windows 7、Windows 10操作系统下使用Visual Fortran的上机操作过程。
全书共14章,主要内容有: FORTRAN95概述及编译环境的介绍、FORTRAN95程序设计基础、顺序结构程序设 计、选择结构程序设计、循环结构程序设计、数组、函数与子程序、文件、派生类型与结构体、指针、模块、常 用数值算法。
成书过程
修订情况
ห้องสมุดไป่ตู้出版工作
该教材由王丽娟、段志东主编,李玉龙主审。第1、2、12、14章由王红鹰编写,第3、5、6、7章由陈权编写, 第9、11、13章和附录A由段志东编写,第4、8、10章和附录B由王丽娟编写。
该教材在规划和编写过程中得到了兰州交通大学教务处、计算机教学示范中心、电信学院、继续教育学院、 土木工程学院的领导和教师们的支持。
2017年9月1日,该教材清华大学出版社出版。
内容简介
该教材介绍FORTRAN95的语法规则以及利用它进行程序设计的方法。全书共14章,主要内容有: FORTRAN95 概述及编译环境的介绍、FORTRAN95程序设计基础、顺序结构程序设计、选择结构程序设计、循环结构程序设计、 数组、函数与子程序、文件、派生类型与结构体、指针、模块、常用数值算法。另外,还扩充了计算思维和计算 机系统组成的相关知识。
最新《FORTRAN95程序设计》学习笔记资料
《FORTRAN 95 程序设计》学习笔记66RPG gg★ 目录★《FORTRAN 95 程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT 、隐式、TYPE) (1)流程与控制(if 、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE 与面向对象(重载操作符、虚函数) (9)文件相关(OPEN 、WRITE 、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL ,VB 调用) (12)数值算法与IMSL (数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT 、隐式、TYPE)★ 【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin ,有一个Bitviewer ,可以观察变量储存方式★ 【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★ 【语法】数学表达式:+ ;- ;* ;/ ;(;);** 乘幂★ 【语法】程序结束:STOP (Ruby 的exit)★ 【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)建议:少用print ,尽量用write★ 【语法】声明整型:integer(kind=4) a ;其中kind 是使用的bytes 数, 4 or 2其他写法:integer*4 a; integer(4) a浮点:real(kind=4) a ;有效数位 6 位(12345678 存为 1.234567E7 ),如果是kind8 则为15 位有效数字此外:1E10:单精10X0, 1D10:双精10X0复数:complex :: a=(2,3)实部:real(a) ;虚部:imag(a)布尔型:Logical , .true. 和.false.★ 【语法与函数】字符串:character(20) string注意理解, fortran 的弱智字符串就是一个长度不能变的一维的东西, 极其猥琐, 和Java、Ruby 不能相提并论的string(13:13) = a” :对第13个字节的读、存string(2:3) = “go”string(6) = “我的妈呀”:从第6 个位置开始设置为“我的妈呀”a = string_a II string_b :用"〃”连接两个字符串【常用函数】char(num) , ichar(char):ASCII 码的转换相关功能【常用函数】len(string) , len_trim(string) :长度,去掉尾部空格后的长度【常用函数】index(string,key) :找key 在string 首出现的位置【常用函数】trim(string) :返回去掉尾部空格的字符串(用途不大)【函数】repeat(char,int):返回一个重复int次的char串character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★ 【规范格式】FORMA T 格式化e.g.write (*,100) A100 format(I4) 这里是100 号标识调用的格式参数控制符(前面加数字为重复次数,如416或<a>l6。
Fortran的讲义第五章共21页文档
ASSEM_FORCE.f90
<where语句>→wt;
<where语句>→[<标签>:]where(<屏蔽表达式>) {<赋值语句>}
else where(<屏蔽表达式>)[<标签>] {<赋值语句>}
{else where(<屏蔽表达式>)[<标签>] {<赋值语句>}}
给单个数组元素赋值
用数组构造器赋值(Fortran90)
两种格式:(/…/) 或 […] 只能给一维数组(或数组片段)赋值 可以是常量、表达式、三元组、隐式do循环或数组片段
用reshape语句给多维数组(或数组片段)赋值
数组元素赋值
exam_5_2
条件赋值(where)- Fortran90
第m次消元
m1,2,...n,
A (m ) AA mj
(m 1 ) mj
(m 1 ) mm
jm ,m 1 ,.n ..b ,m (m )b A m ( m (m m 1 1 )m )
pure函数(Fortran95): 确保函数不影响程序其它部分的状态
数组元素赋值
条件赋值(forall)- Fortran95
exam_5_2
<forall语句> → forall(<三元组>{, <三元组>}[,<屏蔽表达式>]) <赋值语句
>
<forall语句>→ [<标签>:]forall(<三元组>{, <三元组>} [,<屏蔽表达式>]) <赋值语句> {<赋值语句>} end forall[<标签>]
fortran 95程序设计
fortran 95程序设计
Fortran 95程序设计是一门针对科学计算和工程学科的高级编程语言。
这门语言的设计目的是为了提供一种简洁、高效、易于实现和易于维
护的编程环境,以便于开发出更高质量的科学计算和工程解决方案。
Fortran 95的特点之一是其输入输出,因为它可以使用多种方式输入
和输出数据,使程序的编写更加简单而不失灵活性。
另一个特点是其
令人宜人的书写风格,使得代码的可读性和可维护性得到了更好的保障。
此外,Fortran 95还支持模块化编程,由于模块被编写为独立的
实体,因此可以更好地调试和修改源代码。
在Fortran 95代码中,程序员使用各种算法和数学技术来解决问题。
这门语言不仅提供了一些基本的算法和数据结构,还支持数组操作、
字符串操作、位操作等高级操作。
它的函数式编程能力也很强,可以
使程序更加高效、简洁和易于维护。
虽然Fortran 95在以往的几十年中已经被不断地改进和扩展,但是它仍然存在一些问题。
例如,它只支持有限的异常处理机制,无法处理
不同层级的异常。
此外,一些新的编程语言,如Python和R,已经逐渐取代了Fortran在科学计算和工程学科中的地位。
总之,Fortran 95程序设计是一门高级编程语言,具备简洁性、高效性、易实现性和易维护性的特点。
虽然它可能存在一些缺陷和限制,但是对于需要高效可靠的科学计算和工程解决方案的行业和领域,Fortran 95仍然是一个很好的选择。
30分钟快速学习Fortran_95
Fortran 95: 函数和子程序
• Function add(a,b) implicit none real, intent(in) :: a, b real :: add add = a + b end function 主程序调用: b = 2.0 x = add(23.1,b)
Note: 1. 所有输入的变量都用 intent(in)或intent(inout)显式 或 显式 限定, 限定,说明改动不改动 2. 返回变量只能是单一变量, 也要说明类型,但不用制定 intent 3. 保持function的独立性是非 常重要的 4. 主程序中用一般函数方法调 用
read(unit=1,fmt=*) a, b, c write(unit=2,fmt=“(f3.1,i5,a5)”) x,I,name
2. 3.
Fortran的格式字符串很灵 活,请参加其它资料 请不要用Fortran77中的 请不要用 中的 format语句!严重降低程 语句! 语句 序可读性
Fortran 95: I/O
Fortran 95: I/O
简单的I/O • Read *, a, b • Print *, a, b, “hello” 复杂的格式化I/O • Read “(f5.1, f8.2)”, x1, x2 • Print “(f5.1, f8.2)”, x1, x2
Note: 1. 若配合文件读写,则需要 制定“设备”,则要用
• 运行:
Fortran 95: 格式
• • • • • • 自由格式 大小写不分 &为换行连写 !为注释语句 ! 程序中任何地方用stop可推出程序 建议每个域(program、module、function、 subrouting)第一行都写implicit none
Fortran95学习用强大ppt
2024/8/9
31
1.6 Fortran程序的编辑与运行
三、给项目工作间添加和编辑文件
七、打开项目文件
选“File”→“Open”→在打开对话框文 件类型下拉列表中选“Project Workspace(*.mdp)”→然后选项目工作间文 件夹中的项目文件。
2024/8/9
33
1.7 简单程序设计
例1:求一元二次方程x2+3x-5.6=0的 根,并打印结果。
• 利用公式:
x1,2 b
基本思想
将一个需要求解的问题分解为一 系列实体(对象),然后围绕这些对 象建立数据和函数;函数的功能决定 了该对象的行为。规定一个对象的函 数可以访问另一对象的函数,但一个 对象的数据不能应用于另一对象的函 数中。
几个基本概念: 类,对象,属性,事件,方法
三类机制: 封装、继承、多态
2024/8/9
选 “Build”→ “Build aaa.exe”。 六、运行项目文件
执行选结“果B)uild”→ “Execute aaa.exe”。(显示程序
2024/8/9
32
1.6 Fortran程序的编辑与运行
注:若Fortran程序是由一个主程序文件和若 干个子程序文件组成,则应将各文件添加 到同一项目工作间,分别进行编译,然后 连编和运行项目文件。
2024/8/9
10
1.2 算法及其表示方法
例3 求两个正整数m,n的最大公约数。 1)比较m与n的大小,如果m<n,则交换m
FORTRAN95 语法基础
FORTRAN 95 语法基础目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符二、输入与输出:表控、有格式三、选择语句与结构:IF语句、CASE结构四、DO循环结构五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值,动态数组,WHERE、FORALL语句六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序七、派生数据类型与结构体八、指针与动态链表九、文件:存取方式,基本操作语句,各类文件的读写操作十、接口、模块十一、公用区、存储关联、数据块子程序十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示附/录:标准函数与标准子例行程序一、基础部份1-1 FORTRAN 95 应用程序的创建与运行创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。
尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。
但最好还是一开始就进入Studio环境。
创建FORTRAN 95 程序的步骤大致如下:1)启动Microsoft Developer Studio可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio[开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或……\CVF66 \\MSDEV98\dfdev.exeMicrosoft Developer Studio的界面如下图所示:文档窗口工作空间窗口输出窗口2)建立工作空间(WorkSpace)工作空间(WorkSpace)对应着windows资源管理器的一个文件夹。
Fortran95 简介-全文版
Fortran95简介-全文版By陈鲸太FORTRAN的演进FORTRAN的起源,要追溯到1954年IBM公司的一项计划。
由JOHN BACKUS 领导的一个小组,尝试着在IBM 704计算机上面发展一套程序,它可以把使用接近数学语言的文字,翻译成机械语言。
这个计划在刚开始并不被大家看好,但他们在1957年交出了成果,也就是第一套FORTRAN编译器,FORTRAN语言也就因此诞生了。
FORTRAN语言的执行效率普遍的令各界满意,它证明了这项计划的可行性,也成为第一个被广泛使用的高级语言。
FORTRAN的名字来自于英文的FORMULA TRANSLATOR这两个字,而这两个字恰是数学公式翻译器的意思。
旧版的FORTRAN77是在1978年由美国国家标准局(ANSI)所正式公布的,之后改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是为了FORTRAN 95所撰写。
编译器简介1、VISUAL FORTRANVISUAL FORTRAN一开始是起源于MICROSOFT的FORTRANPOWERSTATION 4.0,这套工具后来卖给DIGITAL公司来继续发展,下一个版本称为DIGITAL VISUAL FORTRAN 5.0,DIGITAL后来被COMPAQ合并,所以接下来的6.0及6.5版就称为COMPAQ VISUAL FORTRAN。
而COMPAQ目前又跟HP合并,也许下一个版本会称为HP VISUALFORTRAN。
VISUAL FORTRAN被整合在一个叫作MICROSOFT VISUAL STUDIO的图形接口开发环境中,VISUAL STUDIO提供一个统一的使用接口,这个接口包括文书编辑功能,PROJECT的管理、除错工具等等,所以在使用上其实跟上学期的VISUAL C++满类似的,同学们上课用过VISUAL C++,对VISUAL FORTRAN应该不会陌生。
FORTRAN95程序设计实验指导[定稿]
FORTRAN95程序设计实验指导[定稿] FORTRAN95程序设计实验指导第一节 Compaq Visual FORTRAN 6.5快速入门 1.1 安装Compaq Visual FORTRAN 6.51.1.1 系统要求)需要具备以下软硬件条件:安装Compaq Visual FORTRAN 6.5(以下简称为CVF, 80586或以上处理器,运行Windows 98//NT/2000或以上操作系统。
, 具有光盘驱动器。
, 64MB或以上内存。
, 足够的硬盘空间。
安装程序根据安装选项提示所需的硬盘空间。
专业版的典型安装需要约300MB硬盘空间。
, SVGA显示器。
, 鼠标。
1.1.2 安装步骤下面以Windows 2000操作系统为例,对于其他Windows 操作系统,安装过程与此类似。
首先,将含CVF的光盘插入光盘驱动器,在资源管理器中运行Setup程序,屏幕显示Compaq VisualFORTRAN Setup窗口;单击【istall Visual Fortran】按钮;当出现询问是否查看README.TXT文件的对话框时单击【否】按钮;安装程序自动搜索已有组件,单击【Continue】(继续)按钮,并按提示输入用户名、公司名、产品系列号后,安装程序会显示安装选项对话框(图1.1);如果要改变安装CVF的文件夹,单击【Change Folder...】(改变文件夹)按钮,选择或输入所需的文件夹名;如果输入的文件夹不存在,安装程序会自动生成该文件夹,并生成几个下级文件夹以存放相应的各类文件。
图1.1还显示了各安装选项的简短说明和安装时所需的硬盘空间。
选择下列四个安装选项之一继续安装:Typical(典型)Custom(定制)Run from CD-ROM(从光盘运行) Typical(典型)安装选项将安装最常用的部分,约需298MB硬盘空间。
Custom(定制)安装选项将允许用户选择安装自己需要的组件(约需350MB空间)。
FORTRAN95程序设计实验
FORTRAN95程序设计实验FORTRAN95程序设计实验本文档涉及附件。
本文所涉及的法律名词及注释。
⒈简介本文档旨在提供一个完整的FORTRAN95程序设计实验的指南。
它包括实验的背景、目的、实验步骤、程序代码和测试结果等内容。
⒉实验背景在本节中,将介绍该实验的背景信息。
这可能包括与程序设计相关的概念、算法、问题陈述等。
⒊实验目的在本节中,将明确说明该实验的目的。
这可以包括学习特定的FORTRAN95编程技术、理解特定算法的实现、解决特定问题等。
⒋实验步骤本节将详细说明完成该实验所需的步骤。
每个步骤都应该清晰明了,并包括必要的代码片段和解释。
⑴实验准备在本段中,将列出完成该实验所需的软件和硬件准备,例如安装FORTRAN95编译器、准备输入文件、设置运行环境等。
⑵实验步骤1:任务1在本段中,将详细介绍实验中的第一个任务。
这可以包括问题描述、算法设计、需要编写的FORTRAN95代码等。
⑶实验步骤2:任务2在本段中,将详细介绍实验中的第二个任务。
同样,包括问题描述、算法设计、FORTRAN95代码等。
⒌程序代码在本节中,将提供实验中使用的完整FORTRAN95程序代码。
代码应该经过清晰的注释,以便读者理解。
⒍测试结果本节将展示每个任务的测试结果。
这可能包括输入和输出示例,以及对结果的说明和分析。
⒎总结在本节中,将对整个实验进行总结。
包括实验过程中遇到的困难、得到的经验教训、对FORTRAN95编程的理解等。
⒏附件该文档包含以下附件:实验说明书、FORTRAN95代码文件、输入文件、输出文件等。
⒐法律名词及注释在本节中,将列出在文档中使用到的法律名词,并提供相应的注释。
这有助于读者更好地理解涉及法律方面的内容。
Fortran95语言程序设计
《Fortran95语言程序设计》课程教学大纲课程英文名称:Fortran95 Programming Design课程编号:0332232002课程计划学时:32学分:2课程简介:FORTRAN语言程序设计是材料物理专业的开设的专业基础课, FORTRAN语言在科学计算领域有着十分广泛的应用。
通过本课程的学习,应使学生掌握FORTRAN95的基本概念,语法规则和利用FORTRAN95进行程序设计的方法。
使学生在后继课的学习中,能够利用FORTRAN95上机编程,解决相应的实际问题,并能在今后的学习和工作中,结合自己的专业知识,开发相应的计算机应用程序。
一、课程教学内容及教学基本要求第一章 Fortran语言程序设计概述本章重点:算法、程序基本结构难点:语言元素本章学时:2学时教学形式:讲授与上机实践相结合教具:计算机,投影仪第一节 Fortran语言程序设计概述本节要求了解:程序设计的过程、基本方法、程序设计语言的分类、Fortran语言的发展、Fortran77、Fortran95程序设计的构成及其兼容性,(考核概率20%)理解:算法的概念,掌握:算法的描述、程序基本结构与书写规则(考核概率100%)1 程序设计的过程算法的描述(重点,难点)2 程序设计的基本方法3 程序设计语言4 Fortran语言的发展5 Fortran95程序基本结构与书写规则(重点)6 Fortran95程序设计的兼容性第二节Fortran95开发环境(第一次上机实验课讲述)本节要求了解:在可视化编程的条件下Fortran 语言所具备的一些新的特点和功能,掌握:可视化编程所需的基础知识和一般步骤(考核概率100%)1 熟悉Fortran95 环境进入系统2 建立项目文件3 建立源程序文件4 输入源程序的内容5 编译、连接、运行作业:认真复习本章内容,预习第二章内容。
第二章数据类型及其运算本章重点:Fortran语言的基本数据类型及其常量表示方法难点:算术表达式的写法本章学时:1学时教学形式:讲授与上机实践相结合教具:计算机,投影仪第一节数据类型及其运算本节要求了解:各种类型常量、变量的定义、算术表达式的写法,(考核概率100%)掌握:Fortran语言的基本数据类型及其常量表示方法(考核概率50%)1 常量2 变量及其定义3符号常量及其定义4 Fortran表达式(重点)作业:认真复习本章内容。
FORTRAN95程序设计与数据结构基础教程课程设计
FORTRAN95程序设计与数据结构基础教程课程设计一、课程设计概述本课程设计旨在让学生通过实战演练,掌握FORTRAN95程序设计与数据结构基础知识。
本课程设计需要完成以下任务:1.学习FORTRAN95程序设计语言的基础知识2.掌握FORTRAN95数据结构的基础知识3.基于FORTRAN95设计和实现一个程序,实现特定功能二、课程设计内容2.1 FORTRAN95程序设计语言的基础知识1.FORTRAN95的发展历史2.FORTRAN95程序结构3.FORTRAN95数据类型4.FORTRAN95运算符5.FORTRAN95输入输出语句6.FORTRAN95选择结构和循环结构7.FORTRAN95数组8.FORTRAN95子程序2.2 FORTRAN95数据结构的基础知识1.数据结构的概念与分类2.数组、队列、栈3.链表、树、图2.3 基于FORTRAN95设计和实现一个程序,实现特定功能本课程设计要求在掌握FORTRAN95程序设计语言和数据结构基础知识的基础上,设计和实现一个能够实现如下功能的程序:1.读取文件中保存的学生信息,包括学生姓名、学号、性别、年龄、成绩等2.在屏幕上输出学生信息,要求输出的信息包括学生姓名、学号、性别、年龄、成绩、排名等3.根据学生成绩,计算并输出班级平均分、最高分、最低分4.根据学生成绩,计算并输出优秀、及格和不及格的人数和比例5.根据学生成绩,将学生按照成绩排序,并按照成绩排名输出学生信息三、课程设计要求1.学生需使用FORTRAN95程序设计语言,完成指定任务2.程序设计需通过FORTRAN95编译器进行编译,并能正确运行3.代码需具备良好的注释和文档4.学生需提交程序设计报告,报告应包括以下内容:–设计思路–程序的详细设计–实现过程–测试结果分析四、课程设计考核方式学生将按照以下方式进行考核:1.对程序进行代码评分,包括代码的可读性、规范性、有效性和健壮性2.对程序设计报告进行评分,包括报告的逻辑性、清晰性、详细性和语言表达能力五、课程设计参考资料1.《Fortran 95/2003入门经典》2.网络教学资源3.教师提供的其他参考资料六、总结通过本课程设计,学生将能够深入了解FORTRAN95程序设计语言和数据结构基础知识,掌握程序设计能力,并拥有完成实际项目的能力。
Fortran95程序设计【彭国伦】学习笔记
续行符
只使用&,位置在开始行 73 列和以后各续行 6 列
语句
7~73 列
以下都是讨论 Fortran 90。
3、Fortran 和 C 的差异
其实两者差异很多,在下面涉及具体方面时可以看到,这里只从 Fortran 的角度大致提一 些。 (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)除可指定所有特征的显式数组外,有些情况下可以声明形状、大小待定的假定形状数组、 假定大小数组以及迟形数组,方便使用。
三、数据类型及输入输出
1、数据类型,声明及赋初值
(1)INTEGER: 短整型 KIND=2, 长整型 KIND=4 INTEGER([KIND=]2) :: A=3
!如果声明成 INTEGER:: A,则默认为长整型。"::" 在声明并同时赋初值时必须要写上; 类型名后面有属性说明时也必须保留"::";其他情况可略去属性说明。比如声明常数:
同。 再看一段实用的程序,增加感性认识。计算圆柱的表面积,要求输入底面半径和高度,
其中展示了 Fortran 的一些特色用法。
PROGRAM CYLINDER
Fortran的选择程序设计(彭国伦95实例PPT)
假 真 真
假
假
假
假
真
真
假
假
逻辑表达式的运算次序(运算符的优先级别)
运算类别 括号 算术运算 运算符 ( ) ** * / + - 优先级 1 2 3 4
关系运算
.GT. .LT . .GE. .LE. .E Q. .NE. .NOT. .AND. .OR. .EQV. .NEQV.
5
逻辑运算
6 7 8 9
例1
IF语句 假设现在正在高速公路上,如果车速超过100公里,就输出警告标语 program ex01 implicit none real (kind=4) :: speed write(*,*) “speed:” ! ← 信息提示 read(*,*) speed ! ← 速度读入 if ( speed>100.0) then ! ← speed>100时才会读入下列程序 write(*,*) "slow down." end if stop end
通常在if中的逻辑运算判断非常复杂,只有 需要使用到重复的逻辑运算时,才会配合 逻辑变量来使用,以增加程序代码的可读 性,某些情况下使用逻辑变量可以增加执 行效率。
多重判断if-else-if
If可以配合else if来做多重判断,多重判断可以一次列出多个条件及多个程序 模块。但是其中最多只有一个条件成立,也就是最多只有其中一个程序模块 会被执行。 If(条件1)then …… ←条件1成立时,执行这个模块程序 else if( 条件2) then …… ←条件2成立时,执行这个模块程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章准备数据从本章开始,我们将赋予语言实质性的语义,也就是规定上章所描述的语言的每一个细节所具有的涵义。
这种涵义与其说是我们对于一种语言细节的定义,不如说是算法的要求,要求语言具有足够多的细节,用来表达在算法当中有可能出现的精细情节。
对于任何的问题,站在计算机的角度来看,总是可以把它抽象为如下图所示的结构:因此要准备通过计算来解决一个问题,首先要作到的是把该问题所涉及到的数据整理好,也就是列出所有的数据,然后根据数据的数学属性进行分类,这个分类的过程就是对数据施加足够的标记的过程,将来把这些数据输入到计算机,计算机将能够依据这些标记,辨识出数据所应该具有的数学属性,从而施加相应的合法数学运算。
所以作为向计算机描述计算问题的FORTRAN语言,它首先要作到的是约定如何给数据施加足够详细的标记。
对这个标记过程的第一个要求是保证准确性,也就是说这个语言的标记系统必须正确地反映真实世界的问题里面,数据所具有的数学属性,因此这个标记系统必然是与数据的数学分类结构保持一致的。
从数学的观点来看,世界上的所有数据,总是可以被表示为整数,实数,复数等等基本的数据种类,因此本章的内容就是讨论:●FORTRAN语言如何把数据归结为一些基本数据类型;●然后为了足够详尽地描述每一个数据类型的属性,FORTRAN是如何施加相应的标记的;●FORTRAN语言对于这些标记(语法形式)所约定的语义是什么。
然后我们就可以知道,要想用FORTRAN来描述一个问题的算法,并进而以问题算法的FORTRAN语言版本为媒介,通过计算机来得到计算结果,第一个步骤,就是准备好数据的FORTRAN描述。
5.1 数据是什么在上一章里,据称计算机能够使用语言,而且是非常类似于人类的语言,至少从形式上看很象,这难免会令某些人(特别是看过KUBRICK的影片《2001: A Space Odyssey》的观众们)感到恐惧:)别怕!且先不讨论FORTRAN作为语言是否具有与人类语言等价的表达能力,至少从自然语言的语义学的角度来看,FORTRAN说出来的话其实是绝对空洞的,因为FORTRAN 语言的全部语义基础就只是数据,而数据对机器而言,只是意味着经过编码的符号。
一台计算机其实是由以下6个部分组成:●数据------也就是基本数据元素以及数据结构;●基本操作------也就是一个对上述数据进行操作的基本操作集;●顺序控制------也就是一个控制针对数据的基本操作执行的时间顺序的机制;●数据存取------也就是一个如何给操作提供数据的机制;●存储管理------也就是一个数据存储分配机制;●操作环境------也就是一个支持程序和外部环境进行数据通讯的机制。
因此一台计算机●在程序的使用者看来,就是给它输入数据,它再给你加工过的结果数据;●在程序的编制者看来,就是把对数据的处理过程表示为计算机有限的一系列基本操作(指令)的集合,使得计算机能够处理相应的数据;因此,计算机的一切可以说都是围绕着数据----如何表达数据,如何处理数据。
而计算机语言所要具备的两个部分的功能,首先就是完备的描述数据的性质,然后就是描述数据的处理过程。
那么,什么是数据呢?●数据就是符号化了的信息!对于计算机来说,任何信息都只有表示为符号,才能被认可;反过来说,计算机只能输入符号,而不会也不能理解符号的含义,它的能力只是体现在按照既定规则来处理符号。
然后,就是给出数据的表示,即如何用符号来明确而无歧义地表达数据。
要使得符号具备数据的含义,需要经过这么几个步骤:●处理符号的第一步:给符号分类,并给出描述符号性质的方法。
这个分类是人作为设计者给符号规定语义的第一步,因为对于人来说,数据不能只是符号,而是具有来自真实世界的语义,设计者正是根据符号的这种语义,制定相应的处理符号的规则,而计算机要想能够正确地处理符号,基本的前提,就是每当引入一个数据,都得由人向机器声明这个数据是什么类型,这个数据具备什么性质,而且假设计算机已经被引入处理该种数据类型的规则。
●处理符号的第二步:区分常量与变量。
这一对范畴反映了最基本的人类抽象能力,也正是人类思维的基本模式。
要想让机器模拟这种能力,最简单的做法就是:任何时候都必须首先声明,哪些符号表示常量,哪些符号表示变量,而变量相应的取值范围必须规定好,也就是说必须描述其取值为具有何种属性的常量值的集合;或至少已经被机器默认。
●处理符号的第三步:给每一类数据规定相应的合法运算。
对于一种数据可以执行什么样的运算,来自于语言设计者对数据语义的规定,只有当运算被表示为相应的机器指令或指令集合,这时在表面看来,机器才开始真正“理解”了数据的“涵义”。
因此可以说,数据的定义构成了计算机的“灵魂”。
按照上面讨论的步骤,说明一个数据类型包括四个方面:●命名的语法●取值的范围与属性说明●该数据类型的常量的表示方法●定义合法的运算因此相应的一个数据类型的四个要素就是:(1) 名字;(2) 值的集合;(3) 表示值(相应的常量)的方法;(4) 操作值的运算的集合。
对于这四个要素,FORTRAN一方面要约定它们的语法形式,从而可以构成符号描述的唯一性标记,保证相应的描述语句能够被FORTRAN编译系统无歧义的辨识,另一方面就是要给出这些语法形式所对应的含义。
5.2 用FORTRAN来说明数据的性质真实世界的数据显然是多种多样的,几匹马,轴承的内径,圆周长与直径的比值,电子的波函数,非各向同性电介质的电极化率,10个被试每日的最高血压等等,这些数据都具有非常不同的形式与性质,如果我们每针对一种数据形式,都把它定义为某一种新的数据类型,则肯定是烦不胜举,因此合理的途径是找到一种统一的数据描述方式,而对于科学计算问题来说,自然的数据分类方式是数学对数值数据的分类,再加上非数值型数据,会是非常适合于科学计算的数据表达方式。
当然,如果是以描述其他类型的问题为目的,如事务处理,符号演算等,则选用另外的数据分类方式会更有效。
至少从数学的观点来看,我们常常需要处理的数据,都可以表示为一些基本数据类型的组合,例如我们知道向量实际上就是一个数组,数组的每个元素为标量,因此应用数组这种结构,就可以自然地表示向量,另外复数尽管也可表示为一个二元数组,但是这种二元数组的乘法不同于二维向量,因此为了避免这种歧义,FORTRAN把复数当成一个基本数据类型。
而几种基本标量里面,整数和实数都同样必须构成基本的数据类型。
由此可以建立FORTRAN的对数据的类似描述。
由于真实世界问题的要求的不同,对数据的描述也有程度不等的情况,最基本的情况就是直接说明数据的类型以及其他属性,又由于数据表示的实现具有一个重要的参数,即存储空间,所以当问题要求的数据,不能满足于默认的存储空间的时候,这时,就需要进一步给出数据的种别参数,这是更加详细的数据描述。
如果在真实世界问题当中出现的的数据对象,干脆不符合已有的固有数据类型以及数组的定义,这时就还需要根据用户的要求构造一个依赖于问题的特定的数据结构,这就是数据描述时会遇到的第三种情况。
对于这三种情况,FORTRAN的解决方式如下:第一种情况:确定数据的类型以及相应的可能具有的属性。
首先,FORTRAN所能辨识的数据类型首先分为两大类:●固有数据类型●派生数据类型根据语义上的基本差别,数据首先具有一些基本的类型,这些基本类型一般是和构成真实世界里的信息的那些基本元素相对应,比方说数字,字符等。
然后其他情况下遇到的数据都可以由这些基本数据类型组合得到。
不过一种语言具体的规定哪些基本的数据类型,往往受到该种语言主要应用的场合的影响,由于FORTRAN主要用来进行科学计算,因此它所定义的基本数据类型,正是与我们在科学计算问题当中遇到的数据类型相契合的。
●所谓固有类型,是FORTRAN语言所定义的最基本的数据类型,每一种固有类型是和该种数据类型相应的各种运算一起隐式定义的,也就是说一旦声明引入某种固有数据类型,则系统总是默认为对它进行相应的运算是合法的,并且总是可访问的。
这样就做到了每种数据类型都和它相应的运算捆绑在一起,使得问题的描述非常自然。
●固有类型包括五种:整型(INTEGER)、实型(REAL)、复型(COMPLEX)、逻辑型(LOGICAL)和字符型(CHARACTER)。
这个分类完全是遵循数据的数学分类,即整型指整数,实型指实数,复型指复数,逻辑型指逻辑值,字符型则是语言的基本元素。
这样就可以把基本的数学语言一一对应的直接翻译为FORTRAN语言。
●所谓派生类型是由用户定义的,非隐式定义的类型,只要用一个类型定义来声明其成员是何种固有类型,或者是何种其它已经定义过的派生类型,就能够被FORTRAN 认可为一种数据类型。
由于派生数据类型正是由固有数据类型充当成员而构成的,因此在结构关系上,可以把固有数据类型看成原子,而把派生数据类型看成分子。
由于语言的根本目的就是为描述算法服务的,因此从这个角度出发,派生数据类型本质上体现了非常重要的数据抽象与数组合的思想,由于我们需要运用语言来描述的问题是开放性,我们很难划定需要FORTRAN来描述的问题的范围,因此通过构造派生数据类型,使得我们可以很自然而简洁地建立新的数据类型。
这是FORTRAN在FORTRAN77标准之后的一个重大进步。
派生类型数据最重要的用途就是扩充了数组这种重要的数据结构,由于数组在科学计算领域,是一种极端重要的数据结构类型,FORTRAN除了能够直接描述数组,同时还能描述更为广泛的派生数据类型,也就可以直接对一个数据集合的各个成员同时施加运算,拥有了这种自然的数据类型,就避免了象FORTRAN的早期版本那样,需要通过特别设计的算法来实现这种运算。
所谓固有数据类型的固有,对于FORTRAN来说,就是为每一种固有数据类型规定了它的存储模式。
在FORTRAN77及其之前的标准里,整型,实型,逻辑型数据都是使用了一个数值存储单元,而复型和双精度数据则使用了两个数值存储单元,字符型数据使用一个字符存储单元。
由于存储模式是非常底层的语言实现结构,因此FORTRAN后续的标准要想保持兼容,只有继承这个约定。
因此在FORTRAN90与95当中,默认的整型,实型,逻辑型数据都是使用了一个数值存储单元,而默认的复型和双精度数据则使用了两个数值存储单元,默认的字符型数据使用一个字符存储单元。
而作为语言的一个发展,在FORTRAN90之后的标准里,开始允许在一个程序单元内,由用户定义特定的不依赖于固有数据存储模式的数据类型,这就是第6章的派生数据类型。
建立一种数据类型,最大的好处就是可以把相关的运算和数据捆绑在一起,对于一个特定问题当中的数据对象,是否应该被明确地看成数据类型,属于语言设计的权宜,因为建立一种数据类型所能带来的好处可以用算法来补偿,而FORTRAN77之后的版本的选择是增加派生数据类型,这样使得我们可以在进行科学计算时,有更为自然的描述方式。