程序设计语言范文

时间:2023-03-25 08:53:24

导语:如何才能写好一篇程序设计语言,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

程序设计语言

篇1

论文摘要 针对现阶段程序设计语言教学中存在的普遍问题,在对程序设计教学思想、程序设计能力认识分析的基础上,提出程序设计语言教学中的若干要点。

1 引言

在计算机专业和非计算机专业的计算机教学中,学校几乎都设置了高级语言程序设计课程。与一些应用软件或工具软件相比,编程课程的教学具有较大的灵活性。很多学生的学习能力较差,课后不肯花时间,久而久之,导致听不懂,给计算机编程语言课的教学带来一定的难度。采用何种教学模式进行教学就成为编程语言教学的一个关键。

2 现阶段程序设计语言教学中存在的普遍问题

根据以往的教学经验和通过与学生、同事之间的交流,得知部分学生反映上课时都能听懂讲解,可在涉及到具体的编程及上机操作时,往往会出现没有思路、无从下手或错误百出,不会调试程序等各种情况,究其原因,在教学方面可能存在以下2个问题。

2.1 过于注重对语句语法的讲解,缺乏以算法为核心的编程题教学教师钟情于举一反三地对使用语句、语法的深入教学,而不是有机地结合算法思想进行教学,贴近生活并引起学生兴趣的编程题讲得很少。由于教学不是站在如何应用计算机工具编程解决实际问题或实际项目的角度,就没有把逻辑与编程解题思路放在主体地位,也就没有很好讲解如何分析问题和解决问题。结果导致学生程序设计能力、上机解题能力训练不够,更谈不上引导学生进行课题研究和科研探索。

2.2 学生厌倦传统的课堂教学,缺乏师生之间的沟通交流学生对于先讲后编、先听后编这一传统的课堂教学方式有厌倦心理。课堂成了教师的“一言堂”,教与学不能衔接起来。有时教师为了赶进度,讲授法成了唯一的教学方法,师生之间缺乏足够的交流和沟通,学生没有有效、实用的学习辅助途径,也间接影响着学生的学习兴趣和学习效果。

3 程序设计教学思想解析

学生与教师的角色改变,就是教与学相互渗透的结果。教学中突出学生的主体能动性,是现代教学方法的核心。教学过程是教师根据教学的目的和任务以及学生身心发展的特点有计划地引导学生掌握知识、认识客观世界的过程,是通过知识的传授和掌握来促进学生身心全面发展的过程。而在教学过程中一定要按照教学规律,只有按照教学规律办事,才能提高教学质量,增强教学效果,并促进学生思维的拓展和能力的提高。

教学应该在理论与实际的结合过程中传授和学习基本知识,从而引导学生运用所掌握的知识去分析问题和解决问题,在动手实践中达到培养学生手脑并用能力的目的。除了进行一些必要的概念讲解之外,教师主要应该让学生通过上机实践的办法来掌握所学内容。一方面,通过上机实践可以加深对课堂理论内容的理解和掌握;另一方面,通过上机实践可以提高学生上机调试程序的能力,提高学生的编程能力,提高学生分析问题和解决问题的能力。

4 程序设计能力认识

程序是软件的本体,程序设计(Programming)是指设计、编制、调试程序的方法和过程。它应排除软件开发中的工程与管理因素,主要指软件开发过程中的技术因素,尤其是计算机技术因素。

根据调查分析,合格程序员必须具有:1)扎实的专业基础知识;2)很强的综合分析和解决问题的能力;3)熟练的编程调试能力;4)创新能力;5)团队合作能力;6)持续的自学能力;7)强烈的好奇心;8)较高的英语水平和软件工程的实践能力等。

应看到,程序设计能力,并非完全等价于程序员所应具备的专业素质,它还包括其他一些内容,如:1)理解问题,根据已知条件,找出求解该问题的数学方法或建立相应的数学模型;2)归纳程序的基本功能;3)设计数据结构和算法;4)用程序设计语言实现算法描述;5)编译与调试;6)测试程序,保证程序正常运行。

综上所述,可以将程序设计能力定义为:依据程序设计思想与观念,应用程序设计语言,采用相应程序开发技术和环境,进行程序设计并达到预计结果的程度。

5 程序设计语言教学要点分析

基于对程序设计教学思想、程序设计能力的认识,为使学生充分掌握程序设计的思想和方法,有效实现程序设计课程教学目标,我认为程序设计教学还应注意并强调以下几个基本的教学任务和要求。

5.1 程序设计基本概念的灌输在整个课程教学过程中,结合具体实例的演示,应向学生反复强调程序,注意学生程序设计中基本概念的理解。学生只有对程序设计基本概念有了正确的掌握,才会为以后课程学习打下基础,为学习兴趣培养埋下伏笔;同时程序设计作为一门特殊意义上的课程,包含了许多计算机用于数据处理的基本原理、基本过程和特点,这些知识蕴藏于程序的基本概念之中,同时这些概念也是程序设计思想与观念的载体。

5.2 结构化程序设计基本概念的培养结合控制语句结构和函数的学习,应着重培养学生的结构化程序设计的基本观念。结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构,它是程序设计的基本原理之一。贯彻课程始终、通过具体实例潜移默化地培养这一思想,比在软件工程中空洞的说教,更容易被学生理解和接收。

5.3 计算机算法观念的培养通过控制结构、函数等学习,初步培养学生在程序设计中的算法观念。如同数据结构观念培养一样,一则增强学生的程序设计观念,二则也为学生留下广阔的思考空间,以增强学习兴趣。再次,通过这种观念的培养,能够直接提高学生初步的程序设计能力。

5.4 通过优秀的有趣的实例,激发学生学习兴趣恩格斯说“兴趣与爱好是最好的老师”。为了使初学者能尽快地掌握计算机知识,进入计算机的应用领域,在课程讲授过程中,要特别注意培养学生的学习兴趣。学习兴趣就是学生在心理上对学习活动产生爱好、追求和向往的倾向,是推动学生积极主动学习的直接动力。学习兴趣直接关系到教学效果的好坏。为提高学生的学习兴趣,笔者归纳出6个办法:1)通过演示程序突出程序语言的实用性;2)通过简单的编程练习突出语言的易学性;3)运用恰当的类比使复杂问题形象化、简单化;4)做到一题多解;5)要善于举一反三;6)通过解决实际问题使学生乐学。

5.5 有选择地运用多媒体教学直观、形象、便捷的多媒体教学可以使学生在有限时间内迅速理解、掌握、获取更多知识和信息,在教学过程中,我们有选择地使用多媒体教学,将编程语言语法中的深奥理论和逻辑推理的内容,运用多媒体教学直观、形象地讲授给学生,加深其对问题的理解。这样的多媒体教学,收到了将抽象问题形象化、枯燥问题生动化的效果。对于多媒体教学不易实施的程序设计方法的讲解,我们可以采用传统的教学方法,教会学生如何思考、推理,如何用语句实现算法,培养了学生的抽象思维、逻辑推理能力。这样,将传统的教学方法与多媒体教学相结合,大大提高了学生的综合思维能力。

5.6 教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,留给学生时间思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。

5.7 充分利用上机实践程序设计语言,学生与教师在理论课与实践课的角色是不同的。教师从课堂上的教学组织者转变为上机操作的指导者。作为教学组织者,负责知识点的传授,此时教师有较充分的主动性,易于控制所传递的知识内容,可使学生在较短时间内获得较多的知识。但学生只是被动地接受知识,学生的积极参与少。上机操作是实现检验计算机编程语言课堂教学效果的重要方面。此时的教师是上机的辅导者,学生亲自动手、动脑参与教学活动。但是上机操作课对学生来说是轻松的,若教师管理不当,会造成学生无所事事的局面。上机课是对理论课的应用和检验,对教师有更高的要求,因此,上机操作前教师要根据知识点布置相应的练习任务,编程序或调试程序。同时学生要完成有针对性的上机报告,进一步巩固上机成果。

5.8 布置代表性的作业做作业是复习、练习的过程,也是继续和深入学习的过程。我们每次课后给学生布置一些有代表性、恰当的习题,以巩固课堂上所学的内容。也通过学生所做作业的好坏来了解学生对课程内容的掌握程度以及教师的教学效果。对作业中比较普遍出现的错误,我们都要在下节课上当堂讲解,因为那是在上节课没讲清楚所致。作业中表现出与众不同的、新颖的程序设计方法和思路,也要当堂宣讲或作业批注,以鼓励这种另辟新径的有创意的学风。

在程序设计语言教学中,尤其语言基本要素的讲解过程中,或隐或显地,把如上几点教学内容纳入到课堂中,程序设计语言教学必定会从一种就语言而教语言的呆板模式中走出来,充分发挥出其在程序设计能力培养中的作用。

篇2

关键词:值类性;引用类型;值传递;引用传递

中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)15-30749-02

Analyzing the Parameter Pass in C# Language

BAI Xue-bing

(Zhejiang Institute of Traffic, Hangzhou 311112, China)

Abstract: the article narrates the parameter pass in c# language, which includes number, array and object parameter pass, and it also tells the difference between the call by value and call by reference.

Key words: value type; reference type; call by value; call by reference

1 引言

目前,随着程序设计语言的不断发展,.NET平台在windows平台上已站稳脚跟,成为主流的开发平台,C#语言作为.Net平台的主流语言,重要性不言而喻。目前,C#语言已成为唯一能与Java抗衡的语言,而日益受到程序员的喜爱。

在C#程序设计中,常常会运用参数来传递对象,然而,在程序设计语言中,参数的传递常常使人含混不清,因此,有必要好好的分析一下参数的传递,才能使你在运用C#语言时更加的心应手。

首先,我们需要了解C#语言的数据类型,C#语言的数据类型可分为两大类:一种是值类性(value type),它的数据存放入栈内的一个变量之中。例如整型、浮点与结构体(int、double、struct)。另一种是引用类型(reference type),它的数据不驻留在栈中,而是存储在堆中。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。例如类,数组,字符串class,array,string)。由于这两种类型的数据在参数传递时是如此的不同,我们需要分别讨论。

2 值类型传递

