二级c语言程序设计范例6篇

二级c语言程序设计

二级c语言程序设计范文1

关键词:程序设计;c++语言;特色知识点;非计算机专业;教学方法

文章编号:1672-5913(2010)08-0108-04

中图分类号:G642

文献标识码:B

非计算机专业的计算机教学已经从20世纪末以普及计算机文化基础为主上升到目前以掌握计算机应用基础技术为主的新高度。因此程序设计课程已经成为非计算机专业的核心计算机公共课。该课程的知识技能对于非计算机专业学生运用计算机解决今后的专业领域问题有着重要作用。目前,许多高校都是将C/C++系列语言列为核心程序设计教学语种。然而,C/C++由于具有低级语言的特点,又容忍非常灵活的表达方式;此外,许多学校还存在课时不断被压缩的问题。这些特点对于初次学习第一门程序设计语言的学生来说,无疑增加了学习该语言的难度。如何在短期内征服该语言的难点并把握该语言的精髓?无疑只能从教学方法中找出路。我们认为,牢牢把握好C/C++语言的特色知识点并加以很好地突破,能起到事半功倍的教学效果。因此,本文结合笔者的教学实践体会,总结出c++程序设计课程中的若干特色知识点的教学方法,望能抛砖引玉,对提高C/C++程序设计语言的教学质量能起到一点参考促进作用。

1 若干特色知识点教学方法

1,1C++语言的普遍特色――表达式

可以说C/C++是一种表达式语言,其中的任何语句都可以广义地被看成是表达式语句。因此,掌握各类表达式的正确求值规则和顺序,并能准确地确定表达式最终值的数据类型,这是保证所设计的程序能正确实现人们预期结果的前提。正因为C/C++的这个特色,许多在其他高级语言中被称作某种操作的语句,在C/C++中则都是称作某某表达式语句。牢牢把握这一特色,可以在教学过程和学习过程中避免其他高级语言一些习惯性规则带来的负面影响。举例说来,如:“x=f(a,b,c)”这一简单的基本表达形式,其中右边的f(a,b,c)可以是参数a、b、c的任何初等函数,这种形式的语句在许多其他高级语言中是被称作赋值语句(如VB程序设计)。然而在C/C++中则是被称作赋值表达式。既然这是表达式,它就有一个值,于是首先就应该搞清楚它的值是按何规则来确定的;其次还要意识到一般表达式可以出现的地方它同样可以出现。因此,这种类似于其他语言赋值语句的表达式出现在C/C++程序的输出列表中、函数参数中等都是不足为怪的事。比如该形式出现在if判断语句条件表达式所在的位置时,形如if(x=f(a,b,c)),此时如果能牢牢地意识到这里的条件是括号中的赋值表达式的话,就可以避免一个下列常见的错误:认为只要x目前的值与右边f(a,b,c)函数的值相等则条件为“真”。而应该意识到的正确判断是:if语句的条件是否为“真”,取决于x的最终值(即右边f(a,b,c)函数的值)是否为非零。可见表达式在C/C++中的重要性,教学C/C++,一开始就要使学生树立起牢固的表达式意识。

1,2运算符的特色――方向性

相比其他语言,运算符的方向性在C/C++中尤其更加突出地被强调。所谓算符的方向性,就是指算符的结合方向。算符的方向性对单目算符和多目算符有不同的作用。对于单目算符而言,在某种情况下它决定该算符应该与左右哪边的数结合,如果算符的方向性是从右至左(即为右结合性),则单目算符应该与其左边的数结合,反之亦然。举例,若a、b、c原值分别为3、4、5,可以验证a卅b表达式的值是7而不是8。因为“卅”中肯定是由一个单目算符“H”和一个双目算符“+”组成;由于单目算符“++”是右结合性的,所以应该是单目算符“++”与其左边的数结合,故“a+++b”相当于(a++)+b,而不是相当于a+(++b),表达式(a++)+b的值是a的原值3加b的原值4,而表达式a+(++b)的值是a的原值3加b的终值5。对于双目或三目算符而言,当连续有两个以上的多目算符出现在表达式中时,方向性决定着哪边的算符应该先运算。举例说明:若a、b、c原值分别为6、4、5,求下列包含两个连续出现的三目条件算符的表达式值:a>b?a:b>c?b:c。由于三目条件算符(?:)的方向性是从右至左的(右结合性),所以是先计算右边部分的条件表达式b>c?b:c,结果为5;然后再计算左边的条件表达式a>b?a:5,最终结果为6(取a的值)。

可见,只有把握了运算符的方向性,才能正确判定一个表达式的值。C/C++中的大多数算符与其他语言的算符一样,是左结合性的,但是有少数几个特色算符是右结合性的,如:自增、自减、赋值、条件算符等是少数几个为右结合性的算符。对于这些特色运算符要重点讲透。

1,3输入输出特色――输入输出运算符

C++采取不同的方法来实现输入输出。但最常用的方式是通过C++的I/O库中的类――流类(streamclass)所定义的cout和cin对象来实现的。于是用到两个标准类型数据的输入和输出运算符“”。cout与“”运算符配合实现数据输入:基本语句形式如下:

COUt

cin>>x;//输入一个值给x

在记忆这两个运算符的功能时,如果凭机械记忆,日久容易搞反。于是笔者在教学中创造了一种形象记忆方法:将计算机主机比喻为一个人或动物身体,将输入和输出运算符“”形象地比喻为人或动物张开的大嘴,开口的端通往外界(对应计算机外部设备端),尖角的端连通体内(对应计算机主机内部)。输出x时形似将x从嘴里吐出来(输出到外设中去);输入数据到内存变量x时形似将数据吞进体内(输入到计算机内存变量x中)。所以,输出时的x在算符的开口端,输入时的x在算符的尖角端。这样形象化后,记忆就牢固了,使得上述两个基本句型中的“”符号的向就不会搞反。

1,4数据类型的最大特色――指针

指针是C/C++中的一类特色数据类型,被公认为c/c++中的一个难点。究其难的原因,主要有下面三点:一是指针数据特殊(是内存单元地址编号),不能进行普通的算术运算,从指针到指针所表示的对象,是简接地表示对象,绕了一道湾。二是指针的种类繁多,不同类型的指针只能指向不同类型的对象,而许多不同类型的指针变量定义形式又很相似,容易混淆。三是还有一些更复杂的多维指针和多级指针。 为了在较短的时间内突破指针的教学难点,教师必须根据上述三种原因对学生作适当的引导,对知识做简明有效的归纳、对比。

针对第一种教学难的原因,教师必须强调指针变量不能随便赋普通的数值,而只能赋地址值(如简单变量x的地址&x,代表数组首地址的数组名,代表函数入口地址的函数名)。要获取一个一维指针p所指对象的值,用间接访问运算符*,即*p为p所指的对象变量值。

