第6章 程序设计与算法 计算机应用基础 数学与计算机工程学院.

Slides:



Advertisements
Similar presentations
创作计算机程序 学习目标: 定义术语 “ 计算机程序 ” 说明编程过程中流程图和伪代码的用途 介绍程序在寻求解决方案的过程中可以利用的两种方 法 区别计算机编程的两个主要步骤 列举并描述面向对象编程的三个要素.
Advertisements

2.1 算法与程序 2.2 结构化程序设计方法简介 2.3 结构化程序的描述 2.4 简单程序分析.
第 1 章 公共基础知识 第 2 章 Visual Basic程序开发环境 第 3 章 对象及其操作 第 4 章 数据类型及其运算
基本概論 Basic concepts.
演讲人:程叶霞 上海交通大学信息安全工程学院
2012年9月等级考试辅导 第二章 程序设计基础.
输入理想的程序,输出快乐的人生! 国家精品课 C语言程序设计 报告人 计算机科学与技术学院 教授,博士生导师 苏小红
第八章 連結分析 Link Analysis.
一种对于单声道声源定位的3D声音定位算法DSP执行器
Computer graphic final project report
資料探勘應用於英雄聯盟(League of Legends)匹配系統可能性之研究
前言 1.课程安排: 第一章 操作系统引论(7学时) 第二章 进程管理(14学时) 第三章 处理机调度与死锁(10学时)
紫外-可见分光光度计介绍 生化系:童 丹 2014年3月25日.
第10章 系统实施.
第三章 处理机调度与死锁 3.1 处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度
第十章 内部排序 知识点3:快速排序.
二. IEEE 802.1透明网桥 1. 体系结构 透明网桥的功能 可互连采用不同MAC标准的LAN 路径选择机制是一种称为生成树的技术
计算思维.
中央广播电视大学计算机课程 操 作 系 统.
计算机导论 ——软件部分 巢爱棠 办公室:1208.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
和春技術學院資訊管理系 九十三學年度第一學期 系統程式 第三章 死結(Deadlock)
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
CHAP13 演算法概論 高中資訊科技概論 松崗圖書公司.
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度.
算法的基本概念.
有效的運用組織資源 Linear Programming (Goal Programming)
第六章 選擇結構 (應用:核取方塊、選項按鈕、框架)
Chapter 8 Model Inference and Averaging
第1章 绪论 2019/4/16.
计算机算法基础 周中成 苏州科技学院应用数学系 2019/4/18.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
计算机问题求解 – 论题1-4 - 基本的算法结构 2018年10月09日.
通 知 一、一百零二學年度第一次博士班資格考日期為103年1 月22日、23日、1月24日(星期三、四、五)。
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
陳怡芬 運算思維導向課程設計實戰 陳怡芬
Vixen SX & StarBook 基本操作.
Instructor:Po-Yu Kuo 教師:郭柏佑
Goto Shinpei Monjo Database
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
代码优化.
项目五 铣削编程.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第五章 結構化分析與設計 ─流程塑模.
1.1算法的概念.
單元名稱:結構化程式設計 報告人 劉洲溶.
复杂度和测试数据 吴章昊.
整合線上軟體開發工具、線上廣播與加密技術之軟體工程線上考試系統
Divide and Conquer 3 Michael Tsai 2011/3/11.
SLR(1)分析方法.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
第10章 离散小波变换的多分辨率分析 10.1 多分辨率分析的引入 10.2 多分辩率分析的定义 10.3 空间 、 中信号的分解
臺中國小資訊研習 (運算思維).
解析算法与枚举算法.
随机数、数组、解析、枚举.
Konig 定理及其证明 杨欣然
程式語言簡介 2019/7/17 明乘中學編製.
面向对象程序设计 C++教程 西安工业大学 于帆.
研究方向及之相關主題介紹 徐培倫 研究室:電資學院 D719室 年8月6日.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
算法的基本思想: 第6章 内部排序 6.2 气泡排序 将待排序的记录看作是竖着排列的“气泡”,关键字较小 的记录比较轻,从而要往上浮。
發展工具簡介 附錄A 2019/8/23 例說8051.
程序调试与错误处理.
作业反馈3-12 TC ,      Problem 26.1  26.2.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Fortran 实用编程 系列视频教程 Fortran Coder 研讨团队
JAVA 程式設計與資料結構 第二十一章 Graph.
Presentation transcript:

第6章 程序设计与算法 计算机应用基础 数学与计算机工程学院

5.1 程序设计概述 1 .计算机语言的产生和发展 程序设计是一门技术,甚至更是一门艺术。程序设计方法与技术的发展经历了结构化程序设计和面向对象程序设计两个阶段。 计算机语言是指用于人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介。 计算机语言可以分成机器语言,汇编语言,高级语言三大类。

5.1 程序设计概述 1.机器语言 机器语言通常是指一台计算机全部的指令集合。 机器语言由计算机中所有二进制指令构成。 在一种计算机上执行的机器语言程序,想要移植到另一种计算机上执行,几乎是不可能的。也就是说,机器语言因机器而异。 利用机器语言编写的计算机程序可以直接在计算机上运行,其运行效率是所有语言中最高的。机器语言是第一代计算机语言。

