2020版算法与程序设计第四单元第1节 解析算法(20张PPT课件+学案)

文档属性

名称 2020版算法与程序设计第四单元第1节 解析算法(20张PPT课件+学案)
格式 zip
文件大小 5.8MB
资源类型 教案
版本资源 通用版
科目 通用技术
更新时间 2019-11-30 14:13:06

文档简介


第1节 解析算法
考试内容
考试要求
解析算法思想
c
解析算法程序实现
c
解析算法基本思想
解析算法是指用解析的方法找出表示问题的前提条件与所求结果之间的关系的数学表达式,并通过表达式的计算来实现问题的求解。
【典例1】 某停车场的收费标准是:3小时以内5元,超过3小时,每小时1.5元,不足一小时按一小时计算。解决这个问题最合适采用的算法是(  )
A.枚举算法 B.解析算法
C.查找算法 D.排序算法
解析 本题主要考查的是解析算法的基本思想。停车的时间是问题的前提条件,应付停车费用是所求的结果,两者根据收费标准可列出相应的公式,这种解题方法符合解析算法的基本思想。
答案 B
【典例2】 BMI指数是用体重(kg)数除以身高(米)的平方得出的数字,即体质指数(BMI)=体重(kg)÷身高^2(m),是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。BMI指数与胖瘦程度如下表所示:
BMI指数
胖瘦程度
BMI<18.5
体重过轻
18.5≤BMI≤23.9
体重正常
23.9体重过重
27肥胖
BMI>32
非常肥胖
小明编写程序判断胖瘦程度,程序运行时在文本框Text1输入体重(kg),在文本框Text2输入身高(cm),单击“判断”按钮Command1后在标签Label2上显示结果。程序运行如图所示。
(1)要改变标签Label1上“体重(kg)”的文字内容,应修改该对象的______属性。
(2)为实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim m As Single
 Dim h As Single
 Dim bmi As Single
 m = Val(Text1.Text)
 h = Val(Text2.Text)
 __________①__________
 If bmi < 18.5 Then
Label2.Caption = “体重过轻!”
 __________②__________
Label2.Caption = “体重正常!”
 ElseIf bmi <= 27 Then
Label2.Caption = “体重过重!”
 ElseIf bmi <= 32 Then
Label2.Caption = “肥胖!”
 Else
Label2.Caption = “非常肥胖!”
 End If
End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)在标签Label1上显示内容要更改,需要修改其Caption属性。(2)①根据题意BMI指数是用体重(kg)数除以身高(米)的平方得出的数字得出第一空答案为bmi = m / (h / 100) ^ 2。②结合题目中的BMI指数与胖瘦程度表格得出第二空答案为ElseIf bmi <= 23.9 Then。
答案 (1)Caption (2)①bmi = m / (h / 100) ^ 2 ②ElseIf bmi <= 23.9 Then
【典例3】 下列VB程序的功能是:在文本框Text1中输入十制数x,单击“转换”按钮,在文本框Text2上显示该十进制对应的十六进制数。程序运行界面如图所示。
(1)要使命令按钮Command1显示的文本改为“十进制转换为十六进制”,可在其属性窗口中将________属性的属性值修改为“十进制转换为十六进制”。
(2)在文本框Text1中输入79,在文本框Text2中输出的值是________。
(3)请在程序的划线处填写合适的代码。
 Private Sub Command1_Click()
 Dim n As Integer, r As Integer, s As String
 Const k=“0123456789ABCDEF”
 ________①________
s = “ ”
 Do While n>0
r=n mod 16∶n=n16b
s = ________②________
 Loop
 Text2.text=s