针对指针的种类繁多这一特点,在教学中,每引入一种新的指针类型定义时要注意与前面已学的相似指针类型进行对比,找出它们之间的区别。最后,要将学习过的所有指针类型的定义进行集中对比。

关于多维指针的问题主要是出现在指针与数组的关系方面。一维数组名与二维的数组名都是表示数组的首地址,但它们的性质不同。一维数组名是一种“元素指针”,性质与简单变量指针相同,这种指针加1后将指向数组的下一个元素(如果将数组的首元素称作第1个元素,则数组名加整数n后代表的是第n个元素的地址)。二维数组名是一种“行指针”,性质与简单变量指针不同,这种指针加1后将指向数组的下一行(如果将数组的首行称作第1行,则数组名加整数n后代表的是第n行的首地址)。有的文献将这种“行指针”称作多级指针,我们认为不太合适,因为“多级指针”这个名词更适合用于表达指向指针的指针。所以,我们在本文中称这种与二维数组名对应的行指针为二维指针,而与一维数组名对应的元素指针或指向普通变量的指针称为一维指针,这样命名既与数组的一维、二维相吻合,又避免与指向指针的指针混淆。相应地,我们将指向指针的指针称为二级指针,而指向非指针变量的普通变量指针称作一级指针。在这种定义方式下,一维指针与一级指针性质相同,是等价的同一类指针;但二维指针与二级指针却是有明显区别的。接下来要讲的就是关于*号的作用问题:*号运算符作用在一级(或一维)指针前得到的值是一个普通数据;*号运算符也可以作用到二维或二级指针前,但得到的值却仍然为地址值,只是分别由二维(二级)指针得到一维(一级)指针。仔细分析,可做如下区分性总结:

*号运算符作用到二维指针前是转化指针的性质(化二维指针为一维指针),但得到的结果仍然是数值上与原来指针值相同的地址(等于整个数组首元素的地址值)。如a是二维数组名,则a与*a都是相同的地址。但原来的a是二维地址,a+i指向后移i行的行首位置;而*a是一维指针,*a+i指向后移i个元素所得的位置。一般地,a+i是指向行号为i的行指针(二维指针),加*后的*(a+i)是转化得到的与a+i地址等值的元素指针(一维指针);因此由数组名a得到a[i][j]元素的地址表达式为*(a+i)+j;再由一维地址*(a+i)+j得到该元素值的表达式就是+(*(a+i)+j),这是a[i][j]值的等价表示。当i=j=0时,上式退化为**a,它表示行指针(二维指针)要加两次*号才能得到最终的元素值。二维指针与一维指针示意如图1所示。

*号运算符作用到二级指针前得到的是其所指向的一级指针的值,而一级指针的值则是普通变量的地址;*号运算符再作用到一级指针前得到的是普通变量的值。可用符号语句作进一步表达,若a是普通变量,p1是指向a的一级指针,p2是指向p1的二级指针,实现这种关系的语句为:p1=&a;p2=&p1;于是*p2等价于p1或&a;**p2等价于*p1或a;三个变量的关系如图2所示。可见,对于二级指针,也是需要连续做两次*号运算才可得到最终普通变量的值。

1,5编程思想的特色――重载与多态性

重载的本质就是利用同一个名称标识符或同一个符号表示不同的功能。比如,对于函数重载的情景,就是用同一个函数名对应着多个函数实现的情况。在c++中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就实现了函数重载。用同一个符号表示不同功能的典型例子就是“>>”和“”和“

多态性是指不同类的对象对于同一消息的处理具有不同的实现。多态性在c++中表现为同一形式的函数调用,但可能调用不同的函数实现。从系统实现的角度看,C++的多态性分为两类,一类称为编译时刻多态性,另一类称为运行时刻多态性,也称动态多态性。c++编译时多态性通过重载(函数重载和运算符重载)来实现:而运行时刻多态性的实现是指在程序运行过程中根据具体情况来确定调用的是哪一个函数,它是通过动态联编机制实现的。

2 结语

二级c语言程序设计范文2

关键词:教育技术学专业;软件开发;课程体系

作者简介:董晓丽(1976-),女,山西太原人,中北大学电子与计算机科学技术学院,讲师。(山西 太原 030051)

中图分类号:G642 文献标识码:A 文章编号:1007-0079(2013)10-0117-02

一、教育技术专业概述

教育技术学专业是教育学和技术学相互交叉、相互作用而形成的学科。目前在我国开办教育技术学本科专业的院校已经从师范类院校扩展到综合性大学、理工类院校。开设教育技术学专业的多数高校将教育技术学本科人才培养方向之一定位为教育软件与知识工程方向,该方向着重培养多媒体素材的设计与开发、教育软件设计与开发、网络课程设计与开发以及人力绩效开发与知识管理方面的人才。就专业培养方向来看,各类软件的设计与开发都要求本专业学生有很强的计算机应用(开发和实践)能力,也即计算机应用能力培养在教育技术学专业中占有重要的地位。笔者所在院校为理工类院校,对近几届毕业生的软件开发能力进行调查分析,学生普遍感觉大学四年学了众多计算机类课程,到毕业设计的时候还是不会编程,大四最后一个学期才开始边学编程技术边做毕业设计题目。究其原因,由于教育技术学科是综合性的应用学科,不可避免地在课程设置上存在一些问题:课程开设庞杂,开设多门高级语言程序设计类课程,知识体系有广度没有深度,导致学生学而不精;课程设置缺乏系统性,课程教学内容不连贯或者重复教学;在教学过程中注重理论教学而忽视学生实践动手能力的培养,导致学生编程能力差;核心课程知识陈旧,与现实的教育技术实践应用需求脱节,与现实的计算机发展技术相脱节。课程设置是教学计划的核心,决定着学校的教学内容和学生的知识结构,直接关系到人才的培养质量。为实现应用型人才培养目标,研究并建立适合教育技术学本科专业的计算机软件开发类课程体系,切实提高该专业学生的计算机应用能力是目前重要的课题。

教学技术学专业是一个跨学科的专业,本科生在四年中所能接收的信息量是有限的,不可能将交叉学科的所有系统知识都纳入学习的范围,因此在明确培养目标的前提下,设置计算类课程时不应该“杂而全”,而应该是“专而精”;其次要注意课程与课程之间有效的衔接,避免前后脱节;再次应注意同市场需求以及计算机学科发展结合起来,开设的课程符合社会发展需求;最后突出实践能力,加强动手能力的培养。教育技术学专业本身是一门实践性很强的学科,人才的培养本着学以致用、以学促用理念。

二、课程体系建设

