高级语言程序设计范文

时间:2023-03-30 16:24:38

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

篇1

C语言程序设计课程通常在教学计划中都被安排在大学一年级上学期,这个阶段刚好是新生入学的第一个学期,一方面新同学对程序设计的概念还比较淡薄,另一方面,教学过程中程序练习题解决问题的针对性也不是很强,这都给教学环节带来了不少的困难。传统的实践教学中存在较多的问题,主要表现为[1]:(1)由于程序练习题解决问题的针对性、新颖性、复杂性等方面的原因,学生对上机实践课的兴趣较难调动,对上机实践通常不够重视;多数学生上机前不做预习准备,上机过程中总是敷衍了事,碰到问题时,既不积极思考,也不向教师提问;(2)实践教学中传统的练习题内容有点简单单一,缺乏层次性,不能满足不同层次学生的需求;(3)实践教学中的练习内容与后续相关课程有一定的脱节,表现为某些专业的学生虽然学了C语言,但到后续一些相关课程中需要使用C语言进行编程时,学生感觉仍然无从下手;(4)程序设计课程的考核方式不是很合理,现在只重视笔试考核和理论知识的掌握,忽略了编程动手能力的考核;(5)实践教学过程没有较好的延续性,不少学生当C语言课程考试结束后,也就把C语言放置一边了,没有把C语言的学习和应用很好地延续下去,因此并不能很好地掌握C语言。《C语言程序设计》是实践性很强的一门课程,实践教学是整个教学过程中的重要环节,抓好实践教学可以加强学生对抽象理论知识应用的理解和掌握,培养学生的编程实践动手能力,让学生掌握编写程序和调试程序的方法技巧。另一方面,程序设计实践教学环节中还存在着实践教学内容缺乏系统性和层次性,实践教学方式方法单一,编程实践内容与后续课程存在脱节,学生学习兴趣不高等问题。所以应根据C语言实践教学情况,分析现在实践教学中存在的问题,采取相应的改进措施。例如,加强练习题的层次性和针对性,将练习题分为基本练习题和提升练习题等。教学中必须通过大量的实践训练来促进学生对知识应用的理解和掌握,提高其分析问题、解决问题、编写程序和调试程序的能力,以保证良好的教学效果。

2《高级语言程序设计》实践课程的教学设计

针对《高级语言程序设计》实践课程教学中存在的诸多问题,教学时可按专业研究方向有所侧重地进行教学设计,设计不同的教学导向、教学内容、教学方法等。对电子信息类学生,可有所侧重地加强该实践课程与后续信号处理类课程,数学实验与数学建模课程的联系。

2.1加强该课程与信号处理类课程的联系

信号与信息处理的方法和能力是电子信息类学生在专业学习中必须要求掌握的一个基本技能环节之一。其中,比较典型的课程有《算法与数据结构》《数值分析与算法》《数字图像处理》《语音信号处理》《信息隐藏技术》等。在《高级语言程序设计》实践教学的教学内容设计上,可将学生引导到信号处理的方向上来,增加相应课程中涉及的特征参数提取,特征识别或判别、求解方程或某一类问题的算法实现等内容,一方面增加了练习题目的针对性,趣味性,同时还提升了题目本身的难度和层次性。例如,《语音信号处理》课程的学习过程中,可以设计一个小型的系统辨识问题[2],让学生完成10个孤立数字的语音识别问题。其中包括了语音特征参数的提取、特征的判别两个环节。

2.2加强该课程和数学建模与数学实验课程的联系

数学实验与数学建模是计算机和数学软件引进教学后的新事物,是数学教学体系、内容和方法改革的一项尝试。以往我们对数学的学习着重在,通过严密的逻辑推理完成公式的推导、定理的证明和实现一些简单快捷的计算,忽略了数学的实际应用。对于大多数理工科大学生来说,将来的工作并不是数学领域的研究工作,更多的时候,他们很可能将以数学为工具来解决各种实际问题。数学实验与数学建模课程正是锻炼了学生这一方面的能力。另一方面,一次数学建模实验过程相当于进行一次小型科研活动,在一定程度上,培养了学生初步的科研能力。通过最近几年的教学实践和组织学生参加全国和国际大学生数学建模竞赛活动,发现数学实验和数学建模课程对学生科研能力的锻炼有很大的促进作用,我们对该门课程的教学也着力在数学模型的建立和编程求解方面加强更多的联系。下面就这方面谈谈教学实践中的一些体会。在全国大学生数学建模竞赛中有这样一道题目[3-4]:2000年6月,人类基因组计划中DNA全序列草图完成,此后人类将拥有一本记录着自身生老病死及遗传进化的全部信息的“天书”。这本大自然写成的“天书”是由4个字符A,T,C,G按一定顺序排成的长约30亿的序列,其中没有“断句”也没有标点符号,除了这4个字符表示4种碱基以外,人们对它包含的“内容”知之甚少,难以读懂。破译这部世界上最巨量信息的“天书”是21世纪最重要的任务之一。在这个目标中,研究DNA全序列具有什么结构,由这4个字符排成的看似随机的序列中隐藏着什么规律,又是解读这部天书的基础,是生物信息学(Bioinformatics)最重要的课题之一。虽然人类对这部“天书”知之甚少,但也发现了DNA序列中的一些规律性和结构。例如,在全序列中有一些是用于编码蛋白质的序列片段,即由这4个字符组成的64种不同的3字符串,其中大多数用于编码构成蛋白质的20种氨基酸。又例如,在不用于编码蛋白质的序列片段中,A和T的含量特别多些,于是以某些碱基特别丰富作为特征去研究DNA序列的结构也取得了一些结果。此外,利用统计的方法还发现序列的某些片段之间具有相关性等。这些发现让人们相信,DNA序列中存在着局部的和全局性的结构,充分发掘序列的结构对理解DNA全序列是十分有意义的。作为研究DNA序列结构的尝试,提出对序列集合进行分类的问题。图1就是发现的两个DNA序列碱基结构,要求从中提取特征,构造分类方法,完成特征表达并利用其进行判识。为完成上述任务,一方面,从C语言程序设计过程来看,学生需考虑特征数据如何表达,采用什么数据类型,如何设计算法完成搜索查询目标;另一方面,这是一个带有挑战性和实际意义的交叉学科问题,既扩展了学生的知识面,又增加了趣味性。这对提高高级语言程序设计实践教学环节的教学效果是很有帮助的[5-6]。本文来自于《实验科学与技术》杂志。实验科学与技术杂志简介详见

3结束语

篇2

关键词:程序设计;高级语言;算法设计;功能意念

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

1引言

“高级语言程序设计”是各类学校计算机相关专业的一门重要的专业基础课,许多学校都将其安排在新生入学后的第一学期开设。

对刚接触这门课程的学生而言,“高级语言程序设计”课程的中心内容包括两个部分:高级语言和程序设计。从高级语言和程序设计的关系来说,程序设计应该是这门课程的核心内容。

对于如何搞好“高级语言程序设计“的教学,不同的人有不同的看法。笔者在多年的教学实践中,多次尝试采用“功能意念教学法”,取得了教好的效果。本文就是这一教学法的简单总结。

2功能意念教学法

“高级语言程序设计”的功能意念教学法就是从程序的一般功能、程序的一般结构以及程序设计的一般过程出发,按照功能+意念+机制的方式组织教学。简单地说,就是为了设计一个程序,先解决我们需要做些什么,然后解决程序需要做些什么,最后解决高级语言怎么做到等一序列问题,也就是从问题和任务出发进行教学。

以上所述主要围绕程序最基本的功能展开,至于其它功能部分,比如C语言的编译预处理、宏、模块化、混合语言编程、指针、文件、链表等,也可以从功能意念的角度展开教学。

在具体实施教学的过程中,可以根据教学要求按照自顶向下的原则制定出所教授的高级语言的基本功能意念表,以方便教学。

3算法的意念作用

笔者认为,程序设计其实就是为了解决某个问题而从我们所熟悉的程序设计语言中挑选合适的语句做一个适当的排列组合。

在上面的这段话中,明显地有两个值得我们进一步探讨的关键词:合适的语句和适当的排列组合。现在我们的问题是,如何挑选合适的语句?又怎样做适当的排列组合?

这两个问题的解决有赖于所谓算法的概念。因此,为了解决这两个问题,我们必须针对面临的具体问题设计出有效的算法。

算法是解决特定问题的一序列操作的集合,代表的就是一种意念,换言之,就是设计者所希望的对数据进行加工处理的有序的步骤。这种操作步骤的有序性就决定了如何对所挑选的语句做适当的排列组合。

由粗到细是我们解决问题的一种典型的思维过程。按照这一思维特点,算法设计也有一个由粗到细的过程,即算法细化。

算法细化要适可而止,即有一个度的问题,那么我们又该如何把握这个度呢?一般而言,算法细化只要细化到其中的每一操作步在准备采用的语言中都能找到对应的语句直接加以实现即可,而且也必须细化到这种程度!算法细化好了,如何挑选合适的语句也就解决了。

总之,算法决定了如何挑选合适的语句以及怎样对所挑选的语句做适当的排列组合!因此有了算法,我们只需要通过很简单的翻译转换就可以很容易地得到程序。

4高级语言的相关功能成分

高级语言是书写和记录程序的工具。为了适应程序的功能需要,高级语言自然应该提供相应的手段或机制让程序设计人员借以实现所需要的程序功能,高级语言的相关功能成分指的就是这些手段和机制。

