【asp精品源码栏目提醒】:网学会员鉴于大家对asp精品源码十分关注,论文会员在此为大家搜集整理了“第8章 子程序 - 教育”一文,供大家参考学习
第八章 子程序语句函数函数子程序子例行程序程序单元之间的数据传递递归调用等价语句与数据块子程序内部子程序模块 一、语句函数1.语句函数的定义语句函数定义的一般格式是: fx1x2…xne2.语句函数的调用语句函数的调用形式和内在函数完全相同。
例1 f x 5 x 2 x 7 x 6 3 2计算f1 f10 f12 f-5的值。
例2 找出100999之间的所有水仙花 数。
二、函数子程序1.函数子程序的定义函数子程序的定义格式是:类型说明 FUNCTION 函数名虚参表 函数体END函数名的命名方法与变量名相同,虚参可以是简单变量和数组变量,但不能是常数、数组元素、表达式 例1 100 140 50 s1 ∑ i 2 s2 ∑i 3 s3 ∑ 1求 i 1 i 100 i 20 i分析:上述三个数列的通项不同,求和范围也不同,用一个程序段难以同时计算三个数列的和,并且,因为无法用一个语句函数完成数列的求和计算,所以也无法使用语句函数来简化程序设计。
可以采用函数子程序来完成这个问题。
设计一个求和的函数子程序SMMNL,M、N分别为求和范围的上、下界,L反映数列通项的性质。
函数定义部分应注意如下问题:(1)函数不能有同名虚参。
虚参的类型可以在函数体中 进行说明,当未对虚参类型进行说明时,虚参类型遵 守I—N隐含规则。
(2)函数定义部分中一定要有一个语句将函数值赋值给 函数名,这种赋值语句的格式是:函数名表达式。
注 意不要在函数名后带上括弧。
2.函数子程序的调用调用一个函数子程序的方法和调用内在函数和语句函数的方法基本相同。
例2 用函数子程序的方法设计一个程序,求50100内的所有素数及其和。
分析:设计一个函数子程序 PRIMEN: 1 当n是素数时 primen 0 当n非素数时主程序的任务是应用PRIME函数子程序在50100之间使用枚举法求出那些使PRIME函数值为1的自然数并求这些数的和。
思考:子程序的返回值分别为逻辑型、字符型时, 主、子程序程序做何修改?例2 当一个数各个数位的立方和等于这个数本身时,称 这样的数为水仙花数如153135333,所 以,153是一个水仙花数。
编程:求100999之间的 水仙花数。
分析:设计一个函数子程序NUMN,I,当I100时,函 数NUM返回N的百位上的数;当I10时,NUM返回N的 十位上的数,I1时,NUM返回N的个位上的数。
主程 序中调用NUM函数在100999之间找出所有水仙花数。
三、子例行程序1.子例行子程序的定义子例行子程序定义格式是:SUBROUTINE 子程序名虚参表 子例行程序体END子程序的命名方法与变量相同。
虚参由变量、数组名不能是数组元素,常数、表达式充当,当虚参多于一个时,各虚参间用逗号分隔,当没有虚参时,子例行程序名后的一对括弧可以省略。
子例行程序的设计方法和函数子程序相同,但因为其名字没有值,所以不能有对子例行程序的名字赋值的语句。
2.子例行子程序的调用子例行程序的调用格式是:CALL 子例行程序名实参表其实参的类型与函数子程序相同。
和函数子程序的调用 不同的是,子例行子程序的调用是一个独立的语句。
例1 用子例行程序的方法求上面的s1s2s3。
例2 设计一个子例行程序程序,求任意矩阵的转置矩阵。
实验九 子程序(一) 四、程序单元之间的数据传递1.简单变量作为虚参(1)简单变量或数组元素作为实参。
系统将实参与虚参安排同一个存储单元,对虚参的任何改变都作用在对应的实参上,因而调用一个子程序包括函数子程序和子例行程序时,实参的值有可能改变。
(2)常量或表达式作为实参。
首先计算表达式的值如果实参为表达式时 ,然后将该值赋值给对应的虚参。
此种情况下,子程序中不能改变与常量或表达式对应的虚参的值。
2.数组名作为虚参当虚参是数组名时,对应的实参可以是与虚参类型相同的数组名或数组元素,并且实参与虚参共用一片连续的存储单元。
四、程序单元之间的数据传递3.子程序名作为虚参例 设有三个连续函数: f x sin 3 x cos x g x 5 x 3 2 x 10 1 h x 1 x2 设计一个函数子程序,用Simpson方法求三个函数的积分 2π 10 1 I1 ∫ f