1、自我介绍,主讲教师:,张洪志,办公地点:,实验楼204室,办公电话:,86413080,电子信箱:,,为什么学习fortran90语言,信息社会,父母期盼成才,科技工具,通过水平考试 (择业的条件),如何学习fortran90语言,课堂教学,+上机,课程要求,课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间,一、教学内容:,fortran90语言程序设计的基本语法、 基本句法、基本结构和基本程序设计方法。,二、教学目的:,学习结束学生应达到三会 会读程序、会编程序、会调程序。,三、教学环境:,采用多媒体教学环境:黑板、投影、
2、程序编制、演示、调试等。,1fortran程序设计,谭浩强,清华大学出版2fortran90教程,潘在元,浙江大学出版社 3 fortran90,马瑞民,哈尔滨工程大学出版社,四、参考教材:,五、课程验收:平时、实验、作业、期末 六、教学时数:20/20,第一章 FORTRAN90基础知识,该章的学习内容,学点什么哪?,了解程序语言的发展简史及计算机语言的分类。 了解fortran90语言的发展简史及特点。 了解计算机程序编制的步骤 。 了解fortran90语言的常用符号,本章的学习难点,fortran90语言 编制的全过程,计算机语言与人类语言,自然语言:人类为了交流思想、表达感情、交换信
3、息,逐步发明了语言。,人工语言:为了某种专门需要,人类又发明了一些新的交流工具。,程序设计语言:人类为了能够更好地与计算机进行通讯,发明了专门与计算机打交道的交流工具。,什么是语言?,在长期的历史发展过程中,人类为了交流思想、表达感情、交换信息,逐步发明了语言。在不同的地理环境、历史条件下生成了不同的语言形式。,描述作用、交流作用和标志作用(软件语言可作为计算技术发展的里程碑标志) 语言是人类生活的必要工具,不同的语言被使用于不同的领域和方面 在计算领域,也存在不同层次的语言,本书所论及的是实现层次的语言,即程序设计语言。 程序设计语言=字符集+规则集(用于组合字符) 任何用于描述算法和数据结
4、构的一套符号系统均可称为程序设计语言,语言的作用,语言的种类,自然语言(Natural Language)诸如:汉语、英语、法语、俄语、日语. . 人工语言(Artificial Language) 诸如:旗语、哑语 程序设计语言(Programming Language)C语言、BASIC语言、FORTRAN语言,语言的功能,交流,人,人,计算机,自然语言、人工语言,计算机语言,语言的组成,自然语言的缺欠,自然语言具有歧义性。即相同的一句话,在不同的场合、用不同的语气表达回有完全不同的意义。例如: 发展中国家兔南京市长江大桥,计算机语言的特点应包括,与自然语言尽量相似、相同。符合人类的思维方
5、式。 不能具有歧义性。否则,会需要很多的注解来解释其意义。 应当尽量简单。,程序语言的发展简史,到现在为止,数百种不同的程序设计语言被设计并实现了出来,其中包括 20世纪50年代的FORTRAN和LISP; 20世纪70年代出现的Ada、C、Prolog、Pascal、SmallTalk; 20世纪80年代出现的C+、ML、Perl、Postscript; 20世纪90年代的Java。,程序语言的侧重面,基于数字计算的语言 主要代表:FORTRAN是为IBM704量身定做的主要面向数学计算。 商业语言 主要代表:1960年在美国国防部的主持下开发的COBOL语言。 人工智能语言主要代表:麻省理
6、工学院为IBM 704设计了LISP语言;Prologe则是面向特殊用途的语言。 系统语言 主要代表:C语言,用于开发UNIX操作系统。,自然语言的构成,字,程序设计语言的构成,基本单元,词、常量、 变量、函数,语句,程序,4.第四次飞跃:20世纪90年代的Java的出现标志着单机语言向网络语言的跨越,出现了第四次飞跃。,3.第三次飞跃:由80年代初期的面向过程的程序设计,跨越到80年代的面向对象编程,出现了C+、ML、Perl、Postscript等与自然更接近的语言,出现了第三个飞跃 。,2.第二次飞跃:20世纪70年代出现的结构化程序设计语言Ada、C、Prolog、Pascal、Sma
7、llTalk。,语言发展的四个飞跃,1.第一次飞跃:从1946到1956年10年的时间,计算机语言从最初的基于二进制的语言发展到可以编译的语言。,计算机(Computer) 计算机是用来延伸人的能力的工具,需要人来驾驭AI能实现吗?(AI,Artificial Intelligence,人工智能)会有那么一天,人与计算机的位置互换吗? 我们的职责是让它更容易被驾驭 自我毁灭的过程 人与计算机的对话 机器语言 计算1+1 汇编语言 BASIC语言 C语言,人与计算机的对话 机器语言 计算1+1 汇编语言 BASIC语言 fortran90语言,机器语言,计算1+1,10111000 000000
8、01 00000000 00000101 00000001 00000000,汇编语言,BASIC语言,PRINT 1+1,fortran90语言,Program main Implicit none Print*, 1+1 end,计算机基本工作过程,整个过程的执行者是硬件,但硬件是受软件控制的 编程,就是编写软件,使硬件按照人的意图工作,编译运行,编译过程 程序员(Programmer)编写程序源代码(Source Code) 编译器(Compiler)把源代码转换为可被计算机理解的机器代码(Machine Code),并把机器代码以可执行文件(Executable File)的形式保存在
9、磁盘上 软件的运行 计算机把机器代码读入到内存(Memory),由CPU运行这些代码,读取输入(Input),产生输出(Output),完成程序员预定的功能,编译语言,一种编译语言对应一种编译器 程序员按照该语言的语法编写程序源代码,把自己的意图融入到代码中 编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用,for语言,可执行程序,编译器,解释运行,解释运行过程 程序员编写程序源代码 解释器读入源代码,并执行源代码 解释运行的语言特点 执行速度慢 好学易用 先编译、后解释 把源代码编译成更容易解释的中间代码,然后再解释运行,程序语言应用侧重面,基于数学计算语言:fortran。 商
10、业语言:COBOL。 人工智能语言:LISP、Prologe 。 系统语言:PASCAL、C,第一节 FORTRAN语言的发展历史 FORTRAN语言是最早出现的计算机高级语言,主要用于科学和工程计算。FORTRAN是FORmula TRANslation(公式翻译),由美国人John Backus提出,1956年开始正式使用。 两个典型的版本 FORTRAN 1958年 FORTRAN 1962年,1966年美国标准化协会(ANSI)以FORTRAN 为基础,制定了美国国家标准文本,即FORTRAN66。1972年国际标准化组织(ISO)宣布将FORTRAN66作为ISO的FORTRAN标准
11、文本。ANSI于1976年提出了FORTRAN66的修订文本,并于1978年正式公布新的国家标准,即FORTRAN77。,自然语言写文章的步骤,必须确定内容,例如:我们想写一个“如何养兔子”的文章 。 需要确定以何种形式(小说、说明文、论述文、漫画.)表达内容。 确定文章的格式、内容的安排。 第一章 . .第一节 . .第二节 . 第二章 . .第一节 . 第二节 . . .,自然语言写文章的步骤(续),文章的书写是有格式要求的,标题字体多大、前面空几个格,每段开始时空几个格,标点符号在什么条件下如何使用,. . ; 假设文章的第一稿已经完成,要找出版社出版,出版社向你提出的第一个条件将是校验
12、文章的错误,校验文章是否有错别字、标点符号运用是否合理、段落是否清晰,校验文章叙述是否正确、目的是否叙述清楚等; 出版社会为你检查你的文章是否符合出版的要求,发现问题,会将文章返回给作者重新修改,. .,一直到完全没有问题为止;,自然语言写文章的步骤(续),出版社为你出版你的书如何养兔子。将上面的步骤用流程图的形式表示出来:,自然语言写文章的步骤(续),用计算机语言编制程序步骤,必须确定编程的内容,也就是我们要编一个什么程序。人员档案管理系统?游戏软件?数据压缩软件?防病毒侵犯程序? 需要确定以何种形式来实现我们的目的。选择包括编一个DOS、UNIX、LINUX、Windows还是OS/2程序
13、。 写出流程图 (1)(2)(3),用计算机语言编制程序步骤(续),准备工作已经完成,开始根据流程图编写程序代码。 如果选择fortran语言,则我们必须按照fortran语言的相应规定来书写源代码。我们必须清楚fortran语言的基本元素有哪些、书写是有那些格式要求、符号运用有那些规定,. . 。 程序必须书写在计算机上,才能运行(RUN),必须有编辑器(Editor)。WPS、Microsoft Word 已经书写完程序源代码 ,肯定正确吗? fortran语言的错误包括两种。 其一为警告错误(Warning)。警告错误是不太重要的错误,计算机有时可以在有警告错误存在的情况下运行,诸如“W
14、arning:x is defined,but never used”。 其一为致命错误(Error)。致命错误必须找到错误原因并修改过来,不允许“带病”运行。,用计算机语言编制程序步骤(续),修改完出错信息后,再编译程序源代码,如果还有错误,回到第五步,重新修改程序,直到没有任何错误为止。 连接过程(Linker),将生成的中间代码连接函数库生成可执行文件。 将上述过程用流程图表示如下:,用计算机语言编制程序步骤(续),一个编程实例,求任意两个正整数的最大公约数。,编程步骤1需求分析,了解、分析需要处理的对象:,处理什么:两个数据。 数据的性质:正整数。 有无限制:没有。,找出最后要求的结果
15、:,求两个数的最大公约数。,编程步骤2找出算法,算法1:,用从1到n的每一个数去除m和n,最后,一个能同时整除m和n的数即是最大公约数。,算法2:,用从n到1的每一个数去除m和n,第一个,能同时整除m和n的数即是最大公约数。,算法3,算法3:,实例,求28和16的最大公约数。,28/16 余 12,16/12 余 4,12/4 余 0,编程步骤3画出框图,Mod(m, n)R,yes,编程步骤4编写代码,Program main Implicit none Integer a,b,r Read(*,*)a,b R=mod(a,b) DoIf(r=0)exitA=bB=rR=mod(a,b) E
16、nd do Print*,b end,编程步骤5,6程序调试,1.程序编完后,如程序有错,可在编辑状态修改源程序。 2.如编译有错,可回编辑状态修改源程序。 3.如运行结果有错,可在编辑状态修改源程序。,编程步骤7,8生成代码并执行,生成可执行代码: 执行可执行文件名。,编程步骤9程序测试,将大量的真实的程序测试数据输入给计算机,看其输出的结果,结果如有错误,则找出程序的逻辑错误,在编辑状态重新修改,然后再编译。,第二节 FORTRAN90标准,1982年起,对ANSI负责的X3J3FORTRAN委员会和对ISO负责的WG5 FORTRAN委员会开始着手研究FORTRAN的第三个版本,即FOR
17、TRAN90。 91年ISO公布了它的FORTRAN90标准文本 92年ANSI公布了它的FORTRAN90标准文本 96年ANSI和ISO公布了FORTRAN95标准文本,第三节 FORTRAN90文字集,FORTRAN90源程序(文本文件)使用下列字符: 1字母:26个英文字母(大小写) 2阿拉伯数字(09) 3专用字符 22空格 * / ( ) , . $ (单撇号) : (F77 13)_(下划线) ! “(双撇号) % ? (F90增9个)共计58个字符字符数据和注释可以使用以上其他字符(含汉字等),第四节 F90源程序的书写格式,FORTRAN90 采用两种格式:1. 固定格式 文
18、件扩展名 .FOR2. 自由格式 文件扩展名 .F90 一、固定格式过时,故不重点介绍 二、自由格式程序行最长132个字符,不要求从第1列写。,F90书写格式例题,!计算两个数的平方根和 PROGRAM EX1 Implicit none REAL*4 A,B,C READ*,A !读入A的值 READ*,B !读入B的值 !上面两行等价于多语句行READ*,A; READ*,B !READ*,A,B !读入A、B的值 C=SQRT(A)+& !原始行 &SQRT(B) !续行 PRINT*,“C=“,C PRINT*,“C&=“,C PRINT*,“C&=“,C END PROGRAM EX
19、1,FORTRAN90自由格式书写规则,自由格式书写规则解释,原始行:没有!或&出现在第一个非空白处的非空白行 继续行:若一行的最后一个字符(注释除外)为&,则下一行为续行。若续行的第一个非空白字符是&,则该行从&后第一个字符算起,否则从第一列算起 最多只能有39个续行,4. 注释:!后的内容为注释内容,可独占一行或在行尾部,不允许有续行。 5. 语句标号:15位正整数,在:之 后。 6. 空格:空格不能出现在编辑符中,除非是一个字符常数。但空格可以作为分隔符将关键词、名字、语句标号分开,多个连续的空格与一个空格作用相同。,三、INCLUDE语句,功能:相当于把文件的内容插入到inlude语句
20、出现的位置。 格式:INLUDE 文件说明符 或INLUDE “文件说明符“ 说明:文件说明符:由盘符、目录名、文件名构成。,include示意过程,1,文件包含的注明,1.在被包含文件修改后,凡包含此文件的所 有文件都要重新编译。 2.一个include命令只能指定一个被包含文件, 如果包含n个文件,要用n个include命令。 3.在一个被包含文件中还可以包含另一个被包 含文件,即文件包含是可以嵌套的。,INCLUDE语句可以出现在程序单元的任意位置,单独占一行,不允许有语句标号和续行,但可以含注释。INCLUDE文件是程序单元的一部分,不能单独编译。INCLUDE文件的扩展名:F90 .
21、F90,INCLUDE语句例题,PROGRAM EX1 REAL*4 A,B,C READ*,A,B C=SQRT(A)+ SQRT(B) PRINT*,“C=“,C END PROGRAM EX1,PROGRAM EX1 INCLUDE d:testinc1.f90 C=SQRT(A)+ SQRT(B) PRINT*,C END PROGRAM EX1有文件d:testinc1.f90,内容为 REAL*4 A,B,C READ*,A,B,第五节 计算机算法,算法与算法的表示方法,1. 算法的概念 2.算法的表示方法2.1.自然语言表示2.2.流程图表示2.3. N-S结构化流程图表示2.4
22、. 伪码表示,算法的概念,解题方法的精确描述。即为解决一个特定问 题而采取的确定的有限操作步骤。广义地说做任 何事情都有其算法。,就是一个有穷规则的集合,其中的规则确定 了一个解决某一特定类型问题的运算序列。,数值运算算法: 非数值运算算法:,算法分类,数值运算算法: 解决的是求数值解的问题,例如用辗转相除法求两个数的最大公约数等 非数值运算算法: 主要用于解决需要用分析推理、逻辑推理才能解决的问题,例如人工智能中的许多问题,查找、分类等问题,算法的验证,1.有穷性。2.确定性。3.有效性。4.没有输入或有多个输入。 5.有一个或多个输出。,即算法包含的操作步骤应是有限的, 每一步都应在合理的
23、时间内完成。,即算法的每个步骤都应是确定的,不 允许有歧义性。,算法中的每个步骤都应是能有效执行 的,而且能得到确定的结果。,算法举例(1),算法1,算法2,用从1到n的每一个数去除m和n,最后 能同时整除m和n的数即是最大公约数。,用从n到1的每一个数去除m和n,第一 个能同时整除m和n的数即是最大公约数。,求任意两个数m、n(mn)的最大公约数。,举例,算法举例(2),算法3,第六节 算法的表示法,一、自然语言表示法语言冗长、易出现多样性、层次不鲜明、不直观 二、程序流程图表示法 传统流程图法、N-S图、PAD图(Problem Analysis Diagram) (一)传统流程图法 流程
24、图符号和使用约定,我国国家标准与国际标准一致。标准为GB1526-89,常用流程图符号,判定N是否是素数的流程图,开始,读入一个正整数N,K=2,R=N-N/K*K,R/=0?,K=K+1,K=N-1,N是素数,结束,N不是素数,N,Y,N,Y,算法的表示方法,自然语言表示法,传统流程图表示法,N-S结构流程图表示法,算法的自然语言表示法,求任意两个数m、n(mn)的最大公约数。,传统流程图表示法的图素,表示顺序执行语句,表示输入输出语句,表示条件判断语句,表示循环判断语句,传统流程图图素(2),表示起始、结束框,表示连接点,表示程序的走向,传统流程图举例,Mod(m, n)R,yes,no,
25、N-S结构化流程图表示,特点,最重要的特点就是完全取消了流程线, 这样算法被迫只能从上到下顺序执行, 从而避免了算法流程的任意转向,保证了 程序的质量。,优点,与传统的流程图相比,N-S图的另一个优 点就是既形象直观,画出来后又比较节 省篇幅,尤其适合于结构化程序的设计。,N-S流程图举例,伪码表示,是介于自然语言和计算机语言之间的一种 代码,是帮助程序员制定算法的智能化语言。,input m,n r=mod(m,n) loop: if(r0) thenm=nn=rr=mod(m,n) endif print n,算法的定义,简单算法举例,算法的特点,算法的表示,基本结构的图形表示方法,结构化
26、算法,结构化程序,-算法,算法的实现,为解决某一问题所采取的方法和步骤。,计算机算法,算法,-算法,-算法的定义,例1:给出计算圆的周长和面积 的算法。,例2:判断一元二次方程 aX2+bX+c=0是否有 实数解。(a0),简单算法举例,-算法,-简单算法举例,例3:给出计算 P=1*2*3*4*5的算法。,算法:,: 先计算1*2,得到结果2;,: 将得到的结果2再乘以3,得到结果6;,: 将得到的结果6再乘以4,得到结果24;,: 将得到的结果24再乘以5,得到结果120。,改进的算法:,若要计算S=1X3XX100只需将以上算法略加改进即可。,-算法,-简单算法举例,算法的特点,有穷性。
27、,确定性。,有零个或多个输入。,有一个或多个输出。,有效性。,算法的步骤是有限的,不能是无限的。,算法中的每一步骤都应当是确定的,而不是含糊、模棱两可。,所谓的输入是指在执行算法时需要从外界取得的必要信息。,算法的问题是求解,解就是输出。,算法中的每一个步骤都应当能有效地执行,得到确定的结果。,-算法,-算法的特点,算法的表示:,自然语言,流程图,N-S结构图,PAD图,伪代码,常见的流程图符号,计算机语言,-算法,-算法的表示,顺序结构、选择结构、循环结构,一个良好的算法,可用如下三种基本结构表示:,顺序结构,-算法,-基本结构的图形表示方法,流程图,选择结构,-算法,-基本结构的图形表示方
28、法,流程图,N-S结构图,循环结构,-算法,-基本结构的图形表示方法,开始,PI=3.14,读入R值,L=2*PI*R,S=PI*R*R,打印L值,打印S值,结束,PI=3.14,读入R值,L=2*PI*R,S=PI*R*R,打印L值,打印S值,用流程图和N-S结构图表示求圆的周长和圆的面积的算法。,-算法,-算法的实现,用流程图和N-S结构图表示一元二次方程 aX2+bX+c=0 是否有实数解。(a0),-算法,-算法的实现,用流程图和N-S结构图表示 P=1*2*3*4*5的算法。,-算法,-算法的实现,-算法,-算法的实现,用计算机语言表示求圆的周长和圆的面积的算法。,REAL L ,
29、S , PI , RPI=3.14READ(*,*) RL=2*PI*RS=PI*R*RWRITE(*,*) LWRITE(*,*) SEND,标识量 W,用N-S结构图表示判断N是否是素数的算法。,用N-S结构图表示判断N是否是素数的算法。,输入两个正整数 M 和N ,求其最大公约数。,111111111111111111111111,用N-S结构图或流程图表示求 1 + 2 + 3 + + 100 的算法。,用N-S结构图或流程图表示以下算法。输入a , b , c 三个数,要求按照a b c的顺序把它们打印。,结构化程序设计,结构化程序的优点: 容易设计、理解、调试和维护 三种基本结构 顺序结构 判定结构 循环结构 N-S结构流程图 PAD图(Problem Analysis Diagram),第七节 程序设计的步骤,确定问题的需求 构造数学模型 选择计算方法 设计算法和绘制流程图 编程序 调试程序 整理资料 程序评价 程序维护和升级,第一章结束,