教育技术学本科专业计算机软件开发类课程体系建设目的是让学生熟练掌握一至两门编程语言,熟悉相关开发方法、工具和平台,综合运用所学知识去解决实际问题。鉴于目前主流的编程技术有.NET和Java编程,建立以“C-C#-Java”语言类课程为主线的课程体系,从初级到高级、由简单到复杂,循序渐进逐步提高学生的软件开发能力。

Java语言是面向对象的编程语言,也是目前阶段开发应用程序的首选语言,但是对于大一新生来说,直接接触面向对象编程思想有一定的难度,因此在大学第一学期仍然选择C语言作为程序设计的入门语言,有了C语言的基础,跳跃到C#或Java就十分容易,因为许多语法是通用的。C#是从C/C++派生来的一种简单、现代、面向对象的高级程序设计语言,由Microsoft公司设计运行于.NET框架之上,它具有语法简单、表达力强的特点,对于低年级且又是非计算机专业的学生来说,学习该语言相对比较容易,所以,在第二阶段选择学习C#语言。Java是一种可以编写跨平台应用软件的面向对象的程序设计语言,自1995年由Sun公司推出,就迅速成为全球主流的编程语言,Java基本语法规则和C语言类似,优点之一是去掉了C语言中难学的指针,有助于学习者理解和掌握。但是学习Java语言类开发技术较C#语言有一定的难度,虽然这两种编程语言都为面向对象的程序设计语言。基于上述分析,研究并建立的课程体系为学生第一学期学习C语言之后,在后续的学期过渡到面向对象的程序设计语言。围绕这三门语言类课程,再设计其余计算机软件开发类课程如何衔接。设计的课程体系结构如表1所示。

表1 课程体系结构

开课时间 必修课 大型实验

第1学期 C语言程序设计 无

第2学期 C#可视化程序设计 C#可视化程序课程设计

第3学期 数据结构 数据结构课程设计

第4学期 数据库原理及应用

(面向对象程序程序设计Java) 数据库课程设计

第5学期 Web应用系统开发(JSP) Web应用系统课程设计

第6学期 Java网络编程 Java网络编程课程设计

第7学期 J2EE企业级应用开发 J2EE企业级应用开发课程设计

第8学期 毕业设计

第一学期主修C语言程序设计,掌握面向过程的程序设计思想。第二学期主修C#可视化程序设计,这里注意的是本课程内容包括两部分:一是C#语言基础介绍,二是.NET技术,可视化界面的设计部分。通过Windows界面的设计,学生获得面向对象的感性认识以及认识到编程的实用性,从而提高编程兴趣,有助于后续学期进行软件开发类其他课程的学习。第三学期主修数据结构,目前数据结构课程的教材有C、C++以及Java语言版,由于到此阶段学生未接触Java语言,所以选择C语言版的,学生可用C语言来实现数据结构中的算法,对于Visual C#.NET掌握较好的学生,在数据结构课程设计时可选择用C#语言实现数据结构中描述的算法。第四学期主修数据库原理及应用课程,在讲授数据库编程内容时,由于学生在前面学期已经学习过可视化的程序设计(应用系统前台界面的设计),即已经掌握.NET开发平台的使用,可以重点讲述利用技术如何进行数据库的操作。第四学期同时开设面向对象程序设计(Java语言)课程,为后续课程打基础。第五学期直到第七学期每学期均开设Java语言应用开发类的一门课程,具体包括Web应用系统开发(JSP)、Java网络编程、J2EE企业级应用开发。每学期均安排相应课程的课程设计,有助于消化所学知识,同时锻炼和提高学生分析、设计、编程能力。第八学期学生主要任务是毕业设计,如果是软件开发类题目,那么学生可以利用已经学习过的主流技术.NET或J2EE来完成。

