Pascal学习


——基本Pascal学习

 

返回

 

第1章 第2章 第3章 第4章 第5章
Pascal语言概述 基础知识 顺序结构 选择结构 循环结构
第6章 第7章 第8章 第9章 第10章 第11章
枚举型和子界型 数组 函数与过程 集合与记录 指针 文件

 

第八章 函数和过程

8.1 函数

8.2 过程

8.3 形参和实参

8.4 表识符的作用域

 

8.1 函数
  如果一个子程序执行后能够返回其结果制,那么它就可以用于表达式中,称这种子程序为函数,这种语句序列的定义称为函数说明。函数说明形式如下:
 function 函数名(形式参数表):函数类型;
  说明部分;
 begin
  语句1;
  语句2;
  ……
  语句n
 end
  函数返回一个函数值,过程则能完成一系列各种操作。函数的调用方式出现在表达式中,而过程调用是一句独立的语句。
例:计算|X|的函数
  function zhoufei(x:real):real;
   var z:integer;
  begin
   if x>=0 then z:=x
   else z:=-x
   zhoufei:=z;
  end;
  函数说明第一行为函数首部。它指明函数名、函数形参信息和函数值的数据类型。如上面求x绝对值的函数说明,函数名是zhoufei;它有一个值参数X为实型;函数值的数据类型为实型。Turbo Pascal规定一个函数只能求出一个简单值,所以函数值类型只能是任何非结构类型。
  除函数首部和过程首部的句法略有差别外,函数体和过程体完全相同。函数体中至少要有一条语句对函数名赋值。如函数zhoufei 中有语句“power:=z”。函数的每次求值至少要执行这样的一条语句,为次计算求得一个值。返回时就把这个值带调用的地方。

8.2 过程


给某个语句序列组成的子程序赋于一个适当的名字。程序中凡是需要出现这个语句序列的地方,可以简单的写上子程序的名字。这种完成一个操作的子程序称为过程;子程序的定义称为过程说明。
  过程说明由过程首部和过程体组成,其形式如下:
procedure 过程名(形式参数表);-------过程首部
说明部分;
begin
执行语句;
……
end;
例 输出两个数中最大值的过程
procedure largest(a,b:integer);
begin
if a>b then writeln(a)
else writeln(b);
end.
  上面largest过程由两个类型为整型的形式参数:a,b,你向过程传入的两个需要比较大小的数。

8.3 形参和实参


  子程序调用(过程调用或函数调用)的执行顺序分为以下几步:
    实参和形参结合——〉执行子程序——〉返回调用处继续执行
  子程序说明的形式参数表对子程序体直接引用的变量进行说明,详细指明这些参数的类别、数据类型要求和参数的个数。子程序被调用时必须为它的每个形参提供一个实参,按参数的位置顺序一一对应,每个实参必须满足对应形参的要求
  Turbo Pascal子程序形参有四类:
1.值参数
  形式参数表中前面没有var,后有类型的参数。它类似过程和函数的局部变量,仅为过程和函数的执行提供初值而不影响调用时实际参数的值。在调用过程或应用函数时,值参数所对应的实际参数必须是表达式,而且它的值不能使文件类型或包括文件类型的值。实参必须和形参赋值相容。
2.变量参数
  形式参数表中前面有var后由类型的参数。如果需要子程序向调用程序返回值时,应采用变量参数。变量参数要求它的实参是和它同一类型的变量。因为在子程序执行时,遇到对相应形参的引用式定值,就是对相应实参的引用式定值,即对形参的任何操作就是对实参本身的操作。
3.无类型变量参数
  形式参数表中前面有var而后面没有类型的参数。形参是无类型变量,对应的实参允许为任意类型的变量,但要在子程序中设置的强制类型转换(类型名(无类型变量参数名)),将无类型变量参数改变为相应类型。
4.子程序参数
  用过程首部或函数首部作为形式参数。

 

8.4 标识符的作用域


1.全局变量和它的作用域
  全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况:
(1)在全局变量和局部变量不同名时,其作用域是整个程序。
(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。
2.局部变量和它的作用域
  凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子程序。形式参数也只能在子程序中有效。因此也属于局部变量。局部变量的作用域分为两种情况:
(1)当外层过程序的局部变量名和嵌套过程中的局部变量不同名时,外层过程的局部变量作用域包含嵌套过琛。
(2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层局部变量名的作用域不包含此过程。

 

返回>>TOP