第六章 函数与过程 (pascal语言).ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 函数与过程 第一节 函数 第二节? 过程 第三节 递推算法 第四节 递 归 第一节 函数 函数的定义 函数的调用 函数的应用举例 【上机练习6.1】 第二节? 过程 过程的说明 过程的调用 形参与变量形参 全程变量、局部变量及它们的作用域 过程与函数的综合应用 过程课堂练习 【上机练习6.2】 第三节 递推算法 【上机练习6.3】 第四节 递 归 递归概念 递归应用 小结 【上机练习6.4】 全程变量:主程序中被说明的变量。 局部变量:在过程或函数中被说明的变量。 在程序中,局部变量、全程变量进行存取的适用范围是不一样的,即作用域不一样。 局部变量的作用域是它们所在的子程序。因形式参数也只在子程序中有效,因此也属于局部变量。 对于局部变量的作用域可以这样理解:当局部变量所在子程序被调用时,局部变量才被分配有效的存储单元;当返回调用程序时,局部变量所占的存储单元就被释放。 全程变量的作用域分为两种情况: ①在全程变量和局部变量不同名时,其作用域是整个程序。 ②在全程变量和局部变量同名时,局部变量屏蔽了全程变量。 例6.15 变量作用范围: Program ex6_15; var x,y : integer; Procedure doit; var x : integer; begin  x := 2;  writeln(x,’’,y); end; BEGIN  x := 1; y := 2;  writeln(x,’’,y);  doit;  writeln(x,’’,y); END. 【分析】 程序中x,y是全局变量,但在过程doit中也定义局部变量x,在这种相冲突的情况下,在doit过程中的变量x是过程中所定义的局部变量。 运行结果:   1 2   2 2   1 2 例6.16 任意输入一个整数,将它变成字符串输出。如:输入数34567,打印出字符“34567”。要求用过程的方法实现。 程序如下: Program exp7_16 ; var i,k:integer; ????????s:string; Procedure n_c(n:integer;var s:string); Var l:integer; begin l:=abs(n); ??s:=; repeat s:=char((l mod 10) +ord(0))+s; ? l:=l div 10; until l=0; ? if n 0 then s:=-+s; end; ?????????????BEGIN ???????????????? for i:=1 to 10 do ??????????????????? begin ??????????????????? ? writeln(input k); ??????????????????? ? readln(k); ??????????????????? ? n_c(k,s);  ?????????????????? writeln(the string is:,s); ??????????????????? end; END. 例6.17 编程输入十进制整数N(N:-32767~32767),请输出它对应的二进制、八进制、十六进制数。 【分析】这是一道进行数制转换的问题,将十进制整数转换成R进制的数,算法是:除R取余,再将余数倒过来写出即是R进制的数。本例是要求把一个十进制数同时转换成二进制、八进制、十六进制数。因此可以设计一个过程同进处理这三种数的进制转换。 程序如下: Program ex6_17; var n : integer; Procedure TurnData(n,a : integer); var x : array[1..16] of integer; i,j,k,h: integer; begin writeln(n,′turn into′,a, ′ : ′); if n0 then write(′-′); //负数的话,先输出负号再开始转 j : =abs(n); k : =0; //用于统计转成a进制数后的总位数 repeat k : =k+1; i : =j mod a; j : =j div a; x[k] : =i until j=0; for h : =k downto 1 do if

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档