综上所述,将教育技术学专业学生计算机应用(开发和实践)能力的培养分为两个阶段:在大一、大二阶段,掌握C语言结构化编程、面向对象编程(C#)、图形用户界面编程、数据结构及算法、数据库编程,为专业培养目标打下编程基础,该阶段注重.NET技术开发;大三、大四阶段,掌握面向对象编程(Java)、小型Web应用系统的开发(JSP)、Java网络编程、J2EE企业级应用开发,该阶段注重Java程序开发。

以上课程体系安排使学生在大学四年的前两年基本会利用.NET技术进行一些简单小型应用软件项目的开发,如学生对.NET技术感兴趣的话,可以利用大学四年的剩余学期边学习新的课程,边利用业余时间拓展自己的.NET编程技术。学生从第四学期(即大二阶段)开始学习Java相关课程,即Java应用开发阶段,学生利用在校的两年时间主修Java软件类开发课程,学习主流Java开发平台和框架的使用,最后掌握企业级应用系统的开发,逐步提高学生的软件开发能力。这样,大学四年软件开发类课程不断线,且从第二学期开始,每学期都安排课程设计,通过课内实验以及课程设计实践提高学生的软件开发能力,解决学生学习了众多编程语言却不会编程的问题,学生在毕业设计前具备独立开发应用系统的能力,从而提升该专业学生就业竞争力。

三、课程内容解析

以下对课程主要教学内容及教学目标作简要阐述。

1.C语言程序设计基础

掌握C语言的基本结构、各种数据类型、控制流程、函数、数组、指针和结构体的语法及语义,使学生了解结构化程序设计思想,学会用结构化方法编写程序,初步具备解决实际问题的能力。

2.C#可视化程序设计

掌握C#高级语言基础、Visual Studio 2008集成开发环境的使用、Windows界面控件的使用、事件驱动的编程机制,使学生获得面向对象的感性认识,初步拥有Windows应用编程能力。

3.数据结构

掌握数据结构的基本概念和各种基本的数据结构,包括数据的逻辑结构(线性表、堆栈和队列、广义表和字符串、树与二叉树、图、文件等)、存储结构(顺序存储、链式存储)以及在这两种结构基础上对数据实施的基本操作(算法)的设计与分析。

4.数据库原理及应用

掌握数据库系统的一般概念、数据模型、关系模型、SQL语言、数据库安全性、完整性、关系数据库理论、数据库设计、数据库编程、数据库管理系统的使用以及运用开发平台开发数据库应用系统的方法,为从事数据库应用开发打下基础。

5.面向对象程序设计(Java)

掌握Java语言基础、面向对象程序设计思想(抽象、封装、类、继承与多态)、工具类、图形界面编程、异常处理、文件输入输出、数据库编程、Java Applet 编程、开发环境与工具的使用等。着重培养学生对Java 编程思想的体会,为进一步学习Java 语言打好基础。

6.Web应用系统开发(JSP)

掌握JSP软件体系结构、运行环境的安装与配置、JSP基础、JSP常用内置对象、JSP与JavaBean、JSP操作数据库、Java Servlet技术,使学生掌握JSP基本理论知识,能够运用JSP进行Web小型应用系统开发。

7.Java网络编程

掌握网络编程基础知识,基于TCP、UDP以及FTP等应用层协议的Java应用开发,使学生掌握“基于协议”的网络程序开发方式。

8.J2EE企业级应用开发

掌握J2EE的体系结构、Servlet、EJB以及利用开源框架(Struts、Spring和Hibernate)进行J2EE程序开发,使学生掌握基于J2EE的企业级应用系统的开发方法。

四、实践教学体系

与上述课程体系配套的实践教学体系包括每门课程的课内实验和课程设计。课内实验部分主要是基础性实验和验证型实验,重点加深学生对知识的理解,掌握基本技术和方法。从第二学期开始,每学期都安排大型的课程设计,课程设计需要综合一门或多门课程的内容。C#可视化程序课程设计,体验C#的编程思想以及组件开发原理,利用Visual Studio2008集成开发环境来完成应用系统的设计,初步体会面向对象程序开发的思想。数据结构课程设计主要针对具体问题进行数据结构与算法设计,并用C语言或C#语言实现。数据库课程设计主要针对具体问题,按照数据库设计的步骤进行,学生可利用已掌握的.NET技术实现具体数据库应用系统。本课程设计涉及技术和数据库两门课程的知识,是对学生综合分析、设计以及编程能力的检验。Web应用系统开发(JSP) 针对具体问题,运用JSP技术及JDBC数据库访问技术,利用开发平台实现小型的Web应用系统,主要检验学生运用JSP技术解决实际问题的能力。Java网络编程课程设计主要检验学生“基于协议”的网络程序开发能力,即学生运用已掌握的网络编程技术进行基于TCP、UDP、FTP等协议的小型应用软件的设计与开发。J2EE企业级应用开发课程设计主要针对Java企业级架构开发,学生使用Struts、Spring和Hibernate进行整合开发Web程序。在完成课程设计任务过程中,学生需要查阅课外知识,有助于培养学生的自学

能力,同时锻炼和提高学生综合分析、设计和编程能力,完整体验到一个应用系统开发的全过程,巩固了已学的知识,为毕业设计和就业打下良好的编程基础。

五、与课程体系相关的教学改革

1.改革教学手段

采用案例教学法。由于学生缺乏实际开发经验,为了充分调动非计算机专业学生学习软件编程积极性,在上课前期就强调应用,精心准备一些与课程相关的应用软件系统案例,使学生从接触课程开始就认识到学习编程的实用性,从而提高学习的兴趣,有利于整个教学过程的实施。

2.改革实践教学环节

转变“重理论、轻实践”的观念,建议采取课堂教学与实验教学相结合、课内与课外实践相结合的教学方法。教师可将课堂教学中技术性、操作性、应用性比较强的内容直接在实验室中进行教学,采取边讲边练的教学方法,使学生在实际操作中掌握相关的知识、技能和方法;为了更好地培养学生的实践能力,应积极加强课外实践活动,例如参与其他院系的网络精品课程建设、教学网站的设计与开发和教育游戏软件的设计与开发等,这些课题本身就属于教育技术学专业应用研究课题,学生在参与过程中,不仅锻炼了动手编程、解决问题的能力,同时还锻炼了与他人合作解决问题的能力,使人才培养方案与社会需求结合,做到学以致用。

3.改革实践教学考核方式

实验考核不但可以考核学生对知识的掌握程度,还能够激发学生的学习积极性,对学生有很大的引导作用。实验部分分数比例设置过低,会使一些学生轻视实践环节,所以适当提高实验分数比例是必要的,且对于不同类型的实验,应采用不同的考核方式。

六、结束语

教育技术学专业是一个交叉学科,学生计算机应用能力的培养在该专业的培养方案中占有重要的地位,加强学生计算机软件开发动手能力也是当前提升学生就业竞争力采取的必要措施。在本文中,主要探讨了教育技术学软件开发类课程体系的建设,通过研究,建立了以“C-C#-Java”语言类课程为主线的教学体系,突出的是该专业学生实践动手编程能力的培养,希望能够为教学技术学本科专业的计算机类课程教学提供一些帮助和启示。教育技术学专业学生计算机应用能力人才的培养是一个循序渐进的过程,该专业计算机类课程体系的改革研究,仍然需要在实践中不断深入探索和完善。

参考文献:

[1]文冬,周燕红,原福永.理工类院校教育技术学本科专业的发展思路[J].教学研究,2007,30(1):49-52.

[2]伍顺比,姜玲.关于教育技术学专业课程体系的思考[J].现代教育技术,2007,17(8):16-19.

[3]林玉琴.教育技术学本科专业课程设置刍议[J].中国电力教育,2010,(12):92-94.

二级c语言程序设计范文3

关键词:问题驱动;案例教学;AHP算法

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)28-0160-03

Application and Discussion about the Teaching Reform on the C Language Programming

XU Ping1, GONG Li-hua2

(1.Department of Information Science and Technology, Taishan University, Tai'an 271021, China; 2. Further Reeducation College, Taishan University, Tai'an 271021, China)

Abstract: Case teaching, as a new approach, is widely used in various teaching fields. The paper mainly introduces this kind of teaching approach, which is inspired by the programming and leads in the contents by specific cases in the course of C Language Programming and makes evaluation to the approach by teaching effect evaluation method on the basis of AHP algorithm.

Key words: question inspiration; Case Teaching; AHP algorithm

1 引言

《C语言程序设计》是一门实践性很强的课程,该课程的学习有其自身的特点。学习者必须通过大量的编程练习,在实践中掌握语言知识,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。因此,《C语言程序设计》课程的教学重点是培养学生的实践编程能力。

在传统的教学方法中,采用“点―线―面”的教学模式,即先介绍变量定义,再介绍指令的语法规则,最后例子讲解。这种教学模式不利于将知识转化为能力。为此,笔者从理论和实践上探索了《C语言程序设计》这门课程新的教学方法,并收到了良好的教学效果。

2 问题驱动,案例教学

案例教学法最早于1870年在哈佛法学院创立。后来,案例教学法为哈佛商学院所采纳,被引用在工商管理教育中。经过近百年的积累和发展,案例教学法已成为西方国家工商管理教育的重要手段之一。所谓案例教学法是在教师的指导下,对案例提出的问题,运用所学的理论知识进行分析研究,提出自己的见解,做出判断和决策,达到提高学生分析问题、解决问题能力的一种理论联系实际的启发式教学方法。

案例教学法的教学过程包括案例引入、案例学习、案例总结三个阶段。在《C语言程序设计》课程的教学过程中,以编程应用为驱动,通过案例引入内容,重点讲解算法设计,并穿插介绍相关的语言知识。

2.1 案例引入

在讲C语言基本语法时,如果从数据类型、变量、常量、表达式开始,学生觉得特别抽象,不好理解。而我们用案例教学法,首先引入案例,并给出程序源代码,让学生进行编辑并调试。

