《算法及程序设计》PPT课件_第1页
《算法及程序设计》PPT课件_第2页
《算法及程序设计》PPT课件_第3页
《算法及程序设计》PPT课件_第4页
《算法及程序设计》PPT课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章算法及程序设计 要点算法 数据结构 程序设计算术逻辑运算非数值计算面向过程和面向对象的程序设计 5 1算法的描述与实现 利用计算机解题的步骤是 实际的问题 抽象为数学问题 找到解决数学问题的方法 转化为计算机算法 用计算机程序设计语言编程 调试程序 运算得到结果 5 1 1计算机算法 1 计算机算法的特点 1 对于任何一组确定的输入 都在有限的处理步骤后得到一组明确的输出 2 计算机输出的结果是明确的 3 计算机只能做有限步骤运算 处理 可以手工用 4 1 1 3 1 5 1 7 1 9 的公式 无限精确地计算圆周率 但没有一种计算机算法能实现无限精确地计算圆周率 1 算法表示方法 1 流程图表示法利用基本流程图符号的组合 可以表示较复杂的设计思想 它主要由下面一些符号及流程指向线组成 主要包括 开始 结束 输入 输出 过程 判断 循环等 例如 输入一个数 如果它为0 输出 0 否则输出 0 2 问题分析图表PAD法 PAD ProblemAnalysisDiagram 是一种二维树形结构的软件设计表现方法 它强调 自顶向下 逐步求精 的设计思想 基本符号 例 设计菜单程序 3 表达式 在高级程序设计语言中 表达式类似数学中的计算公式 但与数学公式有较大区别 表达式是由变量名及运算符组成的式子 1 特殊运算符号程序设计语言中 只能以ASCII符号组成表达式 因此运算符号与数学中使用的符号有一些不相同 例如算数运算符号在C语言中 表示乘法 表示除法 C语言中还包括许多数学中没有的运算符号 例如 变量名 表示取变量的地址运算 变量名 表示间接访问变量运算 2 变量名是符号化的内存地址 不是代数中的 未知数 的概念 在使用变量运算之前 它一定已被赋值 C语言表达式举例 Z 12 A 3 7 BCP C 5 1 2数值计算 1利用表达式作计算 1 算术表达式例 输入圆半径 计算圆面积 include stdio h 标准io头文件 main 主函数 floatr s 定义变量类型 scanf f 输出 2 关系表达式 关系表达式的值是逻辑值 真 伪 1 0 例如x y a b 9 8都是合法表达式 当x 10 y 9时 c x y表示c被赋值为1 c语言中真用1表示 3 逻辑表达式 用逻辑运算符将关系表达式或逻辑量联系起来的式子为逻辑表达式 例如 为逻辑与运算符号 e a b c d 如果a 1 b 2 c 3 d 3则e被赋值为1 2 算法设计 1 尽量节约内存 减少计算次数设计算法时 要综合考虑 计算机的内存储器大小是有限的 因而数字的范围 精度是有限的 计算机的计算速度是有限的 因而等待程序执行的时间是有限的 因此在设计算法时要尽量节约内存 减少指令执行次数 9 9比9 2运算快 2 尽量使用编译 不使用解释语言 3 使用内存覆盖技术 3 算法误差 1 二进制小数转换误差十进制0 1转换为二进制为0 001100110011001100110011 计算浮点数可能产生积累误差 2 截断误差计算由于误差 3 n 1 当误差 0 005时 N 5 3 有效数字误差 有效数字的最后一位与真值在此位相差正负1 例如 3位有效数字1 23的真值在1 220 x与1 229999999 之间 在第4位作四舍五入 4 精度转换误差实际上高精度与低精度数运算结果应以低精度为准 但在计算机程序设计语言中 多数是把低精度自动转换为高精度 5 1 3常用算法 1 枚举法判断集合中 所有元素为真 则命题为真 例如 若公鸡每只3元 母鸡每只5元 小鸡每只1元 求100元买100只鸡有多少种方案 x y z 1003 x 5 y z 3 100两个方程式不可能解出3个未知数 但可以用x y z的各种组合来试验 当试验次数超过10的10次方时 实用性不大 2 递归算法 定义算法的过程中使用了被定义的算法本身 1 直接递归重复一组或一个操作 例如累加 累减 累乘 累除等 a a 1 把a加1后的值赋给a 2 间接递归 程序用到它自身的前一步或前几步 例1计算阶乘 2 1 23 1 2 3 2 3 N 1 N N 1 例2有若干球 若每次拿走剩下的一半还于1个 当第10次要拿球时 仅剩下1个球 问原来有多少球 3迭代算法 每一次计算都在前一次计算的基础上进行 解决已知有解 但难用表达式表示的问题 1 对分法 2 逐次逼近法 4回朔法 枚举和试探的结合 将要解决的问题过程分为若干结点 每个结点有若干可供选择的后续结点 若不满足条件 返回到上一层结点 恢复刚才的参数 再试探其他分支 5排序 将杂乱无章的数据按升序或降序排列 常用冒泡法6插值一些函数表无法用f x 表示 在表中插入一些中间值 构成新的表 用p x 近似代替f x 要求p xi f xi xi为已知点 7数据压缩与解压缩 科学家在研究中发现 大多数信息的表达都存在着一定的冗余度 通过采用一定的模型和编码方法 可以降低这种冗余度 计算机中用二进制表示的数据文件 包括数字或符号 中有许多是同一个或同一组数据的多次重复 重复的数据使得文件的总长度变长 不利于存储和传输 设计算法 尽量去除文件中的重复数据 形成等效的新文件是数据压缩要解决的问题 反之 把已经压缩了的文件恢复成原来未压缩的文件是解压缩要解决的问题 为了提高压缩比例 压缩可分无损压缩和有损压缩两大类 无损压缩比例较小 一般在一倍以下 有损压缩比例可达几倍 十几倍 甚至几十倍 前者用于对文档 程序 重要数据的压缩 后者多用于对声音 图像 影像等文件的压缩 压缩技术大致可以按照以下的方法分类 常用压缩 解压缩软件 在Windows操作系统支持下的压缩 解压缩软件很多 以WinRAR和WinZIP最常用 压缩比例较高 可支持的压缩文件类型较多 5 2程序设计方法 程序设计方法已有很大发展 个人 集体协作利用程序设计语言 软件开发平台面向过程 面向对象手工生产 软件工程 5 2 1面向过程的程序设计 这种程序设计方法是先把计算机要处理的事务分解成若干个独立的过程 procedures 自顶向下不断的把复杂的处理分解为子处理 一层一层地分解下去 直到仅剩下若干个容易处理的子处理为止 再用面向过程的开发语言 汇编 C语言等 编制源程序 然后经过编译形成计算机可执行程序 通过反复修改最后完成设计工作 这种方法的理论基础是数据结构和算法 流程图能较好反映整个设计和执行过程 1结构化程序设计方法 主要特点是 把过程分为顺序 条件转移 循环 分支 子过程等标准程序功能模块 每块都只能有唯一的入口和出口 模块之间通过入口 出口连接 由于块内的程序结构是封闭的 因此便于设计和检验程序的正确性 适合开发小型应用软件 2支持面向过程设计的高级程序设计语言 常用的有 1 C语言 包括MicrosoftC TurboC等多种版本 它是于20世纪60年代在ALGOL语言基础上研制的 其显著特点是代码及数据分隔 即程序的各个部分除了必要的信息交流外彼此独立 C语言提供给用户各种函数 这些函数可方便的调用 并具有多种循环 条件语句用来控制程序流向 从而使程序完全结构化 C语言还提供许多汇编一级的指令 可直接指挥硬件工作 因此也有人称它为中间级语言 2 Pascal语言它是于20世纪70年代在ALGOL语言基础上研制的 PASCAL语言最初是为系统地教授程序设计而设计的 它具有丰富的数据类型 其控制结构体现了结构化程序设计原则 适合教学 科学计算与系统软件的研制 3 Basic语言 3软件测试 1 白箱法 设计多组输入数据 使得程序中的每一个分支都得到测试 要求测试中使用合理的输入数据能得到合理的输出结果 程序能对不合理的输入作出适当的反应 由于这种测试涉及程序的具体结构 有时实际操作有困难 2 黑箱法 设计多组输入数据 要求程序能在输入合理的数据后得到合理的输出结果 对不合理的输入作出适当的反应 5 2 2面向对象的程序设计 1 基本概念 1 对象对象是包括自己的数据和一组对这些数据的操作的独立实体 对象 数据 作用于这些数据上的操作 在面向对象的程序设计方法中 对象是基本单位 2 类 具有相同属性和操作对象的集合称为类 编译系统为程序员预先设置了上万个类供选用 每个类可以派生 继承 出子类 孙类 实际上类是用来定义对象的抽象数据类型 它把整数 实数 符号等具体的数据类型和过程操作都已经隐藏起来了 3 封装把对象的属性和操作结合成一个独立的系统单位 并尽可能隐蔽对象的内部细节 4 继承特殊类的对象拥有其一般类的全部属性与操作 称作特殊类对一般类的继承 2面向对象程序设计方法 要在应用程序的统筹规划和设计之后作以下步骤 1 创建对象或选用合适的对象 2 设置对象的属性 3 选择并设计适当的对象事件及操作 4 在过程代码中调用对象以实现对象之间的通信 5 将对象的方法程序和属性代码包装在一起 面向过程程序设计方法与面向对象程序设计方法的区别 前者在程序设计时将数据和算法完全的分开 后者将数据和算法看作是不可分割的实体 称为对象 前者在程序设计过程中以算法为中心 围绕着实现系统功能的过程来构造系统 后者以数据为中心 所有的操作都围绕着数据而展开 前者是一句接一句地编写程序 后者主要是适当地创建对象 修改对象属性和编写对象的方法程序 3面向对象设计的高级程序设计语言 1 VB VisualBasic 它是1991年微软公司推出的第一个可视化的编程软件 从VB4 0版开始 VB也引入了面向对象的程序设计思想 VB功能强大 学习简单 而且 VB还引入了 控件的概念 使得大量已经编好的VB程序可以被直接使用 现在VB已经发布6 0版 2 C 包括MicrosoftVisualC BorlandC TurboC 等 这些程序设计工具软件的共同点是 1 在Windows平台上运行 2 可视化编程 一般用鼠标拖动工作窗口上的元件 表格 Form 视窗 元件盒 Componentpalette 等元件 设置 修改属性参数即可创建一个适合的对象 5 3 3网络程序设计 Web技术的广泛应用 一些适合网络环境的脚本 Script 语言应运而生 脚本语言不是程序设计语言 它不能被编译后生成执行文件 利用文本编辑软件 根据脚本语言书写脚本文件是ASCII文件 浏览器根据脚本文件所规定的格式显示文字 声音 图形 影像 1常用的脚本语言 1 HTML语言是超文本标记语言 HyperlinkTextMarkupLanguage 的缩写 它是一种描述文档结构的语言 而不能描述实际的表现形式 HTML语言使用描述性的标记符 称为标签 来指明文档的不同内容 标签是区分文本各个组成部分的分界符 用来把HTML文档划分成不同的逻辑部分 或结构 如段落 标题和表格等 标签描述了文档的结构 它向浏览器提供该文档的格式化信息 以传送文档的外观特征 用HTML语言写的页面是普通的文本文档 ASCII 不含任何与平台和程序相关的信息 它们可以被任何文本编辑器读取 HTML文档包含两种信息 页面本身的文本和表示页面元素 结构 格式 和其它超文本链接的HTML标签 VBScript它是一种HTML嵌入脚本化语言 微软公司把用于应用程序描述的VisualBasic语言压缩成一个更合理的子集 即VBScript 它具有易学易用等特点 2 JS JavaScript 语言是Netscape公司的一种基于对象 Object 和事件驱动 EventDriven 的脚本语言 JS主要用于HTML页面 脚本嵌入在HTML源码中 Java是一种完整的 独立的编程语言 即可以在Web中应用 也可以用于与Web无关的情况 JS编写的脚本不必在运行前编译 它可以直接写入Web页面中并由调用它的浏览器来解释执行 这样 一些基本交互作用就不用在服务器端完成 提高了客户端的响应时间 下面的JS脚本程序可显示时间 18 document write 现在是 now toLocaleString 3 ASP Activepageserver 语言是在服务器端使用的脚本语言 服务器上必须安装脚本引擎 脚本引擎是用于处理脚本的COM 组件对象模型 对象 ASP为脚本引擎提供主机环境并把 asp文件中的脚本交给脚本引擎处理 ASP脚本中也可以插入其他脚本语言 凡是 asp文件中使用的每种脚本语言 都要将他们相应的脚本引擎安装在Web服务器上 ASP中缺省语言是VBScript 所以不用担心安装VBScript的脚本引擎 当安装完ActiveServerPages时 该引擎就已存在了 使用JScript也不必有同样的担心 但是要使用一些不太常用的脚本语言时需要安装相应的脚本引擎 4 PHP语言是一种服务器端 跨平台 HTML嵌入式的脚本语言 是一种常用于Web编程的语言 PHP酝酿于1994年 1995年发布其第一个公开版本 截止目前已发布的最新版本为PHP4 05 PHP是一种免费软件 它能运行在包括Windows Linux等在内的绝大多数操作系统环境中 常与免费Web服务软件Apache和免费数据库Mysql配合使用于Linux平台上 具有最高的性能价格比 号称 黄金组合 2常用的网页设计软件 标记或脚本语言虽然语法规则简单 但由于标记符号抽象 掌握起来仍有一定困难 利用一些网页设计工具软件 可做到可视化设计 1 Frontpage是微软公司Office软件的一个组件 可直接所见即所得设计网页 自动生成全部脚本及相关文档 2 网页制作三剑客Macromedia公司开发的网页制作工具Dreamweaver Flash和Fireworks 虽然工种不同 却是相辅相成 如若熟练掌握了它们 再加上你自己独特的设计思路 可以说没有做不出来的网页 Dreamweaver用于生成功能齐全的网站 Flash用于制作动态及交互网站 它集声音 图像和动态效果于一身 生成一种后缀名为swf的文件 因压缩率极高故产生的文件很小 并支持边下载边浏览 所以特别适合制作多媒体交互网站 3 Fireworks是一款功能强大的web图像创作工具 不需借助任何外挂软件就能制作矢量图形和位图 并独立完成所有设计过程 它的主要特点 比较专业的矢量图形制作工具 支持矢量图形切换至位图编辑状态 可以在对象模式与图像模式之间相互转换 提供了更大的制作空间 支持很多Photoshop的位图编辑方式 如渐变 阴影 外发光 纹理等等效果 还内建了很多已经做好比较成熟的风格和特效 它同样支持Photoshop的各种插件 使它的发挥空间更为广阔 Fireworks与Dreamweaver属于无缝集成 可以边做网页边修改图形 使得所有工作在一个平台上完成 3 网格计算 网格计算 GridComputing 可以说是因特网发展的一个产物 它把分布式计算 DistributedComputing 思想发展到因特网上 把分布在因特网上的成千上万台计算机 包括微机 都当成结点 由结点组成网格 各个结点分担一定的计算任务 形成一个虚拟超级计算机 5 2 4网页设计 1 使用FrontPage2000创建网页 1 创建网站 2 利用向导建立个人站点 3 不使用向导建立网页 2 发布网页 1 使用PWS服务器发布网页 2 使用WIN2000Server 3软件工程及软件开发管理 5 1 1软件工程基本观念1 软件危机的主要表现 对软件开发成本和进度的估计不准确 软件质量不高 可靠性差 用户不满意 缺乏适当的文档资料 不可维护 错误难以改正 软件成本占系统总成本的比例逐年上升 软件开发速度跟不上计算机硬件发展速度 2 产生软件危机的原因 软件开发过程的进展情况较难衡量 软件开发的质量也较难评价 因此 管理和控制软件开发过程相当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论