【文档说明】高级语言程序设计c2算法课件.pptx,共(33)页,252.951 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44667.html
以下为本文档部分文字说明:
高级语言程序设计c2算法课件算法的概念•尼古拉斯·沃斯(NiklausWirth)Algorithm+DateStructure=Programs算法+数据结构=程序•算法(Algorithm)–对操作的描述,解决问题的方法•数据结构(DateS
tructure)–对数据的描述,数据的组织形式•程序(Programs)–对算法的具体实现–程序的效率不可能超过算法的限制算法是程序的灵魂算法的概念•广义地说,为解决一个问题采取的方法和步骤。如:菜谱、乐谱•计算机算法分类–数值算法•求方程的根•求函数的定积分–非数值算法•图书检索•人
事管理•排序算法算法举例•简单算法举例:–求5!–闰年的判定方法(能被4不被100整除,或者能被100和400整除的年份)–素数的判定方法•S1:输入一个正整数n•S2:i=2(作为除数)•S3:n被i除,得余数r•S4:如果r=0,则输出n不是素数,算法结束,否则执行S5•S
5:i+1赋予i•S6:如果i<=,返回S3,否则输出n是素数,然后结束n算法的特性•有穷性–包含有限的步骤,在合理限度内可以完成•确定性–每一步必须明确,惟一性,非歧义性•有零个或多个输入–需要从外界获取必
要的信息•有一个或多个输出–需要把求解结果进行输出,有意义•有效性–每一步都能有效地执行算法的表示方法•自然语言•传统流程图•改进的流程图•N-S图(盒图)•PAD图(问题分析图)•伪代码自然语言•优点–通俗易懂•缺点–文字冗长–易出现歧义性传统
流程图•优点:–描绘直观,容易掌握•缺点:–对流程线没有严格控制•七种基本流程图符号(P20)–求最大公约数S1:输入m,nS2:如果m<n,则m,n交换S3:求m除以n的余数rS4:如果r不为0,则n赋给m,r赋给n,求m除以n的余数r,返回S4
S5:如果r为0,则打印n,然后结束–求素数?开始输入m,nm<n?m,n交换求m除以n的余数rr≠0打印nn赋给m,r赋给n,求m除以n的余数r结束YYNN改进的流程图•优点–限制箭头滥用,保证算法质量–构成结构化算法•三种基本算法结构–顺序结构–选择结构(分
支结构)–循环结构(重复结构)•当型循环(While型循环)•直到型循环(Until型循环)顺序结构ABba选择结构ABabpYN当p为“真”当p为“假”循环结构Aabp1YWhile型循环N当p1为“真”当p1为“假”Aabp2NUntil型循环Y当p2为“真”当p2为“
假”循环结构的比较Aabp1YWhile型循环NAabp2NUntil型循环Y•条件的判定位置不同•条件真假的走向不同三种基本算法结构的共同特点•只有一个入口•只有一个出口•结构内每一部分都有机会被执行到•结构内不存在“死循环”例:求素数?AabBABa改进的流程图–用三种基本控制结构顺序组成的
算法,可以解决任何复杂的问题•整体顺序组成•可相互嵌套其他基本结构多分支选择结构ABpG…N-S图(盒图)•I.Nassi和B.Shneiderman提出–取消流程线,不能任意转移控制–使用N-S图设计出来的程序必
然是结构化程序–容易表示嵌套关系–容易确定局部和全局数据的作用域ABC条件TFAB循环条件循环体循环条件循环体条件Case1部分值1值2……值nCase2部分Casen部分N-S的基本符号N-S图•用N-S图表示
各种算法–闰年的判定–求素数–求最大公约数PAD图(问题分析图)ProblemAnalysisDiagram•用二维树型结构表示–使用PAD符号设计出来的程序必然是结构化程序–描绘的结构非常清晰–用PAD图表现程序逻辑
,易读、易懂、易记–支持自顶向下,逐步求精方法的使用P1P2P1P2CL1L2LnP1P2Pn……WHILECPUNTILCPPAD图基本符号伪代码(PseudoCode)•用结构化程序设计语言的语法控制框架,在内部可以灵活使用自
然语言来表示各种操作–比流程图灵活易改,可以使用普通的正文编辑程序进行修改–可以作为注释直接插在源程序中,提高文档质量–缺点:不如图形工具直观举例•BEGINinputm,nifm<nexchangemandnm%nrwhiler≠0{nmrnm%nr}printn•E
ND开始输入m,nm<n?m,n交换求m除以n的余数rr≠0打印nn赋给m,r赋给n,求m除以n的余数结束计算机语言•计算机语言–对算法的实现–必须严格遵循所用语言的语法规则计算机语言C•BEGINinputm,nifm<nexchangemandnm%nrwhiler≠0{nmrnm%n
r}printn•END•main(){intm,n,r,t;scanf(―%d,%d‖,&m,&n);if(m<n){t=m;m=n;n=t;}r=m%n;while(r!=0){m=n;n=r;r
=m%n;}printf(―n=%d‖,n);}结构化程序设计方法•程序:–数据结构:数据的描述–算法:操作的描述–语言:具体的实现工具–程序设计方法:设计的方法结构化程序设计方法•结构化算法–由基本结构顺序组成的算法结构•结构化程序
设计方法•自顶向下•逐步细化•模块化设计•结构化编码•如:求解二次方程的根。小结•算法是程序的灵魂•算法的特性:–有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性•算法的表示方法:–自然语言、传统流程图、改进的流程图、N-S图、PAD图、伪代码•结构化程序设计方法:–自顶向
下、逐步细化、模块化设计、结构化编码上机安排–时间:周四12节–地点:•教一楼101——经贸1501•教一楼105——会计1501、会计1502•教一楼112——商务1501、信管1501•教一楼115——金融150
1•教一楼124——经济1501上机作业1–上机作业1:熟悉C程序的运行环境和运行方法1.安装和熟悉TurboC/VC++6.02.输入并运行教材例题1.1和1.2,熟悉运行环境和运行方法3.编写一个程序,求两个整数m和n的最大公约数。–作业提交•作业管理系统:•经管院网站首页--
-网上实验室----实验报告提交•课程+教师姓名+学号上交作业要求•作业计入平时成绩•请按时按指定方式交作业,逾期未交累计三次者取消考试资格•请独立完成作业,不准相互抄袭,一经发现,抄袭者和被抄袭者均计零分,累计三次者取消考试资格•编程作业包含程序文档和说明文档,并把这些文件压缩成
一个ZIP或者RAR文件。ZIP文件按作业序号、学号、姓名、班级来命名,其中姓名、班级用中文,各项之间用下划线“_‖来分割示例:01_1178030101_郭凯敏_商务1401.zipEND