算法与程序设计第一章(2018新版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.3、程序与程序设计语言
程序设计语言的产生与发展(P18) (1)、机器语言:由“0”和“1”组成的二进制代码,是能够被计算机直接接受 和 执行的计算机语言。 (2)、汇编语言:采用类似英语缩写略词且带有助记性的符号形式代替二进制 机器代码的计算机语言。是符号化了的机器语言。用能反映 指令功能的助记符表达的计算机语言。 (3)、高级语言:相对于汇编语言而言,它并不是特指某一种具体的语言,而 是包括了很多编程语言,如VB、C、C++,VC、Java等。
2)、确定性。解题方法中的任何一个操作步骤都是清晰无误的,不会使人产生 歧义或者误解。 3)、有穷性。任何一种提出的解题方法都是在有限的操作步骤内可以完成的, 哪怕是失败的解题方法。 4)、输 出。一个算法执行结束之后必须有数据处理结果输出,哪怕 是输出错误的数据结果,没有输出的算法使毫无意义的。
5)、能行性。解题方法中的任何一个操作步骤在现有计算机软硬件条件下和逻 辑思维中都能够实施实现。
信息技术 (选修1)
算法与程序设计
授课人:胡敏
第一章 揭开计算机解决问题的神秘面纱
1、计算机解决问题的过程
2、算法和算法的描述 3、程序与程序设计语言
1.1、计算机解决问题的过程
具体问题: 华南太阳能设备厂在计划期内拟生产甲、乙、丙三 种适销产品,每件销售收分别为4万元、3万元、2 万元。按工艺规定,甲、乙、丙三种产品都需要在 A、B、C、D四种不同的设备上加工,其加工所需 要的时间见下表。已知A、B、C、D四种设备在计 划期内有效使用台时数分别为12、8、16、12。如 何安排生产可使收入最大?
辗转相除法
又名欧几里德算法(Euclidean algorithm)是求两个正整数之最大公约数的算法。它 是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》 (第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不 需要把二数作质因子分解。 1. a ÷ b,令r为所得余数(0≤r<b),若 r = 0,b 即为最大公约数;算法结束 。 2. 互换:置 a←b,b←r,并返回第一步。 例如:求112和64的最大公约数.算法如下: 48 (1).112除以64,余数为______; 64 除以_____ 48 余数为_______; 16 (2)._____ (3)._____ 48 除以_____ 16 余数为_______. 0 16 答:112和64的最大公约数为______. 两数的最大公约数乘以其最小公倍数=两数相乘 例如:求112和64的最小公倍数. 16 (1).利用辗转相除法求得它们的最大公约数为______; (2).利用表达式求得最小公倍数: 112*64/16=448 答: 112和64的最小公倍数为______.
明确已知和未知 之间的关系 人工求解问题
甲乙丙的产量及总销售额。
写出解题的算法
穷举法
(1)分析问题
x、y、z满足以下关系式
2x+2y+z≤12 X+2y+z ≤8 4x ≤16 4y ≤12 0 ≤x ≤6; 0 Βιβλιοθήκη Baiduy ≤6; 0 ≤z ≤12 0 ≤x ≤8; 0 ≤y ≤4; 0 ≤z ≤8 0 ≤x ≤4 0 ≤y ≤3 0≤x≤4 0 ≤y ≤3 0 ≤z ≤8
表1-1 产品甲、乙、丙在各设备上所需加工的台时数
设备 产品
A 2
B 1
C 4
D 0



2
1
2
1
0
0
4
0
表1-2 探究问题记录表
探究的问题 探究过程
找出已知和未知
已知甲乙丙销售收入,ABCD四种设备有效使用台时 数,甲乙丙加工的台时数,未知的是甲乙丙的产量及 总销售额。 甲乙丙加工的台时数不能超过ABCD有效使用台时数。
1.2 算法和算法描述 1、算法 2、算法的描述 3、算法的地位和作用
(1)算法的概念
算法是在有限步骤内求解某一问题所使用的一组定义明确的 规则。 即,用计算机求解某一问题的方法,是能被机械地执行的动作 或指令的有穷集合。
(2)算法的特征:
1)、输 入。解题算法中可以没有数据输入,也可以同时输入多个需 要算法处理的数据。
具体问题
分析问题
设计算法
编写程序
运行程序 验证结果
得到答案
用计算机解决问题的步骤
实践操作 1)、新建工程; 2)、在窗体添加按钮控件; 3)、给按钮添加单击事件过程; 4)、在单击事件过程内输入编写好的程序; 5)、运行程序调试结果。
人工解题步骤 1、理解和分析所面临的问题 2、寻找解题的途径和方法 3、用笔、纸和算盘、计算器等工具进行计算 计算机解题步骤 1、理解和分析所要解决的问题 2、寻找解题的途径和方法 3、生成解题算法 4、选用一种编程语言根据算法编写程序 5、通过编辑、编译和连接产生计算机能够识别的指令序列 6、在计算机上执行该指令序列
伪代码
种类繁多,语句不容易规范. P12
3、算法的地位和作用
在运用计算机程序解决问题的过程中,算法设计有着 举足轻重的地位和作用,算法是程序设计的核心,是程 序设计的灵魂.算法的好坏,直接影响着程序的通用性 和有效性,影响着问题解决的效率.
程序的编制依赖于算法的设计。程序的效率主要取决于 算法的效率。
以上是我们人类大概的一个解题思路,还不 能让计算机直接执行。
源程序
Dim x As Integer, y As Integer, z As Integer Dim x_max As Integer, y_max As Integer, z_max As Integer Dim f(4, 3, 8) As Single Dim f_max As Single For x = 0 To 4 For y = 0 To 3 For z = 0 To 8 If (2 * x + 2 * y + z <= 12) And (x + 2 * y + z <= 8) Then f(x, y, z) = 4 * x + 3 * y + 2 * z Else f(x, y, z) = 0 End If Next z Next y Next x
表示算法的语言有自然语言、流程图、伪代码等。 1)、用自然语言描述算法; 2)、用流程图描述算法:掌握流程图的基本图形及其功能。 3)、用伪代码描述算法。 开始 输入正整数m和n 1).输入m和n的值; 2).r=m除以n的余数; 3).如果r=0,则输出n值; 否则令m=n,n=r返回第2步; 4).结束. r=m除以n的余数 输入m和n值 r =m Mod n do while r<>0 m=n n=r r=m mod n loop 输出n值
2、算法的描述
(1)、自然语言 (2)、流程图 (3)、伪代码
自然语言
平时大家所说的语言
流程图
流程图也称为程序框图,它是算法的
一种图形化表示方法。
流程图图例
开始或结束 输入或输出
处理
判断
流程线 连接点
伪代码
伪代码是介于自然语言和计算机程
序语言之间的一种算法描述,也是专业
软件开发人员描述算法的一种常用方法。
解题的目标是:
求出适当的x、y、z 使 f( x、y、z )=4x+3y+2z 取得最大值
(2)设计算法
第一步:把符合条件的x、y、z代入f( x、y、z )=4x+3y+2z
第二步:在所有 f( x、y、z )函数值中,找出最大值
第三步:输出 f( x、y、z )的最大值及x、y、z的值
第四步:结束
各种程序设计语言的比较
语言种类 优势 不足
机器语言
能被计算机直接接受和执行
程序设计任务繁重,效率低 下,与自然语言存在巨大鸿 沟,程序员不易培养。
必须有语言翻译器支持,效 率低,汇编源程序较冗长、 复杂,容易出错。
汇编语言
比机器语言更易理解
高级语言
更接近自然语言,移植性好。
要语言翻译器支持。
r=0 是 输出n的值
结束

