计算机函数入门教学范例6篇

计算机函数入门教学

计算机函数入门教学范文1

摘要:C语言是计算机程序设计入门教学中最流行也较难学的编程语言之一。本文介绍的Ch是一个面向交互式教学的跨平台C/C++解释计算环境,是一个完整的C语言解释器,支持最新C语言标准C99中大部分的新增特性以及C++的类,由交互式命令外壳(command shell)和教学专用且界面友好的集成开发环境(ChIDE)两大模块构成。Ch支持计算数组(computational array),提供了图形绘制库和高级数值函数库,能够方便快捷地解决许多工程和科学方面的复杂问题。在Windows系统中,Ch计算环境支持常用的Unix和Linux命令,帮助学生在熟悉的Windows环境中学习Unix和Linux。Ch还可以作为引擎脚本无缝地嵌入到编译的程序中,实现柔性编程。本文最后概括性地介绍了笔者在美国加州大学戴维斯分校多年教学实践中开发并使用的一套基于Ch的C程序设计教学平台。教学实践表明,使用这个平台在相当程度上提高了计算机程序设计教学的实用性、授课效果和学生学习的积极性,帮助学生充分理解和掌握计算机程序设计这一工程和科学领域的重要基本技能。

关键词:计算机程序设计教学;C语言;C解释器;C++解释器;数字计算;嵌入式脚本计算

中图分类号:G642

文献标识码:A

1引言

编写计算机程序解决复杂的工程和科学问题是工程师和科学家的基本技能之一。C语言是在工程和科学方面应用最广的编程语言之一,事实上,它是很多工程师和科学家的首选。C语言可以在各种计算机上运行,其中包括微控制器、微型计算机、手执设备、个人电脑、工作站乃至超型计算机。在2005年制造的90亿个微处理器中,只有不到2%的处理器用于新的个人电脑和工作站中,剩余的88亿个则用于工业机器、医疗设备、交通灯控制器和家用电器等的嵌入式系统中。C是编写诸如此类嵌入式系统硬件接口程序的标准语言,同时也是计算机编程入门教学中应用最广的计算机语言之一。但众所周知的是,C语言较难学,熟练掌握更需要相当长的时间。本文介绍的Ch是跨平台的C/C++解释计算环境,对于提高计算机编程入门教学具有良好的效果。

2背景

在过去的十多年中,编程范例发生的转变包括从非移植性特定语言编程到可移植性快速应用开发,从私有语言到开放语言,从系统编程语言到脚本语言。当初设计和开发Ch的主要目的是为了更有效地进行C语言计算机程序设计入门教学,同时兼顾智能机电系统方面的科研和工程应用[1][2]。经过十多年的教学实践和工程应用并不断完善,Ch现已从一个简单的教学和科研工具演变为一个可移植跨平台且通用简便的计算环境[3],并得到教师、学生、科研人员和工业界的广泛认可。经过十多年教学经验的积累,目前已经形成了以Ch为核心的C语言程序设计课程的教学平台[4]。

然而,Ch并不是什么全新的语言,Ch设计严格遵循了C语言标准,是C语言的超集。作为一个完整的C语言解释器,Ch支持1990年通过的ISO C89标准[5]的所有特性。在基于对象的编程方面,Ch也支持C++中的一些主要特性。我们为数值计算而扩展C语言的工作与ANSI C语言标准委员会为修改C语言标准所做出的努力是一致的。自从我1993年参与ANSI X3J11和ISO S22/WG14 C语言委员会修订C99后,Ch受益匪浅。很多诸如复数(complex number)[6]和可变长数组(variable length arrays, VLAs)[7]等原先在Ch中实现的新特性都添加到了的最新C语言标准C99[8]中。与其他大部分C语言编译器相比较,Ch支持更多C99的新增特性。我们鼓励C程序员使用这些新特征,诸如复数、可变长数组、IEEE 754浮点运算和泛型数学函数(type generic mathematical functions),因为它们可以极大地简化很多编程任务。

C语言最初是为系统编程而设计开发的,因此它在工程和科学应用方面存在一些缺陷。Ch是一个C/C++解释器,可用于跨平台脚本、高级数值计算和图形绘制、shell编程和嵌入式脚本。Ch借鉴了很多其他语言和软件包的特性和创意,它和其他一些语言和软件包的关系见图1。Ch的以下主要功能是一般的C语言编译器所无法提供的。首先,Ch可以解释C语言程序,在一台机器上开发的C语言程序可以在无需编译和链接代码的情况下在另一台机器上由Ch解释执行,这对脚本应用来说是非常理想的,比如通用网关接口(Common Gateway Interface,CGI)处理网页上的已填好表格。解释器对C语言计算机编程的教与学双方都是非常有帮助的,比如,运行时的出错信息能够更方便地指向源代码,使初学者更容易发现程序中的错误。Ch还能解释使用面向对象编程特性的C++程序。其次,一些应用于工程和科学方面的语言(如MATLAB和Mathematica)所具有的高级数值计算和图形绘制特性也被Ch扩展到C语言上。Ch中的一些数值计算方面扩展特性已添加到C99中。再次,Ch是一个具有高效的shell编程特点的超高级语言(very high-level language, VHLL)。有些需要编写数千行C语言代码才能解决的问题,Ch代码只需寥寥数行即可完成。此外,Ch还可以无缝地嵌入到用C或C++语言编写的编译应用程序中,使应用程序可以用C/C++脚本柔性编程,极大地扩展了应用程序的功能。本文将从教学的视角阐述Ch的这些独特功能。

3Ch是一个跨平台的C/C++解释器

在处理某些任务时,C语言功能及其编译/链接/运行/调试等繁琐过程不尽完美且效率不高。随着计算机硬件越来越便宜,计算速度越来越快,Ch作为跨平台C/C++解释器,其在程序设计效率、柔性及成本方面的优势已被越来越广泛应用,特别是在C语言程序设计教学上。

作为一个完整的C语言解释器,Ch支持ISO C89标准的所有语言特性和标准库。通过Ch软件开发包(Ch SDK),Ch可以支持C/C++函数库。比如,Ch支持POSIX、TCP/IP socket、Winsock、Win32、X11/Motif、GTK+、OpenGL、ODBC、SQLite、CGI、LAPACK、LDAP、PCRE、Gnome Libxml2、甲骨文公司的XML XDK、NAG统计库、用于计算机视觉的Intel OpenCV、用于图像处理的ImageMagick、用于信号处理的SigLib、美国国家仪器有限公司的NI-DAQ和NI-Motion等。

此外,Ch被设计成与平台无关,它可以在配有不同计算机硬件和操作系统的不同类型计算环境中运行,其中包括Windows、Mac OS X、Linux(x86、PPC、ARM架构)、Unix,FreeBSD和实时操作系统QNX。Ch跨平台特点可以使C/C++程序在多种操作系统上跨平台解释执行,而无须繁琐且与平台相关的编译过程。在一个平台上开发的程序可以在其他任何一个平台上运行。

在辅助初学者学习计算机编程方面,Ch有很多专门开发的警告和出错提示信息,而不用如段故障(segmentation fault)和总线错误(bus error)之类含义模糊且令人费解的出错提示信息。

3.1交互式解释执行C/C++语句和表达式

C语言的所有语句和表达式都可以在Ch命令外壳(command shell)中交互解释执行并即时地显示在屏幕上。如图2所示,使用交互调用函数printf()得到“Hello, world”的输出。注意,在命令模式中执行相应语句时,C语言程序中语句末尾的分号是可省略的。上述执行操作所调用的函数printf()中没有分号。Ch shell中的默认提示符是可配置的。为简易起见,下文关于Ch shell的命令行叙述中只显示提示符>,而不列出完整路径。

Ch shell会对输入的C语言表达式直接进行求值,并将结果显示于屏幕上。比如,输入表达式1+3*2,输出的结果为7,如图3所示。

任何有效的C语言表达式都可以在Ch shell中求值。因此,把Ch当作计算器使用也是相当方便的。再举一例,在提示符后声明变量,接着在随后的计算中使用该变量,如图4所示。

以上C语句中,i是一个4字节的int型变量,i的整数值30将以十进制、十六进制和二进制数显示。Ch shell还可以方便地检查C语言结构或C++类的对齐,如图5所示。

本例中的int和double虽然分别占4和8个字节,但为了对齐,结构体s的int和double两个字段共占16个字节,而不是12个。

3.2交互式解释执行C/C++函数和程序

除了C语句和表达式之外,C语言的函数和程序也可以在Ch shell中进行交互式解释执行。C语言标准库中的所有函数都可以进行交互式执行,也可以在用户自定义的函数中使用。比如,在交互式解释执行如图6所示的代码:

在随机数值生成函数rand()中种入时间值srand (time(NULL))。在命令行中定义并调用的函数add()依次调用了泛型数学函数sin()。

函数文件中定义的函数也可被其他程序和表达式在命令外壳直接调用。Ch的函数文件是一种扩展名为.chf的文件,此类文件只含有一个函数定义。函数文件名和函数定义名称必须是相同的。

比如图7中的程序addition.chf就是函数addition()的函数文件。函数addition()可以用于程序或如图8所示的命令外壳中。

C/C++程序无需编译即可直接进行交互式执行。比如,要运行图9中的“hello.c”程序,只要在Ch命令shell中输入命令“hello.c”,得到的结果就是“Hello, world”,如图10所示。

Ch由上述命令外壳(command shell)和一个集成开发环境(Ch Integrated Development Environment,ChIDE)两大模块构成。ChIDE允许用户在IDE中编辑、调试或运行C/C++程序,其用户界面支持包括中文在内的30多种语言。ChIDE中含有现代IDE中常用的大部分功能。比如,它具有自动语法高亮显示,可帮助用户发现程序的一些语法错误。用户可设置断点,单步运行程序,在程序运行过程中监视变量和表达式值并修改变量值。ChIDE操作简便,是专门为教师授课和学生学习而开发的。ChIDE的特征和布局都是针对那些没有任何编程经验的初学者而设置的。比如,如图11所示,程序func.c连续或单步运行停在第9行时,可以在ChIDE中间的调试窗格内监控局部变量和全局变量的值。变量a和i以及表达式2*g的值可以通过将相应命令输入右下角的调试窗格中获取。教师课堂演示时,还可以方便地改变ChIDE中程序的字体大小。