案例:求摄氏温度40℃对应的华氏温度。计算公式如下:

f=9c/5+32

式中:f表示华氏温度,c表示摄氏温度。

源程序:

/* 将摄氏温度转换为华氏温度 */

# include

int main(void)

{

int c, f;

c=40;

printf("c=%d, f=%d \n", c,f);

Return 0;

}

运行结果:c=40, f=104

2.2 案例学习

通过案例提出问题:在案例中使用了哪些数据?它们的类型是什么?

讲解相关知识:在C语言中,数据有常量和变量之分。在程序运行过程中,其值不能改变的量称为常量,其值可以改变的量称为变量。在案例中,整数40是常量,c和f是变量。

常量和变量都有类型,常量的类型通常由书写格式决定。例如,40是整型常量,40.12是实型常量。而变量的类型在定义时指定。

变量定义的一般形式:类型名 变量表;

例如:

int c, f;/* 定义两个整型变量c和f,用于存放整数*/

char a;/* 定义一个字符型变量a,用于存放字符型数据*/

C语言中常用的数据类型包括int(整型)、char(字符型)、float(单精度浮点型)、double(双精度浮点型)。其中,float和double都是浮点型(实型),用于存放浮点数(实数),区别在于double型数据占用空间更大,精度更高,取值范围更大。

2.3 案例总结

通过案例学习,让学生很轻松的掌握了数据类型,以及常量、变量的使用方法。并且提出几点注意的问题:

1) C语言中变量的含义和数学中变量的含义不同。C语言中的变量代表保存数据的存储单元,而数学中的变量代表未知数;

2) C语言区分大小写字母,它认为Ca和ca是不一样的;

3) 算法是程序的灵魂,良好的算法设计,不仅可以提高程序的执行效率,起到事半功倍的效果,而且可以以算法设计为基础,通过寻求不同问题存在的相互联系,从计算机角度对不同问题的共性进行算法设计,实现程序编写的举一反三。

根据案例提出:

思考题1:求摄氏温度30℃对应的华氏温度。

思考题2:求华氏温度100℃对应的摄氏温度。

3 课程教学改革效果的评价

在课程改革实践中,如何评价课程教学改革的效果至关重要。同时,教学效果的评价结果在实践过程中可以指导课程改革。本文参考AHP算法,从学生评教、教师评学两个因素建立教学效果评价指标体系和多级模糊评判模型,实现课程教学效果的多指标评价。

3.1 基于AHP的教学效果评价算法

AHP算法是一种有效地处理那些难以抽象为解析形式数学模型的问题(即非结构化问题)或难以完全用定量方法来分析的复杂问题的手段,其主要思想是将一个复杂的多因素评价问题分解为具有递阶结构的评价指标和评价对象。二级模糊层次分析决策模型的步骤如下:

1) 根据实际需要建立评价指标因素集U={u1,u2,…un},将U分成若干组U={u1,u2,…,uk},使得■,称U={u1,u2,…,uk}为第一级因素集。■ (i=1,1,…k),其中nl+n2+…+nk=■称为第二级因素集。

2) 选择模糊评判集V={v1,v2,…,vm},其中vj(1

设■的权重为■,求得综合评判为■。

3) 再对第一级因素集U={u1,u2,…,uk}作综合评判,设U={u1,u2,…,uk}的权重为A=(al,a2,…,ak),总评判矩阵为:

得一级模型的综合评判为A・R=B∈Γ(v)。最后,根据评判结果B进行排序,确定该教学年度的教学效果,其值越大,教学效果越好。

3.2 教学效果评价指标体系的构建

由于评价对象的某些评价因素往往带有一定程度的模糊性,即具有非线性特征,所以进行教学效果评价时采用了模糊综合评判模型。调查问卷中除需要给出各评价项目的权重外,还需给出各评价项目的得分。结合教学改革的实际情况,我们给出如下的评价准则,包括学生评教、教师评学两个一级指标,并建立相应的二级评价指标(如图1)。我们在构建教学改革效果评价指标体系时,着重考虑的是通过《C语言程序设计》课程的教学改革,是否能达到改革的目标。

3.3 教学效果评价

我们从2006年开始对本学院计算机系C语言程序设计课程进行教学改革。在课程结束后采用问卷调查的方式随机抽取部分学生进行学生评教,并由任课教师完成教师评学(如表1)。

表1 教学改革效果评价表

利用本文提出的基于AHP的教学效果评价算法,得综合评判为:B=A×R=(82.375,86.625)。数据表明,在2006、2007级学生《C语言程序设计》课程的教学效果评价中,2007级学生的评价值最高。

4 结束语

由此可见,随着教学改革和课程建设的深入,《C语言程序设计》课程的教学效果得到了显著提高,也增加了学生学习《C语言程序设计》课程的兴趣。并且培养了学生可以用C语言很好的解决实际问题的能力,为以后进一步学习其它高难度的编程语言打下了良好的基础。

参考文献:

二级c语言程序设计范文4

【关键词】FORTRAN;C语言;OpenGL;混合编程;土木工程计算

通常情况下,土木工程的计算程序都是借助FORTRAN实现的,在运用FORTRAN进行数值的计算过程中,其能够呈现出不同的优势,但是,同时也存在效率不高的问题,而且不能在windows的开发环境中使用,不能建立人机界面,在图形显示中操作流程过于复杂。C语言是在NET平台上开发的,这种程序使用了比较简单的语法,而且便于调试,在程序开发中效率更高。OpenGL是一种图形库,里面都是三维的图形,实现了硬件和软件的结合使用,使用的效果好,在动画绘制中常见,而且能够将图形的绘制与计算机技术以及虚拟现实技术结合,其是一个模型库,运用三维的图像呈现,在不同的平台上都可以使用。其可以实现几何模型的建立,通过渲染的方式实现动画的制作。

一、C语言与FORTRAN的混编

运用C语言能够实现交互性的界面,建立土木工程计算的框架,将之前的FORTRAN的源代码进行编译,形成一个动态的链接库,在此基础上,能够将代码转送到C语言程序上,完成两种不同语言的婚变。可以运用编译器实现文件混合的编程,程序之间应该建立一致的调用程序,建立完善的调用机制。这些机制主要分为堆栈管理机制、命名机制、参数传递机制。在C语言和FORTRAN混编中,应该使两种不同语言的字符参数一直,而且DLL文件能够显示出信息的输出。

(一)字符串参数的一致

