首页 > 文章中心 > c程序设计语言

c程序设计语言

开篇:润墨网以专业的文秘视角,为您筛选了八篇c程序设计语言范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

c程序设计语言范文第1篇

【关键词】C程序设计语言;程序设计;教学方法

每门学科都有其自身的规律和特点,C语言也不例外。由于其规则复杂,算法灵活多样,许多初学者感到难于理解和接受,表现为设计程序时无从下手等。

如何才能让学生更快更好地学习C语言,我根据自己的教学实践总结出一点心得,与大家探讨。

1.循序渐进多次重复不断深化

无论学习哪一门语言课程,开始都会碰到一系列的新概念、数据类型、常量、变量、基本语句和设计方法等,这些内容对于刚刚开始学习编写程序的学生来说,是很难理解的。为此,对一些重要的、容易混淆的概念,在讲授时应采取多次重复的方法,碰到时,教师可以以提问的形式抽查学生的掌握情况,通过多次提问、反复纠正,使学生逐步理解。

2.采用启发、引导的教学方式

2.1 以兴趣带学习

与其他课程一样,要教好C语言,关键在于激发学生的学习兴趣,让学生主动、愉快地学习,满足他们的求知欲,才能取得良好的教学效果。

例如在讲递归问题时,这个知识点难度大,学生不容易理解。为了激发学生的兴趣,可先带领学生玩一个“汉诺塔”的游戏,即拿出事先准备好的三根小棍儿,最左边的棍子上,自上而下按照由小到大的顺序串着由5个圆饼构成的塔。要求学生将这5个圆饼全部移到最右边的棍子上,而且要满足两个条件:(1)一次只允许移动一个圆饼;(2)不允许把大的放在小的上。“汉诺塔问题”是典型的函数递归问题,在游戏中使学生体会递归问题就在我们身边,从而消除了畏惧心理,使学生初步掌握递归算法在程序设计中的应用,扩展学生的编程思路,提高学生的编程兴趣。

2.2 设置疑难问题,引导学生思考

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

例如,在讲数组的概念时,可先设置问题:编程计算5个人的C语言平均成绩。根据以前所学,学生会想到:需要说明5个类型相同的变量用于存放这5个人的C语言成绩。进一步要求计算50个人的C语言平均成绩,这时候如再说明50个变量,则会将问题复杂化,需要讨论该如何合理说明变量。再若需要求100个人的C语言平均成绩呢?此时,引出数组的概念、分析数组的性质,学生不仅能够很容易接受,还能够知道在什么情况下使用数组类型,取得事半功倍的效果。

2.3 教给学生正确的学习方法

例:从键盘输入任意两个整数,按由小到大的顺序输出。

写出程序之前首先需要进行以下分析:

①要解决问题,需要定义几个变量,变量的类型如何确定。

②变量没有值可以吗?如何给变量提供值。

③比较两个值的大小。

④输出结果。

将③深入:

如何比较a,b的大小?问题可描述为:若a小于b,将a、b直接输出;若a大于b,则将a、b交换后输出;这时引导学生思考能不能将a、b中的数据直接交换?直接交换会出现什么问题?得出要交换两个变量的值必须借助一个中间变量。

将以上4步细化为:

①需要定义三个变量,分别为:a,b,t;根据题目要求其类型应为整型(int)。

②a、b有值才能比较大小,如何从键盘给它们提供值?学生自然会想到scanf()。

③两个数比较大小。

④输出a、b的值。

这种方法可以引导学生了解程序设计的思路和方法,有助于把握问题全局、分阶段深入细化,使得每个阶段的问题都在容易理解和处理的范围内,使学生在遇到问题时不会感到无从下手。

2.4 对学生要以鼓励为主

学生普遍希望能够体现自我价值,受人尊重。教学中及时鼓励学生,肯定成绩,指出优点,表扬进步,有利于调动学生学习的积极性。在这几年的教学实践中我深刻体会到:即使成绩再差,老师只要发现并及时表扬其优点,学生会逐渐对所学课程产生兴趣,提高学习的自觉性,最终取得比较好的效果。

3.培养学生综合运用知识及动手能力

程序设计课程的实践性很强,学生只听不练根本达不到学习该课程的目的,必须通过布置课堂练习,让学生在完成任务的过程中,培养分析问题、解决问题和独立探索的能力。好的练习可以巩固知识,锻炼学生处理问题的能力。因此,练习的设计至关重要。老师在设计选题时,应使选题既接近实际需要,又能引起学生的兴趣,使学生能够运用所学知识解决问题。最后,可以通过学生的完成情况,让做得好的学生讲解思路,演示过程,激发学生学习的兴趣。

4.运用现代教学手段,进行多媒体教学

对于一些抽象的、学生难以接受和理解的语句和算法,利用多媒体教学的优势,进行通俗易懂的讲解和演示,增强学生的直观感觉,方便理解,起到事半功倍的作用。例如在讲循环结构时,学生很难理解三种循环的区别,通过制作多媒体课件模拟三种循环的执行过程,使学生对它们的结构和区别一目了然。另如在分析用选择法和冒泡法进行排序时,可以用Flash制作一个由若干个人按大小个儿排队的动画过程,模拟选择法和冒泡法排序的执行,以达到将抽象问题形象化、枯燥问题生动化的效果。

以上只是自己的一点经验体会,实际上在教学过程中应注意的问题还有很多。一个C程序设计教师要想教好该课程,其关键就在于对教学内容(教什么)和教学方法(如何教)进行合理的组合,但现实中由于教学目的、教学内容及学生情况等因素的千差万别,没有哪一种教学模式或方法是普遍适用的,惟一的原则就是根据实际情况采用合适的教学模式和教学方法。

参考文献

[1]陈守智.程序设计教学的改革与探索[J].华北工学院学报(社科版),2002,2.

c程序设计语言范文第2篇

摘要:本文在分析了C语言程序设计课程的教学现状和教学困境的基础上,对比自然语言和程序设计语言的共性以及C语言的特殊性,提出了“从概念入手,侧重程序阅读和程序设计能力培养”而非“语法研究”的教学角度。

关键词:C语言;程序设计;教学内容;教学角度

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

1教学现状

在高等学校的本科教育中,“C语言程序设计”几乎成了所有专业的必开课程,从计算机科学与技术、软件工程、网络工程等相关专业,到电子信息类理工科各专业,乃至理工科院校的所有非计算机专业,有的是专业基础课,有的是公共必修基础课,有的是“非计算机专业的计算机基础课”。只是课程名稍有差异,常见的有“C语言程序设计”、“高级语言程序设计”、“C语言”、“C程序设计”、“结构化程序设计”等。无论叫什么样的课程名,也无论是哪类专业,其课程的教学要求和教材选用却无太大差别,只是课时分配差异较大。

从网络调查的16所不同类型高校的“C语言程序设计”教学大纲看,普遍都包含“通过本课程的学习,使学生了解有关程序设计的基本概念、术语及C语言的特点,掌握C语言基本数据类型、语法规则、程序控制结构、常用的标准库函数,培养学生的程序设计技能,初步积累编程经验”的教学基本要求;约百分之八十左右的“C语言程序设计”课程都选用由谭浩强主编、清华大学出版社出版的“C程序设计”作为主教材;课时分配从30~108课时不等,其中80课时以上的多为应用型本科院校的计算机相关专业以及综合性大学的非计算机专业,理论课时与实验课时的比例一般为1:1到1:1.2。与此同时,其他专业基础课(如计算机组成原理、操作系统、数据结构等)的课时一般为54课时,最多不超过72学时。相比之下,“C语言程序设计”所占课时是其他专业基础课的1.5倍至2倍。

从教学目的看,非计算机专业的“C语言程序设计”课程主要目的是“掌握语法规则和程序结构,具备一定的程序设计能力”,而计算机相关专业的“C语言程序设计”课的教学目的则要分为三个层次,一是使学生全面理解计算机程序设计语言的基本内容和结构;二是通过算法掌握程序设计的基本方法和步骤,并具备一定的程序设计能力;三是为后续课程的算法描述和其他程序设计语言的学习奠定基础。

2教学误区

从以上的教学现状(特别是课时分配)看,长期以来,“C语言程序设计”的课程教学存在“教学内容背离教学要求和教学目的”的误区,主要表现在教材误区、讲授误区和考核误区三个方面。