4Ch的高级科学计算功能

科学数值计算并不是C语言设计的最初目的。比如,在C89中就很难处理多维数组。C99为C语言添加了可变长数组和复数,使得数值计算得到极大简化。Ch进一步扩展了C99的数值计算功能。在Ch中,数值分析方面的复杂问题往往只需调用一个函数即可解决。本部分将阐述Ch在科学计算方面对C语言进行的扩展。这些数值扩展极大地简化了工程和科学中复杂问题的编程。很多工程和科学上的实际问题都可以在课堂演示,在课后练习和项目训练中轻松解决,提高了教学的实用性,并极大地激发学生对计算机编程的兴趣和学习的积极性。

4.1高级数值计算

Ch支持作为一类对象(first-class)的计算数组(computational array)。计算数组可以由类型声明符array进行声明。一维的计算数组作矢量处理,而二维数组则作为线性代数矩阵处理。对计算数组进行运算的操作符重载遵循线性代数的运算规则,如图12所示。

本例中,函数transpose()和inverse()分别用于计算转置矩阵和逆矩阵。对关键词array的处理方法跟C99中关键词complex的相同。在程序中使用计算数组时,应该包含头文件array.h。如果程序中没有包含头文件array.h,那么标识符array仍可作为变量名使用。

Ch含有针对科学数值计算的高级数值分析函数库。比如,线性方程组Ax=b,其中:

通过图13中的程序linsolve.ch调用函数linsolve()进行求解,输出结果如图14所示。

头文件numeric.h包含头文件array.h和数值函数的函数原型。函数linsolve()的算法基于广为应用的开源LAPACK,直接调用了LAPACK中的相关函数。用户无需担心用快速精确的数值算法进行的潜在的优化。通过高级数值分析函数库,用户只需调用一个函数就能解决诸如LU分解、QR分解、伪逆、奇异值分解、矩阵的特征值和特征向量、非线性方程、常微分方程等复杂数值分析问题。

这些高级数值函数对解决工程和科学类后续课程的复杂问题也是非常有用的。

4.2二维和三维图形绘制

图形绘制对数值结果的可视化和解释是极为重要的。C语言默认不支持图形绘制,C语言程序员往往用程序先生成一个数据文件,再使用如Excel之类的软件包,用数据文件中的数据绘制图形,这一过程对算法开发来说很不方便。Ch在C/C++的框架下,为二维和三维图形绘制提供了几乎最简捷的方案。使用图形库(graphical library)的绘图函数(plotting functions)或绘图类(class CPlot)成员函数(member functions),可以在Ch中方便地生成二维和三维图形。Ch可以用数据数组、数据文件或函数生成图形,将其显示于屏幕,保存为不同格式的图片文件,或以适当图片格式输出到标准输出流,并使用Web服务器在Web浏览器上显示。

下面三个例子分别展示了在Ch中绘制二维曲线、三维曲面和三维曲线的简捷功能。

图15所示为函数sinc(x)的二维曲线图形:

x的取值范围为[-10,10]。该图形是如图16所示的Ch程序sinc.cpp通过调用绘图函数fplotxy()实现的。

绘图函数fplotxy()的函数原型为:

Int fplotxy(double func(double), double x0, double xf, int num,

char *title, char *xlabel, char *ylabel);

其中变量func是拟绘图的函数,其自变量区间为[x0, xf],num为绘图取点数,title为图形名称,xlabel和ylabel分别为x坐标轴和y坐标轴的标识。

Ch的绘图函数是通过绘图类(class CPlot)实现的。比如二维曲线绘制函数fplotxy()调用方式:

fplotxy(func,x0,xf,num, title, xlabel, ylabel);

可以用绘图类及其成员函数实现如下:

CPlot plot;

plot.func2D(func,x0,xf,num);

plot.title(title);

plot.label(PLOT_AXIS_X, xlabel);

plot.label(PLOT_AXIS_Y, ylabel);

plot.plotting();

很多别的Ch绘图类的成员函数可以用来绘制不同的图形并达到各种各样的功能。

同样地,三维曲面也可以由Ch绘图函数简捷地生成。图17为数学函数sinr(x, y) 形成的曲面,sinr(x, y)为:

,其中该曲面绘制可由如图18所示的Ch程序sinr.cpp通过调用绘图函数fplotxyz()来实现,其中x在区间[-10, 10]取点数为80,y在区间[-10, 10]取点数为100。

绘图函数plotxyz()可以用来绘制三维曲线或表面。图19是由如图20所示的Ch程序helix.cpp调用plotxyz()生成的,其中t从0到10π的曲线段上含有300个点。在绘图函数plotxyz()中,前三个数组变量与参数函数x、y和z相对应,第四个变量为三维曲线取点数,其他变量与函数fplotxy(), fplotxyz()相同。

使用绘图函数的程序也可以用C++图形库(SoftIntegration Graphical Library,SIGL)[9]在C++编译器中进行编译和链接。比如,图16、18和20所示的程序可用微软的Visual C++来编译、链接SIGL图形库产生可执行的文件。ChIDE集成开发环境不但可以直接解释执行这些调用绘图函数的程序,而且还能够通过编译和链接的方式产生可执行的文件来执行这些程序。

以高级图形绘制和数值函数为基础,大量教学和工程应用工具包可被开发出来。现已开发的工具包包括控制系统工具包[10]和机构设计和分析工具包[11]。图21所示动画是一位学生为机构设计课程项目训练所开发的快速回归机构[12],只需短短34行代码即可实现该机构的数值和图形输出以及仿真。

5Ch命令外壳(Command Shell)和Shell编程

随着计算平台的日趋多样化,为学生提供除Windows的更多跨平台实践的机会就显得越来越重要了。Unix和Linux也是学生需要学习的重要操作系统。计算机的图形用户界面(graphical user interface,GUI)固然好用,但是在命令shell中却可以更简便地完成一些诸如建立多个目录之类的任务,而在处理多平台任务时更是如此。不同平台采用的图形用户界面往往是不同的。此外,shell编程的脚本可以高效地自动执行重复任务,比如系统管理、回归测试、快速编程。常见的Windows MS-DOS和Unix shell(包括Bourne shell,C shell和Korn shell)的语法都是非常繁杂的。和低级汇编语言的符号记忆形式类似,MS-DOS和Unix shell元字符组(metacharacters)的特殊含义很难被记住。因此,用MS-DOS和Unix shell编程语言编写的大篇幅shell脚本较难读懂,也不容易进行修改和维护。再者,MS-DOS和Unix shell编程语言的功能也十分有限。

Ch是一个无需中间字节码(bytecode)的解释器,它也是一个命令外壳(command shell)。Unix系统下,处理Ch shell命令的方法与Bourne shell和C shell之类的常规Unix shell采用的方法是相同的。跟其他Unix shell一样,Ch也能当作login shell使用。大部分Unix命令都是用C语言编写的。Ch为C语言和shell进行了几乎天衣无缝的衔接。在Windows系统下,Ch支持Unix和MS-DOS规范。作为一种可移植命令shell,Windows系统下的Ch包含了Unix shell中常用的200多个Unix命令,比如vi、ls、mv、grep、find、awk、sed和wget等。这样有Windows操作经验的学生可以在熟悉的环境中学习Unix和Linux,自然地过渡。Ch可用于交互式命令解释和shell编程设计。从shell编程的角度看,Ch是一种超高级语言(very high-level language,VHLL),并同时保留了shell的特性,比如命令行编辑、命令替换和别名等。作为命令外壳,Ch的大部分特性与常规的Unix shell相同。在命令shell和shell编程方面,Ch被设计得尽量接近C shell,但不完全相同。Ch shell是一种真正意义上的C shell,并且在Windows、Unix和Linux中都可以使用,因为Ch是C语言的超集,用Ch编写脚本更高效,而且易于维护。

Ch具有现代命令shell该拥有的大部分特性,其中包括历史替换、快速替换、文件名替换、管道、输入和输出重定向、别名、后台运行命令、敲tab键补全文件名和命令,以及使用键盘上的方向键重现命令。这些特性大部分都与C shell和Bourne shell兼容。

在Ch shell中,用户可以在shell的提示符后面输入命令。这些命令包括编译的可执行文件、shell脚本、C语言程序。例如,图22所示的这条命令便可建立dir1和dir2两个目录。

如果要在其他脚本诸如Bourne shell中执行Ch脚本,可以在Ch程序首行含有以下组织行:

#!/bin/ch

如图23所示为Ch脚本script1,该脚本的文件名为script1。在Ch脚本中主函数main()可省略。该脚本由替换命令`uname`生成的字符串与程序预定义的字符串“Linux”和“windows32”相比较来决定程序运行在什么操作系统上,字符串变量s1,s2的值“dir1”和“dir2”则作为mkdir命令的变量。如果该脚本在Linux或Windows操作系统中运行,就会建立dir1和dir2两个目录;如果运行在其他操作系统,则会产生出错信息。

6Ch作为嵌入式脚本引擎

设计软件系统时采用嵌入式脚本柔性编程已越来越流行。在嵌入式脚本的编程范例中,解释器或脚本引擎被嵌入到编译的应用程序中。应用程序可以通过嵌入的解释器执行脚本代码,该脚本代码还能依次调用应用程序和其他函数库中编译的函数并与其共享数据。虽然强大的可嵌入解释器可以极大加快软件开发和部署的速度,但这种柔性编程规范的方法和功能还有待进一步开发和充分利用。