在C语言中,字符的结束是运用null数值来表示的,FORTRAN中字符串是在右端设计空格的方式来表示的,运用一个隐藏的参数能够表示字符串的实际长度。而且,FORTRAN的默认的字符是用ASCII编码来表示的,所以,FORTRAN要运用编译器实现中文字符的支持。但是,在C语言中,其字符的编码是通过unicode实现的,所以,在语言层上就能够实现支持中文的字符。通过对不同语言的表示方法的分析,分析了影响因素,如果字符串是通过FORTRAN到C语言,那么,可以在NET网络环境中实现,这时C语言就会自动提供函数字符,将ASCII编码转化成unicode编码。如果字符串是由C语言转化成FORTRAN,就需要运用字符串的长度来实现。

(二)DLL文件内部的提示信息的输出

在大型土木工程计算程序的编程中,运用FORTRAN,会出现PRINT等语句,这类的语句表示程序是运行的,在这些程序改造的过程中,是运用DLL文件和C语言一起应用,结合了windows程序后实现的,所以,输出设备此时不发挥作用。为了能够分析FORTRAN的内部调制问题,就需要在DLL文件中进行信息输出,设计信息的函数,建立一个控制台的窗口,运用PRINT语句建立输出设备。

二、C语言与OpenGL的混编

C语言是运用NET平台进行编程的一类高级的语言,但是,在NET环境中,不能够对OpenGL的接口进行设计,所以,OpenGL中混合C语言,其不能与其他的高级语言一样实现语句的引用和部署,不能够直接的使用OpenGL固有的图形数据库。所以,在C语言中,这类技术要借助第三方的软件才能够实现。

(一)GSGL的动态链接库的分析

GSGL是在windows系统下建立的一类接口,其在C语言中常用。GSGL的动态链接库在使用时是用gldll实现的,形成了不同的类型,在不同的类型中都可以建立OpenGL的标准函数,借助数据库的函数、辅助型的函数等,设计使用函数库和常量。在OpenGL能够生成自动化的定义,通过绘制函数的形式实现了OpenGL场景的定义,在进行场景的初始化和绘制函数中完成两种高级语言的混编。GSGL在进行程序设计中不一定要用到,但是在程序运行阶段其是必不可少的。在对每个空间名称进行函数定义的过程中是经常使用的,而且能够借助GSGL在NET环境中实现对查阅库文件的阅读。

(二)在C语言中对GSGL的OpenGL的引用

在NET环境中形成C语言的应用程序并不复杂,在IDE换种中选择C语言的创建项目,然后打开windows程序,将项目的名称输入,建设保存的位置,点击确定,项目就完成了创建。在项目创建的过程中,建立了空间的名称,而且是以窗口的类型实现的,在应用程序中实现了主入口函数的设计。所以,在建立应用程序框架的过程中,运用程序,要实现对OpenGL的引用,在C语言中借助using关键词实现对不同程序的引用。将OpenGL的绘图功能在C语言的程序得以更好地应用。

(三)建立OpenGL设备的应用环境

在运用OpenGL进行图形的绘制中,应该建立设备环境的绘制,建立一个绘制表面,在所建立的空间名称中加入一个应用,然后再应用中加入很多素材,将这些素材都放在窗口上,实现OpenGL可视化的场景。这样所以的图形都可以在窗口上绘制和修改。

(四)创建OpenGL绘制环境和功能的初始化

在绘制表面建立窗口,能够为OpenGL的运行创作绘制的环境,在OpenGL运行的过程中,其使用的是绘制的环境,而不是设备的环境,所以,要建立完善的绘制环境,不然OpenGL在C语言中是不能执行的。在OpenGL建立一个绘制环境的函数,通过对函数的重写完成绘制环境的创建,建立绘制环境的初始化。

(五)运用OpenGL进行图形和场景的绘制

在以上的操作都完成后,就可以借助OpenGL实现场景的绘制,运用绘制函数,设计源代码,设计单位的矩阵的方式,建立绘制图形的代码。

三、混合编程的实现与应用

本文将三种高级语言进行混合编程,在网络环境下建立语言编译的环境,以windows作为系统操作的平台,在此基础上,借助DOS实现GSAP程序的运行,在windows平台上实现人机界面的交互,建立交互式的软件。这类软件是在原有的程序改造上实现的,运用DLL文件的形式呈现出来,其界面是通过C语言程序编制的,通过建立函数的形式使图形显示出来。在程序的混编中,通过运用DOS平台,实现不同命令的输入和执行,对结果进行查看,在对windows程序进行计算完成后,其计算和模型的图像就会直接显示出来,使用非常得便捷,界面的改造也不复杂。借助三种高级语言的混编能够实现空白动态链接的设计,将源代码进行统一,运用C语言实现windows应用程序的改进,通过窗口的形式展现出来。

结语:

在土木工程计算程序的改造中,将不同的语言结合在一起,采用混编的形式,能够提高土木工程相关参数计算的精确度,完善其计算的效率,在C语言中,字符的结束是运用null数值来表示的,FORTRAN中字符串是在右端设计空格的方式来表示的。

参考文献:

[1]周涛,郭占元,郭向荣. FORTRAN与C#混合编程在土木工程计算中的应用[J]. 山东交通学院学报,2011,01:80-86.

[2]周涛,汪金辉,郭向荣. 利用混编技术对土木工程计算程序的改造[J]. 河北理工大学学报(自然科学版),2011,03:124-129.

[3]覃辉. 测量学教材的便携编程计算解决方案[J]. 高等建筑教育,2011,03:137-142.

二级c语言程序设计范文5

关键词:高职;c语言程序设计;教学改革

0 引言

c语言程序设计课程是高职计算机类专业的核心基础课,也是电类相关专业的专业基础课,对后续课程的学习起着举足轻重的作用。学好c语言程序设计课程也会增强学生的学习自信,但是该课程传统的教学效果不尽如人意,学生第一次上课时会满怀信心,可随着c语言各种数据类型、语法规则的不断呈现,以及c语言本身的灵活、语法限制不严等特点,使多数学生逐渐失去学习的信心,最终的结果是大家一致反映c语言难学,学不会,只有一个办法:放弃。对于高职院校来说,c语言程序设计的教学已到了非改不可的地步。因此,如何改便值得我们研究与探讨。笔者从教与学两方面分析问题,探讨解决问题的办法,并进行相关实践,取得了一定的改革成效。

1 问题分析

我们从教与学两方面进行分析,主要有以下几个问题:

(1)教学内容不能满足学生后继课程学习的需要。长久以来,该课程的教学多数选择谭浩强教授主编的《c语言程序设计》作为教材。该教材理论体系完备,但是遵循该教材体系所开展的教学,不太符合高职学生的认知特征,并且教材的重点是对c语言本身的语法规则进行讲解,而对于程序设计方法、程序设计思想没有特别重视。另外,c语言的教学考核标准也是参考全国二级C语言考试大纲。全国二级C语言考试同样是较多地强调了c语言本身的语法规则。即便二级考试中有机考,但由于受阅卷等限制,并不能全面考核学生的编程能力、程序调试能力。因此,这样的教学内容不能满足高职学生后续课程学习的需要,不能起到专业基础课程的实际作用。

