C++教程第4讲 算法及其描述-1(2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-2-21
-2-
知识回顾
程序设计的基本流程
分析需求 设计算法 编写程序 输入与编辑程序 编译 链接 运行 在集成开发环境 (IDE)中进行 )
2011-2-21
-3-
知识回顾
创建和运行一个C++程序的操作步骤 程序的操作步骤 创建和运行一个
编辑 程序 编译 程序 链接 程序 C++ 库函数
一个良好的算法应该有适当的输入,以使算法灵活。 一个良好的算法应该有适当的输入,以使算法灵活。
2011-2-21
- 18 -
4、算法的特征 、
4)有一个或多个输出 ) 算法的目的是为了求解, 算法的目的是为了求解,“解”就是输出。没 就是输出。 有输出的算法是没有意义的。 有输出的算法是没有意义的。
C+ + 程序设计基础
The Base of C++ Programming
长春工程学院 软件学院
提问
1. 2. 3. 4. 5. 6.
什么是程序? 什么是程序? 什么是程序设计? 什么是程序设计? 程序设计的基本流程 创建和运行一个C++程序的操作步骤 程序的操作步骤 创建和运行一个 C++程序的入口是什么? 程序的入口是什么? 程序的入口是什么 结构化程序的基本构成单元是什么? 结构化程序的基本构成单元是什么?
Y
1→p 2→i p * i→p i +1→i i ≤ 5? N 输出 p 结束
- 29 -
2011-2-21
2.2 常用的算法描述方法
三、程序来自百度文库三种基本控制结构
(1)顺序结构 ) (2)选择结构(分支结构) )选择结构(分支结构) (3)循环结构 )
2011-2-21
- 30 -
三、程序的三种基本控制结构
2011-2-21
- 16 -
4、算法的特征 、
2)确定性 ) 算法中的每一个步骤都应当是确定的, 算法中的每一个步骤都应当是确定的,不应产 生歧义。 生歧义。
确定性与一个问题有多种算法是不同的。 确定性与一个问题有多种算法是不同的。
2011-2-21
- 17 -
4、算法的特征 、
3)有零个或多个输入。 )有零个或多个输入。 输入: 执行算法时需要从外界取得必要的信息。 输入:在执行算法时需要从外界取得必要的信息。 需要从外界取得必要的信息
2011-2-21
- 14 -
2.1 算法的基本概念及特征
4、算法的特征 、
1)有穷性 ) 2)确定性 ) 3)有零个或多个输入 ) 4)有一个或多个输出 ) 5)有效性 )
2011-2-21
- 15 -
4、算法的特征 、
1)有穷性 ) 一个算法应包含有限的操作步骤, 一个算法应包含有限的操作步骤,而不能是无 限的。 限的。 “有穷性”往往指“在合理的范围之内”。 有穷性”往往指“在合理的范围之内”
知识回顾
C++程序的基本结构 程序的基本结构
编译预处理命令 main函数 函数 C++程序 程序 函数1 函数 …… 函数n 函数 函数说明部分 函数体 变量定义 执行语句
【注意】 注意】 1)至少要有一个main函数 )至少要有一个 函数 2)严格区分大小写 ) 3)语句以分号结尾 ) 4)分层缩进的书写格式 ) 5)两种注释 )
(1)顺序结构 )
a A B b
出口 入口
A B
2011-2-21
- 31 -
三、程序的三种基本控制结构
(2)选择结构(分支结构) )选择结构(分支结构)
a
T 入口 F T F
P
P
A
B
A
B
b
出口
2011-2-21
- 32 -
的绝对值。 【例2_2_3】 求 x 的绝对值。 】 开始 输入x 输入 T 输出x 输出 x≥0? F 输出-x 输出
2011-2-21
- 20 -
第 2 章 算法及其描述
2.1 算法的基本概念及特征 2.2 常用的算法描述方法 2.3 结构化程序设计的基本概念
2011-2-21
- 21 -
2.2 常用的算法描述方法
通常有五种描述算法的方法: 通常有五种描述算法的方法:
用自然语言表示算法 用传统流程图表示算法 用N-S流程图表示算法 - 流程图表示算法 用伪代码表示算法 用计算机语言表示算法
2011-2-21
- 13 -
2.1 算法的基本概念及特征
【例2_1_1】求1*2*3*4*5 】 * * * * 方法二: 方法二: S1:使 p=1 : = S2:使 i=2 : = P 用来存放当前计算的结果 i 用来存放下一个要计算的乘数
S3:使p* i,乘积仍放在变量 p 中,可表示为 * i → p : 可表示为p , S4:使 i 的值加 1,即 i +1 → i : , S5:如果 i 不大于 ,返回重新执行步骤 、S4、S5; : 不大于5,返回重新执行步骤S3、 、 ; 否则,算法结束。 否则,算法结束。
加起来 ,除以2 除以 你让计算 机算去! 机算去!
2011-2-21
-9-
被提问的小学生虽然没能立即算出结果, 被提问的小学生虽然没能立即算出结果, 但他知道两件事。 但他知道两件事。
第一,他知道正确的方法和步骤,那就是: 第一,他知道正确的方法和步骤,那就是: (1)获得要计算的数; )获得要计算的数; (2)求出两个数之和; )求出两个数之和; (3)再除以 ; )再除以2; (4)报告计算结果。 )报告计算结果。 第二,他知道,复杂的计算可以借助计算机完成。 第二,他知道,复杂的计算可以借助计算机完成。
-5-
2011-2-21
C ++ 程序设计基础
第 1 章 程序设计概述 第 2 章 算法及其描述 第 3 章 基本数据类型与表达式 第 4 章 程序结构与流程控制语句 第 5 章 数组 第 6 章 函数
2011-2-21
-6-
第 2 章 算法及其描述
2.1 算法的基本概念及特征 2.2 常用的算法描述方法 2.3 结构化程序设计的基本概念
C++编译系统 编译系统
用 户 编辑 (.cpp文件 编译 (.obj文件 链接 文件) 文件) 文件 文件
Compile (Ctrl + F7)
2011-2-21
C++源 源 程序
目标 程序
结 执行 果 (.exe文件 文件) 文件 其他目 标文件
-4-
可执行 程序
Build (F7)
Execute (Ctrl + F5)
开始 / 结束框 执行框 判断框
流程线
2011-2-21
联系框
- 26 -
二、用传统流程图表示算法
【例2_2_2】有两个瓶子 和B,分别盛放醋和酱油,要求 】有两个瓶子A和 ,分别盛放醋和酱油, 将它们互换(即 瓶原来盛醋 现改盛酱油, 瓶则相反 瓶原来盛醋, 瓶则相反) 将它们互换 即A瓶原来盛醋,现改盛酱油,B瓶则相反 方法一: 方法一:用自然语言描述 方法二: 方法二:用传统流程图表示
算法的输出不一定就是计算机的打印输 一个算法得到的结果就是算法的输出。 出,一个算法得到的结果就是算法的输出。
2011-2-21
- 19 -
4、算法的特征 、
5)有效性 ) 算法中的每一个步骤都应当能有效地执行, 算法中的每一个步骤都应当能有效地执行,并 有确定的结果。 有确定的结果。 是不能有效执行的。 例:若 b=0 ,则执行 a / b 是不能有效执行的。
结束
2011-2-21 - 33 -
三、程序的三种基本控制结构
(3)循环结构 )
1)前测试型循环 )
a
入口
A
A
P
F
T F 出口
P
T
b
2011-2-21
- 34 -
三、程序的三种基本控制结构
(3)循环结构 )
2)后测试型循环 )
a
A 入口
2011-2-21
- 23 -
【例2_2_1 】求1*2*3*4*5 * * * * 方法二: 方法二: S1:使 p=1 : = S2:使 i=2 : = P 用来存放当前计算的结果 i 用来存放下一个要计算的乘数
S3:使p* i,乘积仍放在变量 p 中,可表示为 * i → p : 可表示为p , S4:使 i 的值加 1,即 i +1 → i : , S5:如果 i 不大于 ,返回重新执行步骤 、S4、S5; : 不大于5,返回重新执行步骤S3、 、 ; 否则,算法结束。 否则,算法结束。
2011-2-21
- 24 -
2.2 常用的算法描述方法
一、用自然语言表示算法
优点: 优点:通俗易懂 缺点:文字冗长、容易出现“歧义性” 缺点:文字冗长、容易出现“歧义性”; 描述包含分支和循环的复杂算法不方便。 描述包含分支和循环的复杂算法不方便。
2011-2-21
- 25 -
2.2 常用的算法描述方法
2011-2-21
- 12 -
2.1 算法的基本概念及特征
3、简单算法举例 、
【例2_1_1 】求1*2*3*4*5 * * * * 方法一: 方法一: 步骤1:先求1*2,得到结果 。 步骤 :先求 * ,得到结果2。 步骤2:将步骤 再乘以3,得到结果6。 步骤 :将步骤1 得到的乘积 2 再乘以 ,得到结果 。 步骤3: 再乘以 再乘以4, 步骤 :将6再乘以 ,得24。 。 步骤4: 再乘以5, 步骤 :将24再乘以 ,得120。这就是最后的结果。 再乘以 。这就是最后的结果。
二、用传统流程图表示算法
1、流程图:利用几何图形框及文字说明代表各种不 、流程图:利用几何图形框及文字说明代表各种不 几何图形框 同性质的操作, 流程线来指示算法的执行方向 同性质的操作,用流程线来指示算法的执行方向 来描述操作过程。 来描述操作过程。 2、流程图构成常用符号: 、流程图构成常用符号:
2011-2-21 - 10 -
2.1 算法的基本概念及特征
1、计算机程序的构成 、
对数据的描述 程序 对操作的描述 :数据结构 :算法
程序的灵魂 ——
算法
2011-2-21
- 11 -
2.1 算法的基本概念及特征
2、算法的概念 、
广义:为解决一个问题而采取的方法和步骤。 广义:为解决一个问题而采取的方法和步骤。 方法和步骤 狭义:计算机解决问题而采取的方法和步骤。 狭义:计算机解决问题而采取的方法和步骤。 方法和步骤 计算机执行的操作 计算机执行的操作 算法 这些操作的顺序 这些操作的顺序
开始 醋→A ,酱油 酱油→B 酱油 定义变量T 定义变量 A→ T B→A T→B 结束
2011-2-21 - 27 -
S1:将醋倒入A瓶,酱油倒入 瓶; :将醋倒入 瓶 酱油倒入B瓶 S2:找来一个空瓶T; :找来一个空瓶 ; S3:将A瓶中的醋倒入空瓶 中; : 瓶中的醋倒入空瓶T中 瓶中的醋倒入空瓶 S4:将B瓶中的酱油倒入 瓶中; : 瓶中的酱油倒入A瓶中 瓶中的酱油倒入 瓶中; S5:将T瓶中的醋倒入 瓶中 完成。 : 瓶中的醋倒入B瓶中 瓶中的醋倒入 瓶中, 完成。
2011-2-21
-7-
能为我计 算两个数 的平均值 吗? 3和5 和 结果是 多少? 多少? 要计算的 是哪两个 数?
加起来 ,除以2 除以 4
2011-2-21
-8-
请再算 两个数 2378563214.58952142 和 845125693.452586741 结果是 多少? 多少? 哪两 个数 ?
2011-2-21
- 22 -
2.2 常用的算法描述方法
一、用自然语言表示算法
【例2_2_1】求1*2*3*4*5 】 * * * * 方法一 步骤1:先求1*2,得到结果 。 步骤 :先求 * ,得到结果2。 步骤2:将步骤 得到的乘积 再乘以3,得到结果6。 得到的乘积2再乘以 步骤 :将步骤1得到的乘积 再乘以 ,得到结果 。 步骤3: 再乘以 再乘以4, 步骤 :将6再乘以 ,得24。 。 步骤4: 再乘以5, 步骤 :将24再乘以 ,得120。这就是最后的结果。 再乘以 。这就是最后的结果。
二、用传统流程图表示算法
的绝对值。 【例2_2_3】 求 x 的绝对值。 】 开始 输入x 输入 T 输出x 输出 x≥0? F 输出-x 输出
结束
2011-2-21 - 28 -
二、用传统流程图表示算法
开始
【例2_2_4】 求1*2*3*4*5 】 * * * * S1:使 p=1 ; : = S2:使 i=2 ; : = S3:使 p * i,乘积仍放在变量 : , p 中,可表示为 i →p ; 可表示为p* S4:使 i 的值加 ,即 i +1→ i ; : 的值加1, S5:如果 i 不大于 ,返回重新 : 不大于5, 执行步骤S3、 、 ; 执行步骤 、S4、S5;否 算法结束。 则,算法结束。