4.1数据安排机制

高级程序设计语言中的数据安排机制主要体现为用于定义常量、变量、数组和记录(或结构体)等的功能成分。单纯从语言成分的角度来看,这些功能的实现主要是由一组和数据类型有关的关键字来体现的。换言之,高级语言为我们提供了一组与数据类型有关的关键字以便程序设计人员根据自己的意愿对数据空间进行组织和安排。以C语言为例,这些关键字主要有:char、int、float、double、struct以及signed、unsigned、short、long,等等。在源程序中来看,数据空间的组织和安排都是通过基于上述关键字的数据定义语句来实现的,比如:

1)int abc;

2)char abc[12] ;

3)*float abc;

4)struct abc{x char;y int;z float;}

struct abc xyz;

作为程序设计的工具,为了尽可能给程序设计人员带来方便,高级语言除了支持基本数据类型外,还支持用户自定义类型,如上面的例4)。

4.2数据I/O机制

高级语言中的数据I/O机制主要体现为各种用于数据输入/输出的语句或函数(库函数)等。在C语言中,这些函数常用的有:

fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、

fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等。

以上列出的是所谓系统预定义函数,即标准函数或库函数。此外,用户还可以根据自己的需要以上述标准函数为基础自行定义一些可以得到某些特殊I/O效果的函数。

4.3数据处理机制

前面已经提到,数据的内部加工处理主要包括数据在主机内部的传送和各种运算,高级语言的数据处理机制就

是指为此目的而提供的各种运算符。在C语言中,这些运算符包括为数据传送提供的赋值运算符“=”和为数据运算提供的算术运算符“+、-、*、/、%、++、--”、关系运算符“>、>=、

4.4流程控制机制

高级语言中的流程控制机制主要体现为用来实现分支程序结构、循环程序结构以及子程序结构的功能成分,换言之,就是分支语句、循环语句以及子程序的定义和调用机制等。在C语言中,这些语句包括:if语句、switch语句、goto语句、break语句、continue语句、for语句、while语句、do…while语句以及return语句等。

5结束语

历史上高级程序设计语言有好多种,目前仍然流行的也有好几种,而且还在不断的推陈出新。从“功能意念”的角度,不难看出,所有的高级语言都应该有相类似的功能成分,以解决程序设计所面临的共同问题。因此,只要我们认真地学好一种语言,重点掌握好程序设计的一般思想方法,就可以很容易地掌握另外一种。从一种语言过渡到另一种语言,从语言的角度来说,只不过是一种形式上的转换而已,它们的内容(程序的功能)和程序设计的思想和方法却总是相通的。

参考文献:

[1] 谭浩强. C程序设计(第三版)[M]. 北京:清华大学出版社,2005.

[2] Brian W.Kernighan, Dennis M. Ritchie. C程序设计语言(第二版)[M]. 北京:清华大学出版社,2002.

[3] Bruce Eckel著. 刘宗田等译. C++编程思想第1卷:标准C++导引[M]. 北京:机械工业出版社,2002.

[4] 郑启华. PASCAL程序设计(第二版)[M]. 北京:清华大学出版社,1996.

篇3

[关键词]智慧课堂 高级语言程序设计 上机教学

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2015)08-0125-02

一、引言

在信息技术高速发展,全面建设智慧城市、智慧校园的大背景下,传统的课堂教学也面临着变与不变的外部挑战。[1]新兴技术的不断冲击,使得课堂教学不再是师生间单一的教与学关系,更多的是师生间平等的对话与互动,传统课堂已无法满足教育需要。将信息技术与教育深度融合,优化教育模式,已经成为一种必然的趋势, 由此智慧课堂这一新的教学模式便应运而生了。智慧课堂是指充分利用信息化技术,以引导学生的高度参与以及主动性的充分发挥,以自主地发现问题、研究问题和解决问题为主要学习形式,是以培养多样化、高素质、创新型人才为目标的教学方式。[2]相对以教师为中心的传统课堂,智慧课堂强调以学生为中心,注重学生的主动学习、合作学习和快乐学习。[3]

作为高校理工科电子、计算机等相关专业的一门重要基础课程,高级语言程序设计的目标是培养学生的程序设计理念、掌握程序设计的基本方法,培养学生熟练使用C语言编程解决实际问题的能力,为后续程序设计课程的学习和应用打下扎实的理论和实践基础。[4]学生是否具有较高的编程能力和良好的编辑习惯是衡量其对该课程掌握程度的一个重要指标,而编程能力的提高和编程习惯的养成离不开上机实践,因此上机实践是高级语言程序设计教学中的一个至关重要的环节。[5]

本文针对高级语言上机教学的课程特点和存在问题,充分利用上机实验室的信息设备优势,将信息技术与教育深度融合,实现上机教学的智慧课堂。

二、教学现状和问题

一般院校的高级语言程序设计理论课和上机课的比例为1∶1,由32学时理论课和32学时上机课组成。上机课目前多采用传统的“教师讲授―教师演示―学生上机练习”的教学模式,主要存在以下问题:

(1)学生编程的信心和积极性有待提高。高级语言程序设计的开课时间设在大一的第二个学期,此时绝大部分学生对计算机软硬件知识缺乏全面了解,再加上C语言本身学习起来有难度,使学生不能很快掌握算法的思维特点,编程能力、调试能力普遍较差,增加了C语言上机学习的难度。很多学生在上机的过程中非但没有对编程产生兴趣,反而还产生惧怕心理,进而放弃学习。

(2)学生自主分析问题、解决问题的能力有待提高。目前上机教学模式以教师“教”为中心,学生过多依赖于实验指导书和教师,基本处于被动接受状态。在上机课中常出现“写程序就抄书,出现问题等老师”的现象,分析错误、动手调试本是最能发挥学生能动作用的环节,现在却由教师来承担,往往导致学生离开指导书和教师就写不出程序、调试不了程序的局面,很难培养学生在程序设计上的创新能力和逻辑思维能力。

(3)机房得天独厚的信息技术环境没有得到充分的利用。一般机房都配备有计算机、高速局域网和多媒体教学管理软件,具备开展智慧课堂的条件。以我院机房为例,采用的是海光多媒体软件,海光多媒体软件是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并能同时实现屏幕监视和远程控制等网络管理的目的,其核心功能包括教师演示、学生示范、语音教学、遥控辅导、屏幕录制、屏幕回放、提交作业、电子抢答和文件传输等。但目前该软件主要用于教师演示和收发文件,现有的信息技术设备没有得到充分的利用,信息技术改变教育方式没有得到充分的体现。

三、智慧课堂开展内容

针对以上情况,本文将充分利用机房的信息技术环境优势,将信息技术与教学深度融合,通过分组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建高级语言程序设计上机教学的智慧课堂,实现学生主动学习、合作学习和快乐学习。

(一)小组合作学习

针对部分学生不能单独完成编程及缺少兴趣的问题,采用分组学习的教学模式,每次上机课将学生分为4人一组,每组学生通过合作学习共同完成一个实验任务。小组合作学习一方面更能突出学生的主体地位,培养学生主动参与的意识,激发学生的学习兴趣;另一方面学得好的学生可以带动其他学生,在达到学习均衡的同时,也培养了学生的合作能力和团队精神。

分组合作学习的关键是有效地组织学生学习,没有组织的学习会使课堂变得嘈杂、分散,所以合理划分小组是分组合作学习的首要前提。主要考虑两种分组方式,第一种是学生自愿组合,第二种是教师按学生的基础分组。第一种分组方式有利于调动学生合作学习的积极性,激起学生学习的兴趣,但是自由式的小组组合很可能出现分组不均衡的现象,即学习基础好的学生分在一组,学习基础薄弱的学生分在一组;第二种分组方式需要教师在全面了解学生的前提下,根据班级内的情况,有意识地将不同基础、不同类别的学生分到一组,使班级小组间基本上是相似的、均衡的。综合考虑两种分组方式的优缺点,可交替采用两种方式进行分组。

小组划分后需进行合理分工,每一组选择一个组长,组长协助教师组织任务攻关工作,同时监督组员,避免出现“蹭组”现象。组长的选择要考虑学生的成绩、与同学间的关系等因素,可采用自由推选的方式,给每个学生改变角色和锻炼的机会,进而提高其学习兴趣。

(二)任务驱动教学

在上机实验过程中,以完成一个具体的任务为线索,把教学内容隐含在每个任务之中,要求学生在具体的任务驱动下,在讨论和对话的氛围中,进行自主学习和协作学习。这样学生在完成任务的过程中始终处于主体地位,不仅提高了学生的积极性,也培养了学生的探索与创新精神。任务完成后,随机挑选或通过海光多媒体软件的“电子抢答”功能选出若干小组,通过软件的“学生演示”功能进行演示,并引导学生进行总结和改进。

在任务驱动教学中,任务设计的质量直接关系到教学效果。在设计任务时,要以学生为中心,根据学生的实际情况和学生感兴趣的方向来设置任务,同时要注意高级语言知识点的系统性和连贯性,将理论课的知识点融入上机任务中,使学生在完成任务的过程中,既巩固已学过的内容,又探索新知识,实现总体的教学目标。