在C#语言中参数的传递可分为值传递(call by value)与引用传递(call by reference),值传递中函数将参数复制到子程序的参数中。因此,改变子程序的参数不会影响用于调用的参数。而引用传递视将参数的引用传递给子程序。在子程序内部,该引用用来访问调用中的实际参数。

下面我们用例子来说明区别。引用传递在C#中使用关键字ref或out。

2.1 值传递

在给方法传递数值类型时,如int类型或double类型,它们是通过值传递。因此,在给这种类型进行值传递时,函数的调用并不会影响在主函数的原先的值。

示例如下。

using System;

class Test {

public void noChange(int i, int j) {

i = i + j;

j = -j;}}

class CallByValue {

public static void Main() {

Test ob = new Test();

int a = 15, b = 20;

Console.WriteLine("a and b before call: " + a + " " + b);

ob.noChange(a, b);

Console.WriteLine("a and b after call: " + a + " " + b);

}}

程序产生的结果如下:

A and b before call:15 20

A and b after call:15 20

由此可见,noChange()内部发生的操作不影响调用中的a和b的值。

2.2 引用传递

但是如果你在函数调用参数前使用ref参数,表示使用引用传递。

示例如下:

using System;

class Swap {

public void swap(ref int a, ref int b)//参数前加ref表示引用传递

{int t;

t = a;

a = b;

b = t; }}

class SwapDemo {

public static void Main() {

Swap ob = new Swap();

int x = 10, y = 20;

Console.WriteLine("x and y before call: " + x + " " + y);

ob.swap(ref x, ref y);

Console.WriteLine("x and y after call: " + x + " " + y); }}

程序产生的结果如下:

A and b before call:1020

A and b after call:2010

由此可见,swap函数()内部发生的操作影响调用中的a和b的值。如果不使用ref参数,a和b仍然不会变化。

3 引用类型参数传递

由于在C#程序设计中,类作为引用类型常常被使用。在参数的传递中,类的实例对象常常被用来作为函数参数,因此我们就以对象作为研究对象。另外我们也讨论一下数组。

3.1 对象值传递

由于对象本身即是引用。因此,当对象被用来当作参数传递时,对象本身是通过值传递,但是由于对象本身是引用传递,改变参数所引用的对象依然改变将影响参数所影响的对象。

示例如下

using System;

class Test {

public int a, b;

public Test(int i, int j) {

a = i;

b = j; }

public void change(Test ob) //调用test类对象ob 值调用

{ ob.a = ob.a + ob.b;

ob.b = -ob.b; }}

class CallByRef {

public static void Main() {

Test ob = new Test(15, 20);

Console.WriteLine("ob.a and ob.b before call: " + ob.a + " " + ob.b);

ob.change(ob);

Console.WriteLine("ob.a and ob.b after call: " + ob.a + " " + ob.b); }}

程序产生的结果如下:

A and b before call:15 20

篇3

随着社会不断的发展与进步,计算机作为现代先进产物的代表,已经很快的进入到社会中的各行各业。而程序设计作为计算机的核心内容,也同样引起了大家的重视,同时计算机程序设计也是高校开设的一门重要学科,为了能更好的为社会提供计算机方面的技术型和和设计型人才,就必须重视程序设计的教学。本文针对高校程序设计课程中存在的不足,展开了全面的讨论,对高校的程序设计的教学方法和教学内容进行改进。

【关键词】

计算机程序;程序设计语言;教学方法

我国几乎所有的高校都开设了计算机程序设计这一学科,而程序设计语言教学时计算机程序设计教学中最重要的教学内容之一,对其掌握的程度会直接影响着之后对计算机的学习,也为将来从事本行业奠定了坚实的基础。从程序设计语言入手,展开对计算机硬件和软件的学习,掌握计算机程序设计的基本理念,从而不断的打造新型计算机技术人才,推动我国计算机行业的前进。

1 计算机程序设计语言教学现状

1.1 教学课时短

虽然现在计算机已经很普及,但是多数学生对于其中真正的内涵了解甚微。现如今的大学主张的是学生自主发展,因此给学生自由发展的时间很多,在此同时又主张学生多方面发展,这就导致学生接触计算机程序设计的时间较少。教学课时短就成了一个突出的问题,老师只能教给学生一些基础的理论知识,对于新鲜事物出现在脑海中的时候,学生往往有疑问也不会发问,再加上在这方面的基础比较薄弱,就导致了学生们接受比较缓慢。

1.2 学习动力不足

在很多学生眼里,计算机程序设计是一个即枯燥又无味的学科,程序设计语言中涉及了一些数学、英语等其他方面的基础知识。有很多学生就觉得有些力不从心,觉得程序设计语言就想天书一样,不能形成用计算机语言去解题的思维方式,对程序设计产生了畏惧心理,就会出现很多知难而退的学生。

1.3 实践达不到真正的要求

计算机专业本身就是应用型专业,而恰恰在大学中程序语言教材书中缺少了实践这一部分,没能体现出教材的实用性与实践性,不能起到对学生的实践能力培养的作用。不能达到对技术型人才的培养。

1.4 教学方法单一,考核方式欠缺

计算机程序设计语言的的教学方式现在还是比较传统的,往往是老师讲同学听的形式,课后再增加一些实验,同学只是单纯的接受老师传授的东西,却缺少了自己的思考,更不能发表的自己的见解。在上实验课的时候,大部分同学也只是单单的将书本上程序打入电脑,进行调试成功后就认为完成了任务。学生不知道如何从实际问题出发,老师的检测方式也就是笔试,而忽略了对实践的检验。

2 解决计算机程序设计语言存在问题的对策

2.1 采用不同的教学方式,提高学生的学习兴趣

要让学生仍是到计算机程序语言的重要性,老师在讲解的过程中可以插放一些小动画或软件的保护,从而引起学生的兴趣。在讲课之前老师要带领着同学看目录,划重点,让学生对程序语言的学习有一定的规划,尽量消除学生心里的畏惧感。老师要多和学生沟通,了解学生对所学的东西的了解程度,从而确定教学的进度。总之,老师在教授程序语言的同时,要以学生为主,多鼓励学生进步。

学校应该本着培养技能应用型人才,针对少数人或特别的学生,要采用不同的教学方式。适当的增加课时,给老师足够的时间去引导学生利用程序语言去解决实际问题。

2.2 解决学生实践不足的现象

学校在选择教材时,要尽量选择带有大量实践课题的教材,意在提高学生的实践和创新能力。老师也可以根据不同的学生的学习程度,设定一些课题实践,增加实践在整个教学中的比重。单单的课内实验室不够的,老师还要多增加一些课程设计,快速的增加学生的综合实践能力。

3 改进计算机程序设计语言教学的方法

3.1 程序设计语言教学的重点

教师应该在教学中突出三个重点。一是程序设计中的语法知识,语法是程序设计语言中的基础,在编程的过程中一定不能出现语法上的错误,因为这会给后面的调试带来很大的麻烦。二是程序中的控制结构,因为在编程的过程中,编程者无论是面向什么进行设计,都会涉及到流程控制结构,所以教师应该突出讲解这部分。三是控件的使用,所有的编程几乎都离不开控件的使用,因此要详细的讲解空间的作用与使用方法,并在实践中让学生加深对控件的理解,

3.2 任务驱动教学

计算机程序设计语言是有很多活动范围的学科,老师可以采取一种探究教学方式,任务驱动教学就是一种从学生角度出发的的一种教学方式。老师设定一个课程设计,大家首先经过谈论分析出课程设计的目的,然后老师和学生围绕这个课题开始实践。这种教学方式主要在于培养学生的自主探究的能力和独自分析问题的能力。学生最初独自进行编写程序的时候,老师要引导学生进行思考,将一个大的程序一点一点的分成很多个小的任务,这样会减少对学生积极性的打击,之后在协助学生对自己的程序语言进行修改,让学生感受自己设计出程序的喜悦,从而提高学生的信心。

3.3 增加教学实例

枯燥无味的课堂,学生往往会对新元素的引入产生兴趣,这时老师可以在课堂上引入一些程序案例,实例可以加深学生对课堂内知识的认识,让学生从整体上了解自己所学的程序语言,让学生从实例中找到所学知识的应用,同时也会激发学生的创新意识,培养学生提出问题,解决问题的能力。

4 总结语

在学习程序语言的过程中,教师要用不同的教学方式进行教学,发现不足并及时的改进,放弃原有的教学方式,以学生为主开展课题设计。不能认为哪种教学方式好就一直使用一种教学方式,这样会造成学生对课堂的厌烦,无论哪种教学方式,都要以激发学生学习程序设计语言的兴趣。

【参考文献】

[1],肖海容.《C 语言程序设计》课程教学问题分析及对策研究[J].东莞理工学院学报 ,2013,(5):111-115.

[2]庞尔丽,王欣.大学计算机程序设计语言教学的几点思考[J].软件导刊,2013,12(1):183-184.

[3]郝桂英.关于计算机程序设计语言课程教学的探索[J].教育与职业,2007,(17):156-157.

[4]贺忠.游戏思想在程序设计语言课程教学中的应用[J].计算机教育,2009,(13):157-159.

篇4

关键词:大作业;程序设计课程;语言学习;调研

1.初学者学习程序设计语言产生困难的原因

1.1单一化的课程设置

受到教学资源和教学能力的影响,目前国内大学的程序设计课程除了某些特殊专业的课程需要一些特殊语言(如浙江大学生物医学工程系要求采用Mcs51单片机汇编语言)之外,大多数采用C/C++、Java、VB、C#等语言。对于初学者而言,较多院系选择让学生学习C/C++,但是学生常常会在后续其他课程的学习中发现所学语言并不是需要使用的语言。例如,学生在清华大学水利系课程的学习中,有时会使用到Matlab、VB、Fortran乃至Lisp等语言。

这就对学生如何理解编程思想和设计程序提出挑战,但现状往往是学生学完了C/C++语言课程,认为掌握得也不错,却对别的语言望而生畏。究其原因有以下几点:①学生只学过c语言,于是只会用C语言编程;②害怕学习其他语言会像C语言一样枯燥且花费时间;③尽量绕开需要使用语言的地方。最终的结果是学生越来越不敢应用自己曾经学习的编程技能,导致程序设计能力下降。

