C++/C 指针 教学设计
引言
“C++/C”是一门计算机程序设计高级语言,内容丰富,其中的“指针”部分是重要内容之一。“指针”中的“多重指针”是教学难点,普遍认为这个内容“难教难学”。如何突破这个教学难点?在现有的相关文献中是否有成功的方法可以借鉴?文献[1]是介绍“C++”的著名教材。在这本书里,作者用两个例子完成了“多重指针”的介绍: 论文检测天使-免费论文检测软件http://www.jiancetianshi.com
第一个例子是“指针数组”,第二个例子是“指向该数组元素的指针”,即“指向指针的指针”。这两个例子,难度跨度过大,学生不容易理解和掌握该概念。文献[2]将二重指针分别和变量以及数组结合在一起, 讨论了二级指针变量与二级指针数据的用法与区别。除了上述文献之外,还有不少文献讨论C++/C教学法。文献[3] 提出了C++/C教学的“指导思想”:“正确处理新理论、新技术与旧内容的关系”等。文献[4] 提出了如下教学方法:采用启发式教学、采用任务驱动教学法、采用“框架法”和“求异法”和采用“多媒体”等。文献[5] 结合教学实践,提出了“渐进式教学法”和“启发式教学法”,主张通过“编程”来理解新概念,通过“由易到难”启发学生并引入新概念。
受以上参考文献启发,本文将提出一个突破该教学难点的教学过程,以课堂教学设计的形式介绍于下:
一、C++/C多重指针的课堂教学设计
我们先将教学的基本条件以及学生的基本情况做一介绍,然后再谈课堂教学设计的内容和步骤。
(一)教学的基本条件
一间教室,可容纳100人左右,配备有多媒体教学设备。
(二)学生的基本情况
学生在接触C++/C之前仅学过《计算机应用基础》,从未接触过另外的编程语言,也没有学过另外的计算机课程。对于该课程,学生已学过“函数”、“数组”和“单重指针”等内容。
(三)教学目的
让学生理解并掌握概念:“二重指针”和“多重指针”。
(四)教学设计的基本思想
基于以上的教学基本条件和学生的实际情况,笔者认为应该按以下原则进行教学:
先简后繁,先易后难,循序渐进,前后对比,归纳总结。
下面我们按这个原则设计教学过程。
(五)教学过程
预备:在课堂上,老师降落银幕,打开投影仪,启动电脑,启动VC系统,进入编辑界面;老师组织学生简单地复习一下指针的概念,然后介绍下面的内容:
1、多重指针(含单重指针,下同)与变量的关系
我们将通过一个简单例子,引入多重指针的概念,并举例该概念的初步应用。在这里,老师结合下例指出:一个变量对应一个内存单元,我们可以用一重指针变量指向这个内存单元,如果有必要的话,也可以用多重指针变量通过特定的传递关系指向这个内存单元。
老师将下列程序输入系统并运行,将结果输出到银幕上:
void main()
{int a=12,*p, **q,***r ;
p=&a;
q=&p;
r=&q;
cout< a=13;
cout< *p=14;
cout< **q=15;
cout< ***r=16;
cout< }
银幕上显示的结果是:
12,12,12,12
13,13,13,13
14,14,14,14
15,15,15,15
16,16,16,16
当上面的程序运行结束之后,老师面向学生分析上述程序:
该程序的前三条语句“p=&a; q=&p; r=&q;”,其功能对应下面的示意图:
变量a是一个已经初始化或者赋值的整形变量,语句“p=&a;”规定了一重指针变量p指向变量a;语句“q=&p”规定了二重指针变量q经过一重指针变量p指向变量a;语句“r=&q;”规定了三重指针变量连续经过两个指针变量q和p而指向变量a。四条语句“a=13; *p=14;**q=15;和***r=16;”的功能都是对同一个变量a赋值,以上程序运行结果也验证了这一点。
老师还应指出:三条语句“p=&a; q=&p; r=&q;”是有序的,是由p、q、r的定义所规定的,不可颠倒顺序,也不能“越级”,譬如“*q=&a;”或者“q=&a;”都是错误的,当然“**r=&a”或者“*r=&p”也是错的。另外,“&(&a)”总是错的,因为符号“&”是取变量的地址,而地址,譬如&a,是“值”而不是变量,所以 “&(&a)”无意义。
老师还应强调指出:此例中的int可用float、double或者char代换,其程序和结论相同,但应该注意的是,当用类型char代换int之后,给变量赋值时可赋字符形的,也可赋整形的。
最后,老师可以补充:此例中的变量a,也可以是数组元素,因为一个数组元素等价一个变量,只是命名规则不同而已。
2、多重指针与字符串(或者字符数组)的关系
这一步骤是为介绍“指针数组和多重指针”做准备,同时也是为了拓宽多重指针的应用范围。
在讨论“多重指针与字符串(或者字符数组)的关系”之前,老师应强调:在C++/C语言里,字符串有其特殊的操作规则,特别是将一个字符串常量赋给一个字符指针或者输入到一个字符数组时,该指针或者数组名接收该字符串首字符的地址,而不是接收字符串本身,将字符串和多重指针结合时更要注意这一点。另外,要输出整个字符串,只需将该字符串的首字符地址置入输出语句即可。
相关文章:
文化导入与高校英语教学04-26
南京市大学生旅游行为特征分析及开发策略04-26
新形势下高校财务管理创新初探04-26
大学生幸福指数量表的编制及其初步应用04-26
人本主义视角下大学生英语课程内容重组实际教学示范式04-26
浅析中国大学生的创业战略管理04-26
以技能竞赛为导向的中职技能教学改革04-26
也谈高职院校物流管理专业的课程建设04-26