例如,在练习C语言控制结构中的选择结构时,任务设计为:设计一个程序,输入某年某月某日,要求计算出这一天是该年的第几天。学生拿到任务后,分组讨论程序思路,教师通过管理软件随机选择若干小组听取他们的设计思路,根据回答情况进行引导,学生得到以下正确思路并编程实现:

1.从键盘上读入3个整数,分别作为年、月、日。练习输入函数。

2.要计算出某天是当年的第几天,应该将当年中本月之前所有月份的天数相加,再加上本月的天数。根据所输的月份练习switch选择结构。

3.考虑闰年问题,二月是一个特殊月,如该年是闰年,则二月有29天,否则,便是28天。根据所输的年份练习if选择结构。

4.输出答案。练习输出函数。

这个有趣的任务让学生在讨论中学会了选择结构的使用方法,并了解了switch和if这两种常用的选择结构的区别,且巩固了前面学习的输入输出函数知识点。

(三)网络学习

为学生提供丰富的网络学习资源。利用海光多媒体软件的录制和回放功能,可以在执行“教师演示”播放教师机上的屏幕画面的同时,将播放的图像画面以动画影像的形式录制下来,跟不上教学进度的学生可通过“回放”学习。将录制的视频、课件、参考资料和课外拓展练习资料等上传到课程群,提供丰富的网络学习资源,让学生学习不受时间、地点的限制,实现全方位学习。

(四)多元化考核方式

考核方式对学生有重要的学习方向引导作用,在智慧课堂的教学模式中,采用多元化考核方式,进一步调动学生的学习主动性和积极性。学生的上机成绩由三部分组成:课堂表现考核,由教师根据学生的分组表现、课堂展示和任务完成情况给出成绩,占总成绩的30%;组内考核,每次实验由小组长根据组员的表现打分,最后取平均分,占总成绩的20%;期末上机考试,占总成绩的50%,对学生的总体掌握情况进行测评。

四、结语

本文充分利用了机房得天独厚的信息技术环境,采用小组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建了高级语言程序设计上机教学的智慧课堂。实践证明,该教学方法深受学生的欢迎,有效提高了学生的积极性,取得了良好的教学效果。

[ 注 释 ]

[1] 黄荣怀,张进宝,胡永斌,等.智慧校园:数字校园发展的必然趋势[J].开放教育研究,2012(4):12-17.

[2] 吴晓静,傅岩.智慧课堂教学的基本理念[J].教育探索,2009(9):6.

[3] 祝智庭,贺斌.智慧教育:教育信息化的新境界 [J].电化教育研究,2012(12):13.

篇4

我国高校很多非计算机类专业学习程序设计课程所用语言主要为C语言和VB语言。这些语言历史较久,也具有自身的很多特点,但更新很慢或者已经停止更新,因而导致与计算机最新的发展不相适应。尤其是VB语言,存在较多不足,如难以进行移动计算的编程、在新操作系统下支持不好、功能和编程思想陈旧等。这些不足使得传统的程序设计课程所用的语言难以紧跟计算机发展的新形势,不利于学生计算思维的培养。因此,选用更科学合理的语言作为程序设计课程的主语言对于高校高素质人才的培养具有很重要的现实意义。在计算机飞速发展的大背景下,以C语言、VB语言程序设计为主的高校程序设计类课程教学多年来缺少变化,已经与时代有些脱节。现在国内外很多高校开始设置Python语言、C#语言等作为程序设计的主要语言,取得了良好的效果。本文就以Python语言为例,借鉴国外在程序设计类课程教学中的先进经验,探讨在我国高校以Python语言作为程序设计类课程主语言的可能。

二、目前程序设计类课程教学在主语言选择中面临的问题

作为高校目前开设的程序设计类课程主语言,C语言和VB语言具有相对悠久的历史,也有很多自身特有的优势,在程序设计教学中起到过非常重要的作用,但同时也因为时间较久,很多功能和编程思想稍显陈旧,逐渐变得难以适应计算机教学发展的新形势。一般计算机类专业开设C语言程序设计课程,可以培养学生严谨认真的编程素养,使学生基本掌握一门高级语言进行程序开发的基本技能。同时,因为C语言更贴近底层,因此用C语言作为程序设计的主语言可以让学生更深切的了解计算机最基本的运作原理,开发出高效、优化的程序。C语言虽然具有上述很多优点,而且目前应用仍然较广,但是它本身是上一代的面向过程的语言,语法晦涩严苛,应用时特别容易出错。从语言本身的角度来说,基本数据类型不够完善,缺乏布尔型、日期时间型、对象型等数据类型;构造型的数据类型中,仅支持数组类型,对集合类的类型缺乏支持[1],很多基本的功能都有赖于用户自己设计,进行程序开发时工作量很大,难度也较高,对非计算机专业学生来说不适合作为程序设计基础语言。VB语言一般作为文科类专业的程序设计类课程主语言,具有可视化、面向对象、便于操作数据库、难度较低、容易上手等特点[2]。目前国内高校大多仍然选择VB6.0的程序开发环境。但是VB6.0是一种非纯粹的面向对象语言,仅适用于Windows系统,没有跨平台的特性,在非Windows系统下无法使用。而且由于VB6.0已经长期没有更新,很多新的编程思想也难以体现,在新操作系统下支持不好。同时,目前的主流移动计算平台大多不支持VB语言作为开发语言,在移动计算发展迅猛的形势下,VB6.0难以因应时展,从长远的角度来看,不利于学生的学习,因此选用更科学合理的语言作为程序设计基础语言是必要的。

三、Python语言作为程序设计课程主语言的优势

选用什么语言来进行程序设计教学不仅关系学生的学习效果,还对学生以后的发展有着一定影响。计算机编程语言的发展非常迅速,基本上每过几年就会有新的形势出现。近年来,Python已经成为最受欢迎的程序设计语言之一,它逐渐被广泛应用于处理系统管理任务、图形处理、网络编程和Web编程等领域。Python语言是一种简洁、易读的解释性语言,具有优良的可扩展性和平台可移植性,同时Python是开源的语言,拥有丰富的第三方库和插件,为使用Python进行开发提供了极大的便利[3]。在国外用Python做科学计算的研究机构日益增多,诸多的国外高校已经开始采用Python语言来作为程序设计课程的主语言。从教学的角度来说,使用Python语言作为程序设计课程的主语言有以下几种优势。1.简单易学。Python是一种解释性语言,具有类似脚本语言一样的简单易学的特点,无须像C语言一样强制定义变量,程序的执行也无须经过编译、链接等中间步骤,可以直接执行,给用户良好的交互式编程体验,也便于学生的记忆和学习。2.开源小巧的多平台开发环境。Python在多种操作系统下都具有良好的支持,有些操作系统甚至自带Python的开发环境。在常用的Windows平台下,只需一个很小的开源安装包就可以安装Python开发环境,便于学生的自学和交流。如果需要,也有很方便的图像化开发界面可以下载安装。3.丰富的数据类型和高层的编程体验。Python提供丰富的数据类型,内置像元组、集合、列表、字典等方便使用的集合数据类型,过滤了底层内存管理、垃圾回收等细节,可以让用户把更多的精力放到程序开发本身上来。在教学上可以节省很多时间和精力,便于学生把重点放在解决问题的真正逻辑上。4.可扩展性和持续更新。Python具有良好的可扩展性,可以把其他语言开发的程序“粘合”到Python程序中,发挥不同语言各自的优势。同时,Python语言仍在不断的更新,具有良好的发展前景,便于调动学生学习的主动性。总而言之,尽管Python语言也有运行速度较慢、缩进格式要求严格等缺点,但是其简单易学等特点使得在目前学时普遍较少的程序设计类课程教学中具有较好的优势,把语言的部分语法和内容进行筛选后作为程序设计课程的主语言进行教学是可行的。

四、结论

篇5

关键词:C语言程序设计;教与学;学习理论;教学设计

中图分类号:G712 文献标志码:A 文章编号:1674-9324(2014)09-0156-02

一、引言

C语言作为一门出色的程序设计语言,既有高级语言的特点,又有汇编语言的特点。它以精练、灵活、可移植性好、应用领域广泛、目标程序效率高而著称。在高职院校中,C语言程序设计作为计算机应用专业及相关专业的专业必修课,也是学生学习程序设计的入门课程。它在程序员的学习中起着非常重要的基础作用。

二、C语言教学现状分析

作为以重点培养学生技术应用能力的高职院校,C语言程序设计作为一门理论性较强的课程,在实际教学中,将知识转化为能力的教学效果往往并不理想。主要体现在C语言烦琐的各种语言细节和抽象的设计理论上,学生在接触大量难以记忆的概念、名词和规则时常常会感到枯燥乏味。对于抽象的程序设计理论,不能较好地建立算法和基本编程思路。学生在独立上机编程时,常常感到无从下手,在调试程序中,由于效率较低,很难从学习中体会到成就感。很快学生对这门课程失去了兴趣,丧失了学习信心。因此想要C语言教学中,收到良好的教学效果,就需要加大对C语言程序设计的教学内容以及教学方法好好研究。本文将通过针对C语言中不同的教学内容,采用不用的教育学习理论,探索相应的教学方法,重点培养学生通过C语言的学习,掌握程序设计的基本方法、基本思路和基本技术。让C语言程序设计课程更加符合高职教育的目的。

三、几种教学系统设计的应用