1.2众多基础技能和知识需要学习

对于初学者而言,程序设计这门课的学习任务往往比较重,有各种作业和实验课。但不可忽视的是,要想学好程序设计并能够自主编写程序,就必须具备一些其他学科的基础知识,如线性代数、离散数学、算法设计、数据结构等,而主要矛盾就在于上述课程或者没有开设,或者比较难。因此,这门本来就比较难学的课程容易给初学者造成一个暗示,即“应该先把上述课程学好再来学编程”,这种现象从信心上打击了初学者。

1.3紧凑的课程设计和短时间内转化思维

程序设计语言的内容相对较多,受学期学时的限制必然被安排得比较紧凑。对于初学者而言,比较难的正是前面几节课,因为就算是一个最简单的“Hello World!”程序,教师都需要对其中所包含的很多内容进行解释,有时还会涉及后面章节的内容(如#include指令和cout命令就涉及头文件、编译、运算符等内容)。因此,学生在前面几节课中对于很多内容需要先记下来如何使用,然后在后续的课程学习中再掌握原理,而这会不停地增加初学者的疑惑,直至最终使初学者认为程序设计是一门不适合自己的课程。

编程重在思维的转化,而这对于初学者来说往往是最难的。无论是面向过程还是面向对象的程序设计语言,对初学者而言都是一种新鲜的思维方式,而不仅仅是一套知识体系。以前受固定思维模式影响比较严重的初学者往往难以在短时间内转换思维,跟上紧凑的课程设计,这导致的最终结果是初学者既没有学好程序设计,又被打击了学习信心和积极性。

2.大作业及其益处分析

2.1大作业概述

大作业不同于一般的编程练习题,从量和复杂度上来说都有相当大的区别。大作业是一个较为完整的程序开发过程,具体来说就是要求学生编程解决一个有一定难度的问题,综合利用所学课程的基本内容、基本理论和知识结构对难点问题进行分析的作业形式。

2.2原始调研数据罗列

笔者通过对北京地区17所高校的60名程序设计课程初学者进行访谈(调查问卷及结果如表1所示),了解他们学习程序设计语言产生困难的原因以及他们的学习方式和看法

2.3数据处理和益处分析

综合被调研者的口述内容和调研数据,大作业有以下几个优点:训练方面广、灵活性较强、连贯性强。

1)训练方面广。是否进行大作业设计的初学者平均代码编写行数如图1所示。从数据上来看,进行大作业的初学者为44人,占总调研人数的73.3%;进行大作业设计的初学者平均代码编写行数是不进行大作业设计的初学者平均代码编写行数的5倍,其中有11名初学者编写的程序多于1000行。可以看出,编写大程序可以保证初学者尽量多地使用语言。

2)灵活性较强。主要表现在不同大学不同课程的大作业具体内容的实行上,包括2个方面。首先,从设计命题(有的学校不要求)到开题,再到算法讨论和实现以及最后的程序提交和总结过程,导师都可以针对不同的要求和课程难度设置,灵活地安排大作业难度。在调研中,也有初学者表示他们可以按照自己的水平,灵活地选择目标和方向以及需要自己完成的项目。其次,导师的考查形式具有灵活性,对于开放性问题,导师可以设置面试答辩方式,也可以使用提交报告和运行展示的方式。考查时间可以设置在项目进程的关键时期,此期间可以由初学者进行一些汇报展示等。

3)连贯性强。主要表现在初学者的表述上。有的学校会为大作业设置一些必须使用的关键技术(如文件读取、多态、继承等)。比较优秀的大作业程序设计重点应该放在核心思路的讨论和核心算法的优选上。程序设计往往贯穿整个学期,有的学校还专门设计一套时间表,精确到每个具体日期,要求初学者在某个日期提交程序设计的具体内容。从程序设计安排上看,大多数学校主要以培养编程习惯和熟练度作为编程核心,有条件的会更加重视思维的培养和小组团队合作共同开发的能力训练。大作业可以比较容易地将教学、自学、互学联系在一起,将整个学期的课程串起来。

对于初学者而言,面对程序设计有两道坎。第一是掌握语言本身,即能够顺利地使用本门课程的语言达到自己想要的目标。第二是掌握程序设计思想,即掌握结构化程序设计的精髓,以便在后续的应用中举一反三。初学者通过一般的小作业能够巩固基本的程序设计语言知识,相对而言,通过大作业则能够将程序语言的学习内容贯穿起来,训练整体思维的同时还能够加强程序使用的熟练度,提高小组合作能力和自主解决问题的能力,在量和质上达到飞跃。最关键的是,由于大作业课堂上的知识很难满足需求,使得初学者在实践过程中自主学习新的技术和算法,提高了自学程序设计语言和举一反三的能力,为后续程序设计思想的培养奠定基础。

3.面临的挑战

总的来看,90%以上的学生认为大作业对编程训练有效果,其中有半数以上认为这个作业很值得做。然而,笔者综合60名受访者陈述的观点发现,相当多的学生仍然无法达到培养编程思想并在后续学习中运用该编程思想的目标,仍然为后续语言需求不对等的问题感到迷茫。究其原因主要包括以下几个方面:①题目由老师布置;②几乎没有小组合作;③繁重的课业导致学生无法专心投入;④没有改进程序的意识,认为能够编出程序即可;⑤考查形式对于学生没有压力。

中国的“传授一接受”教学模式会使学生减少自主学习活动,逐渐产生依赖教师的习惯,降低自主学习能力。对于教师的依赖使得学生不愿意自主设计命题,即使设计出命题,该命题也存在各种缺陷。少见的小组合作模式是难点,学生没有小组合作的习惯,其实小组合作的模式不仅能培养学生合作讨论并解决问题的能力,而且可以起到让学生相互监督和督促的作用。学生对于课业压力与学习精力的平衡较难把握,除了面对繁重的学习压力还要完成大作业,算法的设计和优化也是需要面对的难题,需要学生投入较大精力。学生动手能力的提高过程中需要解决2大问题:①程序设计能力;②程序调试能力。这2个问题相辅相成,都是一个逐步实践和提高的过程,怎么从中找到一个平衡也是教师亟待思考的问题。

4.结语

学生对于程序设计语言的学习有语言设计不对口、牵连知识多、思维转化难等困难。综合整个调研,笔者发现被广泛采用的大作业教学模式有相当突出的优点,应用形式也多种多样,是很有意义也很值得推广的一种作业形式。很多学生无法达到培养程序设计思维能力的目标,而这正是教师通过一门程序课程教学所要达到的目标,因此在大作业的完成过程中,教师应该更加关注这方面内容和技能的培养。

该调研有几个明显缺陷:①样本容量不够大,调查区域不够广,主要涉及北京地区大学本科教学的一小个方面;②调研采访的方式较为固定,应结合多种方法进行综合调研;③调研对象仅涉及学生,应该扩展到广泛的教学工作者。

篇5

关键词:程序设计;教学策略;教学方法

中图分类号:G424 文献标识码:A 文章编号:1009-3044(2013)31-7034-03

一直以来,《VB程序设计语言》内容都是计算机教学难点,对于教师教学、学生学习都有很大难度。所谓“擒贼先擒王”,教师和学生到底遇到怎样的困难呢?本人采取问卷调查方式,并结合自身教学实践,总结出师生各自难点。教师的难点包括:首先,学生缺乏学习兴趣,很难调动他们参与程序设计学习。其次,教材基本上都是理论知识,比较枯燥,大部分学生不愿意听,如果不讲学生就不清楚。最后,相比于教学内容,课时明显不足,课时安排间隔时间长,学生容易遗忘。学生的难点包括:首先,存在学习心理障碍。教材案例基本都是数学问题,有的一看就知道答案,学生会有疑问:“这么简单的问题为什么还要用计算机解决,太麻烦了”;还有的问题在数学课上就很难搞懂,然后计算机课上老师又反复解释,使学生感到厌烦。其次,理论知识枯燥无味,脱离实践需要。在课堂上,教师都是在讲解计算方法、表达式、语句,学生不清楚为何要学这些,到底是什么情况,不知道程序设计用于解决哪种问题。最后,教师不留给学生做作业的时间或者干脆不布置作业,造成学生只掌握一些知识片段,不能形成完整知识体系。

为此,本人希望探索程序设计语言教学策略,运用科学教学方法,增强学生学习信心,培养学生自主探究学习能力,让学生更好掌握程序设计知识。

1 寻找课堂教学的切入点,培养学生探究能力

在课堂教学中要把握好切入点,创设具体问题情境,培养学生思维能力。立足于信息传播、接收、保存教学思想,把课堂导入作为点燃学生思维火花的“导火索”。好的课堂导入能够让学生自主探究学习,循序渐进地启发学生思维,学生更容易理解接受新知识。反之,如果课堂切入点选择不合理,缺乏逻辑性,课堂教学环节就不能有效衔接,导致教学混乱。

1.1 以贴近生活的例子,激发学生的学习兴趣

比如,我在上“计时器控件”一课时,恰逢南京准备举办2014年世界青年奥运会,所以就这样设计课堂切入点:“南京将在2014年举办世界青年奥运会,这是南京前所未有的机遇,我们为南京申奥成功做了很多,而承办奥运会需要我们付出更多,我们应该为青年奥运会做些什么呢?那么,我们计算机专业学生就做一个倒计时程序吧。”然后将课前准备好的程序打开,自然过渡到本节课“计时器控件”学习。2014年南京世界青年奥运会承载着南京人民的梦想,也是所有世界青年追寻的理想,通过这样导入把学生注意力集中到课堂上来。

1.2 以巧妙设计的数学问题,加深概念的理解化

《VB 程序设计》课程内容十分丰富,对于一些概念不同点,假如教师仅仅是解释字面意思,尽管学生容易接受,但很难把握其深刻含义,掌握的知识也是肤浅的。因此,教师要让学生亲身参与实践活动,体验问题解决过程,从而加深知识理解。