比如,如果将C/C++解释器嵌入到一个自控程序中,对硬件和软件进行测试,则质保工程师就能用C/C++测试脚本调用编译的C函数和C++成员函数。编译的应用程序仅通过调用不同脚本就可用来测试不同产品,这些调用的脚本可以从图形用户界面输入或从文件调入。再如,嵌入式解释器可以为不同客户和应用定制产品,在不改变标准产品的情况下,可根据客户的具体需要给应用程序加入额外功能。应用程序在特定的点调用和执行脚本就能实现客户期望的具体行为。

用于嵌入式脚本的可嵌入解释器有好几种,但最理想的情况是,应用程序的编译代码和脚本代码使用同种编程语言。否则,在编译的二进制空间和脚本空间之间共享数据就会困难而复杂。

C和C++是最常用的编译应用程序开发语言。对于用C/C++编写的应用程序来说,嵌入一个C/C++解释器是最合逻辑的选择,如图24所示。用C/C++编写的应用程序和C/C++脚本均可无缝地共享内存、函数和头文件。

嵌入式Ch具有大量可用于嵌入脚本的应用编程接口(Application Programming Interface,API),比如可在编译的应用程序中跟踪和分析C/C++脚本代码。单个嵌入的解释器就能处理多个C/C++脚本,多个解释器也可嵌入到单个进程中,多个解释器还能嵌入多线程应用程序的不同线程。

虽然如何嵌入脚本引擎到编译的应用程没有包括在计算机编程入门课程中,但是图11所示用于教学的ChIDE中嵌入了Ch解释器,用来解释执行在编辑窗格中的C和C++程序。解释器执行C和C++源代码可以为程序调试提供更多明确的出错信息,而简单明确的出错信息对初学者调试程序尤为重要。再如,Ch解释器嵌入到Mobile-C(一个multi-agent平台),用以支持mobile C/C++ agent,而这种基于agent的移动计算可应用到各种智能机械电子和嵌入式系统中,用动态柔性编程来提高各项性能[13]。

很多龙头企业都在使用嵌入式Ch,如Agilent Technologies公司用嵌入式Ch调控仪器仪表,Lockheed Martin公司用嵌入式Ch做飞机的设计和仿真,ABB公司用嵌入式Ch作自动控制,LG Electronics公司用嵌入式Ch检测生产的电子产品。FunctionBay公司为处理C/C++脚本,将Ch嵌入到其拳头产品RecurDyn(这是一款用于多体动力学分析的软件程序)中。图25显示的是嵌入式Ch和基于mobile C/C++ agent的移动计算在工业机器人、移动机器人、嵌入式系统、智能交通和机电系统设计和仿真中的应用。

基于标准语言的可靠的嵌入式脚本引擎可以免掉开发人员在开发和维护私有脚本语言或解释器上的负担,而开发和维护一个跨平台的基于私有语言的嵌入式引擎在人力、硬件、软件、开发、测试、维护、系统管理、培训和技术支持等方面的成本是非常昂贵的。

7基于Ch的C程序设计教学平台

自从1992年以来,我在加州大学戴维斯分校每年教授工程类学生C语言计算机编程的入门课程。在课堂讲学中,我在笔记本电脑上以交互的方式使用Ch。Ch使我能够快速地演示C语言特征和编程原理,特别是在回答学生问题时。学生们可以快捷地体验C语言的不同特征,无需进行冗长的编译/链接/运行/调试的循环操作。经过10多年教学经验的积累,目前已形成了以Ch为核心的C语言程序设计课程的教学平台[4],体系结构如图26所示。它包括Ch计算环境(由Ch命令外壳和ChIDE集成开发环境两大模块组成)、C语言教材和课件(含350有详细注释的完整实例源程序、1400多页课堂授课用PPT、500多道习题)、讨论训练素材(含200多页课堂讨论用PPT)、教师指南(含教学目标、计划、试题库)和习题题解手册(含每章习题答案及相关源程序)。以上四部分内容是我们长期教学和科研经验的积累和不断完善的结果。

该教学平台主要面向没有任何编程经验的初学者,通过教与学,帮助学生理解和掌握C语言程序设计原理、编程与调试方法以及工程与科学计算算法程序实现,并能够用C编程来解决工程和科学实际问题。

该教学平台已被世界各国越来越多的高等院校所接受和采用。教学实践及反馈表明,该教学平台具有以下主要特征:

(1) 实现了C语言的直观交互式的教学方式,降低了C语言的学习难度

C/C++语句、表达式、函数和程序都可以在Ch命令外壳和ChIDE中解释执行。因此,教师可以在课堂上对C/C++语句、表达式、函数和程序等进行直观的交互式的演示教学,帮助学生形象化地理解C语言指针、结构体、数组、编程逻辑、编程调试等学习难点,让学生能像学习BASIC语言一样学习C语言。

(2) 使用高级数值计算、图形绘制功能以及工程用例,增强了C语言学习的生动性和实用性

该平台具有强大的高级数值计算、二维/三维绘图功能和底层硬件连接与工业控制功能,并附有丰富的工程及科学实际编程应用案例,可以形象而又便捷地展示和讲解使用C语言解决较复杂的工程和科学问题中的应用,有利于激发学生学习的积极性,提高教学的实用性。

(3) 支持跨平台功能,可帮助学生了解和熟悉不同操作系统下的C编程特点及方法

在美国、俄罗斯、欧洲、日本、中国等国家,Windows、Linux、Mac OS X、Unix等操作系统均被广泛使用,而在工业控制、嵌入式系统及Web服务器等领域,Linux操作系统占有更重要的地位。Ch具有跨平台的特点,可以帮助学生了解和熟悉C语言在不同操作系统中进行程序设计和执行的特点,有助于他们在今后工作和学习中适应不同操作系统环境下的程序设计、开发和应用。

(4) 此外,Ch教学平台中的Ch命令外壳、ChIDE以及教材等均支持ISO C89标准的所有语言特性和标准库、C99的大部分新增特性以及64位编程功能,是目前关于C程序设计知识最为完整的教学工具之一。在编写教材时,我们既考虑到初学者的需要,力求浅显易懂、深入浅出,同时也兼顾C语言知识和技能的系统性和实用性,并对一些疑难的高级知识点做了专门的实例化剖析,力求使之成为学生在后续课程学习及今后解决工程和科学领域实际问题时的重要参考资料。

8结语

Ch是一个完整的C语言解释器,同时支持C99新增的大部分特性和C++类。Ch的计算数组、高级数值分析函数、二维和三维图形绘制功能是C/C++框架下最便捷的形式,这些功能可用来方便地解决许多工程和科学中的复杂问题。Windows下的Ch计算环境支持常用的Unix和Linux命令,使学生能够在熟悉的Windows环境中学习Unix和Linux。Ch可作为一个C/C++脚本引擎被无缝地嵌入到其他应用程序中。越来越多的应用程序扩展后都具备了C/C++脚本功能。

基于Ch的C程序设计教学平台是在美国加州大学十多年教学和科研中不断积累和总结而成的一项重要教学成果,并形成了独特的教学模式。该教学平台包括跨平台的C/C++解释性计算环境(由Ch命令外壳和ChIDE集成开发环境组成)、成套的教材及课件、相应的讨论训练素材和完整的教师指南。教学实践及反馈表明,该平台能增强教学的实用性,提高授课效果,降低初学者学习计算机程序设计的门槛,并有助于激发初学者对计算机编程的兴趣和学习的积极性,帮助他们真正理解和掌握如何应用计算机编程这一种重要工具来解决工程和科学中的实际问题。Ch和Ch教学平台可从网上下载[3][4],希望它能使您的教学和编程任务更加快乐有趣。

参考文献:

[1] H. H. Cheng,“Scientific Computing in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 49C75,Fall 1993.

[2] H.H.Cheng,“Extending C and FORTRAN for Design Automation”,ASME Trans.,Journal of Mechanical Design,Vol. 117,No. 3,pp. 390C395,Sep 1995.

[3] Ch―an Embeddable C/C++ Interpreter,.

[4] H. H. Cheng,C for Engineers and Scientists:An Interpretive Approach,New York:McGraw-Hill,Inc. March 2009; iel.ucdavis.edu/cfores;中文版将由高等教育出版社出版.

[5] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1990.

[6] H. H. Cheng,“Handling of Complex Numbers in the Ch Programming Language”,Scientific Programming,Vol. 2,No. 3,pp. 76C106,Fall 1993.

[7] H. H. Cheng,“Extending C with Arrays of Variable Length”,Computer Standards and Interfaces,Vol. 17,pp.375C406, 1995.

[8] International Standard:Programming languages - C,ISO/IEC,Geneva,Switzerland,1999.

[9] SoftIntegration Graphical Library,/products/silib/graphlib/.

[10] Y. Zhu,B. Chen and H. H. Cheng,“An Object-Based Software Package for Interactive Control System Design and Analysis”,ASME Trans. Journal of Computing and Information Science in Engineering,Vol. 3,No. 4,pp. 366C371,Dec. 2003.

[11] H.H.Cheng and D. Trang,“Object-Oriented Interactive Mechanism Design and Analysis”,Engineering with Computers,An International Journal for Simulation-Based Engineering,Vol. 21,No. 3,pp.237C246,May 2006.

[12]M. Campbell and H. H. Cheng,“Teaching Computer-Aided Mechanism Design and Analysis Using a High-Level Mechanism Toolkit”,Computer Applications in Engineering Education,Vol. 15,No. 4,pp. 277C288,2007.iel.ucdavis. edu/.

[13] Mobile-C:A Multi-Agent Platform for Mobile C/C++ Code,.

Ch: a Pedagogically Effective Cross-Platform Interpretive C/C++ Computing Environment

Harry H. Cheng, Professor

(University of California, Davis, USA)