End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)按钮上显示的内容是按钮的Caption属性值。(2)十进制转换成十六进制:除以16取余数,余数倒序相排。(3)首先将Text1中的内容取出并转化成数值赋值给n,所以①处的答案是:n = Val(Text1.Text) 。在Do循环中,将n转换成十六进制数。r是n除以16得到的余数,如果r是10,对应的十六进制数是A,如果r是11,对应的十六进制数是B,……,即字符串k中的第r+1位字符。将余数拼接到字符串的前面,所以②处的答案是: Mid(k, r + 1, 1) + s。
答案 (1)Caption (2)4F (3)①n = Val(Text1.Text) ②Mid(k, r + 1, 1) + s
【典例4】 某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在 文本框Text1中输入连续多组编码,单击“翻译”按钮Commandl,结果显示在列表框List1中。程序运行界面如图所示。
(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句________(单选,填字母:A. Width=2018 / B.Text1.Width = 2018 / C. Width. Text1=2018)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, c As String, d As String
Dim n As Integer, b1 As Integer, b2 As Integer, v As Integer, i As Integer
s = Text1.Text: n = Len(s): i = 1
Do While i <= n
c = Mid(s, i, 2)
If c = “00” Then
d = “东”
ElseIf c = “01” Then
d = “南”
ElseIf c = “10” Then
d = “西”
Else
d = “北”
End If
b1 = Val(Mid(s, i + 2, 1))
b2 = Val(Mid(s, i + 3, 1))
v=____①____
List1.AddItem d + “ ” + Str(v)
②____
Loop
End Sub
(3)若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是________。
解析 (1)文本框Text1的Width属性值为2018,根据“对象名.属性名”=属性值,答案选B。(2)①变量d存储方向信息,变量b1、b2存储距离的二进制值,变量v存储距离的十进制值,为了实现二进制转换成十进制,表达式是b1*2+b2。②每组数据为4位,步长是4,故答案是i = i + 4(3)前两位“11”表示方向是北,后两位“11”为距离,转换成十进制数是3,因此,答案是北 3。
答案 (1)B (2)①b1*2+b2 ②i = i + 4
(3)北 3
【方法总结】 运用解析算法分析问题,寻找问题的各要素间的联系,并用数学表达式表示它们的关系。
1.某地区公共自行车收费信息如下:“60分钟内免费;60分钟以上至120分钟(含),收费1元;120分钟以上至180分钟(含),收费2元;租用超过180分钟(含)以上的时间,按每小时3元计费(不足一小时的按一小时计)”。现按要求编写VB程序,界面如图1所示,程序功能如下:在文本框Text1中输入租车时间,单击“计费”按钮Command1,在标签Label5中输出对应的租车费用。
图1
   图2       图3
(1)在应用程序界面设计时,为添加“计费”按钮,应使用图2所示的“控件工具箱”中的________(请填写相应编号),并在图3所示的“属性窗口”中,将________属性值设置为“计费”。
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()
 Dim zysj As Single, zyfy As Single ′zysj:租用时间,zyfy:租用费用
 ________①________
 If zysj <= 60 Then
zyfy = 0
 ElseIf zysj <= 120 Then
zyfy = 1
 ElseIf zysj <= 180 Then
zyfy = 2
 ElseIf zysj Mod 60 = 0 Then
zyfy = ________②______
 Else
zyfy = (Int((zysj - 180) / 60) + 1) * 3 + 2
 End If
 Label5.Caption = Str(zyfy)
End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)题图2中①是列表框,②是文本框,③是水平滚动条,④是按钮,⑤是驱动器列表框,所以答案为④。按钮上显示的内容是按钮的Caption属性值。(2)①将文本框Text1中的内容取出转换成数
值并赋值给zysj,所以答案是:zysj = Val(Text1.Text)。② ElseIf zysj Mod 60 = 0表示租用超过180分钟(含)以上,并且租用时间是整个小时,超过的时间=收费按每小时3元计算,因此,答案为zyfy = (zysj - 180) / 60 * 3 + 2。
答案 (1)④ Caption (2)①zysj = Val(Text1.Text) ②(zysj-180) / 60 * 3 +2
2.编写VB程序,实现如下功能:在文本框Text1中输入包含数字、字母的字符串,点击“统计”按钮Command1,统计该字符串中字母字符的个数,并在标签Label1中输出结果,界面如图a所示。
(1)在设计界面时,应使用图b所示“控件工具箱”中的 ________(填写响应编号)添加“统计”按钮。
(2)为实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim i As Integer, n As Integer, num As Integer,s As String,c As String
 s=Text1.Text:num=0
 n= ________①________
 i=1
 Do While i<=n
   ________②________
  If c>=“a” And c<=“z” Or c >=“A” And c<=“Z” Then
   ________③________
  End If
  i=i+1
 ________④________
 Label1.Caption=Str(num)
 End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)题图b中①是图片框,②是标签,③是文本框,④是按钮,所以答案为4。(2)本程序需要对字符串中的每个字符进行逐个判断,所以循环的次数和字符串的长度有关,所以得出①空答案为:Len(s) 。当i=1时取出字符串中的第1个字符,当i=2时取出字符串中的第2个字符……所以②空为取出第i个字符并存储在变量c中,所以答案为;c=Mid(s,i,1)。块IF语句判断是否是字母,如果是大写字母或小写字母,num累加1所以 ③空答案为num=num+1。分析程序结构得出④空答案为Loop。