m=n, n=r
注意对比三种算法描述方式的优劣。
三种算法描述方式的优劣
优点 缺点
自然语言
不需专门训练,通俗易懂
P10
流程图
描述清晰简洁,容易表达选 择结构;利于不同环境的程 序设计.P11 书写方便,格式紧凑,易于理 解,便于向计算机程序设计 语言过渡.P12
无法被计算机直接接受并 进行操作
4、验证计算结果
人与计算机解决问题的区别
相同点:无论何种解题方式,在解决某一实际问题时,都应该正确的理解问题的题意,从看似复杂的 问题中整理出一个头绪,然后通过算法(即解决问题的一个一个步骤)描述出某一问题的解决过程, 进行一定量的计算,最后都必须验证计算结果。
不同点:当计算量较大时,人工解题就有点力不从心了,而计算机每秒上亿次的计算速度却不在话下 并且只要算法正确,编程语句无误的话,使用计算机编写的解题程序可以反复使用。例如: sum=1+2+3+4+5……+(n-1)+n这样的问题。
f_max = 0 For x = 0 To 4 For y = 0 To 3 For z = 0 To 8 If f_max < f(x, y, z) Then f_max = f(x, y, z) x_max = x y_max = y z_max = z End If Next z Next y Next x Print "当x="; x_max; ",y="; y_max; ",z="; z_max; "时," Print "f(x,y,z)的最大值="; f_max
相关文档
最新文档