《程序设计》2007.9 第6章过程封装一一函数 %函数 重载函数 自己编写函数 函数模版 函数的使用 变量的作用域 引用参数 变量的存储类别 带默认值的函数 递归函数 内联函数 模块化的设计 程序设计-1
《程序设计》 2007.9 程序设计 - 1 v 函数 v 自己编写函数 v 函数的使用 v 引用参数 v 带默认值的函数 v 内联函数 v 重载函数 v 函数模版 v 变量的作用域 v 变量的存储类别 v 递归函数 v 模块化的设计
《程序设计》2007.9 函数的用途 函数是程序设计语言中最重要的部分,是模 块化设计的主要工具。每一个程序都要用到 函数。 即使你自己不定义新的函数,在每一个完整的 C程序中都必须有一个main0函数。 在C语言中,字符处理、字符串处理和数学计 算都是用函数的方式提供的。 程序设计-2
《程序设计》 2007.9 程序设计 - 2 v 函数是程序设计语言中最重要的部分,是模 块化设计的主要工具。每一个程序都要用到 函数。 v 即使你自己不定义新的函数, 在每一个完整的 C程序中都必须有一个main() 函数。 v 在C语言中,字符处理、字符串处理和数学计 算都是用函数的方式提供的
《程序设计》2007.9 函数的例子 我们可以将像sin那 sin(x) 样的函数想象成一个 黑盒子,或一个小机 X 器。如果你在它的上 面放入一个“值”, 在它的下面就会掉出 90 “结果” 上面的值称为参数, sin 下面的值称为返回值 1.0 程序设计-3
《程序设计》 2007.9 程序设计 - 3 v 我们可以将像sin那 样的函数想象成一个 黑盒子,或一个小机 器。如果你在它的上 面放入一个“值” , 在它的下面就会掉出 “结果” v 上面的值称为参数, 下面的值称为返回值
《程序设计》2007.9 调用函数的一个例子 如果我们改变了 sin(x) 输入的参数,函 数就能返回不同 X 的值。 函数的参数可以 alpha=90° 是常数、变量或 120° alpha alpha 3 arguments 表达式。 图中我们将调用 4次sin的结果加起 来,并将其和存 1.0 0.866 1.0 return values 入变量total中。 total sin(90)+sin(120)+sin(alpha)+sin(alpha 3)
《程序设计》 2007.9 程序设计 - 4 v 如果我们改变了 输入的参数,函 数就能返回不同 的值。 v 函数的参数可以 是常数、变量或 表达式。 v 图中我们将调用 4次sin的结果加起 来,并将其和存 入变量total中
《程序设计》 2007.9 以函数形式模块化构建程序 C++标准库提供的函数集合可以进行: 常用数学计算 字符串操作 字符操作 输人输出 错误检查 目的: 使程序员的工作更加轻松,因为这些函数 提供了程序员需要的许多功能。C++标准库函数 是在C++编程环境中提供的。 程序设计-5
《程序设计》 2007.9 程序设计 - 5 C++标准库提供的函数集合可以进行: v 常用数学计算 v 字符串操作 v 字符操作 v 输人/输出 v 错误检查 目的: 使程序员的工作更加轻松,因为这些函数 提供了程序员需要的许多功能。C++标准库函数 是在C++编程环境中提供的
cmath的主要内容 《程序设计》2007.9 绝对值函数 int abs(int x);double fabs(double x) ex double exp(double x) Xy double pow(double x,double y) x double sqrt(double x) In x double log(double x) 10g10X double log10(double x) 三角函数 double sin(double x) double cos(double x) double tan(double x) 反三角函数 double asin(double x) double acos(double x) double atan(double x) rasns -6
《程序设计》 2007.9 程序设计 - 6 绝对值函数 int abs(int x) ; double fabs(double x) e x double exp(double x) xy double pow(double x, double y) double sqrt(double x) ln x double log(double x) log10x double log10(double x) 三角函数 double sin(double x) double cos(double x) double tan(double x) 反三角函数 double asin(double x) double acos(double x) double atan(double x) x
《程序设计》2007.9 第6章过程封装一一函数 %函数 重载函数 自己编写函数 函数模版 函数的使用 变量的作用域 引用参数 变量的存储类别 带默认值的函数 递归函数 内联函数 模块化设计 程序设计-7
《程序设计》 2007.9 程序设计 - 7 v 函数 v 自己编写函数 v 函数的使用 v 引用参数 v 带默认值的函数 v 内联函数 v 重载函数 v 函数模版 v 变量的作用域 v 变量的存储类别 v 递归函数 v 模块化设计
《程序设计》2007.9 如何写一个函数 函数定义 类型标识符 函数名(形式参数表) 形式参数说明 {说明部分 语句部分 函数体 函数的返回值:返回值类型应与定义中的类型标识符 一致 return 返回值;或return(返回值); eg.int max(a,b) int a,b; fif (a>b)return(a)else return(b); 表示一个函数没有返回值,类型标识符用void。没有 返回值的函数也称为过程 程序设计-8
《程序设计》 2007.9 程序设计 - 8 v 函数定义 v 函数的返回值:返回值类型应与定义中的类型标识符 一致 v 表示一个函数没有返回值,类型标识符用void。没有 返回值的函数也称为过程 类型标识符 函数名(形式参数表) 形式参数说明 {说明部分 语句部分 } return 返回值; 或 return(返回值); eg. int max(a, b) int a,b; {if (a>b) return(a) else return(b); } 函数体
《程序设计》2007.9 函数举例 无参数、无返回值的函数 打印一个由五行组成的三角形 void printstar() 兴 兴兴光 Cout<<“ *n”; 兴光兴米兴 Cout<<“***n”; 兴兴光兴兴兴兴 c0ut<<“*****n”; 兴光兴兴兴兴兴兴兴 C0ut<<“******n”; C0ut<<“**********n 程序设计-9
《程序设计》 2007.9 程序设计 - 9 函数举例— 无参数、无返回值的函数 v 打印一个由五行组成的三角形 * *** ***** ******* ********* void printstar() { cout << “ *\n”; cout << “ ***\n”; cout << “ *****\n”; cout << “ ********\n”; cout << “**********\n”; }
函数举例 《程序设计》2007.9 有参数、无返回值的函数 必打印一个由n行组成的三角形 void prina(mOfLine) int nunOfLine; void printstar(int numOfLine) { inti,j; for (i=1;i<=numOfLine;++i) cout <endl; for (j=1;j <numOfLine -i;++j) cout << for(j=1;j<=2*i-1;++j) c0ut<“*”; 程序设计-10
《程序设计》 2007.9 程序设计 - 10 函数举例— 有参数、无返回值的函数 v 打印一个由n行组成的三角形 void printstar(int numOfLine) void printstar(numOfLine) int nunOfLine; { int i , j; for (i = 1; i <= numOfLine; ++i) { cout << endl; for (j = 1; j <= numOfLine - i; ++j) cout << ‘ ‘; for (j = 1; j <= 2 * i - 1; ++j) cout << “*”; } }