答案 (1)4 (2)①Len(s) ②c=Mid(s,i,1)
③num=num+1 ④Loop
3.编写VB程序,实现如下功能:单击“启动”按钮Command1,在列表框List1内每隔2秒输出一个由30个大、小写字母组合成的字符串,运行界面如图所示,程序代码如下(字母A和字母a的ASCII码值分别为65、97)。
(1)该程序除窗体外使用了________(填数字)个对象。
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
 Timer1.Enabled = ______①______ ′Timer1控件的Timer事件是否有效
End Sub
Private Sub Timer1_Timer()
 Dim s As String, c As String
 Dim a As Integer, e As Integer, h As Integer
 Randomize
 s = “ ”
 For a = 1 To 30
e = Int(Rnd() * 52 + 1)
If e <= 26 Then
  h = e + 64
Else
  h =______②______       
End If
c = ______③______      
s = s + c
 Next a
 List1.AddItem s
End Sub
(3)为了减缓字符串的出现速度,可将Timer1的Interval属性值__________ (选填,填字母:A.增大/B.减小)。
解析 本题主要考查解析算法的基本思想及程序实现。(1)图中使用了1个窗体对象、1个标签对象、1个列表框对象、1个时钟对象、1个按钮对象,除了窗体还有4个对象。(注意:时钟对象不会在窗体中显示出来。)(2)①点击“启动”按钮,设置timer.Enabled属性为True让timer控件起作用。②在For循环中,随机产生一个在[1,52]之间的随机整数并赋值给e,如果e在[1,26]之间,表示产生的是大写字母,h表示产生的大写字母的ASCII码,否则产生的是小写字母,转换成相对应的ASCII码是:e + 70,所以第②空的答案是:e + 70。第③是将相对应的ASCII码转换成字符,故答案是:Chr(h)。(3)Timer的Interval属性值越大,时间间隔越大。
答案 (1)4 (2)①True ②e + 70 ③Chr(h) (3)A
基础巩固
1.现要求编写VB程序实现如下功能:在文本框Text1中输入正整数n(n为奇数),单击“生成”按钮,在文本框Text2中会显示一个有规律的对称数字串,形式为“1 3 …… n-2 n n-2 3 1”。例如n=9时,显示的数字串为“1 3 5 7 9 7 5 3 1”。
(1)根据代码可知,命令按钮“生成”的对象名是________。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Com1_Click()
 Dim n As Integer, i As Integer, s As String
 __________①________
 s = “ ”
 For i=1 to n
If i<=n2 +1 then
  s=s+Str(2*i-1)
Else
  s=s+ ______②______
End If
 Next i