1.以“教”为主的教学系统设计应用。以“教”为主的教学设计理论和方法经过几十年来众多专家的深入研究与发展,已形成一套完整严密的理论体系。主要基于行为主义学习理论和认知学习理论,教学设计的焦点在教学上,强调教师的主导作用,突出循序渐进,按部就班,精密严密的应用系统方法对教学进行设计。特点是有利于教师主导地位的发挥,教师把握整个教学过程,它适用于基础知识和系统知识的掌握和传授,有利于教学目标的完成。

C语言中基本知识的内容比较适合此种教学设计模式,比如C语言概述、C语言的数据结构类型、C语言的基本运算符及表达式等内容。教师依据教学大纲,把教学内容细分为知识点,确定各知识点的学习水平,比如了解、识记、理解、掌握及综合应用等。课前分析学生的基础,设计教学过程,灵活运用多种教学方法,通过讲授法让学生对基本知识概念认识,通过案例法学生在例子中理解感念,通过讨论法学生对学习的知识进行交流和提问,通过测验验证学生的掌握情况。教师要监控整个教学过程,通过严密的教学设计,学生会对基础知识有扎实的掌握。当然此种教学模式也有其弊端,比如重教轻学,忽视学生的自主学习、自主探究,容易造成学生对教师、对教材、对权威的迷信,使学生缺乏发散思维、批判思维的创建。但对于C语言中基本概念知识的内容的特点,这些弊端还是较好地回避了。

2.以“学”为主的教学系统设计应用。建构主义理论指导下的以“学”为主的教学系统设计认为,在教学中体现以学生为中心,认为在学习过程中充分发挥学生的主动性,要体现学生的首选精神;要让学生有多种机会在不同的情境中应用所学的知识;让学生能根据自身的行动的反馈信息来形成对客观事物的认识和解决实际问题的方案。重视发挥学生的首创精神,将知识外化和实现自我反馈。

C语言中的三大程序设计结构,即顺序结构、选择结构和循环结构。主要培养学生架构化程序设计的思想,让学生理解掌握自顶向下,逐步求精的程序设计,进行模块化程序设计,应用三种基本控制结构解决复杂问题的能力。注重程序设计方法能力的培养。教师在教学设计中,以简单的程序为例导入学习内容,让学生通过自学,理解程序流程,学生通过案例实验,在做中理解程序设计思想。在学生掌握基本方法后,给学生提供丰富的实验资源,让学生在实践中举一反三,达到知识的掌握,方法的理解,从而实现能力的获得。当然,在实施教学过程中,要注意避免其弊端的影响,比如不能忽视教学目标的分析,学生在自主学习的自由度过大时,容易偏离教学目标的要求。不能忽视教师的指导作用,强调以学生为中心,要充分考虑体现学生的主导作用,就是要为学习者设计主动建构知识意义的学习环境,教师可通过任务驱动法,比如先选择结构学习时,用单循环结构导入,再让学生思考乘法表的编程方法,给学生基本的算法思路的提示,让学生循序渐进地掌握嵌套选择的复杂结构。要注意师生之间情感交流和情感因素在学习过程中的重要作用,学生在完成任务时,要及时鼓励,通过优秀作业的讲解和总结,让学生获得学习的信心和热情。

3.教师为主导、学生为主体的“双主”教学系统设计应用。“双主”教学设计理论既不是仅以教师为中心,也不完全是以学习者为中心,而是充分考虑两者的有机融合,相互交流,相互沟通,双边互动,不但能够发挥教师的主导作用,又充分体现学习者的认知主体作用。在整个过程中教师处于中心地位,是教学过程的组织者、指导者、知识建构的帮助者、促进者。对于学习者并非在本过程中自始至终处于“传授―接受”的学习状态,更多的时候是在教师帮助下进行主动思考与探索。而教学媒体在整个教学过程中有时作为辅助教学的工具,有时作为学习者自主学习的认知工具,各个要素彼此相互联系,从而形成一种新的教学设计模式。

C语言中数组、函数、指针、文件等内容较适合采用此种教学模式。在教学中教师的角色发生了转变,教师是教学活动的组织者、执行者,但是对教师能力的要求却提出了更大的挑战。教学课程内容可以由课堂教学、分组教学、上机实践和自学活动等部分组成,教学项目的开发者。可以通过课前设计教学项目任务、教学双边活动策划、典型例程选择、课堂随机提问等手段来实现。分组教学:分组教学强调环境因素对学生意义建构的促进作用。根据学生的具体情况进行分组,分组既要考虑学生的互补性,又要设立小组成员的带头作用,实现良性自主学习策略,最终把因材施教内容融入到该环节中去。上机实验:程序设计掌握的关键是算法的编制和语言的运用能力,因此上机实践是必需的,在上机前可以设定一些贴近实际应用的项目模块,让学生从项目需求、环境变量、算法流程、语言格式及模块I/O等方面进行练习,教师可以在上机时间内进行相应的实践引导和结果评价工作。自学活动:学生在课余时间提供丰富的网络学习资源,学生在通过网络进行深入研究学习,教师也可提供一些实用的软件项目供学生课余参与,通过比赛的形式学生在项目参与过程中提高了对知识的应用能力,锻炼了一定的程序员素质和团队合作精神。

四、结语

实践证明,针对不同教学内容采用相应的教学模式,课堂教学与实验教学效果都比过去有了明显改善。通过对由浅入深的理论学习和循序渐进的实验练习,学生在学习中培养了程序设计的兴趣和学习热情。通过整合教学内容、改进教学方法,教师要通过研究教学内容的特点,采用相应的教学模式,注意避弊取利,采用多种教学策略进行补充完善,以实现C语言教学效果最优化。

参考文献:

[1]夏瑜.基于双主理论的程序设计教学方法[J].四川教育学院学报,2009,(11).

篇6

关键词:程序设计 建构主义理论 兴趣驱动 问题探索

中图分类号:TP311.1 文献标识码:A DOI:10.3969/j.issn.1672-8181.2013.19.030

1 引言

目前,程序设计是工科高等院校的重要基础性课程,对于信息类专业学生的职业技能培养和实践能力的锻炼起到不可替代的作用[1]。程序设计课程是在学生系统地学习了一种面向对象的程序设计语言的基础上,教师设置和指导涵盖多知识点的软件课题,期望学生通过课题的实践来巩固面向对象的程序设计语法和思想的一种手段。由于面向对象程序设计通常在低年级开课,大部分学生在中学期间接触很少,导致学生普遍对编程语言课程存在畏难情绪和厌恶心理,严重缺乏学习兴趣,因此影响了课程的学习效果。而程序设计课程是一门实践性很强的课程,该课程的教学效果不仅影响到学生对编程语法和方法的掌握,也直接关系到学生对后续专业课程的自信心。

建构主义[2,3]的思想来源于认知加工学说,融合了维果斯基、皮亚杰和布鲁纳等人的思想,皮亚杰等人的认知观点中解释了如何使客观知识结构通过个体与之交互作用而转化为认知结构的方法,建构主义理论中教学观表明:教师不应只是知识的呈现者,不应扮演知识权威角色,而更应关注学生对各种知识的理解,时刻掌握他们的学习进展,并以此为据,引导学生丰富或调整自己的解释,应当在教师引导下以学生为中心,使学生在特定阶段承担起教学中的主体作用。建构主义理论中一个重要核心思想即教师应当引导学生的学习兴趣,在教学过程起始阶段教师是主体,而通过学生兴趣的提高,学生应该慢慢替代教师成为教学中的主体。

2 现状及存在问题

现有多种教学方法应用于程序设计课程,并且取得了一定的实际效果,三种较为典型的程序设计教学方法归纳如下。

2.1 任务驱动教学法[4]

任务驱动式教学是以任务为主线开展的教学方法,是一种探究式教学模式,该模式中在教师的设计引导下,以学生自学为主,教师负责把知识点融入各个子任务中去,学生层层推进任务的完成。尽管这种方法没有遵守传统教学法中从易到难、循序渐进的方式,是以完成任务作为驱动来进行教学,但是可以在完成任务过程中培养学生自主学习的能力。

2.2 案例分析教学法[5]

案例分析式教学是教师运用典型案例材料,引导学生参与理解、分析、探讨、反馈等教学活动,该方法注重培养学生运用知识分析问题和解决问题的能力。该方法的核心是鼓励学生表达对问题的分析及解决问题的想法。通过教学对象的双方互动,通过参与研讨,使得学生在解决课题的实践中掌握知识、熟练技能、侧重实用。

2.3 竞赛驱动教学法[6]

由于把考试作为课程的目标会使学生缺乏正确的学习目标,因此提出竞赛驱动教学方法,期望通过竞赛方式让学生在课程学习中获得成就感,在程序设计教学中引入竞赛的训练方法与评判规则,以竞赛为驱动,激发学生的学习兴趣和竞争意识,例如南京邮电大学每年开展的ACM竞赛、程序设计大赛等,会吸引很多学生踊跃参与。

综上所述几种现行方法,尽管从不同角度改进了程序设计课程的教学效果,但是都存在以下几方面的共性问题。

①重语法、轻方法。高级语言的语法规则繁多,比如函数、指令、输入输出格式等,通常在编程语法教学时教师侧重介绍各种语法规则,并且要求学生记忆并严格遵守规则进行编程。而实际上,程序语言的学习应侧重于对问题的解决思路的训练,培养学生分析问题和解决问题的能力。

