第1章Fortran概述.ppt
第一章Fortran 概述概述本章将介绍本章将介绍:程序设计与程序设计语言程序设计与程序设计语言Fortran 语言的发展语言的发展Fortran程序引例程序引例Fortran 95编译环境与上机步骤编译环境与上机步骤 计计算算机机能能够够完完成成预预定定的的任任务务是是计计算算机机硬硬件件和和软软件件协同工作的结果协同工作的结果借助已有的借助已有的应用软件应用软件程序设计程序设计任何一个计算机系统都是按照人们用某种程序设计语言编写任何一个计算机系统都是按照人们用某种程序设计语言编写的程序进行工作的程序进行工作,人们通过程序设计语言编写的程序来指挥和人们通过程序设计语言编写的程序来指挥和控制计算机运行。程序设计语言是人与计算机进行交流的有控制计算机运行。程序设计语言是人与计算机进行交流的有效工具效工具,伴随计算机诞生而诞生伴随计算机诞生而诞生,伴随计算机发展而发展伴随计算机发展而发展,在计在计算机科学技术的发展过程中算机科学技术的发展过程中,发挥了巨大作用。发挥了巨大作用。对于计算机来说,如果说对于计算机来说,如果说CPU是计算机心脏,那么程序设是计算机心脏,那么程序设计语言及其程序就是其灵魂。了解和掌握程序设计语言和程计语言及其程序就是其灵魂。了解和掌握程序设计语言和程序设计方法是驾驭和运用计算机系统的重要一环。序设计方法是驾驭和运用计算机系统的重要一环。程程 序序 设设 计计 与与 程程 序序 设设 计计 语语 言言 通通常常,完完成成一一项项复复杂杂的的任任务务,需需要要进进行行一一系系列列的的具具体体工工作作。这这些些按按照照一一定定的的顺顺序序安安排排的的工工作作即即操操作作序序列列,就就称称为为程序程序。例如,下面是某一个学校颁奖大会的程序。例如,下面是某一个学校颁奖大会的程序:宣布宣布大会开始大会开始 介绍介绍出席大会的出席大会的领导领导 校长校长讲讲话话 宣布宣布获奖获奖名单名单 颁颁奖奖 获奖获奖代表代表发言发言 宣布宣布大会结束大会结束 程序程序是是计算机为完成某一个任务所必需执行的一计算机为完成某一个任务所必需执行的一系列指令的集合系列指令的集合。程序程序是软件的是软件的主要表现形式主要表现形式,程序设计程序设计是软件实是软件实现的现的主要手段主要手段,程序设计语言程序设计语言是程序设计的是程序设计的基本工具基本工具。什么是程序?什么是程序?分析分析抽象抽象模型模型求解求解命令命令编程编程调试调试程序程序实际实际问题问题问题问题模型模型求解求解算法算法编制编制程序程序问题问题实现实现问题模型u结构分析结构分析 线性方程组线性方程组u人口预报人口预报 微分方程微分方程u优化问题优化问题 线性规划、非线性规划线性规划、非线性规划u震动问题震动问题 矩阵分析;特征值、特征向量矩阵分析;特征值、特征向量u信息管理信息管理 二维数据表二维数据表u下棋下棋 树型结构遍历树型结构遍历u交通管理交通管理 图型结构遍历图型结构遍历程序设计语言的分类1.机器语言机器语言:二进制代码形式,可以被计算机直接执:二进制代码形式,可以被计算机直接执行,不可移植行,不可移植2.汇编语言汇编语言:用助记符来代替机器指令,容易记忆,:用助记符来代替机器指令,容易记忆,不可移植不可移植3.高级语言高级语言:接近自然语言(英语)的程序设计语言,:接近自然语言(英语)的程序设计语言,又称算法语言,易学、易用、易维护,可移植性好又称算法语言,易学、易用、易维护,可移植性好例:例:FORTRAN、BASIC、PASCAL、C、LISP、PROLOG等等0010001100000010 -0010001100000010 -将将2 2送累加器送累加器A A0000001100000011 -0000001100000011 -将将3 3与累加器相加与累加器相加,结果在累加器结果在累加器00110111 -00110111 -将累加器数取反将累加器数取反,求反码求反码00010111 -00010111 -将累加器数加将累加器数加1,1,求补码求补码,结果为结果为-5-50000001100000100 -0000001100000100 -将将4 4与累加器相加与累加器相加,结果结果-1-1在累加器在累加器00110111 -00110111 -将累加器数取反将累加器数取反,求反码求反码00010111 -00010111 -将累加器数加将累加器数加1,1,求补码求补码,结果为结果为1 100000010 -00000010 -将累加器数将累加器数1 1从总线输出从总线输出MOV A,2H -MOV A,2H -将将2 2送累加器送累加器A AADD A,3H -ADD A,3H -将将3 3与累加器相加与累加器相加,结果在累加器结果在累加器CPL A -CPL A -将累加器数取反将累加器数取反,求反码求反码INC A -INC A -将累加器数加将累加器数加1,1,求补码求补码,结果为结果为-5-5ADD A,4H -ADD A,4H -将将4 4与累加器相加与累加器相加,结果结果-1-1在累加器在累加器CPL A -CPL A -将累加器数取反将累加器数取反,求反码求反码INC A -INC A -将累加器数加将累加器数加1,1,求补码求补码,结果为结果为1 1OUTL BUS,A -OUTL BUS,A -将累加器数将累加器数1 1从总线输出从总线输出print*print*,2+3-4 -2+3-4 -计算计算2+3-42+3-4,并输出,并输出endend机机器器语语言言程程序序汇汇编编语语言言程程序序高级高级语言语言程序程序低低级级语语言言高高级级语语言言程序设计语言程序设计语言机器语言目标程序机器语言目标程序 高级语言源程序高级语言源程序解释一句执行一句解释一句执行一句 编译程序编译程序 解释程序解释程序 高级语言源程序高级语言源程序例:例:教师节要到了,学校对教龄满教师节要到了,学校对教龄满30年的教职工发放荣誉证年的教职工发放荣誉证书,书,要求从要求从存放教职工档案的存放教职工档案的“d:zgda.dat”文件文件中中,显示显示出教龄满出教龄满30年的教职工的姓名和所在部门年的教职工的姓名和所在部门。用用Fortran执行任务的程序可编写如下:执行任务的程序可编写如下:character name*10,department*20integer schoolage,iopen(1,file=”d:zgda.dat”)do i=1,1265 read(1,*)name,department,schoolage if(schoolage=30)print*,name,departmentenddoend 程序是用程序是用计算机能识别的语言计算机能识别的语言所描述的解决实际问题的所描述的解决实际问题的方方法和步骤法和步骤。一个计算机程序主要描述了两部分内容:一个计算机程序主要描述了两部分内容:(1)问题的每个对象及它们之间的关系)问题的每个对象及它们之间的关系数据结构数据结构(2)处理动作和这些动作的先后顺序以及它们所作用的对象,)处理动作和这些动作的先后顺序以及它们所作用的对象,要遵守的规则。要遵守的规则。算法算法计算机程序具有以下共同的性质:计算机程序具有以下共同的性质:(1)目的性)目的性(2)分步性)分步性(3)有序性)有序性(4)有限性)有限性(5)操作性)操作性什么是程序设计?什么是程序设计?对于初学者来说,往往把程序设计简单地理解为只是编对于初学者来说,往往把程序设计简单地理解为只是编写一个程序。这是不全面的。程序设计反映了利用计算机解写一个程序。这是不全面的。程序设计反映了利用计算机解决问题的全过程,包含多方面的内容,而编写程序只是其中决问题的全过程,包含多方面的内容,而编写程序只是其中的一个方面。使用计算机解决实际问题,通常是的一个方面。使用计算机解决实际问题,通常是先要对问题先要对问题进行分析进行分析并并建立数学模型建立数学模型,然后考虑数据的然后考虑数据的组织方式和算法组织方式和算法,并用并用某一种程序设计语言某一种程序设计语言编写程序编写程序,最后最后调试程序调试程序,使之运使之运行后能产生预期的结果。这个过程称为程序设计。行后能产生预期的结果。这个过程称为程序设计。【例例1-1】输入三个数据,计算它们的算数平均值和几何平输入三个数据,计算它们的算数平均值和几何平均值。均值。分析:分析:假设用假设用a a,b b,c c分别表示三个数,在数学上,要计算分别表示三个数,在数学上,要计算这三个数的算数平均值和几何平均值,采用以下公式:这三个数的算数平均值和几何平均值,采用以下公式:可按照以下步骤进行可按照以下步骤进行:第第1步:步:定义定义a,b,c以及存放计算结果的变量以及存放计算结果的变量ave1和和ave2第第2步:步:输入数据到输入数据到a,b,c第第3步:步:分别利用公式计算算数平均值和几何平均值分别利用公式计算算数平均值和几何平均值第第4步:步:输出计算结果输出计算结果如何编写程序在计算机上实现上述公式的计算呢?如何编写程序在计算机上实现上述公式的计算呢?real a,b,c,ave1,ave2!变量定义说明变量定义说明read*,a,b,c!输入变量输入变量A和和B的值的值ave1=(a+b+c)/3!计算算数平均值计算算数平均值ave2=(a*b*c)*(1.0/3)!计算几何平均值计算几何平均值print*,算数平均值为算数平均值为:,ave1!输出输出ave1的值的值print*,几何平均值为几何平均值为:,ave2!输出输出 ave2的值的值end四个基本步骤:四个基本步骤:(1)分析问题,确定数学模型或方法。分析问题,确定数学模型或方法。(2)设计算法,确定功能。设计算法,确定功能。(3)选择编程工具选择编程工具(语言语言),编写程序。,编写程序。(4)调试程序,输出结果。调试程序,输出结果。算法设计是程序设计的主要步骤。算法是指算法设计是程序设计的主要步骤。算法是指为解决给定为解决给定问题而需要计算机去一步一步执行的有穷操作过程的描述问题而需要计算机去一步一步执行的有穷操作过程的描述。一个算法必须具有以下特征:一个算法必须具有以下特征:(1 1)有穷性)有穷性(2 2)确定性)确定性(3 3)可执行性)可执行性(4 4)数据输入)数据输入(5 5)数据输出)数据输出算法的描述自然语言(文字说明)伪代码流程图盒式图(N-S图)程序设计语言文字说明例如,比较两数例如,比较两数A、B的大小,输出较大的数的大小,输出较大的数 粗略的思路:粗略的思路:(1)读入读入A、B (2)判断)判断A是否大于是否大于B (3)若是则输出)若是则输出A,否则输出,否则输出B (4)结束)结束伪代码v一一种种介介于于自自然然语语言言和和程程序序设设计计语语言言之之间间的的文字和符号表达工具描述算法的方法:文字和符号表达工具描述算法的方法:IF AB 输出输出A ELSE 输出输出B END流程图使用具有特定含义的图形符号来表示算法。使用具有特定含义的图形符号来表示算法。图形符号图形符号图形符号图形符号名称名称名称名称代表的操作代表的操作代表的操作代表的操作输入输入输入输入/输出输出输出输出数据的输入与输出数据的输入与输出数据的输入与输出数据的输入与输出处理处理处理处理各种形式的数据处理各种形式的数据处理各种形式的数据处理各种形式的数据处理判断判断判断判断判判判判断断断断选选选选择择择择,根根根根据据据据条条条条件件件件满满满满足足足足与与与与否否否否选择不同路径选择不同路径选择不同路径选择不同路径起止起止起止起止流程的起点与终点流程的起点与终点流程的起点与终点流程的起点与终点特定过程特定过程特定过程特定过程一个定义过的过程一个定义过的过程一个定义过的过程一个定义过的过程流程线流程线流程线流程线连接各个图框,表示执行顺序连接各个图框,表示执行顺序连接各个图框,表示执行顺序连接各个图框,表示执行顺序连接点连接点连接点连接点表示与流程图其他部分相连接表示与流程图其他部分相连接表示与流程图其他部分相连接表示与流程图其他部分相连接用N-S图描述算法 针对一般流程图的缺点,1973年美国学者L.Nassi和B.Schneiderman提出了一种新的流程图工具N-S图,N-S图以三种基本结构作为构成算法的基本元素,每一种基本结构用一个矩形框来表示,而且取消了流程线,各基本结构之间保持顺序执行关系。N-S图可以保证程序具有良好的结构,所以N-S图又叫结构化流程图。盒式图(N-S图)条件条件满足满足不满足不满足S1S1块块S2S2块块0=S0=I I输入输入AS+A=SI I+1=I I直到直到 I=4I=4输出结果输出结果 S S 从从根根本本上上讲讲,程程序序就就是是用用计计算算机机语语言言描描述述的的算算法法。算算法是程序设计的核心和基础。法是程序设计的核心和基础。算算法法构构造造的的思思维维方方法法与与一一般般数数学学系系统统的的思思维维方方法法有有所所不不同同,理理解解、熟熟悉悉和和习习惯惯算算法法构构造造的的思思维维方方法法,是是学学习习计计算算机机程程序序设设计计的的基基本本内内容容、主主要要难难点点与与重重点点。从从某某种种意意义义上上说说,算算法法设设计计能能力力的的培培养养实实际际上上就就是是对对合合理理进进行行计计算算能能力力的的培培养养,而而要要发发现现这这种种合合理理性性,寻寻得得“简简捷捷算算法法”,首首先就必须要有很好的观察能力和对基础知识的良好掌握。先就必须要有很好的观察能力和对基础知识的良好掌握。程序的程序的处理对象是数据处理对象是数据,每个数据都有一定的特性和关,每个数据都有一定的特性和关联,因此为了更好的处理和操作,要研究数据,对数据进行联,因此为了更好的处理和操作,要研究数据,对数据进行有规律的组织和构造。在算法设计中,有规律的组织和构造。在算法设计中,数据的组织和构造都数据的组织和构造都有其基本方式和规律,这种组织和构造方式称为数据结构。有其基本方式和规律,这种组织和构造方式称为数据结构。对于不同的数据结构,程序中要采用不同的处理方法对于不同的数据结构,程序中要采用不同的处理方法Wirth提出了一个著名的公式来表达程序的实质:提出了一个著名的公式来表达程序的实质:程序程序=数据结构数据结构+算法算法 算法设计好后,选择一种程序设计语言来描述算法,即算法设计好后,选择一种程序设计语言来描述算法,即编写程序,得到程序代码编写程序,得到程序代码。例如上面例题的源程序。例如上面例题的源程序。要正确合理的编写程序,必须掌握程序语言的要正确合理的编写程序,必须掌握程序语言的语句、函语句、函数、结构、语法等数、结构、语法等。FORTRANFORTRAN语言的数据结构,语句,函数,结构,语法等以语言的数据结构,语句,函数,结构,语法等以及一些相关的常用算法。及一些相关的常用算法。Fortran Fortran 语言的发展语言的发展FORTRAN语言语言是世界上第一个高级程序设计语言是世界上第一个高级程序设计语言,50年代年代初由初由IBM公司的公司的John Bacuus领导的一个小组研制。领导的一个小组研制。FORTRAN是英文是英文“FORmula TRANslator”的缩写,译为的缩写,译为“公式翻译器公式翻译器”,广泛应用于科学和工程计算领域。,广泛应用于科学和工程计算领域。FORTRAN语言语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。以其特有的功能在数值、科学和工程计算领域发挥着重要作用。FORTRAN语言对程序设计语言的研究和发展有较大的影响。语言对程序设计语言的研究和发展有较大的影响。随着计算机科学技术的飞速发展,随着计算机科学技术的飞速发展,FORTRAN语言也不断得到完善语言也不断得到完善和充实,从传统和充实,从传统FORTRAN,到结构化,到结构化FORTRAN,再到具有现代,再到具有现代特征的特征的FORTRAN90、FORTRAN95。Fortran 95 Fortran 95 开发环境开发环境 要要编编写写并并运运行行程程序序,需需要要相相应应的的开开发发工工具具。最最早早微微软软公公司司推推出出Microsoft Microsoft Fortran Fortran PowerStation4.0PowerStation4.0开开发发环环境境用用于于Visual Visual FortranFortran的的开开发发。在在19971997年年3 3月月微微软软和和数数据据设设备备公公司司(Digital Digital Equipment Equipment Corp,Corp,简简称称DECDEC)合合作作研研究究,开开发发和和推推出出了了Digital Digital Visual Visual FORTRAN FORTRAN 5.05.0,19981998年年1 1月月,DECDEC与与CompaqCompaq公公司司合合并并,DECDEC成成为为CompaqCompaq公公司司的的全全资资子子公公司司,其其后后又又推推出出Compaq Compaq Visual Visual Fortran Fortran 等。等。1.系统安装和启动系统安装和启动2.上机步骤上机步骤 从原理上讲,从原理上讲,Fortran程序上机运行要经过编辑、编译、程序上机运行要经过编辑、编译、连接和运行四个步骤。具体操作如下:连接和运行四个步骤。具体操作如下:(1)创建工作空间创建工作空间 (2)建立一个工程建立一个工程(Project)。(3)建立源程序文件。建立源程序文件。(4)编译源程序文件编译源程序文件 (5)构建可执行程序构建可执行程序 (6)运行程序运行程序思考题:思考题:求圆锥的体积和表面积rh