比如,本人在讲解“整型变量”、“单精度变量”和“双精度变量”时,采用以下导入方式:首先让学生通过编程来计算5!,在编程过程中学生都用整型来定义变量,获得准确计算结果,接着让学生修改程序计算10!,仅仅是对计算数字进行修改,但电脑并没有显示正确答案,出现“数据溢出”的提示,学生感到很困惑。这时,教师应指导学生修改程序变量,用单精度进行定义,从而获得正确答案。然后再让学生修改程序计算100!,如果学生还是采用单精度程序变量,那么,“数据溢出”的提示会再次出现,学生自然会想到用双精度来定义程序变量,电脑显示正确计算结果,这样就掌握了知识。学生通过实践体验,学会区分整型变量、单精度变量和双精度变量,加深对知识的理解。另外,因为所有活动都是学生自主参与,不仅要动手,还要动脑,有利于激发学生探究学习的积极性。

2 重排课堂教学顺序,遵循学生认知规律

课堂教学应摆脱教材固有知识逻辑顺序束缚,根据学生实际知识能力水平,遵循学生认知发展规律,从易到难、从个别到一般,合理调整安排课堂教学环节,通过观察、模仿、理解、总结、升华五个步骤,发挥学生课堂教学主体作用。

VB教学一般来说都是先介绍一些抽象难懂的程序设计概念,包括计算方法、对象属性、流程图画、事件、对象等,接着讲解程序编写、程序运行,最后介绍VB语言基础、数组、分支结构以及循环结构。从教材知识逻辑关系角度上看,这种安排也是正常的,但考虑到学生认知规律特点,本人认为,如果学生一开始就接触抽象难懂的专业术语概念会出现一些问题。首先,学生在相关知识完全空白的情况下,很难理解这些概念。其次,学习难度太大会挫伤学生学习积极性。所以建议,开始上课时先不要给学生讲这些抽象笼统概念,而是运用一系列具体案例,让学生直观感受体验,对概念有初步了解,接着教师引导学生一起总结归纳。因此,本人在课堂教学开始阶段采用类比、自然过渡等方法,让学生自己打开VB软件,自己建立、保存程序,观察、认识软件界面,鼓励学生自主探究学习,寻找VB软件和过去所学软件的共同点和不同点。因为之前学生已经学过office软件操作,对于这些类似操作十分熟悉,所以上手很快。接着,教师给出一个实例计算任意两个整数之和,和学生共同完成。学生动手操作时,教师不用把每个概念都详细讲解,在实践过程中,学生自己会碰到很多问题,并逐渐理解体会对象及其属性,掌握事件设置方法,学会将对象添加到软件界面等。另外,教师应适当引导学生总结归纳所学知识,这样就可以有效解决问题。

3 巧用编程“错误”,培养学生反思能力

对于课堂教学中的隐藏错误,通常学生都难以察觉,教师如果发现错误,尽量不要直接说明,而是引导学生观察、思考,通过比较分析逐渐发现错误。同时,学生对于自身隐藏错误往往很感兴趣,学习过程中找到自己的错误会让学生更有动力,教师可以利用这一特点,鼓励学生自己多总结反思。

比如,本人在上“分支结构”这一课时,采用以下教学设计:

①运行程序时,电脑屏幕上会出现“你幸福吗?”几个字。

②如果用键盘输入“y”,电脑就会显示“幸福”,输入其他内容,电脑就会显示“不幸福”。

学生在进行程序调试运行时,会碰到很多问题。比如,输入小写字母“y”,就显示微笑表情,为什么输入大写字母“Y”,电脑就无法显示微笑表情?这时,教师要帮助学生一同分析程序哪里出现问题?出现问题原因是什么?这种错误会带来怎样影响?应该采取何种解决办法?引导学生思考分析,鼓励学生大胆尝试,自己解决问题。学生往往会有不同解决办法,像有的学生采用SELECT CASE语句,还有的学生采用两个IF语句等。通过长期培养,这有利于大幅提高学生编程的科学性、严谨性。

另外,本人还制定了如下的学习表格,主要是为了让学生学会自我反思,培养学生独立思考能力,让他们更深刻理解把握新知识。

再像上《设计一个猜数小游戏》一课时,本人在课堂教学中设计了“大家来找茬”环节,向学生展示一个“半成品”程序。程序代码中故意设置6个错误,这些错误都是学生编写代码时很容易出现的错误,把程序发送到学生端计算机,学生在设计好的软件界面上调试运行这些程序,检查错误。同时,课堂上进行找错比赛,看谁找的错误多,找错速度快,而且可以很好修改错误。这有利于充分调动学生课堂参与积极性,让学生获得成功体验,培养学生学习兴趣。

4 精选游戏实例,激发学生兴趣

根据教育心理学理论,我们知道,学生永远对那些“小玩意”很感兴趣,只有“玩”永远不会让他们感到厌倦。兴趣是学生学习的根本动力,因此,本人在设计教学方案时,决定让学生通过“玩”来学习知识。通过上网搜索大量资料,并整合其他教学资源,设计了一系列教学游戏环节,像《剪刀、石头、布》、《数字排序》、《弹性小球》、《蝴蝶飞舞》、《抽大奖》等,有效丰富了程序设计课堂教学。这些游戏包含着不同知识点,为学生创造轻松、快乐的学习环境,让学生在游戏中有收获,真正体验学习的乐趣。

比如,《剪刀、石头、布》就是学生十分熟悉的游戏,规则简单易懂,可以让学生快速进入教学情境。“谁获胜?如何判断?”能有效解决条件语句难以理解问题。还有像《蝴蝶飞舞》游戏,既要运用随机函数知识,还要利用photoshop软件处理图像素材。这些教学游戏十分贴近学生实际,生动形象地传授知识。

5 设计有效练习,挖掘学生思维潜能

人类最高层次思维心态就是创造性,这也是一种高级智力表现。创新能力是建立在创新思维基础上的,所以,教师在教学过程中应有意识培养学生创新思维,鼓励学生大胆尝试,运用新思想、新方法学习知识。

比如,在学习“MOVE方法”这部分内容时,本人上课一开始就向学生介绍:窗口界面上有一辆汽车,还有“行驶”、“停止”两个按钮,点击“行驶”按钮,汽车就会移动;点击“停止”按钮,汽车就会停止。在汽车运动过程中,学生思维得到启发。本人以此为导入,给学生讲解“MOVE方法”,引导学生认真听讲,接着自己动手编写程序,让学生充分参与课堂教学。

而在上“双循环结构”一课时,本人设置了以下问题:怎样让电脑屏幕显示“*”拼成的平行四边形?这个题目并不难,教师只需简单讲解,学生就可以模仿完成,在此基础上然后要求学生修改程序,完成以下任务:

①怎样让电脑屏幕显示“*”拼成的三角形?

②怎样让电脑屏幕显示“*”拼成的菱形?

③用“*”设计一个创意图案。

学生在课堂教学过程中思维一直处于紧张、兴奋状态,形成浓厚的学习兴趣,不仅可以培养学生比较、分析、概括的抽象思维能力,还可以培养学生发散思维能力和创新意识。这种教学活动可以很好吸引学生注意力,提高学生思维活跃度。

6 建立完善评价体系,提高学生综合素养

对于学生来说,学习积极性起到重要推动作用,那这种积极性来自哪里呢?这里我们就要谈到科学评价机制。为充分发挥教学评价作用,改进教学工作,本人制定了以下两种评价量表,把自我评价和他人评价有机结合起来。

第一份评价量表是“我问,我答,我行”。在开学时,教师就要把该量表发给学生,让他们自己保存、进行自我评价,记录平时课堂表现情况,这是一种有效的学生自评方法。其特点是给予学生充分信任,有利于培养学生自觉性和诚实品质。表格之所以用这样的标题,主要是为了提供学生心理暗示,鼓励学生展示个性风采,尽情发挥自己的才华,其评价结果占总评的20%。

第二份评价量表是“我做,我思,我真行”,主要针对学生日常作业情况,属于一种他人评价方法。其评价主体不仅仅是老师,还包括同学、组长等,具体根据任务要求来确定。该评价主要特点是有明确的量规,通过三维教学目标来细化任务内容,形成具体规范。这种评价优点是可以让教师更好把握学生实际学习情况,可以及时调整教学计划,改进教学设计。该评价结果占总评的40%,最后剩下的40%为学期考核成绩。

总而言之,教学讲究方法,但不是一成不变的。程序设计教学目标是让学生掌握编程基础知识,培养其分析解决实际问题的能力。根据该目标要求,《VB程序设计教学》应改变传统教学方法,从学生实际出发,合理设计课堂教学活动。在教学过程中,教师必须遵循学生认知规律,综合运用多种教学方法,提高学生综合素质能力,实现程序设计教学目标。

参考文献:

[1] 吴友斌.面向职高学生的程序设计教学策略[J].时代教育(教育教学版),2010(02).

[2] 曹雪丽.高中算法与程序设计教学四部曲[J].中小学信息技术教育,2012(Z1).

篇6

中图分类号:G642

1 程序设计语言类课程的教学现状及问题

计算机学科知识结构更新快,其中,程序设计语言在短短的几十年间经历了较大变化。语言类课程是计算机学科的专业基础课程,其学习效果直接影响其他后续课程。当前语言类课程教学主要面临以下问题。

1.1 课程体系设置单一

国内高校计算机专业的程序设计语言类课程大多是过程式或者面向对象的命令式编程语言,课程体系设置单一。不可否认,这类语言无论是从学科性还是有用性上讲,都是合适的。然而,程序设计语言不仅仅是这类命令式语言,它还包括如ML、Haskell这样经典的函数式编程语言,或者如兼顾面向对象和函数式的Scala语言等。从某种意义上讲,函数式编程能够更大程度地锻炼计算思维[1]。在多核并行程序设计已经被推到前沿的今天,命令式编程语言天生的缺陷使得构造并行编程模型变得非常复杂,而函数式编程在经历数十年的发展之后,终于不再局限于实验室的理论研究。事实上,如果不懂得函数式编程,Google不可能创造出MapReduce。

1.2 教学过程僵化