2.1教材误区

国内高校的“C语言程序设计”课大多选用谭浩强主编、清华大学出版社出版的“C程序设计”[1]为主教材,目前使用的是2005年7月修订出版的第三版,教材共363页,主体内容分为14章,其中,第3章的数据类型与表达式占用30页,第4章的格式输入输出占用12页,前9章共占用218页,后5章共占用145页。占用如此大篇幅的原因是教材中除了介绍相关语法格式外,还增加了相当多“特殊格式”和“特殊情况”的解释和说明,因此,该教材的最大优点就是“内容详尽、解释清晰”。然而,对于初学者来说,学习计算机程序设计语言就是为了“为计算机描述求解问题的过程”,过于详细但又远离现实问题的“特殊格式”和“特殊情况”的解释,使得学习内容复杂化,增加了程序设计语言学习的难度,误导了学习者的学习重点,由此也赋予了该教材无法掩饰的缺点,那就是教材编写的指导思想和教材内容的组织脱离了高校各专业“C语言程序设计”课程的教学目标,过分强调语法细节而忽略了程序设计语言的“正向表达能力”的应用,过分强调“语言的灵活性”而导致教材主体内容的“复杂化”,从而误导“C语言程序设计”课程的教学内容朝着“重语法学习、轻算法描述”的“语言研究”方向发展。

2.2讲授误区

由于教材内容的“复杂”,课堂讲授自然需要较多课时,教学重点当然也放在了“语法研究”上。从网上下载的“C程序设计(第三版)”的配套教学课件以及有关院校的“C语言程序设计”教学课件的内容组织上可以清楚的给出以上判断。“语法研究”型的课堂讲授,更加放大了教材对“C语言程序设计”课程内容的“扭曲”程度,给学生提供了错误的程序设计语言学习方法,把简单问题复杂化,更为严重的是,挫伤了学生学习计算机程序设计语言的兴趣和积极性,把本应“主动学习”的课程成引入了“被动学习”的歧途,直接导致“懂语法、会做题,但不会编程序”的教学后果。

2.3考核误区

多年来,“C语言程序设计”的主体考试内容就是“语法”,无论是选择题、填空题还是程序阅读题,大多都无法逃脱“语法”的束缚。考试方式以笔试为主。这在某种程度上肯定了“语言研究”的教学角度,促使“C语言程序设计”的教学重点更向“语法研究”的方向倾斜,最终误入“增加课时,强化语法,还是不会编程序”的怪圈。

3应有的教学角度

按照网上调查的各专业教学大纲中“培养具有一定程序设计能力”的教学目的,“C语言程序设计”课程的教学落脚点应该更确切的理解为培养“能用程序设计语言描述求解问题过程”的一般程序设计者,而不是造就“全面掌握程序设计语言语法、能设计高效、难懂程序”的程序设计语言方面的“作家”。因此,“C语言程序设计”课程教学相当于自然语言中的“基本语言能力”教学,而不是“语言研究”或“高级写作”能力培养。

3.1自然语言与计算机程序设计语言

计算机程序设计语言是用人和计算机都能识别的方式描述计算机求解问题过程的过程描述语言,它具有和人所使用的自然语言相同或相似的组成和结构特点,对于已经掌握了至少一门自然语言(比如汉语或英语)并具备一定文化程度的人来说,学习一种计算机程序设计语言并非难事。自然语言的基本组成包括符号集合、字、词、句、数据及其运算规则等基本要素,学习过程包括认识符号、发音、识字、组词、学语法并造句、学文法并写短文、练习写文章等基本阶段,在具备了基本的语言能力之后,扩充词汇量和提高写作能力将成为终身学习的基本内容。按照自然语言的基本组成和学习过程,也可将计算机程序设计语言的基本组成归纳为字符集、标识符(常量、变量、保留字等)、数据类型、运算符、表达式、语句、程序格式等基本要素,其中,字符集和数据类型是定义程序设计语言的基础,字符按一定规则组成标识符,用来充当常量名、变量名或其他标识,在自然语言中被人们公认的特殊标识符被赋予特定的语言含义,专门为语言系统所用(用户不得再次定义其意义),称为保留字;字符集中的特殊符号(如+、-、*、/)被赋予特定的运算意义(如加、减、乘、除)称为运算符;不同数据类型的常量、变量用运算符按一定规则连接起来组成的式子就构成表达式;将特定的保留字与表达式等语言要素按照语法规则组合起来就形成相应的语句;将语句按照要描述的求解问题的逻辑顺序排列起来,就构成了某种程序设计语言求解特定问题的一段程序。

3.2C语言的特殊性

一方面,C语言是程序设计语言的一种,具备一般程序设计语言的基本组成要素和结构特点。另一方面,C语言能成为面向过程的结构化程序设计语言的代表,也有其自身的特殊性。首先,C语言的数据类型极为丰富。除了基本数据类型外,还有构造类型、指针类型、空类型和用户自定义类型,其中,构造类型包括数组、结构体(struct)、共用体(union)和枚举类型(enum)等四种数据结构。其次,C语言具有位操作能力。除了能够对各类变量进行操作外,C语言还具备“按位”进行逻辑“与”、“或”、“非”、“异或”运算和“左”、“右”移位运算,这使得C语言具备了更强的系统开发能力。第三,C语言具有显著的结构化程序设计能力,并通过完整的函数定义来实现。第四,C语言的最大特点就是“语法限制不严,解释灵活”。第五,C语言允许直接访问物理地址,可直接对硬件端口进行操作。第六,C语言没有输入/输出语句,信息输入/输出功能由标准函数库中相应的I/O函数来完成。

C语言的这些特殊性,决定了C语言的教、学过程不同于其他程序设计语言的教学过程。

3.3C语言的教学角度

根据一般程序设计语言的基本组成与结构特点,结合C语言的特殊性,“C语言程序设计”课程的教学角度应该是:从介绍程序设计语言的基本概念入手,重点介绍语言的“正

向”设计功能而非“特殊格式”或“特殊语法”说明,侧重学生的程序阅读和程序设计能力培养,从教学内容的广度和深度两个方面,恰当把握教学角度。

“C语言程序设计”课程的内容可分为三个基本模块,教学过程从第一个模块切入,逐渐扩展到第二和第三个模块。第一个模块可称为“程序设计语言公共模块”,主要包括程序设计语言的基本概念、程序设计语言的基本要素(字符集、标识符、常量变量以及保留字、基本数据类型、运算符、表达式、语句与控制结构、程序结构以及程序书写规范等)以及输入/输出格式等内容;第二个模块是C语言的主体,主要包括函数、数组、指针、文件等;第三个模块是高级编程内容,主要包括结构体(struct)、共用体(union)、枚举类型(enum)以及用户自定义类型等。

在教学深度方面,各模块的教学重点应放在“规范的语法描述和直观易懂而且正确的语义表述上”,避免涉及各种过细的“不符合人类阅读习惯”的语义描述,暂时避开“特殊格式”或“特殊情况”的纠缠,摆脱“研究语法”的错误向导。在此基础上,第一模块的教学可与自然语言相比对,通过学生已有的自然语言学习经验和语言要素,使学生快速建立程序设计语言的基本概念,正确理解程序设计语言的基本要素及其关系,掌握基本语法和程序基本控制结构(顺序、选择、循环),并通过算法归纳求解问题的过程,正确理解算法不同描述方式(自然语言、传统流程图、N-S流程图、伪代码、程序设计语言)的作用和差异,特别是从“问题”到“程序”的渐进转化过程,从而培养学生的基本程序设计能力。通过第二模块的教学,使学生明确函数、数组、指针、文件等概念和作用,掌握它们的定义和引用方法,能进行相应数据类型的编程,进而掌握用函数定义的结构化模块程序设计的方法;通过第三个模块的教学,将程序的数据处理能力扩展到结构体、共用体、枚举类型以及用户自定义类型等复杂数据类型的处理上来,通过恰当的例子应用这些数据类型,向学生展示C语言强有力的数据表示和处理能力。

另外,可以将C语言中的“语法灵活性”和不同部分的各种“特殊情况”分类总结,归纳整理成“语言参考手册”等形式,以附录的形式提供给学生,以便需要时“备查”。这样既可节省教学课时,又可向学生提供学习语言的主动权。

3.4教学策略和方法

