C语言程序设计教案第八章函数.docx

上传人:b****2 文档编号:552172 上传时间:2022-10-11 格式:DOCX 页数:22 大小:27.60KB
下载 相关 举报
C语言程序设计教案第八章函数.docx_第1页
第1页 / 共22页
C语言程序设计教案第八章函数.docx_第2页
第2页 / 共22页
C语言程序设计教案第八章函数.docx_第3页
第3页 / 共22页
C语言程序设计教案第八章函数.docx_第4页
第4页 / 共22页
C语言程序设计教案第八章函数.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言程序设计教案第八章函数.docx

《C语言程序设计教案第八章函数.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教案第八章函数.docx(22页珍藏版)》请在冰豆网上搜索。

C语言程序设计教案第八章函数.docx

C语言程序设计教案第八章函数

第八章函数

课题:

第八章函数§1~§4

教学目的:

1、掌握函数定义的一般形式

2、掌握函数调用的一般形式

教学重点:

教学难点:

函数定义、调用的一般形式

形式参数和实际参数

步骤一复习引导

一个C语言源程序可由一个主函数和若干个辅助函数组成。

由主函数调用其他函数,其他函数也可以互相调用。

 

步骤二讲授新课

§8.1概述

例8.1

()

{();

();

();

}

()

{(“**********\n”);}

()

{(“!

\n”);}

说明:

1、一个源程序文件由一个或多个函数组成。

一个源程序文件是一个编译单位。

2、一个C程序由一个或多个源程序文件组成。

这样可以分别编写、分别编译,提高调度效率。

3、C程序的执行从函数开始,在函数中结束整个程序的运行。

4、所有函数都是平行的,即函数不能嵌套定义,函数可以互相调用,但不能调用函数。

5、从用户使用的角度看,函数有两种:

标准函数(库函数)和用户自己定义的函数

6、从函数的形式看,函数分为两类:

无参函数和有参函数

§8.2函数定义的一般形式

(一)无参函数的定义形式

类型标识符函数名()

{

函数体(包括声明部分和执行部分)

}

例:

()

{(“**********\n”);}

 

(二)有参函数定义的一般形式

类型标识符函数名(形式参数表)

{

函数体(包括声明部分和执行部分)

}

例如:

(x,y)

{z;

>;

(z);

}

 

(三)一个函数可以是空函数

如(){}

 

 

 

§8.3函数参数和函数的值

(一)形式参数和实际参数

形式参数:

定义函数时函数名后括号中的变量名,简称形参;

实际参数:

调用函数时函数名后括号中的表达式,简称实参。

例:

()

{;

(“”);

c=(a,b);/*调用函数*/

(“”);

}

(xy)/*定义函数*/

{z;

>:

y;

(z);

}

 

 

关于形参和实参的说明:

形参在未出现函数调用时,并不占内存中的存储单元。

只有在发生函数调用时,函数中的形参才被分配内存单元。

在调用结束后,形参所占的内存单元也被释放。

2、实参可以是常量、变量或表达式,如:

c=(3);

但要求它们有确定的值。

在调用时将实参的值赋给形参(如果形参是数组名,则传递的是数组的首地址,而不是变量的值。

3、在被定义的函数中,必须指定形参的类型;

4、实参与形参的类型应一致。

5、C语言规定,实参对形参的数据传递是“值传递”,即单向传递。

在内存中,实参单元与形参单元是不同的单元。

(二)函数的返回值

1、语句

(表达式);

或:

表达式;

或:

;

或:

函数执行到最后遇到“}”

 

语句的用途有二:

(1)用于结束函数的执行并返回到调用者;

(2)用来向调用者传递一个返回值。

注意:

该语句对非函数适用。

 

2、函数值的类型

如:

()

(c1,c2)

(x,y)

C语言默认函数返回值为型。

 

3、函数值的类型和语句中表达式的值不一致,则以函数类型为准;

()

{a,b;c;

(“”);

();

(“\n”);

}

(x,y)

{z;

z=x>y?

x:

y;

(z);

}

若输入的数据情况为:

1.5,2.5

则输出的结果为:

2

 

4、如果被调函数中没有语句,则函数带回一个不确定值。

 

5、为了明确表示“不带回值”,可以用“”定义“无类型”(或称“空类型”)。

如:

()

{(“!

\n”);}

 §8.4函数的调用

要正确实现函数间的相互调用需满足下列条件:

第一,被调用函数必须存在且允许调用;

第二,必须给出满足函数运行时要求的参数;

第三,在调用一个函数之前一般应该对被调用函数进行声明。

 

 

(一)函数声明的一般形式

函数类型函数名(参数类型1,参数类型2,…,参数类型n);

或:

函数类型函数名(参数类型1参数名1,参数类型2…);

如:

(,…);

2(i,p1);

(,);

注意:

函数声明与函数定义不同!

 

 

(二)函数调用的一般方法

 

函数调用形式:

函数名(实参表列);

 

1.函数语句

如:

前述例子中的();

 

2.函数表达式

如:

();

 

3.函数参数

如:

(a,());

(“”,());

 

f(a,b)

{c;

(a>b)1;

()0;

1

(c);

}

 

 

 

例:

()

{2,p;

(i,);

(“”);

}

 

 环境下,按自右而左的顺序

求值。

此例f(i,)~f(3,3)

例:

计算组合C()(n!

()!

()

{m,n;

;

();

(“”);

(m);

(n);

;

();

(“\n”);

}

 

 

步骤三课堂小结

1、有参函数的定义形式

2、形参和实参的区别

3、函数的声明和调用

 

 

步骤四布置作业

书面作业:

(第八章课后练习)8.1

课题:

第八章函数§5~§7

教学目的:

1、掌握函数的嵌套调用和递归调用

2、掌握虚实结合

教学重点:

教学难点:

嵌套和递归调用、数组作为函数参数

递归调用、虚实结合

步骤一复习引导

(x1,x2)

{i;1;

y1(x1);

{(x12);

(x);

(y*y1>0)

{y1;x1;}

{y2;x2;}

}((y)>=0.0001);

(x);

}

步骤二、讲授新课

§8.6函数的递归调用

直接或间接调用自身的函数为递归函数。

一个问题采用递归方法来解决时必须符合以下条件:

(1)可将一个问题转化为具有同样解法的规模较小的问题;

(2)必须有明确的结束条件。

[例8.7]:

有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁,问第4个人的岁数,他说比第3个人大2岁,问第3个人的岁数,他说比第2个人大2岁,问第2个人,他说比第1个人大2岁,问第一个人,他说是10岁。

请问第5个人的岁数?

(P158)

分析:

显然这是一个递归问题。

即:

(5)(4)+2

(4)(3)+2

(3)

(2)+2

(2)

(1)+2

(1)=10

程序:

(n)

{c;

(=1)10;

(1)+2;

(c);

}

()

{(“”(5));

}

[例8.8]:

利用递归求n!

(P160)

 

例:

数列已在前面定义过,用递归函数求此数列的第n项。

(n)

{f;

(=0=1)1;

(1)

(2);

(f);}

 

[习题8.13]:

用递归方法求n阶勒让德多项式的值,递归公式为:

1(0)

(x)=x

(1)

((21)1(x)-

(1)2(x))(n>1)

 

 

 

()

{x,n;

p();

(“\nn&x:

”);

(“”);

(“\n”);

(“()6.2f”());

}

 

p(n,x)

{(=0)

(1);

(=1)(x);

(((2*1)*(

(1))-

(1)*p(

(2))));

}

 

例:

双递归。

这段程序的结果是

f(b,t)

{m;

(b

{()/2;

(“\n”);

f

(1);

f

(1);

}

}

(){f(1,6);}

§8.7数组作为函数参数

虚实结合(哑实结合)

一、数组元素作函数实参

值传递:

用赋值的方法,把实在参数的值赋给被调函数对应的形式参数。

不希望破坏调用函数中作为实在参数对象的值时,使用“值传递”方式;

注意:

数组元素作为函数实参时如同简单变量。

 

二、数组名作函数参数

地址传递:

指形参与实参结合的不是数据本身,而是把数据的地址传递给被调用函数。

结合后的形参与实参都指向同一个存储区。

在函数间传递一批数据时,一般采用“地址传递”方式。

 

[例8.13]:

用选择法对数组中10个整数按由小到大排序。

()

{a[10];

(“\n”);

(0;i<10;)

(“”[i]);

(a,10);

(“:

\n”);

(0;i<10;)

(“”[i]);

(“\n”);

}

 

 

 

 

三、多维数组名作函数参数

()

{a[3][4]={{1,3,5,7},

{2,4,6,8},{15,17,34,12}};

(“%\n”,

(a));

}

 

 

步骤三课堂小结

函数的嵌套调用和递归调用,注意调用的过程

数组作为函数参数有两种情况:

传递数组元素的值、传递数组名

 

步骤四布置作业

书面作业:

(第八章课后练习)8.2、8.17、15

课题:

第八章函数§8-§10

教学目的:

1、掌握局部变量和全局变量的作用范围

2、掌握变量的存储类别,了解内部函数和外部函数

教学重点:

教学难点:

局部变量和全局变量、变量的存储类别

变量的作用域和生存期

步骤一、复习引导

在函数调用过程中,不仅要注意实参和形参的数据结合,而且要注意各个变量的作用域和生存期。

 

步骤二、讲授新课

§8.8局部变量和全局变量

一、局部变量

在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。

 

二、全局变量

在函数之外定义的变量称为外部变量,即全局变量(全程变量)。

全局变量可以为本文件中其他函数所共用。

它的有效范围为从定义变量的位置开始到本源文件结束。

 

●使用全局变量可以增加函数间的数据联系;

[例8.15]:

有一个一维数组,内放10个学生成绩,写一函数,求出平均分,最高分和最低分。

00;

([]n)

{i;

[0];

[0];

(1;i

{([i]>)[i];

([i]<)[i];

[i];

}

;

();

}

()

{[10];

i;

(0<10)(“”[i]);

(,10);

(“6.2f6.2f6.2f”);

}

●在同一源文件中,如果外部变量与局部变量同名,则在局部变量的作用范围内外部变量不起作用;

[例8.16]:

外部变量与局部变量同名

35;/*外部变量*/

(a,b);/*局部变量*/

{c;

>;

(c);

}

()

{8;/*a局部变量*/

(“”());

 

 

§8.9变量的存储类别

从变量的作用域(空间)来分,为全局和局部变量。

从变量值存在的(生存期)时间来分,可以分为:

一、动态存储方式与静态存储方式

静态存储方式:

指在程序运行期间分配固定的存储空间的方式。

动态存储方式:

在程序运行期间根据需要进行动态的分配存储空间的方式。

 

二、变量

调用函数时系统自动分配存储空间,在函数调用结束时自动释放这些存储空间,称这类局部变量为自动变量。

自动变量用关键字作存储类别的声明。

它也可省。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1