5.1 程序设计概述 2.汇编语言 汇编语言是一种符号化了的机器语言,它用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串。 需要一种专门的程序,将汇编语言中的符号翻译成二进制机器指令,这种翻译程序被称为汇编程序。 和机器语言一样,汇编语言同样依赖于机器硬件,移植性不好,但效率仍十分高。 计算机机器语言与汇编语言统称为低级语言。

5.1 程序设计概述 3.高级语言 高级语言是一种接近于数学语言或人类的自然语言的计算机语言,同时不依赖于计算机硬件。 发展经历了从早期语言到结构化程序设计语言,从高级语言的下一个发展目标是面向应用。 编写的程序有很好的可读性和可移植性,程序运行效率较低。 编写的源程序必须经过“翻译”才能在计算机上运行。高级语言源程序“翻译”的方法主要有解释和编译两种,其区别在于是否形成“目标程序”。

5.1 程序设计概述 2 .程序设计风格与方法 程序设计是计算机工作者一成不变的传统工作,编写好的计算机程序不仅要有良好的程序设计思想、方法和技术之外,程序设计风格也是很重要的。良好的程序设计风格可以使程序结构合理并且源程序代码易于维护。

5.1 程序设计概述 1.程序设计风格 程序设计风格是指编写程序时所表现出来的特点、习惯和逻辑思路。 对程序进行阅读和跟踪,程序设计总的风格是简单和清晰,任何计算机程序首先必须是可以读懂和理解的。这就是著名的“清晰第一,效率第二”。 要养成良好的程序设计风格,需要考虑下面一些因素。

5.1 程序设计概述 (1)源程序的文档化 (2)数据说明的方法 (3)语句的结构 (4)输入与输出 源程序文档化是指在源程序中必须包含一些内部文档,以帮助阅读和理解源程序。 比如: ① 符号名的命名规则② 程序注释③ 视觉组织 (2)数据说明的方法 比如: ① 数据说明的次序规范化。 ②说明语句中的变量安排有序。 ③合理利用注释 (3)语句的结构 (4)输入与输出

5.1 程序设计概述 2.结构化程序设计 (1)设计的原则 (2)基本结构与特点 自顶向下、逐步求精、模块化及限制使用goto语句。 结构化程序主要有三种结构: 顺序结构、选择结构、重复/循环结构

5.1 程序设计概述 图 5-2 选择结构 图 5-1顺序结构

5.1 程序设计概述 图5-3 当型循环与直到型循环

5.1 程序设计概述 3.面向对象程序设计 (1)面向对象的程序设计简介 (2)面向对象的基本概念 ① 对象 对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。 面向对象的程序设计方法中的对象是属性和方法的封装体。 一个对象由对象名、属性和操作3部分组成。 对象的基本特点是标识唯一性、分类性、多态性、封装性、模块独立性好。

5.1 程序设计概述 ④ 消息 ⑤ 继承 ⑥ 多态性 ② 类 ③ 封装性 指从外面看只能看到对象的外部特性,即只需知道数据的取值 范围和可以对该数据施加的操作,根本无需知道数据的具体结构 以及实现操作的算法。 ④ 消息 消息是一个实例与另一个实例之间传递的信息。 ⑤ 继承 ⑥ 多态性 多态性是指同样的消息被不同的对象接受时可导致完全不同的行为的现 象。

5.2 算法概述 1 .算法的定义和特征 算法(Algorithm)是指解题方案的准确而完整的描述,是一组严谨地定义运算顺序的指令的有序序列,并且每一个指令都是有效的、明确的,此序列被执行有限的次数后终止。 2 .算法的基本特征 算法应具有以下5个基本特征。 ① 可行性:② 确定性③ 有穷性④ 有限的输入(足够的信息)⑤ 有限的输出

5.2 算法概述 3 .算法设计的要求 4 .算法的基本要素 通常,一个算法由两种基本要素组成。 ① 对数据对象的运算和操作。 5.2 算法概述 3 .算法设计的要求 ① 正确性:算法应当满足具体问题的需求,是正确的,不含数据、语法错误。 ② 可读性:算法要易于理解,易于编码,易于调试。 ③ 健壮性:当输入非法数据时,算法能做出适当的反映或进行处理。 ④ 时间与空间效率:算法的执行时间要短,占用的存储空间要小。 4 .算法的基本要素 通常,一个算法由两种基本要素组成。 ① 对数据对象的运算和操作。 ② 算法的控制结构,即运算或操作时间的顺序。

5.2 算法概述 算法的复杂度 解决同一问题可以使用很多不同的算法,评价一个算法优劣的主要标准是算法的执行效率与存储需求,分别由算法的时间复杂度和空间复杂度来衡量。 算法的复杂度是算法效率的度量,是评价算法优劣的重要依据。

