程序与递归-组合-抽象与构造.ppt
《程序与递归-组合-抽象与构造.ppt》由会员分享,可在线阅读,更多相关《程序与递归-组合-抽象与构造.ppt(56页珍藏版)》请在三一办公上搜索。
1、第6讲 程序与递归:组合-抽象与构造,-程序是实现系统复杂功能的一种重要手段-程序的本质是组合、抽象与构造-构造的基本手段是递归,一种表达相似性对象及动作的无限性构造的方法,程序与递归:组合-抽象与构造1.程序的作用和本质?,程序的作用和本质-计算系统与程序-程序:组合、抽象与构造,首先,设计并实现系统可以执行的基本动作(可实现的),例如“与”动作“或”动作“非”动作“异或”动作那么,复杂的动作呢?系统需要提供复杂的动作复杂的动作千变万化复杂的动作随使用者使用目的的不同而变化复杂的动作是通过对基本动作进行各种组合来实现的,1.程序的作用和本质1.1 怎样设计并实现一个计算系统?,如何设计实现一
2、个基本计算系统?,已知的基本事实是:“加减乘除运算都可转换为加法运算来实现”“加法运算又可以转换为逻辑运算来实现”“基本的逻辑运算与、或、非、异或等可通过门电路予以实现”则基本计算系统可以如下实现,指令:控制基本动作执行的命令,“与”动作“或”动作“非”动作,ANDOR NOT,系统,(A AND B)AND C)OR(NOT C),复杂动作,拆解开,X=A AND B X=X AND CY=NOT C X=X OR Y,程序:由基本动作指令构造的,若干指令的一个组合或一个执行序列,用以实现复杂动作,如何设计实现一个基本计算系统?,1.程序的作用和本质1.2 什么是程序?,指令:控制基本动作执
3、行的命令,“与”动作“或”动作“非”动作,ANDOR NOT,系统,(A AND B)AND C)OR(NOT C),复杂动作,程序执行机构,自动解释程序中的各种组合,并按次序调用指令(基本动作)予以执行,程序:由基本动作指令构造的,若干指令的一个组合或一个执行序列,用以实现复杂动作,如何设计实现一个基本的计算系统?,1.程序的作用和本质1.3 程序能否自动执行?,基本动作 对基本动作的 抽象与控制“与”动作 AND“或”动作 OR“非”动作 NOT,复杂动作=基本动作的各种方式的组合(Ai XOR Bi)XOR Ci(Ai XOR Bi)AND Ci)OR(Ai AND Bi),解释这种组合
4、,并按次序调用基本动作予以执行,程序执行机构,程序,指令,计算系统=基本动作+指令+程序执行机构指令=对可执行基本动作的抽象,即控制基本动作执行的命令程序=基本动作指令的一个组合或执行序列,用以实现复杂的动作程序执行机构=负责解释程序即解释指令之间组合,并按次序调用指令即调用基本动作执行的机构,基本动作,1.程序的作用和本质1.4 计算系统与程序?,基本动作 对基本动作的 抽象与控制“加”动作+“减”动作-“乘”动作 x“除”动作,复杂动作=基本动作的各种方式的组合(V1+V2)x(V3 V4)V5(V1(V2 x(V3+V4)-(V5 x V6),解释这种组合,并按次序调用基本动作予以执行,
5、程序,程序执行机构,指令,一种较高抽象层次的系统,抽象,抽象:将经常使用的、可由低层次系统实现的一些复杂动作,进行命名,以作为高层次系统的指令被使用,一种较低抽象层次的系统,1.程序的作用和本质1.5 程序:组合-抽象-构造?,程序构造示例(I)-运算组合式的表达-组合、抽象与构造-命名计算对象和构造中使用名字及计算中以计算对象替换名字,程序与递归:组合-抽象与构造2.程序构造示例(I),2.程序构造示例(I)2.1 运算组合式?,(100+205),由数值,到基本运算组合式,中缀表示法,用运算符(即前述的指令)将两个数值组合起来,运算符在中间,(+100 205),100,205,实际的数值
6、,前缀表示法,用运算符(即前述的指令)将两个数值组合起来,运算符在前面,将运算符表示的操作应用于后面的一组数值上,求出结果,(+100 205),(-200 50),(*200 5),(*20 5 4 2),(-20 5 4 2),(+20 5 4 2),由数值,到基本运算组合式,2.程序构造示例(I)2.1 运算组合式?,运算组合式的“嵌套”及其计算过程,(+100 205),(+(+60 40)(-305 100),(*(*3(+(*2 4)(+3 5)(+(-10 7)6),计算过程,(*(*3(+(*2 4)(+3 5)(+(-10 7)6),(*(*3(+8 8)(+3 6),(*(
7、*3 16)9),(*48 9),432,2.程序构造示例(I)2.2 如何构造运算组合式-组合,(define height 2),(+(+height 40)(-305 height),名字的定义:定义名字height与2关联,以后可以用height来表示2一种类型的名字:数值型的名字,(+(*50 height)(-100 height),名字的使用,命名计算对象和构造中使用名字及计算中以计算对象替换名字,2.程序构造示例(I)2.3 如何用名字简化运算组合式的构造?-抽象,(define pi 3.14159),(define radius 10),(*pi(*radius radiu
8、s),(define circumference(*2 pi radius),(*circmference 20),命名计算对象和构造中使用名字及计算中以计算对象替换名字,2.程序构造示例(I)2.3 如何用名字简化运算组合式的构造?-抽象,程序构造示例(II)-组合、抽象与构造-命名新运算符和构造中使用新运算符及执行中以过程替换新运算符-带有条件的运算组合式,程序与递归:组合-抽象与构造3.程序构造示例(II),(define(square x)(*x x),名字的定义:定义名字square为一个新的运算,即过程或称函数另一种类型的名字:运算符型的名字,名字的使用,新运算符,即过程名或函数名
9、,形式参数,使用时将被实际参数所替代,过程体,用于表示新运算符的具体计算规则,其为关于形式参数x的一种计算组合。,(square 3)(square 6),x2,命名新运算符和构造中使用新运算符及执行中以过程替换新运算符,3.程序构造示例(II)3.1 如何用名字简化运算组合式的构造?-抽象,名字的使用,(square 10)(square(+2 8)(square(square 3)(square(square(+2 5),(define(SumOfSquare x y)(+(square x)(square y),(SumOfSquare 3 4),(+(SumOfSquare 3 4)h
10、eight),x2+y2,命名新运算符和构造中使用新运算符及执行中以过程替换新运算符,3.程序构造示例(II)3.2 程序构造组合与抽象,(define(NewProc a)(SumOfSquare(+a 1)(*a 2),(NewProc 3),(NewProc(+3 1),(a+1)2+(a*2)2,命名新运算符和构造中使用新运算符及执行中以过程替换新运算符,3.程序构造示例(II)3.2 程序构造组合与抽象,(NewProc(+3 1)的两种计算过程示意,(NewProc(+3 1),(NewProc 4),(SumOfSquare(+4 1)(*4 2),(SumOfSquare 5
11、8),(+(Square 5)(Square 8),(+(*5 5)(*8 8),(+25 64),89,先求值,再代入,含名字的运算组合式的计算方法:求值、代入、计算,命名新运算符和构造中使用新运算符及执行中以过程替换新运算符,3.程序构造示例(II)3.3 构造程序的执行求值、代入与计算,(NewProc(+3 1)的两种计算过程示意,(NewProc(+3 1),(SumOfSquare(+(+3 1)1)(*(+3 1)2),(+(Square(+(+3 1)1)(Square(*(+3 1)2),89,(+(*(+(+3 1)1)(+(+3 1)1)(*(*(+3 1)2)(*(+3
12、 1)2),(+(*(+4 1)(+4 1)(*(*4 2)(*4 2),(+(*5 5)(*8 8),(+25 64),先代入,后求值,代入阶段,求值阶段,含名字的运算组合式的计算方法:代入、求值、计算,命名新运算符和构造中使用新运算符及执行中以过程替换新运算符,3.程序构造示例(II)3.3 构造程序的执行求值、代入与计算,(cond()().(),(define(abs x)(cond(x 0)x)(=x 0)0)(x 0)(-x),3.程序构造示例(II)3.4 有条件的运算如何表达?,带有条件的运算组合式,问题1:用前缀表示法书写下述表达式,10+4+(8-(12-(6+45),3*
13、(6-2)(12-7),问题2:请定义一个过程,求某一数值的立方,a3,3.程序构造示例(II)3.5 你能表达与构造程序吗?,(cond()().(),(define(f x)(cond(x 0)(-(Square x)x)(=x 0)0)(x 0)(-x(Square x),问题4:请定义一个过程,计算下列函数,3.程序构造示例(II)3.5 你能表达与构造程序吗?,递归的概念-为什么需要递归-递归能解决什么问题,程序与递归:组合-抽象与构造4.递归的概念,24,递归(Recursion),“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?(从前有座山,山里有座
14、庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?(从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?(从前)”,(*(*(*(*(*1 1)2)3)4)n),怎样在表达中既去掉省略号,而又能表达近乎无限的内容,4.递归的概念4.1 为什么需要递归?,25,递归的典型视觉形式-自相似性事物的无限重复性构造,4.递归的概念4.2 什么情况需要递归?,26,递归的典型视觉形式-自相似性事物的无限重复性构造,4.递归的概念4.2 什么情况需要递归?,27,4.递归的概念4.3 如何表达延续不断却相似或重复的事物或过程?,数学中的递推式,一个数列的第n项an与该数列的其
15、他一项或多项之间存在某种对应关系,被表达为一种公式,称为递推式,等差数列递推公式a0=5an=an-1+3 当n=1时,等比数列递推公式a0=5an=an-1 20 当n=1时,第1项(或前K项)的值是已知的递推基础;由第n项或前n项计算第n+1项递推规则/递推步骤;由前向后,可依次计算每一项,等差数列的产生a0=5a1=a0+3=8a2=a1+3=11a3=a2+3=14a4=a3+3=17,28,数学中的数学归纳法,数学归纳法是一种用于证明与自然数有关的命题正确性的证明方法,该方法能用有限的步骤解决无穷对象的论证问题。由归纳基础和归纳步骤构成:假定对一切正整数n,有一个命题P(n),若以下
16、证明成立,则P(n)为真。(1)归纳基础:证明P(1)为真;(2)归纳步骤:证明对任意的i,若P(i)为真,则P(i+1)也为真。,证明:(1)归纳基础:当n=1时,等式成立即1=1;(2)归纳步骤:设对任意k,P(k)成立,即1+3+5+(2K-1)=K2.则 P(K+1)=1+3+5+(2K-1)+(2(K+1)-1)=K2+2K+1=(K+1)2,则当P(k)成立时P(K+1)也成立,根据数学归纳法该命题得证。证毕。,求证命题P(n)“从1开始连续n个奇数之和是n的平方”即公式:1+3+5+(2n-1)=n2成立。,4.递归的概念4.3 如何表达延续不断却相似或重复的事物或过程?,什么是
17、递归?,递归的思想源于数学的递推式和数学归纳法。递归是一种表达相似性对象及动作的无限性构造的方法。递归是一种关于抽象的表达方法-用递归定义无限的相似事物递归是一种算法或程序的构造技术-自身调用自身,高阶调用低阶,构造无限的计算步骤递归是一种典型的计算过程-由后向前代入,再由前向后计算递归递归基础:定义、构造和计算的起点,直接给出;递归步骤:由前n项或第n项定义第n+1项;由低阶f(k)且kn,来构造高阶f(n+1)-执行:由后向前代入,直至代入到递归基础,再由递归基础向后计算直至计算出最终结果;,4.递归的概念4.4 什么是递归?,原始递归-原始递归:复合(组合)与构造,程序与递归:组合-抽象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 递归 组合 抽象 构造
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5296441.html