理解形参与变量形参:函数与过程的核心

需积分: 31 0 下载量 52 浏览量 更新于2024-07-14 收藏 234KB PPT 举报
在编程语言中,过程和函数是两种重要的代码组织形式,它们允许我们将复杂的任务分解成可重用的模块。本资源主要探讨了形参(形式参数)和变量形参的概念,以及如何在PASCAL语言中定义和调用函数。 形参和变量形参是函数或过程中接收实参(实际参数)的方式。形参传值是指在调用函数或过程时,系统为形参分配内存,并将实参的值复制到这些形参中。在这个过程中,形参的改变不会影响到实参,因为它们是独立的内存单元。当函数执行完毕,形参占用的内存被释放,形参的值也就消失了。 而变量形参传地址,也称为引用参数,是一种不同的传递方式。在这种情况下,形参不是存储实参的副本,而是存储实参的内存地址。这意味着对形参的任何操作都会直接影响到实参。函数执行结束后,虽然变量形参的内存被回收,但对实参的修改仍然存在。 在PASCAL中,函数的定义包括三个部分:函数首部、变量说明和函数体。函数首部声明函数名称、形参列表及其类型,以及函数返回值类型。例如: ```pascal FUNCTION A1(A, B, C: INTEGER; D, E, F: REAL): REAL; ``` 这里,`A1`是一个接受两个整数参数`A, B, C`和三个实数参数`D, E, F`,并返回实数的函数。接着是变量说明部分,用于声明函数内部使用的变量。函数体则包含了实现函数功能的代码。 以下是一个计算阶乘的PASCAL函数示例: ```pascal FUNCTION js(n: integer): longint; VAR i: integer; s: longint; begin s := 1; for i := 1 to n do s := s * i; js := s; end; ``` 在函数`js`中,`n`是入口参数,不被函数内部修改。`i`和`s`是局部变量。函数通过累乘计算阶乘,并将结果存储在`js`中,最后通过函数名`js`返回结果。 调用这个函数可以在主程序中进行,例如要计算5!和9!: ```pascal PROGRAM FactorialDemo(INPUT, OUTPUT); VAR num1, num2: integer; BEGIN num1 := js(5); // 调用js函数计算5! num2 := js(9); // 调用js函数计算9! // 打印结果或其他处理 END. ``` 在主程序中,我们使用实参`5`和`9`来调用`js`函数,实参与形参匹配,传递给函数进行计算。函数调用时,实参会根据传递方式(值传递或引用传递)来传递给函数。在PASCAL中,如果不特别指定,通常默认是值传递。 总结来说,形参和变量形参是过程和函数参数传递的两种方式,理解它们的差异对于编写高效且可控的代码至关重要。在PASCAL中,正确地定义和调用函数能够帮助我们更好地组织代码,提高程序的可读性和可维护性。