程序设计语言类课程的传统讲授是按照编程语言类教材的典型撰写次序,先讲常量、变量、数据类型等,再讲表达式、语句等,再比较复杂的语言特点,这些花费了较多时间,最后可能不再有多余的时间剖析该语言的内建库函数或者类,更少涉及该门课程与后续课程的衔接关系。这种传统的讲授方式针对第一门程序设计语言课程的教学,特别对那些没有接触过编程语言的学生来讲,可能是一种较好的方式[2]。然而,对于第二门程序设计语言的授课,按照这种按部就班的教学过程推进教学进度时,由于在较长一段教学活动中所讲授的都是孤立的语法点,学生看不到一个较为完整的应用实例,也不了解这门课程与其他课程之间的贯通,容易产生厌学的心理,也很难体会程序语言的设计艺术。

1.3 重编程技能,轻计算思维

针对程序设计语言类课程实践性特别强的特点,许多教改措施都是针对如何提高学生的工程应用实践技能的[2-3],如采用案例化、任务驱动、项目驱动等方式。编程技术固然重要,然而计算思维比单纯技术更加重要。培养学生以计算机的方式进行思考和解决问题,让他们认识到程序是思想的表现形式,最终能够通过语言来表达思考与设计,并能理解这门语言设计和实现的长处、不足、限制等。为了达到这个目标,需要引导学生深入理解编程语言本身。

2 教学改革措施

2.1 增设函数式编程语言课程

函数式编程模型早在面向对象概念出现之前就已经存在了,它的核心是lambda演算。由于其语法不如命令式语言的语法直观易懂,许多初次接触函数式编程的人常常不知所措,会觉得难以理解。然而,这种难以理解性与熟悉程度相关。近20年的课程改革中,因为种种原因,程序设计语言类课程体系几乎完全抛弃了函数式程序设计语言。如今,多核时代的兴起,函数式程序代码的简洁性使得它在并发应用领域绽放光彩。虽然实用性是我们应当考虑的一个方面,但是从培养学生计算思维以及从编程语言本身的研究方面,增设函数式编程语言课程是很有必要的。

常用的函数式编程语言或者具备函数式编程语言特点的编程语言包括Haskell、ML、OCaml 、Scala等。依据需要可以选择不同的函数式编程语言:如果倾向于编程语言本身的理解,可以选择纯函数式的ML、Haskell,或者OCaml;如果倾向于并行分布式程序的开发,可以选择结合了面向对象和函数式特点的Scala语言,它兼容Java。此外,Java 8的lambda表达式也是一个不错的学习函数式编程的选择。

2.2 适当调整讲授内容的次序

以Java程序设计语言的教学为例,按照常规教材的编写次序,Java的教学内容通常是先讲变量、类型、表达式和语句,然后是数组,接着是类和对象、继承等。在实践中我们对讲授内容的次序进行了调整:在对Java语言作了初步介绍之后,紧接着讲解对象的创建和使用,见表1。表1第2行的内容不再放在讲解了类的定义之后。这个调整出于两方面的考虑:一方面,让学生尽快建立对象的概念,知道怎么使用对象;另一方面,数组在Java程序设计语言中视为对象,因此,讲解了如何使用对象之后有利于数组的讲解。而类的定义涉及较多语法知识,在讲解了如何使用对象、变量、类型、表达式和语句之后,引导学生考虑这个问题――我们能不能按照自己的设计来创建对象呢,于是开始讲解类的定义,见表1第5行。

为了讲解如何使用对象,首先选择两个常用的Java内建类――字符串String和System,针对已经学习了C语言程序设计的学生,从教学效果上看,尽管学生还没有接触到Java的各种语法规则,但是他们仍然接受了“对象”这个知识点的讲授。更重要的是,他们建立了对象的初步印象,了解了Java与C的不同,并在一定程度上激发了学生的学习兴趣。

由于Java程序需要使用标准输出流的方法System.out.print()用于输出程序的运行结果,学生就问:Java程序怎么输入呢?此时,对输入输出流进行较为完整的讲解显然不合适,在讲解使用对象时,我们进一步讲解如何使用Java的字符缓冲输入流类BufferedReader,直接给出如下板书:

BufferedReader br = new BufferedReader(

//BufferedReader需要一个Reader类型的参数

//InputStreamReader就是一个Reader

new InputStreamReader(

//InputStreamReader需要一个InputStream类型的参//数,System.in就是一个InputStream

System.in));// System.in用于接受键盘的输入

br.readLine(); //BufferedReader的readLine

//方法读入一行

以上这段代码稍显复杂,学生在课余可以仔细研究并进行试验。实践表明,这些Java常用内建类的使用在教学初期给出时,不但没有造成学生的困惑和畏惧,反而提升了学生的学习热情。

2.3 引导学生深入理解程序设计语言

程序?O计语言类课程对于培养学生的计算思维非常重要,需要学生深入理解程序设计语言本身的设计与实现,而不仅仅是学习单纯的语法。

通常学生因其视野的局限性和课时的限制,无法深入学习一门程序设计语言。教师在授课时应该找机会引导学生去深入理解。通常,语言设计和实现者提供了API文档和源码,这些是深入理解一门编程语言最直接也是非常好的参考资料。如果学生能够养成查看API的习惯,无疑能够促进对语言的认识和理解。以引用类型变量的讲解为例,假设变量p引用的是一个Person类型的对象,变量s引用的是一个String字符串对象。System.out.print(p)输出结果是代表对象地址的哈希码,而System.out.print(s)输出了一个字符串。这是为什么呢?同时,有学生就会提出疑问:System.out.print(p)是否可以直接输出p所引用的Person对象的成员值,如姓名和年龄等,而System.out.print(s)是否可以输出这个字符串对象的地址哈希值?在这个过程中,可以引导学生逐步查找对应的API,如图1所示。最后可以进一步查看Object类和String类对应方法的实现源码。知道了这个思路后,学生豁然开朗,开始着手解决问题。

在教学实践中,我们常常鼓励学生按照这种方法去找解决思路,而不是直接给出答案。得益于Java的开源,在Java程序设计语言的教学活动中,我们也鼓励学生查看javac编译器或者JVM的即时编译器的实现源码。学生通过这种学习方式,在长期使用一门程序设计语言后,最终能够驾驭语言,表达类似计算机方式的思考与设计。

篇7

关键词:问题诱导;启发式教学;程序设计语言;教学方法

目前大多数程序设计语言按照知识点结构进行教学,教师在教学过程中习惯性地进行注入式教学。这种教学方法造成学生只能照搬照套模仿示例代码,不能灵活运用所学知识,难于自己动手编写代码以解决实际问题[1]。著名科学家牛顿发现“成熟的苹果从树上掉下来”这一自然现象,才逐步分析问题、研究问题,提出了万有引力定律;而不是先研究出万有引力定律,才推导出实际结果或发现现象。所以科学家们都是从实际问题、具体现象出发,分析问题,研究问题,从实践升华到理论,再从理论应用到实践。当教师在向学生传授科学家们研究出的科研成果时,应该让学生先了解存在的问题、知识的来源、过程,以深入理解知识、能够灵活应用知识,而不是简单地告诉其成果,然后应用到实践中。

我们要培养出具有创新能力的人才,不仅要采用启发式方法促进学生对知识的理解与应用,更迫切需要按照知识被发现、研究和应用的“再现”过程,传递知识给学生,让学生理解知识的本质。所以,本文研究问题诱导启发式程序设计语言教学方法,在教学中从具体的问题入手,启发式地引导学生理解程序设计语言中的基本概念、基本结构和基本方法,然后应用到具体实例中。本文以面向对象程序设计语言Java为例,从基础知识、程序算法、过程和函数、图形用户界面设计等方面分析问题诱导启发式教学方法在程序设计语言的应用。

1启发式教学方法

启发式教学是历代东西方教育思想的精华。早在两千多年前,孔子就提出了“不愤不启,不悱不发;举一隅而不以三隅反,则不复也”的启发式思想。他强调学思结合,认为只有当学生处于积极状态时,在心求通而未得其意时,在知其意而不能言时,教师进行启发、诱导最为合适,教学效果最佳。同样,古希腊苏格拉底提出了“助产术”,以交流方式讲学,在交谈时提出问题,引导学生进行思索,自己得出结论。孔子和苏格拉底的启发式思想和方法,为古今中外历代教育家继承和发展,形成了今天的启发式教学思想、原则和方法[2]。启发式教学方法具有很多形式,包括经常使用的正问启发、从问题对立角度提出的反问启发、增强学生直观印象的观察启发、依据知识点内在联系进行逻辑推理的推理启发、使学生加深对知识内涵和外延认识理解的对比启发、类比启发、发散启发、图示启发等[3]。

问题启发是启发式教学方法的重要途径,问题本身的质量是影响启发式教学效果的重要因素。根据美国密歇根大学教育学院的研究报告,一个好的启发式问题应该是有价值的、可行的、可持续的、合伦理的。有价值的启发式问题可以使学生真正理解知识点,学习到有价值的知识。可行的启发式问题应该是学生在已经掌握的知识基础上,利用教材和参考资料、互联网等资源,通过研究、讨论等形式可以解决的。可持续的启发式问题应该能够扩展已有知识,发现新知识。合伦理的启发式问题应该是积极健康的、合乎伦理的。

2程序设计语言教学

在计算机课程体系中,程序设计语言包括汇编语言和高级程序设计语言。程序设计语言是计算机领域专业的核心基础课程,在课程体系中处于先导性和基础性地位,是学习后续课程的重要技术和工具基础。程序设计语言课程的学习不仅可以使学生获得基本的程序设计能力、培养学生基于计算机计算的思考能力,还极大影响学生对后续课程的学习和兴趣。程序设计语言教学主要讲授基本语法、常用的函数、典型算法和编程技巧,培养学生具备程序设计思想解决实际问题的能力。

3问题诱导启发式教学

问题诱导就是按照知识被发现、研究和应用的“再现”过程,传递知识给学生,让学生理解知识的本质。问题诱导启发式程序设计语言教学方法是在教学中从具体的问题入手,启发式地引导学生理解程序设计语言中的基本概念、基本结构和基本方法,然后应用到具体实例中。本文将问题诱导启发式方法应用到具体的Java程序设计语言教学中[4-6]。

3.1基础知识

程序设计语言的基础知识点有标识符、注释、分隔符、变量和常量、数据类型、运算符、表达式、数组、语句。