Abstract: C is one of the most popular languages used to teach introductory computer programming. A pedagogically effective cross-platform C/C++ computing environment called Ch is introduced in this article. Ch is a complete C interpreter. It supports most new features added in C99 and classes in C++. Ch consists of both command shell and user-friendly IDE called ChIDE. In addition, Ch supports computational arrays, a graphical plotting library, and advanced numerical functions for solving complicated problems in engineering and science conveniently. Furthermore, the Ch computing environment in Windows supports commonly used Unix and Linux commands. It allows students to learn Unix and Linux in a familiar Windows environment. Ch can also be seamlessly embedded in other applications as a C/C++ scripting engine for flexible programming. Finally, a Ch-based teaching platform developed and used at the University of California, Davis over the years for teaching introductory computer programming in C will be briefly presented. Experience indicates that this C/C++ interpreter based teaching platform increases the effectiveness of teaching computer programming for real-world problem solving and lowers the barrier for beginners to learn computer programming. It helps students to fully understand and master the working principle of computer program design for solving problems in engineering and science, which is one of the most important and basic skills for engineers and scientists.

计算机函数入门教学范文2

中图分类号:G434 文献标识码:A

Computer Application DesignTeaching under the

Guidance of Constructivist Theory

WANG Jianhua, WANG Huiping, FENG Fan, QI Hongjun, ZHANG Hailong

(Computer Department of Baiqiuen Medical College, Shijiazhuang, Hebei 050081)

AbstractAccording to health and non-commissioned officers' characteristics and patterns of cognitive, this reasearch is based on "Computer Application" of Constructivist Theory, and aims to raise their motivation to learn, enthusiasm, nurturing positive thinking, and improve learning efficiency. Take EXCEL formulas and functions as an examle, and explain how to use constructivist theory formulas and functions to carry out effective teaching. The practice shows that this instructional design is effective to improve the classroom atmosphere, guide students to participate in classroom activities actively and achieve a good teaching effect.

Key wordsconstructivist; computer teaching; EXCEL

建构主义又称作结构主义,最早源于瑞士著名心理学家皮亚杰(J.Piaget),自21世纪初开始被我国教育界广为接受,并开始了大规模的学习和研究,由此引发了教学理论、教学方法、教学资源、师资力量建设等有关教学的多方面改革。与传统意义上的课堂教学不同的是,教师不再是单纯的知识传授者,学员也不再是知识的被动接受者,该理论强调的是在教师充分发挥主导作用的基础上,更为注重学员在教学活动中主体地位,让学员真正成为教学活动的主人,以学员为中心开展各种教学活动。在建构主义理论指导下,教师,尤其是青年教师,如何完成角色转变,将新的教学理论和方法融入到课堂教学中,是每一位教师值得研究的问题。本文以基于建构主义的EXCEL公式与函数教学设计为例,探讨如何将建构主义理论在计算机应用课堂教学中充分发挥作用,研究基于建构主义的计算机应用教学的新模式。

1 基于建构主义的教学设计基本思想

根据部队卫生士官岗位任职需要,《计算机应用》课程教学的基本理念是突出人才培养的针对性、应用性和实践性。因此,本次课本着“基本理论‘零冗余’、基本技能‘过饱和’”的基本原则,运用建构主义理论,围绕建构主义理论的四大要素:“情境”、“协作”、“会话”和“意义建构”,对基于案例的任务驱动式教学模式展开设计,旨在更为行之有效地开展教学工作,提高学员学习的积极性、主动性和创新能力,从而达到良好的教学效果。

1.1 教学目标

(1)知识和技能。掌握基本公式的输入方法,灵活运用公式解决实际问题;学会函数的使用,能够利用函数对数据进行统计计算。(2)过程和方法。基于案例,创设情境,通过建构主义的设计思路为学生灵活掌握Excel公式和函数作层层深入探索,激发学员参与交互式学习的积极性,在交互过程中去完成任务的理解、知识的应用和技能的训练,培养学生的知识构建、知识探索和创新能力。教师在其中主要起到主导作用,为学生的知识构建提供必要的条件和适当给予指导。(3)情感态度和价值观。通过熟练使用公式和函数进行所需要的计算,培养学生数学计算的逻辑性,提高学生利用所学知识解决实际问题的能力。

1.2 教学策略与手段

知识及技能的传授以完成典型“任务”为主。因此本次课采用建构主义理论指导下的基于案例的任务驱动式教学模式,分析案例、层层解剖、创设情境、设置任务,让学员运用已学知识分析任务、解决任务,以任务驱动的方式,使教学内容合理流动,水到渠成。

2 教学实施过程

2.1 依托案例,创设真实情境

展示学员入学复试时的成绩单。设置如下情境:(1)如何计算每位学员的总成绩?(2)如何统计每门课程的最高分、最低分、平均分?(3)如何计算每位学员的成绩排名、不及格门数,如何判断其是否通过考试?

学员思考,如何快速完成上述统计任务,看看自己的成绩在班里的情况。使学员带着疑问、好奇,进入新课的学习。考试成绩及排名一直是学员比较关心的话题,通过这个情境设置,帮助学生意义构建,激发学员的学习兴趣和参与热情,为新课内容做铺垫。

2.2 深入情境,辅助学员意义建构(下转第20页)(上接第18页)

(1)解剖案例,促进学习自行解决问题。

提问:如何计算每位学员的总成绩?

学员:各科求和。

引出公式的基本输入方法,引导学员注意观察公式的结构,并带领学员演绎出公式的定义。请学员自主完成每位学员的总成绩计算。通过这个环节,培养学员的主动探索意识和解决实际问题的能力。

(2)探索学习,启发积极思维。

引导:如果每位学员的考试科目很多,一一进行累加,很浪费时间,有没有更为简单的方法进行计算,从而引出函数的使用方法。

教员利用求和函数演示计算一位学员的总成绩。强调函数和公式的共同特征。介绍函数的搜索方法。

2.3 运用知识的社会性,培养学员合作意识

为学员提供成绩统计表,要求求出所有学员的总分、平均分、最高分、最低分,统计每位学员的不及格门数,并根据不及格门数判定每位学员是否通过考试。组织学员通过分组、协作、讨论的方式进行。在这个环节中,教员只起引导作用,把自还给学生,让他们充分讨论,进行自学,以提高课堂效率、提升学生学习能力。

练习后,请学员演示讲解求和函数、求平均函数、最大值、最小值函数、计数函数及条件函数的使用方法。教员根据学员的演示情况进行总结,重点地方解释说明,引导学员自己发现问题、分析问题、解决问题。

2.4 设置情境,培养学员自主学习、创新能力

布置任务,根据学员总成绩,在判定列给出判定结果,要求:总成绩在380分以上的为“优秀”,在330(含330)至380(含380)之间的为“中等”,在330以下的为“不合格”。

该任务的目的在于使学员在条件函数的基础上,主动探索,运用嵌套函数对复杂的分类问题进行运算。采用先探索,后演示,再练习的方法进行。先探索指的是将任务留给学员,学员先进行自主思考,尝试解决问题;再演示指的是学员在自主思考探索后,向教师和其他学院演示自己思考的结果(其它学员可进行讨论);再练习指的是学员在听取别的学员讲解后进行自主解决问题的过程。经过这样一个思考问题、分析问题、解决问题的过程,锻炼学员的自主学习能力和创新意识,使学员面临问题时能切实通过自己的思考探索需求答案。

2.5 课堂小结

引导学生在探索和实践的基础上对公式和函数的使用作简单的回顾和总结。具体采用的方法是列出课上用到的几个函数的名字,请学员说出每个函数分别在什么情况下应用。通过学生对本节学习内容和学习方法的回顾,达到知识升华、提升自身能力的目的。

3 课后分析

教学过程结束后,教员根据课程的特点及学员学习情况、学习效果,对教学全过程作出一个整体综合性的评价,对教学的各个环节进行反思,查找不足,看看教学情境的设置是否合理,协作学习的组织是否到位,学员的积极思维是否被调动,创新能力是否得到锻炼和培养等。针对不足,制定相应的改进措施,及时修改、补充、完善教学设计,以指导下次课的有效实施。

参考文献

计算机函数入门教学范文3

关键词 C语言;中等职业教育;计算机专业

中图分类号:G712 文献标识码:B

文章编号:1671-489X(2015)23-0083-02

1 前言

《教育部关于进一步深化中等职业教育教学改革的若干意见》(教职成〔2008〕8号)明确提出,中职教育要坚持以人为本,关注学生职业生涯持续发展的实际需要,培养他们具有良好的职业道德,掌握必要的文化知识和熟练的职业技能,成为德、智、体、美全面发展的具有中国特色社会主义事业的建设者和接班人。随着社会对中职学生的要求关注度逐渐提高,中职教育面临的问题也日益突出,尤其是学生质量的下降与社会的高期望值之间的差距,对从事中职教育的老师提出了更高的要求。如果教与学的问题解决不好,就会影响技术技能型人才的培养质量,继而影响整个社会经济的发展。

2 中职学校计算机专业开设编程语言课的必要性

自1987年起,国家教育部就开始了中职毕业生直接上大学(普通高校)的探索。目前,国家每年都有部分普通高校本科和专科对口单独招录中等职业学校毕业生,这为中等职业教育的发展提供了有利条件,拓宽了中职学生继续学习的渠道。中职学生升入高一级学校,继续学习计算机相关专业,编程语言课的学习是必然的,因此在中职阶段提前开设相关编程语言课的学习就很必要,它会为学生今后拓展专业知识奠定有利的基础。

3 中职计算机专业学生现状

1)学生普遍阅读能力差,抓不住重点,遇到题目不明其意。

2)逻辑推理能力差,缺乏全局统筹安排意识,遇到问题不知如何解决,加之中职配套教材例题又多以数学问题为主,学生初中阶段甚至是小学阶段的数学知识欠缺,直接导致现阶段问题突出。

3)英文界面的操作有难度,关键字不能借助英语知识记忆。

4)变通能力差,不会举一反三。

5)学习惰性强、缺乏自信,遇到困难不愿自行解决、认为也解决不了。