②重结果、轻过程。程序设计类课程的成绩评定一般都取决于最终程序的操作效果,所以学生往往关注程序的功能是否实现,而忽略了程序实现方法的选择和取舍,这对于未来大型程序的开发可能会导致严重后果。

③重规范、轻探索。程序设计课题的一般都有标准答案,要求学生所开发程序达到或者接近标准结果,尽管这种课题便于教师对学生的成绩评定,但是限制了学生自由探索的空间。

程序设计能力实质上是一种需要学生发挥主观能动性、激发灵感的一种技能,过多的约束与限制不利于职业技能的养成和后期发展。以上所述的三方面问题显然抑制了学生对程序设计课程的学习兴趣,降低了学习乐趣,进而也影响了学习效果。因此,本文提出一种基于建构主义理论,面向兴趣导向的程序设计课程改革思路。

3 兴趣为导向的课程改革

以兴趣为导向的程序课程改革包括课程设置、教师引导、学生实践和教师评价四个步骤,如图1所示,本节分别介绍这些步骤的实施方法。

图1 兴趣为导向程序设计的主要步骤

3.1 课题的选择与设置

课题的选择对于程序设计课程而言非常重要,与课题的合理性和可探索性有着直接关系,一个合适的课题体现几个特点:①知识点涵盖完整、合理,课题所需要用到语法能贯穿高级语言的主要知识点,另外这些知识点应与实际软件开发相符合;②趣味性,课题可以引起学生的主动思考、激发研究的意愿,比如可以采用巡回赛竞分型课题;③可探索性,课题未必有标准的答案,程序开发的结果可以是多样化的,允许学生的独立思考和个性发挥,并且可以通过自主学习其他相关课程来加深对课题的理解和分析。

3.2 教师引导课题

由于程序设计课程主要面向低年级本科生开设,教学对象的专业基础想对薄弱,而探索性课题具有一定的复杂性和多样性特征,所以教师对课题的引导很有必要。课题引导应侧重于课题所涉及知识点、解决思路、基础理论等,尤其是关注对解决过程的引导,解决过程可以采用“问题剖析―问题建模―方法凝练―实施解决”的模式来开展和介绍,可以把课题的关键步骤作为入口,逐步增加细节,按照“关键步骤―增加细节―全局”步骤加以分析和引导。

3.3 学生探索与实践

经过教师对课题内容和方法的引导之后,学生要开始课题的具体实施。实施过程包括课题分析、课题准备、方法选择、编程实现和结果验证及反馈环节。课题分析需要根据教师的引导开展,根据分析结果学生进行相关知识的储备,之后选择合适的方法进行编程实现,在对结果进行验证之后可能还需要反馈结果进一步调整方法,对程序进行修改和完善,所以该步骤是一个迭代过程,学生可能需要进行多次的“方法选择(调整)开发(完善)程序结果验证方法选择(调整)”。在该过程中,学生将不断加深对程序设计思想的理解和应用水平,还有助于提高学生解决问题的能力。

3.4 教师评价

在该方法中,教师评价将不仅仅依据学生所开发的程序结果,而更多关注学生在实践过程中的分析和思考过程,特别是学生在方法选择和调整过程中的实践轨迹。教师评价的指标应覆盖学生实践的四个环节,分别对学生的分析能力、准备情况、方法选择、程序结果进行评价,得到一个综合的评价等级。尽管在该方法中,教师的工作量会有所增加,但是将有助于提高学生的课程学习的效果,并给予更为客观的评价。

4 结语

当前信息类高校中学生对程序设计课程普遍存在兴趣不强的现象,因此影响了教师所预期的教学效果。针对该现象,本文基于建构主义理论,提出一种以兴趣为导向的程序设计教学改革方法,期望通过激发学生学习兴趣,驱动学生进行自主地学习和探索,提高课程的教学效果和学生的专业技能。此外,本文还提出一种对程序设计课程中学生成绩评定的模型,该模型涵盖学生参考课程的各个环节,有利于教师对学生给出一个更为客观的评价。

参考文献:

[1]乔淑云,黄刚.程序设计类课程教学改革与计算思维之培养[J].计算机教育,2012,(19):17-23.

[2]张建伟,陈琦.简论建构性学习和教学[J].教育研究,1999,(5).

[3]张建伟,陈琦.从认知主义到建构主义[J].北京师范大学学报(社会科学版),1996,(4).

[4]冀松.兴趣教学法在高级语言程序设计语言类课程中的应用[J].教育探索,2012,(3):52-53.

[5]王岚.程序设计课程教学法探讨[J].中国职业技术教育,2009,(11):65-67.

[6]王桂平,冯睿.程学设计课程实践教学的改革探索[J].现代教育技术,2010,20(13):51-53.

[7]罗伯特・阿克塞尔罗德.合作的进化[M].上海人民出版社,2007.

作者简介:刘林峰(1981-),男,博士,副教授,南京邮电大学计算机学院,江苏南京 210023

篇7

关键词:任务驱动;实践教学体系;教学做一体化;阶梯递进

C语言是计算机类相关各专业学生学习的最重要的程序设计语言之一,它不但是一些专业课程(如数据结构)实践所用语言,也是目前工程项目主要编程语言之一。C语言不但成为计算机类相关各专业的必修课,而且也越来越多地成为非计算机专业的学习课程,同时该课程也是一门实践性很强的课程,有较高的实验要求。但在C语言课程教学中,许多教师和学生都认为C语言涉及的概念比较复杂,规则繁多,使用灵活,容易出错,教师教学和学生学习都感到困难,并不同程度产生畏难心理。近几年来,笔者先后承担了计算机网络技术、计算机应用技术等高职专业的C语言程序设计教学任务,在教学过程中发现,高职学生普遍认为C语言枯燥难学、概念复杂、容易出错,学生的畏难、厌学情绪使得教学困难重重。这些都是C语言课程教学改革是所面临的问题。

高职C语言程序设计课程的教学目标是:掌握C编程语言基础语法;掌握初步编程思想,熟悉基本算法,能根据问题正确选择、组合算法并绘制程序流程图;能独立编写代码,编写测试数据,并能独立调试程序,获得正确结果;对本课程和软件开发相关课程有兴趣,能自主学习。对高职学生而言,C语言程序设计是一门理论性和实践性都很强的课程。

笔者在课程建设过程中,通过“任务驱动”教学模式对C语言程序设计这门课程进行教学改革,构建了阶梯递进的课程实践教学体系,通过教学实践,

已取得了阶段性的成果。

1课程实践教学体系设计主要思路

1.1“任务驱动”教学模式

“任务驱动”教学模式符合探究式教学,它提出了由表及里、逐层深入的学习途径,便于学生循序渐进地学习知识和技能。“任务驱动”教学要求每次课都提出一个明确的任务,内容兼具趣味性和实用性。教师引导学生由简到繁、由易到难、循序渐进地完成这些任务,介绍所需知识点,弱化实用性不强的细节,突出重点内容。同时,教师围绕实现任务讲解和演示应用程序开发过程,介绍知识点的应用方法,使学生能够直观的理解难点内容,学习积极性大为提高。在这个过程中,学生会不断地获得成就感,可以最大限度地激发他们的求知欲望和学习兴趣,逐步形成良性循环,有利于培养开拓、探索、创新能力。

1.2阶梯递进教学模式

阶梯递进教学模式是指对一门课的教学在不同的阶段针对已设定的阶梯目标,以多种多样的且逐阶向上的形式开展教学,它是按照教学心理学和教学法理论,从学生心理、学习方法出发,涵盖学生自学能力和科学思维能力培养等全过程所设立的循序渐进的教学模式[1]。

作者简介:胡建荣(1963-),男,讲师,硕士,研究方向为计算机教学及计算机网络技术;罗杰红(1969-),女,副教授,硕士,研究方向为计算机应用技术及教学管理。

依据阶梯递进教学模式所构建的课程体系是:把课程教学的能力目标和知识目标划分成一个个阶梯式递进的小目标,达到目标是从易到难,从简单到复杂,从单一到综合的阶梯式递进,形成一个小目标体系,每一目标都是前一目标的进步阶梯。从能力目标和知识目标出发,充分应用高职高专“项目导向,任务引领”课程建设的方法,把课程教学内容作了优化整合,按照阶梯递进的设计思路,C语言程序设计课程实践教学体系的设计是以综合项目“学生成绩管理系统”为主线,贯穿顺序、选择、循环结构和数组、指针等所有章节中,课程实践教学具有连贯性。通过项目教学法,将C语言知识点都溶化到一个个任务的程序编写中,所以实践教学体系中的任务设计是非常重要的[2]。

1.3任务阶梯的设计思路

以“任务驱动”和“阶梯递进”为理念,把实践教学体系中的任务设计成阶梯递进的任务链,形成任务阶梯。任务阶梯是指按项目要求所设计的任务包括几个小任务,这几个小任务不是单独存在的,前一个任务的完成应该要为后一个任务的展开做好铺垫,几

个任务层层推进,最终完成一个综合的任务。也就是说,所设置的任务应该是一种阶梯型任务链,任务由简到繁,由易到难,再由高级任务涵盖初级任务,数个微型任务循环构成大的“任务链”。这些大大小小的任务共同完成教学实践项目,使教学呈现阶梯式层层递进的体系。

2课程实践教学体系设计主要内容