对于标识符,通常的做法是先介绍标识符的命名规则、作用,然后给出示例。在Java语言中,标识符是以字母、下划线或美元符$开头,字母、下划线、美元符$、数字组成的任意长度的字符序列,用于表示程序中的变量、常量、类、函数等名字。合法标识符:A, a1, $Systembol, square, ex_sa;不合法标识符:1a(不能以数字1开头),break(禁止使用保留字),TWO WORDS(不能含有空格),.NO(不能有圆点)。本文采用问题诱导策略的启发式方法是先提出问题:程序需要由CPU执行,读取并处理内存的数据。CPU如何找到数据?根据内存地址?高级语言不会知道数据的内存地址的,所以给数据所在的内存地址起名,这就是标识符命名程序要访问的数据。对标识符的命名就像我们对日常的起名一样,必须要有一定的规则,这就是标识符命名规则。

对于注释,通常是依次讲授注释的表示方法、作用。在Java语言中有3种注释形式:“//”单行注释:表示从此向后,直到行尾都是注释;“/*……*/”块注释:表示在“/*”和“*/”之间都是注释;“/**……*/”文档注释:所有在“/**”和“*/”之间的内容可以用来自动形成文档。注释的作用:对程序的执行不产生任何影响,注释可增加程序的可读性,也有利于程序的修改、调试和交流。采用问题诱导的启发式方法是先提出问题:如何使形式化的程序易读、便于交流?如何让程序员很快能回忆起以前编写的程序代码的含义?在Java中提供了便于理解程序的可以采用自然语言编写的注释。当然,这种自然语言编写的注释不会影响程序的运行,仅仅是对程序的一种补充说明。

对于分隔符,通常会列举出空格、逗号、分号及行结束符等分隔符,并给出示例。采用问题诱导策略的启发式方法是先提出问题:如何区分语言元素如关键字、标识符、运算符等?与汉语不同,在英文中需要采用分隔符将单词分割开来。例如,我是一名教师,对应的英文:I am a teacher,这里必须采用空格作为分隔符;否则我们是无法理解没有空格的英文Iamateacher。程序设计语言和英语一样是西文字符表示的,所以需要采用分隔符区分语言中的语言元素。此外,和英文中的段落划分便于阅读相同,分隔符也可以提高程序的可读性。

对于变量和常量,通常依次给出变量的含义、类型、定义形式、引用形式、作用域等。在Java语言中,变量是程序运行期间其值可以变化的量。变量的类型决定了该变量的存储范围、可以进行的运算形式。布尔型的变量只能取值: true和false,只能进行取反、并、或、异或逻辑运算,不能进行加减乘除运算。变量的定义和引用形式示例代码段如下:

bool sex;//定义变量

sex=true;//引用变量

采用问题诱导的启发式方法先提出问题:在程序运行过程中CPU读取并处理内存数据,CPU如何获取数据所在的内存地址?这就要求程序标识命名CPU所访问数据的内存地址。在程序运行中如果该存储单元的值可以变化,就是变量,否则就是常量。例如一个根据半径计算圆面积的程序中,半径是变量,圆周率是常量。

具体代码段如下:

final float PI=3.1415926F;//圆周率

float radius=2.0F;//半径

float area;//面积

area=PI*radius*radius;//计算圆面积

对于数据类型,通常讲授数据类型的分类、每个数据类型的取值范围和运算。采用问题诱导的启发式方法提出问题:定义一个表示年龄的变量age,age=30该变量对应内存存储单元的值变为30,表示年龄为30岁,然而,age=30.1是错误的、无意义的,那么如何让程序运行前通知这个错误,而不是运行后经过分析才发现这个错误?数据类型可以实现对变量的取值范围限制以及所进行的运算。当变量age定义为整型变量,该变量只能被赋值以整数。然而如果要限制变量age只能存放0到200之间的整数值,就需要结合条件语句来实现。

对于运算符和表达式,通常依次讲解运算符的种类、优先级和表达式的定义。采用问题诱导的启发式方法提出问题:创造计算机执行程序的目的是为了科学计算,如何表示计算中的运算符、操作数和表达式?程序设计语言中的运算符、变量以及常量、表达式与之相对应。进一步,如何表示形如 的表达式?因为计算机是按行从上到下,从左至右依次读取代码执行程序的,所以,必须将这种占两行的表达式转换为一行的形式,即为分子/分母。

对于数组,依次讲解数组的定义、初始化、引用、多维数组。采用问题诱导的启发式方法提出问题:如何计算100个学生的平均成绩?没有采用数组如下代码段表示:

float grade00;

float grade01;

float grade99;

float avgGrade=0;

avgGrade=(grade00+grade01+grade02+…+grade98+gtrade99)/100; //计算平均成绩

如果采用数组表示,如下代码段所示:

float grade[]=new float[100];

float sumGrade=0;

float avgGrade=0;

