计算机解决问题的基本过程课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有问题就解决
清晰的思路
适合的方法
步骤
有效的表达
算法与程序设计
计算机解决问题 的基本过程
听话聪明的计算机
按照指令做事儿 用计算器计算、用Word 处理文字、单击“确定” 按钮确认你的操作 编写游戏代码、编写网页 代码
程序 原始数据
运算器
存 取数 计算结果
输入 设备
存储器
程 序 指 令
输出简单的有规则 的字符几何图形
1. 第一行输出的位置,每 一行第一个字符输出的 位置。 2. 图形有3行。 1. CurrentY = 500 Print Tab(20 – i*3); 2. For i = 1 To 3 Next i
3. 每行有5列。
4. 每行输出相同的“#”号。 5. 显示完一行后,换行显 示下一行。
让计算机按照我们的期望来运作。
算法是程序设计的核心,是程序设计的灵魂。
用辗转相除法和穷举法求两个整数 的最大公约数
辗转相除法设计的程序:
Private Sub Command1_Click() m = 9147485 穷举法设计的程序: n = 5147480 Private Sub Command2_Click() r = m Mod n Do While r <> 0 m = 9147485 m=n n = 5147480 n=r i=m r = m Mod n Do While m Mod i <> 0 Or n Mod i <> 0 Loop i=i-1 CurrentY = 100 Loop Print "最大公约数="; n CurrentY = 100 End Sub Print "最大公约数="; i End Sub 解决某一问题的算法的 思想可以多种多样。好 算法让我们事半功倍。
小结
1. 2.
3.
4.
理论: 计算机解决问题的基本过程。 建立数学模型,构造非数值类数据的模型。 算法的效率、通用性、多样性。 在计算机领域中有的问题不可解。 思路: 了解工具的功能→掌握工具的使用方法和步骤→ 用我们的认知来改进现有工具,制造新工具,延 伸、拓展我们的智能。
人们洞察世界的优秀的模 型,利用计算机解决现实 世界的问题。人们关心现 实社会而不是程序,程序 是人们更好地理解世界的 机制。
算法的描述
用流程图描述算法 流程图的基本图形及其功能 图形 名称 功能
开始/结束 输入/输出 处理 判断 流程线
连接点
表示算法的开始或结束 表示算法中变量的输入或输出 表示算法变量的计算与赋值 表示算法条件判断 表示算法中的流向
表示算法的转接
用流程图描述算法清晰简洁,容易表达选择结构;利于 不同环境的程序设计。
算法与程序设计
Байду номын сангаас
计算机或者与计算机通信或者与人交流,我们必须将 算法转变为一个清晰的指令的集合,并且将这些指令 用程序设计语言来表示。一般分为:机器语言、汇编
语言、高级语言。
一个与计算机兼容的算法的描述称为一个程序。 程序设计是设计程序的过程,就是把计算机运作指令
有计划地串在一起,使计算机完成我们所期望的工作,
流程图描述:
开始 输入正整数m和n
r =m除以n的余数
否 r=0 是
m=n,n=r
输出n的值
结束
绘制流程图的技巧
开始时要把注意力集中在问题的逻辑上,画出流程图的 主要执行路径。 主要部分完成之后,加入选择和循环。 一个流程图只有一个起始点和一个结束点。 尽可能使流程图和机器无关,不要使用和计算机相关的 术语。 没有必要在流程图中将每个步骤都画出来,只要描述出 那些有意义的即可。 使用一些明确的描述性的词恰当地表示问题不要用一些 模棱两可的词语。 让其他编程人员或用户能够轻松地看懂你的流程图。
算法
1.
特征
输入。一个算法有零个或多个输入,以刻画运算对象的初始 情况。 确定性。算法的每一个步骤必须要确切地定义,不能有歧义。 有穷性。一个算法在执行有穷步之后必须结束。 输出。算法有一个或多个与输入有某个特定关系的输出。 能行性。算法中有待执行的运算和操作必须是相当基本的, 它们都是能够精确地进行的,算法执行者甚至不需要掌握算 法的含义即可根据该算法的每一步骤要求进行操作,并最终 得出正确的结果。
用伪代码描述算法
伪代码是用介于自然语言和计算机语言之间的文 字和符号来描述算法的工具。用伪代码描述算法 回避了程序设计语言严格、烦琐的书写格式,容 易转换为程序设计语言,但伪代码的语句不容易
规范,有时会产生误解。
求最大公约数
自然语言描述: 例如:求两个正整数m 和n的最大公约数的 步骤: 输入正整数m和n 以m除以n,令所得 的余数为r。 若r=0,则输出结 果n,算法结束;否 则,继续步骤3。 令m=n,n=r,并 返回步骤1继续进行。 流程图描述:
开始 输入正整数m和n r =m除以n的余数 否 r=0 是 输出n的值 结束 m=n,n=r
伪代码描述: 最大公约数 Input m,n r=m mod n Do while r≠0
m=n
n =r r =m mod n
Loop
Print n
算法在解决问题中的核心地位和重 要作用
寻找解决问题的算法实质上是寻找问题的解决方案, 是要找到描述特定类型问题是如何被解决的指令的 集合。 只有找到了一种可以指导工作执行的算法,通过使 用算法来得到并转化智慧,我们才可以构建一台可 以表现智能行为的机器来执行这个工作。机器表现 的智能等级受到通过算法转化的智慧所限制。 算法的好坏直接影响着程序的通用性和有效性,影 响着问题解决的效率。
3. For j = 1 To 5
Next j 4. Print “#”; 5. Print
输出简单的有规则的字符几何图形 代码
Private Sub Form_Click() CurrentY = 500 For i = 1 To 5 Print Tab(20 - i * 3); For j = 1 To 5 Print "人"; Next j Print Next i CurrentY = 500 For i = 1 To 5 Print Tab(20 + i * 3); For j = 1 To 5 Print "人"; Next j Print Next i End Sub
算法的描述
用自然语言描述算法
算法的描述语言是人们日常用的语言。自然语言 通俗易懂,但其歧义性会导致算法执行的不确定 性;表述较长会导致算法太长;循环和分支较多 时,很难清晰地表示出来;描述的算法不便翻译 成计算机程序设计语言。
将一个问 题分为一系列 例如:求两个正整数m和n的最大公约数的步骤: 的逻辑步骤, 以m除以n,令所得的余数为r。 这样就易于将 若r=0,则输出结果n,算法结束;否则,继续步骤3。 其转化为一个 令m=n,n=r,并返回步骤1继续进行。 计算机程序。
设计算法 ——精确解决问题的步骤→用适当的方式把算法准确地描述
出来
编写程序
——用一种计算机能接受的程序设计语言来描述问题求解的
算法
调试程序
——查找和改正程序中存在的错误,使程序能顺利地执行,
得出正确结果。
算法
概念
算法是在有限步骤内求解某一问题所使用 的一组定义明确的规则。通俗地说就是用计 算机求解某一问题的方法,是能被机械地执 行的动作或指令的有穷集合。
Dim
x ,y As Integer
x = Val(Text1.Text)
If x >= 0 Then y=x^2+3*x-1 Else y =0 End If Print "y="; y;
4. 输出Y的值。
计算机解决问题的过程
分析问题 ——问题非正式描述→正式化或严格化描述→精确到底你要
解决什么问题→建立数学模型或构造模型
1. 2. 3.
抽象在计算机科学中有什么作用? 在程序设计中数据是如何表示及处理的? 社会问题: 教育软件现在被卖给18个月或者更小的儿童。 有人建议这样的软件应该有声音和图像,否则这 个软件就不适合儿童,反对者说这是很糟糕的亲 子关系的替代品。你的意见呢?如果没有更多关 于软件的知识,你支持哪个观点?
修改项: 1. 行参数:由3改为5; 2. 字符参数:由“#”改为“人” 3. 每行第一个字符的输出位置参 数:由20-i*3改为20+i*3, 随着i的增大而增大,距离屏 幕左边线越来越远,即图形向 右移动。 4. 复制蓝色程序块→粘贴,修改 每行第一个字符的输出位置参 数,输出对称图形。
让我想一想
分段函数流程图
以VB语言为例设计程序
开始
Dim
x ,y As Integer
输入X的值
x = Val(Text1.Text) If x >= 0 Then
y=x^2+3*x-1
Else y =0 End If Print "y="; y;
N y=0
x≥0
Y y=x2+3x-1
输出y的值 结束
算法的描述
2. 3. 4. 5.
辗转相除法——求最大公约数
古希腊数学家对公约数求解问题研究提出的算法称为 “辗转相除法”(欧几里得算法)。具体方法是用较大 的数除以较小的数,余数和较小的数构成新的一对数, 继续上面的除法,直到大数被小数除尽,则较小的数就 是最大公约数。 例如:求16和12的最大公约数(16,12) →(12,4) →(8, 4) →(4,4)
输出 设备
控制器
输入命令
输出命令
懂事智慧的我们
发现、分析问题 设计解决方案(适合于计算机) 完成方案(计算机能够执行) 解决问题
分段函数
y=x2+3x-1 y=0
x≥0 x<0
以VB语言为例设计程序
1. 建立分段函数的数 学模型,即写出表 达式。 2. 输入X的值。 3. 判断X的取值,根 据X的取值,选择 Y的表达式,计算 y值。
依次完成——顺序结构
开始
第一步
第二步 第……步
结束
做判断——选择结构
开始
事件X N 满足条件吗? Y 事件B
事件A
结束 选择是指处理过程可能沿着两个或更多的计算路线进行。
不断重复——循环结构
开始
循环变量变化区间设置 循环体 循环变量改变 变量在区间内吗? N
结束 重复执行一个或多个步骤。
Y
求最大公约数
清晰的思路
适合的方法
步骤
有效的表达
算法与程序设计
计算机解决问题 的基本过程
听话聪明的计算机
按照指令做事儿 用计算器计算、用Word 处理文字、单击“确定” 按钮确认你的操作 编写游戏代码、编写网页 代码
程序 原始数据
运算器
存 取数 计算结果
输入 设备
存储器
程 序 指 令
输出简单的有规则 的字符几何图形
1. 第一行输出的位置,每 一行第一个字符输出的 位置。 2. 图形有3行。 1. CurrentY = 500 Print Tab(20 – i*3); 2. For i = 1 To 3 Next i
3. 每行有5列。
4. 每行输出相同的“#”号。 5. 显示完一行后,换行显 示下一行。
让计算机按照我们的期望来运作。
算法是程序设计的核心,是程序设计的灵魂。
用辗转相除法和穷举法求两个整数 的最大公约数
辗转相除法设计的程序:
Private Sub Command1_Click() m = 9147485 穷举法设计的程序: n = 5147480 Private Sub Command2_Click() r = m Mod n Do While r <> 0 m = 9147485 m=n n = 5147480 n=r i=m r = m Mod n Do While m Mod i <> 0 Or n Mod i <> 0 Loop i=i-1 CurrentY = 100 Loop Print "最大公约数="; n CurrentY = 100 End Sub Print "最大公约数="; i End Sub 解决某一问题的算法的 思想可以多种多样。好 算法让我们事半功倍。
小结
1. 2.
3.
4.
理论: 计算机解决问题的基本过程。 建立数学模型,构造非数值类数据的模型。 算法的效率、通用性、多样性。 在计算机领域中有的问题不可解。 思路: 了解工具的功能→掌握工具的使用方法和步骤→ 用我们的认知来改进现有工具,制造新工具,延 伸、拓展我们的智能。
人们洞察世界的优秀的模 型,利用计算机解决现实 世界的问题。人们关心现 实社会而不是程序,程序 是人们更好地理解世界的 机制。
算法的描述
用流程图描述算法 流程图的基本图形及其功能 图形 名称 功能
开始/结束 输入/输出 处理 判断 流程线
连接点
表示算法的开始或结束 表示算法中变量的输入或输出 表示算法变量的计算与赋值 表示算法条件判断 表示算法中的流向
表示算法的转接
用流程图描述算法清晰简洁,容易表达选择结构;利于 不同环境的程序设计。
算法与程序设计
Байду номын сангаас
计算机或者与计算机通信或者与人交流,我们必须将 算法转变为一个清晰的指令的集合,并且将这些指令 用程序设计语言来表示。一般分为:机器语言、汇编
语言、高级语言。
一个与计算机兼容的算法的描述称为一个程序。 程序设计是设计程序的过程,就是把计算机运作指令
有计划地串在一起,使计算机完成我们所期望的工作,
流程图描述:
开始 输入正整数m和n
r =m除以n的余数
否 r=0 是
m=n,n=r
输出n的值
结束
绘制流程图的技巧
开始时要把注意力集中在问题的逻辑上,画出流程图的 主要执行路径。 主要部分完成之后,加入选择和循环。 一个流程图只有一个起始点和一个结束点。 尽可能使流程图和机器无关,不要使用和计算机相关的 术语。 没有必要在流程图中将每个步骤都画出来,只要描述出 那些有意义的即可。 使用一些明确的描述性的词恰当地表示问题不要用一些 模棱两可的词语。 让其他编程人员或用户能够轻松地看懂你的流程图。
算法
1.
特征
输入。一个算法有零个或多个输入,以刻画运算对象的初始 情况。 确定性。算法的每一个步骤必须要确切地定义,不能有歧义。 有穷性。一个算法在执行有穷步之后必须结束。 输出。算法有一个或多个与输入有某个特定关系的输出。 能行性。算法中有待执行的运算和操作必须是相当基本的, 它们都是能够精确地进行的,算法执行者甚至不需要掌握算 法的含义即可根据该算法的每一步骤要求进行操作,并最终 得出正确的结果。
用伪代码描述算法
伪代码是用介于自然语言和计算机语言之间的文 字和符号来描述算法的工具。用伪代码描述算法 回避了程序设计语言严格、烦琐的书写格式,容 易转换为程序设计语言,但伪代码的语句不容易
规范,有时会产生误解。
求最大公约数
自然语言描述: 例如:求两个正整数m 和n的最大公约数的 步骤: 输入正整数m和n 以m除以n,令所得 的余数为r。 若r=0,则输出结 果n,算法结束;否 则,继续步骤3。 令m=n,n=r,并 返回步骤1继续进行。 流程图描述:
开始 输入正整数m和n r =m除以n的余数 否 r=0 是 输出n的值 结束 m=n,n=r
伪代码描述: 最大公约数 Input m,n r=m mod n Do while r≠0
m=n
n =r r =m mod n
Loop
Print n
算法在解决问题中的核心地位和重 要作用
寻找解决问题的算法实质上是寻找问题的解决方案, 是要找到描述特定类型问题是如何被解决的指令的 集合。 只有找到了一种可以指导工作执行的算法,通过使 用算法来得到并转化智慧,我们才可以构建一台可 以表现智能行为的机器来执行这个工作。机器表现 的智能等级受到通过算法转化的智慧所限制。 算法的好坏直接影响着程序的通用性和有效性,影 响着问题解决的效率。
3. For j = 1 To 5
Next j 4. Print “#”; 5. Print
输出简单的有规则的字符几何图形 代码
Private Sub Form_Click() CurrentY = 500 For i = 1 To 5 Print Tab(20 - i * 3); For j = 1 To 5 Print "人"; Next j Print Next i CurrentY = 500 For i = 1 To 5 Print Tab(20 + i * 3); For j = 1 To 5 Print "人"; Next j Print Next i End Sub
算法的描述
用自然语言描述算法
算法的描述语言是人们日常用的语言。自然语言 通俗易懂,但其歧义性会导致算法执行的不确定 性;表述较长会导致算法太长;循环和分支较多 时,很难清晰地表示出来;描述的算法不便翻译 成计算机程序设计语言。
将一个问 题分为一系列 例如:求两个正整数m和n的最大公约数的步骤: 的逻辑步骤, 以m除以n,令所得的余数为r。 这样就易于将 若r=0,则输出结果n,算法结束;否则,继续步骤3。 其转化为一个 令m=n,n=r,并返回步骤1继续进行。 计算机程序。
设计算法 ——精确解决问题的步骤→用适当的方式把算法准确地描述
出来
编写程序
——用一种计算机能接受的程序设计语言来描述问题求解的
算法
调试程序
——查找和改正程序中存在的错误,使程序能顺利地执行,
得出正确结果。
算法
概念
算法是在有限步骤内求解某一问题所使用 的一组定义明确的规则。通俗地说就是用计 算机求解某一问题的方法,是能被机械地执 行的动作或指令的有穷集合。
Dim
x ,y As Integer
x = Val(Text1.Text)
If x >= 0 Then y=x^2+3*x-1 Else y =0 End If Print "y="; y;
4. 输出Y的值。
计算机解决问题的过程
分析问题 ——问题非正式描述→正式化或严格化描述→精确到底你要
解决什么问题→建立数学模型或构造模型
1. 2. 3.
抽象在计算机科学中有什么作用? 在程序设计中数据是如何表示及处理的? 社会问题: 教育软件现在被卖给18个月或者更小的儿童。 有人建议这样的软件应该有声音和图像,否则这 个软件就不适合儿童,反对者说这是很糟糕的亲 子关系的替代品。你的意见呢?如果没有更多关 于软件的知识,你支持哪个观点?
修改项: 1. 行参数:由3改为5; 2. 字符参数:由“#”改为“人” 3. 每行第一个字符的输出位置参 数:由20-i*3改为20+i*3, 随着i的增大而增大,距离屏 幕左边线越来越远,即图形向 右移动。 4. 复制蓝色程序块→粘贴,修改 每行第一个字符的输出位置参 数,输出对称图形。
让我想一想
分段函数流程图
以VB语言为例设计程序
开始
Dim
x ,y As Integer
输入X的值
x = Val(Text1.Text) If x >= 0 Then
y=x^2+3*x-1
Else y =0 End If Print "y="; y;
N y=0
x≥0
Y y=x2+3x-1
输出y的值 结束
算法的描述
2. 3. 4. 5.
辗转相除法——求最大公约数
古希腊数学家对公约数求解问题研究提出的算法称为 “辗转相除法”(欧几里得算法)。具体方法是用较大 的数除以较小的数,余数和较小的数构成新的一对数, 继续上面的除法,直到大数被小数除尽,则较小的数就 是最大公约数。 例如:求16和12的最大公约数(16,12) →(12,4) →(8, 4) →(4,4)
输出 设备
控制器
输入命令
输出命令
懂事智慧的我们
发现、分析问题 设计解决方案(适合于计算机) 完成方案(计算机能够执行) 解决问题
分段函数
y=x2+3x-1 y=0
x≥0 x<0
以VB语言为例设计程序
1. 建立分段函数的数 学模型,即写出表 达式。 2. 输入X的值。 3. 判断X的取值,根 据X的取值,选择 Y的表达式,计算 y值。
依次完成——顺序结构
开始
第一步
第二步 第……步
结束
做判断——选择结构
开始
事件X N 满足条件吗? Y 事件B
事件A
结束 选择是指处理过程可能沿着两个或更多的计算路线进行。
不断重复——循环结构
开始
循环变量变化区间设置 循环体 循环变量改变 变量在区间内吗? N
结束 重复执行一个或多个步骤。
Y
求最大公约数