________③________
End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)代码中第一行“Com1_Click”是事件驱动过程,“Com1”是对象名,“Click”是事件名。(2)①变量n是正整数,其值通过文本框Text1输入,答案是n=Val(Text1.Text) 。②在For循环中,前半部分数字串依次递增2,后半部分依次递减2,Else解决的是后半部分数据的计算,s为字符串数据类型,故答案是Str(2*(n-i)+1)。③最终的结果存储在变量s中,并通过Text2输出,故答案是Text2.Text=s。
答案 (1)Com1 (2)①n=Val(Text1.Text)
②Str(2*(n-i)+1) ③Text2.Text=s
2.小明用VB程序编写了一个密码生成器,单击“生成密码”按钮生成一个8位数的密码,该密码必须同时包含数字、大写字母和小写字母,并在文本框Text1中显示。程序界面如下图所示。
(1)在设计程序界面时,要将文本框Text1中的内容清空,应修改该文本框的 __________ 属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
 Const n = 8
 Dim s As String
 Dim a As Integer, i As Integer
 Dim x As Boolean, y As Boolean, z As Boolean
 x = False:y = False:z = False
 Randomize
 Do While ______①______
s = “ ”
For i = 1 To n
a = Int(Rnd() * 62) + 1
If a <= 10 Then
     x = True
     s = s + Chr(a + Asc(“0”) - 1)
ElseIf a <= 36 Then
     y = True
    s = s + Chr(a + Asc(“A”) - 11)
Else
    z = True
     ______②______
End If
Next i
Loop
Text1.Text =______③______
End Sub
解析 本题主要考查解析算法的基本思想及程序实现。(1)文本框里的内容是文本框Text属性的属性值。(2)①Do循环用来判断产生的密码是否符合要求,如果不符合要求,要继续重新生成,直到符合要求为止。故答案是:x = False Or y = False Or z = False。②在For循环中,a表示产生[1,62]之间的随机整数,如果a在[1,10]之间,表示产生一个数字字符,如果a在[11,36]之间,表示产生一个大写字符,若在[37,62]之间,表示产生的是小写字符,转换成相对应的小写字符为:Chr(a + Asc(“a”) - 37),再将产生的字符拼接在s中,故答案是:s=s+Chr(a + Asc(“a”) - 37)。③将产生的密码s显示在Text1中。
答案 (1)Text (2)①x = False Or y = False Or z = False或Not x Or Not y Or Not z ②s=s+Chr(a + Asc(“a”) - 37) ③s
能力提升
3.小李编写VB程序,实现如下功能:在文本框Text1中输入十六进制数,如A2.4,单击“转换”按钮Command1,在标签Label2输出该十六进制对应的十进制数,运行界面如图所示。
(1)为了实现上述功能,请在划线处填入合适的代码,使程序正常运行。
Private Sub Command1_Click()
 Dim i As Integer, n As Integer, m As Integer,y As Integer
 Dim x As String, s As Single,r As String
 x=Text1.Text:s=0
 ______①______
 For i=1 to n
If Mid(x,i,1)=“.” Then Exit For
 Next i
 m=i  ′小数点位置
 For i =1 to n
r=Mid(x,i,1)
If r>=“0” And r<=“9” Then y=Val(r)
If r>=“A” And r<=“F” Then y=____②____
If iIf i>m then s=s+y*16^(m-i) ′小数部分
 Next i
 Label2.Caption=“对应的十进制数为:”+Str(s)+“D”
