浙教版 信息技术 选修1 5.1  解析、枚举算法及其程序实现课件(共24张ppt)

资源下载
  1. 二一教育资源

浙教版 信息技术 选修1 5.1  解析、枚举算法及其程序实现课件(共24张ppt)

资源简介

课件24张PPT。3.9 解析、枚举算法及其程序实现考点1考点2考点1解析算法的程序实现
解析算法是指用解析的方法找出问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。例如计算1+2+3+…+100的和,可通过求和公式s= n(n+1)得到。
解析算法的程序实现关键是建立正确的数学模型(得出正确的数学计算表达式),并保证计算过程描述的正确性(用正确合理的VB变量、表达式来表示已经得出的数学计算式)。考点1考点2例1研究表明,人的身高与遗传有很大关系,其中成年男性的身高预测公式为身高(cm)=(父亲身高+母亲身高)*1.08/2,女性的身高预测公式为身高(cm)=(父亲身高*0.923+母亲身高)/2,具体程序运行界面和算法流程图如下图所示:考点1考点2考点1考点2运行程序时,在文本框Text1中输入父亲身高,在文本框Text2中输入母亲身高,在文本框Text3中输入性别,单击“预测”按钮Command1,在标签Label4中显示预测身高,程序代码如下:
Private Sub Command1_Click()
h1=Val(Text1.Text)
h2=Val(Text2.Text)
s=Text3.Text
If s=″男″ Then
  h= ① ?
Else
  h=(h1*0.923+h2)/2
End If
Label4.Caption=Text3.Text+″孩子的身高是:″+ ② +″cm″?
End Sub考点1考点2(1)该事件处理过程采用的算法是        。(填解析算法/枚举算法)?
(2)在程序中①和②划线处,填入适当的语句或表达式,把程序补充完整。
程序中①划线处应填入           。?
程序中②划线处应填入           。?
答案:(1)解析算法 (2)(h1+h2)*1.08/2 Str(h)考点1考点2解析:本题要求完善使用解析算法解决问题的程序。解析算法在程序实现时的关键点是能得出“正确的数学模型”和写出“正确的VB计算表达式”。从题目功能描述可知子女身高与父母身高之间存在着明确的关系,事件处理过程正是利用解析算法解决此问题的程序,属于解析算法的实现。
根据题意和流程图,①处为计算男孩子的身高,把计算表达式转换为VB语法的表达式填入即可。②处显示孩子的身高,即h的值。
解决此类问题可根据任务描述和流程图,正确提炼其中的数学表达式并将其转化成VB表达式。考点1考点2考点2枚举算法的程序实现
枚举算法也称穷举算法,其基本思想是根据问题本身的性质,一一列举该问题所有可能的情况,并根据题目的条件逐一作出判断,从中找出符合条件的解。在列举的过程中,既不能遗漏,也不能重复。比如,要求100以内所有的素数,就可以采用枚举算法。考点1考点2例2鸡兔同笼问题。一群鸡和兔关在一个笼子里,其中共有头30个,脚60只,问鸡和兔各几只?现用VB程序求解,程序如下:
Private Sub Command1_Click()
for i=1 to 30
  j= ① ?
  if  ②  then?
   list1.additem ″鸡:″+str(i)+″只,兔″+str(j)+″只。″
  end if
next i
End Sub考点1考点2(1)该事件处理过程采用的算法是        。(填:解析算法/枚举算法)?
(2)在程序中①和②划线处,填入适当的语句或表达式,把程序补充完整。
程序中①划线处应填入             。?
程序中②划线处应填入             。?
答案:(1)枚举算法 (2)30-i  i*2+j*4=60
解析:由语句list1.additem ″鸡:″+str(i)+″只,兔″+str(j)+″只。″可知,变量i表示鸡的数量,j表示兔的数量,所以①处应填入30-i。②处判断脚的数量是否等于60,即②处的条件表达式i*2+j*4=60,只要满足两个条件,即把数据展示在列表框中。由上分析可知,循环变量i表示鸡的数量,其值由1到30,逐一条件“i*2+j*4=60”进行比对,若符合的进行展示,由此特征可判断该程序是典型的枚举算法程序。1.计算三角形面积的算法如下:
①输入三角形三边长a,b,c
②如果a,b,c能组成三角形,则执行③④⑤,否则转到⑥
③计算半周长p=(a+b+c)/2
④计算三角形面积s=Sqr(p*(p-a)*(p-b)*(p-c))
⑤输出面积s,转到⑦
⑥输出不能组成三角形
⑦结束
上述算法属于(  )
A.排序算法  B.解析算法
C.枚举算法  D.查找算法
答案:B 
解析:解析算法的基本思想是用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过数学表达式的计算来实现问题的求解。本题为解析算法。2.以下问题属于用解析算法解决问题的是(  )
A.已知完全平方数的定义,找出1~100范围内的所有完全平方数
B.利用一元二次方程求根公式求解方程的根
C.求二元一次方程2x+y=10所有正整数的解
D.根据犯罪嫌疑人的体貌特征,从公安部档案库中筛选出可疑人信息
答案:B 
解析:其他三项属于枚举法。3.用解析法计算匀加速直线运动位移和速度的VB程序代码如下:
Private Sub Command1_click()
Dim s as Single,v0 as Single,a as Single,t as Single,vt as Single
v0= ① 'v0存放初速度?
a=Val(Text2.Text)
t=Val(Text3.Text)
vt=v0+a*t
s= ② ?
Text4.Text=Str(s)
Text5.Text=Str(vt)
End Sub
程序界面如下图所示:已知即时速度的计算公式是v0+at,位移的计算公式为v0t+ at2,则:
程序中①划线处应填入             。?
程序中②划线处应填入             。?
答案:val(Text1.Text) v0*t+a*t^2/24.某商场举行“满就送”活动,活动规则如下:
购物满100送10元券
购物满200送30元券
购物满300送60元券
购物满400送100元券
购物满500送150元券
根据上述规则,使用VB设计程序如下:Private Sub Command1_click()
Dim m as Single,x as Integer
m=Val(Text1.Text)
If  ①  Then?
  x=150