“C语言程序设计”属语言类课程,教学过程充满了逐步完善和熟练的基本特点,因此,从教学安排的策略上要分重点、分阶段逐步进行,每个阶段的教学方法应该采用建立在一定基础上的有重点的“部分教学法”,以核心内容为基础,向外逐渐延伸,部分学习,渐进掌握。尽可能避免不分主次、不论难易、不顾急缓,盲目一次性扫清各类知识点的“地毯式”教授方法或学习方法,同时强调自学和上机验证,强化在特定环境下(如Turbo C++ 3.0)的程序设计训练,做到“精讲多练[2]”,从小程序练起,逐渐过渡到求解较大或实际问题的程序设计上来。

4结束语

从目前的教学现状看,无论是计算机相关专业,还是理工科的电子信息类专业,乃至综合性大学的非计算机专业,“C语言程序设计”的课程教学均占有重要的教学地位,在全面提高教学质量和教学效率的今天,不同类型专业结合自身优势和程序设计语言类课程的特点,选择合适的角度组织和实施“C语言程序设计”课程的教学活动非常重要,而且很有必要。笔者的教学实践证明,避开“语法研究”的程序设计教学不仅可减少课时,更可提高学生利用程序设计语言“表述求解问题过程”的能力。

参 考 文 献

c程序设计语言范文第3篇

摘要:“计算机程序设计语言”课程是计算机科学与技术学科核心的课程之一,极大地影响着学生对计算机领域的理解和兴趣。本文针对教学过程中存在的问题,提出了层次化教学目标思想。以面向对象语言C++为例,介绍基于层次化教学目标体系的具体思想和内容,并提出与之相适用的课程及实验设计,达到优化教学方法,提高教学质量的目的。

关键词:计算机程序设计语言;层次化教学;C++

中图分类号:G642

文献标识码:A

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

“计算机程序设计语言”是普通高校计算机教育的基本专业课程,在计算机领域的各个专业的课程体系中都处于核心的地位。这门课程不仅可使学生获得基本的程序设计能力及锻炼学生的逻辑思维能力,它还极大地影响着学生对计算机领域的兴趣和理解,对引导和培养学生在计算机工程及理论方面的研究兴趣起着先导性和基础性的作用。因此,“计算机程序设计语言”的教学质量成为影响大学本科计算机教学质量和效果的一个关键的因素。

影响课程教学质量的主要三个因素为教学内容、教学方法和实验设计。当前,大部分教师受传统教学模式的影响,教学的重点都放在程序语言的基本语法的讲授,课堂所设计的程序实例大部分围绕语法规则的演示和说明,这种模式同样也影响到实验环节的设计。这种就事论事,形而上学的教学模式具有许多明显的弊端,主要体现在以下几方面:

(1) 不利于培养学生的学习兴趣

许多从事程序设计语言教学的教师(包括笔者)都有这样的感受:每讲授一门新的程序设计语言课,初期学生都抱着积极,对获取知识的极大热情投入课程的学习,但随着教学过程的深入,这种热情往往不能持久。导致这种局面的原因固然有教师本身的教学方法和教学手段的缺陷,但根本原因还是教学内容的设置不科学。在单纯以讲授语法规则这种教学模式下,学生难以保持长久的学习兴趣和动力。

(2) 不利于学生建立综合化,系统化的知识体系

程序设计语言是表达设计者思想和计算机计算逻辑的符号系统,具有多层面、多视角的内涵。要把学生培养为具有高素质的程序设计人员,仅仅熟悉没有精神的符号及符号规则远远不够,这需要学生具备设计高质量程序的综合化的知识体系,而当前的程序设计语言的教学现状并不能满足这种需求。

(3) 不利于培养学生解决实际问题的综合能力及创新意识和思想

当前,素质教育成为各级教育系统,包括高等院校所关注的热点,知识高等院校所关注的“素质”内涵不同。笔者认为高校大学毕业生应具备的素质包括:综合化、系统化的专业知识体系;应有已有的知识体系解决实际问题的能力;具有创新的意识和思想。总体而言,大部分教师对程序设计语言课程所采取的教学不利于这种素质的培养。

针对这种现状,结合我国高等教育发展的现状,本文提出程序设计语言的层次化教学目标的思想,并以面向对象程序语言为例,论述在层次化教学目标驱动下的课程设计。

2层次化的教学目标

各项教学活动有效展开的基本条件是合理的教学目标的确定,但单一的教学目标并不能适用当前中国复杂的高等教育现状。社会经济的快速发展产生了明显的多类型、层次化的人才需求,这种趋势在各类软件公司里表现得尤其明显。为了适用这种人才需求的转变,高等教育领域在这些年相应地发生了巨大的变化,各种类型、各种不同层次的教育机构大量出现,改变了过去高等教育机构单纯负责培养具有从事复杂脑力劳动的高级专业人才的状况。这些变化最终体现为教师的工作,体现为教师针对不同的教学对象所制定的教学目标体系。

当前,由于社会信息化的发展,各类计算机类课程已经渗透到各个学科,例如笔者所在的苏州大学,几乎所有的院系都设置了信息技术类的有关课程,大约超过一半的院系设置了“计算机程序设计语言”的课程,因此“计算机语言设计课程”的教学质量是总体教学质量评估的重要组成部分。笔者多年来一直在苏州大学承担程序设计语言的课程,包括一类本科计算机专业基础课程、二类本科专业基础课和公共基础课程。大量的教学实践表明单一的教学目标不能适用多样化的教学对象、多样化的人才需求和程序设计语言知识逻辑在广度和深度方面所具有的层次化的特点。下面将论述程序设计语言课程的层次化的教学目标体系及各层的具体内涵。

2.1低级目标

该目标要求掌握标准化的程序语言语法体系,以学生掌握基本的标准语法体系为基本要求,并能初步应用语言开发较小型的简单应用程序,具备初步的程序设计能力。低级目标要使得学生对所学知识“知其然”,课程教学内容主要围绕标准的语法规则,课堂和实验环节所选定的程序实例大多围绕着验证和演示语法规则及语法规则之间的联系进行设计。在以低级目标驱动的教学中,因为重在基本知识的传授,因此核心教学内容的选择是第一位的要素。当然每门程序设计语言课程都有其固有的核心内容,例如,在C++语言中,核心的教学内容为:面向对象的概念、继承、多态、模板及异常等,即使如此,还需要根据教学对象,对教学内容和授课方式进行选择和取舍。总的原则是围绕重点概念和知识采取“精讲多练”和“突出重点”的方式进行教学。

2.2中级目标

中级目标则要要求学生围绕目标程序设计语言,具备系统化的程序设计方法和技巧,逐渐使学生“知其所以然”。该层目标不仅要让学生掌握“语法”,还要让学生掌握“语义”;不仅让学生掌握语言本身,还要让学生扩展思维,了解、理解更多的外延的知识;不仅要让学生掌握基本的程序设计方法,要让学生初步掌握系统化的程序设计方法和建立起程序质量的观点。程序设计语言的外延知识涉及计算机专业许多重要的核心课程,包括编译原理、算法分析与设计、计算机组成与结构、离散数学、数据结构和软件工程等。当然,不可能指望通过一门课程的学习,使学生有效地、完整地掌握所有这些知识,只能使与实现中级目标有紧密联系的知识能渗入到重点的知识讲授和实验的安排中。

2.3高级目标

不管是初级目标的“知其然”,还是中级目标的“知其所以然”,都是知识学习,而高级目标阶段的重点是运用知识,体验知识,要求学生具备利用目标程序设计语言解决一定复杂度和规模的实际问题的能力,建立抽象的程序设计思想、方法和质量的观点。高级目标的教学内容的重点在如何在所讲授的语言框架里解决一定规模的应用问题,并从具体的实现里提炼出抽象的设计思想,分析实现的质量,总结好的实现方法和设计思想。

确立了教学目标,下一步的焦点为围绕实现具体的教学目标,制定各教学环节的具体的教学内容和教学手段,主要包括课堂教学环节和上机实践环节。结合笔者的教学实践,下一节将围绕这方面的内容展开论述。

3层次化的目标引导的课程设计

C++语言因其强大的功能及广泛的实用性而日益成为当前高校理工类专业程序设计的主流教学语言,因此本节将以C++为例,讨论层次化教学目标思想如何在教学实践中得到贯彻。C++程序设计语言的教学涉及课堂教学和实践教学两个环节,下面将就这两方面展开论述。

