第2章 算法—程序的灵魂.

Slides:



Advertisements
Similar presentations
一、 一阶线性微分方程及其解法 二、 一阶线性微分方程的简单应用 三、 小结及作业 §6.2 一阶线性微分方程.
Advertisements

第五节 全微分方程 一、全微分方程及其求法 二、积分因子法 三、一阶微分方程小结. 例如 所以是全微分方程. 定义 : 则 若有全微分形式 一、全微分方程及其求法.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
1 热烈欢迎各位朋友使用该课件! 广州大学数学与信息科学学院. 2 工科高等数学 广州大学袁文俊、邓小成、尚亚东.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
第一章 C语言概述.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
循环模式 流程图的画法: 条件 y 循环体 伪代码: n Do while 条件 循环体 loop 每个循环模式的结构都是一个入口,一个出口.
二级C语言程序设计及同步训练 涂玉芬 主编 中国水利水电出版社.
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
第3章 简单算法设计 3.1 结构化程序的算法设计 3.2 结构化算法的性质及结构 3.3 结构化算法的描述方法 自然语言 流程图 伪码
Oracle数据库 Oracle 子程序.
公司法(六) 股份有限公司 1.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
定积分习题课.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
Online job scheduling in Distributed Machine Learning Clusters
What have we learned?.
第二章 程序的灵魂--算法.
第二章 Java语言基础.
計數式重複敘述 for 迴圈 P
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
专题作业.
C语言程序设计 主讲教师:陆幼利.
C语言程序设计 第二章 程序的灵魂 -- 算法.
VisComposer 2019/4/17.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
姚金宇 MIT SCHEME 使用说明 姚金宇
算法初步 §1.1.2 程序框图.
C程序设计.
C语言程序设计 李凌云
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
解 简 易 方 程.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
《计算机应用基础》 第9章 程序设计基础(二).
第三单元 第2课 实验 一元函数的积分 实验目的:掌握matlab求解有关不定积分和定积分的问题,深入理解定积分的概念和几何意义。
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
算法初步 §1.1.2 程序框图.
位移法 —— 例题 主讲教师:戴萍.
College of Computer Science & Technology
1.2基本算法语句 1.2.3循环语句.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第一章 绪论 1.1 引言 1.2 逻辑结构和存储结构 1.3 算法.
第二章 Java基本语法 讲师:复凡.
OpenStack vs CloudStack
初三VB 复习一.
2019/5/20 第三节 高阶导数 1.
第二节 C语言的特点.
第十二章 位运算.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
五 循环结构程序设计 厦大附中信息技术.
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
循环结构 刘华 江苏省苏州中学.
Presentation transcript:

第2章 算法—程序的灵魂

主要内容 一、 算法的概念 二、 算法的特性 三、 算法的表示方法 四、 结构化程序设计方法

著名计算机科学家沃思提出一个公式:  数据结构 + 算法 = 程序 一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式:  数据结构 + 算法 = 程序

一、算法的概念 例: 求 广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。 方法1:1+2,+3,+4,一直加到100 加99次 例: 求 方法1:1+2,+3,+4,一直加到100 加99次 方法2:100+(1+99)+(2+98)+…+(49 +51)+50 = 100 + 49×100 +50 加51次

一、算法的概念 计算机算法可分为两大类别: 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等。

二、算法的特性 有穷性:包含有限的操作步骤 确定性:算法中的每一个步骤都应当是确定的 有零个或多个输入:输入是指在执行算法时需要从外界取得必要的信息 有一个或多个输出:算法的目的是为了求解,“解” 就是输出 有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果 。

三、算法的表示方法 常用的表示算法的方法有: 自然语言 传统流程图 结构化流程图 N-S图 伪代码 计算机语言

1、自然语言 Part 3 算法的表示 优点:通俗易懂 缺点:文字冗长,容易出现“歧义性”,有时候需要通过上下文来判断正确含义。

2、传统流程图 Part 3 算法的表示 美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号: 起止框 判断框 处理框 输入/输出框 注释框 流向线 连接点

2、传统流程图 Part 3 算法的表示 例 将求5!的算法用流程图表示

2、传统流程图 缺点:难以阅读、修改,使算法的可靠性和可维护性难以保证。 Part 3 算法的表示 传统流程图的流程可以是: 缺点:难以阅读、修改,使算法的可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去。 这种如同乱麻一样的算法称为BS型算法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。

3、结构化流程图 Part 3 算法的表示 Bohra和Jacopini提出了以下三种基本结构: 顺序结构、选择结构、循环结构

3、结构化流程图 Part 3 算法的表示 顺序结构

3、结构化流程图 Part 3 算法的表示 选择结构

3、结构化流程图 Part 3 算法的表示 当型(While型)循环结构 直到型(Until型)循环

3、结构化流程图 三种基本结构的共同特点: (1)只有一个入口; Part 3 算法的表示 三种基本结构的共同特点: (1)只有一个入口; (2)只有一个出口;(请注意:一个菱形判断框有两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。) (3)结构内的每一部分都有机会被执行到; (4)结构内不存在“死循环”(无终止的循环)。

3、结构化流程图 Part 3 算法的表示 不正确的流程表示: 图中没有一条从入口到出口的路径通过A框。 流程内的死循环

3、结构化流程图 Part 3 算法的表示 多分支选择结构: 由三种基本结构所派 生出来的,根据表达式的 值决定执行路线。 虚线框内的结构是一 个入口一个出口。

4、N-S图 Part 3 算法的表示 N--S流程图用以下的流程图符号: (1)顺序结构 (2)选择结构 (3)循环结构

4、N-S图 Part 3 算法的表示 例 求5!算法用N--S图表示

5、伪代码 Part 3 算法的表示 伪代码是用介于自然语言和计算机语言之间的文字和 符号来描述算法。

5、伪代码 置t 的初值为1 例 用伪代码表示算法:求5!。 Part 3 算法的表示 也可以写成以下形式: 开始 置i 的初值为2 例 用伪代码表示算法:求5!。 开始 置t 的初值为1 置i 的初值为2 当i<=5,执行下面操作: 使t=t×i 使i=i+1 {循环体到此结束} 输出t的值 结束 也可以写成以下形式: BEGIN{算法开始} 1t 2  i while i≤5 {t×i t  i+1  i} print t END{算法结束}

6、计算机语言 #include <stdio.h> 例 求5! ,用C语言编写。 void main( ) {int i,t; Part 3 算法的表示 #include <stdio.h> void main( ) {int i,t; t=1; i=2; while(i<=5) {t=t*i; i=i+1; } printf(“%d\n”,t); 例 求5! ,用C语言编写。

四、结构化程序设计方法 一个结构化程序 就是用高级语言表示的结构化算法。(用三种基本结构组成的程序) 结构化程序设计方法的基本思路是: 把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。

四、结构化程序设计方法 采取以下方法来保证得到结构化的程序: 自顶向下; 逐步细化; 模块化设计; 结构化编码。

四、结构化程序设计方法 用这种方法逐步分解,直到可以直接将各小段表达为文字语句为止。这种方法就叫 做“自顶向下,逐步细化”。

四、结构化程序设计方法 模块设计的方法: 模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务就相对简单了。 划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。