APP下载

C++教学案例选取方法漫谈

2019-08-16王晓东

智富时代 2019年7期
关键词:案例教学

【摘 要】C++程序设计课程难度较大,实践要求很高。本文列举了一些教学案例的实施,通过精选案例,实现在课时有限的条件下提高教学效率,取得更好的教学效果。

【关键词】C++;教学;案例;选取

一、引言

C++语言是当今世界上应用最广泛、影响最深远的面向对象程序设计语言之一,也是较难掌握的一门语言。C++程序设计课程难度较大,实践要求很高,这就要求教师在授课时不仅要介绍C++语言的语法,还要讲解案例,以提高学生的实践能力。由于课时有限,如果案例选取得当,对教学效果会有明显的正面影响。

二、前后呼应

在选取案例的时候,既要注意保持知识点之间的连贯性,做到前后呼应;又要注意突出知识点之间的对比,使学生在案例的学习过程中掌握知识点,灵活应用。例如在讲授选择结构、循环结构、数组以及函数相关章节时,可以选取选择排序问题作为案例,由浅入深,最终能够让学生灵活运用所学知识。

选择排序是一种常用的数据排序算法,其编程需要运用选择、循环、数组以及函数诸多知识才能实现。根据这种特点,以选择排序为主线,精心安排几个案例前后呼应。先使学生掌握必要的知识点,随着所学知识的加深,最后自然地掌握选择排序。在讲授选择结构时,选取两个简单案例:两个数排序和三个数的排序。首先通过两个数排序案例的讲解,让学生掌握变量间交换值的方法,即中间变量法。例如:if(a>b) { t=a;a=b;b=t;}在这个例子中,重要的是要让学生强化变量赋值的概念。赋值会导致内存中变量值的改变,借助于中间变量t 才能完成两个变量值的交换。

在三个数的排序例子中,主要讲授多个数选择排序的基本算法,即运用if结构,不断地筛选,找出最小数、次小数,并按升序排序。例如:

if(a>b) { t=a;a=b;b=t;}

if(a>c) { t=a;a=c;c=t;}

if(b>c) { t=b;b=c;c=t;}

这里首先应用中间变量法交换两个变量的值,其次大量应用了if结构来确定最小数和次小数。第一个if语句确保变量a存放a和b中最小的值,第二个if语句确保a 存放a、b和c中最小的值;第三个if语句则确保变量b 存放b和c中最小的值,即次小数,这样就完成了三个数的排序。通过这个案例不仅可以掌握if结构,而且深刻理解了选择排序的算法精髓,为以后学习n个数的选择排序法打下良好的基础。

n个数的选择排序实际上是if语句的不断重复,这需要循环结构。存放多个逻辑上存在联系的数据,又需要借助数组。在学习了后续的循环结构和数组之后,就可以适时将n个数的选择排序问题作为案例,帮助学生融会贯通所学知识。例如:

int a[10],i,j,t;

………………..

for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

在这个例子中,选择结构、循环结构和数组都得到了应用,数组用来存放一批数据,而循环结构用来控制这批数据的选择交换等重复操作。在排序循环的结构中如何找出最小数,以及两个变量交换变量值,这些基本算法都是已经掌握的。因此学生可以在前面的基础上,集中精力,学习新的知识。

在学习了n个数选择排序编程之后,讲解函数知识时就可以将排序功能独立出来,编成函数模块。例如:

void sort(int a[ ],int n)

{ int i,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]>a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

}

………………..

sort(a,10);

编制函数sort实现选择排序,供主调函数调用,排序功能被封装在函数sort中。由于已经掌握了选择排序的精髓,现在只需要解释函数调用的机制、参数传递的方式等与函数有关的问题即可。根据授课需要还可以在指针一章中,再次安排选择排序案例,重点讲解在函数调用传递数组时,如何使用指针作为函数参数。

以上是用选择排序案例,阐述如何进行教学案例的选取的。即注重知识点的前后呼应,用一组围绕同一个问题的案例,由易到难,最后解决综合应用问题。在解決问题的过程中,既通过精选的案例掌握了C++的基本知识;又可以把这些知识融会贯通,用来编制较为复杂的程序。围绕一个问题不断深入,在前面知识点的基础上适当增加新的知识点,不仅可以有效缓解采用多个不相联系的案例造成的课时紧张,而且还可以更好地理解知识点之间的联系,从而牢固地掌握并将它们灵活应用到实践中去。

三、左右逢源

案例选取的方法很多,根据情况还可以采用左右逢源选取案例的方法。在讲授C++的某些章节中,经常会遇到一些难点。例如指针做函数参数,有四种情况,它们之间是横向的关系,彼此有着明显区别,但又存在一定联系。如何让学生弄清它们彼此之间的区别与联系呢?在实例选取中,要注意对具体实例的剪裁与改造,力争用多种方法去解决同一个问题。这样在一个实例中就可以学习到多个横向的、不同的知识点,并领悟到它们之间的区别与联系,更好地加以掌握。针对指针做函数参数的四种情况,可以选取求数组平均值的案例,用四种方法求解,最终揭示这四种情况彼此之间存在联系的本质。

在C++程序设计课程讲授中,可以大量采用上述精选案例的方法,例如在循环一章中,采用一个计算累加和的案例,阐述三种循环结构的特点。又如在结构体一章中,采用一个案例对结构体变量成员的几种访问方法都给予了讲解。在讲解类的语法时,采用描述时钟的一个案例,将类与结构体进行对比,引发对程序设计思想的讨论。

四、结语

如何精选案例?首先应该对具体讲授内容有深刻理解,弄清特点和难点,做到有的放矢;其次找出相关知识点之间的区别和联系,在此基础上构思精巧的案例,尽量包容相关的知识点,在讲解中阐明相关知识点的特点和相互联系。通过案例的精选,一方面使学生对基本概念深刻理解,另一方面又提高了学生的实际动手能力,一举两得。

【参考文献】

[1] 王晓东. C++程序设计简明教程(第二版)[M].北京:中国水利水电出版社, 2017.

[2] 郑莉. C++语言程序设计[M].北京:清华大学出版社, 2001.

[3] 江义华. C/C++完美演绎[M].北京:中国水利水电出版社, 2001.

猜你喜欢

案例教学
案例4 奔跑吧,少年!
随机变量分布及统计案例拔高卷
“自我诊断表”在高中数学教学中的应用
发生在你我身边的那些治超案例
对外汉语教学中“想”和“要”的比较
随机变量分布及统计案例拔高卷
一个模拟案例引发的多重思考
案例警示
跨越式跳高的教学绝招
初中50米迎面接力跑教学心得