6)主观意识中排斥编程类课程的学习,认为没有实际用途。

4 教学思考与对策

目前,中职学校编程语言主要开设VF和C两门课程,VF的学习相对容易一些,可视化的界面直观形象操作也很简单,同时VF作为高考对接考试中的考试科目,学生主观上更重视一些,无论是老师的教还是学生的学问题不突出。而C语言前几年曾经是考试科目之一,近两年被取消,目前有些中职学校又在重新开设,具有一定教学难度。教师考虑到学生今后的学习需要,这门课就是让学生理解计算机在解决问题时所采用的思路、方法,让学生逐步形成解决问题、统筹布局的能力,要合理安排这门课程的教学难度,提高学生的学习兴趣。

科学合理安排教材内容 学校现在所用的是高等教育出版社编写的《C语言程序设计教程》,从第一章到第十章内容分别是概述、数据类型和运算、基本输入与输出、流程控制、函数、数组、指针、结构与联合、编译预处理、文件、对外接口、图形、汉字处理、用户界面技术。

按照以往的教学经验和往届学生的学习效果,再结合学生的认知结构,笔者将第二章数据类型及运算的知识点结构做了些微调整,即先讲数据类型,然后将整型、实型、字符型数据类型又分为相应的变量和常量,常量讲各种表示方法,变量讲标示符命名规则、讲不同的定义形式、讲初始化和赋值方式。第三章基本输入的知识点也做了相应的调整,调整为先讲单个字符的输出与输入函数,再讲格式化输出与输入函数,而字符串的输出与输入等到学完数组和指针后再讲。C中的图形和文本部分,界面效果相比较适合,但程序相对大,函数、指针的运用比较多,程序有相当的难度,所以这几章内容我在课堂上不讲解,但会建议感兴趣的学生自行上机调试,看程序界面和前几章的有何不同,为学生今后的继续学习留一些空间。

适当降低教学难度并调整讲课进度 在每节课的例题中精选一些学生容易掌握的、有特点的例题进行讲解,并对其举一反三、变换对比程序,让学生每节课学得少而精。

不同章节选用不同的教学方法 同时注意将上机环境融入到课堂讲授中,让学生直观的认识程序的调试、运行、结果的必然联系和关系,引导学生发现课堂分析程序与上机调试程序存在的区别,这样有利于学生课后自学,逐步提高学生的自学能力。

1)讲函数的定义时,可将之前学过的程序代码(主函数中实现相应功能的程序语句)改写到自定义函数体中,然后为该自定义函数加上相应的变量说明、输出语句等,使之形成完整的自定义函数。然后再让学生反复练习,将改写的程序变成自定义函数。

2)讲函数的调用时,接触到的程序中一般含有多个函数,因此先教学生将大程序分成小模块(每一函数就是一个模块),然后结合上机过程,采用F7键进行单步调试,每次点按F7,程序从主函数进入后会单步顺序走一条语句,直到碰到调用语句时,程序会跳转到相应的自定义函数定义处,接着再按F7键,程序会从自定义函数定义处顺序执行,遇到return语句时程序又会返回到调用位置处。结合上机过程讲解这节内容,程序的走向、函数的调用、函数的返回过程清晰明了,相比较课堂的讲解效果好许多。

3)讲解变量的存储类型和作用域时,也可采用上述的将程序划分模块的方法,引导学生将程序分成若干源文件、若干函数,接着在函数外找到外部变量和外部静态变量,在函数内部找到局部变量和局部静态变量,最后告知学生每一种变量的作用域和特点,这节内容上机调试程序时,教学生利用监视器窗口对每种变量添加监视,仔细观察每种变量的初值、变化情况以及最终值的保留情况(即作用域的长短)。

课后作业控制难度 多年的教学发现,课堂上学生跟着老师能较顺利地完成程序代码的分析,得到正确的运行结果,但是独立完成作业时,却问题很多,这说明学生对课堂内容没有完全掌握,独立解决问题的能力不够,所以课后的作业难度要降低,作业可以以小组(3~5人)的名义上交,交作业的最终目的是检验学生对课堂内容的掌握情况,促进相互学习,这样既锻炼了学生,又增进了他们之间的感情,还能体验成功的乐趣,增强他们的自信心。

注重和其他专业课程的衔接 如和VF课程的衔接。编程语言都有相通之处,VF 和C就是这样,在处理有些问题时,只是两种语言的表示方法不同而已,让学生对比学习,效果会更好。

5 结语

语言类的教学会有这样的瓶颈,教得浅了,学生学得容易,但实际编写代码的能力不高;教得深了,学生学起来难度太大,提不起学习积极性,反而会打击学习热情。笔者认为语言类的教学尤其是C语言对学生的帮助短期内可能看不到明显的效果,它更多是思维上的潜移默化的影响,比如考虑问题的角度、解决的步骤、是否考虑到多个方面等。

参考文献

[1]谭浩强.C语言程序设计[M].北京:清华大学出版社,

2001.

[2]徐维祥.C语言程序设计教程[M].北京:高等教育出版社,2004.

计算机函数入门教学范文4

关键词:数学 信息技术 整合

一、整合需要体现新特点

数学,是抽象性、逻辑性很强的一门学科。而高中学生的思维正处于由具体形象思维为主向抽象逻辑思维为主的过渡阶段,信息技术在抽象的数学知识和学生的形象思维之间架起一座桥梁。作为一门学科、一种工具引入教育,信息技术带动了教育从教学内容、教学目标、教学方法等多方面的深刻变革,它与各学科的整合是信息技术应用于教育的重要表现形式。信息技术是数学教学中强有力的认知工具,对学与教具有极大地促进作用,它不仅是便捷的作图、运算工具,而且是构建“多元联系表示”的教、学环境的有力工具,是提供数学实验及数学实践活动的有效手段,能极大地促进学生数学思维的形成。

在以往信息技术与课程的整合中,人们往往停留于将计算机代替幻灯、投影、粉笔、黑板等传统媒体,因为计算机展示的多媒体课件能动态地展示数学中的变化过程和理论模型,使抽象的概念和原理形象化,从而使教学重点更加突出,教学难点更易突破,学生理解就更加深刻。然而,这样做往往使教学陷入另一个误区,那就是:学生从以前的教师灌输式的教学又进入了“机器灌输式”教学,学生的自主能动性和探究精神受到了扼杀,这显然是与新课程改革精神背道而驰的。所以在新课程理念下,作为信息技术与课程的整合我们应该寻去新的途径,探求新的特点,实现有效的整合。

新课标下的数学把培养学生的自主学习能力、创新能力,为学生提供发展的平台为主旨,以提升学生的数学素养为目标。同时,高中信息技术课程的以提升学生的信息素养为根本目标,这正是二者进行整合的切入点和落脚点。学生信息素养的提升能促使学生利用信息技术工具理解和解决数学问题,同时学生数学素养的提升又反过来促进自身信息技术能力的提高。二者的有机整合,对我们实现优秀人才的培养,全面实施素质教育具有深远的意义。

与此同时,随着教育内容和教学目标的改革,教学组织架构和形式也在发生着相应的变革。教学目标强调以真实性问题为学习的核心。这样,就要求教学必须打破传统的45或50分钟一堂课,学生都坐在教室中听课的时间和空间限制,必须以项目和问题为单位,对学习的时间和空间进行重新设计和规划。在教学的组织形式上,活动安排的分组上,也要打破传统的按能力同质分组的方式,实行异质分组。互联网或局域网提供提供了丰富资源,信息技术作为交流工具为学生利用网络进行合作学习,自主的探究式学习提供了环境。

二、整合需要新途径

数学教学偏重于逻辑推理及学生抽象思维能力的培养。传统的教学中,学生根本没有“做数学实验”这个概念,学生大部分时间处于聆听、抄笔记的状态,并没有积极参与。信息技术能够突出数学教与学“互动”,利于学生主体参与。利用信息技术操作将生活中数学问题的情景再现,可以让学生从具体问题到抽象概念,从特殊问题到一般规律,逐步通过自己的发现、探究去思考数学、学习数学。数学问题教学的核心是培养学生的思维,而思维能力的培养,需要经历实践――认识――再实践――再认识的过程。开展数学实验是信息技术与数学课程教材整合的一个重要手段。某种数学思想通过计算机去实验一下,这就是“数学实验”。数学的猜想与数学的实验是分不开的,在数学实验中,往往要通过观察、分析、归纳、处理数据、发现规律。信息技术教学模式中的“任务驱动法”、“问题激励法”、“主题探究法”在数学教学是信息技术与学科整合应用的最好的典范。

为学生的数学学习创设良好的实验情境,通过数学实验可以对一些函数图象的类型进行实验、观察、归纳得出规律。学生亲历整个数学探索的过程,始终处于主体地位,有利于发挥学生的想象空间,对所实验的数学问题必然有相当深刻的认识。以一元二次函数为例说明数学与信息技术整合的优势。数学思想是描点法制作函数图像,从函数图像中分析函数性质。

1.利用信息技术相关软件制作函数图像增强互动性

利用excel填充序列的方法快速对称地制作出x相应数值,再利用求值操作计算出对应y的值,最后制作“XY散点图中的平滑线散点图”图表。观察函数图像的特点。改变abc三个参数,excel图表可实现所见即所得,轻松观察函数图像的变化。填写实验记录包括:a与开口方向的关系、a与开口大小的关系、对称轴、顶点坐标、最值、单调性等,总结函数特征。

类似的软件还有几何画板、Z+Z超级画板等,由于学生亲自动手,直接参与,激发了学习兴趣,有兴趣的学习能促进学生的积极思维,牢固掌握知识。

2.同时完成信息技术与数学相关内容的教学