3.1课堂教学

确定目标课程的教学内容是开展有效的课堂教学,取得既定的教学目标的前提和基本要求。针对本文所提出的层次化的教学目标体系的基本内涵,C++程序语言的课堂教学内容在深度和广度上也应该展现出层次化,递进性的特点。

在低级目标中,掌握本程序语言的基本语法体系是最重要的目标,在教学内容的设计上,应确定语言的最核心最重要的语法现象。过程化程序设计向对象化程序设计是C++语言的最重要的特征,因此“对象”和“类”,以及由此产生的“继承”,“封装”,“多态”和“异常” 成为最核心的教学内容。在教学时应集中注意力于这些类对象的关键个性技术,围绕关键技术“精讲多练”,使学生深刻理解面向对象C++的这些关键技术;要有重点,不能面面俱到,有所失,才能有所得。

低级目标是为了使学生掌握知识,使其“知其然”,那么中级目标则要逐渐使受教育者“知其所以然”,教学的重点从对语法的训练转向对语义的理解,包括静态结构语义和程序执行语义。在C++的教学中,以C++对象模型作为教学内容的重点,通过从静态的程序代码结构和运行的程序状态两方面展开课堂教学,这样在知识语言的“所以然”的基础上,学生不仅知道什么是“多态”,并且知识“多态”是怎么实现的;什么是运行时类型检查(RTTI),运行时类型检查能提供什么程序设计策略等;许多的外延知识能沿课堂展开,例如编译原理、算法分析与设计等。由Stanley B. Lippman所著的《Inside The C++ Object Model》为我们设计课程材料提供了方向性的指导。

低级目标和中级目标都是针对知识的学习,而高级目标则针对知识运用,提高运用知识进行设计的能力。此层次涉及知识的学习、理解和综合运用,要在有限的时间内,实现教学目标,在课程教学内容的选取和设计及课时的安排上,具有一定的难度,对教者和学者都具有一定的挑战性。“设计模式”可以成为本层次的基本或延展性的教学内容。设计模式虽然不与具体的设计语言有着必然的、密切的联系,但事实上各种技术性、或纯教学性的书籍中,都把面向对象语言作为实现各种设计思想的不二选择。通过设计模式内容的讲授,可以使得学生对面向对象的基础知识有更深刻的理解,同时增强灵活运用所学知识的能力,体验面向对象程序设计方法学所带来的设计上的“美”,激发学生的创造力。

当然,上面针对课堂教学内容的论述仅仅进行了基本的界定和论述,需要通过下面几方面来贯彻实施,以达到各个层次的教学目标:

(1) 通过教者的努力,设计出丰富的、具体的课程素材;

(2) 针对不同的教学内容,设计多样化的教学手段和方法;

(3) 针对不同的教学内容布置合理的作业和考核方法。

3.2实践教学

在程序设计语言的教学中,课堂教学和上机实践教学是并重的环节,不可偏废,一起决定着教学的质量和教学目标的取得。如何设计安排上机环节通过大量的教学实践,已经总结出了大量的行之有效的方法。下文就实验内容及实验的组织形式进行一些必要的、有益的讨论。

结合课堂内容,以往的实践环节主要由学生编制一些小的程序,进行语法现象的演示及验证。但笔者通过大量的教学实践发现:这种普遍采用的,且行之有效的方法,对于学生巩固知识,提高调试程序的能力和技巧具有显著的效果。但随着教学的深入,这种方法也显示出种种的弊端,例如:学生专著于知识点,必然缺乏对知识的整体把握;学生容不易形成良好的编程习惯等。针对这种情况,笔者在实践的环节中,增加“读程序”的分量。教师提供一些高质量的程序范例让学生进行阅读、理解,并对范例的程序风格和设计方法进行总结比较,以提高学者的综合能力,尤其是到了后期,所提供的范例更具有综合性、全面性和示范性,能极大地提高学生掌握知识的深度和广度,激发他们的学习热情。

在实践人员的组织形式上,一般在程序设计语言的教学中,都是学生独立进行的。在教学实践中,也可引进一些软件开发中的方法,比如采用小组制的形式,根据实践内容的不同,小组或大或小。即使是在低层目标为导向的教学中,也可采用小组的方法进行实践环节的教学,不过此时小组人数不宜过多,最佳数目为二人。采用这样的方法,有以下的益处:

(1) 便于学生进行交流,以达到取长补短的目的;

(2) 提高教学效率,以较少教学活动取得同样甚至更好的效果;

(3) 培养团队合作精神等。

在以中级和高级目标为导向的教学中,实践环节应从语法演示和验证为重点转变为以知识的理解和知识的运用为重点,因此除了结合教学内容设计相应的实践内容外,最显著的特点是增加综合性的项目开发环节,以达到知识的综合掌握和运用。

当前以语法的演示和验证目的实践环节的设计具有大量的教学实践可资借鉴和学习,但针对更高两层教学目标的实践环节则缺乏有效的素材和经验可以利用,需要通过进一步的教学实践活动加以积累和总结。当前的一些做法是借用开发一个具有一定规模的项目来弥补纯语法的演示和验证实践方法的不足。

4结论

本文针对当前在程序设计语言的教学中存在的问题,提出了多层次教学目标的观念,并介绍了各层次目标的具体内容和以此目标为导向的主要的教学环节的设计。各个层次的教学内容和教学方法手段并不是彼此割裂的,如何针对各种不同的教学对象进行合理的课程设计,以提高教学质量有待于进一步的大量的教学实践活动。下一步最主要的工作总结探索各种教学资源以及相应的考核方法,尤其是用于中级目标和高级目标为导向的教学活动。

参考文献:

[1] 吴乃陵. 面向对象C++程序设计教学改革[J]. 电气电子教学学报,2003,25(2):9-11.

[2] 徐宏,聂影,黄征华,等. 计算机程序设计语言的教学探索[J]. 教学研究,2004(2):89-93.

[3] 沈军. 程序设计语言类课程的教学思路研究[J]. 高等工程教育研究,2001(1):80-82.

