重要的概念(术语)

上传人:飞*** 文档编号:52249074 上传时间:2018-08-19 格式:PPT 页数:55 大小:147.50KB
返回 下载 相关 举报
重要的概念(术语)_第1页
第1页 / 共55页
重要的概念(术语)_第2页
第2页 / 共55页
重要的概念(术语)_第3页
第3页 / 共55页
重要的概念(术语)_第4页
第4页 / 共55页
重要的概念(术语)_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《重要的概念(术语)》由会员分享,可在线阅读,更多相关《重要的概念(术语)(55页珍藏版)》请在金锄头文库上搜索。

1、重要的概念(术语)n过程 procedure、函数functionn全局变量、局部变量n形式参数、实际参数n值参、变参n值参替换、变参替换n过程(函数)调用n过程语句的执行、函数的执行Begintemp:=x; x:=y; y:=temp; End;Var temp:integer; Procedure swap(var x,y:integer); 过程首部说明部分语句部分过程分程序Begint:=1.0;for i:=1 to n do t:=t*i;fact:=t; End;Var i:integer; t:real; Function fact(n:integer):real; 函数首部

2、说明部分语句部分函数体Program callprocedure(input,output);VarProcedure p;Var Begin z:=x+y+z; write( z=,z:5); End;Procedure q;Beginz:=x+y+z; write( z=,z:5); End; Beginx:=2; y:=3; p; p; p;writeln;writeln;q; q; q; writeln; End. z=23215 z=23215 z=23215z= 5 z= 10 z= 15x,y,z:integer;全局变量z:integer;局部变量变量的初始值n局部变量的初始值

3、是不确定的;n全程变量的初始值是确定的;n全程变量和局部变量在一个过程执行 时都起作用,均可以参加运算和操作 ;在过程执行前后,只有全程变量参 加运算。局部变量不存在。Program example1(input,output);Var a,b,c:integer;Procedure swap(var x,y:integer); 过程定义Var temp:integer;Begin temp:=x; x:=y; y:=temp; End; Beginwrite(input three integer numbers: ); readln(a,b,c);if a1求N!的递归函数Function

