算法与程序设计基础.ppt

上传人:牧羊曲112 文档编号:5810502 上传时间:2023-08-22 格式:PPT 页数:110 大小:1.19MB
返回 下载 相关 举报
算法与程序设计基础.ppt_第1页
第1页 / 共110页
算法与程序设计基础.ppt_第2页
第2页 / 共110页
算法与程序设计基础.ppt_第3页
第3页 / 共110页
算法与程序设计基础.ppt_第4页
第4页 / 共110页
算法与程序设计基础.ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《算法与程序设计基础.ppt》由会员分享,可在线阅读,更多相关《算法与程序设计基础.ppt(110页珍藏版)》请在三一办公上搜索。

1、大学计算机,大学计算机,第1章 引论,第2章 计算原理,第3章 问题求解,第4章 基本软件系统:操作系统,第5章 算法与程序设计基础,第9章 网络与信息安全,第6章 科技文章/文稿电子化制作、编排与发布,附录 计算机应用,课程内容?,第7章 信息获取、处理、交换与发布,第8章 信息管理(数据库系统),第5章 算法与程序设计基础,5.1 程序设计过程与程序开发环境 程序设计过程 编写源代码编译链接发布运行 程序开发环境编辑器、调试器、编译器、链接器、函数库、工程管理器,语言与程序的关系,本章目的,语言发展,程序设计过程,本章内容?,5.2 程序设计语言 程序的基本构成要素常量和变量、表达式、语句

2、、函数 计算机程序的常用控制语句的结构顺序结构分支结构:If-Then,If-Then-Else-Endif,Select case-case-end select循环结构:For-Next,Do While-Loop,Do-Loop While,Do Until Loop,Do-Loop Until,程序构成要素,常量和变量,表达式,语句和函数,程序结构,顺序结构,分支结构,循环结构,本章内容?,第5章 算法与程序设计基础,5.3 算法描述与程序设计 搜索算法及其程序设计 排序算法及其程序设计 递归算法及其程序设计,面向对象的概念,Windows的面向对象机制,本章内容?,第5章 算法与程序

3、设计基础,5.4 事件驱动与可视化编程 对象、消息、事件、消息驱动/事件驱动 Windows的对象、消息机制、事件驱动编程,面向对象的概念,Windows的面向对象机制,本章内容?,第5章 算法与程序设计基础,5.5 利用Visual Basic进行可视化编程Visual Basic编程环境Visual Basic典型控件Visual Basic编程过程建立用户界面对象、为对象设置属性、为对象的事件编写代码利用Visual Basic进行程序设计 排序程序实例 汉诺塔程序实例,Vasic Basic及其编程环境,Vasic Basic语言,Vasic Basic编制程序,本章内容?,第5章 算

4、法与程序设计基础,计算机为什么能做任何事情?科学计算、排版印刷、辅助设计,软件是一组程序,程序是有序的指令集,安装了不同程序才能完成不同的工作,为什么计算机能够做任何事情?,程序设计过程,多段程序可分开编辑与编译,将多段程序连接在一起,编写源程序阶段,编译阶段,发布运行阶段,编辑源程序,计算机程序的设计过程?,链接阶段,程序设计环境,程序设计环境:编辑、编译、链接、调试、运行一体化平台,编辑器,源程序,编译器,目标程序,链接器,可执行程序,调试器,工程管理器,函数库,管理,管理,管理,计算机程序的开发环境?,1、编辑器:程序开发环境中输入源程序的工具。2、调试器:帮助模拟程序执行步骤、查看结果

5、是否相符。3、编译器:负责将源程序翻译为目标机器能够识别的程序(二进制代码的目标程序)4、链接器:将一个或多个目标程序与库函数链接起来,生成一个可执行文件。5、函数库:由开发环境提供的二进制代码库。6、工程管理器:对开发应用程序的所有文件提供组织和管理能力。,计算机程序的基本构成要素,如何编写计算机程序程序的构成要素?,自然语言层次,计算机语言层次,计算机程序的基本构成要素,Dim K As IntegerK=0For I=1 to 100 Step 2 K=K+INext IPrint K,常量,表达式,语句,函数,如何编写计算机程序程序的构成要素?,变量,求100以内的奇数和?,常量:在程