[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.

[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.

Research on Teaching of Programming Language

CHEN Dong-huo,YAO Wang-shu

(School of Computer Science and Technology, Soochow University, Suzhou 215006, China )

c程序设计语言范文第4篇

关键词:程序设计语言;衔接教育;Alice编程;编程概念;计算思维

中图分类号:G632 文献标识码:A 论文编号:1674-2117(2016)22-0019-04

引言

2006年3月,美国卡耐基梅隆大学计算机科学系主任周以真教授给出了计算思维的定义。她认为,计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,包括了涵盖计算机科学之广度的一系列思维活动。[1]计算思维活动是和“读、写、算(Reading, writing and arithmetic――3R)”同等重要且适合每个人的“一种普遍的认识和普适的技能”。

目前,包括美国、英国在内的众多国家,信息素养与计算思维能力培养已经成为中小学信息技术教育的新趋势和重要教育内容。计算思维在我国也引起了越来越多教育教学者的关注,很多学者提出应强化对大学生及中小学生计算思维能力的培养。在高中阶段,培养高中生的计算思维就是要培养他们“像计算机科学家”那样去思考问题,并将这些问题渗透到信息技术的每一个角落。美国ACM计算机课程IEEE-CS2001总结了学习信息技术的四种方法,认为“编程先行(programming-first)”是一种行之有效的方法。[2]而程序设计语言是程序设计(编程)最主要的工具之一。因此,本文以程序设计语言为切入点,针对目前我国高中教育阶段程序设计作为非核心课程的现状,探析一种既适合高中生学习编程概念又适合高中生计算思维能力培养的程序设计语言。

一种适合高中生的程序设计语言

1.程序设计语言的选择

目前,我国高中信息技术课程学习的编程语言主要是Visual Basic,而针对高中生的信息技术竞赛多采用C++或Java语言。虽然这些语言都适用于学习面向对象的编程概念,但基于目前高中信息技术课的教学现状以及高中生的综合信息素养,学生学习这两种语言的整体兴趣并不高,而且对许多编程概念只“知其然,而不知其所以然”,求解实际问题的能力也不甚理想。这种局面与程序设计语言的选择有很大关系。首先,Visual Basic和C++/Java是目前高校学生学习的主流程序设计语言,语法学习难度较大,而且语言本身的抽象程度也并不完全符合高中生的认知能力,不适合高中与大学计算思维能力培养的衔接教育。其次,虽然这些语言都能够提供可视化的编程环境,但程序代码本身的文本编写模式和文本输出模式很容易让学生认为编程是一种枯燥无味的事情,从而影响他们深入学习编程的积极性。鉴于此,本文从以下四个方面选择程序设计语言。

(1)对象先行

从广义上看,程序设计语言主要有命令式、面向对象、函数式、逻辑式和并发式等范型,而目前高校使用的主流程序设计语言是面向对象程序设计语言,如C++/Java。因此,为了更好地满足高中与大学计算思维能力培养的衔接教育要求,笔者选择了面向对象的程序设计语言。

(2)高度抽象

基于高中生的综合信息素养和认知能力,选择的程序设计语言应是一种比C++/Java更高抽象层次的可视化编程语言。该语言应语法简单,操作便利,能极大减轻学生学习语法的负担,提高学生使用程序设计语言与计算机进行交流的能力,从而激发他们学习编程的动力。

(3)学习编程概念

在满足高度抽象的基础上,为了初步培养学生的计算思维能力,这种程序设计语言应不影响学习基本的编程概念,如类、对象、封装、方法、事件与事件处理、变量、表达式、控制语句、递归和并发等。

(4)培养计算思维

基于高中生的认知能力,能够通过编程培养高中生用程序设计语言分析问题、解决问题的能力,从而逐步训练计算思维是选择这种程序设计语言的最终要求,即能够充分呈现计算思维的思想或计算思维的核心概念。

2.Alice――面向对象的三维可视化编程语言

Alice(http://)是Carnegie Mellon大学免费提供的一个可以用来学习设计与编程的面向对象的可视化编程语言。用Alice学习编程就是建立自己的虚拟世界,在其中添加各种三维模型(Alice已提供大量预定义的三维模型),然后编写程序(类似于电影剧本)指挥这些三维模型做出所需的动作,从而在虚拟的三维世界中快速地创建故事、游戏或类似卡通的交互式动画程序(如上页图1、图2)。Alice是一种适合高中生学习面向对象编程概念的高度抽象的可视化编程语言,能很好地满足高中与大学学习编程的衔接教育要求。

(1)满足对象先行

Alice语言的最新版本是完全面向对象的。在Alice创建的虚拟世界中,每一个三维模型(人、动物或建筑等)都是一个可见的对象。此外,Alice本身是使用Java语言编写的,用Alice编写的程序最终会被转换成Java程序运行。因此,学习Alice语言可为将来进一步学习Java或C++语言奠定良好的基础。

(2)满足高度抽象

Alice设计了一个拖拽式的可视化用户界面,学生可以在屏幕上拖动程序中的组件(如对象、方法、语句等),而不会出现语句结构或标点符号等语法错误。一个使用Alice的程序员更像是一个导演或一个木偶操纵者,通过鼠标拖拽屏幕上的语句和对象就能编写一个交互式程序,且运行过程具有即时反馈性。从程序设计语言的角度来看,Alice是一种比C++/Java抽象层次更高的程序设计语言,极大地提高了学生与计算机的交流能力,因此更容易激发他们学习编程的兴趣与欲望。

(3)学习编程概念的极佳选择

学习编程实际上是学习怎样合理地安排一系列的指令从而实现一个任务。Alice虽然是一种高度抽象的可视化编程语言,但并不影响学生学习和理解面向对象的基本编程概念,如类(class)、对象(object)、继承(inheritance)、方法(method)、发送消息(sending message)、控制结构(control structure)、运算符(operator)、表达式(expression)、事件处理(event handler)等。Alice程序是由很多行描述对象动作或修改对象属性的代码组成,代码可以组织在Do in order和Do together模块中,以此来告诉Alice哪些动作是顺序发生的,哪些动作是同时发生的。此外,由于Alice编程是一种基于剧情或故事的可视化程序设计方法,能把抽象的编程概念用形象的方式呈现给初学编程的人,因此它更符合高中生的认知能力。

使用Alice编程培养初步的计算思维能力

利用Alice编程熟练地掌握计算机科学的基本编程概念是高中生逐步培养计算思维能力的一个有效途径。ACM前主席Denning教授系统地总结了计算的7类原理,即计算、通信、协调、记忆、自动化、评估和设计。每个类别都从一个独特的视角去观察计算本身,并且在计算领域具有“普遍性”“复现性”和“广泛影响性”,它们构建起一个理解计算内涵的框架。教育部高等学校大学计算机课程教学指导委员会编制的《大学计算机基础课程教学基本要求》从8个方面描述了计算思维(增加了“抽象”)。[3]笔者将Alice编程学习与这8个类别的计算思维表达体系建立了关联,如下页表所示。

c程序设计语言范文第5篇

[关键词] C语言;程序设计;java

[中图分类号] TP311.11 [文献标识码] A

C语言是最重要的计算机程序设计语言之一,以其自身的特色与优势,在计算机科学技术、工业控制、单片机编程、系统底层开发等领域应用非常广泛。此外,它还是其他重要程序设计语言如Java、C++等的入门语言。近些年,由于程序设计类语言的发展与进步,C语言地位正在被弱化,但由于其重要性,C语言知识还应该更全面地得到推广。

在Java语言程序设计中,随处可见C语言的影子,所以在面向对象的程序设计语言日益流行的今天,入门阶段由C语言程序设计来完成是再合适不过了,只有成功完成这一过渡,才能更好地把握Java程序设计语言的主要特点,最终能够运用Java语言进行网络与数据库方面的系统设计,更好地完成项目设计,更好地站在软件工程技术的前沿。

C语言程序书写形式自由,把高级语言的基本结构和语句与低级语言的实用性结合起来,适合于多种操作系统,使程序效率更高。语法比较灵活,允许程序编写者有较大的自由度。

程序设计包括了很多小的知识点,这些知识点与计算机原理知识结合非常紧密。如C语言中的关键字和控制语句,大多被延用到java程序中,使用方法和规则大多没有改变。足可见C语言的基本内容的精典性。

本文主要针对C语言的几个要点,进行透彻分析,挖掘C语言与较为流行的程序设计语言java的共同点,突出C语言的基础性地位,从而为C语言学习者提供便捷的学习方法。

1 数据类型与数据的种类

数据类型在C语言中应该与数据的种类做个清晰的区分,因为它所涉及的内容实质不同。

1.1 基本数据类型

short、int、long、char、float、double这六个关键字代表C语言里的六种基本数据类型,数据类型其实就是个模子。在C语言中可以用这六个关键字创建无数个需要的数据,可以用它们在内存中分配不同大小的变量。

1.2 数据的种类

C语言中数据的种类有两种,一种是有固定值的常量,另一种是没有固定值的变量。常量的表现形式如上各种基本数据类型形式的数据。

变量是可以存储各种基本数据类型的数据存储单元,它是所有程序设计语言中的重要概念。它所涉及的内容连贯性很强,如:

(1)变量用什么来表示?

答:用变量名来表示

(2)变量名是什么?

答:变量名是一个用于表示内存单元的符号地址,是用户所起的标识符,需要符合C语言中规定的标识符的命名规则。

(3)变量如何确定下来?

答:由一个声明语句确定下来。

(4)确定下来的这个内存单元有什么作用?

答:用于存取指定的数据类型的数据。

(5)声明语句完成什么工作?

答:声明语句完成数据类型的分配,一个声明语句只能完成一种数据类型的指定。

2 运算符的运算优先级与结合性

C语言中的运算全部在java中得到了延展,只是在java程序设计中重载了运算符“+”,如此看来,C语言中的运算符是如此经典。下面对C语言中的运算问题作一论述。

2.1 优先级:C语言中,不同类型的运算符在运算优先级上有个明确的分级。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

2.2 结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。

最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。C语言运算符中有不少为右结合性。

优先级从上到下依次递减,最上面具有最高的优先级,大致依据的原则是:单目运算高于双目运算,算术运算高于位运算高于关系运算高于逻辑运算,逗号操作符具有最低的优先级。

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其他的都是从左至右结合。

另外是单目运算符,所有的单目运算符具有相同的优先级,真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

在C语言里,有前置、后置之分,因为++--是右结合所以右侧优先运算,表现为“操作数后置优先级比较高”的假象,前置和后置的由其运算规律进行区分更为合理,就前置运算的自增或自减,可认为它是所有混合运算中最先进行的,而后置运算的自增或自减则是所有混合运算中最后进行的。

最后在程序设计过程中一个不可忽略的要点就是关系运算符(=、==、!=)和逻辑操作符(!、~、&&、||),与其相关的就是关系或逻辑表达式的设计与应用。有非常广泛的应用,如:在选择结构流程中if结构的条件表达式和循环结构流程中循环条件表达式的应用。

c程序设计语言范文第6篇

关键词:计算机专业;程序理解能力; 程序设计能力;教学管理平台

随着信息科技的不断进步与发展,新型软硬件产品和信息服务不断涌现。在嵌入式系统设计、软件开发、系统管理维护等领域,高素质程序设计人才的需求与日剧增,这对高校计算机专业的人才培养提出了更加具体的要求。如何适应社会对高素质程序设计人才的需求,对于重庆邮电大学这样一所以信息科学技术为特色和优势的高校来说尤为迫切。

尽管各高校都制定了适合自身特色的培养方案以应对社会对程序设计人才的需求,但受教学方法、实践教学环境、考核方式等因素的影响,近年来,如何提高学生程序设计能力一直是高校计算机实践教学改革的重要内容之一。“读懂程序难,设计程序更难”成为计算机专业学生普遍反映的问题,有条件的用人单位通常需要组织专门的培训来满足生产的要求,这极大地影响了学生的就业能力和企业的生产效率。提升在校学生的程序设计能力,需要从教学方法、教学手段和资源建设等方面入手,探索一些新的思路。

1现状分析

目前,大多数高校均通过开设C/C++、Java等程序设计类课程培养学生的程序设计能力,而此类课程的传统教学方式是采用以知识点为单元的“讲授―验证―作业―考核”流程,即首先由主讲教师在课堂上讲授语法、结构等知识点,学生在课后或实验环节中上机验证,通过完成习题来体会程序设计方法,最后组织考核[1-2]。多年的教学实践表明,这样的实施流程忽略了一个至关重要的环节――培养学生的程序理解能力。

什么是学生的程序理解能力?简单说来就是当大段代码出现在学生面前的时候,学生是否能够明白这样一段程序代码在计算机中是怎样执行的,执行过程中环境会发生怎样的变化,是否能获得正确的执行结果,等等。传统的教学流程将程序设计这个有着严格的逻辑结构的行为拆分成为了若干个离散的知识点,学生在仅仅掌握这些知识点的前提下,尚未透彻理解给定的代码,此时,要设计出可用、高效的程序具有很大的挑战。

程序设计类课程学习的一个主要内容是掌握不同程序设计语言的语法规则和流程,进而灵活运用以解决遇到的专业领域问题。程序设计语言和人与人之间交流所用自然语言有一定的共性,且远没有自然语言复杂。在学习自然语言的过程中,通常首先学习基础语句,然后对语句的字词进行分析,进而掌握句子的意思,最后在充分理解句法的基础上组合出能表达

个人意愿的句子。程序设计语言也可以遵循这样的学习方法,先学习示例程序语句,然后拆分语句,用离散的知识点去分析解释语句的构造,并查看运行过程和结果,在头脑中形成直观印象,然后利用这些知识点有组织地结合程序结构的思想去解决问题。因此,先熟识程序的“庐山真面目”,理解程序的编写方法,然后模仿编写,将使得程序设计能力的培养变得事半功倍。

从另一方面来看,多样化的程序设计语言对于高校程序设计类课程的教学要求提出了新的挑战。考虑到学分结构、师资力量、个性教育、教学管理等因素,不可能、也没必要为每一门程序设计语言都开设相关的课程。即便能够这样做,往往会出于对学生成绩考核的量化而要求学生在选课阶段便对相应的语言进行选择,由不同的教师对其进行授课指导。绝大多数学生在选择程序设计语言时,由于没有直观的印象,也没有具体的应用需求,仅从教师简单的介绍和外界舆论,很难选择适合个人发展方向的语言环境。为满足个性培养的需求,让学生能找到适合自己的主要语言方向,需要提供丰富的、开放的程序设计教学资源[3],且允许学生灵活选择。同时,多样化、自由选择的程序设计语言教学资源也将使得学有余力的学生能对照学习,提高学习效果。

2改革思路

围绕上述分析,为了培养具有良好程序设计能力的计算机专业学生,在教学实践过程中,我们结合学校的专业建设、团队建设、课程建设和实验室建设工作,主要从以下几个方面进行改革探索。

1) 培养学生的程序阅读能力。在培养方案中,加大实验实践学分的比重,明确程序设计类课程在实践能力方面的教学标准和能力要求。实践环节并不是强调学生立即进入到具体的程序设计的学习,而是提供大量程序和针对这些程序提出的问题,引导学生对程序设计风格和相关知识点进行模仿学习,并追踪程序运行过程,查看运行结果。在这个过程中,教师通过评价学生的阅读效果,指导学生理解程序中具体知识点。

2) 培养学生的程序设计能力。在现有培养方案中,教学内容贯穿程序设计语言、数据结构、数据库、软件工程等系列课程,明确每一阶段的能力要求,采用基础训练、项目驱动和课赛结合等教学组织形式,以在校期间编写数万行代码为形式要求,以解决某一领域的具体应用问题为导向,促进学生程序设计能力的逐步提高。

3) 建设包含多种程序设计语言的教学资源。组织教师建设多样化、开放式的程序设计类课程教学资源,包括大量的程序代码、知识点和帮助学生理解程序。学生可自主选择不同的语言进行学习,并在阶段性考核前自愿随意调整,教师仅对学生学习进程和最终阶段性学习效果进行控制。为实现这一改革思路,我们采用以题库为核心的网络教学管理平台,原因有以下几点:

① 从网络使用角度来看,网络化的教学管理平台具有开放、访问方便等特点。目前,绝大多数高校都构建了良好的校园网,有条件的高校甚至可以将其在Internet上,提供校内校外的同步访问。学生的学习场所不再局限于课堂,而是扩展到了校园网(或Internet)上。

② 从资源管理角度来看,培养程序阅读能力所需的大量程序代码和针对不同知识点进行学习可按照“一对多”或“多对多”的对应关系存储在数据库中,学生仅需通过发送请求就可获得相互关联的程序、知识点和问题等,再围绕相关的问题进行在线练习。同时,授课教师还可根据教学和学生学习的实际情况,在数据库中陆续添加和补充新的内容。

③ 从教学管理角度来看,平台可以记录学生访问行为、读取程序细节等内容,可以通过学生的练习结果追踪学生学习效果,统计分析后的信息可以为教师提供辅助决策,并可对学习效果明显的学生进行“精英指导”,而对学习效果不明显的学生进行人为干预,整体上促进学生程序设计能力的提高。

④ 从程序设计语言选择的角度来看,可以为每一种主流的程序设计语言提供一套题库资源。在这个过程中,可以根据阶段性教学目标准备难度相似、进度相同的不同程序设计语言的资料。学生在学习过程中,仅告知学习的大致进度以及阶段性考核检查的时间,而由学生自行选择感兴趣的程序设计语言进行理解学习,且在任何时间可以自行更换,仅需要在阶段性考核时选定一种语言参与考核,提高学生学习的灵活性。

⑤ 从教学考核的角度来看,学生总体程序设计能力的考核不局限于以学期为单位的时间段,而是以能力要求为标准设定的学习阶段,在完成一个阶段的学习之后自行申请考核。在校期间,必须分阶段完成相应的内容并通过阶段考核。这种方法使得能力要求明确,有利于个性化教育,并能充分挖掘学生的学习潜力[4]。

3具体实施

按照上述改革思路,学生程序设计能力的培养可分三个阶段来实施,如图1所示。从最初程序阅读能力的培养,到程序编写能力的培养,最后进行综合程序设计能力的提高,每一个阶段都有对应的解决方案与之对应。实施重点是建设以题库为核心的网络教学管理平台。

网络教学管理平台实现“程序”和“问题”一对多的映射关系,采用“知识点”的方式对每一个问题所针对的基础培养的内容进行区别和归纳,通过“难度”来判定学生对于具体问题的掌握程度。系统主要对象关系如图2所示。