为解决一个问题而采取的方法和步骤,称为算法。随着现代信息技术的飞速发展,算法思想已经成为现代人应具备的一种数学素养。算法思想高中信息技术五门选修课中的一门课,与高中数学的必修教材内容对应。数学教学重点放在算法的思想的培养上,培养学生的数学素养。信息技术课程中重点用算法思想结合计算机语言进行实际问题的解决,编写计算机的程序,旨在提升学生的信息素养。如何实现信息技术与数学课程算法这一章的有机结合呢?尝试先分析制作二次函数的图像的算法,画出流程图,根据数学算法分析,完成VB代码的编写,在VB调试环境中测试运行一下,得到函数图形。归纳出计算机解决问题的步骤:需求分析(设计算法(编写程序(上机调试与维护。

改变相关参数生成标准函数图像分析函数特征,同时试着改变步长值理解循环的含义,改变图像的颜色等,学习VB相关语句。

信息技术与其他学科教学的整合要注意切忌滥用信息技术,忽略与学科的整合;颠倒教与学的“主导”和“主体”关系,同时教师要加强信息技术应用的学习。

总之,教学中可以采用“活动式”、“启发式”、“探究式”等多种教学模式;教学设计中安排大量的尝试性、探索性的活动,引导学生积极主动地完成学习任务。逐步建立起自主性和研究性的学习模式,从而更加突出学生在教学过程中的主体地位。安排大量的实践性、操作性的内容,使学生在具体活动中理解信息技术的基本知识,掌握信息处理的基本技能,并能够灵活应用到学习和生活中。

参考文献:

[1]普通高中数学课程标准研制工作组.普通高中数学课程标准[M].人民教育出版社,2004.

计算机函数入门教学范文5

一、当前程序设计教学方法改革的必要性

(一)传统教学模式、教学方法与程序设计的学科特点不相适应

多媒体课件以其生动性和方便性在高校计算机教学过程中被广泛应用。然而程序设计是逻辑性和实践性很强的一门课程,仅仅依靠投影大屏幕和多媒体课件的教学思路无法适应程序设计灵活多变的学科特点,不能对学生创造性思维和自学能力的培养起到积极的作用。还有一些教师过分依赖电子课件,教师变“照本宣科”为“照课件宣科”,容易挫伤学生的学习积极性。另外由于播放电子课件信息量大、速度快,学生没有得到思考的空间,学习效果并不理想,而且学生无法做到边听课边做笔记,印象较浅,容易遗忘。

(二)学生的动手实践能力较弱

很多高校在教学过程中更多地注重程序设计语言理论知识的学习而忽视了工程技能的培养。这样就会导致教师和学生偏重于编程语言语法的教学而对计算思维的培养和工程实践重视不够,导致重语法轻算法,实际工程开发能力薄弱。这就要求教师需要布置大量既包含基本知识点又有一定创新性和拓展性的上机实验,才能帮助学生实现从知识到技能的转换,巩固所学的理论知识。

二、程序设计教学方法改革的意义

不断探讨研究和推广新的教学方式,将更有效的新教学方式应用于计算机教学,是不断提高教学水平的好方法。程序设计课程的特点是理论与实践相辅相成,理论是基础,实践是手段,应用是目的[2]。很多学生上课能听懂,但是自己动手编程时感到无所适从。传统的“在学中用”的教学方法,其重点往往局限于讲解基本概念、语句格式、语法等内容,学生往往会考试但解决实际问题的能力较差。若采用“在做中学”的教学方法,以一个应用实例为前导,例如讲授讲解程序设计时以找最大(小)值、素数、排序、求阶乘、求一元二次方程的根等案例形式导入知识点,这样学生就比较容易接受和掌握所学的知识和内容,实践技能也在做中得到了锻炼和培养。教学方法是在教学过程中教师和学生为了实现共同的教学目标,完成共同的教学任务,运用的行为方式与手段的总称[2]。教学方法既是一门科学又是一门艺术,良好的教学教学方法对于学习兴趣的激发和学习效果有着明显的作用,尤其是程序设计教学方法对于培养工程实践能力和计算思维起着重要的作用。具体体现在:一是教师的教法不仅关系到教学效果,同时也影响着学生的学习方法,采用什么样的教学方法对于培养学生的思维模式和知识结构也具有重要的影响。二是程序设计教学法的研究与探索能够促进本学科教师的教学水平与教学能力,提高教学质量。三是程序设计教学方法的改进能够引发学生的学习兴趣和学习成就感,促进多种教学资源的合理使用,取得最佳教学效果[3]。

三、程序设计常用教学方法

(一)案例教学法

案例教学是根据教学目的和教学内容的要求,通过引入并分析各种案例来开展教学活动的教学方法。案例教学法教学过程是:案例设计—案例分析与讨论—案例实现—归纳总结知识点。案例教学法与传统的举例说明有着本质区别。传统的举例说明一般是用来验证教师讲授理论知识的正确性,举例是为理论服务的。而案例教学法最突出的特点是讲课开始于实例,从实例中提出问题,通过分析问题、发现规律、提炼理论,再从理论回到实践,应用理论去指导实践[4]。在程序设计中首先引入案例,例如在选择结构这一章,设计一个猜数游戏,产生一个随机数,输入一个整数,与之比较,提示是大了、小了还是猜中了,这个案例涉及三个分支处理;基于同一个猜数案例,加深难度,引入循环,产生一个随机数,循环输入一个整数与之比较,提示大了、小了还是猜中了,直到猜中为止,涉及的if多分支语句、while循环语句、随机数函数rand在案例中也一并掌握了。另外,一般计算机理论课程教学采用的方式是先理论,后实际;先抽象,后具体;先一般,后个别。其实,对程序设计课程可以适当采用这样的方式:从实际到理论,从具体到抽象,从个别到一般,从零碎到系统。这样的教学方式更加符合人们对客观事物的认知发展规律。

(二)任务驱动教学法

任务驱动法适合实施探究式教学,与简单的案例教学不同,它是采用项目化教学方式,即教师不是围绕知识点去设计每个单独的案例,而是针对课程教学内容设计一个项目,这个项目由若干模块组成,并能够覆盖课程的不同理论知识[5]。任务驱动教学法有助于培养学生分析、解决问题的能力以及动手能力[6]。任务驱动法的教学过程主要有(1)创设情景、提出任务;(2)分析任务、发现问题;(3)明确思路、把握重点;(4)自主探究、解决任务;(5)检查结果、总结经验[7]。任务驱动教学法对教师的业务水平提出了更高要求,教师不仅要转变教学观念,而且对课程需要有很深的理解[8],不能单纯按学科体系安排教学内容,而是根据解决问题的思路,跳跃式地结合多种知识。软件开发是多种技术的综合体现,仅仅通过案例教学局部讲清楚每个知识点,学生的综合应用能力仍然不强。此时,教师通过创设、分析与解决任务必然能激发学习兴趣,取得满意的教学效果。在C语言程序设计课程中以计算学生成绩平均分为例,首先用一维数组和循环结构计算全班50人某一门课程的平均分,继续增加问题的复杂度,计算50个学生8门课程的平均分,这时需要采用50行8列的二维数组,再引出新问题和新任务,编写函数计算出每个学生的平均分,并把每位学生的平均分带回主函数输出,此时就要采用数组名或指针变量作函数参数,传递整个实参数组给函数进行处理,并引出函数如何带回多个返回值的问题。任务驱动法循序渐进、由浅入深地引入新知识点,在解决问题的过程中旧知识在此过程中也得到了巩固。

(三)演示教学法

演示教学法就是借助投影仪或网络教学管理软件等,直观地通过教师的示范性操作进行学习。这种教学方法是学习计算机软件使用方法和操作步骤的一种重要且而行之有效的教学方法,在程序设计教学中同样非常有用。教学中光是依靠PPT课件来分析和讲解程序和算法是远远不够的,而是要当堂编程并演示程序运行结果,让学生直观地看到程序运行的过程和效果。实践证明这种方法非常生动,能够有效地激发学生的学习兴趣,并且在现场编程过程中,高级语言程序设计的知识点、语法、算法也在这一过程中一并得到掌握,另外通过编译,分析和查找语法错误和逻辑错误,可以提高学生的分析能力,实现计算思维的培养。以C语言指针变量作函数参数为例,演示教学法可以分4步实施:(1)分析指针变量作函数参数的4种一般形式。(2)设计一个案例,例如编制一个函数fun,实现将一个数组的数组元素逆序交换,在主函数中输入数组元素,调用函数,最后在主函数中输出逆序交换后的数组元素。(3)现场编程分别演示实参、形参同为数组名;实参为数组名,形参为指针变量;实参为指针变量,形参为数组名;实参形式同为指针变量这4种情况。(4)归纳总结知识点,让学生举一反三编程实现其他功能的函数。

四、新型程序设计教学方法简介

(一)慕课教学法

“慕课”这一大规模在线课程始于2011年,有勇敢之城(Udacity)、课程时代(Coursera)与教育在线(edX)三大供应商。2013年7月上海交通大学加盟MOOCs三大平台之一的课程时代Coursera,成为加入Coursera的第一所中国内地高校,和耶鲁、MIT、斯坦福等世界一流大学共建、共享全球最大在线课程网络[7]。“慕课”(MOOCs),顾名思义,“M”代表Massive(大规模),与传统课程只有几十个或几百个学生不同,一门MOOCs课程多达上万人;第二个字母“O”代表Open(开放),以兴趣导向,凡是想学习的,都可以进来学,不分国籍,只需一个邮箱,就可注册参与;第三个字母“O”代表Online(在线),学习在网上完成,不受时空限制,第四个字母“C”代表Course,即课程的意思[7]。MOOC以连通主义理论和网络化学习的开放教育学为基础。课程的范围不仅覆盖了广泛的科技学科,例如数学、统计、计算机科学、自然科学和工程学,也包括了社会科学和人文学科。在“慕课”的世界里,视频课程被切割成10min甚至更小的“微课程”,由许多个小问题穿插其中连贯而成,就像游戏里的通关设置,只有答对才能继续听课。利用“慕课”的平台,可以获取全球的优质课程,实现更大范围的资源共享。除了传统课堂上人们所惯常使用的录像资料、阅读材料和练习题外,“慕课”还会为网友提供互动的论坛,在师生之间搭建一个交流的平台[8]。“慕课”不同于网络公开课,互动性更强,“慕课”的出现,为教学设计提供了一种改革的可能———教师可以将在线视频作为教学的线上环节,要求学生在课堂外先“听课”,课堂内侧重深入的分享、探讨和问题解决,真正实现“翻转课堂”。这一模式将促进教师对教学的反思,以及对教学模式的探索、研究,有助于推动教师角色转变,从一个讲授者、讲解者真正变为学习的激励者、启发者,学习也将变得更加有效[8]。“慕课”课程所带来的是挑战、思考和实践,而不仅是课程的变化。在程序设计课程中将来也可以引入“慕课”模式,利用现代网络技术,开发针对不同知识点的程序设计教学视频,提供在线测试题、上机练习题,程序阅读题、在线提交与批改实验报告等,通过论坛实现师生之间、学生之间的与交流与互动,通过全方位的教学方式改变教学方法,共同提高教学质量。

(二)翻转教学法

利用视频来实施教学在多年以前人们就进行过探索,当今网络技术发达,计算机教学也可以通过网络向外扩展,如开展网络教学和将教学视频上传网络等,供学生在校外学习。如2006年创立的可汗学院、2009年创立的点对点大学、2010年创立的人人学院等。他们都是与慕课相类似的组织。美国的耶鲁等大学已经开始进行这样的尝试,并且已经获得很好的效果。所谓翻转课堂,就是教师创建视频,学生在家中或课外观看视频中教师的讲解,回到课堂上师生面对面交流和完成作业的这样一种教学形态。“翻转课堂”特点有:第一,教学视频短小精悍,通过网络的视频,具有暂停、回放等多种功能,可以自我控制,有利于学生的自主学习。第二,教学信息清晰明确,把内容集中在屏幕上,配合讲解的画外音。每一个视频都针对一个特定的问题,有较强的针对性,查找起来也比较方便;视频的长度控制在在学生注意力能比较集中的时间范围内,符合学生身心发展特征。第三,重新建构学习流程。老师提供了视频,在课前对学生进行“信息传递”,在课堂上通过互动来完成“吸收内化”,教师在课堂上给予有效的辅导,教师更多的责任是去理解学生的问题和引导学生去运用知识,同学之间的相互交流更有助于促进学生知识的吸收内化过程。第四,复习检测方便快捷,学生观看了教学视频之后,是否理解了学习的内容,视频后面紧跟着的四到五个小问题,可以帮助学生及时进行检测,并对自己的学习情况作出判断[9]。由于程序设计知识点繁杂,概念抽象,视频教学和翻转教学也特别适合程序设计的教学。有效实施翻转教学法的前提是根据教学内容和教学大纲,划分出各个章节的知识点,如if语句、switch语句、for循环语句、while循环语句、数组、函数、指针等,将每个知识及其典型案例用屏幕录像软件录制成10min左右的微视频,上课前提前给学生在课外观看,上课时通过师生互动辅导学生完成上机编程作业,解答学生在编程中遇到的问题。先看录像后讲课,这是“翻转课堂”的教学视频与传统的教学录像最大的不同之处。一个最显著的变化将是,翻转课堂,从以教师为中心真正转变为以学生为中心,这实际上是一种传统与现代的结合体,但其效果远好于传统教学。

五、程序设计教学方法的合理选择与思考

课堂教学中并非独立地应用一种教学方法,而是在不同的教学阶段,根据教学内容,教学对象的不同,选用适合的教学方法进行教学,让学生在“做中学”,使每一位学生收到最好的学习效果。采用讲授法讲解时,还要布置一些课堂或课后练习,避免光听不练,理论与实践脱节。例如介绍完递归函数的思想后,再布置编程题用递归函数实现将十进制整数转换成八、十六进制,这样既使用了编程技术又掌握了数制转换的方法,可谓一举两得。三种基本的程序结构、数组、函数等概念通常是通过案例教学法来讲解,在采用“案例教学”法教学时还要注重知识的脉络,讲清楚知识的结构和教学主线。期末应当布置课程大作业,例如编写学生信息管理系统,让学生将各章的知识融合在一起,体现链表、结构体、文件等章节知识的综合应用。指针是C语言的重点和难点。数组、指针、函数三者又是密切联系的。多种“分散跳跃式”的知识特别适合采用“任务驱动法”,设计一个任务,在解决任务的过程中综合运用数组、指针、函数等,使学生抓住用指针作函数参数,传递数组元素这一教学主线,就可以突破指针这一教学难点。慕课、微课程、翻转课程等在线课程模式,以及线上、线下结合的课程模式无疑将引发“学习的革命”,给高等教育人才培养和教学方式带来深刻变化。程序设计课程如何运用这一模式,改变教学方法,提高教学质量,需要更多的思考和实践。以“慕课”冲击为契机,加快大学教学、管理的根本变革,实现两者的融合才是更好的姿态。计算机技术更新极快,学生的自学能力才是最重要的能力,在程序设计的教学中不能只满足于教会学生编程技能,还要注重创新能力的培养,创新能力本质是提高学生创造性地分析、解决问题的能力。因此教师还要教给学生归纳总结、触类旁通的学习方法。例如,编程语言都有顺序、选择、循环三种基本程序结构,都有数据类型、运算符与表达式、数组、函数等概念;教会学生归纳和总结,在多门编程课程中触类旁通,将会使学生在将来的工作中立于不败之地。

六、结束语

计算机函数入门教学范文6

(一)传统教学模式、教学方法与程序设计

的学科特点不相适应多媒体课件以其生动性和方便性在高校计算机教学过程中被广泛应用。然而程序设计是逻辑性和实践性很强的一门课程,仅仅依靠投影大屏幕和多媒体课件的教学思路无法适应程序设计灵活多变的学科特点,不能对学生创造性思维和自学能力的培养起到积极的作用。还有一些教师过分依赖电子课件,教师变“照本宣科”为“照课件宣科”,容易挫伤学生的学习积极性。另外由于播放电子课件信息量大、速度快,学生没有得到思考的空间,学习效果并不理想,而且学生无法做到边听课边做笔记,印象较浅,容易遗忘。

(二)学生的动手实践能力较弱

很多高校在教学过程中更多地注重程序设计语言理论知识的学习而忽视了工程技能的培养。这样就会导致教师和学生偏重于编程语言语法的教学而对计算思维的培养和工程实践重视不够,导致重语法轻算法,实际工程开发能力薄弱。这就要求教师需要布置大量既包含基本知识点又有一定创新性和拓展性的上机实验,才能帮助学生实现从知识到技能的转换,巩固所学的理论知识。

二、程序设计教学方法改革的意义

不断探讨研究和推广新的教学方式,将更有效的新教学方式应用于计算机教学,是不断提高教学水平的好方法。程序设计课程的特点是理论与实践相辅相成,理论是基础,实践是手段,应用是目的。很多学生上课能听懂,但是自己动手编程时感到无所适从。传统的“在学中用”的教学方法,其重点往往局限于讲解基本概念、语句格式、语法等内容,学生往往会考试但解决实际问题的能力较差。若采用“在做中学”的教学方法,以一个应用实例为前导,例如讲授讲解程序设计时以找最大(小)值、素数、排序、求阶乘、求一元二次方程的根等案例形式导入知识点,这样学生就比较容易接受和掌握所学的知识和内容,实践技能也在做中得到了锻炼和培养。教学方法是在教学过程中教师和学生为了实现共同的教学目标,完成共同的教学任务,运用的行为方式与手段的总称。教学方法既是一门科学又是一门艺术,良好的教学教学方法对于学习兴趣的激发和学习效果有着明显的作用,尤其是程序设计教学方法对于培养工程实践能力和计算思维起着重要的作用。具体体现在:一是教师的教法不仅关系到教学效果,同时也影响着学生的学习方法,采用什么样的教学方法对于培养学生的思维模式和知识结构也具有重要的影响。二是程序设计教学法的研究与探索能够促进本学科教师的教学水平与教学能力,提高教学质量。三是程序设计教学方法的改进能够引发学生的学习兴趣和学习成就感,促进多种教学资源的合理使用,取得最佳教学效果。

三、程序设计常用教学方法

程序设计课程包括讲授法、翻转教学法、案例教学法、任务驱动教学法、演示教学法、情景模拟教学、基于问题的教学法、游戏教学法等。下面主要介绍3种常用程序设计教学方法。

(一)案例教学法

案例教学是根据教学目的和教学内容的要求,通过引入并分析各种案例来开展教学活动的教学方法。案例教学法教学过程是:案例设计—案例分析与讨论—案例实现—归纳总结知识点。案例教学法与传统的举例说明有着本质区别。传统的举例说明一般是用来验证教师讲授理论知识的正确性,举例是为理论服务的。而案例教学法最突出的特点是讲课开始于实例,从实例中提出问题,通过分析问题、发现规律、提炼理论,再从理论回到实践,应用理论去指导实践。在程序设计中首先引入案例,例如在选择结构这一章,设计一个猜数游戏,产生一个随机数,输入一个整数,与之比较,提示是大了、小了还是猜中了,这个案例涉及三个分支处理;基于同一个猜数案例,加深难度,引入循环,产生一个随机数,循环输入一个整数与之比较,提示大了、小了还是猜中了,直到猜中为止,涉及的if多分支语句、while循环语句、随机数函数rand在案例中也一并掌握了。另外,一般计算机理论课程教学采用的方式是先理论,后实际;先抽象,后具体;先一般,后个别。其实,对程序设计课程可以适当采用这样的方式:从实际到理论,从具体到抽象,从个别到一般,从零碎到系统。这样的教学方式更加符合人们对客观事物的认知发展规律。

(二)任务驱动教学法

任务驱动法适合实施探究式教学,与简单的案例教学不同,它是采用项目化教学方式,即教师不是围绕知识点去设计每个单独的案例,而是针对课程教学内容设计一个项目,这个项目由若干模块组成,并能够覆盖课程的不同理论知识。任务驱动教学法有助于培养学生分析、解决问题的能力以及动手能力。任务驱动法的教学过程主要有(1)创设情景、提出任务;(2)分析任务、发现问题;(3)明确思路、把握重点;(4)自主探究、解决任务;(5)检查结果、总结经验。任务驱动教学法对教师的业务水平提出了更高要求,教师不仅要转变教学观念,而且对课程需要有很深的理解[8],不能单纯按学科体系安排教学内容,而是根据解决问题的思路,跳跃式地结合多种知识。软件开发是多种技术的综合体现,仅仅通过案例教学局部讲清楚每个知识点,学生的综合应用能力仍然不强。此时,教师通过创设、分析与解决任务必然能激发学习兴趣,取得满意的教学效果。在C语言程序设计课程中以计算学生成绩平均分为例,首先用一维数组和循环结构计算全班50人某一门课程的平均分,继续增加问题的复杂度,计算50个学生8门课程的平均分,这时需要采用50行8列的二维数组,再引出新问题和新任务,编写函数计算出每个学生的平均分,并把每位学生的平均分带回主函数输出,此时就要采用数组名或指针变量作函数参数,传递整个实参数组给函数进行处理,并引出函数如何带回多个返回值的问题。任务驱动法循序渐进、由浅入深地引入新知识点,在解决问题的过程中旧知识在此过程中也得到了巩固。

(三)演示教学法

演示教学法就是借助投影仪或网络教学管理软件等,直观地通过教师的示范性操作进行学习。这种教学方法是学习计算机软件使用方法和操作步骤的一种重要且而行之有效的教学方法,在程序设计教学中同样非常有用。教学中光是依靠PPT课件来分析和讲解程序和算法是远远不够的,而是要当堂编程并演示程序运行结果,让学生直观地看到程序运行的过程和效果。实践证明这种方法非常生动,能够有效地激发学生的学习兴趣,并且在现场编程过程中,高级语言程序设计的知识点、语法、算法也在这一过程中一并得到掌握,另外通过编译,分析和查找语法错误和逻辑错误,可以提高学生的分析能力,实现计算思维的培养。以C语言指针变量作函数参数为例,演示教学法可以分4步实施:(1)分析指针变量作函数参数的4种一般形式。(2)设计一个案例,例如编制一个函数fun,实现将一个数组的数组元素逆序交换,在主函数中输入数组元素,调用函数,最后在主函数中输出逆序交换后的数组元素。(3)现场编程分别演示实参、形参同为数组名;实参为数组名,形参为指针变量;实参为指针变量,形参为数组名;实参形式同为指针变量这4种情况。(4)归纳总结知识点,让学生举一反三编程实现其他功能的函数。

四、新型程序设计教学方法简介

从全球来看,在线教育已呈席卷之势。在线课程模式无疑将引发“学习的革命”,给高等教育人才培养和教学方式带来深刻变化。

(一)慕课教学法

“慕课”这一大规模在线课程始于2011年,有勇敢之城(Udacity)、课程时代(Coursera)与教育在线(edX)三大供应商。2013年7月上海交通大学加盟MOOCs三大平台之一的课程时代Coursera,成为加入Coursera的第一所中国内地高校,和耶鲁、MIT、斯坦福等世界一流大学共建、共享全球最大在线课程网络。“慕课”(MOOCs),顾名思义,“M”代表Massive(大规模),与传统课程只有几十个或几百个学生不同,一门MOOCs课程多达上万人;第二个字母“O”代表Open(开放),以兴趣导向,凡是想学习的,都可以进来学,不分国籍,只需一个邮箱,就可注册参与;第三个字母“O”代表Online(在线),学习在网上完成,不受时空限制,第四个字母“C”代表Course,即课程的意思[7]。MOOC以连通主义理论和网络化学习的开放教育学为基础。课程的范围不仅覆盖了广泛的科技学科,例如数学、统计、计算机科学、自然科学和工程学,也包括了社会科学和人文学科。在“慕课”的世界里,视频课程被切割成10min甚至更小的“微课程”,由许多个小问题穿插其中连贯而成,就像游戏里的通关设置,只有答对才能继续听课。利用“慕课”的平台,可以获取全球的优质课程,实现更大范围的资源共享。除了传统课堂上人们所惯常使用的录像资料、阅读材料和练习题外,“慕课”还会为网友提供互动的论坛,在师生之间搭建一个交流的平台。“慕课”不同于网络公开课,互动性更强,“慕课”的出现,为教学设计提供了一种改革的可能———教师可以将在线视频作为教学的线上环节,要求学生在课堂外先“听课”,课堂内侧重深入的分享、探讨和问题解决,真正实现“翻转课堂”。这一模式将促进教师对教学的反思,以及对教学模式的探索、研究,有助于推动教师角色转变,从一个讲授者、讲解者真正变为学习的激励者、启发者,学习也将变得更加有效。“慕课”课程所带来的是挑战、思考和实践,而不仅是课程的变化。在程序设计课程中将来也可以引入“慕课”模式,利用现代网络技术,开发针对不同知识点的程序设计教学视频,提供在线测试题、上机练习题,程序阅读题、在线提交与批改实验报告等,通过论坛实现师生之间、学生之间的与交流与互动,通过全方位的教学方式改变教学方法,共同提高教学质量。

(二)翻转教学法

利用视频来实施教学在多年以前人们就进行过探索,当今网络技术发达,计算机教学也可以通过网络向外扩展,如开展网络教学和将教学视频上传网络等,供学生在校外学习。如2006年创立的可汗学院、2009年创立的点对点大学、2010年创立的人人学院等。他们都是与慕课相类似的组织。美国的耶鲁等大学已经开始进行这样的尝试,并且已经获得很好的效果。所谓翻转课堂,就是教师创建视频,学生在家中或课外观看视频中教师的讲解,回到课堂上师生面对面交流和完成作业的这样一种教学形态。“翻转课堂”特点有:第一,教学视频短小精悍,通过网络的视频,具有暂停、回放等多种功能,可以自我控制,有利于学生的自主学习。第二,教学信息清晰明确,把内容集中在屏幕上,配合讲解的画外音。每一个视频都针对一个特定的问题,有较强的针对性,查找起来也比较方便;视频的长度控制在在学生注意力能比较集中的时间范围内,符合学生身心发展特征。第三,重新建构学习流程。老师提供了视频,在课前对学生进行“信息传递”,在课堂上通过互动来完成“吸收内化”,教师在课堂上给予有效的辅导,教师更多的责任是去理解学生的问题和引导学生去运用知识,同学之间的相互交流更有助于促进学生知识的吸收内化过程。第四,复习检测方便快捷,学生观看了教学视频之后,是否理解了学习的内容,视频后面紧跟着的四到五个小问题,可以帮助学生及时进行检测,并对自己的学习情况作出判断。由于程序设计知识点繁杂,概念抽象,视频教学和翻转教学也特别适合程序设计的教学。有效实施翻转教学法的前提是根据教学内容和教学大纲,划分出各个章节的知识点,如if语句、switch语句、for循环语句、while循环语句、数组、函数、指针等,将每个知识及其典型案例用屏幕录像软件录制成10min左右的微视频,上课前提前给学生在课外观看,上课时通过师生互动辅导学生完成上机编程作业,解答学生在编程中遇到的问题。先看录像后讲课,这是“翻转课堂”的教学视频与传统的教学录像最大的不同之处。一个最显著的变化将是,翻转课堂,从以教师为中心真正转变为以学生为中心,这实际上是一种传统与现代的结合体,但其效果远好于传统教学。

五、程序设计教学方法的合理选择与思考

课堂教学中并非独立地应用一种教学方法,而是在不同的教学阶段,根据教学内容,教学对象的不同,选用适合的教学方法进行教学,让学生在“做中学”,使每一位学生收到最好的学习效果。采用讲授法讲解时,还要布置一些课堂或课后练习,避免光听不练,理论与实践脱节。例如介绍完递归函数的思想后,再布置编程题用递归函数实现将十进制整数转换成八、十六进制,这样既使用了编程技术又掌握了数制转换的方法,可谓一举两得。三种基本的程序结构、数组、函数等概念通常是通过案例教学法来讲解,在采用“案例教学”法教学时还要注重知识的脉络,讲清楚知识的结构和教学主线。期末应当布置课程大作业,例如编写学生信息管理系统,让学生将各章的知识融合在一起,体现链表、结构体、文件等章节知识的综合应用。指针是C语言的重点和难点。数组、指针、函数三者又是密切联系的。多种“分散跳跃式”的知识特别适合采用“任务驱动法”,设计一个任务,在解决任务的过程中综合运用数组、指针、函数等,使学生抓住用指针作函数参数,传递数组元素这一教学主线,就可以突破指针这一教学难点。慕课、微课程、翻转课程等在线课程模式,以及线上、线下结合的课程模式无疑将引发“学习的革命”,给高等教育人才培养和教学方式带来深刻变化。程序设计课程如何运用这一模式,改变教学方法,提高教学质量,需要更多的思考和实践。以“慕课”冲击为契机,加快大学教学、管理的根本变革,实现两者的融合才是更好的姿态。计算机技术更新极快,学生的自学能力才是最重要的能力,在程序设计的教学中不能只满足于教会学生编程技能,还要注重创新能力的培养,创新能力本质是提高学生创造性地分析、解决问题的能力。因此教师还要教给学生归纳总结、触类旁通的学习方法。例如,编程语言都有顺序、选择、循环三种基本程序结构,都有数据类型、运算符与表达式、数组、函数等概念;教会学生归纳和总结,在多门编程课程中触类旁通,将会使学生在将来的工作中立于不败之地。

六、结束语