4、 f(n:integer):integer; Beginif (n1) then f:=n*f(n-1)else f:=1; End;Program test(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.调用函数f(4)Program test(input,output);Var r:real;Function f(n:integer):integer;Begini

5、f (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)Program test(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)第二

6、次执行函数f 形参n的值:3 调用f(2) 计算并返回3*f(2)Program test(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)第二次执行函数f 形参n的值:3 调用f(2) 计算并返回3*f(2)第三次执行函数f 形参n的值:2 调用f(1) 计算并返回2*f(1)Program tes

7、t(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)第二次执行函数f 形参n的值:3 调用f(2) 计算并返回3*f(2)第三次执行函数f 形参n的值:2 调用f(1) 计算并返回2*f(1)第四次执行函数f 形参n的值:1 直接返回值1 返回调用f(1)的地方Program test(input,o

8、utput);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)第二次执行函数f 形参n的值:3 调用f(2) 计算并返回3*f(2)第三次执行函数f 形参n的值:2 得到f(1)的值,计算并返回2*1 返回调用f(2)的地方Program test(input,output);Var r:real;Function f(n:in

9、teger):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.第一次执行函数f 形参n的值:4 调用f(3) 计算并返回4*f(3)第二次执行函数f 形参n的值:3 得到f(2)的值,计算并返回3*2 返回调用f(3)的地方Program test(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=

10、f(4); writeln(4!=,r:0:0); End.第一次执行函数f(n:4) 得到f(3)的值 计算并4*6 返回到主程序Program test(input,output);Var r:real;Function f(n:integer):integer;Beginif (n1) then f:=n*f(n- 1)else f:=1;End; Beginr:=f(4); writeln(4!=,r:0:0); End.调用f(4)得到值24汉诺塔问题问题:将A柱子上的n个圆盘借助于B柱子移到C 柱子上去,问如何移动圆盘? 规则:每次只能移动一张圆盘圆盘只能在这三个柱上存放大盘不能压

11、在小盘上面 A(源)B(辅助)C(目的)汉诺塔问题将n个圆盘从A柱移动到C柱的方法: 第一步:将A柱上面的n-1个圆盘移到B柱子 上A(源)B(辅助)C(目的)汉诺塔问题方法: 第一步:将A柱上面的n-1个圆盘移到B柱 子上 第二步:将A柱子上的一个圆盘移到C柱子 上A(源)B(辅助)C(目的)汉诺塔问题方法: 第一步:将A柱上面的n-1个圆盘移到B柱 子上 第二步:将A柱子上的一个圆盘移到C柱子 上A(源)B(辅助)C(目的)汉诺塔问题A(源)B(辅助)C(目的)将n个圆盘从A柱移动到C柱的方法: 第一步:将A柱上面的n-1个圆盘移到B柱 子上 第二步:将A柱子上的一个圆盘移到C柱子 上 第

12、三步:将B柱子上的n-1个圆盘移到C柱 子上汉诺塔问题问题:如何将A柱上面的n-1个圆盘移到B 柱子上?A(源)B(辅助)C(目的)解答:采用解决n个圆盘移动问题的思路解决n-1个圆 盘的移动问题。汉诺塔问题A(源)B(辅助)C(目的)方法: 第一步:将A柱上面的n-2个圆盘移到B柱 子上 第二步:将A柱子上的一个圆盘移到C柱子 上 第三步:将B柱子上的n-1个圆盘移到C柱 子上汉诺塔问题A(源)B(辅助)C(目的)方法: 第一步:将A柱上面的n-2个圆盘移到C柱 子上 第二步:将A柱子上的一个圆盘移到C柱子 上 第三步:将B柱子上的n-1个圆盘移到C柱 子上汉诺塔问题A(源)B(辅助)C(目

13、的)方法: 第一步:将A柱上面的n-2个圆盘移到C柱 子上 第二步:将A柱子上的一个圆盘移到B柱 子上 第三步:将B柱子上的n-1个圆盘移到C柱 子上汉诺塔问题A(源)B(辅助)C(目的)将n-1个圆盘从A柱移动到C柱的方法: 第一步:将A柱上面的n-2个圆盘移到C柱 子上 第二步:将A柱子上的一个圆盘移到B柱 子上 第三步:将C柱子上的n-1个圆盘移到B柱 子上汉诺塔游戏 PROCEDURE hanoi(n:integer;A,B,C:char); 将A柱上的n个圆盘借助于B柱子移动到C柱子上; BEGINIF n0 THEN BEGIN先将A柱上的n-1个圆盘借助于C柱子移动到B柱子上ha

14、noi(n-1,A,C,B); movedisk(A,C); 将A柱上的一个圆盘移到C柱上 hanoi(n-1,B,A,C);最后将B柱上的n-1个圆盘借助于A柱子移动到C柱子上 ENDEND; 向前引用PASCAL语言规定:程序(语句部分)中要使用的符号要 首先进行说明(声明),即“先说明后 引用”。若处于并列结构的两个过程需要在语句部 分相互调用,则需进行向前引用的说明。主程序m过程p 过程a 过程b过程q过程y过程xProcedure p1(y:integer); Beginy:=2*y+10; b:=y div 30;p2(y); End; Procedure p2(var x:integer); Beginif x400 then beginn:=n+1;p1(x);end; End; Procedure p2(var x:integer); forward; Procedure p1(y:integer); Beginy:=2*y+10; b:=y div 30;p2(y); End; Procedure p2; Beginif x400 then beginn:=n+1;p1(x);end; End; 作业4.16 (可以用非递归方式编写程序) 4.17 4.13 (1) (2)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号