(2)教师缺乏改革思路。目前高职院校的教师可分为三类:一类是老教师,从内心不太乐意进行教学改革,对改革有畏难情绪,认为延续传统的教学比较轻松方便,而对于课程的教学效果不好,更多从学生身上找原因;第二类是从学校毕业直接走上讲台的新教师,没有太多的教学经验,主要把自己在大学里学到的知识、教师的教学方法沿用到自己的教学中,还没有来得及思考改革的问题;第三类教师是学校教学的中坚力量,意识到需要改革,甚至也做过尝试,但是,缺乏清晰的改革思路,对存在的问题及教学目标分析不透彻,改革不易收到理想的效果。

(3)不能针对学生的学习特点开展教学。我国延续了30多年的高考选拔方式仍然以笔试为主。根据多元智力理论,我们可以知道,这样的选拔方式使进入高职院校的学生的动觉智力、空间智力、人际交往智力较强,数理智力、语言智力相对较弱,再加上高职学生普遍自尊心、进取心较强,往往是不甘落后,但是学习较情绪化,对感兴趣的东西、实践性环节的学习积极性较高,而对枯燥的理论知识学习兴趣不浓,甚至是有些抵触。而c语言语法规则需要强化记忆与理解,教学过程中,多数采用理论讲解加上机实践的教学方式,较少地从激发学生优势智力的方面开展教学。这样随着教学的难度增加,往往会令学生逐步失去学习的信心。

2 解决办法

1)准确定位教学目标。

高职院校的总体教学目标是让学生在获取专业文凭的同时掌握一项或多项专业技能,为更好地实现就业做好准备,因此每门课程的教学既有理论目标也有技能目标。c语言程序设计课程的教学目标应该定位为:通过本课程的学习,学生要建立起结构化程序设计的思想,养成良好的程序设计风格和严肃认真的工作作风,掌握c语言基本语法规则和结构化程序设计方法,逐步积累常用算法和程序设计的技巧,并能初步运用c语言编程解决常见的简单应用问题,为后续的数据结构、Java编程、嵌入式应用编程等课程打下良好的基础。c语言程序设计是一门核心基础课,其教学主要是为后续的课程服务,因此我们的教学重点应该是教会学生如何运用C语言编写应用程序,而不应该放在相对枯燥的C语言语法规则的学习上,注意把握“为用而学”的原则,使学生学了就会用,并且能做到越用越熟越精,而不是使学生越学越没有兴趣,越学越没有信心。因此准确定位课程的教学目标,将决定后续教学方法选择和所达到的教学效果。

2)强化教师教学改革意识。

意识决定行动,教师有了教学改革的意识,才会努力想办法改革教学,发现问题并进行分析,寻找解决的途径。教师教学改革意识的强化,可通过参加校内外的培训、参观、讲座、各类有关改革的会议等,多渠道多途径让教师接触了解一些教学改革的思路、方法,在思想上对教学改革有所认识,并能结合自己所授课程目前的教学状况进行分析,逐步认识到c语言程序设计课程必须进行教学改革。同时改革是一个系统工程,教师还必须从教学目标、教学内容、教学方法等多方面进行改革。学校作为改革的倡导者,也需要出台一些教改政策,鼓励教师进行教学改革,以提高教学效果。

3)改革教学方法,全面提高教学效果。

在解决了教学目标、教师改革的主动性问题之后,现在要解决的就是具体教学方法问题。教学方法得当,将会收到事半功倍的效果。前面已经分析,高职学生对于逻辑性强的知识学习较为困难,更擅长动手操作和形象思维知识的学习,另外他们好胜心强,但缺少毅力,因此只有选择了正确的教学方法和教学模式才能收到理想的效果。任务教学法、项目教学法是改革的主要教学方法,这些方法强调学生学习的主体性,教师教学的主导性,结合理论实践一体化的教学模式,充分发挥学生学习的优势,能有效地调动学生学习的主动性和积极性。在采用较为有效的教学方法的同时,配合教学考核方法的改革,将过程性考核融入任务与项目教学中,对学生在学习过程中表现的能力和知识水平的提高,及时给予肯定与鼓励。教学中还要注意,改变学生的学习意识,引导学生建立主动学习的意识,变中学时期的被动学习为主动学习,变被动地学习知识为主动地对学习知识的方法的学习和技能的训练,教师要灵活运用多种教学方法,真正做到授人以渔。只有这样,才能真正发挥教与学的双主作用,真正提高教学效果,使该课程真正受到学生的欢迎。

3 实践效果

关于C语言程序设计课程,在2006年我们曾经有院级立项教改课题,确定的教学改革目标是提高全国二级c考试通过率。经过第一轮的教改实践后,虽然全国二级c考试通过率有所提高,但是对于后续课程学习的支撑效果并不理想。学生通过了全国二级C考试,可仍然不会应用c语言编写相关的应用程序,程序编写能力不能满足后续课程的教学需要。经过再思考,并对高职教学改革的理论进行再研究与分析,我们提出了解决c语言程序设计教学改革办法,并开展了教学改革的系列工作,收到了较好的效果。

1)精选教学内容,编写教学讲义,出版教材。

根据确定的教学目标,重点培养学生规范的程序编写能力,对于c语言相对复杂的语法规则及技巧性表达方式,则进行简化,以满足编程需要为原则。在这样的原则上,精心选择教学内容,将教学方法的改革融入教学内容中,形成了由9个任务和3个项目组成的教学内容(如表1所示),并最终出版了教材。整个教学内容的编排思路是:先引导学生认识c语言及集成调试环境,然后是强调编程的规范性,第3个任务是教会学生学习c语言程序设计的方法,从第4个任务开始,由易到难逐步展开教学内容,最后通过3个完整的项目,同样由简单到复杂、循序渐进地讲解如何使用c语言编写应用系统。教材内容的呈现方式上,坚持以程序设计思想、方法以及运用c语言编程解决问题为主线,把讲授语言的概念转变到讲授语言的运用上,把抽象的概念用实例进行展示并通过实践进行体验。为了保证知识的完整性、系统性,设置了拓展阅读栏目,对c语言复杂的语法规则、程序测试的概念、快速排序算法、自我学习与团队学习等知识进行讲解。

2)充分考虑学生的特点,灵活运用各种教学方法与手段。

本课程的教学内容中已经融入了任务驱动教学法和项目教学法,充分考虑高职学生学习的特点,我们给学生提供了自主学习的机会,而不是被动地接受知识。当然,由于学生的层次差异,以及自我管理能力的不同,同时也为了进一步强化知识和技能,每次任务和项目进行过程考核外,还会灵活地采用传统的教学及考核方法。例如,开始入门的时候要求学生抄写一些典型程序,以理解程序编写的思路;中间的时候,对于常用的算法,要求学生理解的基础上加强记忆,因此默写如冒泡排序等典型算法也是一种考核方法,这些方法的综合运用,收到了较好的教学效果。

