Fortran程序设计(-程序的算法)

上传人:宝路 文档编号:48246603 上传时间:2018-07-12 格式:PPT 页数:32 大小:340.93KB
返回 下载 相关 举报
Fortran程序设计(-程序的算法)_第1页
第1页 / 共32页
Fortran程序设计(-程序的算法)_第2页
第2页 / 共32页
Fortran程序设计(-程序的算法)_第3页
第3页 / 共32页
Fortran程序设计(-程序的算法)_第4页
第4页 / 共32页
Fortran程序设计(-程序的算法)_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《Fortran程序设计(-程序的算法)》由会员分享,可在线阅读,更多相关《Fortran程序设计(-程序的算法)(32页珍藏版)》请在金锄头文库上搜索。

1、第3章 程序的灵魂算法3.1 算法的概念3.2 简单算法的举例3.3 算法的特性3.4 怎样表示一个算法2第3章 程序的灵魂算法一个程序包括以下两个方面的内容:1、对数据形式的描述。在程序中要制定数据的类型和数据的组织形式,即数 据结构。2、对操作的描述。即操作步骤,也就是算法。数据是操作的对象,造作的目的就是对数据进行加工 处理,以得到期望的结果。作为程序设计人员,必须认真 考虑和设计数据结构和操作步骤(算法)。著名计算机科 学沃思提出一个公式:数据结构算法程序。由于算法的重要性,在本章中先介绍有关算法的初步 知识,以便为后面各章学习建立一定的基础。3第3章 程序的灵魂算法3.1 算法的概念

2、广义地说,为解决一个问题而采取地方法和步 骤,就称为“算法”(algorithm)。列如,描述太 极拳动作的图解,就是“太极拳的算法”。一首歌 曲的乐谱,也可以称为该歌曲的算法,因为它指定 了演奏歌曲的每一个步骤,按照它的规定就能演奏 出预定的曲子。计算机算法可分为两大类:数值运算算法非数值运算算法4第3章 程序的灵魂算法3.1 算法的概念【例3.1】求1*2*3*4*5可以用最原始的方法进行:步骤1:先求1*2,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结 果6。步骤3:将6乘以4,得24。步骤4:将24再乘以5,得120。5第3章 程序的灵魂算法这样得算法虽然是正确得,但太繁琐

3、。如果 求1*2*3*1000,则要写999个步骤,显然是不 可取的。可以设两个变量:一个变量代表被乘数,一 个变量代表乘数。不另设变量存放乘积结果,而 直接将每一步骤的乘积放在被乘数变量中。设p为被乘数,i为乘数。用循环算法来求结 果。可以将算法改写如下:6第3章 程序的灵魂算法S1:使p1S2:使i2S3:使p*I,乘积仍放在变量p中,可表示为: p*i pS4:使i的值加1,即i1 iS5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4 和S5;否则,算法结束。7第3章 程序的灵魂算法【例3.2】有50个学生,要求将他们乘积在80分以上的学生和成绩输出。用n表示学生学号,n1代表

4、第一个学生学号,ni代表第 i个学生学号。用g代表学生乘积,gi代表第i个学生成绩 ,算法可表示如下:S1:1 IS2:如果gi80,则输出ni和gi;否则不输出S3:i1 iS4:如果i50,返回s2,继续执行;否则,算法结束。 8第3章 程序的灵魂算法【列3.3】判定20002500年中哪一年为闰年。闰年的条件是: 1、能被4整除但又不能被100整除的年份是闰年,如1996年、 2004年; 2、能被100整除又能被400整除的年份是闰年,如1600年、 2000年。设y为被检测的年份。可采用以下步骤:S1:2000 yS2:若y不能被4整除,则输出“y不是闰年”。然后转到S6S3:若y能

5、被4整除,不能被100整除,则输出“y是闰年”。然 后转到S6 9第3章 程序的灵魂算法【列3.3】判定20002500年中哪一年为闰年。S4:若y能被100整除,又能被400整除,输出“y是闰年”, 然后转到S6S5:输出“y不是闰年”S6:y1 yS7:当y 2500时,转S2继续执行,否则算法停止。如果i50,返回s2,继续执行;否则,算法结束。 10第3章 程序的灵魂算法【例3.4】求1-1/2+1/3-1/4+1/99-1/100算法表示如下:S1:sign=1S2:sum=1S3:deno=2S4: sign=(-1)*signS5 :term=sign*(1/deno)S6 :s

6、um=sum+termS7 :deno=deno1S8 :deno100返回S4;否则算法结束。11第3章 程序的灵魂算法【例3.5】对一个大于等于3的正整数,判断它是不是一个素数。所谓素数,是指除了1和该数的本身之外,不能被其它任何整数整除的 数。例如,13是素数,因为它不能被2,3,4,12整除。判断一个数n是否是素数的方法很简单;将n作为被除数,将2到n1各 个整数先后作为除数,如果都不能被整除,则n为素数。算法表示如下:S1:输入n的值S2:i2(i作为除数)S3:n被i除,得余数rS4:如果r0,表示n被i整除,则输出n“不是素数”,算法结束; 否则执行S3S5 :i+1 iS6 :

