《VisualFortran90第1、2章.ppt》由会员分享,可在线阅读,更多相关《VisualFortran90第1、2章.ppt(95页珍藏版)》请在三一办公上搜索。
1、2023/11/8,主 讲 孙艳红,Visual Fortran 90 程序设计,我已经能熟练地操作计算机了,还学什么?计算机能做什么?如何把计算机做为求解问题的工具,为我服务终身?,开始的话,计算机可以做任何事情;只要能把实际问题抽象、制作为计算机可求解的程序。计算机求解问题的步骤:,计算机能做什么?,实际问题,问题模型,求解算法,编制程序,问题实现,问题模型,结构分析 线性方程组人口预报 微分方程优化问题 线性规划、非线性规划震动问题 矩阵分析;特征值、特征向量信息管理 二维数据表下棋 树型结构遍历交通管理 图型结构遍历,“深蓝”与卡斯帕罗夫,国际象棋棋盘有64格,每方有16个子。棋手在思
2、考下一步棋时大约有35种合法选择。目前最好的国际象棋程序可以分析到七八个回合,若要求电脑能思考到第七个回合,即14步棋,则需要有3514种可能的结局。下棋程序靠的是基本的行棋知识和强大无比的检索演算能力。这种信息检索选择方式好比一棵树;共有35个枝干,每个枝干有35个树杈,最终到树叶,即可供选择的结果。越好的程序,所派生的树枝树杈就越多。一般来讲,电脑每下一步棋,仍需有500亿或600亿种选择。,两本教材(互为补充):Fortran 90 程序设计(上课)Fortran 90 程序设计实验指导与测试(上机),关于本课程教学几点说明,教学课时(3学分)上课48学时(3学分)上机48机时(其中教师
3、辅导24机时)学会实践上机,记问题,关键在个人,上机时间安排,各班级的同学,每周五下午或晚上 都要去机房一楼的通告栏查看下周上机时间,每周上机时间、机房都有可能不同。,课内上机时间安排(辅导24机时),大禹3-4班,课外上机时间安排(自主24机时),大禹3-4班,课内上机时间安排(辅导24机时),农水1-4班,课外上机时间安排(自主24机时),农水1-4班,请记好上机时间安排,并通知教学秘书,防止与其他老师调课冲突。,答疑时间:每次上机时间、课间期末考试前、必要时可增加本人电子邮箱:手机号码,本门课的成绩评定:平时+期末=总评成绩平时:作业、考勤、课堂提问,书面作业:每个人准备几张16K大小的
4、纸,作业可能是课堂上做或课后做。上机作业:每次上机均要将所做的练习存盘,并上交作业。,作业包括两种:,考试时间:13年春学期3月中旬(fortran不开考)13秋学期10月中旬考试形式笔试机试,关于江苏省计算机等级考试,一、笔试:考试时间为120分钟,二、机试:考试时间为70分钟,报名时间:上半年12月1日开始及之后的1个月之内;下半年5月25日开始及之后的1个月之内。考试时间:上半年3月底(即3月份倒数第一个周六),下半年9月中旬(即9月份倒数第二个周六)。,关于全国计算机等级考试,考试形式,考试采用全国统一命题,统一考试的形式。考试包括笔试和上机两个部分(一级只有上机,没有笔试),笔试和上
5、机考试分别进行。笔试时间二级均为90分钟,三级为120分钟,四级为120分钟。上机考试时间一级、二级均为90分钟,三级为60分钟,四级三个科目暂不考上机。第一次笔试合格但上机考试成绩不合格的,或者上机合格笔试不合格的,可以在紧接着的下一次考试中免试已经合格的部分。考生在下次考试报名时,可出具上次考试成绩单,其他手续不变。考试结束后,教育部考试中心将予以核实。,考试合格证书,该考试笔试、上机考试实行百分制计分,笔试以百分制通知考生,上机以等第分数通知考生成绩。等第分数分为不及格、及格、良好、优秀四等。100-90分为优秀,89-80分为良好,79-60分为及格,59-0分为不及格。笔试和上机考试
6、成绩均在及格以上者,由教育部考试中心发合格证书。笔试和上机考试成绩均为优秀的,合格证书上会注明优秀字样,证书上没有良好,按及格对待。,课程要求,课前请做好预习 保持课堂安静,头脑清醒,思维活跃 做好课堂笔记 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间,“纸上谈兵”学不出程序设计本领;只有大量上机、编程、调试,才能掌握。学好程序设计语言的唯一途径是上机。你的编程能力和你在机器上投入的时间成正比。,课程要求,第1章 程序设计基础知识,1.4 计算机软件,1.1计算机简介,1.2程序设计语言,1.3 算法的描述,一、信息处理和计算机1、信息处理 数值处理2、信息处理的分类
7、非数值处理3、现代计算机工作原理:程序存储和程序控制(冯诺依曼),1.1 计算机简介,二、计算机的组成1、运算器算术运算、逻辑运算2、控制器根据指令控制计算机工作 运算器、控制器和寄存器称为中央处理器CPU3、I/O设备提供数据传输服务4、总线数据传输的公共通道,5、存储器存放数据和指令 二进制位(bit)0和1的电路 字节(Byte)若干个位(8个)存储单元字节 存储器若干个存储单元 计算机的存储特性:存写 取读,1.2程序设计语言填补了人与计算机交流的鸿沟,程序设计语言的分类,1.机器语言:二进制代码形式,可以被计算机直接执行,不可移植2.汇编语言:用助记符来代替机器指令,容易记忆,不可移
8、植3.高级语言:接近自然语言(英语)的程序设计语言,又称算法语言,易学、易用、易维护,可移植性好例:FORTRAN、BASIC、PASCAL、C、LISP、PROLOG等,FORTRAN90源程序必须经过编译、连接后才可运行,F0R90源程序,编译程序,机器语言目标程序,连接构建,可执行程序,1.3 算法的描述,什么是算法?广义:解决某个问题或处理某个事件的 方法和步骤。现代含义是计算机解题步骤。,程序设计=算法+数据结构,一个好的算法应当是:可以获得正确的结果,易阅读理解,即易读性好,执行时具有较高的效率。,算法描述的方法,文字说明 伪代码 流程图 盒式图(N-S图)程序设计语言,文字说明,
9、例如,比较两数A、B的大小,输出较大的数 粗略的思路:(1)读入A、B(2)判断A是否大于B(3)若是则输出A,否则输出B(4)结束,伪代码,一种介于自然语言和程序设计语言之间的文字和符号表达工具描述算法的方法:,IF AB 输出A ELSE 输出B END,流程图,使用具有特定含义的图形符号来表示算法。,盒式图(N-S图),条件,满足,不满足,S1块,S2块,0=S,0=I,输入A,S+A=S,I+1=I,直到 I=4,输出结果 S,第2章 Fortran90基础知识,2.4 程序单元概念,2.1Fortran语言的发展,2.2源程序及其构成,2.3 语言元素,2.1 Fortran语言的发
10、展简史,一、FORTRAN 含义及其适用范围 FORmula TRANslator 公式翻译器 科学和工程计算问题的程序设计语言 是第一门广泛应用的程序语言,著名编程语言Fortran创始人巴库斯,FORTRAN语言的重要意义:Fortran堪称是软件行业的转折点,就像微处理器对硬件行业一样重要。Fortran改变了人机通信的方式,使得程序语言更容易被用户理解和接受。因此,Fortran一直被认为是首款大获成功的高级语言。1977年巴库斯获图灵奖,Fortran语言的发展简史,第一个FORTRAN语言版本是在1954年提出的,在1957年正式发布使用。,FORRAN95不象FORTRAN90在
11、FORTRAN77添加很多内容,只能视为90的修正版,加强了并行运算方面的支持,2.2 FORTRA90源程序基本结构,例2-1:见书P16页例题:已知华氏温度与摄氏温度之间的换算公式为:现输入某一华氏温度,请计算出相应的摄氏温度。,PROGRAM H_TO_C!Given the Fahrenheit temprature,to caculate the CentigradeREAL:TC,THREAD*,THTC=5*(TH-32)/9PRINT*,TH,TCEND PROGRAM H_TO_C,例2-2:见书P17页:输入M个整数,将其相加,打印出它们的和。,PROGRAM CAL_M_
12、SUMIMPLICIT NONEINTEGER:N,MREAL:T,AN=0;T=0PRINT*,Input number of data:READ*,MDOREAD*,AT=T+AN=N+1IF(N=M)EXITENDDOPRINT*,TEND PROGRAM CAL_M_SUM,例2-3:求 该问题涉及五个阶乘的相加,可用子程序实现阶乘。,FUNCTION FACTOR(N)RESULT(FAC_RESULT)IMPLICIT NONEINTEGER:N,FAC_RESULT,IFAC_RESULT=1DO I=1,NFAC_RESULT=FAC_RESULT*IENDDOEND FUNC
13、TION FACTOR PROGRAM CAL_FACTORIMPLICIT NONEINTEGER:FACTOR,S=0,IDO I=4,8S=S+FACTOR(I)ENDDOPRINT*,S=,SEND PROGRAM CAL_FACTOR,FORTRA90源程序基本结构,1、FORTRAN90程序是一种分块结构,由若干个程序单元块组成:主程序、外部子程序、模块、块数据单元 无论是主程序单元,还是子程序单元,都是独立的程序单位,应该独立编写,它们的形式相似。2、主程序结构 PROGRAM 程序名称 程序体 END program 程序名称,其中:END既表示停止运行,又是结束标记。,FOR
14、TRA90源程序基本结构,3、各程序单元体形式上相同,都由若干行组成:,语句行:说明语句:用于说明变量的类型、属性等 例:INTEGER:X,Y 可执行语句:输入、赋值、输出 例:A=4;B=B+1,非语句行:注释语句:!后的所有字符都被编译器忽略。可独占一行,也可在其它语句之后,空行为注释行(固定格式用C和*),2.3 语言元素,Fortran90的语言元素是指在程序设计中所用到的基本成分,例如字符集、常量、变量、记号以及其它的基本结构等。只有了解并掌握了这些基本要素,才可能正确自如地使用该种语言。,2.3.1 FORTRAN90字符集:编写Fortran90程序时,所能使用的所有字符及符号
15、。26个英文字母AZ(az)程序中不区分大小写在大多数处理系统中允许使用小写字母,除了字符串内的字符外,小写字母等价于相应的大写字母。,10个阿拉伯数字09 _(下划线)注意与减号(-)的区别。21个特殊字符(见表2-1):空格=+-*/(),:.$!”%&;?注意:1、在FOR源程序中,只能使用以上字符 2、字符型数据内(即引号内)可以出现任意字符(包括汉字),在Fortran90中,将字母、数字或专用字符的基本有效的序列称为记号,它包括标号、关键字、名字、常数、运算符和定界符。例如:A*SIN(x)+5.3 这个表达式包括6个记号,即A、*、SIN、x、+、5.3。注意:在字符串内部,不能
16、随意地添加空格。例“ABC”与“A B C”不同。在记号内部,也不许随意地使用空格。例SIN(X)与S I N(X)不同。记号与记号之间的空格可以随意地使用。多个空格在语法上与一个空格的作用相同。一个记号与相邻关键字、名字、常数或标号之间,应当用一个或多个空格分开,以避免错误,同时也使结构清晰。,2.3.2 记号,Fortran的数据类型(1),什么是数据类型?所有的数据都有其所属的类型。类型就是对数据的允许取值及这个值的范围进行的说明。,Fortran的数据类型(2),在每一基本类型中,依据不同的处理系统又细分为不同的种别,每一种别都与一个 整数相对应,此整数则称为种别参数kind_Valu
17、e。可在数值后用下划线标明种别,没有下划线为缺省种别。缺省种别整数的范围一般取决于所用计算机的字长。说明了种别参数后,可提高程序的可移植性。简而言之,种别即决定数值在计算机中存储的字节数。,常量的定义:常量是程序执行过程中不能变化的量。基本数据类型有五种:整型、实型、复型、字符型和逻辑型 前三种属于数值类型,后两种为非数值类型,主要用于文字处理和控制。,基本类型常量,整型数据:微机支持3种kind_Value:1,2,4kind_Value=1的范围:-128127(-2727-1)kind_Value=2的范围:-3276832767(-215215-1)kind_Value=4的-2147
18、4836482147483647(-231231-1)Integer 默认kind_Value的值为4,整型常量又叫整数,整数值的集合就是数学整数的子集。,1.整型常量(INTEGER),0+456-123 34_2 34_SHORT 1234567899_4下划线后面的量就是种别参数,没有下划线的数都具有缺省种别。,例,下列六个数都是合法的整数:,为了保证计算机内数的范围够用,就要通过给定种别参数来约定。种别参数是由内在询问函数KIND送回的。提供的最小范围是由内在函数Selected_int_kind送回的。表示十进制幂的范围是由内在函数range送回的。,功能:返回一个给定数据的种别参数
19、。例:KIND(0):为缺省值,其返回值是整型的标准种别参数。KIND(2_2):返回种别参数2。,关于KIND函数,格式:SELECTEND_INT_KIND(N):功能:返回范围在-10N10N的整数的kind-Value 例:selected_int_kind(6)可以返回范围在-106+106(不包括两端点值)的所有整数的种别值。为使程序具有可移植性,可将K6说明成符号常数,作为种别常数来使用。INTEGER,parameter:k6=selected_int_kind(6)则具有K6种别的常数就可以写为:123_K6了。,SELECTEND_INT_KIND函数,例2-4 测试FOR
20、TRAN系统的整型种别范围,PROGRAM INT_KINDIMPLICIT NONEINTEGER:IPRINT*,KIND(0)DO I=1,10PRINT*,I,SELECTED_INT_KIND(I)ENDDOENDPROGRAM INT_KIND,4 1 1 2 1 3 2 4 2 5 4 6 4 7 4 8 4 9 4 10 8,在FORTRAN90中,也可以表示二进制、八进制、十六进制形式的无符号整数。其形式如下:二进制数:B101101 或 B”101101”八进制数:O76210 十六进制数:Z1FA2,整型常数的其他表示方法,判定整数,指出合法整数和非法整数?说明原因,-1
21、28、358_5、5,234、130_1、+3276、-52467_2、o136,实型常量又叫实数,它具有数学实数的近似值。实数最常见的两种表示形式是:小数形式和指数形式 小数形式:由十个数字、小数点及数符组成的数。指数形式:即科学计数法,对绝对值相对较小或很大的实数。,2.实型常量(REAL),小数形式:+/-m.n,+/-m.,+/-.n 例 100.0.5 5.注:小数点必须有。,数字部分E(或D)指数部分 科学计数法 0.876=87610-3 876E-3=87.6 10-2 87.6E-2=0.0876 10+1 0.0876E+1。,指数形式:,E代替底数10,数字部分:小数形式
22、实数或整数指数部分:只能为整数 错例:4E5.6数字部分不能丢;例:10-4:E-4(错)10E-4(错)1E-4(正确)以标准化形式(规格化指数)输出(=1)1。数字部分的值小于1,且小数点后的第一位数字非0 例:0.743643E-12(正确)21.835E-12(错)2。数字部分有且仅有一位非零的整数。例:7.43643E-12(正确)0.21835E-12(错),说明:,一般实数范围:-1038+1038,有效位78位 也有的系统允许数的范围更大,可以超过10100。上溢:overflow 下溢:当0处理 为了能得到理想的范围和有效数字,要求说明种别类型参数值。(书上有误)例:INTE
23、GER,PARAMETER:long=SELECTED_REAL_KIND(8,88)则符号常数long提供了至少8位精度,以及-1088+1088的值的范围。以此说明的实型常量:4.37_long 457.1234_long 就可以在long指定的精度及数值范围内进行移植。,实数的表示范围:,1、PRECISION(4.37_long)精度至少为82、RANGE(4.37_long)范围至少88次冪,两个询问函数:,常用实数一般分为两种:real(4)单精度(默认)real(8)双精度,实数种别为8时常量的表示(双精度数)有效位:15位;数字部分D指数 例:1.2D2,复型常量又叫复数。具有
24、数学复数的近似值。在科学和工程计算中被广泛用到。复数是实数的有序对,将两个实数中间用逗号分隔,然后再放在一对括号中就构成了一个复数。复数以a+bi的形式来表示数值,复数中的a、b称为实部和虚部。可为实数,也可为整数。,3.复型常量(COMPLEX),数学 2+3i,一般形式:(实部系数,虚部系数),错例:(1.0/2,3)正例:(0,6)(1E5,38)(1.0_8,4.2)(15_4,24_8),FORTRAN90(2,3),复型常量的表示:,计算机除了存储数字之外,也可以在内存中记录一段文本。字符类型可以记录的东西非常广,从键盘输入的任何东西,不论是数字、文本或任何特殊符号,它都可以记录。
25、只记录一个字母、符号时的数据类型称为“字符”,记录一连串的字符时,就称为“字符串”,记录一个西文字符需要一个字节的存储空间。一个汉字为两个字节的存储空间。,4.字符型常量(CHARACTER),由一对单撇号或一对双撇号之间的字符序列组成。例:ABCD(单撇号)或“4567”(双引号),注意:区分字符大小写 a A 空格有效 a b ab 字符中含或”时的处理方法:如:Im a student.可采用两种表示方法:1)Im a student.2)I m a student.字符长度:字符串内字符的个数 空格算一个,起止界不算,长度可为0。(空串或),字符常量的表示:,1、一般处理系统缺省的字符
26、种别参数是KIND(A)返回值。2、若使用非标准种别字符时,应将其种别参数放在字符常数的前面,以便于简化编译程序分析语句的工作。例如:某处理系统可以用种别参数值1来支持汉字字符,在这种情况下,一个汉字字符常数可被书写成:1_”五笔字型输入法”,字符常量的种别参数:1,逻辑型常量只有真(.TRUE.)和假(.FALSE.)两个值。逻辑常量通常只用来给逻辑变量置初值,以及得到某一逻辑表达式的值。其缺省种别与系统有关,实际种别可通过KIND(.TRUE.)得到。若要指定,可用一个跟在下划线后的整型常数指出,取值可为1,2,4(缺省)。例如:.FALSE._2,5.逻辑型常量(LOGICAL),2.3
27、.4 名字,用于标识一个程序成分,例如符号常量、变量、派生类型等。对于名字有下列要求:1.名字的长度不能超过31个字符 2.名字的组成成分可以是字母、数字和下划线 3.名字的第一个字符必须是字母 4.在名字中不能出现空格 提倡使用具有一定含义的名字,提高程序的清晰度和可读性。,1、定义:程序运行过程中值可变化的量2、命名的规则,错例 3A、x-3、3.14、A3$,2.3.5 变量,实际是内存中的一个存储单元,存放变量的值。特性:取之不尽,一冲就跑,总采用当前值参与运算。例:A=2.0 A B B=3.0 A=A+B 5.0 15.0 B=A*B 注:A、B必须有确定值,如未定义,值不可预测(
28、有时按0处理),2.0,3.0,3、变量的含义,基本类型有五种,同常量。五种变量的类型说明关键字分别是:整型:INTEGER 实型:REAL复型:COMPLEX 逻辑型:LOGICAL字符型:CHARACTER,4、变量的类型,变量在使用之前应进行说明。说明的格式是:将关键字放在最前面,待说明的变量放在后面,中间用双分隔符:隔开,对于同时说明的多个变量,变量之间用逗号分隔。例:INTEGER:I,J,K REAL:X,Y,Z,变量的说明,1.在变量说明的同时,可以给变量赋初值。INTEGER:I=5,J=126 REAL:X=7.2,Z,W=774.2 2.在说明变量的同时也可说明其种别 RE
29、AL(KIND=4):X,Y 或 REAL(4):X,Y 3.在说明变量的同时,还可说明变量的属性 INTEGER,PARAMETER:I=5,J=123 REAL,DIMENSION(1:10):A,Fortran90关于变量说明的新功能:,2.3.6 派生数据类型(第9章),根据需要而由基本数据类型定义新的数据类型。在一个派生类型中可包含多个基本类型。如:TYPE STUDENT(定义开始)CHARACTER(LEN=20):DEPARTMENT CHARACTER(LEN=10):CLASS CHARACTER(LEN=15):NAME INTEGER:NUMBER(成员定义)END T
30、YPE STUDENT(定义结束),派生类型的使用,派生类型变量的定义:TYPE(STUDENT):PERSON变量的赋值:PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21)成员的表示:PERSON%CLASS=“92_2”PERSON%NAME=“LI LIN”,2.3.7 基本类型数组(第7章),数组是具有相同类型的元素的有序集合。数组在使用之前必须说明。数组的说明:INTEGER,DIMENSION(1:50):X 数组名为X,类型为整型,元素个数为50。INTEGER,DIMENSION(5,3):B 数组名为B,类型为整型,元素个数为5*3个 维界:1:50
31、 下界:上界 缺省下界为1 数组中元素的个数称为它的大小,维数称为秩,每维中元素的个数称为维的长度,长度的序列称为形。,通过指定下标值的办法来实现。下标值可为整数或整型表达式。下标值不能越界,个数必须与数组的秩相等。注意:1.允许对数组名进行运算。2.允许对数组片段进行操作。所谓数组片段是指数组中某些连续元素的重新组合。数组片段也是一个数组。,数组的引用:,2.3.8 字符子串(第8章),字符型常量又叫字符串。一个字符串的一部分称为子字符串或字符子串。字符数组:CHARACTER(LEN=1),DIMENSION(80):ROW引用:ROW(I)字符串:CHARACTER(LEN=80):RO
32、W引用:ROW(I:I);ROW(4:7)特殊:ROW(:I)相当于 ROW(1:I)ROW(I:)相当于 ROW(I:80)ROW(:)相当于 ROW(1:80),2.3.9 数据对象和子对象(第7章),由一个名引用的对象:有名标量(简单变量)有名数组由子对象标志符引用的子对象是:数组元素数组片段结构分量子串,2.4 程序单元概念,程序单元是FORTRAN语言的基本成分。程序单元可以是主程序、子程序、模块或块数据程序单元。子程序可以是函数子程序或子例行子程序。模块包含的说明是对其它的程序单元形成可访问性。块数据单元用来对有名公用区中的数据对象赋初值。(F90中不提倡使用),2.4.1 主程序
33、,主程序是不包含SUBROUTINE、FUNCTION、MODULE或BLOCK DATA语句作为其第一条语句的程序单元。主程序的结构:,PROGRAM 程序名称一般省略 声明语句部分 执行语句部分 ENDprogram 程序名称,主程序其他限制,主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语句不起作用。主程序内的任何
34、内部过程的定义必须跟在CONTAINS语句之后。,2.3.2 子程序,子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主程序(或子程序)的调用来实现。按子程序与主程序的位置关系分为内部过程和外部过程。内部过程可以出现在主程序、外部过程或模块内。,2.4.3 模块,模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。模块的引用采用语句:USE 模块1,模块2,,2.4.4 块数
35、据程序单元,块数据程序单元对有名公用块内的数据对象提供初值。由于块数据程序单元赖以支持的COMMON语句和DATA语句在F90中已成为过时特性,因此,不提倡使用块数据程序单元。,练习1:FORTRAN90使用的专用字符集中,以下字符中可用于标识符(如变量名)的是:,A.*B.$C._(下划线)D.&,练习2:有关FORTRAN90主程序单位,以下说法中错误的是:,A.一个程序中主程序单位的命名必须是唯一的B.主程序单位的结尾必须是END语句后跟PROGRAM主程序名C.主程序单位内不能包含有RETURN语句D.主程序单位本身不能递归调用,练习3:以下描述各种功能的程序块中,不属于FORTRAN90独立程序单位的是:,A.PROGRAM main END PROGRAM MainB.INTERFACE OPERATER()END INTERFACEC.SUBROUTINE sub()END SUBROTINE subD.MODULE abc END MODULE abc,本章小结,1、算法的概念及描述2、FORTRAN语言的发展历史3、源程序的构成4、语言元素:字符集、基本类型常量、变量、数组等5、程序单元概念,
链接地址:https://www.31ppt.com/p-6523090.html