分享
分享赚钱 收藏 举报 版权申诉 / 39

类型第四单元 算法的程序实现.ppt

  • 上传人:涵涵文库
  • 文档编号:5308348
  • 上传时间:2019-02-20
  • 格式:PPT
  • 页数:39
  • 大小:2.36MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第四单元 算法的程序实现.ppt
    资源描述:

    1、第四单元 算法的程序实现,第2节 枚举、解析算法及其程序实现,B.解析算法及其程序实现,1解析算法 (1)解析:用数学公式描述客观事物间的数量关系。 (2)解析算法:用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。 【例】计算半径为R的圆的面积S,可通过公式SR2得到。 用解析算法解决问题一般都能直接写出表示问题的数学表达式,注意掌握如何将数学表达式转换为VB表达式。 2解析算法的程序实现 用解析算法的难点在于找到所求结果和前提条件之间的数学关系。用VB编写解析算法程序时,必须注意计算过程中描述的正确性。特别注意将数学表达式转换为VB表达式时

    2、书写的格式。,【例1】 储蓄顾问设计。设计一个VB程序,专门回答储户如下的问题:“M元钱需要存多少年,才能得到至少K元本息?”(为简单起见,算法中暂不考虑利息税问题)。 假定银行公布的储蓄规则:(1)存期以年为单位,存款以元为单位;(2)不论存期的长短,年利率均为2.8%;(3)不计复利。 例如,下面是储户和计算机程序的几次问答:,算法分析: 根据该银行的储蓄规则,一笔数量为M元的存款,Y年后到期的本息为K元。 满足公式:MY(M0.028)K,因此可以推导出Y (注:这里x表示“大于等于x的最小整数”,例如3.24,55),根据上述分析,并结合流程图,请在划线处填入合适代码。 Private

    3、 Sub Command1_Click()Dim M As Single, K As Single, x As Single, Y As IntegerM _K Val(Text2.Text)x (K M) / (0.028 * M)If x Int(x) ThenY xElseY _End IfText3.Text _ End Sub Private Sub Text1_Click()Text1.Text ” ”: Text2.Text ” ”: Text3.Text ” ” End Sub,【例1解题】 M值来自文本框Text1的数值,因此处答案为Val(Text1.Text);根据条件当

    4、“xInt(x)”时,及x非整数,Y取值为大于x的最小整数,故处答案为Int(x)1或Int(x1);处是将计算结果赋值给文本框Text3,答案为Str(Y)。 【答案1】 _ _ _,Val(Text1.Text),Int(x) 1,Str(Y),【例2】 计算n个电阻并联后的总电阻值,已知总电阻R和各个并联电阻之间的关系符合表达式 ,现设计一个程序,实现如下功能:在文本框Text1中依次输入各个电阻的电阻值的同时,在列表框List1中依次显示各电阻值,单击“计算”按钮Command1,计算总电阻,并在标签Label2中显示结果。 程序流程图如图a所示:,图a,rs:累加器,参与并联的各电阻

    5、值的倒数将逐个地累加到这个累加器中。 r:存储从键盘输入的电阻值。 程序设计界面和运行界面分别如图b和图c所示。根据上述分析,并结合流程图,请在划线处填入合适代码。 Dim r As Single, rs As Single Private Sub Form_Load(),图b,图c,rs 0Text1.Text ” End Sub Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii 13 Then 键入一个回车(回车的ASCII编码值是13)r _If r 0 Then 输入的是一个有效的电阻List1.AddItem Str

    6、(r)rs rs 1 / r 有效电阻值的倒数累加到rsEnd IfText1.Text ”End If End Sub Private Sub Command1_Click() Command1实现总电阻值的计算If _ Then,Label2.Caption ”无连接”ElseLabel2.Caption ”总电阻值为” Str(1 / rs)End If End Sub Private Sub Command2_Click() Command2实现标签Label2、列表框List1等数据的清空Label2.Caption _List1.Clearrs 0 End Sub,【例2解题】 r

    7、的值来自文本框Text1的数值,因此处答案为Val(Text1.Text);当有效电阻值为0时,即rs 0,表示无连接电阻;标签清空的赋值语句为Label2.Caption ”。 【答案2】 _,rs 0,”,Val(Text1.Text),【例3】 2015.10浙江改编某数据加密方法描述如下: (1)以字节为单位进行加密处理; (2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数; (3)分别将上述两个4位二进制数转换为十进制数; (4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下: 单

    8、击“加密”按钮Command1,程序依次将文本框Textl中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表显示了字符串中一个字符的加密过程:,程序运行效果如图所示。实现上述功能的VB程序如下: (1)请在划线处填入合适代码。 Private Sub Command1_Click()Dim n As Integer, s As String, i As Integer, ss As String,Dim a As Integer 存储加密前字符的ASCII码Dim b1 As Integer, b2 As Integer 分别

    9、存储分割、转换后的两个十进制数s Text1.Text_For i 1 To na Asc(Mid(s, i, 1)b1 a 16 _ss ss Code2Char(b1) Code2Char(b2)Next iText2.Text ss End Sub 十进制值转换为加密字符的函数 Function Code2Char(c As Integer) As StringDim s As Strings ”IlikeCHNpostcard”,Code2Char _ End Function(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是_ 。,【例3

    10、解题】 本题属于难题,主要查考学生对解析算法、自定义函数及综合分析算法的阅读分析能力。该程序的主思路为:将文本框Text1中的每个字符的ASCII码值进行换算,转换为两个加密字符,并在文本框Text2中输出。 第(1)题,在For循环体中,通过语句“a Asc(Mid(s, i, 1)”实现读取文本框Text1中的每个字符的ASCII码的十进制数值a,通过变量b1及b2的赋值运算,实现数值a的分割、换算,转换为两个加密字符Code2Char(b1)和Code2Char(b2)。最后依次将加密字符累加到变量ss中,并在文本框Text2中输出加密结果。由于循环变量i的终值n在程序中没有被赋过值,因

    11、此处的答案为nLen(s)或nLen(Text1.Text);在数值a的分割、换算过程中,语句“b1 a 16”实现将前4位二进制转换为十进制数,则处代码应实现将后4位二进制转换为十进制数,故处答案为b2 a Mod 16;自定义函数Code2Char的功能是“将十进制值转换为加密字符”,主程序中b1、b2的值传递至参数c。处代码实现一个十进制值(取值范围为015)依次对应着16个加密字符,加密字符的位置为1到16(即取值范围为116),二者之间的关系为:加密字符的位置相应的十进制数位置1,故处的答案为Mid(s,c1,1)。,第(2)题,由于“密码表”中同时存在加密字符“I”和“i”,因此将

    12、值为0对应的加密字符“I”改成“i”后,加密字符“i”对应两个值0,2。因此,解密时具有不确定性,密文将无法实现正确解密。 【答案3】 (1)_ (2)_ _,nLen(s)或nLen(Text1.Text),b2 a Mod 16,Mid(s,c1,1),修改后加密字符“i”对应两个值0,2,解密时具有不确定性(或类似描述),【例4】 2016.4浙江选考某数据压缩方法描述如下: 1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示; 2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0; 3)原始数据中,某数相邻有重复,压缩数据用3个数表示:第1个为0

    13、,第2个为重复数的个数,第3个为该数本身; 根据上述压缩方法,对应的解压缩方法示例如图a所示。,小明编写了一个解压送VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)中,压缩数据的个数存储在变量n中,压缩数据显示在文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。 (1)如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是_。,(2)实现上述功能的VB程序如下。请在划线处填入合适代码。 Dim a(1 To 100)

    14、 As Integer 存储压缩数据,最大处理个数为100 Dim b(1 To 1000) As Integer 存储解压缩数据,最大处理个数为1000 Dim n As Integer 存储压缩数据的个数 Private Sub Form_Load()压缩数据由上述压缩方法生成本过程用于读取压缩数据并存储在数组a,压缩数据个数存储在变量n中代码略 End Sub Private Sub Command1_Click()Dim pa As Integer 存储压缩数组当前处理位置Dim pb As Integer 存储解压缩数组当前处理位置Dim firstdata As Integer,

    15、count As Integer, i As Integerpa 1: pb 1,Do While pa 0 Then 示例1情况处理b(pb) firstdatapa pa 1: pb pb 1Elsecount a(pa 1)If count 0 Then 示例2情况处理b(pb) 0pa _: pb pb 1Else 示例3情况处理For i 1 To count_Next ipa pa 3:pb pb countEnd IfEnd If,LoopText2.Text Str(b(1)For i 2 To _Text2.Text Text2.Text ”,” Str(b(i)Next i

    16、 End Sub,【例4解题】 本题属于难题,主要考查学生对程序的综合分析能力。 第(1)题属于容易题,根据压缩方法描述及图a示例对压缩数据进行分组为23,0,21,66,0,0,77,0,5,0,表示的含义为1个23,21个66,1个0,1个77,5个0,因此解压缩数据的个数是1+21+1+1+5=29个。 第(2)题,根据压缩方法,对于压缩数据,有如下三种情况: 第一种情况:第1个数据不是0,则不需要解压缩。2525 第二种情况:第1个数据如果等于0,第2个数据也等于0,解压结果为0。0,025 第三种情况:第1个数据如果等于0,第2个数据不等于0,则解压结果为多个重复数据。0,7,787

    17、8,78,78,78,78,78,78 Then b(pb) = firstdata pa = pa + 1: pb = pb + 1,(1)示例1情况处理: 下标初值:pa = 1, pb = 1 执行语句及对应数组的变化: firstdata = a(pa) If firstdata 0 Then b(pb) = firstdatapa pa 1: pb pb 1 ,(2)示例2情况处理: 下标初值:pa2,pb2 执行语句及对应数组的变化: count a(pa 1) If count 0 Then b(pb) 0 pa _:pbpb1,第一个数据为0(即a(pa)a(2)0),并且第二

    18、个数据也为0(即count a(pa 1)a(3)0),b(pb)b(2)0,然后下标pa加2和pb加1,因此下划线处的代码为pa pa 2。 (3)示例3情况处理: 下标初值:pa4,pb3 执行语句及对应数组的变化: For i 1 To count _ Next i pa pa 3:pb pb count,第一个数据为0(即a(pa)a(4)0),第二个数据为7(即a(pa1)a(5)7),需要对第三个数据78(即a(pa2)a(6)78)重复7次,变量 i从1到7循环7次,数组b中下标pb从起始位置开始依次向右移动6次,数组元素中的赋值与a(pa2)值相同,因此下划线处的代码为b(pb

    19、i1)a(pa2)。数组b元素赋值结束后,下标pa向右移动3位(从第4个位置移动到第7个位置),下标pb向右移动7位(从第3个位置移动到第10个位置)。 执行下段语句实现将存储在数组b中的解压数据赋值给文本框Text2,由示例数据可知下标pb停留在第10个位置,而数组b中共有9个数据,故最后一个数组元素的下标为pb1,因此下划线处的代码为pb1。,Text2.Text Str(b(1)For i 2 To _Text2.Text Text2.Text ”,” Str(b(i)Next i 【答案4】 (1)_(2)_,29,pa pa 2,b(pb i 1)a(pa 2),pb 1,【例5】

    20、用VB编写一个字符串分行程序,功能如下:单击“分行”按钮Command1,将文本框Text1中的英文文本在列表框List1中分行显示(分行时单词不得跨行,每行字符尽可能多但不超过40个),并在标签Label1中输出总行数,运行效果如图所示。分行算法如下: (1)将文本框中的字符串保存到变量s中; (2)当s中字符个数超过40时,循环执行下列、步,否则跳转到(3): 如果第41个字符不是英文字母,则分行位置p40;否则,向左逐个查找,直至找到第一个非英文字母,将其位置作为分行位置p; 截取s的前p个字符,作为新增行显示在列表框List1中,同时总行数加1; 将s中未分行部分重新赋值给变量s。 (

    21、3)将s作为新增行显示在列表框List1中,同时总行数加1。,实现上述功能的VB程序如下,请在划线处填入合适代码。 Private Sub Command1_Click()Dim s As String, c As StringDim r As Integer, total As Integer, p As Integertotal 0s _Do While Len(s) 40,r 41c Mid(s, r, 1)If Not (c ”a” And c ”A” And c ”Z”) Thenp 40Else从第41个字符开始向左找到第1个非英文字母,并将其位置值赋给p Loopp rEnd I

    22、fList1.AddItem Mid(s, 1, p),total total 1s _LoopList1.AddItem stotal total 1Label1.Caption ”共” Str(total) ”行” End Sub,【例5解题】 本题属于难题,主要考查学生对程序的综合分析能力。第题属于容易题,根据题意“将文本框中的字符串保存到变量s中”可知处答案为Text1.Text;程序段(1)处对应的循环语句的功能是逐个读取的字符,并判断该字符是否为非英文字母,变量r实现字符串中字符的读取,故处答案为r 1;语句“List1.AddItem Mid(s, 1, p)”实现“截取s的前p

    23、个字符”,再根据题意“将s中未分行部分重新赋值给变量s”可推算出未分行部分应从第“p1”位置开始,字符个数为“Len(s) p”个,故处答案为Mid(s, p 1, Len(s) p)。 【答案5】 _,Text1.Text,r 1,Mid(s, p 1, Len(s) p),【例6】 2017.4浙江学考奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值的VB程序,功能如下:在文本框Text1中输入1255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2

    24、中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。,(1)在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的_属性。 (2)实现上述功能的VB程序如下,请在划线处填入合适代码。 Private Sub Command1_Click()Dim a As Integer, s As StringDim n As Integer, t As Integer, v As Integern Val(Text1.Text)t 0s ”Do While n 0a n Mod 2n n 2t _s Str(a) sLoopv t Mod 2,Text2.Te

    25、xt sLabel3.Caption ”校验位值:” _ End Sub (3)运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是_。,【例6解题】 本题属于稍难题,主要考查学生对程序的综合分析能力。 第(1)题为容易题,考查控件的属性判断,由文本框不难得出更改的属性为Text; 第(2)题由题意可知程序要处理2件事:一是统计二进制数据的数位中“1”的个数,通过余数累加实现,故处答案为ta;二是判断统计个数的奇偶性,程序段中语句“v t Mod 2”实现该功能,当“1”的个数为奇数时,v1,当“1”的个数为偶数时,v0,与题意“若个数为奇数,则校验位值为0,否则校验位值为1”相反,可通过表达式“1v”实现数值取反。故处答案为Str(1v)(注:本题最终目的是数据取反,答案有多种)。 第(3)题,22转换为二进制数为10100,“1”的个数为偶数,其校验位值是0。 【答案6】 (1)_(2)_(3)_,Text,t a,Str(1v),0,谢谢!,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第四单元 算法的程序实现.ppt
    链接地址:https://www.docduoduo.com/p-5308348.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开