for (int i=0;i

avgGrade=sumGrade/100;

显然,可以看出没有采用数组表示,需要定义100个整型变量,需要102条语句,而采用数组表示仅定义数组变量,需要5条语句。所以,采用数组表示可以减少代码数量、也可以提高程序的可读性和可维护性。数组是相同类型元素的集合,如何表示不同类型元素的集合?可以进一步引出其他知识点。

对于语句,通常讲授语句的定义、种类以及示例。语句是程序的基本组成单位,语句包括简单语句和复合语句。简单语句包括变量定义语句、赋值语句等,复合语句就是使用一对花括号{}将若干语句括起来的语句块。采用问题诱导的启发式方法提出问题:如何编写程序控制计算机执行命令?程序是由什么构成的?语句就是构成程序的要素,是控制计算机的命令。简单的命令就是简单语句,负责的命令就是复合语句。进一步,如何表示语句?语句后面跟着分号。计算机按照顺序依次执行语句,如何表示当某种条件满足才执行语句?如何表示重复若干次执行某条语句?程序设计语言中的顺序结构表示依次顺序执行语句,条件语句表示满足一定条件才执行某条语句,循环语句表示满足一定条件执行某条语句。

3.2程序算法

对于程序算法,老师通常依次讲解算法的概述、分析算法流程、阅读算法代码、展示运行结果。算法本身比较抽象,再加上这样的教学方法,导致学生难以理解和运用。采用问题诱导的启发式方法并结合实例启发,提出如何解决一个具体问题,如排序、查找,从而引出算法。例如,在讲解程序设计的排序算法时,应先进行问题启发,给出要排序的一组数,然后启发学生如何能够排序该组数,以调动学生,让学生根据算法的要求结合已有的知识,积极主动地参与到算法的设计过程中来。图示是一种直观的、简明的、清晰的教学方法,可以把抽象的知识形象化、具体化。程序算法设计是比较复杂的知识点,需要采用多媒体教学手段以图示方法启发教学。教师应根据学生思考的进度将课件中的程序逐步展现在学生面前,接着再采用多媒体动画方式播放排序过程,把抽象的、复杂的排序过程形象化、具体化。切忌将事先编好的程序直接显示给学生,然后再从头至尾地将程序介绍完毕。否则学生即使理解程序代码的意义,自己也不能灵活运用已经学习的程序算法,解决类似问题,设计出正确的程序算法。

3.3过程和函数

过程和函数是比较容易理解的概念,过程和函数都是程序的构成单位,是完成某个功能的程序段。函数和过程的区别是:函数有返回值,可以构成表达式,而过程没有返回值。采用问题诱导的启发式方法启发,提出问题:如何组织编写一个上千行的复杂程序?肯定是不能放在一起的,需要划分。如何划分?过程就可以将一个复杂程序划分为若干个程序段,并命名以方便调用,这样可以提高程序的可读性和可维护性。表达式由操作数和运算符构成完成一定的运算,如何将一个程序段的计算结果作为操作数嵌入到表达式中?函数是具有返回值的程序段,可以作为表达式的组成部分。

3.4图形用户界面设计

对于熟悉控制台方式编程的学生来说,初次接触

到图形用户界面设计,不宜理解,一时不能转换编程方式。这就需要我们教师采用合适的方法讲解该内容。采用问题诱导的启发式方法并结合实例启发,提出如何设计实现一个具体应用程序,如腾讯QQ聊天程序、PPLive网络电视等,从而引出图形用户界面设计,让学生对该知识点的应用产生具体形象的认识。图形用户界面设计就是采用基本组件:窗体、按钮、工具栏、文本框等,“组装”程序界面,类比我们把主机、显示器、键盘、鼠标、音箱等组装成一台个人计算机,我们只需要知道它们之间的接口和功能就可以有选择地组装计算机,而不需要了解其工作原理和内部结构。例如光电鼠标的作用是通过USB接口和主机相连,作用是采集人移动的方向、坐标以及动作。学生只要知道鼠标的作用和接口就可以完成这个任务。

4结语

问题诱导启发式程序设计语言教学方法是本专业高级程序设计语言教学团队多年教学实践的总结,在日常教学应用中取得了很好的教学效果。启发式教学方法的应用有助于增强学生理解并应用程序设计语言知识解决问题的能力,提高学生从问题发现知识的“自我学习”能力。然而,该方法在其他课程的研究和应用,需要进一步的实践分析。

参考文献:

[1] 朱昌流. 论启发式教学的有效实施[J]. 教育与职业,2007(18):157-158.

[2] 陶沼灵. 启发式教学方法研究综述[J]. 中国成人教育,2007(4):39-40.

[3] 邵洁.课堂学习共同体的有效建构:以高级语言程序设计(VB)课程为例[J]. 现代教育技术,2009,19(8):120-124.

[4] 樊新华,孟铂. “C程序设计”启发式实例教学探讨[J]. 计算机教育,2008(18):98-99.

[5] Harvey M. Deitel, Paul J.Deitel. Java大学教程[M]. 北京:电子工业出版社,2003:34-112.

[6] Bruce Eckel. Java编程思想[M]. 4版. 北京:机械工业出版社,2007:30-90.

Research of Heuristic Programming Language Teaching Methods Based on Problem Induction

LI Xue-jun, LI Long-shu, XU Yi

(School of Computer Science and Technology, Anhui University, Hefei 230039, China)

篇8

关键词:VB程序设计语言;实验教学;实践能力

在《中国高等院校计算机基础教育课程体系》[1]和《非计算机专业计算机基础课程基础教学基本要求》[2]两本指导高校计算机基础教育的指导书中,明确提出程序设计基础课程要求,因此程序设计语言一直以来作为非计算机专业计算机基础课程在高校广泛开展。作为大学生的第一门程序设计课程,多数同学都取得较好的成绩,但其实际编程能力却仍然薄弱。造成学生高分低能的原因有很多,传统的教学模式难辞其咎;加强实验环节,全面提升大学生计算机综合能力成为计算机基础教学改革当务之急的任务。

我校非计算机专业在第一学期完成计算机基础公共课的基础上,第二学期设置程序设计必修课――Visual Basic程序设计语言,共54学时,授课36学时,上机18学时。覆盖学校海洋、生命、食品、经贸、工程学院的诸多专业。学生通过本课程的学习,加深对计算机技术的认识,利于其更好的使用计算机解决实际问题。

1 针对传统实验教学模式存在的问题,自编案例教材

传统VB教材注重知识点的整合和循序渐进的讲解,割裂程序设计基础和VB各个控件关联;很难将程序思维方法和技巧传授给学生。教学方法采用“课堂教学为主,实验教学为辅”的教学方法,实验仅仅验证课堂知识,加重学生对课程抽象理解,缺乏知识连贯性和整体性的认识。学生在学习过程中感觉枯燥,不感兴趣,没有主动性。从而影响学生对这门重要的编程课程的知识点的掌握。根据多年VB的教学经验,遵循认知规律,把程序设计的知识点和控件知识点融合在一起,编写案例驱动的特色教材[3-4]。通过3年的实践,这样安排教学内容,使学生既能从认知角度学习知识,又能从系统开发角度掌握VB的知识点,取得较好的效果。

2 多元化实验设置

在教材中安排了三种实验类型:验证性实验、拓展性实验和设计性实验。

验证性实验是基础性实验如数据类型、分支结构、循环结构、数组等,学生根据实验指导按部就班地完成实验,将基本知识理顺,理解原理掌握规律。培养学生对基本理论知识的理解和基础试验技能提高(如掌握调试程序的基本方法)。养成严谨的态度,夯实动手能力基本功。

拓展性实验是在验证性实验的基础之上,增加一两个功能。涉及的知识点倾向学过的知识,如自编教材中每章后附的案例实训,都是本章知识和前几章知识的综合应用。通过问题的提出,明确的实验目的,激发学生解决问题的意识,为设计性实验安排和实施奠定基础。

设计性实验灵活度最大、综合性强,教师只给出实验的目的和实验条件,不限定学生的界面形式、设计方案和数据结构。能够充分激发学生的学习热情,体现现代教学方法核心――突出学生的主体能动性。设计性实验内容涉及编程基础知识面广,如输入输出、流程控制、数组、过程等,学生通过设计性实验加深模块化程序设计技巧的理解,有效地进行任务分解,完成实验方案设计、算法分析、数据组织、界面设计、代码编写、运行调试、结果分析及形成文档一系列工作,实现程序设计全过程的训练。

3 实验教学教师遵循原则

在实验教学中,学生与教师在理论课角色是不同的。教师从课堂上的教学组织者转变为上机操作的指导者。作为教学组织者,教师有较充分的主动性传授知识,易于控制所传递的知识内容,可使学生在较短时间内获得较多的知识。而实验教学中教师是上机的辅导者,学生亲自动手、动脑参与教学活动。根据这些特点提出相应的指导原则。

3.1 循序渐进原则

验证性实验,是对基本知识的巩固和证明,有利于培养学生实验操作、数据处理和调试程序的技能,有利于基础知识的掌握。拓展性实验和设计性实验,在实验教学中,采取提前预习实验内容,查阅资料,综合运用已学过的知识,独立地设计出达到实验预期目标的实验方案,得出合理的实验结果。教师在指导过程中通过任务分解,逐渐过渡的讲解方式,指导学生运用结构化程序设计思想,自顶向下、逐步细化,实现程序。学生经过由浅入深地分析、由简单到综合比较、积极主动地完成程序的设计,使其创新能力和独立解决问题能力有所提高。

3.2 分层教学因材施教原则

教师根据学生的具体情况、实验特点、实验要求进行具体指导。例如:刚开始VB程序设计实验时,软件的使用方法、调试程序的技能技巧都需要教师指导。随着学习深入,教师在指导过程中可根据学生理论基础和学习能力的差别,提出灵活的实验要求。对基础较好、能力较强的学生鼓励尝试多种设计方法和实现更多的程序功能;对于基础较差或动手能力较弱的学生,只要求完成基本要求。既能做到实验基本技能训练,又能体现能力、综合素质培养。使成绩好的学生能够“吃饱”,成绩差的学生也能“吃好”,每个学生通过实验均得到锻炼和提高,学生的潜能得到较好的挖掘和施展。

4 优化评价体系

VB程序设计语言是一门理论性和实践性均很强的一门课程。实验教学非常重要。要求较全面的考查学生的应用能力,动手能力和分析问题解决问题的综合能力,充分发挥学习的主观能动性。为了更好的检测学生的编程能力,进一步巩固教学效果,将课程的考核方式向实践能力倾斜,期中实验成绩20分,学生通过完成教师布置的实验,巩固程序设计理论知识,积累解决实际问题的方法和步骤,为综合作业完成做准备;综合作业20分,4~6人为一组,完成具有一定难度的小型系统设计开发,培养学生的团结合作能力,体会程序开发的过程。期末上机考试成绩60分(如图1所示)。

综合作业由三部分组成:程序源代码,相关文档和小组答辩。

程序源代码:考核形式为当面检查,解释代码含义,了解学生对程序的掌握理解程度。

相关文档:描述程序的核心及开发过程中重点、难点的解决方案,促进学生全面的掌握程序设计的内容,同时煅炼学生撰写报告的能力。

答辩:各小组依次进行系统演示,教师针对程序以及相关知识点进行提问。

综合作业安排在课程结束前一个半月,学生自行分组,按综合作业的题目和要求完成任务,学生可以相互讨论但必须自己完成。综合作业成绩由教师评定成绩、小组组长成绩和学生自评成绩组成。教师评定要站在较高的高度全面的评价学生工作,应以鼓励为主,既要对其作业的优点进行褒奖,也要指出系统存在的不足,鼓励其在能力范围内充分发挥其自学能力和创新能力。教师通过对学生的评议,可以较全面的掌握学生对所学知识点理解和应用的熟练程度;进一步的总结学生学习过程的经验和问题;为更好的开展教学工作积累教学经验。小组长成绩,就是一个参与答辩的学生互评的过程,目的是引导学生进行正面、客观的评价。发现其他同学的系统的优点和长处,提升学生团队协作的能力。学生通过自评能够端正学习态度,养成自我总结的好习惯,提高其参与教学活动的积极性和主动性。

5 改革效果

教研室抽取2009级不同专业300人的VB程序设计语言课程机考成绩,分析实验教学改革的效果(如图2所示)发现:绝大多数学生(88%)通过平时实验和综合作业,积累程序设计方法和分析问题能力, 顺利通过考试。一方面:优秀(80~100分)人数占总人数的25%,另一方面:从30分以下占总人数5% 可以看出平时积累较少的学生很难取得及格分数。

图2 VB程序设计语言机考成绩分析图

6 结语

程序设计基础是非计算机专业学生的一门重要的基础课,是了解专业应用软件原理的基础,而VB程序设计语言实验教学的改革是一个初步尝试,突出学生独立分析问题、解决问题能力的培养,使学生将知识转化为应用的一种尝试。从教材建设、教学方法和评价体系等多方面进行改进,对于学生更好、更牢固的掌握课程内容具有一定的帮助,使学生了解软件编程的原理和过程,从而在专业软件的使用和开发角度打下良好的基础。

参考文献:

[1] 中国高等院校计算机基础教育改革课题研究组. 中国高等院校计算机基础教育课程体系2006[M]. 北京:清华大学出版社, 2006:66-692.

[2] 教育部高等学校文科计算机基础教学指导委员会. 大学计算机教学基本要求(高等学校文科类专业)[M].北京:高等教育出版社,2008:80-125.

[3] 黄冬梅,王爱继,陈庆海. Visual Basic 6.0程序设计案例教程[M]. 北京:清华大学出版社,2008:205-252.

[4] 黄冬梅,王爱继,陈庆海. Visual Basic 6.0程序设计案例教程[M]. 北京:中国铁道出版社,2011:212-253.

Visual Basic Programming Language Experiments Teaching Method

AI Hong, CHEN Qinghai, PEI Renlin

(College of Information Technology, Shanghai Ocean University, Shanghai 201306, China)

篇9

关键词:NDQJava2;创新;程序设计;量子成分

中图分类号:TP311.52

量子程序设计语言NDQJava2处理系统,是借助于NDQJava的经典系统,加以相应的量子成分,在NDQJava2的处理系统中,是使用的层层递进的树形结构,把语法树来翻译成java代码,更加有利的实现语法的分析。

1认识NDQJava2语言

NDQJava2是在NDQJava的基础之上,增加了具有量子成分的条件语句、循环语句、子程序等进化而来,形成的是一种混合式的、结构化的量子程序设计语言。但是由于技术的限制,还没有真正的量子计算的问世,要进行NDQJava2设计语言,就要在传统计算机上进行模拟,由于NDQJava2和NDQJava一样,都是以Java为基础的,所有要采取从编译到解释的过程。在设计中,也遵循着NDQJava的原则:实用、简明、严谨、快速。

量子成分的条件语句,与Java语言的运用相类似,主要是为了解决在NDQJava在书写时没有固定的条件控制语句,时常需要在传统部分与量子部分之间进行切换作业,影响了程序效果。在NDQJava2的条件语句中,每一个作为变量的量子都能独立的使用一个使能量子,更加清晰合理。

量子成分的循环语句,在NDQJava2中会先进行判断,判断语句的真伪,如果证明为真,就进行量子程序表达式的循环,但如果证明为伪,就会终止循环。

量子成分的子程序,解决了程序书写时的重复问题。子程序应用于NDQJava2主要是分为定义、调用这两个部分,能有效减少语言的重复情况,在出现重复的计算时,就可以把相互重复的部分代码变为一个子程序,使程序结构变得更加清晰。

量子成分的异常处理,量子的程序设计语言,与传统的设计语言有一个很大的不同点,就是量子的变量性质。在量子的语言结构中,引起异常变化的因素非常多,比如:IF语句的使用,在条件满足的情况下进行,但在条件不满足的情况下就不能进行,就会引起异常情况,异常处理的模块就是专门应对这样的情况。

2NDQJava2系统功能

NDQJava2以其创新的设计,对NDQJava进行系统的优化,也是在Java语言的基础上,进行从编译到解释的过程。主要是在词法分析、程序汇编与解释、代码转换这几个领域作用突出。

2.1NDQJava2的词法分析功能

词法分析功能,是NDQJava2的第一大功能,主要是为了对NDQJava2源程序的单词进行识别,并形成单词的序列。由于现在完备的量子技术还没有真正实现,所以在NDQJava2中就包括传统和量子两个部分,本着对已有资源充分利用的原则,把传统经典的部分与量子的部分进行区别处理。

在传统经典的部分中,使用的是Java处理,量子部分出现的语法都默认为量子成分,自行设计。两部分别的要创建不同的文件夹进行保存,在运行时要进行判断为哪种部分,如果为量子部分,就利用量子成分的循环语句,进行文件的处理,处理后建立起语法树。如果经判断,为经典的部分,就由Java运行。NDQJava2系统中,语言的关键字和分解符都有独特的码与之一一对应,这就把源程序中所出现的单词,转化为单词序列,而标示符用量过大,无法实现一一对应,为了使用方便,就统一为一种码。并进行程序设计,需要使用以的下形式:

开始NDQJava2源程序预处理子系统(对多余信息进行删除)扫描程序(对单词进行实际识别)单词序列结束。

2.2NDQJava2的程序汇编与解释功能

为了实现NDQJava2在传统计算机上书写量子的程序,就要设计假设的基本的指令集和汇编的指令集,并使用Java来编写相应的汇编程序、解释程序。

NDQJava2中,程序汇编功能是采用的分段汇编,将每一段汇编指令各自进行汇编,再集合起来,形成一个完整的汇编指令,在获取汇编指令以后需要使用command函数把指令输入到量子的汇编系统中,量子的汇编字符串就是command函数得参数。汇编字符串被空格分隔为多个子串,指令字符串上的第一个子串,就是操作码。根据获得的操作码,查找对应的操作数,生成指令。不同的指令所需要的操作数也各不相同,最后就需要把操作码与操作数进行合并,作为机器的指令向外输出。

程序的解释功能,就是对于机器的指令进行逐条的翻译过程,并执行计算。在程序的解释功能中,经过量子的汇编程序处理过的机器指令存入系统中,以指令地址分类,分为单地址和双地址,单地址的最高操作码位数为0,双地址的最高操作码位数为1。以此来获得准确的操作码。分析得到的操作码,调整与之相匹配的量子操作方法,根据操作数的两种分类:寄存器编码型和数值型,进行操作数据处理,汇集为参数输入函数处理。

2.3NDQJava2的代码转换功能

NDQJava2在进行代码转换的时候,首先要遵循相应的原则,主要是三方面:第一要确保转化的正确性,第二是机构程序要清晰、易读,第三就是要利用自身的Java系统,提高效率。

在进行代码转换时,采取树形的逐层转换,先转换低层次的代码,再由低层次的代码来转换高层次的代码,这就很大程度上保证了完整性和正确性。代码之间要层级明确,建立起一个明确的结构,每一个量子成分的代码都要有一个单独的函数,各个函数之间不能在功能上产生交叉和重复。函数之间可以进行上下级的调用,但不能在同级之间进行调用。在整个NDQJava2系统中,是采用建立语法树,转化为以Java语言编写的指令程序,在运用中,要分析整个语法树,对每一个量子模块都进行识别,调用代码的模块转换为函数,进行处理以达到生成的Java代码要包含汇编的指令。

经过本文的论述,主要是探讨了整个NDQJava2的技术理念:即在NDQJava的基础上,进行的发展和创新。以及技术的系统功能,可以预见的是量子程序设计语言NDQJava2处理系统已经是未来发展的主流,随着科技的进步,必将能真正的投入应用之中。

参考文献:

[1]刘玲,徐家福.量子程序设计语言NDQJava-2[J].软件学报,2011(2).

篇10

关键词:四环教学法;理论教学

程序设计语言是计算机专业非常重要的专业基础课之一,它主要培养学生编程的逻辑思维方式。学生初次接触此类课程经常被繁杂的语法规则所困扰,影响了程序的编写。尤其是对于面向对象的程序设计语言,众多的控件、事件、属性,更是让学生无从下手。笔者在多年的程序语言教学中总结出了“四环教学法”,经过实践,这种方法对于程序设计语言的理论教学,颇有成效。

一、程序设计语言理论教学现状分析

1、学习动力不足

目前高职学生的综合素质相对于普通本科学生很有差距。尤其是普高考入的学生,从来没有接触过程序设计语言,学起来感觉相当枯燥,难以理解。于是有些学生认为学习程序设计语言既枯燥又无用,不如学习多媒体或的一些课程;也有的学生由于数学基础和逻辑思维能力都比较差,在学习时显得力不从心,不能掌握应用计算机解题的基本思维方式,对计算机程序设计产生畏惧感,就知难而退了。

2、教学课时少

与普通高校本科计算机专业相比,一方面,高职学生的学习基础相对较差,导致他们接受较慢,学习困难;另一方面,目前我国高职院校的学制一般是3年,并且采用“2+1”学习制,即两年在校学习理论知识,一年在社会实践中提高专业水平。计算机专业的程序设计语言的课时较少,这就导致了实际教学中存在理论课时和实践课时不够的情况。因此,教师只能传授最基础的程序设计知识,不能提高学生应用程序设计语言解决实际问题的能力。

3、实践教材的缺乏

计算机专业本身就是技术应用专业,而高职院校更是以提高实践能力为主的职业。然而,现今高职程序设计语言教材,存在的普遍问题就是实践性教学内容不足,没有体现教材的实用性和职业性,不能保证对学生实践能力的培养,不能体现高等技术应用型人才的培养要求,缺少高职教育特色。

4、教学方法落后、考核方式单一

高职程序设计语言课程一般采用的教学方法是教师课上讲授加学生实验的形式,教师在理论课上常常采用“填鸭式”教学,学生很少主动思维,编程题不能独立作答案。上机实验时学生仅仅是对书本上现有的一些实例进行编辑调试,一旦调试成功就完成任务。这种教学方法根本不能让学生掌握如何从一个实际问题入手分析、解决问题。单一的笔试考核方式也使教师和学生忽视实践课环节,舍本逐末。

二、什么是四环教学法

所谓的四环教学法是指教学中的四个环节,包括知识点的简要概括、学生独立学习、学生上台讲述和教师总结四个部分。

1、知识点简要概括

知识点概括是四环教学法的第一个环节。在此环节中,主要由教师将本节课的知识点简要概括讲述,使学生在以下独立学习的时间内可以有目的性地学习。

教师在此环节讲授的时间大约控制在十分钟左右,注意要将本节课的重点、难点以及考点交代清楚。

2、学生独立学习

在教师讲完知识点后,就进入了第二个环节,学生独立学习阶段。此阶段教师可根据本节课的内容多少和难易程度,给学生半小时到四十分钟的时间,让学生根据本节课的重点难点来进行独立学习和记忆,教师同时也可以针对学生提出的问题进行答疑。

3、学生讲授

学生在经过了独立学习阶段后,对知识点有了自己的理解和认识。此时随机抽取五位学生到讲台上进行讲述,既锻炼了学生的表达能力,又加深了对知识点的印象。

在学生讲述的同时, 教师要注意学生对知识点讲述的内容是否正确,理解是否有偏差。此环节大约需要半小时左右时间。

4、教师总结

经过第三个环节后,教师利用最后的时间对本节课的内容进行讲授,并针对学生讲述的问题进行剖析解答,同时可以举例解释说明。

三、“四环教学法”在程序设计语言理论教学中的优势

以VB程序设计语言为例,教师采用四环教学法进行理论教学,可以使学生有目的性地去学习诸如属性、事件、方法等理论知识,同时让学生到讲台来表述已自学过的内容也可以提高学生的表达能力,在台下的同学也可以通过不同同学的反复讲述加深记忆。作为教师,可以根据学生的讲述来掌握学生的薄弱环节,在总结的时候可以有侧重点地讲授。

这种教学方式加强课堂互动,注重启发式教学。教师在激发学生欲望的基础上,加强培养学生发现问题、提出问题和解决问题的能力。在教学中可利用新旧知识的联系,提出需要解决的问题,并由易到难,设计一系列具有启发性的问题,引导学生一步步完善程序设计。

当然,四环教学法只是对理论知识采用一种新的方式进行教学。教师在授课时还要精心设计教学实例。零散实例可以加深学生对某些知识点的理解,但实例的内容不连贯,不利于学生从整体上掌握教学内容。因此建议在学期末还要设计一个规模较大的、典型的、学生熟悉且感兴趣的核心实例贯穿于教学全过程。该实例从小到大,随章节的开而逐步成长,呈现为逐步进化的多个版本。例如,在visual Basic程序设计教学中,可以设计一个“学生成绩管理系统”作为核心实例,贯穿始终,从而加深对该程序设计语言的整体理解。

最后还应将软件工程的思想融合到程序设计语言课程的教学过程中。教师在教学中从一开始就明确应用于工程开发的目的,以工程实践的方式,将软件工程的基本观念与课程的全部内容融合为—体传授给学生。

参考文献

[1]叶幼林.对计算机C语言教学的探讨与研究[J].中南民族大学学报(人文社会版),2004,(4).

[2]解晨光.关于高职高专计算机教学改革的研究[J].教育探索,2006,(8).

[3]袁锋.谈VB程序设计教学方法改革的几个转变[J].成人教育,2004,(2).