End Sub
(2)在文本框Text1中输入A.8,则在文本框Text2中输出的结果是 ________。
解析 本题主要考查解析算法的基本思想及程序实现。(1)①获取字符串x的长度并赋值给n,故答案是n=Len(x)。②第一个For循环是寻找小数点的位置,第二个For循环是进制转换,在第二个If语句中,需把“A”-“F”的值转化成对应的数值“10”-“16”,故答案是Asc(r)-55或Asc(r)-Asc(“A”)+10。③把遍历取值r乘以相对应的权值并累加到s中。
(2)A.8=10×160+8×16-1=10.5,因此答案是10.5D。
答案 (1)①n=Len(x) ②Asc(r)-55或Asc(r)-Asc(“A”)+10 ③s*16+y或s+y*16^(m-i-1) (2)10.5D
4.某数字加密算法描述如下:将某位数字与其位置相加得到num,num除以11的余数即为编号,若余数为0编号为11,从密码表中找出与编号对应的加密字符完成加密。密码表如下:

编号
1
2
3
4
5
6
7
8
9
10
11
加密字符
V
i
s
u
a
l
B
A
S
I
C
小明按照上述方法,设计了一个数字加密的VB程序,功能如下:单击“加密”按钮Command1,程序依次将文本框Text1中每个数字进行加密,并将加密后的密文在文本框Text2中输出。下表显示了数字“2018”的加密过程:
数字
2
0
1
8
位置
1
2
3
4
编号
3
2
4
1
加密字符
s
i
u
V
程序运行效果如图所示。
(1)设计如图所示的程序界面,至少要使用________类(填数字)。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
  Dim s As String, s1 As String, s2 As String, num As Integer
  s = “VisualBASIC”
  s1 = Text1.Text
  s2=“ ”
  i = 1
  Do While ____①____
    num = Val(Mid(s1, i, 1)) + i
    num = num Mod 11
    If num = 0 Then num = 11
    s2 =____②____
    i = i + 1
  Loop
  Text2.Text = s2
End Sub
(3)若密文是“uAV”,则明文是________ 。
解析 (1)在图中,有窗体类、标签类、按钮类、文本框类4个类。
(2)①While后面跟循环条件,循环的次数和Text1中的内容有关,所以答案是:i<=len(s1)。②s2为密文, num用来计算编号,从密码表中找出与编号对应的加密字符,再拼接到字符串s中,故答案是:s2+Mid(s,num,1)。(3)若密文是“uAV”,则对应的编号是“481”,“4”是第1位,“4”对应的明文是“3”;“8”是第2位,“8”对应的明文是“6”;“1”是第3位,“1”对应的明文是“9”。
答案 (1)4 (2)①i<=len(s1) ②s2+Mid(s,num,1) (3)369或“369”
课件20张PPT。第1节 解析算法解析算法基本思想解析算法是指用解析的方法找出表示问题的前提条件与所求结果之间的关系的数学表达式,并通过表达式的计算来实现问题的求解。【典例1】 某停车场的收费标准是:3小时以内5元,超过3小时,每小时1.5元,不足一小时按一小时计算。解决这个问题最合适采用的算法是(  )
A.枚举算法 B.解析算法
C.查找算法 D.排序算法
解析 本题主要考查的是解析算法的基本思想。停车的时间是问题的前提条件,应付停车费用是所求的结果,两者根据收费标准可列出相应的公式,这种解题方法符合解析算法的基本思想。
答案 B【典例2】 BMI指数是用体重(kg)数除以身高(米)的平方得出的数字,即体质指数(BMI)=体重(kg)÷身高^2(m),是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。BMI指数与胖瘦程度如下表所示:小明编写程序判断胖瘦程度,程序运行时在文本框Text1输入体重(kg),在文本框Text2输入身高(cm),单击“判断”按钮Command1后在标签Label2上显示结果。程序运行如图所示。(1)要改变标签Label1上“体重(kg)”的文字内容,应修改该对象的______属性。
(2)为实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
 Dim m As Single
 Dim h As Single
 Dim bmi As Single
 m = Val(Text1.Text)
 h = Val(Text2.Text)
 __________①__________
 If bmi < 18.5 Then  Label2.Caption = “体重过轻!”
__________②__________
  Label2.Caption = “体重正常!”