Else If m>=400 Then
  x=100
Else If m>=300 Then
  x=60
Else If m>=200 Then
  x=30
Else If m>=100 Then
  x=10
End If
Label1.Caption= ② ' 显示优惠券值?
End Sub解决此问题所采用的算法是        (填:解析法/枚举法)?
程序中①划线处应填入         。?
程序中②划线处应填入         。?
答案:解析法 m>=500 str(x)5.有如下VB程序段:
Sum=0
For k=1 To 100
a=Int(Rnd*50)
If a Mod 2=0 Then Sum=Sum + a
Next k
该程序段运行后,变量Sum中存储的是(  )
A.50个随机整数中偶数的和
B.50个随机整数中奇数的和
C.100个随机整数中偶数的和
D.100个随机整数中奇数的和
答案:C6.水仙花数是指其各位数字的3次幂之和等于它自身的数,打印100—999中的水仙花数的算法如下:
Private Sub command1_click()
for i=100 to 999
  a=i100 '得到i的百位数字
  b=i10 mod 10 '得到i的十位数字
  c= ① ?
  if i= ②  then print i?
next i
End Sub
程序中①划线处应填入              。?
程序中②划线处应填入              。?
答案:i mod 10或 i-a*100-b*10 a^3+b^3+c^3
解析:1处用于得到i的个位数字。7.现有1元币3张、5元币4张,用这些钱币中的一张或若干张可以得到多少种不同的资金数量。现用VB程序求解,程序如下:
Private Sub Command1_click()
List1.Clear
s=0
For one=0 To 3
  For five=0 To 4
    m= ① ?
    If m> 0 Then
     s= ② ?
     List1.AddItem ″一元币取″+Str(one)+″张,5元币取″+Str(five)+″张资金量为:″+Str(m)+″元。″    End If
  Next
Next
List1.AddItem ″共有″ + Str(s) + ″种组合!″
End Sub
(1)本程序主要采用的算法是       (填:枚举算法/解析算法)。?
(2)在程序中①和②划线处,填入适当的语句或表达式,把程序补充完整。
程序中①划线处应填入        。?
程序中②划线处应填入        。?
答案:(1)枚举算法 (2)one+five*5 s+1解析:从语句List1.AddItem ″一元币取″ + Str(one) + ″张,5元币取″ + Str(five) + ″张资金量为:″ + Str(m) + ″元。″可以看出变量m存放的是某种组合的资金量。从语句List1.AddItem ″共有″ + Str(s) + ″种组合!″可以看出变量s存放的是组合数量。8.用蒙特卡罗法求π的近似值。下列程序是使用随机函数RND,根据x2+y2≤1判断落点是否在圆内来求π的近似值。其中,总共投点n次,统计落点在单位圆内的点数为s,则4s/n的值即为所求的π值。请完善程序:
Private Sub Command1_click( )
dim i as long,n as long,s as long,x as double,y as double,r as double
n=val(text1.text)
i=1
s=0
randomize
do while ①     ?
x=rnd( ) : y=rnd( )
r=②     ?
if r<=1 then  ③     ?
end if
i=i+1
loop
label1.caption=④       '显示π的值?
End Sub
在使用随机函数RND前一般先用randomize,它的作用是对随机数函数进行初始化处理。RND函数的取值范围是⑤      ,要随机产生一个[1,10]之间的整数,其表达式为⑥      。?
答案:①i<=n ②x^2+y^2 ③s=s+1 ④str(4*s/n) ⑤[0,1) 
⑥int(rnd*10+1)或int(rnd*10)+1

展开更多......

收起↑

资源预览