6、序运行过程中始终不变的量,Dim Grade As IntegerGrade=Val(InputBox(“请输入成绩“)Select Case GradeCase Is=90 Print 优秀Case 80 To 90 Print 良好Case 70 To 80 Print 中等Case 60 To 70 Print 及格Case Else Print 不及格End Select,数值形式直接书写字符串形式外加引号,编程序时已经知道量值的量,如何编写计算机程序程序的构成要素?,常量和变量:数据在程序中的书写方式,如何编写计算机程序程序的构成要素?,Dim Grade As IntegerCon

7、st A=90,B=80,C=70,D=60Grade=Val(InputBox(请输入成绩)Select Case GradeCase Is=A Print 优秀Case B To A Print 良好Case C To B Print 中等Case D To C Print 及格Case Else Print 不及格End Select,常量也可以在程序中用符号表示,称为符号常量,常量和变量:数据在程序中的书写方式,常量和变量:数据在程序中的书写方式,变量:在程序运行过程中可发生改变的量,Dim Grade As IntegerGrade=InputBox(“请输入成绩)Select Ca

8、se GradeCase Is=90 Print 优秀Case 80 To 90 Print 良好Case 70 to 80 Print 中等Case 60 to 70 Print 及格Case Else Print 不及格End Select,如何编写计算机程序程序的构成要素?,如何编写计算机程序程序的构成要素?,符号化常量和变量的区别,符号常量主要是为了方便程序的设计和修改,在编译成目标程序后,将被替代为具体的常量值;变量用于保存程序的输入、中间计算结果、程序执行结果等;变量在目标程序中用若干存储单元来表示。变量名为相应存储单元的地址,变量值即相应地址中存储的内容。,张三,李四,王五,变量

9、/符号化常量的类型,房间有:总统套房、单人间、双人间、三人间、四人间.,变量也有类型之分:整数型、实数型、字符型、逻辑型,如何编写计算机程序程序的构成要素?,字符串类型与数值类型的区别,假设我们要存储 77,字符串是以ASCII码方式存储,整数是以二进制方式存储,再如我们要存储 255,如何编写计算机程序程序的构成要素?,字符串是以ASCII码方式存储,整数是以二进制方式存储,Visual Basic的基本数据类型,如何编写计算机程序程序的构成要素?,Visual Basic中变量及常量的声明,Dim变量名 As 数据类型=变量值,变量名 As 数据类型=变量值 Const 符号化常量名 As

10、 数据类型=常量值 例:Dim StudNumber As IntegerDim Grade As Integer=70Dim Height,Width Dim x,y As Integer Dim x As Integer,y As Integer Const PCODE As String=P Const LENGTH=10,如何编写计算机程序使用Visual Basic?,声明语法:,Visual Basic中数组的声明,如何编写计算机程序使用Visual Basic?,Dim 数组名(下界To上界,下界To上界,)As数据类型 例:Dim Student(100)As String D

11、im Grade(1 To 10)As Single Dim MM(10,10)As Integer,声明语法:,变量、符号化常量的命名规则1、必须以字符或汉字开头,可包括字符、汉字、数字以及下划线等字符2、变量名最长可达255个字符 3、默认不区分大小写,Visual Basic变量作用域,如何编写计算机程序使用Visual Basic?,变量的作用域是指变量在什么范围内有效。全局变量:变量在整个程序中有效。窗体变量:变量在窗体中有效。局部变量:变量在某个程序段中有效。,变量的赋值,100,80,200,40,如何编写计算机程序程序的构成要素?,表达式,用各种运算符把不同的常量和变量连接在一

12、起就构成了表达式,算术运算符,关系/比较运算符,逻辑/布尔运算符,+,*,/,=,=,And,Or,Not,运算符,如何编写计算机程序程序的构成要素?,表达式的例子:考虑其结果是什么类型,(x1=A1)&(B2 y2),A1+(B2 x1+76)*3,(B2+yy4)/L3 xx3,算术表达式,关系表达式,Grade 90,Grade=70,表达式可以叠加构造,逻辑运算符可以连接若干关系表达式,如何编写计算机程序程序的构成要素?,This=That,This That,表达式的运算结果可以赋给变量,M=XY+50,M=(XY)AND(XY),K=(AB)OR(BC)AND(AB)OR(BC),

13、K=K+(5*K),如何编写计算机程序程序的构成要素?,表达式的计算示例1,M=XY+50,如果:,如果:,False,True,如何编写计算机程序程序的构成要素?,表达式的计算示例2,M=(XY)AND(XY),M=(X=Y)OR(XY),M的值与X,Y取何值有无关系呢?,False,M的值与X,Y取何值有无关系呢?,True,如何编写计算机程序程序的构成要素?,表达式的计算示例3,K=(AB)OR(BC)AND(AB)OR(BC),True,(AB)OR(BC)AND(AB)OR(BC),如何编写计算机程序程序的构成要素?,表达式的计算示例4,K=K+(5*K),30,18,如果:,如果:

14、,如何编写计算机程序程序的构成要素?,如何编写计算机程序使用Visual Basic?,Visual Basic运算符,广义的运算不仅包括上述三种运算,而且包括对其它数据类型的处理,例如对字符串的。,如何编写计算机程序使用Visual Basic?,Visual Basic字符串运算符,字符串运算符有:+功能是字符串连接。例如:“ABCD”+“EFGHI”结果为:ABCDEFGHI“VB”&“程序设计教程”结果为:VB程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:+(连接运算):两个操作数均应为字符串类型;&(连接运算):两个操作数既可为字符型也可为数值型

15、,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。,Dim Grade,StudNumber As integerDim G5,G6,G7,G8,G9 As integerStudNumber=Val(Inputbox(“请输入学生人数”)G5=0 G6=0G7=0G8=0G9=0For I=1 To StudNumber Grade=Val(Inputbox(“请输入成绩”)Select Case Grade Case Is=90 G9=G9+1 Print“该同学分数在90100分数段内!”Case 80 to 89 G8=G8+1 Print“该同学分数在8089分数段内!

16、”Case 70 to 79 G7=G7+1 Print“该同学分数在7079分数段内!”Case 60 to 69 G6=G6+1 Print“该同学分数在6069分数段内!”Case Else G5=G5+1 Print“该同学分数在60分以下分数段内!”End SelectNext I,赋值语句,控制语句,输入输出语句,给变量赋值,控制程序执行的顺序,向计算机输入或将计算结果输出,程序的主体是由语句组成的,语句决定了如何对数据进行处理,如何控制程序执行路径。,有三种类型语句,如何编写计算机程序程序的构成要素?,语句-赋值语句,用等号连接变量与表达式的语句,等号左边是某个变量,右边是一个表

17、达式或者另外一个变量或常量,M=5,M=X,M=X+5,M=M+5,如何编写计算机程序程序的构成要素?,语句-输入输出语句,如何编写计算机程序程序的构成要素?,Grade=InputBox(“请输入成绩”),Print“及格”,Print 100,Print Grade,人机接口,向计算机输入数据,或计算机输出结果,函数,函数是已编制好并实现了特定功能的程序段,我们可直接像表达式或变量一样使用它。,数学运算函数数据转换函数字符串运算函数输入输出函数文件操作函数其他函数,如何编写计算机程序程序的构成要素?,函数,标准函数,自定义函数,(系统提供),(用户自己定义),例:,C=STR(VAL(A)

18、-VAL(B),标准函数,函数的四个组成组成部分:函数名、参数、返回值和函数体等四部分构成。,函数,如何编写计算机程序程序的构成要素?,形式参数(形参)与实际参数(实参):定义函数时,所使用的参数称为形式参数;调用函数时,需将实际参数代入形式参数。,最终的程序通常是由一个或多函数构成的,其中有一个特殊的函数,它是整个程序执行的入口,称为主函数。,Function 函数名(参数表)As type 语句段End Function,Sub 过程名(参数表)语句段End Sub,如何编写计算机程序使用Visual Basic?,VisualBASIC中函数的定义语法,两种定义语法:过程与函数,区别:(

19、1)前者不能有返回值,后者可以有返回值(2)前者调用时,实参表不用括号,后者需要,如何编写计算机程序使用Visual Basic?,Sub Main()定义主函数 Dim x As Integer Dim y As Integer Dim z As Integer x=Val(InputBox(“请输入被加数”)调用系统函数InputBox和Val y=Val(InputBox(“请输入加数”)调用系统函数InputBox和Val z=Sum(x,y)调用用户自定义函数Sum进行求和 Print“求和结果为”&z调用系统函数打印求和结果End SubFunction Sum(m As Inte

20、ger,n as Integer)As Integer定义求和函数 Sum=m+n求和并返回结果End Function,VisualBASIC中函数实例,计算机程序的常用控制结构,程序执行顺序的表达有三种结构形式,顺序结构,分支结构,循环结构,可用程序流程图来表示程序的控制结构。,如何编写计算机程序程序的控制结构?,流程图的基本构成形式/符号,矩形框表示一组顺序执行的语句,菱形框表示判断语句,决定下一步程序的走向,圆形框表示程序的起始和结束,带箭头的线段表示程序的走向,如何编写计算机程序程序的控制结构?,程序结构(1):顺序结构,G5=1 G6=2G7=3G8=4G9=5G9=G9+G8G9

21、=G9+G7G9=G9+G6G9=G9+G5,例如:实现 5+4+3+2+1的傻瓜程序,能否实现所要求的功能呢?我们可以模拟计算机执行一 下,1,2,3,4,5,9,12,14,15,如何编写计算机程序程序的控制结构?,程序结构(2):分支结构(1),15,IF 条件 THEN 语句,例如:,如何编写计算机程序程序的控制结构?,程序结构(2):分支结构(1),IF 条件 THEN 语句,例如:,18,如何编写计算机程序程序的控制结构?,程序结构(2):分支结构(2),是,否,语句序列,If 条件 Then 语句序列 End If,例如:,If D1D2 Then D1=D1-5End IfD1

22、=D1+10,如何编写计算机程序程序的控制结构?,注意:如果Then后只有一条语句可省略End If,程序结构(2):分支结构(3),If 条件 Then(条件为真时运行的)语句序列1 Else(条件为假时运行的)语句序列2 End If,如何编写计算机程序程序的控制结构?,程序结构(2):分支结构的例子,如何编写计算机程序程序的控制结构?,Dim Grade As IntegerGrade=Val(InputBox(“请输入”)If Grade=60 Then Print“该同学及格了!”Else Print“该同学不及格!”End If,课堂练习:铁路托运行李收费,如何编写计算机程序程序的

23、控制结构?,输入行李重量x,y=1.5*x,y=1.5*20+3.0*(x-20),是,否,输出y,Dim X As Double,Y As DoubleX=Val(InputBox(“请输入行李重量”)IF X20 THEN Y=1.5*20+3.0*(X-20)ELSE Y=1.5*XENDIFPRINT Y,如何编写计算机程序程序的控制结构?,课堂练习:铁路托运行李收费,Dim x,y As Doublex=InputBox(“请输入x的值”)If x0 then y=x*x+2Else If x0 Then y=x+2 Else y=0 End IfEndifPrint y,如何编写计

24、算机程序程序的控制结构?,程序结构(3):多分支结构,Select Case 分支条件表达式 Case 结果表达式列表1 语句序列1 Case 结果表达式列表2 语句序列2.Case Else 语句序列nEnd Select,如何编写计算机程序程序的控制结构?,分支条件表达式:任何数值或字符串表达式。结果表达式列表:为“表达式”,“表达式 To 表达式”,“Is 关系运算符 表达式”中的一个或多个组成的逗号列表。,程序结构(3):多分支结构的例子,Dim Grade As integerGrade=InputBox(“请输入成绩”)Select Case Grade Case IS=90 Pr

25、int“该同学分数在90100分数段内!”Case 80 To 89 Print“该同学分数在8089分数段内!”Case 70 To 79 Print“该同学分数在7079分数段内!”Case 60 To 69 Print“该同学分数在6069分数段内!”Case Else Print“该同学分数在60分以下分数段内!”End Select,如何编写计算机程序程序的控制结构?,程序结构(4):循环结构,例如:实现 10+8+6+4+2的程序,Sum=0Sum=Sum+2Sum=Sum+4Sum=Sum+6Sum=Sum+8Sum=Sum+10,例如:实现 2 至 100 的偶数相加的程序?,

26、Sum=0For I=2 to 100 Step 2 Sum=Sum+INext I,如何编写计算机程序程序的控制结构?,程序结构(4):循环结构,Sum=0For I=2 to 100 Step 2 Sum=Sum+INext I,如何编写计算机程序程序的控制结构?,Sum=0I=2Do while I=100 Sum=Sum+I I=I+2Loop,程序结构(4):循环结构,Do while 条件 语句序列Loop,如何编写计算机程序程序的控制结构?,程序结构(4):循环结构,如何编写计算机程序程序的控制结构?,程序结构(4):另外一种循环结构,如何编写计算机程序程序的控制结构?,Do 语

27、句序列Loop Until 条件,求100!,如何编写计算机程序程序的控制结构练习?,Dim i,KK=1For i=1 To 100K=i*KNext iPrint K,求,Dim i,KK=5For i=2 To 100K=K+1/iNext iPrint K,体重指数=体重(Kg)除 身高(m)的平方 正常体重:体重指数=18-25 超重:体重指数=25-30 轻度肥胖:体重指数 30 中度肥胖:体重指数 35 重度肥胖:体重指数 40,课堂练习-判断胖瘦?,如何编写计算机程序程序的控制结构练习?,算法与程序设计,如何设计程序进行问题求解?,如何对学生成绩排序?,如何找到最高的成绩?,学

28、生成绩输入到什么地方?,张三60,李四80,王五85,侯六78,陈七89,程序=数据结构+算法?,程序=数据结构+算法,常用的算法有:搜索算法、排序算法、递归算法等。数据结构是计算机存储、组织数据的方式。算法和数据结是密不可分的。在设计算法时必须考虑用什么样的数据结构。,常见的数据结构:数组、栈、树、图等等。,在进行程序设计之前,首先要对相关的算法进行分析和设计。算法是求解问题的步骤。,数组,数组是一组具有相同类型并连续存放的数据的集合。用一个统一的名字(数组名)代表这组数据,并用下标来区分数组中的每个元素;下标代表元素在数组中的位置。,数组名,0,1,2,3,4,5,6,7,Student,

29、用Student(i)访问数据A中的第i个元素!例如Student(0)的值为“Adam”,Student(5)的值为“Fred”,下标,算法与程序设计,8,9,搜索算法,搜索算法,逐个检查数据结构中的每个元素,直到找到所要找的。,遍历搜索策略,二分查找策略,将要查找的数据集从中间位置一分为二,判断要查找的数据属于其中的哪一个集合;然后对新的集合再一分为二进行判断,这样逐步缩小范围直到找到为止。,搜索问题,日常生活中,我们往往需要从大量的数据中寻找需要的信息,我们称之为搜索(Search)。,搜索算法,算法实例,电话簿查找问题,Name,Phone,数据结构分析:用数组存储姓名及电话列表,例如

30、我们的手机上一般都有一个电话簿,由于联系人众多,我们无法记住每个联系人的电话,因此在我们打电话时一般都要事先根据联系人的姓名找到其电话号码,再进行拨号。这里根据联系人姓名找电话号码就是一个搜索问题。,如何设计相应的算法程序?,搜索算法,遍历搜索算法,二分搜索算法,搜索算法,注意:二分搜索要求对查找的数据事先进行排序,Name数组是按姓名排序的,low,high,mid,0 1 2 3 4 5 6 7 8 9,第1次查找,第2次查找,二分搜索算法运行实例,搜索算法,假设要找“Hunk”的电话号码,按字母顺序排序的数组,注意:二分查找算法找到“Hunk”只需要查找2次,而遍历算法则用了8次,可见二

31、分搜索比遍历算法效率高,但二分查找需要事先对数据进行排序,而遍历搜索没有此要求。,排序算法,排序算法,依次对数组中相邻的两个数据进行比较,将大的放前,小的放后,经过一轮比较移位后,数组中最小的元素就会被找到,并被放到数组的尾部;然后再对剩余数组中剩余的数据按上述过程进行比较移位,经过N-1(数组长度减1)次后,数组中的数据就被排序了。,冒泡排序策略,排序问题,排序(Sort)是生活中又一类常见的问题,排序实质上就是把一组数据按照递增或递减的顺序排列起来。,排序算法,算法实例,在我国的中小学中,广泛地存在着利用成绩排名来激励学生进行学习竞争的一种教育方式,家长也比较关心孩子的成绩以及在班内或学校

32、中的排名,这就需要对成绩由大到小进行排序。,成绩排名问题,数据结构分析:用数组存储姓名及成绩,如何设计相应的算法及程序?,Name,Grade,i=N?,j=N-i?,i=0,j=0,N=8初始化成绩及姓名数组,GradejGradej+1?,i=i+1,交换Grade中第j个元素和第j+1个元素的位置,否,是,是,否,j=j+1,否,是,交换Name中第j个元素和第j+1个元素的位置,开始,结束,排序算法,算法实例,如何输入学生姓名和成绩?,Dim sName(10)As String 保存学生姓名的数组Dim Grade(10)As Double 保存学生成绩的数组Dim Temp As

33、Integer 用于交换成绩的临时变量Dim Temp1 As String 用于交换姓名的临时变量For i=0 To 9 sName(i)=InputBox(输入第&(i+1)&个学生的姓名)Grade(i)=Val(InputBox(输入学生&sName(i)&的成绩)Next,算法与程序设计,打印排序前的姓名和成绩,Print*排序前*Print 姓名 成绩Print-For i=0 To 9 Print sName(i)&Grade(i)Next,进行冒泡排序,算法与程序设计,For i=0 To 8 For J=0 To 8-i If Grade(J)Grade(J+1)Then

34、Temp=Grade(J+1)Grade(J+1)=Grade(J)Grade(J)=Temp Temp1=sName(J+1)sName(J+1)=sName(J)sName(J)=Temp1 End If Next JNext i,打印排序后的学生姓名和成绩,算法与程序设计,PrintPrint*排序后*Print 名次 姓名 成绩Print-For i=0 To 9 Print 第&(i+1)&名&sName(i)&Grade(i)Next,.,0 1 2 3 4 5 6 7 8 9,.,排序算法,冒泡排序算法运行实例,递归算法,递归算法,递归(Recursion)即子程序对自身进行调用

35、。递归算法能够把一个大型复杂的问题层层转化为一个本质与原问题相同而规模较小的问题来求解,而且只需少量的程序代码就可描述出解题过程所需要的多次重复计算,因此递归算法在程序设计中被广泛应用。,递归算法,算法实例求N!,N1?,返回结果1,X=Fact(N-1),否,是,返回结果N*X,开始,结束,输入N,求自然数N的阶乘是一个典型递归算法求解问题。因为N!=N*(N-1)!(当N1时),即问题求N的阶乘可等价于N乘以N-1的阶乘,而求N-1的阶乘本质与求N的阶乘相同,因此该问题是递归定义的,可以使用递归算法求解。,N=4返回4!=24,Fact(3),Fact(2),Fact(1),Fact(4)

36、,N=3,N=2,N=1,返回3!=6,返回2!=2,返回1!=1,递归算法,算法实例求N!递归算法的执行过程,递归算法,算法实例汉诺塔问题,汉诺塔(也称梵天塔)是印度的一个古老的传说。据说开天辟地之神勃拉玛在一个庙里留下了三根金刚石柱,并在第一根上从上到下依次串着由小到大不同的64片中空的圆型金盘,神要庙里的僧人把这64片金盘也按由小到大的顺序搬到第三根上,每次只能搬一个,可利用中间的一根石柱作为中转,并且要求在搬运的过程中,不论在哪个石柱上,大的金盘都不能放在小的金盘上面。神说,当所有的金盘都从事先穿好的那根石柱上移到另外一根石柱上时,世界就将在一声霹雳中消灭了。,由这个故事衍生出了著名的

37、汉诺塔游戏玩具,该玩具是一个简化的汉诺塔,通常少于或等于八个圆盘,如右图所示。,递归算法,算法实例汉诺塔算法,X柱上的盘子数大于1?,显示 XY,Hanoi(N-1,X,Z,Y)即调用自身将X柱上部的N-1个盘子经过Y柱移到Z柱上,否,是,显示 XY,Hanoi(N-1,Z,Y,X)即调用自身将Z柱的N-1个盘子经过X柱移到Y柱上,开始,结束,输入X、Y、Z柱且X柱上有N个盘子,要想将给定的N个盘子从A柱移到B柱(即原始问题),我们都需要把上面的N-1个盘子移动到中转柱C上(子问题1),再将A上的唯一盘子(最大的盘子)移动到目标柱B上;然后再把临时存储在C上的N-1个盘子移动到目标柱B上(子问

38、题2);需要注意的是当N为1(边界条件)时,则只需简单地将其移动到目标柱B上即可。我们发现,原问题可分解为子问题1和子问题2,而子问题1和子问题2与原始问题本质上是等价的,即问题的本身是递归定义的。,Hanoi 1,C,B,A,AB,Hanoi 1,A,C,B,Hanoi 2,A,B,C,AC,CB,算法实例汉诺塔算法的执行过程,如何编写计算机程序面向对象编程?,图形用户界面程序?,事件驱动程序的几个概念,对象,消息,事件,事件驱动,以对象为思考问题的出发点,(1)涉及到哪个对象的功能,便由哪个对象自己去处理;(2)不同对象之间通过消息或事件发生联系;(3)对象依据接收到的消息或事件进行工作,

39、如何编写计算机程序面向对象编程?,什么是对象?,张三,李四,王五,有一个名字以区别于其他对象 有一组状态用来描述它的某些特征/属性 有一组操作,每一个操作决定对象的一种功能或行为/功能,如何编写计算机程序面向对象编程?,如何编写计算机程序面向对象编程?,张三,李四,王五,对象的特点,对象本身是可以独立动作的,可以处理自己的一些事情而不需其他干预,例如每个人都可以长高、行动、说话,对象可为其他对象服务,或接受其他对象服务,例如当有人问其身高时,他可回答身高;问其体重时,他可回答体重;当他想问其他人事情时,她可向其他对象请求服务,对象只有在接收到需服务的请求时,才去服务,如何编写计算机程序面向对象

40、编程?,张三,王五,消息,请问.,您问的解答是,对象之间传递的内容,指示、打听、请求.,计算机中,消息是具有特定含义的数据,如何编写计算机程序面向对象编程?,事件,能够激活对象功能的动作。当发生这种动作后将给所涉及对象发送一个消息,对象便可执行相应的功能,有人敲门,有电话,如何编写计算机程序面向对象编程?,事件驱动,对某一对象发生什么事件,该对象便找到相应的处理该事件的程序去处理这一事件,有电话,张三.电话铃响(.)张三.有人敲门()张三.其他.,如何编写计算机程序面向对象编程?,我们要使对象具体化;要为具体对象编制事件驱动程序,如何编写计算机程序面向对象编程?,Windows的对象,Wind

41、ows系统一般提供了许多的对象,并且使这些对象能够自己运行并接受事件。但对事件的处理则留给编程者自己去安排;我们只需对某对象的需要处理的事件编制好程序,该对象便能为我们服务。,例如:按钮对象的框架,Private Sub Command1_Click()End Sub,如何编写计算机程序面向对象编程?,(1)窗口对象:像容器一样,可在其中放置若干个控件对象,(2)控件对象:可与用户进行交互的,如可输入/输出的对象,(3)对象工具栏:系统提供的编程可用控件对象类别的集合,(4)对象类别:每一对象类别事先都由系统编好了许多程序,并提供了一些可由用户调整的内容。由对象类别可产生一个个控件对象,放入窗

42、口对象中,(5)对象属性窗口:每一对象的属性集合;有些属性值可由编程者修改。,(7)属性值:同一对象类的不同对象由于属性值不同而异彩分呈,(6)属性名称:同一类对象都有的属性性质,(8)程序窗口:每一对象的事件及其事件驱动程序,(9)对象名称:同一对象类的不同对象有不同的名称,(10)事件名称:提供给编程者使用的每一对象的可处理事件,(11)事件驱动程序对象处理事件的程序。由于该程序不同使得该对象有别于同类的其他对象,如何编写计算机程序面向对象编程?,Windows程序中消息的来源,如何编写计算机程序面向对象编程?,用户产生的事件或其他应用程序发出的消息,依据应用程序队列和消息确定向哪个应用程

43、序发送,依据消息和对象控制序列找到对应该消息的对象程序执行之,1,3,4,2,5,6,7,如何编写计算机程序面向对象编程?,学习Visual Basic的目的,进一步理解程序的基本构成及程序的编制与执行过程,体会事件驱动程序的基本编程思想,如何编写计算机程序使用Visual Basic?,Visual BASIC的编程环境,Code窗口,Form窗口,Properties窗口,ToolBox窗口,Project窗口,如何编写计算机程序使用Visual Basic?,Visual BASIC 的典型控件,控件对象,编程者可在程序中读取或设置某些属性值:,控件对象名.属性名=某一值某一变量名=控件

44、对象名.属性名,如何编写计算机程序使用Visual Basic?,(使用控件时的控件名),(控件的表面文字),是一个文本编辑区域,可在该区域输入,编辑和显示正文内容。(一)常用属性Text属性:在文本框中显示的正文内容存放在Text属性中。当程序运行时,用户通过键盘输入正文内容,保存在Text属性中。(二)常用事件Change事件:当改变文本框的Text属性时会引发该事件。当用输入一个字符,就会触发一次Change事件。(三)常用方法 文本框最有用的方法是:SetFocus,使用形式:对象.SetFocus 功能:是把光标移到指定的文本框对象中。,如何编写计算机程序使用Visual Basic

45、?,Visual BASIC典型控件:文本框TextBox,Visual BASIC典型控件:命令按钮CommandButton,如何编写计算机程序使用Visual Basic?,用于使用户执行一个动作(一)常用属性(1)Caption:标题属性命令按钮显示的内容,可在某字母前加“&“设置快捷键。例如:&Ok,显示 Ok(二)事件 单击事件Click,用于显示文本(输出)信息,不能作为输入信息的界面。(一)常用属性Caption属性用来改变Label控件中显示的文本。Caption属性允许文本的长度最多为1024字节。缺省情况下,当文本超过控件宽度时,文本会自动换行,而当文本超过控件高度时,超

46、出部分将被裁剪掉。,如何编写计算机程序使用Visual Basic?,Visual BASIC典型控件:标签Label,VB开发程序的过程,建立用户界面的对象,为对象设置属性,把程序代码加到对象的事件中去,保存、编译运行程序,如何编写计算机程序使用Visual Basic?,如何实现一个简单的加法程序?,编程第1步:建立用户界面的对象,如何编写计算机程序使用Visual Basic?,从控件窗口中选取控件,在窗体上绘制相应的控件对象,编程第2步:为对象设置属性,如何编写计算机程序使用Visual Basic?,点击某对象,在属性窗口中设置该对象的相关属性,编程第3步:把程序代码加到对象的事件中

47、去,如何编写计算机程序使用Visual Basic?,在按钮上点击右键,打开代码窗体,然后编写相应的事件驱动程序,用到的两个函数,将字符串转换为数值的函数,Val(String),例如:Val(“1234”),Val(v1.Text),将数值转换为字符串的函数,Str(Data),例如:Str(1234),Str(258),如何编写计算机程序使用Visual Basic?,程序运行的界面,如何编写计算机程序使用Visual Basic?,(1)程序设计过程与程序开发环境(2)程序的构成要素和三种结构常量与变量、运算符、表达式、语句和函数顺序结构、分支结构和循环结构(3)算法描述及其程序设计(4)对象、消息、事件和事件驱动程序,本章小结,本章基本知识点,一个过程用计算机语言编制和运行程序的过程一个环境程序开发环境两个常识程序的五种基本构成要素与三种基本控制结构三类算法搜索算法、排序算法、递归算法一种思想面向对象思想及事件驱动机制两个技能阅读简单程序片段的技能和编制简单程序片段的技能一个应用应用Visual Basic编制简单程序片段进行实验的应用,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号