- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.1 程序设计与算法 4.1.1 算法与程序 什么是算法(algorithm ) 算法就是求解问题的方法和步骤 算法的形式化定义: 算法是一个四元组,即(Q,I,Ω,F),其中: ①Q是一个包含子集I和Ω的集合,它表示计算机的状态 ②I是表示计算的输入集合 ③Ω表示计算的输出集合 ④F表示计算的规则,它是由Ω到它自身的函数,且具有自反性,即对任何一个元素q∈Q,有F(q)=q 算法四元组(Q,I,Ω,F), 为x∈I的每个x定义一个计算序列x0, x1, x2, x3 ... 如下: x0 = x, 对于k = 0, x(k+1) = F(x(k)) 如果,k是使x(k)∈Ω的最小的整数,那么就说计算序列在k步终止,并且在这种情况下,说从x产生输出x(k). 算法实例:求两个正整数的最大公约数的Euclidean算法 设M=较大的数,N=较小的数 R=M/N的余数(将整除的余数赋给R) 如果R非零,则M=N(将N值赋给M),N=R (将R值赋给N),并返回2;否则,最大公约数就是当前N值. 欧几里得(Euclidean)算法的四元表示 令Q为所有单点(n)、有序偶(m, n)、 以及所有有序四元组(m, n, r, 1), (m, n, r, 2), (m, n, p, 3)的集合,其中m, n, p是正整数,r是一个非负整数。令I是所有有序偶(m, n)的子集,并令Ω是所有单点(n)的子集。定义f如下: f((m, n)) = (m, n, 0, 1); …… [1] f((m, n, r, 1)) = (m, n, m mod n, 2) f((m, n, r, 2)) = (n), 如果r = 0, 否则(m, n, r, 3) f((m, n, p, 3)) = (n, p, p, 1) ……[2] 优化后的欧几里得算法。 令Q为所有单点(n), 有序偶(m, n), 有序三院组(n, r, 1)的集合,其中m, n为正整数, r为非负整数。另I是所有有序偶(m, n)的子集,并令Ω是所有单点(n)的子集。定义f如下: f((m, n)) = (n, m mod n, 1);f((n)) = (n) f((n, r, 1) = (n), 如果r = 0, 否则(r, n mod r, 1) 4.1 程序设计与算法 算法的特性: 输入(Input) 输出(Output) 确定性(Definiteness) 有穷性(Finiteness) 有效性(Effectiveness ) 算法的表示 自然语言 流程图 N-S图 伪代码 计算机程序设计语言 流程图 N-S图 伪代码 已知a变量放了一个值,b变量中放了另一个值,要求交换两个变量的值。 程序设计语言 #include “stdio.h” main( ) { int a,b; printf(“请输入两个正整数\n”); scanf((“%d%d”,a,b); printf(“最大的数是%d\n”,ab?a,b); } 算法的设计与评价 正确性 可读性 健壮性 高效性 常见的算法设计方法 穷举法 回溯法 递推法 递归 分治 什么是程序 在低级语言中,程序表现为一组指令和有关数据 在高级语言中,程序一般表现为一组说明和语句 程序的特征: 利用计算机解决实际问题的过程 明确问题的要求 建立数学模型 算法设计 编写程序 调试程序 运行及结果分析 程序设计语言的基本功能 引入标识符 记住某些值 执行一些运算 进行信息传输 程序设计语言的发展 面向机器的语言 机器语言:所有的数据、指令、符号和信息者是以二进制数的形式来表示的 如 表示加法运算 汇编语言(符号语言): 面向过程语言 侧重于问题处理过程,语言与具体的机器无关,与机器的具体实现无关 典型的面向过程语言: 面向对象的语言 C++、Delphi、Objective-C等 可视化语言 Visual Basic、 Visual Foxpro、Visual C++、Java等 程序设计语言的分类 按照语言的级别分:低级语言、高级语言 按照用途划分:通用语言、专用语言 按照语言的成分性质划分:顺序语言、并发语言、分布式语言 按照使用者的角度:面向机器的语言、面向过程的语言、面向对象的语言、可视化语言 按照使用方式划分:交互式语言、非交互式语言 程序设计语言提供的基本设施 数据类型 简单类型:整型、实型、布尔型、字符型、枚举型 结构类型:数组、字符串、记录、结构体、文件、日期 指针类型: 各种语句 基本语句:赋值语句、输入、输出语句等 选择结构语句:if…then、if…then…else、switch等 循环语句: for循环、当型循环(while
文档评论(0)