在具体运行过程中,以日志形式收集基本的信息,如学生的来访次数、语境选择、操作情况等,提供统计信息供教师进行查看以评价学生阶段性学习情况,必要时可进行指导或干预。平台主要工作流程如图3所示。

目前,网络教学管理平台已为C/C++语言建设了一定规模的程序库和问题库,并不断进行扩充,其他语言如Java等也正在建设中。平台试运行以来为重庆邮电大学计算机相关专业的学生提供了开放的程序设计学习环境,并通过平台在线考核评价其程序设计能力,从学生的投入程度和考核结果来看,学生的主动学习意识和程序设计能力普遍得到了提高,教学效果良好。教学团队中指定一名教师对平台的日常运行进行管理维护,并定期检查学生访问情况。其余教师拟定和补充多种语言的题库资源,指定阶段性学习任务,并定期答疑解惑。

4结语

我校对于计算机专业学生程序设计能力的培养还在不断地改革和探索,现行的方法和平台的优缺点还有待进一步实践和检验。未来的工作除了对现有工作的总结提高,还需要重点对平台的功能进行扩展完善,从而更好地服务于计算机专业的人才培养,为社会输送高素质程序设计人才,也为类似高校相关专业提供可借鉴的经验。

参考文献:

[1] 王春凤,刘世峰. 以编程能力培养为核心的教学设计与实践[J]. 计算机教育,2009(10):133-135.

[2] 孙静. 程序设计课程教学研究:在教学过程中提高学生的编程能力[J]. 中国教育技术装备,2008(16):42-43.

[3] 庄景明. 计算机程序设计课程实验教学新模式探讨[J]. 计算机教育,2009(4):18-20.

[4] 李文敬,廖伟志,闭应洲. 计算机程序设计课程实验教学质量标准的研究[J]. 计算机教育,2009(15):136-139.

Reform of Programming Education for Undergraduate Students Majored in Computer Science

DAI Yu1, XIA Ying1, ZHANG Lisheng2

(1.College of Computer Science and Technology, Chongqing University of Posts and Telecommunications, Chongqing 400065, China; 2.Software College, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)

c程序设计语言范文第7篇

关键词:程序设计技术; C语言; 教学改革

随着科学技术的发展,计算机科学与其他学科的结合越来越紧密,程序设计技术已经成为高校非计算机专业学生的必修课程。程序设计技术课程以某种程序设计语言为载体,使学生掌握程序设计的基本思想和方法,各个专业依据其培养目标和具体的课程设置选择某种程序设计语言作为授课内容。C语言以其强大的功能和广泛的应用成为高校工科院系的首选程序设计语言。但是C语言较其他程序设计语言来说,比较抽象且涉及的知识点多,要在规定学时内以常规的授课方式针对非计算机专业学生讲授C语言的基本思想和方法,难以达到理想的效果,因此必须对传统的教学章节和方法进行改革。根据笔者多年的实践教学经验,本文提出“以指针为核心,以实验为手段,突出程序设计思想和方法”的教学理念,下面从4个方面对该理念进行详细阐述。

1突出程序设计的思想和方法,淡化语法细节

以程序设计的思想和方法为主线,淡化语法细节教学。C语言比较抽象且涉及知识点多,若在授课过程中过多地讲授C语言的细节,将会导致学生忽略对程序设计基本思想和方法的学习。面对不断更新的软件开发环境,学生若不能以程序设计的基本思想和方法为指导,将会降低学习新知识的效率,从而对学习和工作产生不利影响。

教师在以C语言为载体的程序设计技术的教学过程中,必须使学生明确软件开发的一般过程,即“明确问题、设计程序、完成程序设计和完成程序(分析问题、算法的确定、编写程序、测试和修改程序)、建立文档和维护”4个步骤[1-2]以及这4个步骤中 “明确问题和分析问题”对正确编写程序并得到预期结果的重要性。教师在对程序设计的基本知识诸如对数据类型和变量声明等讲授后,以“程序设计的3种基本结构,函数,数组和文件”为主线进行授课,使学生掌握程序设计中所使用的基本技术。虽然这些基本技术在不同的程序设计语言中实现方式略有不同,但是这些基本技术是不同程序设计语言所共有的,其基本原理是相似的。

2以实验为手段,培养学生获取知识的能力

“授人以鱼不如授人以渔”,这句话对讲授程序设计技术的教师来说尤为重要。教师在授课的过程中以讲授程序设计的基本思想和方法为主,但并不意味着学生可以忽视具体程序设计语言细节的学习。就一种程序设计语言来说,细节处理不当将会导致程序无法正常运行或者运行结果与期望的结果不一致。

教师在教学过程中,通过某种编译环境使学生掌握调试程序的方法并且使学生认识到实验对程序设计语言学习的重要性。学生在调试程序过程中,通过实验来获取一个个枯燥乏味的细节知识,不但加深了学生对这些知识的理解,提高了学习兴趣和信心,更重要的是培养了学生通过实验获得知识的能力。

以图1的示例程序为例,教师在Visual C++6.0的编译环境中使用调试工具引导学生通过对诸如图2、图3和图4所示的监视窗口中变量值的观察,总结出for 语句的执行顺序。通过观察和分析,学生加深了对抽象的for语句执行顺序的理解和掌握,为今后的准确应用奠定了良好的基础。

3突出指针的核心地位,贯穿授课的全过程

指针是C语言的重点和难点,通常居于教材的后半部分,因此要使学生在短时间内彻底理解并牢固掌握,最终达到灵活运用的程度确实困难。但是指针作为C语言的精华和灵魂,与变量和数组成员在内存的存储地址有着密切的联系,而函数参数的传址调用是指针应用的具体体现,因此可以将指针的概念和应用贯穿于授课的全过程,将重点难点问题分解细化,在不断巩固已有知识的基础上引入新知识,减小学生对指针这一难点的恐惧感,增强学生学习的信心,激发学生的学习兴趣。

3.1输入函数,初识地址

输入函数scanf( )是学生第一个接触到的使用地址传递参数的函数。因此在讲授该函数的使用过程中要结合地址的概念来详细讲解,使学生能够准确地理解和掌握地址和地址中存储的数据之间的关系,以达到准确使用scanf( )函数的目的。

以图5的示例程序为例,在Visual C++6.0的编译环境中通过调试工具中的[step into]进行调试分析。通过对图6、图7和图8的详细讲解,使学生对地址有了一个明确的认识:定义变量是为变量分配存储空间,这个存储空间一旦分配,在程序的执行过程中就不会改变,而在该存储空间中所存储的变量的值可以改变。

3.2函数参数传址调用,加深地址理解,引入指针概念

通常在函数这一章节中只讲述函数参数的传值调用,而在讲授完指针的概念后才引入函数参数的传址调用。这样的章节安排固然有其合理性,但却忽略函数参数传递作为一个整体的有机性,学生难以真正理解和掌握函数传值调用和传址调用的区别以及何时使用何种参数传递方式。

在讲授函数的传值调用后,以输入函数scanf( )引入函数的传址调用,使学生考虑scanf( )的函数原型中第二个形参的数据类型应该是什么,并引导学生从Visual C++6.0的安装文件夹中找到输入函数的原型“_CRTIMP int __cdecl scanf(const char *, ...);”,从而引入指针这一新的数据类型并提出“指针只是地址的另外一个名字”[3-4],以减少学生对指针的陌生感。

3.3数组与指针相结合,强化指针应用

在讲授一维数组的基本概念和操作后,以一维数组数组名的值为观察对象,在Visual C++6.0的监视窗口中观察数组名的值,使学生通过直接观察得出结论“一维数组的数组名是一个地址”。在此基础上,进一步在Visual C++6.0的监视窗口中观察一维数组的第一个数组元素的地址,从而得到“一维数组的数组名表示的是一维数组的首地址”。

通过上述观察,将抽象难懂的概念形象化,加深了学生对数组和指针的理解。在强调指针和数组存在着密切联系的同时,必须明确指出指针和数组并不相同,它们的两个显著区别在于“指针存储数据的地址,而数组保存数据;指针间接访问数据,数组直接访问数据[5]”。

在学生理解了指针和一维数组的关系后,将一维数组的常用操作和常用算法使用指针进行改写,强化对指针的应用。