ElseIf bmi <= 27 Then
  Label2.Caption = “体重过重!”
ElseIf bmi <= 32 Then
  Label2.Caption = “肥胖!”
Else
  Label2.Caption = “非常肥胖!”
End If
End Sub解析 本题主要考查解析算法的基本思想及程序实现。(1)在标签Label1上显示内容要更改,需要修改其Caption属性。(2)①根据题意BMI指数是用体重(kg)数除以身高(米)的平方得出的数字得出第一空答案为bmi = m / (h / 100) ^ 2。②结合题目中的BMI指数与胖瘦程度表格得出第二空答案为ElseIf bmi <= 23.9 Then。答案 (1)Caption (2)①bmi = m / (h / 100) ^ 2 ②ElseIf bmi <= 23.9 Then【典例3】 下列VB程序的功能是:在文本框Text1中输入十制数x,单击“转换”按钮,在文本框Text2上显示该十进制对应的十六进制数。程序运行界面如图所示。(1)要使命令按钮Command1显示的文本改为“十进制转换为十六进制”,可在其属性窗口中将________属性的属性值修改为“十进制转换为十六进制”。(2)在文本框Text1中输入79,在文本框Text2中输出的值是________。
(3)请在程序的划线处填写合适的代码。
 Private Sub Command1_Click()
 Dim n As Integer, r As Integer, s As String
 Const k=“0123456789ABCDEF”
 ________①________
s = “ ”
 Do While n>0 r=n mod 16∶n=n16b
s = ________②________
 Loop
  Text2.text=s
End Sub解析 本题主要考查解析算法的基本思想及程序实现。(1)按钮上显示的内容是按钮的Caption属性值。(2)十进制转换成十六进制:除以16取余数,余数倒序相排。(3)首先将Text1中的内容取出并转化成数值赋值给n,所以①处的答案是:n = Val(Text1.Text) 。在Do循环中,将n转换成十六进制数。r是n除以16得到的余数,如果r是10,对应的十六进制数是A,如果r是11,对应的十六进制数是B,……,即字符串k中的第r+1位字符。将余数拼接到字符串的前面,所以②处的答案是: Mid(k, r + 1, 1) + s。答案 (1)Caption (2)4F (3)①n = Val(Text1.Text) ②Mid(k, r + 1, 1) + s【典例4】 某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在 文本框Text1中输入连续多组编码,单击“翻译”按钮Commandl,结果显示在列表框List1中。程序运行界面如图所示。(1)要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句________(单选,填字母:A. Width=2018 / B.Text1.Width = 2018 / C. Width. Text1=2018)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。Private Sub Command1_Click()
Dim s As String, c As String, d As String
Dim n As Integer, b1 As Integer, b2 As Integer, v As Integer, i As Integer
s = Text1.Text: n = Len(s): i = 1
Do While i <= n
c = Mid(s, i, 2)
If c = “00” Then d = “东”
ElseIf c = “01” Then
d = “南”
ElseIf c = “10” Then
d = “西”
Else
d = “北”
End If
b1 = Val(Mid(s, i + 2, 1))
b2 = Val(Mid(s, i + 3, 1))
v=____①____List1.AddItem d + “ ” + Str(v)
____②____
Loop
End Sub
(3)若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是________。解析 (1)文本框Text1的Width属性值为2018,根据“对象名.属性名”=属性值,答案选B。(2)①变量d存储方向信息,变量b1、b2存储距离的二进制值,变量v存储距离的十进制值,为了实现二进制转换成十进制,表达式是b1*2+b2。②每组数据为4位,步长是4,故答案是i = i + 4(3)前两位“11”表示方向是北,后两位“11”为距离,转换成十进制数是3,因此,答案是北 3。答案 (1)B (2)①b1*2+b2 ②i = i + 4 (3)北 3【方法总结】 运用解析算法分析问题,寻找问题的各要素间的联系,并用数学表达式表示它们的关系。
同课章节目录