伟大的教育家陶行知先生说“教学做是一件事,不是三件事。我们要在做上教,在做上学”。也就是让学生边学边做,边做边理解。C语言程序设计的实践教学体系遵循“教学做一体化”的教学模式,构建以实现“学生成绩管理系统”项目为主的任务阶梯实践体系,整个实践教学体系序化为9个阶梯,形成一个从单一到综合、从简单到复杂的层层递进梯次结构体系。

针对“学生成绩管理系统”项目,在实践教学中将其分解重构为以下19项任务,这19项任务贯穿整个C语言的实践教学,形成了较完整的实训体系,如表1所示。

表1阶梯递进的C语言程序设计课程实践教学体系的设计

阶梯序号知识阶梯项目任务阶梯

1认识C语言学生成绩管理系统任务1

2顺序结构程序设计任务1、任务2、任务3

3选择结构程序设计任务4、任务5、任务6

4循环程序设计任务7、任务8、任务9、任务10、任务11

5数组应用任务12、任务13、任务14、任务15

6函数设计及应用任务16

7指针应用任务17

8结构体应用任务18

9文件应用任务19

表1中任务1-19具体内容如下。

任务1:编写计算某同学C语言总评成绩的程序(总评成绩的计算方法:总评成绩=平时成绩*0.4+期末成绩*0.6)。

任务2:计算某同学参加入学考试语文、数学和英语三科目总分。

任务3:计算某同学参加入学考试语文、数学和英语三科目平均分。

任务4:已知某同学期中各科考试成绩,请计算该同学的平均成绩,并输出各科成绩等级(90分以上为“A”级,80-89之间的为“B”级)。

任务5:已知某同学期中各科考试成绩,请输出该同学考试科目中的最高成绩。

任务6:输入某同学期中考试语文成绩,输出该同学各科成绩等级(90分以上为“优秀”,80-89之间的为“良好”,70-79之间的为“中等”,60-69之间的为“及格”,60以下为“不及格”)。

任务7:某同学参加了十门专业课考试,请编程求出该同学的专业课平均成绩。

任务8:某同学参加了十门专业课考试,请编程求出该同学的专业课中的最高成绩。

任务9:某同学参加了十门专业课考试,请编程求出该同学的专业课中的最高成绩和最低成绩。

任务10:某同学参加了十门专业课考试,请编程统计该同学的专业课成绩的优秀率。

任务11:某同学参加了十门专业课考试,请编程统计该同学的专业课的平均成绩。(以-1结束输入。)

任务12:某同学每一学年有十门课参加考试,编程计算该同学三学年以来每一学年的平均成绩。

任务13:某同学参加了十门专业课考试,请编程将该同学的专业课中成绩按高分到低分的顺序排列。

任务14:某同学每一学年有十门考试,编程计算该同学三学年以来所有课程的平均成绩。

任务15:某同学参加了十门专业课考试,请编程将该同学的专业课中成绩从高分到低分的顺序排列。如下表2所示。

表2成绩表排名

序号课程名称课程成绩/分

1C语言90

………………

任务16:某同学参加了十门专业课考试,请编程将该同学的专业课中成绩按高分到低分的顺序排列(应用函数设计程序)。

输入:89567898764490806573

输出(如下格式):

****************************************

989089807876 73655644

****************************************

任务17:某同学参加了十门专业课考试,请编程将该同学的专业课中成绩按高分到低分的顺序排列(应用指针设计程序)。

输入:89567898764490806573

输出(如下格式):

****************************************

989089807876 73655644

****************************************

任务18:计应07班有50名学生,每名学生一学年学习十门专业课,请编程将全班同学的专业课平均成绩按从高分到低分的顺序排列(应用结构体设计程序)。

任务19:计应07班有50名学生,每名学生一学年学习十门专业课,请编程将全班同学的专业课平均成绩按从高分到低分的顺序排列(应用文件设计程序)。

3结语

通过教学实践表明,基于“任务驱动”阶梯递进的C语言程序设计课程实践教学体系倡导教师的“教”是前提、学生的“学”是主体、学生的“做”是实践,实践体系设计形成了一个从单一到综合、从简单到复杂的体系,使“教、学、做”有机的结合,有效的避免了教与学、学与做等环节的脱节,实现理论学习与实际应用的“零距离”,从而提高了学生C语言综合应用开发能力。

参考文献:

[1] 王良春. 阶梯式人才培养模式在高技能人才培养中的应用[J]. 教育与职业,2007(23):42-43.

[2] 孙庚. 项目教学法在“C++程序设计”课程教学中的实践[J]. 计算机教育,2008(2):51-54.

Design of Practical Teaching System of Higher Vocational Course of Programming with C

HU Jian-rong, LUO Jie-hong

(Guangdong Textile Polytechnic Institute,Foshan 528000, China)

篇8

关键词:C语言;教学;程序设计

中图分类号:G642文献标识码:A文章编号:1009-3044(2012)21-5137-02

进入21世纪以来,随着我国市场经济的不断发展和深入,越来越多的人投入到计算机这个新兴的、高速发展的行业中来,编程领域已经成为我国国民经济中极富有生命力和创造力的重要行业之一。但是我国的C语言程序设计发展水平和C语言的教学水平与国外相比还比较低,对提高C语言程序设计教学的有益性的认识与发达国家相比还有很大的差距。该文主要通过分析C语言编程技术在程序设计的教学中所具有的优势与劣势,对其应用过程中所产生的问题进行阐述,进而对其应用的意义进行分析,以求使更多的学校能够加入到C语言程序设计的教学大军中来,以使C语言程序设计教学能够更好的发挥优势。

1 C语言程序设计教学简述

1.1 C语言程序设计的步骤

程序设计的五部分:1)分析问题。确定输入和输出的数据的描述和表示。即确定数据结构。2)设计算法。确定某个问题由多少个步骤完成。即确定算法。3)编码。用计算机语言编写程序代码,即编程。4)调试程序。消除逻辑错误和语法错误。5)整理并写出文档资料。

1.2 C语言程序设计的注意事项

符号命名要有含义,必须便于对程序功能的理解。在源程序中,极功能性注释。书写代码,在一行内只写一条语句。编写的程序应优先考虑清晰性,除非对效率有特殊的要求。首先要保证程序的正确。然后才要求提高速度。输入数据时,最好使用结束标志。(如回车\n)输入与输出要有提示语句。不要修补不好的程序,要重新编写。

1.3 C语言程序的三种基本结构

1)顺序结构

先执行A,再执行B。一串指令严格地按照某一个序列依次向下执行先……然后……再……最后。2)选择结构

存在某条件P,若P为真,则执行A,否则执行B。

3)循环结构

当循环条件P成立时(T) ,则重复执行语句A,当循环条件P为“假”(F)时,则终止循环.

1.4 C语言程序构成格式的设计

C语言程序规定必须用main作为主函数,main函数后的对花括号不能省略。一个C语言源程序文件中可包含任意多个不同名的函数,但有且只有一个主函数(main函数)。一个C程序总是从main()函数的第一个“{”开始执行,至main()函数的最后第一个“}”结束。每个函数都必须有一对“{”和“}”,左“{”表示开始,右“}”表示结束。每条语句都要以“;”结束,分号是C语言语句的一部分,不是语句之间的分隔符。注释以“/*”开始,以“*/”结束。(一个好的源程序应该有详尽的注释)。其中,注释不参与程序的编译,不参与程序的运行。

1.5 C语言程序设计的书写规则

C语言的书写格式自由。一行内可写多条语句,一条语句也可分写在多行上。C语言没有行号,每条语句和数据定义的最后必须有一个分号。注:程序的最后也应包含一个分号为了保证程序的准确性和可读性建议在书写程序时,应釆用阶梯缩进格式。C语言规定。可以在语句中的任何一个分隔符或空格处换行。即一行写不完时,可以在任何一个空格处换行。

2 C语言编程技术在程序设计的教学中所具有的优势

2.1简单

与C++等语言相比较,语法上的C语言是简单的,这是因为其垃圾回收机制与异常捕获机制使其代码的复杂性大大降低。因此学校的教学人员不需具备较为复杂的计算机知识,就能更加容易的编出准确的、符合教学所需要的程序,因而在面对学生的教学时也就能够做到使更多的人容易学会C语言。

例: # include < stdio.h >

main()

{

char ch1, ch2;

ch1=‘A’;

ch2=‘a’;

ch1=ch1+32; ch2=ch2+3;

printf(“%c %d%c %d\n”, ch1, ch1, ch2, ch2 );

}

结果:a97d100

2.2 C语言运行速度较快

由于C语言的编译原理较为简单,因而其运行时的速度在所有高级的编程语言中效率时最高的。因此在学生进行实际的编程过程中,能够在课堂上及时的检测自己的程序是否会出现相应的问题,这样运行速度较快的语言的编译在课堂教学中能够节约更多的时间,使教学结构更加紧凑。

3 C语言编程技术在程序设计的教学中所具有的劣势

3.1关于函数的学习内容较为繁琐

函数:一段可以被反复执行,功能单一且独立的程序段.(一段子程序)。功能:用于完成特定的任务或功能,并根据需要返回一个确定的状态值。我们把这一段程序或子程序称为一个函数,也称之为一个模块,把分模块的程序设计称为模式块化程序设计(特点:自顶向下,逐步分解)。但是由于其具有的多种类型及相对复杂语法,因而在教学中相对较难。

