第三章 算法的程序实现
DESCRIPTION
第三章 算法的程序实现. 3.1 用解析法解决问题. 一、知识回忆、引入新课. 1 、计算机解决问题的一般过程? 2 、计算机解决问题的核心是什么? 3 、算法的几种表示方法是什么 ?. 算法的程序实现方法. 解析法. 穷举法. 在数组中查找数据. 算法的程序 实现方法. 对数据进行排序. 递归法. 用解析法解决问题. 教学目标: 1 、了解解析法 2 、学会用解析法分析问题、解决问题 3 、学会编写程序实现解析法. 什么是解析法. 如: 有一段路程 S (平路),小 A 来往行程的时间是 t ,求平均速度 v 。 v=S / ( t /2). - PowerPoint PPT PresentationTRANSCRIPT
第三章 算法的程序实现
3.1 用解析法解决问题
1 、计算机解决问题的一般过程?
2 、计算机解决问题的核心是什么?
3 、算法的几种表示方法是什么 ?
一、知识回忆、引入新课
算法的程序实现方法
算法的程序实现方法
解析法
穷举法
对数据进行排序
在数组中查找数据
递归法
用解析法解决问题
教学目标:1 、了解解析法2 、学会用解析法分析问题、解决问题3 、学会编写程序实现解析法
解析法就是在分析具体问题的基础上,抽取出一个
数学模型,这个数学模型能用若干个解析表达式表示出来,解决得了这些表达式,问题也就得以解决。
如:如:有一段路程有一段路程 SS (平路),小(平路),小 AA 来往行程的时间是来往行程的时间是 tt ,,
求平均速度求平均速度 vv 。。
v=S / ( t /2)v=S / ( t /2)
什么是解析法
请注意观察,下面的“钻石”图案有什么特点?
钻石图案
思考:组成钻石图案的基本元素是?决定线段基本元素是?钻石中的“点”有什么特征?
钻石图案的特点
“ 钻石”图案是由点和线构成的 决定线段基本元素是点 图形四周的点位于一个圆周上
结论:求出各点的位置,绘制各点之间的线段,就可以绘出这个图形了。
问题分析:如何求出各点的位置呢?
x1=rcos ( θ ) y1
=rsin ( θ )
x2=rcos ( 2θ ) y
2=rsin ( 2θ )
其中, θ=360º/N ; r 为圆的半径
第N个点的坐标?
For i=1 to 总的点数 求出第 i 个点的坐标 rcos ( iθ ), rsin ( iθ ) For j=1 to 总的点数 If i 点和 j 点不是同一个点 Then 求出第 j 个点的坐标 rcos ( jθ ), rsin ( jθ ) 画出 i 到 j 点的线段 End If Next jNext I
算法的伪代码表示如下:
注意:两层循环,第一层循环控制钻石 的顶点数目,第二层循环控制钻 石的线条数目.
回顾已学知识
变量命名 1、为增加程序的可读性,变量名最好取有意义的名称,建
议前面加上类型缩写。
如: sngRadius,sngAngle 等
三角函数中的参数应该是弧度数,如一个圆等分N份,圆的半径为R,第N个点的坐标是:
X n =R *sin(2*PI/N)
Yn =R *cos(2*PI/N)
窗体方法的应用 VB 的屏幕坐标和数学的坐标系不同,它的原点不在窗体中心,而
在窗体工作区的左上角,但可以通过窗体的 scale 方法更改:
窗体 .scale (左上角坐标)-(右下角坐标)如: frmdraw.Scale (-1.5, -1.5)-(1.5, 1.5)
VB 屏幕坐标原点
用 VB 绘制线段:
窗体 .Line (起始坐标)-(终点坐标),颜色
frmdraw.Line (sngX1, sngY1)-(sngX2, sngY2), vbBlue
也可以直接通过画线命令实现:
Line (起始坐标)-(终点坐标),颜色 实例:
Form1.Scale (-1.5, -1.5)-(1.5, 1.5)
Line (-1.5, -1.5)-(1.5, 1.5), vbRed
Const PI = 3.14159265 Dim i As Integer, j As Integer Dim sngX1 As Single, sngY1 As Single Dim sngX2 As Single, sngY2 As Single Dim sngAngle As Single ' 表示等分的单位弧度 Dim sngRadius As Single ' 表示点所在的圆周的半径 Dim intNodes As Integer ' 表示总点数 frmdraw.Scale (-1.5, -1.5)-(1.5, 1.5) ' 设置屏幕坐标系 Cls ' 清除窗体原有显示的内容 sngRadius = 1 ' 设半径为1个单位 intNodes = 15 ' 设绘图的点数 sngAngle = 2 * PI / intNodes ' 等分的单位弧度 ' 以下程序画出从一个点出发到其他各点间的线段 For i = 1 To intNodes sngX1 = sngRadius * Cos(i * sngAngle) sngY1 = sngRadius * Sin(i * sngAngle) For j = 1 To intNodes If i <> j Then ' 如果 i 不等于 j 的坐标 sngX2 = sngRadius * Cos(j * sngAngle) sngY2 = sngRadius * Sin(j * sngAngle) ' 画出从 i 点到 j 点的线段,颜色为蓝色 frmdraw.Line (sngX1, sngY1)-(sngX2, sngY2), vbBlue End If Next j Next i
求出点 i 的坐标
求线段的另一个点 j 的坐标
实践题: 某超市规定,顾客购买同种商品 10 件以上(包括 10 件)可享受批
发价。请设计一个收款机程序,输入顾客所购商品的零售价、批发价、购买数量及付款数,程序能计算出顾客的应付款及需要找回的零钱,请用伪代码描述或流程图表示。 伪代码 IF 购买数量超过 10 件以上(包括 10 件) then
应付款数 = 批发价 × 数量 ELSE
应付款数 = 零售价 × 数量 找回零钱 = 顾客付款总额—应付款数