第三章 算法的程序实现

15
第第第 第第第第第第第 3.1 第第第第第第第第

Upload: susan-dejesus

Post on 31-Dec-2015

49 views

Category:

Documents


6 download

DESCRIPTION

第三章 算法的程序实现. 3.1 用解析法解决问题. 一、知识回忆、引入新课. 1 、计算机解决问题的一般过程? 2 、计算机解决问题的核心是什么? 3 、算法的几种表示方法是什么 ?. 算法的程序实现方法. 解析法. 穷举法. 在数组中查找数据. 算法的程序 实现方法. 对数据进行排序. 递归法. 用解析法解决问题. 教学目标: 1 、了解解析法 2 、学会用解析法分析问题、解决问题 3 、学会编写程序实现解析法. 什么是解析法. 如: 有一段路程 S (平路),小 A 来往行程的时间是 t ,求平均速度 v 。 v=S / ( t /2). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章  算法的程序实现

第三章 算法的程序实现

3.1 用解析法解决问题

Page 2: 第三章  算法的程序实现

1 、计算机解决问题的一般过程?

2 、计算机解决问题的核心是什么?

3 、算法的几种表示方法是什么 ?

一、知识回忆、引入新课

Page 3: 第三章  算法的程序实现

算法的程序实现方法

算法的程序实现方法

解析法

穷举法

对数据进行排序

在数组中查找数据

递归法

Page 4: 第三章  算法的程序实现

用解析法解决问题

教学目标:1 、了解解析法2 、学会用解析法分析问题、解决问题3 、学会编写程序实现解析法

Page 5: 第三章  算法的程序实现

解析法就是在分析具体问题的基础上,抽取出一个

数学模型,这个数学模型能用若干个解析表达式表示出来,解决得了这些表达式,问题也就得以解决。

如:如:有一段路程有一段路程 SS (平路),小(平路),小 AA 来往行程的时间是来往行程的时间是 tt ,,

求平均速度求平均速度 vv 。。

v=S / ( t /2)v=S / ( t /2)

什么是解析法

Page 6: 第三章  算法的程序实现

请注意观察,下面的“钻石”图案有什么特点?

钻石图案

思考:组成钻石图案的基本元素是?决定线段基本元素是?钻石中的“点”有什么特征?

Page 7: 第三章  算法的程序实现

钻石图案的特点

“ 钻石”图案是由点和线构成的 决定线段基本元素是点 图形四周的点位于一个圆周上

结论:求出各点的位置,绘制各点之间的线段,就可以绘出这个图形了。

Page 8: 第三章  算法的程序实现

问题分析:如何求出各点的位置呢?

x1=rcos ( θ ) y1

=rsin ( θ )

x2=rcos ( 2θ ) y

2=rsin ( 2θ )

其中, θ=360º/N ; r 为圆的半径

第N个点的坐标?

Page 9: 第三章  算法的程序实现

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

算法的伪代码表示如下:

注意:两层循环,第一层循环控制钻石   的顶点数目,第二层循环控制钻   石的线条数目.

Page 10: 第三章  算法的程序实现

回顾已学知识

变量命名 1、为增加程序的可读性,变量名最好取有意义的名称,建

议前面加上类型缩写。 

  如: sngRadius,sngAngle 等

Page 11: 第三章  算法的程序实现

三角函数中的参数应该是弧度数,如一个圆等分N份,圆的半径为R,第N个点的坐标是:

X n =R *sin(2*PI/N)

Yn =R *cos(2*PI/N)

Page 12: 第三章  算法的程序实现

窗体方法的应用 VB 的屏幕坐标和数学的坐标系不同,它的原点不在窗体中心,而

在窗体工作区的左上角,但可以通过窗体的 scale 方法更改:

窗体 .scale (左上角坐标)-(右下角坐标)如: frmdraw.Scale (-1.5, -1.5)-(1.5, 1.5)

VB 屏幕坐标原点

Page 13: 第三章  算法的程序实现

用 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

Page 14: 第三章  算法的程序实现

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 的坐标

Page 15: 第三章  算法的程序实现

实践题:   某超市规定,顾客购买同种商品 10 件以上(包括 10 件)可享受批

发价。请设计一个收款机程序,输入顾客所购商品的零售价、批发价、购买数量及付款数,程序能计算出顾客的应付款及需要找回的零钱,请用伪代码描述或流程图表示。  伪代码   IF 购买数量超过 10 件以上(包括 10 件) then

   应付款数 = 批发价 × 数量   ELSE

   应付款数 = 零售价 × 数量  找回零钱 = 顾客付款总额—应付款数