3.2学习周期较长

C语言的学习主要要学习的内容分为:C语言词法、输入与输出、程序设计、循环结构、数组、指针、函数几个部分,由于其内容相对较多,因而在实际的教学过程中需要一个较长的周期。

4 C语言程序设计教学的有益性

C语言教学在学校教学的总体成本中占有不小的比重,对学校的计算机教学来说是一个非常重要的组成部分。因而将C语言技术更好的融入教学,对于学校计算机教学的长远发展,有着重要的意义。

4.1降低教学成本,提高学生学习的积极性

由于C语言的运行所需的计算机的配置不需太高,因而在无形中为学校的设备开支省下了很大一笔费用。又由于C语言是所有编程语言教学的基础,因而其相对简单、有规律性的词法能够使得更多的学生在学习中不会感到太过吃力,因而在学有余力的时候能够激发兴趣进行进一步的、深入的学习。

4.2提高了学校计算机教学的质量和总体竞争力

C语言的教学水平的高低直接影响着学校计算机编程语言教学的水平,进而影响其教学的质量。而C语言程序设计教学水平的提高标志着整个学习编程语言教学的基础水平,因而加强其教育,能够更好的彰显学校的编程语言教学水平。

4.3使学生学有所用

无论教学的内容如何,最基本的一点还是应该以让学生学到知识为前提。因为如果学者没有应有的基础知识,无论什么样的教学方法改进都是妄谈。而C语言的教学不是一个教学的断层,而是一个编程学习的基础,因而进行C语言程序设计的学习后,学生能够有更多的机会进行深入的其他语言的学习。并且在以后的生活、工作中,C语言的运用十分普遍,这有利于学生将所学的知识更好的学以致用。

5结束语

C语言程序设计的教学促进了我国计算机编程语言的发展,更促进了新的计算机编程语言的形成。C语言的教学也使得更多的学生以此为基础,能够更好的进行深入的其他语言的学习。

参考文献:

[1]李敏文.C语言程序设计教学的有益性的分析与设计[J].邯郸职业技术学院学报,2007(2) .

篇9

关键词: 分层教学; 自动评测系统; 程序设计; 以学生为中心

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2015)11-90-03

Abstract: On the basis of full investigation of many of the lack in current teaching and learning of computer programming course, a hierarchical teaching mode is proposed based on the teaching practice, namely the enlightening, advancing, improving and excellence selecting four levels, and its effect is evaluated. The hierarchical teaching mode can effectively stimulate students' professional learning interest, enhance the coherence between the professional courses, make computer programming course to play an aggregation role in between the various courses. The automatic evaluation system of programming ability training maximizes the liberation of the teacher's workload of mechanical correction. The hierarchical teaching mode reflects the student-centered teaching idea, improves the students' programming ability and social competitiveness.

Key words: hierarchical teaching mode; automatic evaluation system; programming language; student-centered

0 引言

信息社会的高速发展,软硬件产品及服务的朝夕瞬变,使高素质程序设计人才需求与日剧增,高校的计算机专业人才培养也时刻面临更新更高的要求。在计算机学科知识体系中,计算机程序设计类课程具有启蒙、衔接和聚核的作用。对计算机专业的学生来说,在程序设计过程中贯穿阅读判断、分析思考、抽象表达、综合创造等多项技能[1]。因此,如何提高大学生程序设计能力一直是计算机专业教师研究和考虑的问题。

1 现状分析

基于多年的程序设计课程教授经历,我们归纳总结了大学生程序设计能力培养和训练方面存在的一些问题或不足。

⑴ 实践环节时间太少。

⑵ 传统教学手段不适合程序设计课程,学生处于被动学习状态。

⑶ 教师人工判题评阅课后作业、上机实验报告以及试卷的负担沉重,而且对学生来说时效性差,学习效果受到影响。

⑷ 相关课程多但课程之间联系少。

⑸ 目前的学生课程评价体系不够完善。

2 具体改革内容

著名的教育学家Gagné R.M说过:“教育的中心目标就是教会人们思考,运用他们的理性,成为更好的问题解决者[2]。”针对以上的不足点,结合目前我校计算机专业的教学规划和学生不同阶段程序设计能力特点,我们设计了如下层次教育模式,并初见成效。

2.1 层次化教育模式

启蒙层次(第一学期):目标是使一年级的学生具备基本的程序设计能力,掌握一些基础算法,知晓如何编写程序解决一些生活和科学的问题。

进阶层次(第二学期,第三学期,第四学期):目标是通过与数据结构课程的衔接和渗透,让学生理解数据结构的本质。强化学生的计算思维,引导解决综合型系统级别的应用型问题。

衔接层次(第五学期,小学期实践):目标通过与软件工程课程的衔接和渗透,培养学生的综合程序设计能力,让学生具有利用程序解决综合性问题的能力。

拔优层次(二年级,三年级):目标是培养学生创新能力。从对程序设计感兴趣的学生中选拔出一批算法运用设计能力较强的学生,进行ACM竞赛训练,以及更高级算法的学习和训练,培养出一批具有榜样作用的创新人才。

2.2 程序在线评测激励系统及其模式的建立

培养程序设计能力的关键是动手编程实践,一般程序设计类课程实验课与理论课的比例是1:1,从教学安排上,实践类课时已经很多了,但是仅靠课时要真正掌握好一门程序设计类课程是远远不够的。虽然绝大部分学生都较重视理论课的学习,但课内实验就不那么理想了。

根据实际教学的情况,我们设计了程序在线评测激励系统化训练平台。根据不同层次需求,配置了不同内容的题库和具体机制。我们将其用于实际教学中发现,这个作为学生练习程序编制的平台,在提高学生编程水平的同时,大大减少了教师的工作量;而且较之人工,机器自动评测更具严格性和客观性。同时加入了激励策略,轻松激发了学生的学习兴趣。如:提交解答后系统会对提交的代码自动进行评判,并同时给出时间占用和内存占用等相关信息,如果排名在前三,就给予首页彩带滚屏奖励,提升学生的自我荣誉感。又或给予学绩考核的额外加分等。

在线评测系统的工作流程如图1所示。学生提交一个程序源代码后,评测程序就对代码进行编译,然后执行,将执行结果和评测系统后台正确的测试数据进行比较,如果答案和后台数据完全相同则AC(Accept),说明你的程序是正确的;否则返回错误信息,对不同的错误类型给出不同的提示。同时源代码的评测结果保存到系统数据库中。教师如需要结果列表,也可一次性导出。

目前程序设计的教学过程中很需要这样的自动评测平台。它既减轻了教师繁重的程序代码批改工作量,也可更客观和高效地给出评判结果。国际最重要的程序设计大赛ACM-ICPC[4]使用的就是这样的模块来测评结果。在实际教学中我们也真实地感受到了这个系统带给我们教师的便捷,学生也体会到了实时高效评测的兴奋和成就感。

2.3 构建软件设计课程群[3]

程序类课程教学中重视语法结构和案例,很少能从程序设计的基本方法和思想进行引导,使学生停留在照样画瓢的程度,缺少抽象思维、逻辑思维能力,难以编程解决实际问题。我们希望在学生掌握程序设计过程中激发起学生的软件工程兴趣。因此,在本学年新一阶段的程序设计课程中,安排软件工程的原理讨论。讨论的目的当然不是代替独立的软件工程课程,而是将基本的软件工程原理引入早期的学习中,让学生能更好地为以后正式参与项目开发做好准备;同时起到一个承上启下的衔接作用。如果一开始就将逻辑简单清晰、易读易懂作为程序编写的一个重要标准,学生就不会在以后被强迫忘却坏习惯和重新学习。他们能在以后的课程中更好地理解软件的涵义,了解软件开发的过程。

以下是主要的实施环节。

⑴ 按照上面构建的程序设计能力层次化教育模式的框架,制定出每个层面的教学目标、教学大纲,汇聚有层次差别的各种教学资源。

⑵ 在线训练激励系统与学生实践评价体系相配合。及时激励先进,树立榜样。

⑶ 配置有层次化的学习辅导及习题集资料。丰富目前BlackBoard网络教学平台上内容的质与量。

⑷ 软件工程环境映衬整个程序设计课程的教学环节。

3 结束语

本文研究了分层化教学改革,我们的总体目标是针对程序设计能力培养的启蒙入门、发展提高和开发应用三个阶段,研究和设计软件程序设计课程体系的分阶段学习模式,建立以任务驱动的课外程序设计激励机制,实现大学四年平均每位学生累计达到1万行程序编写量,并能独立完成千行以上的较大规模的程序设计。

我院从2009年开始就在探索学生程序层次化教育的培养模式,就前面讲到的第四层次的学生群的实践来看,已经积累了一定的经验。在这些比较出色的程序设计的爱好者中,我们挑选了部分学生每年参加ACM-ICPC国际大学生程序设计竞赛[4-5]。其作为世界最高水平的竞赛,有独特的氛围和形式,吸引了无数爱好者,也锻炼了一大批具有超强问题求解能力的人才。其中在2014年9-11月的比赛中,我院的队伍获得了亚洲赛区的5个铜奖。由于在ACM比赛中近几年的良好赛绩以及学生高涨的ACM热情,我院还在2015年3月承办了首届全国中医院校程序设计竞赛,采用的就是ACM-ICPC的竞赛规则与形式。接继这样的成果,我们接下来准备将层次细化到其他相关专业课程,希望通过这样的实施过程,能达到预期的最大化目标。