教学中,还要考虑各种教学手段的运用,例如,常用的多媒体课件能够将难于理解的抽象概念及过程,解释得更加形象生动。其实,在我们身边还有更好的可以用来解释抽象过程的资源,那就是学生。例如,冒泡排序算法,这是教学的一个难点,除了用多媒体课件进行演示外,可以请学生把这个过程进行更加生动有趣的演示,增强算法讲解的趣味性,使学生在活动的过程中,掌握冒泡排序算法,加深理解与记忆。

3)集体备课,发挥教师的创新精神。

头脑风暴法越来越得到人们的认可。通过教师课前集体头脑风暴,共同讨论教法、教学难点,鼓励年轻教师多听有经验教师的课,并且课后及时总结,进行优势互补,发挥教师的创新精神,把c语言程序设计课程的教学改革真正落到实处。例如,通过头脑风暴,我们提出了程序设计的三部曲,即输入数据、输出结果、中间处理过程。过去我们的学生拿到编程题,往往无从下手,通过三部曲,结合高中数学的解题过程,将三部曲的输入数据对应到数学题的已知条件,输出结果对应到数学题的结论,中间处理过程对应到数学题的证明或解题过程。经过这样的关系对应后,学生明白了程序设计其实就是将数学的解题过程,用计算机的语言表达出来,最后让计算机来进行计算。学生一下子觉得程序设计并不神秘,只不过是把数学家已经解决的问题用计算机语言描述而已,这样使学生有种亲切感,再通过由易到难循序渐进的教学过程,逐步建立起学生学习的信心。

4)建立立体教学环境,拓展学生的学习时空。

随着信息技术和现代教育技术的发展,网络、手机、电脑的便捷使用,我们建立了课程网站,将课堂讲义、课件、习题解答指南、应用项目开发案例、自我测试题等上传到网上,并且实现网络答疑,网上提交作业,开展网络讨论,拓展了学生学习的时空,使学生任何时刻只要有网络,即可进行学习交流。另外学校还定期开放机房,安排专人进行现场辅导答疑,给学生提供了一个立体的教学环境。同时还鼓励学生参加蓝桥杯、IATA程序设计大赛,以赛促教、促学,形成良好的学习氛围。

二级c语言程序设计范文6

关键词:C语言;淘汰;教学改革

C语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11 计算机上使用。它由早期的编程语言BCPL (Basic Combind Programming Language)发展演变而来。C语言作为介于高级语言和低级语言的“中级语言”,它能够把高级语言的基本结构与低级语言的高效实用结合起来,它技能用来编写系统软件,又可用来开发应用软件。C语言在当时被认为是当今世界最有发展前途的计算机程序设计语言之一,也因此C语言的设计者获得了计算机科学界的最高奖—图灵奖。

C语言具有功能丰富、表达能力强、使用灵活、应用面广、目标程序效率高、可移植性好等许多的优点,所以C语言自诞生之日起,就受到了计算机业界的广泛关注,更是成为各大高校计算机专业的入门必修课程之一,对于广大的职业院校也是很欣然的把C语言放到新生入学的第一学期。但是随着一些教育文件的出台和教学改革潮流,一些职业院校认为C语言过时了,和高级语言以及现代编程思想的衔接性差,所以出现了淘汰C语言而改用其它语言作为入门语言的做法,而且越来越多的院校一直讨论“到底该不该淘汰C语言”这个问题,C语言陷入了一种比较“尴尬”的境地。

作为一名高等院校的教师,从2002年毕业开始参加工作以来,一直从事该课程的教学。2005年,河北省下发了“关于加强高职高专教育教学工作的若干意见(冀教高[2005]44号)”文件,其中提到高职高专教育是高等教育的重要组成部分,要以综合素质为基础,以职业能力为本位,继续推进教学内容和课程体系改革。我也积极响应,加入的教学改革的潮流中,但是对于越来越多的院校将C语言推向了“淘汰与否”的边缘的这种做法,我却不能认同,我觉得C语言没有过时,它仍然很“体面”,而且很“高贵”。下面以我的具体的授课计划和设计说明原因。

一、C语言是程序设计中使用最广泛的语言之一,那就应该有自身的不被替代的优点。

1、C是中级语言,它把高级语言的基本结构和语句与低级语言的实用性结合起来。它可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

2、C语言是结构式语言。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

3、C语言功能齐全,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。

4、C语言适用范围大,C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。

就是由于它层次清晰、便于按模块化方式组织程序、易于调试和维护、表现能力和处理能力极强等诸多的优点,所以用它作为新生的专业入门语言再合适不过了。

二、C语言和现代高级语言以及编程思想可以很好的衔接。

1、课程内容的选取。

C语言做为计算机专业新生入门的第一门专业课程,但是不同的计算机大类下的小专业的课程的内容的设置是不同的,本着课程内容选取以应用为目的,以“必须、够用”为度【教高[2000] 2号】,所以课程的内容选取及以及课时安排要及时进行改革。见下表(以我院校该课程的教学计划为例)。

序号内容说明1C语言的基本知识

  基本数据类型

  常用运算符

  常用表达式体现出“基本”和“常用”。2顺序结构程序设计

  格式化输入输出函数三种基本的程序结构。3选择结构程序设计4循环结构程序设计5函数模块化编程思想6数组体现存储数据的工具的思想7指针7~10号为“应用技术”专业选取,其它如“软件技术”专业可以不选。8结构体、共用体、枚举9位运算10文件11综合实训知识的综合应用

2、课程设计。

从“课程的教学计划表”中可以看出,“应用技术”专业比“软件技术”专业,所以在具体的课程设计中也要作具体的设计与安排。

(1)考虑后继课程的需要,“软件技术”专业不再把指针、结构体、共用体、枚举、位运算、文件等章节作为授课内容。

(2)“软件技术”专业专业的重点放在三种基本的程序结构和函数等章节,而对于数组,要弱化结构,强化功能,把它看做存储数据的工具,即“数据库”,这样可以和后继的程序类课程、数据库类的课程很好的衔接。

(3)“软件技术”专业的具体授课中,要加入“程序设计能力”的培养,所以课程以“讲练结合”的形式进行安排,保证同学们有足够的思考时间。

课程改革是必须的,因为只要是对学生有利的就是对的,但是改革不是盲目的删、改,要真正的抓住其本质来判断,我认为我抓住了C语言的本质,但我也对该课程进行了改革,结果对于我来说是满意的,C语言仍然可以“体面”而“高贵”的继续流行。

参考文献:

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