数组作函数参数时的指针表示是一维数组部分的重要授课内容,具体的实例使学生理解在什么情况下使用函数参数的传值调用,什么情况下使用函数参数的传址调用,以及这两种函数参数调用方式对原有数据的影响。通过这部分内容的学习,学生可以认识到函数的实现过程中函数参数的传递方式可以是单一的传值或者传址方式,也可以是传值和传址的混合方式,从而巩固了函数部分的知识,更重要的是加深了对数组和指针的理解。

以相似的方法讲授二维数组和字符数组,使学生以直观的观察方式获得知识,不仅增加了学生的学习兴趣,强化了数组和指针的应用,而且使学生明确函数是C语言的基本单位,使用函数可以将复杂问题分解成若干小问题,降低程序的编写难度。

4实验效果与分析

笔者为保证实验数据的可比性和有效性,将某学院2008级和2009级相同专业学生的考试成绩进行了比较。考试方式为上机考试,试题由考试系统从同一题库中随机抽取,试题组成如表1所示,成绩如表2所示。通过表2可以看出,优秀率从改革前的26.32%

提高到改革后的53.42%,不及格率从改革前的7.02%下降到改革后的1.72%,这说明C语言教学的改革卓有成效。

5结语

笔者总结了多年的实践教学经验,详细阐述了“以指针为核心,以实验为手段,突出程序设计思想和方法”的教学理念,将指针这一教学难点分散到各个章节进行教学,减少学习难度,增加了学生的学习兴趣。通过实验教学增强了学生独立获取知识的能力,较好地解决了C语言抽象、知识点多与教学时间不足之间的矛盾。

参考文献:

[1] Gary J.Bronson. A First Book of ANSI C[M]. 4th ed. 北京:电子工业出版社,2007:17-27.

[2] 裘宗燕. 从问题到程序:程序设计与C语言引论[M]. 北京:机械工业出版社,2005:25-28.

[3] Kenneth A.Reek. Pointers On C[M]. 北京:人民邮电出版社,2008:92.

[4] Steve Summit. C Programming FAQs[M]. 北京:人民邮电出版社,2009:46-48.

[5] Peter Van Der Linden. Expert C Programming:Deep C Secrets[M]. 北京:人民邮电出版社,2008:85-88.

Reform and Practice of C Programming Language in Non-computer Major of University

WANG Pengyuan, SU Hong

(School of Computer and Communication, Zhengzhou University of Light Industry, Zhengzhou 450002,China)

c程序设计语言范文第8篇

关键词: C语言 教学模式 教学改革

随着计算机科学技术的迅速发展,计算机科学技术已成为广泛应用技术[1]。随着目前高科技的发展,需要专业的计算机人才,程序设计技术是专业计算机人才所必备的基础能力之一;与此同时计算机学科与其他学科的结合越来越紧密,程序设计技术已经成为高校计算机专业乃至一些非计算机专业学生的必修课程,程序设计技术课程是以某种程序设计语言为载体,使学生掌握程序设计的基本思想和方法,各个专业依据培养目标和具体的课程设置选择某种程序设计语言作为授课内容。

C语言编程技术作为程序设计技术中尤为重要的一种应用语言,也是计算机课程中一门基础的计算机程序设计技术课程。C语言以强大的功能和广泛的应用成为高校工科院系的首选程序设计语言,不但是计算机专业的专业基础课,而且是物理、水利建设、电子电气、自动化控制、食品等非计算机专业的语言类基础课;作为高校非计算机专业的主要程序设计语言课程之一,C语言在计算机等级考试中占有重要地位,既是二级备选科目之一,又是三级网络、信息管理技术、数据库的上机考核内容。通过这门课程的学习,不仅可使学生获得程序设计的思想,锻炼逻辑思维能力,而且可为后续课程的学习打下基础[2]。

1.C语言编程技术课程现有课堂教学模式的问题分析

传统C语言教学方式主要由理论教学和上机教学组成,首先由课程教师对C语言课程的基础理论知识进行讲解和演示,学生再进行上机实际操作,然后根据教材和实际授课情况安排一些辅学习训练。但是C语言与其他程序设计语言比较,基础理论知识具有比较抽象且涉及的知识点多,想要在规定学时内以常规的授课方式针对学生讲授C语言的基本思想和方法,难以达到理想的效果;目前我国高校上机教学往往因为课时少及课下学生很少进行巩固而出现效果差[3]。

张逸琴[4]调查发现,大部分学生对C语言课程积极性不高、学习的主观能动性不强,主要是因为在对于C语言在学习中不但基础理论知识概念复杂,编程过程中规则苛刻,而且程序设计过程和算法比较抽象,在学习程序设计编程中出错率高,编程很难掌握。但是作为高校计算机专业的主要程序设计语言课程,学生往往通过背诵完成考试,这样培养出来的学生缺乏创新意识、逻辑思维能力、自学能力和研究能力。

2.C语言编程技术课程的实践教学模式改革

对于目前社会高科技需求的计算机人才,熟练掌握C语言的应用比掌握复杂的理论更有实际意义。因此,在教学中我院非常重视教学方法和手段的改革,根据不同的教学内容采用不同的教学方法和手段,打破传统教学模式的缺陷和局限,调动学生学习C语言的主动性和积极性[5]。

2.1现代化教学手段

现代化教学手段是利用多媒体和网络技术,能够以声音、视频、图形、语言等直观生动形象的形式,使课堂呈现多样性、新颖性、趣味性、直观性,能够激发学生的学习兴趣,调动学习积极性。我在教学过程中通过PPT演示文稿、系统演示、案例分析和讨论等方式进行理论教学;通过网络教学平台进行教学资源、自主学习、在线测试、提交作业等形式进行网络辅助教学。

2.2案例驱动教学法

在课堂上采用“案例驱动”的教学方式,用“案例”引出相关知识点,课堂上围绕一个“案例”展开相关教学,然后对此“案例”项目进行拓展训练和对案例的学习进行总结与回顾。最后让学生实现案例中的相应功能,课后学生再完成课后案例中对应的功能。

在案例教学方式中,可以对“案例”稍作修改加强学生对程序的各项参数的学习;所用的案例可以重复使用,从而进一步加强学生的学习;在案例教学方式中要把重点、典型的框架和算法的要点进行提取并进行单独多练、多讲学习。

2.3分组教学

课程中将学生分为若干学习小组,每组4―6人,每组组内自己解决问题,组内在学习过程中相互帮助,共同提高,组间相互借鉴,互有竞争,最后汇总所有解决方案。对比出最优的解决方案向其他同学介绍。课堂讨论以小组为单位,提出本组的意见或解题办法,可以充分调动学生学习编程设计的积极性,调动大家发现新方案,培养学生的创新意识和协作意识,激发学生对C语言的学习兴趣,增强学习的主观能动性。

2.4学生示范教学法

课程后教师可以布置练习题目检测学生对教学知识的理解和掌握程度,学生因缺少监督及自觉性,常常会借助互联网、书本等其他途径寻找练习题目答案,而不是通过独立思考完成。鉴于这样的情况,可以安排少量课时讲解题目实施“学生示范教学法”。在“学生示范教学法”中可以让一个同学上台讲所设计的编程,学生设计编程会展现给全体同学,在设计的编程展现过程中出现的错误,教师可以及时改正、更正、讲解,并且介绍避免此类编程错误的技巧和方法。

3.结语

为了适应现代社会人才需求,在课堂教学中帮助学生掌握C语言的基本方法和理论并将其融入今后的专业学习之中,必须对C语言课程的课程体系和教学方法进行改革。改革传统的C语言课程体系,引入适合学生的教学手段和方法,理论和实验相结合,任务和案例相结合,培养学生的程序设计思维能力和计算机程序设计动手能力。通过C语言课程的学习使学生初步掌握和了解结构化程序设计原理,运用C语言的基本要素进行基本的结构化程序设计,掌握利用计算机解决问题的基本思路和方法,能够解决专业学习遇到的相关问题。在本院和老师的努力下,一定能将这门课程讲授好,为社会不断培养高能力的计算机人才。

参考文献:

[1]孙玉霞.基于教育心理学的C语言教学探讨[J].湖北师范学院学报(自然科学版),2011,01:105-108.

[2]刘彩虹,郭政,于建海,王锦.C语言教学探讨[J].信息与电脑(理论版),2011,02:113.

[3]邓松,何火娇,彭莹琼.C语言教学改革探讨[J].计算机教育,2008,16:55-56.