时间:2023-05-30 08:55:22
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇c程序设计语言,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:值类性;引用类型;值传递;引用传递
中图分类号: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
关键词:实验教学;竞赛理念;在线评价系统;探索性实验
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)16-0254-02
引言
《高级程序设计语言C++》是计算机专业课程中非常重要的一门学科基础课。随着信息技术的发展,该课程不仅成为了许多计算机专业课程的先修课,同时也成为了非计算机专业的必修课。学习好这门课程对于学习其他计算机课程,比如数据结构、软件工程等有非常大的帮助。由于C++语言本身的特点决定了该课程的学习需通过上机编程调试程序,因此实验教学环节在该课程的教学过程中是关键,有效的实验不仅可以巩固理论学习的概念和原理,而且还可以培养学生的实践应用能力和计算思维能力。
目前有不少高校教师和学者对此课程的教学进行了一定的研究和探索,提出了一些可行的方法和措施[1-2],但专门针对课程的实验教学的研究和改革仍需进一步加强。笔者所在高校尽管在近年来针对该课程的教学计划和培养方式进行了一定的改革,在该课程上的实验、实训等相关环节的教学上进行了一定的创新和改革,然而这些环节相互之前仍然没有连续性,教学计划与就业导向、学科发展相互脱离,急需由上至下环节的整合。本文结合近年来的实验课程教学经验,从计算机相关专业的“C++程序设计”课程实验教学实际出发,针对实验教学中存在的问题,探讨如何才能更合理的设计实验课程内容,切实提高实验教学质量,培养学生的面向对象程序设计能力和创新能力,促进学生的全面发展。
一、实验教学过程改革
(一)引入竞赛理念,提高积极性,培养团队协作能力
目前的程序设计语言课程的实验教学基本上是理论验证性实验,无论从实验目的、实验内容、实验方法还是实验步骤都由实验指导大纲提前规定好,学生被动地上机实践,完成教师布置的作业,导致学生的参与积极性不高,常常出现为交作业而交作业的情况,且在一定程度上限制了学生独立思索与能力提高,也不利于挖掘学生的思维能力与想象能力,不利于针对目前就业导向、就业能力需求培养学生的综合素质。目前IT业急需具有一定团队合作能力,协同工作能力的综合性人才。因此将基于ACM的竞赛模式引入实验教学中,让学生组队完成综合试题,从而在一定程度上培养了学生的团队协作能力。
因此,针对这一问题,同时考虑软件工程专业持点,我们采用“竞赛―探索性实验―实训”[3-6]的实验教学流程。将ACM程序设计大赛模式引入C++程序设计课程的实验环节中,利用在线评价系统平台建立试题库,实验穿插学生个人与组队模式完成题目,实时刷新排行榜,此种模式基于在线评价系统的竞赛机制突出学生的主体地位,因而学生在课程实验中能由浅入深地掌握基础理论知识。该在线评价系统对学生开放使用,允许学生登陆系统刷题练习,并记录给同学的刷题量,此种模式一定程度上提高了学生的参与度,激发了学生的热情,也有利于学生综合能力的培养。
(二)引入在线评价系统,依托科研项目,进行探索性实验
除此之外,该模式引入在线评价系统,在竞赛试题中结合科研项目引入一些探索性实验题目[7],从而既能挖掘高水平程序设计人才,又能推动科研项目的进行,从而将学科建设的推动、学生综合能力及团队合作能力的培养结合起来[8,9]。教师还可以在后续教学环节(例如实训环节)针对学生的实验学习情况制定相应的内容,从而让理论教学、实验教学、实训等环节综合起来巩固学生的程序设计能力。
二、实验成绩评价方法改革
该课程实验成绩结合在线评定机制综合考虑学生的实验能力,包括学生的基础能力和拓展能力,考核体系[5,10]如图1所述。
(一)基础能力考核
根据个人帐号在在线评价系统的竞赛记录,教师将个人考勤、个人竞赛排行榜和个人刷题题量总数加权综合计算得出个人的基础能力考核分。学生的考勤体现了学生的学习态度,而学生的个人排行榜和刷题量在一定程度上体现了学生的学习动态,对知识点的掌握程序,因此三者组成了基础能力的综合评价要素。
(二)拓展能力考核
在线评价系统中结合科研项目引入了一些探索性实验题目,这些题目为可选题目,在计划外的实验机动时间内允许学生组队以竞赛方式完成。这种策略既能锻炼学生的团队合作能力,又能挖掘高水平程序设计人才。根据学生在团队竞赛中的团队排行榜、学生在团队中的贡献度(由团队内部互评分数决定)、完成的探索性实验题量三者加权综合计算得出个人的拓展能力考核分。
(三)教学效果
基于竞赛模式的高级程序设计语言C++实验教学在本人所在学院已在2届本科生上实施,实验教学效果已从以下几个方面得到提高。
学生参与实验的主动性得到较大的提升,学生完成规定的竞赛题目后,学生能通过排行榜实时了解自己的学校效果,即在班级中的相对学习效果。
部分学生通过在在线评价系统的刷题训练,加入了学院的ACM集训队,参加国内和国际比赛,取得了一定的成绩。
在线评价系统通过加入探索性实验题目,促进了学生的科研兴趣萌芽,促使一些学生通过SRP项目进入实验室进行科研辅助工作,促进了本学院学科的发展。
三、结束语
实验教学是高等院校应用性人才培养的重要途径和手段。建立基于竞赛模式的高级程序设计语言C++实验教学,旨在引入竞赛理念,结合在线评价系统,加入探索性实验元素,激发学生的创新思维能力,提高学生的团队协作能力和主动意识。最后结合实验考核方式改革,提升了学生的专业素质,进一步促进了学科发展。
参考文献:
[1]魏玉芬,丁艳清,袁玉萍.C++程序设计实验教学方法研究[J].高师理科学刊,2016,(06).
[2]张晓孪.基于实践的C++程序设计实验教学模式探索[J].微型电脑应用,2016,(08).
[3]彭源,田秀霞,张安勤,等.基于ACM竞赛理念的C++程序设计教学模式改革[J].计算机教育,2013,(07):70-73.
[4]祝昌宇,陈广贵.从ACM竞赛谈计算机实验教学改革[J].实验科学与技术,2011,(S1):300-302.
[5]齐文.基于ACM竞赛理念的C程序设计教学改革[J].软件导刊,2011,(11):180-181.
[6]王月海,王ケ觯王景中.竞赛驱动的地方高校电子信息类实践教学体系建设[J].实验技术与管理,2015,(12):190-193.
[7]姚芬,张艳美,彭青,等.探索性实验教学的体会与思考[J].当代医学,2009,(13):154-155.
[8]何丽明,蒋群,闫晓梅,等.实验教学对提高本科生科研素质的探索[J].实验室研究与探索,2016,(08):197-199.
cpp格式这个词在中国大陆的程序员圈子中通常被读做C加加,而西方的程序员通常读做Cplusplus,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
CPP是程序设计语言C++的另一种书写形式。
它是CPlusPlus的简称。是继C语言之后又一种计算机编程语言,C++编程语言同时支持所有的C语言语法。C++和C相似,但C是面向过程的程序设计语言,而C++是面向对象的程序设计语言,不过C++语言保持了对C语言的兼容,也就说是在C++程序可以不用修改的插入C语言代码。
cpp是用C++语言编写的源代码文件的后缀名。它对类的强大支持可以使它编写出更优质的程序。
(来源:文章屋网 )
关键词:C语言;IT;程序设计语言;优势
众所周知,C语言是1972由美国的Dennis Ritchie设计发明的,自今仍是国际上广泛流行的计算机语言,一般用来写系统软件,应用软件等。例如,Linux,DBASE IV等著名的系统和软件就是用C语言编写的。所以,学习C语言还能够让初学者深入了解程序底层和操作系统。
1 C语言的特点
首先,C语言的结构简单,编写程序效率高,便于描述算法。其次,表达方式灵活实用,语法接近英语,关键字如if,else,switch,break等。第三,C语言的数据结构和运算符丰富,共34种运算符,整形,实型,字符型,数组型,指针型,结构体型等数据类型。第四,可移植性好,C语言的设置一般为3-5MB,非常易于安装和操作。第五,C语言是一种结构化程序设计语言,这种结构使程序调试和维护更加简单。最后,随着计算机技术的发展,很多新的程序设计语言都是以C语言为基础发明的,学习C语言可以更方便的掌握其他Z言。
2 C语言的内容
C语言的内容一般分为:第一,C语言的运算符与运算顺序,是学习C语言的基础。第二,C语言的顺序,选择,循环结构,是C语言的三个基本结构,组成程序最基本的框架。第三,数组,数组就是一个同类型元素的集合。第四,函数,函数是C语言源程序中的基本模块,一般分为库函数和用户定义函数。第五,指针,指针是C语言中广泛使用的一种数据类型,是C语言的精髓,是检验我们是否掌握C语言的标准。第六,结构体与共用体,一般使用结构体存放一组不同类型的数组。第七,文件,C语言中把文件当做一个“流”,并按字节进行处理。
3 C语言的优势
3.1 C语言在工业控制领域中广泛使用
大到操作系统,小到网页浏览器,小游戏一般都是由C语言,或与C相关的编程语言编写。并且,它也是最被人们广泛使用的可编程嵌入式处理器语言,由它编写的嵌入式处理器,可以控制汽车,机器,交通灯,玩具以及家用电器,与我们息息相关。因此掌握了C语言,会有诸多实践创作的同时,还会了解其工作原理。
嵌入式系统是指软,硬件可以裁剪且适用于应用系统对其功能,成本,体积功耗等有着严格要求的专用计算机系统,与单片机相似,依赖于汇编语言编写的程序。但由于C语言的出现使得嵌入式系统开发变得简单。由于C语言灵活的语言结构比汇编语言编程更人性化,可以程序与硬件更好的结合,可以忽略一些不必要的细节,从而更专注功能和算法,使控制系统开发变得高效,而且C语言的可移植性和可读性都比汇编语言好。C语言的结构模块完善,其良好的程序结构十分适合模块化的程序设计,因此运用C语言设计控制系统程序时,充分发挥其模块化程序优势,将其功能模块化,不同的模块完成不同的功能。使得控制系统的结构清晰,也便于调试和维护。所以,C语言在开发嵌入式系统和单片机的效率上提高很多,甚至直接影响了科技的发展。因此,C语言在硬件方便不仅应用广泛而且扮演着十分重要的角色。
3.2 C语言在软件工程中的应用
C语言是一种高级语言,能狗直接访问硬件的物理地址,进行位操作。还有一些汇编语言的特点,可用来编写系统软件和开发应用软件,作为一种通用的程序设计语言,在软件工程的开发中收到广泛关注。
由于C语言既有高级语言又有低级语言,两者有效的结合编程工作单元,和对函数的合理应用,能够有效提高系统的层次性和清晰度等方面。C语言自身的优势也很重要,运算符和数据类型十分丰富,可移植性好,方便调试和维护等。对于软件工程来说,需要C语言编写程序满足多元化需求,能够实现相对复杂的数据运算任务,而C语言具有灵活性和实用性,能够通过指针对位地址,字节地址进行操作。运用C语言编写程序,不仅高效而且多种机型和操作系统支持C语言,帮助人们直接访问地址,及时检查和提示我们语法错误。既保证系统质量高,效率高,又为其更好的移植和修改奠定基础。同时可以和汇编语言完美结合,在系统编程中能够进一步发展。另外,C语言还具有强大的图形功能,不仅支持多种显示器和驱动器,且计算功能和逻辑判断功能强大。
3.3 C语言是大多数编程语言的基础
由于C语言的功能强大,随着计算机技术的不断进步,便出现了以C语言为基础的新的跨平台的程序设计语言和脚步语言,如我们所熟悉的C++,C#,JAVA,PHP,Python,ObjectiveCC等,都是通过C语言衍生出来的,引用了C语言中大量的语法和功能,借鉴了C语言的优点,这些语言都使用相似的操作符,表达式,控制结构,数组,函数等。几乎所有的大众程序设计语言都能与C语言连接,同时也能利用大量的C语言库。其中,这些语言的许多模板也是由C语言所写。所以,掌握了C语言不仅可以编写系统源代码,也可以使你更有效的学习其他脚本语言或程序设计语言。
4 结语
虽然C语言是在20世纪90年明的,但是在今天,它的应用范围依旧广泛,无论是软件开发还是硬件处理器的编程,它的地位依然重要。C语言不仅是现代信息技术和计算机科学的基础,还是大学最常用的程序设计语言之一,C语言对计算机的基本工作原理和软件开发都有详细说明,我们也可以通过学习C语言去更加深入地了解到编程的原理,掌握C语言还能为你对其他程序设计语言的学习打下基础。因此,C语言的重要性极其存在价值,不只是它的历史久远,还有它的经典和实践中的作用。所以作为有创新意识的新型人才,一定要认识到C语言的重要性,并且在实践中熟练运用。
参考文献:
[1] 赵黎,范君君. C语言编程技巧在C语言学习中的应用研究[J].信息与电脑(理论版),2014(09):252.
关键词:Java语言;高校教学;问题;措施
中图分类号:TP312.1-4
在Java程序设计语言中,包含了完整的程序设计以及程序的应用框架,对于开发智能卡、手机软件应用、以及企业级的应用等多数领域都得到广泛的使用,当前极为火热的Android手机操作系统的应用程序也是通过强大实用的Java语言来编写完成的。目前我国Java程序语言方面的高级人才相对短缺,为了满足市场对于这类人才的需求,国内多数高校都在计算机相关专业开设了Java程序设计语言的课程,因此,Java程序设计语言在高校计算机专业教学中的地位和重要作用逐渐凸现出来。
虽然目前我国很多高校都开设了Java程序设计语言课程,但多数学生还是缺乏动手能力,实际程序编写的技能和经验也不足,远远不能达到企业对于实际人才的要求,导致刚刚毕业的高校生很难找到合适的工作,从而产生了“学生难就业,企业难招工”的奇怪现象,这种现象的产生就要求我们对高校Java程序设计语言课堂教学的情况进行反思。如何针对目前市场对于人才的需求情况来培养人才,提高Java程序设计语言课程的教学质量,成为亟待解决的问题。
1 Java程序设计语言教学中的问题
1.1 课堂教学内容滞后。当今时代,计算机技术迅速发展,课堂教学中学习的内容多数较为基础,同时也比较滞后,随着技术的发展,Java体系中不断融入新的理论和方法,这些新的方法不断被企业采用。与实际企业中Java技术的发展相比,高校Java程序设计语言课程教学的内容相对滞后,与企业技术的发展严重不协调,造成了高校教学与企业实际应用之间的脱轨,不能满足企业对于高质量可用代码开发的要求。
1.2 对于应用体系架构的讲授不够完整。目前,多数高校虽然开设了Java程序设计语言课程,但由于受到课程安排时间的限制,多数高校主要讲授的是J2SE基础部分,这是整个Java语言体系中最基础的部分,而只有少量开设或者没有开设JavaWeb、JavaEE,使得学生的编程开发能力不能得到巩固,从而导致学生只学习了基础,而对后续课程没有了解,无法系统的弄清楚Java程序设计语言体系,同时也使学生的学习兴趣下降。
1.3 教学过程缺乏实践。Java程序设计语言课程所涉及的理论知识比较抽象,同时逻辑性很严密,并且有很多复杂的框架和结构。在目前很多开设了Java程序设计语言课程的高校中,仍然是采用传统的课堂讲授方式,过分的强调基本理论的学习,在学生脑子里堆砌起大量的语法知识,在教学中学生实际动手的机会很少,使得学生虽然理论知识扎实,但缺乏实际编程操作的能力。
在这种程序设计语言教学的传统模式下,学生的学习一直处于被动的接受,而不是主动的探索,这样一来就很难做到让学生真正的掌握Java程序设计语言的精髓,更加阻碍学生对基础理论的理解和应用,同时Java编程的基本功也得不到有效的锻炼。
1.4 忽视强化学生的自学能力。在日常Java程序设计语言的学习中,也由于教学模式的限制,多数学生的学习方法只有看书和听课,在课下很少会亲自动手进行编程练习,或者由于缺乏探索尝试的勇气而不敢动手调试Bug,在学习和操作中一旦遇到问题,首先就想到请教老师,教师一般也会直接给学生进行讲授。在这种学习方式下,学生的学习比较被动,教师的讲授和学生的学习都相对轻松,但是如果长期处于这种状态,会使学生更加缺乏独立思维以及独立解决问题的能力,使学生逐渐丧失学习的积极主动性,没能做到理论与实践相结合的教学目的。
2 对于Java程序设计语言教学的建议
鉴于Java程序设计语言课堂教学存在的问题,结合课程教学的要求以及就业情况和市场需求,对于改进课程教学方法提出一些建议。
2.1 合理设计教学内容,完善知识体系。高校要改善Java语言的课程体系建设,基础的Java属于编程的入门语言、教学中以Java作为一个基础的开发平台,并且围绕着这个基础开发平台,以平台应用为主要出发点来构建课程教学体系。确定“学懂、会编、实用”的教学目标,以Java语言的基础知识为脉络,同时适当融入Java语言的续课程,比如JavaEE、JavaME等,以构建出一个完整、实用的课程教学体系,确保学生学以致用,在学习中充分掌握Java语言的完整知识体系和专业技能。教学的内容要紧跟市场需求,将企业常用新技术、新理念及时引入课堂。采用这样的方式,不仅可以让学生了解Java程序设计语言在程序设计知识中的地位和价值,更能使学生明确自己的学习目标和目的。
2.2 注重启发式教学,激发学习兴趣。教学中教师要改变传统的灌输、讲授式教学,而应尝试启发式的教学,根据学生的基础和思维能力来确定与知识相关的问题,来引导学生进行主动思考,使学生在问题的启发中完成知识的学习。
例如,学习过C语言的学生的语言基础多数都是面向过程的程序设计,这时,教师就可以通过举例子来引导学生理解面向对象和面向过程的程序语言的区别。以泡茶为例,按照面向过程的思维进行分析,其步骤分为:取水、烧水、准备杯具、沏茶。如果是面向对象的思维进行分析,首先要分析问题中的对象,即茶叶、杯具、水壶,再通过这些对象来提取出对应的类,通过中方法,循序渐进的引导学生了解什么是类、类的属性变量、什么是对象等等,进一步展开分析两种方法的优劣对比等,把枯燥的知识和现实生活结合起来,提高学生的学习兴趣。
2.3 采用理论实践结合教学法,强化操作能力。这种方法首先引导学生读代码,让学生阅读大量优秀源码,来加强对于程序语言编写的基础性理解,同时也能够开阔学生的知识面,模仿优秀的代码变成习惯,形成自己的风格;其次是让学生编代码,在大量阅读的基础上,改变一些条件,来使学生自己动手编写代码,增强对所学知识的理解,使对知识的感性认识提升为理性认识;最后,在学生编写代码的过程中,如果出现问题或者错误,教师应当引导学生自己进行“改代码”,引导学生利用所学知识在API和网络上寻找解决方案,培养学生对于代码纠错和程序调试的能力。
2.4 高校开设创新性的实训教学。针对低年级的学生,可以把实际企业的案例进行精心的安排,在难度和技巧方面进行区分的基础上来布置设计课题,有策略性的指导低年级学生学习程序编码和系统设计。
对于高年级的学生,要对先进企业的先进技术进行分析,针对学生的学习程度制定科学合理的训练课题。同时选拔一批理论扎实、经验丰富的教师对学生的实训进行指导,带领学生来进行分析和设计。通过这种方式,可以有效提高学生对于所学知识的运用能力,达到实训的目的。
3 结语
Java程序设计语言的教学应当以培养学生的实际设计操作能力为目标,同时结合目前人才需求的动向、企业技术的新发展,及时更新教学内容,使学生学习内容与社会接轨。本文提出启发式教学、案例教学等教学方法,以此来提高学生学习的积极主动性和动手解决实际问题的能力,使培养的学生成为专业的Java程序设计语言人才。
参考文献:
[1]杨超宇.《Java程序设计》课程的教学方法研究与探索[J].电脑知识与技术,2009(5):92-93.
[2]陈.《JAVA程序设计》课程教学改革探讨[J].信息系统工程,2010(1):128-130.
[3]刘仁辉,张熠.基于Internet的远程教育系统中Java语言的应用[A].高等教育改革的理论与实践研究――黑龙江省高等教育学会2002年学术年会交流论文集[C].2002.
[4]高林,高峰,甘露.基于Structs架构的营销管理程序开发[A].全国第十届企业信息化与工业工程学术年会论文集[C].2006.
高职计算机专业的培养目标,是使学生掌握计算机软件、硬件的基本理论、基本方法和基本技能,能够从事计算机软硬件维护、一般应用系统的开发设计及相关领域的应用技术工作。程序设计语言课程是高职计算机专业的核心课程,对其教学内容、教学方法的改进,已经成为高职院校普遍关注和重点研究的课题。
一、程序设计语言教学中存在的问题
l、教学课时少
与普通高校本科计算机专业相比,一方面,高职学生的学习基础相对较差,导致他们接受较慢,学习困难;另一方面,目前我国高职院校的学制一般是3年,计算机专业的程序设计语言的课时较少,这就导致了实际教学中存在理论课时和实践课时不够的情况。因此,教师只能传授最基础的程序设计知识,不能提高学生应用程序设计语言解决实际问题的能力。
2、学生的学习动力不足
有些学生认为学习程序设计语言既枯燥又无用,不如学习多媒体或网络的一些课程;有的学生是因为学习程序设计,需要较强的逻辑思维能力和一定的数学、英语基础,因而在学习程序设计时显得力不从心,不能掌握应用计算机解题的基本思维方式,对计算机程序设计产生畏惧感,就知难而退了。
3、实践环节不能满足高职教学的要求
计算机专业本身就是技术应用专业,而且高职院校是以提高实践能力为主的职业教育。然而,现今高职程序设计语言教材,存在的普遍问题就是实践性教学内容不足,没有体现教材的实用性和职业性,不能保证对学生实践能力的培养,不能体现高等技术应用型人才的培养要求,缺少高职教育特色。
4、教学方法落后、考核方式单一
高职程序设计语言课程一般采用的教学方法是教师课上讲授加学生实验的形式,教师在理论课上常常采用“填鸭式”教学,学生很少主动思维,编程题不能独立作答案。上机实验时学生仅仅是对书本上现有的一些实例进行编辑调试,一旦调试成功就完成任务。这种教学方法根本不能让学生掌握如何从一个实际问题人手分析问题、解决问题。单一的笔试考核方式也使教师和学生忽视实践课环节,舍本逐末。
二、解决程序设计语言教学存在问题的对策
l、调整教学安排,改进教学内容,适应高职人才培养目标要求
高职计算机教育必须突出“以培养技术应用型人才”为核心的教学思想,注重学生实践能力的培养。针对程序设计语言课程而言,主要包括三个方面。
一是在课程的设置上针对课时少和学生的特点,可以在学习程序设计之初,先开设一个结构化程序设计语言,如C语言、PASCAL或FORTRAN等。适当增加其课时,使教师足以引导学生独立应用计算机程序设计解决实际问题。计算机程序设计语言虽多,但程序设计的基本知识和方法相同,结构化程序设计语言易于理解和掌握,学生一旦通过它掌握了应用计算机解题的方法和技巧,就可以触类旁通,很轻松地学习其他程序设计语言。
二是针对高职程序设计语言课程普遍存在课时少的问题,教师要认真设计课堂知识结构,不必追求学科的系统性、完整性,使教学内容充分体现应用性的特点。对易学、易懂的知识及一些基本概念有针对性地讲解,对难记的、难懂的知识少讲,与今后运用无关的、理论性过强的不讲,突出重点,抓住关键,将重点放在实际工程应用中需要涉及的知识和通用性较强的编程应用上来。
三是教师在授课的同时,为学生传授良好的学习方法,提高学生的自主学习能力。计算机知识更新很快,尤其是软件的发展更是日新月异。学生在课堂上学到的知识与技能远跟不上社会发展的要求,教师必须使学生认识自主学习的重要性,培养学生学会学习。这样不但可以提高课堂学习的效率,而且可以使学生在新旧知识间构建起新的信息链接,形成新的知识与技能,终身受益。要精讲多练,因需施教。
2、采用多种方法,调动学生的学习积极性
首先要使学生充分认识到程序设计语言的重要性,如投其所好,向其讲解一些小动画制作、软件维护或网络应用的方法。其次,要帮助学生建立学好程序设计语言的自信,如在开课之初带领学生学习教材目录部分,说明进度和标记重点、难点章节,做科目介绍时给学生的压力适当,使其消除对计算机程序设计产生的畏惧感。对学生要以鼓励为主,多关注学生,了解学生的学习状况,有的放矢,并根据情况调整讲课内容、重点和进度。
3、解决实践性教学内容不足问题的措施
一方面在教材的选用上应尽量地选择带有大量实验内容的教材,以提高高职学生运用该程序设计语言进行编程和综合创新的能力。另一方面任课教师也可以根据学生的学习情况,自己设计实验课内容。而且,要加大实践教学的比重,提高学生的实践应用能力。具体来说可以设置两个实践环节,即课内实验与课程设计。程序设计语言课程的实践性较强,仅仅通过课内实验环节是很难达到预想目标的,为此在课程基本内容结束后应增加课程设计教学环节。
4、改进教学和考试方法
一是加强课堂互动,注重启发式教学。教师要在激发学生创新意识的基础上,加强培养学生发现问题、提出问题和解决问题的能力。在教学中可利用新旧知识的联系,提出需要解决的问题,并由易到难,设计一系列具有启发性的问题,引导学生一步步完善程序设计。
二是精心设计教学实例。零散实例可以加深学生对某些知识点的理解,但实例的内容不连贯,不利于学生从整体上掌握教学内容。因此,还要设计一个规模较大的、典型的、学生熟悉且感兴趣的核心实例贯穿于教学全过程。该实例从小到大,随章节的发展开而逐步成长,呈现为逐步进化的多个版本。例如,在visualBasic程序设计教学中,可以设计一个“学生成绩管理系统”作为核心实例,贯穿始终,从而加深对该程序设计语言的整体理解。
三是将软件工程的思想融合到程序设计语言课程的教学过程中。教师在教学中从一开始就明确应用于工程开发的教育目的,以工程实践的方式,将软件工程的基本观念与课程的全部内容糅合为—体传授给学生。
四是采用书面考试、上机考试、课程设计相结合的方式全面考核学生学习效果。书面考试可以侧重于对基本概念的理解和掌握方面,以考查学生对基础知识的掌握情况;上机考试可以让学生在规定的时间内对给定的设计题目编出程序,并在计算机上调试通过,以此考查学生的综合应用能力和快速编程能力;课程设计可将学生分成若干小组,每组布置一个稍大的有实际应用背景的程序设计题目,由小组成员分工完成,目的是考核学生运用程序设计语言解决实际问题的能力和协作编程的能力。
参考文献:
[1]叶幼林.对计算机C语言教学的探讨与研究[J].中南民族大学学报(人文社会科学版),2004,(4).
[2]解晨光.关于高职高专计算机教学改革的研究[J].教育探索,2006,(8).
[3]袁锋.谈VB程序设计教学方法改革的几个转变[J].中国成人教育,2004,(2).
[关键词]VC++程序设计 课程建设 多元化模式 教学改革
一、引言
作为计算机应用基础,计算机程序设计语言已成为各类高等院校各种专业培养方案中的重要内容。在诸多的计算机程序设计语言中,C语言系列受到普遍关注,其中,Visual C++是在1995年由微软公司开发并推向市场。由于Visual C++在编译器和综合发展环境方面的领先优势,一经推出便获得市场好评。随后,Visual C++一路高歌猛进由最初的1.0版升级至6.0版,并最终发展为网络时代的C#,可谓计算机程序设计语言的典范。Visual C++作为功能强大的可视化应用程序设计语言,已成为计算机界公认的优秀应用开发工具,她不仅使得开发Windows应用程序变得容易,而且还是各种系统软件、应用软件、网络软件、游戏软件等开发的良好平台。目前,许多包括国内外大公司在内的企事业单位在招募人员时,都把Visual C++编程与实践作为考核被招募人员计算机应用能力的一个重要方面。因此,我国许多高等院校的理工科专业均开设了VC++程序设计语言课程,并以此作为学生计算机应用基本能力培养的主要方面。
为了有效地开展VC++程序设计语言的课程教学,许多高校相关课题与教学组结合本校的实际情况,从课程计划安排、课程目标确定、课程内容选择,教学方法与教学手段运用,教学评价实施等各方面,对VC++课程教学改革进行了有益的实践与探索,在不同程度上取得成效。例如,将负反馈教学原理运用于课程教学实践,及时发现和解决学生在学习过程中出现的问题,以提高教学效果;采用实例教学法,培养学生的学习兴趣,提高学生自主分析问题和解决问题的能力;从分析学生的认知现状入手,充分利用现代教学手段,解决VC++课程教学出现的种种困难;从学生综合能力培养角度出发,注重实用性教学,采用实例教学和现场编程等方法,同时融入工程化思想,引导学生写好程序,等等。
江苏科技大学十分重视计算机基础教育,设立专项基金支持计算机基础课程的教学改革。学校计算机基础部VC++课程教学小组根据本校计算机基础教育的实际情况,以学生掌握VC++程序设计的基本方法与基本技能为基准,同时,结合江苏省计算机程序设计语言等级考试的基本要求,提出了基于多元化模式的VC++课程教学改革思想,并从课程计划、课程教学、实验教学、辅助教学、课程评价、教材建设等各个环节进行了有益的实践与探索,取得良好效果。本文介绍基了多元化模式课程教学改革的基本思想与方法,并对该思想在VC++课程建设各个环节的运用以及所取得的成效进行总结。
二、多元化VC++课程教学改革
我校Visual C++程序设计语言课程以Visual C++6.0为蓝本实施教学,为更好地开展Visual C++程序设计语言课程的教学与实践,我们引入多元化思想,在课程教学各个环节实施方面进行改革,其特点主要表现在以下几个方面:
1.课程教学目标多元化
通常,VC++课程教学的目的是让学生全面了解和掌握Visual C++程序设计语言的基本概念、基本方法和基本技巧,为进一步开发应用打下良好基础。除了一般意义上的VC++课程教学外,江苏省每年举行两次计算机等级考试,其中VC++为二级考试内容之一,参加对象为省内高等院校完成了VC++课程学习的学生。考试结束后,根据参加考试学生的平均成绩对高校进行排名,这一举措在无形中使得计算机等级考试成为衡量高校计算机基础教学水平的一种标准,因而各高等院校对次十分重视。虽然一般意义上的VC++课程教学与等级考试在教学内容上可以实现有机的统一,但是在课程教学目标的制定、教学的组织、教学方法与教学手段的运用、课程教学评价等方面却存在一定差异。如果说VC++课程教学的目的是让学生掌握VC++程序设计的基本知识与基本技能,那么,等级考试则更加注重学生对VC++基本概念在细节方面的理解与判断;如果说VC++课程教学旨在培养学生的算法意识,使其在整体上了解和掌握VC++程序设计的基本方法,通过练习与实践,编程能力不断提高并能最终解决实际问题,那么等级考试更看重的是学生阅读程序的能力,同时能发现其中局部的错误并加以改正。前者以素质教育为主,后者或多或少带有应试教育成份,但我们认为两者都十分重要。VC++课程教学不仅要让学生掌握应有的知识和技能,而且要让更多地学生能够通过等级考试,这无疑对课程教学目标的设定提出了更高要求,即既要考虑一般意义上的课程教学,又要兼顾到等级考试。此外,由于学校在学位授予方面对等级考试没有硬性要求,有些学生不参加等级考试。对这部分学生,允许他们放弃一些非计划内教学环节的学习,在成绩评定上另行标准。如此做法,不仅从整体上能有效地组织和开展课程教学,而且也较好地体现了“以人为本”、“因材施教”的教育理念。
2.课时计划多元化
由于课程教学目标同时考虑课程自身以及等级考试等多方面的要求,因此需要一定数量的课时来支持。根据课程教学目标的要求,我们对省内一些高校VC++课程的建设和教学实施情况作了调查,并采取了课内与课外相结合的培养策略。即除了课程计划内学时外,增加一定数量的计划外学时作为补充,同时对各个学时段按功能进行分解。课程教学总学时为120学时,其中计划内学时为96学时,主要用于课程知识与课程试验教学;计划外学时为24学时,主要用于阶段性测试和强化训练。各学时段的教学内容、教学目的、授课时间安排见表一。其特点主要表现为:在课时计划编排过程中,我们不仅考虑课程目标要求,也考虑到了等级考试的要求;不仅考虑了平时学生学习情况的及时反馈,也考虑到了学生从课程学习到备战等级考试的连贯性。
3.成绩综合评定多元化
为了让学生能够以积极的态度完成各个课时段的学习,我们将课程总成绩按各个课时段的功能进行了分解,形成了多元化成绩评定办法。该办法既考虑了参加计划外课时学习的学生,也考虑到了不参加计划外课时学习的学生;既要求学生重视课程学习,又鼓励学生积极参加等级考试。为了让学生能够利用假期时间认真复习,积极备考,进一步巩固所学知识,我们将学生课程最终评定放在第二学期计划外强化练习与测试完成之后。学生课程学习成绩形成包括以下几个方面:
(1)VC++程序设计语言课程总成绩由课程学习成绩和课程实验成绩构成。其中,课程学习成绩占课程总成绩的60%,课程实验成绩占课程总成绩的40%。
(2)课程学习成绩由课程考试成绩和平时成绩构成,其中,课程考试成绩占课程学习成绩的80%,平时成绩占课程学习成绩的20%。课程考试由学校统一组织,试卷由学校教务部门在试卷库中随即抽取。课程考试形成课程考试成绩。
(3)学生的平时成绩由教师根据学生平时的学习情况评定。参加阶段性测试的学生在4次测试中以最好一次的成绩纳入平时成绩的计算。
(4)课程实验成绩在第二学期产生。参加模拟上机考试的学生以4次上机模拟测试中最好一次的成绩计为课程实验成绩。未参加模拟上机考试的学生以最后一次上机模拟测试(必须参加)的成绩计为课程实验成绩。
(5)经折算后,学生的课程学习成绩和课程实验成绩必须同时分别大于36分和24分方能合格。不合格者,其成绩大于等于50分时,以50分计,小于50分时,以实际分计。
(6)凡通过江苏省“VC++程序设计语言”计算机二级等级考试的学生,其考试成绩可充抵VC++程序设计语言课程学习成绩,具体办法按学校教务处有关文件规定的办法执行。
三、多元化课程管理
在高校中,任何一门课程的教学与建设都不只是教师和学生的事情,需要学校以及相关部门大力支持,对全校性开设的基础课程更是如此。在我校进行的VC++课程改革中,由于采用课外计划外课时,要求学生根据自身的需要,本着志愿的原则交纳一定费用,主要用于阶段性测试和上机强化训练的成本支出与教师课外教学工作量补贴;在学生课程成绩形成过程中采用跨学期最终评定,成绩的录入又需得到教务考试中心和成绩管理部门的支持;为了让学生了解课程改革的意义和具体实施办法,更好地做到有目的、有计划的学习,我们编写了《VC++程序设计语言》学习手册,要求班主任在开课之前组织学生学习等等。这些措施与办法的采用,使得课程教学的实施与课程管理呈现出多元化特点,主要表现在:课程教学组负责制定课程教学大纲、教学计划、案、题库建设、教材建设、课程网站建设等课程建设任务,并具体组织实施课程教学、阶段性测试、强化训练、辅导答疑、阅卷分析等工作;教务处考试中心负责学生成绩管理、课程试卷库管理、阶段性测试和课程统考教室安排等;校财务部门负责计划外收费管理;校区学生管理办公室负责组织班主任搞好课前对学生的宣传工作,并协助任课教师组织学生开展模拟实训。各部门协调统一的课程教学多元化管理,保证了课程教学各个环节有条不紊地进行,为提高课程教学质量提供了有利保障。
四、结束语
前面,我们介绍了我校VC++课程教学改革的一些具有一定特色的做法。此外,课程建设的其他环节也在逐步进行。如题库的建设与维护、课程学习网站的建设与维护、集体阅卷分析和集体备课、为课程主讲教师配备助教强化辅导环节等等,为了适应课程教学目标的要求,VC++课程教学组还编写并出版了教材和习题集。经过3年多的教学实践,VC++课程改革取得明显成效。在严格实行考教分离的情况下,学生课程考试的及格率明显提高,补考与重修率大幅度下降;省VC++等级考试通过率由原先的20%左右上升到50%左右,学校在省内VC++等级考试排名也由过去的30名以下上升到15名左右,在今年春季的VC++等级考试中,我校主校区学生考试平均成绩排名位居全省第7位。更为重要的是,通过课程改革,大大提高了学生学习的积极性和教师的工作热情,增进了教师与学生、教师与教师以及学校部门之间的交流,教风和学风得到明显改善。目前,我们正在进行VC++课程改革经验的推广工作,最终完成整个计算机基础课程群的课程建设。
参考文献
[1]陈天华.面向对象程序设计与Visual C++6.0教程[M].北京:清华大学出版社,2006.
[2]孙永强. Visual C#.NET Web应用程序设计入门与提高[M].北京:清华大学出版社,2003.
[3]陈建平,刘维富等.Visual C++程序设计课程建设研究与实践[J].计算机教育,2007,(6):18-20.
[4]刘传平.《C++语言程序设计》课程教学改革的探讨[J].中国科技信息,2005,(11):86.
[5]黄晓萍,林伟华,方芳.信息工程类专业“计算机高级语言VC++”课程改革研究与实践[J].高等立刻教育,2007,(4):63-66.
[6]李俊扬,陈汉武.工科专业C++语言教学目标与方法的探讨[J].计算机教育,2007,(8):16-18.
【关键字】程序设计 实验教学 ACM
一、引言
近来年,随着信息技术在社会各个应用领域的渗透和普及,程序设计类课程已经发展为高校计算机教育的重点课程。理论教学与实验教学是程序设计类课程的重要组成部分,其中,实验教学是完整教学过程中的不可或缺的实践性教学环节。实验的目的不仅仅是为了验证所编程序的正确与否,也是为了加深对程序设计语言知识的充分理解,更重要的是培养学生的实际操作能力和积累丰富的编程经验,从而引导他们利用程序设计语言编程来解决实际问题。基于此,本文对如何更好的进行程序设计类课程的实验教学作一些探讨。
二、现状分析
目前,我校计算机学院开设了高级语言如C、C++等多门程序设计类课程,这些课程的共同目标就是让学生通过上机实验和课程设计来巩固课堂上讲解的语法规则和算法技巧,锻炼编程能力。但是现有的程序设计类课程实验教学存在着很多问题,导致整个教学效果得不到提高,与教学目标的要求不相符。本节将主要从三个方面对其存在的问题进行总结:
2.1 实验教学安排
我院程序设计类课程的上机实验课时是有限的,一般都是每周安排两个课时,或者最多四个课时,通常会在连续的几周内结束。由于一般程序的编写和调试比较费时间,要是学生不事先做好充分的准备,仅仅靠在两个课时内去完成一个完整的程序编写是不太可能的,对所学内容也没能充分理解,很难在课堂上培养学生的实际编程能力。
2.2 实验教学内容
我院专业实验中心的机房环境是一个内部的局域网,不能连接到互联网,教师都是通过课件投影或屏幕广播教学软件来完成主要的实验教学过程。实验内容基本卜^都是对课堂理论教学内容进行验证和实现,学生按照教材或课件来完成实验。整个的实验教学环节中,教师根据实际的情况来选择是否进行案例教学,而当前多数实验教学过程中的案例所覆盖的知识点范围不够理想,不能将新旧知识点都包含进来。案例陈旧,缺少更新,实用性和趣味性也不强,因此不能很好的激发学生的学习热情,不利于培养学生的独立思考和动手操作能力,未能达到教学目标的要求。
2.3 实验教学考核
实验课程主要是通过实验报告中的程序编写情况来考核的。由于时间有限,实验报告的批改都是教师在课后另找时间检查,教师往往只能通过纸质的实验报告来分析学生的程序,要求程序能正常通过,看到运行结果就可以了,而忽略了程序中的调试环节,而这些环节中通常都是学生未掌握的知识点。这种考核方式不利于教师对学生学习情况的掌握,也不利于培养学生的创新能力。
三、ACM学习模式的特点
现在,随着ACM国际大学生程序设计竞赛(简称ACM)在高校中的推广,越来越多的学生参与进来了。在迎接ACM竞赛的学习过程中,形成了一种具有ACM竞赛特点的学习模式,这种学习模式的特点如下:
l、ACM竞赛所涉及的知识面十分广泛,算法电极具复杂性。通常在平时的训练过程中为了能深刻而透彻的理解各个知识点,教师会引入大量的案例教学。运用典型案例可以将学生带人特定的问题进行案例分析,通过学生的独立思考或团队合作,进一步提高其解决具体问题的能力。
2、ACM竞赛是通过在线测评系统上实时提交程序代码,给出评判结果的竞赛形式。ACM测评系统能够实时的给出参赛队的排名情况和每道题的通过率以及通过人数,教师可根据题目的通过率来掌握学生对知识点的学习情况,也可以反思其教学方法和教学内容中存在的问题。
四、基于ACM模式的程序设计类课程实验教学的做法
将ACM学习模式应用到我院现有的程序设计类课程实验教学过程中,具体措施运用如下:
4.1 实验课程的开设
我院高级语言(C、C++)程序设计实验课程都是在大一这一学年开设的,大一第一学期是面向过程的C语言编程学习,大一第二学期是面向对象的C++语言编程学习。这样开课的结果就使得大多数学生连面向过程的编程都还没有完全搞清楚,就直接跳到了面向对象的编程,可以说整个大一学期都是处于混沌的编程状态。因为对程序设计语言的思想和语法还没完全掌握,所以很多学生不具备基本的编程能力,甚至对编程有恐惧感。为了解决这些问题,我们结合ACM的竞赛模式来调整开课计划,把原计划2个学期的高级语言程序设计实验课程的教学时间调整为5个学期,这样可以贯穿整个计算机专业课的学习过程,从而将程序设计语言和其他计算机专业课的学习更好的结合起来,让学生有时间去深刻地理解程序设计语言的思想和方法,不断地锻炼实践操作能力和积累编程经验。
4.2 实验内容的选取和实验课程的考核
对实验环境来说,要求将我院专业实验中心机房连接到我校的源程序在线测评(Onlinejudge,简称OJ)平台上。根据程序设计类课程的实验内容和具体要求,每次实验前,教师可以从我校或者其他高校的OJ平台上的ACM竞赛题库中挑选或改造2-3个相关题目作为实验内容挂到我校的OJ上。在实验课阶段,由学生独立完成或者自由组队来编写程序,调试程序,解决问题,编写好的程序提交给OJ来判断正确与否。通过每次实验在OJ上完成的做题数量,教师可以由此掌握到学生对知识点的学习情况,对欠缺的知识点再给与重点讲解。同时教师可以根据OJ上的排名很轻松的完成实验课程的考核。学生也可以通过每次实验的做题和排名情况,来检查自己的学习方法和学习内容,从而达到熟练掌握所学内容的实验教学目的。
关键词:管理信息系统;程序设计;面向对象
中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2013)17-4027-03
纵观我系各年级、各层次人才培养方案,除去专业实习与毕业设计环节,我校专科学生总共在校5学期,程序设计语言类的课程开设共持续4学期,本科学生总共在校7学期,程序设计语言的开设共持续6学期,虽然经过长时间的系统学习,但是效果并不是很理想,虽然我系的人才培养定位希望在广度上和深度上均有所突破,针对面向过程和面向对象两类程序设计类课程,开设有《C语言程序设计》、《面向对象程序设计》、《Java语言程序设计》、《Delphi语言程序设计》、《C#语言程序设计》、《.Net语言程序设计》等一系列程序设计类课程,企图用程序设计语言的高覆盖率换取高就业率,但大多数同学均感觉投入了过多的精力,却没有精通任何一门程序设计类语言,而且我系从事计算机相关工作的毕业生人数比例不到25%,这与我们人才培养的初衷出现了严重的不一致,通过跟踪走访,就业后两到三年的时间内,从其他行业转入计算机行业的比例显著增加,针对该现象[1-2],我们以《C语言程序设计》〉和《C++面向对象程序设计》两门课程为研究对象,采取利用此两门语言编写同一套软件等方式,让学生深刻理解面向对象和面向过程的区别,从而推广到其他面向对象类程序设计类课程的教学中,达到在缩短单门课程教学周期的同时,提升学生实战经验的目的。
1 需求分析与概要设计
《C语言程序设计》作为我系开设的第一门程序设计类语言课程,在第二学期开设,学时为72,为使学生以最快的速度进入实战状态,我们选择数据库编程方向对学生进行训练,只需满足增加、删除、修改和查询四种基本功能,由于学生在此时还没有开设数据结构和数据库的相关知识,故数据我们采取文本的方式进行存储[3]。基于此,学生管理信息系统的功能模块图如图1所示。
2 具体实现
3 结束语
本系统虽然功能简单,但是对处在仅仅开设了《C语言程序设计》课程阶段的同学来说,在对C语言程序设计课程进行全方位的理解来讲,意义却是重大的,其中对函数知识点熟练的运用,对后续面向对象程序设计类课程的学习也打下了良好的基础。
参考文献:
美国加利福尼亚大学戴维斯分校程辉教授所设计和开发的C/C++解释计算平台(Ch)是一个适合于中国计算机程序设计教学的解释计算平台。
首先,Ch支持跨平台执行C/C++程序,它可以在Linux、Unix、Windows等多种操作系统上运行,特别适合中国的国情。众所周知,《国家中长期科学和技术发展规划纲要(2006-2020年)》所部署的“核高基”重大专项研究中,中国将大力发展“基础软件产品”,其中最重要的就是操作系统。在该专项研究的支持下,中国将发展基于Linux等开源软件的操作系统,或基于自主开发并与Linux兼容的操作系统,因此,中国今后的操作系统平台将不再是Windows一统天下,而是朝着Linux、Windows等多种操作系统多元化发展的方向迈进。与此相适应,中国的程序设计语言教学也不应当只教VC、VB这类依赖于Windows平台的语言,而是应当教一些跨平台语言,在像Ch这样的平台上流畅运行,这是落实国家软件发展战略的需要。
其次,Ch平台既可编译执行,又可解释执行,具有良好的交互性。过去,很多学校将BASIC语言作为程序设计的入门语言,就是考虑到解释执行的BASIC语言比一般编译执行的语言更容易学。可是BASIC语言的用途有限,不宜作为程序设计语言的首选,而C/C++语言的功能强、应用广,但却难教、难学。现在,Ch语言平台支持了C语言的所有特性和C++语言的大部分特性,又具有解释执行语言易教、易学的优点,很适合作为程序设计语言教学的首选。一些学校的教学实践表明,采用Ch教学的效果比较明显,老师和学生的反映良好。
此外,Ch还是一个可嵌入的脚本引擎,可以无缝地嵌入到已编译的程序中,因此可以用C/C++脚本做柔性编程,这使Ch特别适合应用于嵌入式系统。目前中国已成为一个制造大国,但中国制造业的附加值和利润大多很低,缺乏竞争力。为了优化我国制造业的产业结构,就要大力发展嵌入式系统提升制造业的竞争力,因此我国迫切需要大批掌握嵌入式系统核心技术的人才。如果学生掌握了Ch,就会比较适合承担与嵌入式系统相关的工作,较好地适应人才市场的需求。这是因为,一方面,大多数嵌入式系统是用C/C++编程的,另一方面,Ch作为一个可嵌入的脚本引擎,可以提高嵌入式系统的效能。
最近的“黑屏”事件促使人们重新审视中国的信息安全问题和计算机的教育培训问题。人们发现,过去中国的计算机教育培训体系过分倾向于微软一家公司的产品,而其他大国都不是这样。如美国排名靠前的十多所名牌大学的大多数计算机系都配备Unix或Linux实验室,许多大学只有Unix或Linux实验室,只有极少数只配备Windows实验室;俄罗斯信息技术和通信部长要求,到2009年,俄罗斯所有学校都安装Linux(Rissian OS)。近年来,我国有关部门也已着手改革(如在40所重点大学建立Linux技术培训与推广中心等),但要完全纠正上述倾向,还要继续努力。我们相信,在程序设计语言教学中推广Ch平台,将会有助于推进计算机教育培训体系的改革。
C语言 结构化程序设计 循环结构 效率
一、引言
学习和应用计算机高级程序设计语言的人都知道,在这些语言中为实现结构化程序设计,一般都会采用三种最基本的结构,即顺序结构、选择结构和循环结构。因此,掌握这三种基本结构的使用方法,是学习和掌握高级程序设计语言课的基础。这三种基本结构中,顺序结构和选择结构和我们平常的思维习惯相似。因此,最容易理解和掌握;而循环结构是这三种基本结构中最复杂的一种结构,与我们日常的思维习惯不尽相同,因此理解起来相对来说比较困难。但是,几乎所有的程序都离不开循环结构,利用它可以简化程序、提高工作效率。因此,学习和应用高级程序设计语言的人又必须要掌握循环结构。但是,通过本人近几年的教学发现,大多数学生在学到循环结构一段时间后,干脆将这门课给放弃了,原因是他们觉得循环结构太难理解了。用顺序结构和选择结构做一个小程序还可以,用循环结构实在难理解。鉴于这个原因,本人将日常授课中总结出来的一点心得从初学者的角度写出来,希望能对即将和正在学习高级程序设计语言课的人有所帮助。当然,我们在这里是以C语言为例来说的,其实这方面的知识对其他语言比如Visual Basic语言等同样适用。
在C语言中,循环结构主要是由For语句、While语句、Do-While语句三种结构来实现的。而在这三种循环结构语句中又以for语句的应用更为广泛。因为for语句在其开头语句中就已经包含了循环变量的初始值、循环变量的终止值、循环的判断条件以及循环变量的变化趋势等这些内容,因此在编写其循环体时,只用考虑其循环体应该包含的主要功能就行了,而不用在For语句之前对循环变量的初始值进行过多地考虑,同样也不用在循环内部考虑其循环变量如何变化。对大多数有程序设计经验的人来说,使用for语句实现循环结构是一件轻而易举的事情。但是,对于没有经验的初学者来说,要想将for语句的作用及使用方法掌握住也不是一件容易的事情,更不用说While语句、Do-While语句的使用了。因此,本文从初学者的角度,阐述了C语言中循环结构的几种典型应用。
二、用循环结构输出几何图形
在教学过程中,不管开设哪一种高级程序设计语言课,只要一讲到循环结构,大多数老师几乎不约而同地选择输出简单的几何图形来作为讲解循环结构的最好实例。
对于这种类型的题目,初学者往往最容易想到的方法就是采用多条输出语句来完成程序的设计。虽然这种方法很快能够实现所要效果,但其缺陷也是很明显的:缺乏灵活性、程序修改起来不方便,也不符合程序设计的思想。比如,我想让大家输出8行,每行36个“*”。这个时候,我们就不得不在输入“*”的时候特别仔细,因为一不小心可能个数就不对了。
但是,这样的问题如果用循环语句来实现的话,程序不但可以简化多,并且可以很灵活地将其修改成我们想要的效果。
因此,在讲解这一类图形时,授课教师最好引导学生按照正常的程序设计思想,先分析图形的组成结构,找出其中变化的规律,然后按照所找到的规律用循环结构来编写出相对应的程序代码,这样一旦要求有一点点变化不用大篇幅地修改程序,而只用找到关键的几个地方修改一下就可以了。教师在讲解的过程中,可以举一反三,多次修改、让学生反复练习,直到他们理解为止。
现在,我们来具体分析一下该图形,看看它有什么样的特点,然后我们利用For循环将它的程序代码编写出来。
三、结束语
以上关于循环结构的使用基本上都是在程序设计教学过程中的一些体会与总结,可能比较肤浅,但是对于初学者来说,掌握这些知识还是有必要的。在进行课程教学的过程中,将自己在学习过程中得到的一些好的方法传授给学生,让他们从中去实践、体会,从而引起他们更大的学习兴趣是必要的。如何让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。更希望学生在学习的过程中不只是从老师这里拿一些现成的经验去使用,更重要的是让学生学会自己去发现问题、解决问题,总结出一些更好的程序设计方法,为以后进行软件开发与设计打下良好的基础。
参考文献:
[1]谭浩强.C程序设计(第三版)[M].清华大学出版社,2005.
[2]苏运霖.计算机程序设计艺术第1卷・基本算法[M].北京:国防工业出版社,2002.
[3]谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,1999.
一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而,这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张地说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序运行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。
一、科学认识大门的钥匙
当代自然辩证法,是对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判地吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉著作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。自然辩证法是哲学的一个重要组成部分。在辩证唯物主义哲学体系中,自然辩证法与历史唯物论相并列。它集中研究自然界和科学技术的辩证关系,是唯物主义在自然界和科学技术领域中的应用,它的原理和方法主要适用于自然领域和科学技术领域。学习和运用自然辩证法将有助于我们搞清科学和哲学的关系,从而更加清楚地认识科学的本质和发展规律,更加全面的观察思考问题,只有加深了认识,我们才能更好地发挥主观能动性,迎接新的科学技术的挑战。下面我将以自然辩证法的观点来分析计算机语言的发展历程。
二、计算机语言的发展历程和
发展趋势
计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。计算机语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言。
1、计算机语言的发展历史:
二十世纪四十年代,当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c,pascal,
fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型——面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java。这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。
2、计算机语言的发展现状:
目前通用的编程语言有两种形式:汇编语言和高级语言。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类: 解释类和编译类。
3、计算机语言的发展趋势:
面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,未来语言的发展将不再是一种单纯的语言标准,将会以一种完全面向对象,更易表达现实世界,更易为人编写,其使用将不再只是专业的编程人员,人们完全可以用订制真实生活中一项工作流程的简单方式来完成编程。
三、面向未来的汉语程序设计
语言
从计算机诞生至今,计算机自硬件到软件都是以印欧语为母语的人发明的。所以其本身就带有印欧语的语言特征,在硬件上cpu、i/o、存储器的基础结构都体现了印欧语思维状态的"焦点视角",精确定义,分工明确等特点。计算机语言也遵照硬件的条件,使用分析式的结构方法,严格分类、专有专用,并在其发展脉络中如同他们的语言-常用字量和历史积累词库量极度膨胀。实际上,计算机硬件的发展越来越强调整体功能,计算机语言的问题日益突出。为解决这一矛盾,自六十年代以来相继有500多种计算机语言出现,历经五代,至今仍在变化不已。汉语没有严格的语法框架,字词可以自由组合、突出功能的整体性语言。在计算机语言问题成为发展瓶颈的今天,汉语言进入计算机程序设计语言行列,已经成为历史的必然。
1、 发展汉语程序设计语言的理由:
1)计算机语言问题解决,只能从人类语言中寻找解决方案;
2)计算机语言的现存问题是形式状态与功能需求的矛盾;
3)计算机硬件的发展已为整体性语言-汉语进入计算机程序设计语言提供了条件
2、 汉语程序设计语言的技术特点:
1)汉文字的常用字高度集中,生命力极强,能灵活组合,简明准确地表达日新月异的词汇,这些优点是拼音文字无法企及的。
2)汉语言的语法简易灵活,语词单位大小和性质往往无一定规,可随上下语境和逻辑需要自由运用。汉语言的思维整体性强,功能特征突出。
3)汉语程序设计语言的发明者采用核心词库与无限寄存器相结合的方法,实现了汉语言的词素自由组合;将编译器与解释器合一,使汉语程序设计语言既能指令又能编程;以独特的虚拟机结构设计,将数据流与意识流分开,达到汉语程序设计语言与汉语描述完全一致,通用自如。具有汉语言特性的汉语程序设计语言的出现,打破了汉语言不具备与计算机结合的条件而不能完成机器编码的神话。还为计算机科学与现代语言学研究提出了一条崭新的路径,它从计算机语言的角度,从严格的机械活动及周密的算法上,向世人证实汉语的特殊结构状态,及其特殊的功能。
四、计算机语言之父
尼盖德帮助因特网奠下了基础,为计算机业做出了巨大贡献。 尼盖德是奥斯陆大学的教授,因为发展了simula编程语言,为ms-dos和因特网打下了基础而享誉国际。克里斯汀•尼盖德于1926年在奥斯陆出生,1956年毕业于奥斯陆大学并取得数学硕士学位,此后致力于计算机计算与编程研究。1961年~1967年,尼盖德在挪威计算机中心工作,参与开发了面向对象的编程语言。因为表现出色,2001年,尼盖德和同事奥尔•约安•达尔获得了2001年a.m.图灵机奖及其它多个奖项。当时为尼盖德颁奖的计算机协会认为他们的工作为java,c++等编程语言在个人电脑和家庭娱乐装置的广泛应用扫清了道路,“他们的工作使软件系统的设计和编程发生了基本改变,可循环使用的、可靠的、可升级的软件也因此得以面世。”尼盖德因其卓越的贡献,而被誉为“计算机语言之父”,其对计算机语言发展趋势的掌握和认识,以及投身于计算机语言事业发展的精神都将激励我们向着计算机语言无比灿烂的明天前进。
五、用科学的逻辑思维方法