参考文献(References):

[1] 韩建民,王丽侠,贾s.大学生程序设计能力的层次化培养模

式[J].计算机教育,2012.3:15-18,22

[2] Jonassen, D.H. Toward a Design Theory of Problem

Solving[J]. Educational Technology: Research & Development,2000.48(4):63-85

[3] 傅川,沈鑫,蒋巍巍.软件工程环境下的C程序设计课程教学[J].

计算机教育,2011.13:96-99

[4] Wikipedia. ACM International Collegiate Programming

Contest[EB/OL]. https:///wiki/ACM_

International_Collegiate_Programming_Contest.2015

篇10

【关键词】C语言程序设计 多元化教学法 因材施教 非计算机专业

目前,大部分高职院校都开设了计算机公共课,我校根据学生的实际需要,为文科专业开设了计算机应用基础、网页设计课程;为理工科专业开设了计算机应用基础、C语言程序设计等课程。本人所从事的是机电、数控类专业《C语言程序设计》课程的教学。作为一门专业基础课,它面向的是非计算机专业的学生。结合多年的教学实践,本人对本课程的课改方面也作了探索。

一、研究学生现状,确定教学目标

在学习《C语言程序设计》之前,学生已学习了《计算机应用基础》,已有一定的计算机基本操作能力。但是,对于程序设计,学生之前并没有接触过,而且,对于高职学生而言,教学内容确实比较难。因此,本人在第一次教授本课程时就不敢掉以轻心,每天认真备课,钻研教材,研究教法,以便上好每堂课。然而,学生仍旧抱怨课程枯燥难懂,课堂反应一般。经过多方面研究以及通过请教同行,本人才意识到,在教学过程中,面对手中的书和学生,我都没能把他们放在应有的位置上,只是一味地按照教科书的节奏和内容强行灌输给学生,根本没有去研究他们到底需要什么?不需要什么?怎样讲课才是他们最容易接受的?针对上述情况,我作了以下分析。首先,我面对的是高职学校的学生,他们进校时学习成绩一般,基础知识掌握程度相对较差,学习习惯也不好,学习上不够主动。而开始我对他们的要求过高,上课节奏太快,没有等他们将一个知识点理解透透彻就急忙赶到了下一个知识点,这样导致了学生越来越听不懂,上课像听“天书”。因此,研究学生的实际情况是确定教学目标的首要任务。其次,研究本课程对本专业的作用也是确定教学目标的关键。机电、数控类专业的学生学习《C语言程序设计》课程并不是要在今后能编写C语言程序,而是学习一些编程方法,为以后学习数控编程打好基础。因此,并不需要像要求计算机专业的学生一样能准确无误地写出每一条代码,只要能读懂程序,并且在遇到一个问题时能分析问题,画出流程图。这样,难度就降低了不少,学生不再觉得每堂课都是在听“天书”。同一门课程,面对不同类型的学生,若不研究和考虑他们的实际需求,而只是从教材出发,是绝对不可取的。

二、因材施教,设计课程内容

在确定教学目标后,本人对教学内容作了一些修改和完善。

(一)内容精简,实例广泛

对于机电、数控类学生而言,不需要学得太广泛,内容“够用”就好。因此,突出了流程控制、数组、函数、指针、结构体等核心内容的教学,削弱了枚举、位运算、宏定义等非核心内容的教授。为加强C语言与机电、数控类专业知识的联系,在实例讲解时除了比较大小、电文译、排序等类型实例外,还增加了具有专业特色的实例,例如:设计一个红绿灯自动变化(红灯:2秒;绿灯:3秒;黄灯:1秒)程序实例。

(二)理论与实践相结合

理论与实践互相依托,密不可分。经过一段理论知识的学习以后,很多学生只能将课堂上讲解的程序一字不漏地输入电脑,甚至还把程序抄错,编译时出现的语法问题自己不能解决,要依靠老师替他解决。针对这一现象,本人决定在每次上机实践前将典型错例错误提示信息、错误原因分析等编成错误小结发给学生,尽量使学生能独立完成实践课。上机结束前总结学生出现的常见错误,使其加深够印象,在下次上机时能够避免。

(三)多方位学习资源

本课程是校级精品课程,校方制作了精品课程网页放到了学校网站中。学生可以通过注册用户下载电子课件、上机实践指导、上课视频等教学资源以便课后学习,也可以在学习论坛中提问或与其他老师、同学讨论问题,交流心得。

三、组合多元化教学方法,改善教学效果。

多年来,我校的C语言教学模式一直比较传统,主要以教师讲授为主,学生往往处于被动接受知识的状态,学生虽然学完了全部内容,但离开老师的帮助,拿到具体问题还是无从下手。本人经过多年教学经验,总结了几种行之有效的教学方法,并结合机电、数控的学科特点,在C语言教学中运用尝试。

(一)提问教学法

本人在教学过程中发现,经过一段时间的学习,学生往往提不出问题。然而,问题是最好的老师,没有问题便没有深入。作为教师就要在教学过程中,引导学生发现问题,然后留给学生思考、讨论的时间,之后解决问题,从而更深入地展开学习。

例如,当学习数组时,教师先设置问题:编程计算10个学生的语文平均成绩。学生根据以前的所学会想到:需要定义10个类型相同的变量用于存放这些成绩。再进一步要求:计算50个学生的语文平均成绩。这时学生就会考虑到,如果按照以前的方法,问题将会变得很复杂,有没有更合理的定义方法呢?此时,当教师引出数组的概念,分析数组的性质时,学生不仅能很容易记住数组的性质,还能知道在什么情况下使用数组类型。这一环扣一环的提问,能激发学生探索的欲望,使学习不再是枯燥、复杂的理论说教,事半功倍。

(二)分段教学法

高职学生学习基础差,接受能力也一般,而C语言课程本身就比较难学,要求他们一开始就能自己编程几乎是不可能的,只能“慢慢来”。

分段教学就是让学生由易到难地学习。第一步,读程序。将相关程序通读一遍,并且为每一条不熟悉的语句写上注释,标明这条语句是干什么用的?为什么用它?要注意些什么?这些过程虽然烦琐,但坚持下来,学习效果还是比较明显的,经过一段时间的训练后,学生基本上可以读懂的程序了。第二步,改程序。将读过的程序功能改一改,改写算法,这一阶段实际上是算法分解组合的过程,学生在这个过程中,能收获很多知识。最后一步,编程序。有了前两步的基础,编程就不再是那么“恐怖”的事了。但一开始,老师还是要适当地给一些提示,锻炼机会多了以后,在老师没有提示的情况下,大部分学生对程序都能有一个大概的思路,对于机电、数控专业的学生而言已经足够了,也有同学可以编写出完整的程序。对于一些学习能力较强的学生,鼓励他们用不同的方法实现同一功能,这样可以加深学生对理论知识的理解,提高融会贯通和举一反三的能力。实践证明,分段教学法是可取的,教学效果是明显的。

(三)案例教学法

传统教学中,C语言的例题虽然很多,但是相对比较独立、零散,没有层层递进的连续性。案例教学法是将实例的功能由小到大、由简到全,各知识点因新增的功能需要被引入教学。

例如,在讲授“结构类型数据”时,设计如下案例:

案例一:定义一个实型变量gz,从键盘输入,如果大于等于500,则输出其值,否则输出信息:“最低工资不得少于500”;

案例二:定义一个描述职工工号(gh)、姓名(xm)、工资(gz)的结构类型gongren,并定义一个gongren类型变量gr1,并赋初值,如果gr1的工资在500以上,则输出:“××(姓名)的工资是××”,否则输出信息:“最低工资不得少于500”。

案例三:定义6个gongren型变量gr1、gr2、gr3、gr4、gr5、gr6,并从键盘输入其值,输出平均工资及工资最高的职工信息。

从案例的设计中可以知道:案例一所用的知识点是学生已掌握的,所以作为“温故”,由学生自己完成;案例二涉及了结构类型数据的使用,在教师辅导和相关资料的指导下,学生对结构类型已基本了解,此时,作为“新知”让学生在简单的案例中实践;案例三为了让学生灵活运用知识解决实际问题,在“新知”的基础上进一步“巩固”相关知识。这样层层推进,使学生每一步学习都有基础,是循序渐进、螺旋式上升的过程,使学生在不断探索中完成学习任务,激发学生的学习兴趣,增强学生的自信心。

四、结论

2010-2011学年第一学期,本人按此教学模式实施了教学活动。经过了一学期的实践发现,此教学模式能有效解决我校C语言教学中存在的问题。以上是本人在非计算机专业《C语言程序设计》课程教学中的一点经验和总结,实际上在教学过程中应注意的问题还有很多。总之,只有根据实际情况采用合适的教学模式和教学方法,才能取得最佳的教学效果。

参考文献:

[1] 谢延红.C语言程序设计公共课教学模式改革与实践[J].计算机时代:2010,12:45-46.

[2] 龚静,曾建一.多元教学法在高职《C语言程序设计》课程教学中的实践[J].职业教育研究:2010,4:90-91.

[3] 蔡艳婧.C语言程序设计教学方法探析[J].福建电脑:2008,5:213,209.

[4] 蒋漱清.高职非会计专业《会计学》课程改革探讨研究.科苑学谭:2010,3(2):24-27.