- 1、本文档共135页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三章算法与数据结构
第三章 算法与数据结构 程序为什么能解题?就是它能把输入的数据,经过表达式计算、赋值、置换转移等一系列计算步骤,最后得到输出。 编制程序就是要设计数据(输入的、输出的、中间的),然后针对这些数据一一安排计算步骤,即所谓算法。 所以,很早就有人说,程序计算的本质是: 程序 = 算法 + 数据结构 第三章 算法与数据结构 程序 = 算法 + 数据结构 算法和数据结构讨论的是抽象的计算逻辑,与具体的表示法无关,可以用图形、伪代码和汇编语言、高级程序设计语言表达它们,一般讨论中采用近似于高级语言的伪代码(不能上机运行,可以方便地转成编程语言代码)表达。 本章讨论编程最重要的两个基础,即算法与数据结构。 3.1 算 法 算法是什么?就字面而言是计算解题的办法,是解题策略具体化为计算机的动作。即计算机在什么情况下应该怎么做的一系列步骤,实施了这些步骤问题得到解决。 计算机容许的动作是: ? 为变量赋值(包括初值); ? 计算表达式(在变量上做四则或逻辑运算); ? 计算过程的选择、循环、转移控制; ? 调用函数/子程序。 例如,辗转相除法是求两个整数的最大公约数的数学算法。它的解题策略是:以小数除大数,得余数,如果余数不为零,则小数成被除数,余数成除数,除后得新余数。若余数为零,则此除数即为最大公约数,否则继续辗转除。不妨先拿两个正整数试一试: 544和119。544/119的余数是68,119/68的余数是51,68/51的余数是17,51/17的余数是0。所以544和119的最大公约数是17。 如何写出计算机算法呢?计算机怎么进行辗转相除呢?显然只能用计算机容许的动作,写出的算法才是可行的。 看如何写出计算机的辗转相除法。见课本62页 令变量x为被除数,y为除数,z为余数。计算机中有求余函数mod,则: z = x mod y 然后x←y, y←z就换过来了,x依然是被除数,y是除数。于是写出最大公约数(GCD)算法: 1.设定x, y, z 2.输入x, y 3.if yx then z←y; y←x; x←z fi 4.while y?0 do A.z←y B.y←x mod y; C.x←z od 5.输出z,即最大公约数□ 其中 if…then…fi、while do…od是分支和循环控制 ‘fi’和‘od’是编程语言Endif和Endwhile的简写。其实也可以看出if—fi,dood。 ‘←’是赋值符号。 其中的序号按1,2,3…和A,B,C…字母数字相间表示嵌套 第5步这一行最后的□表示算法结束。 这种表示法是算法文献上学者们约定的表示法。 3.1.1 算法的表示 从GCD算法的例子看到它的表达比较自由,不过是自然语言加上编程语言的基本特征(控制结构、赋值、调用)而已。很自然地,读者就会问到“算法描述语言和编程语言有什么关系?”。事实上,早期的编程语言ALGOL就叫算法语言。 后来发现,用编程语言描述算法往往使人们陷于表示的细节,因为编程语言的形式化(即正规性)过于严格,而在设计程序的早期,人们关心的是程序逻辑能否解题,而不是立即上机运行。于是先用伪代码写设计,再用编程语言编码实现这个设计(编码)。这样写的时候要求不那么严格 3.1.1 算法的表示 算法描述的是程序的计算逻辑,编程语言表达的是程序本体(源代码)。更形象地说,一个是灵魂,一个是包含有灵魂的肉体。设计过程也是人们对这个问题更深入了解的过程,反复修改是必然的,何不先设计、修改好了一次翻译(编码)成功呢?于是“先设计,后编码!”是早期软件行业不成文的行规。 直到现在,软件开发依然强调设计和编程是两个不同阶段。只是由于开发工具的完善,伪代码越来越近似于最后实现的编程语言。甚至有些简单编程直接用编程语言,如VB、VC在窗口上进行。 伪代码始终没有统一的标准。 类C、类Pascal、类VB之类的伪代码,也不尽相同,但程序员必须记住“用伪代码写算法,编程语言写程序”还是应该遵循的! 本书约定的算法描述语言是VC语言的变体,称为类VC语言。见课本63页 这里还需要说一说流程图(Flow Chart)。因为它在历史上有过巨大的影响,在20世纪50—70年代结构化编程语言尚未风行时,流程图一直是表达算法的设计工具。美国国家标准协会(ANSI)还把它定为标准。为了帮助读者阅读历史的软件文档,这里做一点简单说明。 如图3.1所示,其中: ? 带圆弧的框是起止框,表示算法的起始、终止。框内填写文字。 ? 圆圈一般是连接框,连接多个流向箭头。大圈中写文字标号,无文字时是句号大小的圈。 ? 平行四边形的输入输出框表示输入数据和输出计算结果。框内应填写需
您可能关注的文档
- 一讲教师职业心理的发展.ppt
- 一章茄果类蔬菜栽培.ppt
- 一讲行政公文写作.ppt
- 一语文一名物理学家的教育历程.ppt
- 一讲党的历史.ppt
- 一讲行政法学基本理念.ppt
- 一语文华罗庚.ppt
- 一语文娄山关.ppt
- 一语文必修四复习.doc
- 一讲应用文写作概述.ppt
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
最近下载
- 房屋租借合同.doc VIP
- dc c2265渠道ucentreiv2265 2263彩色数码多功能一体机规.pdf VIP
- 基于语文核心素养的小学习作教学策略研究 .docx
- 单片机数字秒表课程设计.doc VIP
- 20180525数控铣工技师(二级)复习资料答案.doc VIP
- 英语钟点表达法省公开课一等奖全国示范课微课金奖PPT课件.pptx VIP
- 头晕小讲课ppt(最新文档).pptx VIP
- 2024-2025学年初中地理七年级上册(2024)粤教·粤人版(2024)教学设计合集.docx
- 附件:《环境空气温室气体及其示踪物(CO2、CH4、N2O和CO)光腔衰荡光谱法连续自动监测系统运行和质控技术指南》.pdf VIP
- 期末复习|2023—2024第一学期小学期末质量检测五年级科学试卷(冀人版附答案).doc
文档评论(0)