7、如果i n1,返回S3,否则输出n“是素数”,然后结束。 12第3章 程序的灵魂算法3.3 算法的特性一个程序应该具有以下特征: 1、有穷性。一个算法应包含有限的操作步骤,而不能是无限的。事实上,“有穷性”往往指“在合理的范围之内”。如果让计算 机执行一个历时1000年才能结束的算法,这虽然是有穷的, 但超过合理的限度,人们也不把它视为有效算法。究竟什么 算“合理的限度”,并无严格标准,由人们的常识和需要而 定。 2、确定性。算法中的每一个步骤应当是确定的,而不应该是含糊的、模棱两可的。13第3章 程序的灵魂算法3.3 算法的特性一个程序应该具有以下特征:3、有零个或多个输入。所谓输入是指在执

8、行算法时需要从外界取得必要的信息。 4、有一个或多个输出。算法的目的是为了求解,“解”就是输出。5、有效性。算法中的每一个步骤都应当能有效的执行,并得到确定的结果。14第3章 程序的灵魂算法3.4 怎样表示一个算法为了表示一个算法,可以用不同的方法。 常用的有: 自然语言 传统流程图 N-S流程图 伪代码 PDA图等15第3章 程序的灵魂算法N-S流程图介绍1973年美国学者 I.Nassi 和 B.Sheiderman 提出了一种新的流程图形式。在这种流程图中,完全去掉 了带箭头的流程线。全部算法写在一个矩形框内。在 该框内还可以包含其它的从属于它的框,或者说,由 一些基本的框组成一个大框。

9、这种适于结构化程序设 计的流程图又称N-S结构化流程图。 16第3章 程序的灵魂算法N-S流程图介绍N-S流程图用以下的流程图符号:(1)顺序结构:顺序结构如下图所示。A和B两个框组成一个顺序结构。AB 17第3章 程序的灵魂算法N-S流程图介绍N-S流程图用以下的流程图符号:(2)选择结构:选择结构如下图所示。当p条件成立时执行S操作, p不成立则执行B操作结构。p成立 不成立 A B18第3章 程序的灵魂算法(3)循环结构:当型循环结构下,图符表示先判断后执行,当p条件 成立时反复执行A操作,直到 p条件不成立为止。直到型循环结构下,图符表示先执行后判断,当p条件 不成立时反复执行A操作,

10、直 到p条件成立为止。当p1A直到p2A19第3章 程序的灵魂算法【例3.11】将例3.1的求5!算法用N-S图表示意。 1TT2IT*II+1II5打印T20第3章 程序的灵魂算法PROGRAM EXAM INTEGER P,I P=1 I=2 DO 10,WHILE (I.LT.6)P=P*II=I+1 10 CONTINUEPRINT*,PEND21第3章 程序的灵魂算法【例3.12】将例3.2的算法用N-S图表示。将50名学生 成绩高于80分的学号和成绩打印出来。22第3章 程序的灵魂算法PROGRAM EXAMINTEGER NUM,GRADEI=0 10 READ*,NUM,GRA

11、DEIF(GRADE.GT.80)PRINT*,NUM,GRAD EI=I+1IF(I50)GOTO 10END23第3章 程序的灵魂算法【例3.13】将例3.3判定闰年的算法用N-S图表示。24第3章 程序的灵魂算法PROGRAM EXAM INTEGER YEAR REDA*,YEAR IF(MOD(YEAR,4).EQ.0)THENIF(MOD(YEAR,100).NE.0)THENPRINT*,是闰年ELSEIF(MOD(YEAR,400).NE.0)THEN PRINT*,是闰年ELSE PRINT*,不是闰年END IFEND IFELSE PRINT*,不是闰年END IFEND

12、25第3章 程序的灵魂算法【例3.14】将例3.4的算法用N-S图表示。求1-1/2+1/3-1/4+1/99-1/100。26第3章 程序的灵魂算法PROGRAM EXAMSUM=1.0DENO=2.0SIGN=1 10 SIGN=(-1)*SIGNTERM=SIGN/DENOSUM=SUM+TERMDENO=DENO+1IF(DENO.LE.100.0)GOTO 10PRINT*,SUMEND27第3章 程序的灵魂算法用传统流程图表示求解以下问题的算法 有两个瓶子A和B,分别盛放醋和酱油,要求将他 们互换。 依次将10个数输入,要求将其中最大的数输出 有3个数a,b,c,要求按大小顺序把他

13、们输出 求123100 判断一个数n能否同时被3和5整除 将100200之间的素数输出 求两个数m和n的最大公约数28第3章 程序的灵魂算法例题1:有两个瓶子A和B,分别盛放醋和酱油,要求将他 们互换。PROGRAM EXAM CHARACTER*4 A,B,T A=醋 B=酱油 T=A A=B B=T PRINT*,A,B END29第3章 程序的灵魂算法例题2:依次将10个数输入,要求将其中最大的数输出。 ROGRAM EXAM REAL R,MAX; READ*,R MAX=R I=1 READ*,R IF(MAX.LT.R)MAX=R I=I+1 IF(I10)GOTO 10 PRIN

14、T*,MAX END30第3章 程序的灵魂算法例题3:有3个数a,b,c,要求按大小顺序把他们输出。 ROGRAM EXAM REAL A,B,C,T PRINT*,INPUT THREE NUMBERS: READ*,A,B,C IF(A.GT.B)THEN T=A A=B B=T END IF IF(A,GT,C) THEN T=B B=C C=T END IF IF(A,GT,B) THENT=AA=BB=T END IF PRINT*,A,B,C END31第3章 程序的灵魂算法例题4:求123+100和。 ROGRAM EXAM INTEGER I,SUM I=1 SUM=0 DO 10,WHILE(I.LE.10) SUM=SUM+I I=I+1 10 COUNTINUE PRINT*,SUM END QUESTION?32

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号