5.2 算法概述 2 算法的复杂度(空间+时间=效率) 算法时间复杂度 5.2 算法概述 2 算法的复杂度(空间+时间=效率) 算法时间复杂度 算法的时间复杂度是指:执行算法所需要的计算工作量。可以用算法中基本语句的执行次数来度量。 算法空间复杂度 算法的空间复杂度是指:执行这个算法所需要的内存空间。

5.2 算法概述 典型算法实例 插入排序 插入排序的基本思想就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序序列。 插入排序是这样实现的: (1) 从第一个元素开始,该元素可以认为已经被排序 (2) 取出下一个元素,在已经排序的元素序列中从后向前扫描 (3) 如果该元素(已排序)大于新元素,将该元素移到下一位置 (4) 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 (5) 将新元素插入到下一位置中 (6) 重复步骤2

5.2 算法概述 例如:初始数列: [49 38 65 97 76 13 27 49] 第一趟排序后: 38 49[65 97 76 13 27 49] 第二趟排序后: 38 49 65 [97 76 13 27 49] 第三趟排序后 :38 49 65 97 [76 13 27 49] 第四趟排序后 :38 49 65 76 97 [13 27 49] 第五趟排序后 :13 38 49 65 76 97 [27 49] 第六趟排序后 :13 27 38 49 65 76 97 [49] 第七趟排序后 :13 27 38 49 49 65 76 97 [] 最后排序结果 :13 27 38 49 49 65 76 97

5.2 算法概述 2.冒泡排序 冒泡排序(BubbleSort)的基本思想是:在排序过程中总是小数(或大数)往前放,大数(或小数)往后放,相当于气泡往上升,所以称作冒泡排序。 冒泡排序的实现过程:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。 在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。 如此下去,重复以上过程,直至最终完成排序。

5.2 算法概述 例如:初始数列: [49 38 65 97 76 13 27 49] 第一趟排序后 :38 49 65 76 13 27 49 [97] 第二趟排序后: 38 49 65 13 27 49 [76 97] 第三趟排序后 :38 49 13 27 49 [65 76 97] 第四趟排序后 :38 13 27 49 [49 65 76 97] 第五趟排序后 :13 27 38 [49 49 65 76 97] 第六趟排序后 :13 27 [38 49 49 65 76 97] 第七趟排序后 :13 [27 38 49 49 65 76 97] 最后排序结果 :[13 27 38 49 49 65 76 97]

5.2 算法概述 3.选择排序 选择排序的基本思想是:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 例如:初始数列: [49 38 65 97 76 13 27 49]   第一趟排序后 :13 [38 65 97 76 49 27 49]   第二趟排序后: 13 27 [65 97 76 49 38 49]   第三趟排序后 :13 27 38 [97 76 49 65 49]   第四趟排序后 :13 27 38 49 [76 97 65 49 ]   第五趟排序后 :13 27 38 49 49 [97 65 76]   第六趟排序后 :13 27 38 49 49 65 [97 76]   第七趟排序后 :13 27 38 49 49 65 76 [97]   最后排序结果 :[13 27 38 49 49 65 76 97]

5.2 算法概述 实例二:求最大值算法 有一串随机数列。我们的目的是找到这个数列中最大的数。如果将数列中的每一个数字看成是一颗豆子的大小,可以将下面的算法形象地称为“捡豆子”。 求最大数的算法是: (1)首先将第一颗豆子放入口袋中。 (2)从第二颗豆子开始检查,如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先口袋中的豆子。直到最后一颗豆子。 (3)最后口袋中的豆子就是所有的豆子中最大的一颗。

5.2 算法概述 例如:数列为:[49 38 65 97 76 13 27 49] 第一次“捡豆子”后:49 [38 65 97 76 13 27 49] 第二次“捡豆子”后:49 [65 97 76 13 27 49] 第三次“捡豆子”后:65 [97 76 13 27 49] 第四次“捡豆子”后:97 [76 13 27 49] 第五次“捡豆子”后:97 [13 27 49] 第六次“捡豆子”后:97 [27 49] 第七次“捡豆子”后:97 [49] 最后结果:97

5.2 算法概述 实例三:求最大公约数算法 求最大公约数是数学中经常讨论的问题,两个自然数的最大公约数的算法是: 5.2 算法概述 实例三:求最大公约数算法 求最大公约数是数学中经常讨论的问题,两个自然数的最大公约数的算法是: 求两个自然数的最大公约数 设两个变量M和N (1)如果M < N,则交换M和N (2)M被N除,得到余数R (3)判断R=0,正确则N即为“最大公约数”,否则下一步 (4)将N赋值给M,将R赋值给N,重做第一步。

5.2 算法概述 例如:求24与18的最大公约数 (1)因为24(M) <18(N)不成立,不交换,否则要交换24(M)和18(N) 5.2 算法概述 例如:求24与18的最大公约数 (1)因为24(M) <18(N)不成立,不交换,否则要交换24(M)和18(N) (2)24(M)被18(N)除,得到余数R=6 (3)判断R=0不成立,将18(N)赋值给M,将6(R)赋值给N,即18(M) 6(N) (4)18(M)被6(N)除,得余数R=0 (5)6(N)为最大公约数