c程序范文

时间:2023-11-05 07:01:48

c程序

c程序篇1

在源程序中,很多符号都是成对匹配出现的,为避免遗漏必须配对使用的符号,在输入时,可连续输入这些起止标识符,然后再在其中进行插入来完成内容的编辑。虽然C语言程序的书写格式非常自由,但从程序结构清晰,便于阅读、理解、维护的角度出发,建议在书写程序时应遵循以下规则,以养成良好的编程习惯。

1、一个说明或一条语句占一行。

2、用花括号括起来的部分,通常表示了程序的某一层次结构,左花括号一般与该结构语句的第一个字母对齐并单独占一行;右花括号同样单独占一行,与该结构开始处的左花括号对齐。

(来源:文章屋网 )

c程序篇2

关键词:C++程序设计;面向对象;教学方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2009)33-9278-02

Research on C++ Programming Teaching

LU Wei

(School of Computer Science and Technology, Huaiyin Normal University, Huaian 223300, China)

Abstract: C++ Programming is a required course for computer speciality. With the author's teaching practice, teaching content, teaching method and teaching means of this course are discussed in this paper in order to improve teaching quality and effect.

Key words: C++ programming; object oriented; teaching method

C++程序设计是计算机专业的重要基础课程,对这门课的理解、掌握和拓展,能够为提高学生的编程及软件设计能力打下良好的基础。这门课程实践性强,涉及的部分概念非常抽象,对于初学程序设计的学生而言, 具有较大的难度。以下几点是对C++程序设计教学的探讨:

1 合理安排教学内容

C++是多重范型编程语言,同时支持过程形式、面向对象形式、泛型形式、元编程形式的语言。可以将其看作由C、面向对象C++、模板C++、标准模板库(STL)四种次语言构成。结合课程教学要求,围绕上述内容如何安排教学至关重要。

以介绍如何使用C++进行面向对象程序设计为主线,突出封装性、继承性和多态性等面向对象程序设计的特点,通过概念讲解、源代码分析和编程实践等方式让学生逐步掌握面向对象程序设计的方法。学生具备一定的运用C++进行面向对象程序设计的能力后,再引入模板的概念并适当介绍诸如泛型编程、STL等内容,拓宽学生的视野。采用上述组织方式,既兼顾了面向过程程序设计的基本知识,同时突出了面向对象程序设计的核心地位,并且使学生对使用C++进行软件开发的方式有了较为全面的了解,为其今后深入学习C++相关内容指明方向。

2 强调算法、淡化语法

注重介绍有关算法概念,即突出程序设计而不是语法。在掌握了基本而常用的语法之后,可以根据学习进度和程序设计的需要学习相关语法。学习新的程序设计语言的最佳途径是编写程序,不是知道的语法越多,程序编得越好,而是自己动手编程越多,编程水平才越有可能得到提高。突出算法,进而带动基本语法的学习,可以更加合理地安排学习时间。需要注意的是,这里强调的算法主要是指常用算法,在熟练掌握面向对象程序设计基本概念和方法之前,不宜过多地采用以数据结构课程中复杂算法的C++实现作为例子的方式来介绍面向对象程序设计的有关知识点,那样会增加学生的学习难度,适得其反。

3 明确教学重点

将面向对象C++的关键技术作为重点实施教学,可以达到事半功倍的效果。

封装、继承和派生。提倡完善的类对象封装,不仅封装数据和对数据的操作,而且封装资源(尤其是内存)的动态分配与释放,形成一个完备的子系统。介绍继承和派生的概念,派生类的定义方式,派生类的构成,类的继承方式与派生类成员的访问权限,单继承下的构造函数与析构函数,什么是多重继承,多重继承下的二义性问题,虚基类等内容。

多态性。多态性包括编译时的多态和运行时的多态。编译时的多态是由函数的重载和运算符的重载实现的,运行时的多态则是通过继承关系和虚函数实现的。两类多态性的目的都是要建立通用的程序。

模板。模板的作用在于定制函数和类。只要将数据类型传递给函数模板和类模板,就可生成特定数据类型下的函数和类,实现了数据类型不同、程序逻辑完全相同的代码的重用,减轻了编程的工作量,并可使大量常用的功能代码完整而简洁地纳入到标准库中,极大的提高了C++编程效率。

避免宽泛介绍C++的语法和框架,而是突出实用技术,包括完善的封装、派生、多态和模板,在构造函数中动态分配资源、在析构函数中释放资源和异常处理,这些是面向对象的C++程序设计的精髓。

4 灵活运用教学手段

在教学过程中,对不同的教学内容运用不同的教学手段,力争取得最佳的教学效果。对知识性强的内容采用多媒体,例如以PowerPoint幻灯片展现知识点,以Flas演示程序的动态执行过程,使学生对所学知识的理性认识和感性认识有机的结合起来,有助于学生更好地理解和掌握所学内容。对某些简单的章节可以在课上提出要点,然后安排学生课外自学。对需要掌握的重点和难点,如指针、继承、多态等概念以及一些涉及复杂逻辑推理的算法和例题等,可以用板书的形式进行详细的讲解。通过对教学手段的灵活运用达到合理分配学时,难易兼顾的效果。

5 注意知识点的分类比较、归纳总结

C++程序设计课程中很多内容是具有可比性的,在教学过程中要把握这方面的特点,充分挖掘出内容相关的知识点进行分类对比。例如关于重载的学习,重载包括了函数重载和运算符重载。学生对于运算符重载的学习往往存在畏难情绪,在教学过程中如果能够对这两种重载的异同点进行详细的比较,让学生首先认识到运算符重载仅仅是一种特殊的函数重载形式,进而研究其特殊性,编写出合理地函数代码,学习效果必然会有所改善。

C++程序设计课程中涵盖了许多面向对象的要素,这些要素具有较强的抽象性,在向学生介绍这些知识点的同时,要注意及时归纳总结,指出每种要素适用的场合,避免滥用、错用。例如学习了类的继承后,学生在进行程序设计时,往往会频繁地使用这一机制,甚至于在某些原本应该使用分层机制的场合也使用继承,为了避免这类情况发生,需要在教学过程中对这些容易误用的知识点及时进行强调和总结。

6 强化上机实验环节

C++程序设计是一门实践性很强的课程,上机也是整个教学的重要组成部分,人们学习程序设计语言的最终目的也正是为了编写程序和开发软件,因此必须抓好实验教学环节。

在实验教学大纲的指导下,根据所学知识点选择有代表性的、综合的问题让学生进行编程、调试。以往上机实验过程中,学生常常仅限于将理论教材和实验教材中的例题原样输入计算机,运行并验证结果。这一过程可以在一定程度上加深对所学知识点的理解,但没有丝毫编程创新可言。可以布置与所学知识点相关的上机题,如编写一个C++的类,在其中添加一些成员函数,然后提供给学生完整的类和需添加的成员函数的声明,以及检测它的主函数代码,同时给出需添加的成员函数的思路或提示,仅让学生编写需添加的成员函数,在每次实验结束时,进行验收。这样既降低了难度又突出了重点,便于学生调通程序,同时提高了学生的信心和学习的效率。

注重培养学生调试程序的能力。对于简单问题,直接编写出正确的代码是完全可能的,但是大多数问题的解决方案往往都是比较复杂的,其实现代码需要不断修改完善,此时调试程序的能力是至关重要的。上机辅导过程中,主要指导学生怎样跟踪程序的运行,怎样设置被监视的变量,怎样设置断点,怎样单步执行,怎样使用Debug工具。授人以鱼不如授人以渔,帮学生调通一个程序,不如教会学生怎样去调试。应注重引导学生自己去调试具体代码,通过大量实践逐步提高其调试程序的能力。

7 结束语

C++程序设计课程的教学涉及到诸多方面的因素,这就要求我们在教学中针对具体情况及时加以调整,激发学生的学习兴趣,以达到较好的教学效果。

参考文献:

[1] 吴乃陵, 况迎辉. C++程序设计[M].2版.北京:高等教育出版社,2006.

c程序篇3

关键词:模块化程序设计;函数调用;嵌套;递归

0 引言

程序调用是指当前正在执行的程序(又称调用程序)中出现了调用其它程序的语句,使得程序的执行转移到另一个程序段(又称为被调用程序)中,同时保存必要的信息,以便在被调用程序执行结束后恢复执行调用程序的过程。在C/C++语言中,称程序调用为函数调用。当在一个函数中出现了函数名时,就发生了函数调用。在C/C++语言中,有以下两种函数调用方式:

(1)函数调用以一个语句的形式出现,这时被调用函数可以没有返回值(函数类型可以设置为void类型);

(2)以表达式中的一个项的形式出现,被调用函数必须有一个明确的返回值。

按照函数调用的性质的不同,函数调用又分为两类:函数嵌套调用和函数递归调用。以下就嵌套调用与递归调用概念进行一些说明。

1 存在问题和解决办法

C语言函数的定义都是独立的,互不包含。换句话来说,一个函数内不能包含对另一个函数的定义。

嵌套调用。C语言不能嵌套定义函数,但可以嵌套调用(nested calling)函数。嵌套调用过程如图1所示。

图1 C语言函数嵌套调用过程

递归调用。在调用一个函数的过程中出现了直接或间接地调用该函数本身,称为函数的递归调用。换句话说,当一个程序调用它自身时就发生了递归(recursive calling)。C/C++语言的特点之一就在于允许函数的递归调用,如图2所示。

递归算法的实质是将原来的问题分解为新的问题,而对新的问题又用到了原有问题的解法。按照这一原则分解下去,每次出现的新问题是原有问题的简化子集,而最终分解出来的问题,是一个已知解的问题(即调用至满足调用终止条件,得到一个可用的基础值),这便是有限的递归调用。只有有限的递归调用才是有意义的;无限的递归调用永远得不到解,没有实际意义。

图2 函数的递归调用过程

递归的过程有两个阶段:

第一阶段,递推。将原有的问题不断分解为新的子问题,逐渐从未知向已知推进,直到推进至满足调用终止条件,得到一个可用的基础值。

第二阶段,回归。从基础值出发,按照递推的逆过程,逐一求值回归,最后到达递推的开始处,结束递归调用。

2 函数嵌套调用与递归调用实例分析

现各举一个嵌套调用和递归调用的小程序,以说明上面的理解(为了表明C++也支持嵌套调用和递归调用,以下程序用C++语言编写)。

例1:输入两个整数,求它们和的平方。

分析:为了说明函数的嵌套调用,针对该问题可以设计两个函数,求平方的函数SQU及求另一个整数平方和的函数SUM。由主函数调用SQU,SQU又调用SUM(见图3)。

图3 函数的嵌套调用和递归调用

假设求平方的函数为为a,求整数平方和的函数为b,程序

如下(Source Code):

//

//nestf.cpp

//The C++program illustrates nested functiOn calling.

//CaIculation of the quadratic sum of two Integers.

//

#incIude<iOstream.h>

Vo|d math(void)

{int m,n;

int a(int x,inl y);//function prolotype

COUl<<"pIease enter two jntegers:"<<endI;

cin>>m>>n;

COUt<<“the quadratic sum of m and n is"<<a(m,n)<<endl;

//calIing function

}

int a(int x,int y) //function decIaration

{int b(int m);//function prototype

return(b(x)+b(y));

//calling nested functiOn and function retum

}

int b(int k)//function declaration

{reIum(k*k);)//funclion return

例2:求n!

分析:根据

程序流程:

图4 程序流程

以下以6 1为例:

我们可以进行以下分析:

6!=6*5!5!=5*4!4!=4*3!3!=3*2!2!=2*1!1!=1*0!0!=1

未知――――――(递推)――――――――――已知

6!=6*5!=7205=5*4!=1204!=4×3!=243!=3*2!=62!=21!=1*0!=10!=1

未知――――――(回归)―――――――――已知

Source Code:

//

//factof.cpp

//A C++program illustrating recursiVe functiOn caIIs.

//CaIcuIating the factorial of a number.

//ExamDIe:6!=6*5*4*3*2*1=720

//

#incIude<iOstream.h>

long flactof(int n)//funclion declaration

{long a;

if(n<0)

count<<"The integer(n)which you entered must be

greater than or equal to zero!"<<endI;

eIse if(n==0)a=1;//the basic condition to terminale

eIse a=facfof(n-1)*n;//iterating

retum(a);

}

void main()

{long faclof(inI n);//funclion procotype

int b=6;

long y;

y=factof(b);//recursiVe calling

COUl<<"6!="<<y<<endl;

}

3 结束语

嵌套调用是将功能独立的函数有机地结合起来,完成一项任务。采用嵌套调用,提高了程序的可读性、可维护性和可扩充性。而采用递归调用允许某些算法用简单的小例程来实现,但不能保证速度或效率。递归使用不当会导致程序在执行过程中耗尽空间(因为在递归调用时必然要一次次生成新的同名局部变量,并动态地为其分配存储单元),从而引起程序(有时是整个系统)崩溃。

函数定义中是否直接或间接的调用了自己是递归函数与函数嵌套调用两个概念的最根本区别。

c程序篇4

关键词:程序设计语言;程序调试;教材;编程能力

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

随着计算机应用的普及,计算机编程能力已经不仅仅是计算机专业学生需要掌握的能力,因而我国高校普遍为大学生开设程序设计课程。目前主要的程序设计课程包括:C/C++程序设计,VB/程序设计和Java程序设计等。从上海参加计算机等级考试的学生来看,C/C++程序设计的学生占60%,VB/程序设计占35%,Java程序设计占约5%,因此“C程序设计”仍然是高校学生学习计算机编程知识最重要的一门课程。

尽管C程序设计语言问世已经三十多年了,但在课程教学中,很多教师和学生仍然觉得C程序设计语言很难驾驭。那原因是什么呢?作者认为这主要是由C程序设计语言本身特点决定的。首先,C程序设计语言是一种结构化程序设计语言,用它进行程序设计的方法是结构化方法,其思想与我们日常生活中处理问题的思路有较大的出入;其次,C程序设计语言最早是用于开发系统软件的,是一种“中级语言”,其语法限制不太严格;第三,C程序设计语言中强大的运算功能和丰富的数据结构(如指针等)对初学者的逻辑思维能力要求较高,不容易学懂。针对C程序设计语言这样的特点,要学好这门语言,一本好的教材显得特别重要。

和学习外语一样,学习一门程序设计语言的最终目的是能运用这种语言来解决实际问题,因而,程序设计课程的教学和考核也应该面向这样的目标。2009年4月,上海市计算机等级考试大纲再次进行了修订,对作为二级的主要科目“C程序设计”的大纲进行了较大的修改:将原来的纸质试卷书面考试改为上机考试,使用“上海市高校计算机等级考试通用平台”进行考试,建议使用Microsoft Visual C++ 6.0作为程序开发环境;为加强对学生应用C程序设计语言解决问题的能力,新增一种题型――程序调试题。其目的就是引导教师和学生在提高动手实践和实际应用能力的方面下功夫。

对于“C程序设计”的推荐参考教材,上海市等级考试二级命题组决定仍旧选择由谭浩强教授编著、清华大学出版社出版的《C程序设计》。随着计算机技术的迅猛发展,上海市等级考试在不断发展,谭浩强教授的《C程序设计》也从第一版、第二版演变到了第三版,那么,为什么上海市等级考试始终选谭浩强教授的《C程序设计》作为“C程序设计”科目的参考教材呢?结合自己的教学和命题实践,我们深刻体会到谭浩强教授编写的《C程序设计》教材有以下三个重要特点。

1由浅入深,通俗易懂

谭浩强教授丰富的教学经验和编写教材的经验在《C程序设计》中得到集中体现,由浅入深、循序渐进的内容安排和通俗易懂的写作风格,使《C程序设计》非常适合作为程序设计的入门级书籍,也推动了中国计算机基础教育的普及和发展;《C程序设计》教材对C语言语法部分、控制结构部分、数组、指针等的讲解都非常流畅,给读者一气呵成的信心和欲望。金山公司前总裁兼CEO雷军曾经说过:“是谭浩强让程序员感到了写程序就是自己的生命。”

2概念清晰,融会贯通

《C程序设计》针对初学者的特点,精心策划、准确定位,使得全书概念清晰、融会贯通;将必要的基础知识融会贯通到程序设计课程中,能给初学者打下良好的程序基础,对学生的知识结构建设以及今后的深造和提高都大有裨益;全书强调用结构化程序设计方法编写程序,自始至终用完整的程序输出范例来演示所讲的概念,内容全面,层次清晰,适用于不同层次的学习对象和不同课时的教学单位,特别是高校计算机基础教学。

3例题丰富,启发思维

《C程序设计》全书结构清晰,例题丰富,每章都附有大量习题,并且有配套的习题解答,非常有利于学生复习巩固课上所学的知识,也便于教师设计实验课的教学内容。谭浩强教授还在书中引导学生带着问题学习、在启发中得到理解、在思维中得到提高、在实践中得到认知。通

过使用这本教材来学习C程序设计语言,初学程序设计的学生可以达到熟练运用C语言进行小规模应用开发的能力。

正是因为以上特点,谭浩强教授的《C程序设计》把原先很多人认为深奥难懂的C语言变为只要具备计算机初级知识的人都能学会一门程序设计语言,能够使学生对C语言产生浓厚的学习兴趣,是学习C语言的一本理想教材;也正是这些特点,让我们始终选择谭浩强教授的《C程序设计》作为教材。

参考文献:

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

[2] 龚沛曾,杨志强,顾春华,等.大学计算机实践能力培养的改革与实践[J],中国大学教育,2008(6).

c程序篇5

【关键词】课程设计;C#程序

一、课程性质和任务

《C#程序设计》是计算机软件技术专业(.net开发方向)一门专业技能课 ,是C# winForm 应用程序和 Web应用程序设计的前导课程,是.net开发方向的核心基础课程。通过本课程的学习,学生应掌握 C# 语言的基本语法,程序设计的基本思想、基本概念和基本方法,进一步熟悉面向过程程序设计,掌握面向对象程序设计的思想,能对一般问题进行分析和面向对象抽象,根据UML图编写面向对象的C# 程序。

二、课程教学目标

知识教学目标:

掌握C#语言的基本语法、语句;掌握C#中的数据类型、运算符和表达式;熟练掌握顺序、分支和循环三种基本的程序控制结构;掌握结构、枚举的定义,并灵活使用;熟练掌握数组的定义、初始化和数组的基本操作;熟练掌握函数的定义和调用;掌握面向对象相关概念:类、对象、类的封装、继承、多态等特性和使用;掌握接口和抽象类的定义,并灵活使用;掌握集合、多态状态下的类型和值的比较、类型的转换、泛型;掌握事件与委托的概念与使用。

能力培养目标:

掌握结构化程序设计的基本思想和方法;掌握面向对象程序设计的基本思想和方法。能够对客观世界进行抽象,并编写出面向对象程序;熟练运用C#语言的编辑调试环境,能编写常用的C#应用程序。

思想教育目标:

培养学生吃苦耐劳与敬业精神、团队精神;培养学生具有实事求是的学风和严谨的工作态度;

培养学生分析问题和解决问题的能力。

三、教学内容和要求

(一)理论教学模块

第一章 C# 简介

1.教学要求

了解什么是.NET Framework,什么是C#,理解.NET Framework的运作流程,了解C#的主要特性,以及C#的现代编程语言特性。

2.教学内容

C#和.NET Framework的含义,.NET Framework的工作原理和特别之处,C# 的功能。

第二章 编写C#程序

1.教学要求

掌握使用Visual Studio 2005创建C#程序的方法,掌握使用Visual Studio 2005创建基本控制台界面的C#程序的方法,掌握C#程序的基本结构,熟悉控制台输入、输出方法,了解C#基本语句、注释等要求,理解命名空间。

2.教学内容

Visual Studio 2005的基础知识,编写简单的控制台应用程序,编写Windows Form应用程序。

第三章 变量和表达式

1.教学要求

掌握C#的基本语法,理解C#程序的基本结构,掌握简单数据类型的定义和使用,包括整型、浮点型、小数型、布尔型,掌握变量的定义,熟悉camelCase和PascalCase变量命名法,了解数据类型转换,掌握常量,熟悉表达式及运算符实现数据的计算。

2.教学内容

C#的基本语法,简单数据类型,变量及其用法,表达式及其用法。

第四章 流程控制

1.教学要求

了解C#中的布尔类型的定义与使用方法,理解位运算,掌握分支语句,包括if和switch,掌握循环语句(包括for、while、do while),学会分析问题,并使用分支和循环解决。

2.教学内容

布尔逻辑的含义及其用法,位运算的含义及其用法,分支语句,循环语句。

第五章 复杂的变量类型处理

1.教学要求

掌握枚举类型的定义和使用,掌握结构类型的定义和使用,掌握一维、二维数组的使用,理解隐式和显式类型转换,掌握.NET对字符串的处理常见功能,包括字符串的查找、替换、格式化、调整等。

2.教学内容

枚举的定义与使用,结构体的定义与使用,数组的定义与使用,类型转换,字符串处理。

第六章 函数

1.教学要求

掌握函数的定义和使用,理解可变参数函数,函数的参数,包括值参数、引用参数和输出参数,理解变量作用域概念,变量在不需要它们的代码块中可以隐藏起来,掌握结构化程序设计的方法和步骤。

2.教学内容

定义和使用简单函数,通过参数在函数之间传送数据,变量的作用域,结构化程序设计。

第七章 程序调试和异常处理

1.教学要求

掌握VS2008中程序调试方法,包括中断模式和非中断模式,使用try...catch... finally处理程序异常。

2.教学内容

VS中的调试方法,程序异常处理语句。

第八章 面向对象程序设计入门

1.教学要求

掌握类的定义,包括类成员的访问级别、函数定义及重载,掌握对象的使用,理解面向对象的基本思想,特别是封装性。

2.教学内容

什么是面向对象编程,类的定义,对象的使用,面向对象的基本思想。

第九章 类的定义和使用

1.教学要求

掌握构造函数的定义和使用,理解面向对象的继承性,掌握类中虚成员的定义和重写,理解类型的上传,了解类的层次结构和基类object,掌握类中属性的定义和使用,并理解其实现的封装性好处,了解静态类和类的静态成员,掌握运算符的重载。

2.教学内容

构造函数,面向对象的继承性,类的其他成员,包括属性、静态成员、运算符的重载等。

第十章 类的高级使用

1.教学要求

掌握抽象类和接口,理解两者的区别和适用情况,理解面向对象的多态性及其原理,掌握面向接口的编程。

2.教学内容

抽象类和接口的使用,创建类库,理解面向对象的多态性,使用面向接口的编程。

第十一章 集合、比较和转换及泛型

1.教学要求

掌握ArrayList集合,掌握自定义集合的方法,掌握多态状态下类型和值的比较及类型的转换,

掌握泛型的使用。

2.教学内容

ArrayList的使用,自定义集合,比较和转换,泛型。

第十二章 事件的定义和使用

1.教学要求

掌握委托及事件的定义和使用,理解事件和委托的区别,了解线程的使用。

2.教学内容

c程序篇6

【关键词】C语言程序设计;教学内容;教学手段;教学方法;教学改革

C语言是一种广泛使用的程序设计语言,它具有高级语言的特性与直接操纵计算机硬件的能力。因而,在当前许多高校中,C语言被列为程序设计课程的首选语言,成为了计算机专业的必修课程,也越来越多地被非计算机专业所采用[3]。然而在《C语言程序设计》课程的教学中,由于C语言概念比较复杂,规则繁多,同时在实践中又具有灵活多变运用,所以教师对于课程教学难易度的把握有困难,学生对于课程的学习与实践亦感到迷惑,甚至产生一些畏难心理[2]。作为实践性很强的C语言程序设计课程,它的学习有自身特点:光听只看是不够的,还必须加以练习,通过大量的编程训练,反复夯实语言的概念基础,并在实践中培养程序设计的基本能力,逐步理解和掌握程序设计的思维与方法。所以,C语言程序设计课程的教学重点是培养学生的实践编程能力,以程序设计为中心来组织课程内容。在笔者多年的教学实践中,针对《C语言程序设计》课程的难点与特点,在教学内容、教学手段、教学方法等方面做出了一些改革与尝试,收到了较好的教学效果。

1、教学内容的改革[1][3]

1.1课堂教学内容的改革

目前关于C语言的教材很多,内容主要包括数据类型、表达式、分支、循环、函数、数组、指针、结构体、文件的概念和应用以及指针和各种构造类型的混合运用、基本算法等。很多教材侧重于语言本身的理论体系介绍,而对于编程方面的介绍却相对较少,这样的安排虽然突出了知识结构的认识,但是也弱化了学生的程序设计能力和语言应用能力,而这些能力对于学生学好这门课程又恰恰是至关重要的。笔者在教学中,尝试以程序设计为向导,辅以编程应用,将案例和问题引入课堂,使学生尽快建立起程序设计的思想和方法,然后在这些框架上穿插讲解相关的语言知识。在前几次课中,简单介绍相关的背景知识和利用编程求解问题的过程,然后引入实例,在对问题的解决过程中介绍顺序、分支和循环3种控制结构以及函数的使用,使学生对C语言有一个大概的了解。然后深入讲解程序设计的思想和方法,并演示应用C语言解决问题。通过实例程序的引入来介绍语言知识,在每节课中介绍一些程序设计的方法、技巧以及编程中的常见错误,并设置练习题,鼓励学生多思考、多练习,提高综合能力,每章课程结束后, 设置综合性的习题,包括本章的综合以及从第一章到本章的综合,主要是程序设计题。学生要想学会并应用C语言进行程序设计,除了对程序设计语言了解外,更重要的是在实践中领会并掌握程序设计的基本思想和方法,要求学生从开始学习C语言起就试着编写程序,先模仿例题中的程序,然后尝试加以改写,循序渐进,最后能独立地编写程序来解决比较复杂的问题。

1.2实验教学内容的改革

C语言的教学特别需要重视实践环节,包括编程和上机实验。针对不同水平的学生,笔者在教学班中抓两头,学得好的学生鼓励给大程序,难一点的实验,学得一般的学生做基础性的题目。在保留基础性实验的同时,增加一些实用性强的、难度略大的实验,并组织学生讨论得出算法流程,然后上机编程调试。

按照实验指导书上的内容,每个实验内容以编程题为主,学生可以先模仿课堂案例操作,然后再做实验题,通过“模仿-改写-编写”三步曲的上机实践过程,在循序渐进的引导中逐步熟悉编程环境,理解和掌握程序设计的思想、方法和技巧,以及程序调试方法[4]。

实验题分为必做题和选做题,在实验过程中针对学生有问题的程序统一讲解,然后再选一个有错误的程序让学生自己找错误(开始一个月内的时间,让学生学会找到语法错误)。这样学生能力会提高很快,在后期发现逻辑错误,也会自己先找出,然后再求助老师。实验题量一次课(2节课)至少留6-8题实验。

2、教学手段的改革

运用多媒体技术辅助教学,是当前课堂上很流行的一种教学手段,因为这种方式包含的信息量大、丰富,学生学习起来感觉生动,提高了学习的兴趣,同时也能够优化教学过程。但是多媒体辅助教学的弊端也越来越被了解,比如不恰当的使用会分散学生注意力,甚至影响学生对主要问题的理解。所以将多媒体教学引入C语言程序设计课程教学过程中,必须要考虑到两者的特点与优势,取长补短,将传统教学与多媒体教学进行有机的结合。比如:对于C语言的概念性知识点如数据类型、变量类型、运算符、程序结构等,可以采用多媒体教学,通过课件的制作,既满足了课堂上演示的需要,也简化了传统教学大量板书的缺点。而对于程序的编写或案例的分析,就需要发挥传统教学的优势,更灵活的进行板书讲解、课堂讨论,使问题在师生之间的良性互动中得以解决。因此,教学中将各种手段如PPT、板书、现场编程并运行等多种手段有机结合,使得课堂教学达到最优化,如果条件允许尽量现场编程(或事先准备好的程序),学生可以学习教师的思路考虑问题,收到更好的效果,同时也能加快教学进度。

另外,利用网络资源的便利性,将大纲、电子教案、课件、练习题等放在网络上,方便学生随时查用学习,同时通过飞信、QQ、Email等网络交流手段与学生进行答疑、讨论等互动交流,从而扩展了课堂教学的空间。

赏识学生,注重学习兴趣的培养。在教学过程中,教师应运用多种信息技术适时的辅导,创设丰富的情境,发挥最佳效应,运用多种教学手段激发学生主动学习获取知识的热情。

3、教学方法的改革

c程序篇7

关键词:C++程序设计;课程建设;负反馈教学法;实践环节;特色教材

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

文章编号:1672-5913(2007)12-0018-03

C++不仅是一门程序设计课程,而且是这些专业后续专业课程(如数据结构、操作系统、微机原理、单片机及应用等)的重要基础,更是这些专业开展计算机研究和应用的重要表达工具和开发工具。因此,Visual C++程序设计课程的教学改革与建设具有十分重要的意义。本文下面从教学方法改革、教学内容研究、实践环节建设、特色教材编写等方面介绍我校VC++课程建设的一些做法。

1积极推进教学方法改革,形成颇具特色的负反馈教学法

负反馈教学法的原理是从教学过程中反馈(作业、实验、答疑、单元测验等)的问题入手,通过及时讲评,解决学生学习中存在的问题,以达到预期的教学目标。由于反馈的是教学过程中存在的问题故称此方法为负反馈教学法。负反馈教学法包括以下方面。

1.1用“范例”组织课堂教学,贯彻“发现式”教学思想

范例教学法由教育学家瓦根舍因提出,教师通过范例辅助学生理解、掌握知识和原理,其目的是让学生能够独立地获得判断能力、推理能力、认识能力和继续学习的能力。以往,程序设计课程教学通常以一门具体语言为主线,围绕语法知识展开。而实质上,设计程序是为了解决实际问题,是一种缜密思维方式、创新素质和综合能力的培养。要使学生对程序设计有兴趣,必须亲自感受并体验程序设计的无限魅力。为此,我们改用范例组织课堂教学。在多媒体教学设备和真实编程环境的支持下,课堂教学以程序(范例)为主线。所选范例程序具有典型性、综合性和可扩展性,涉及基本语法、基本算法和基本调试技术。范例程序的讲解首先符合“现象发现问题分析问题解决问题验证”的探索过程,使学生掌握基本语法、算法及应用。其次,通过对范例程序的启发式扩展,揭示程序由小到大、由简单到复杂直到实用的过程,激发学生的探索热情和兴趣,使学生掌握知识间的联系和编程的工程化思想,获得实际编程能力。

1.2采集教学负反馈信息,做好分类、分析和讲评

按负反馈教学法要求,任课教师做好作业和实验报告的抽样批改、单元测验的全样批改,重视实验指导和答疑,从中了解学生的学习情况。在获取足够的负反馈信息后,任课教师及时做好问题的分类、分析和讲评,及时发现和解决学生学习中存在的问题,确保学生对所学知识的真正掌握。

1.3根据大班教学特点,推进强同步教学策略

大班教学成功的关键在于保持师生教与学的同步状态。负反馈教学法的师生同步措施有授课、作业、实验、讲评和测验等。其中,作业与实验报告由于学生存在一定抄袭现象,同步效果欠佳,为弱同步措施。授课、讲评和测验同步效果较好,为强同步措施。为使大班教学取得较好效果,采用强同步措施是必要的。特别地,我们在每个单元安排一次测验,以实现师生的强同步,及时取得真实的负反馈信息。

1.4编写负反馈教学法配套教辅资料,培养学生自学、探索和自我完善能力

配套教辅资料主要有:①学习指导。注重概念理解、知识巩固,设单元测试,便于学生学习和自测自查;②实验指导。共有17个实验,每个实验包含调试技术介绍、程序调试题、程序设计题和选做题,注重培养学生的编程能力和调试能力,激发学生编程兴趣;③典型问题和综合问题编程。共8个专题,便于学生突破难点,融会贯通,体验综合编程的乐趣,培养分析和解决问题的能力;④二级考试模拟试卷;⑤VC++ 6.0程序调试技术,包括使用VC++ 6.0 IDE编写和调试程序的方法和技巧。

2强化实践教学,注重培养学生的实际编程能力

VC++课程是一门难点多、综合性较强的课程,实验是该课程至关重要的环节,只有通过实验才能检验自己是否真正掌握和运用该语言。通过上机调试程序,会发现很多想不到的问题,通过解决这些问题,可以加深对语言和算法的理解,提高程序调试和实际编程能力。为此,本课程设有课内实验(32学时)和课程设计(两周)实践教学环节。

2.1课内实验注重培养学生基本编程和调试能力

基本编程和调试能力是深入学习本课程并取得实际编程能力的前提。课程实验是至关重要的教学环节,与课堂教学同步进行。我们根据教学内容编写了一套以调试技术、基本语法、基本算法、综合编程为核心内容的同步实验指导,共拟定了17个实验,每个实验通常包括调试题、编程题和选做题,可供不同层次的学生选用。

2.2课程设计注重培养学生综合编程和实际应用能力

课程设计安排在课程结束以后,以综合性程序设计训练为主,选题具有典型性、综合性和示范性,突出难点与实用价值,使学生体会到难点不难,难点在实际编程中非常有用。通过课程设计,学生进一步巩固和掌握基本语法、基本算法和基本调试技术,养成良好程序设计风格(模块化、结构化)和严谨的科学作风,初步形成软件工程化思想,具有一定的程序组织能力。

课程设计的内容涉及基本算法和数据结构。基本算法包括穷举、迭代、递推、递归、排序和查找等。基本数据结构包括数组、结构、指针、动态内存分配、单向链表、对象、文件等。课程设计的实施,对非计算机专业采用小综合方案,计算机专业采用大综合方案。所谓小综合是指程序规模在几十到几百行的小题目,大综合则是程序的规模在数百行以上有一定实用价值的题目。

2.3实践教学认真实施,严格考核,确保效果

在课内实验和课程设计的实施过程中,配备富有经验的指导教师,现场实时进行辅导和答疑,指导学生解决编程中出现的问题。同时对学生严格要求,严格考核,确保实践教学质量。加强实践环节的考核是提高实践教学质量的重要保证。预习和考勤占总成绩的30%,上机检查并回答提问占总成绩的40%,课程实验报告和课程设计报告占总成绩的30%。

3积极开展教学内容研究,不断优化和更新教学内容

根据程序设计课程本身发展快、更新快、综合性强、存在问题多的特点,针对同类教材中存在的一些问题和不足,积极开展教学内容的研究,先后发表 “C++运算符重载教学和编程中易被忽视的问题”、“C++中二维数组与指针关系的深入剖析”、“C++语言引用型变量的实现机制浅析”、“C/C++语言可变参数函数的参数传递机制剖析” 等论文,并及时把这些教研成果和学科最新进展引入教学。

3.1课程内容分为三个知识模块

(1) 结构化程序设计基础:包括C++概述、数据类型、运算符、表达式、简单的输入输出、算法与流程控制语句等。

(2) 模块化程序设计:包括函数、编译预处理、程序的多文件组织、数组、结构体、共用体、枚举类型、指针和引用。

(3) 面向对象程序设计:包括类、对象、构造函数、析构函数、继承、派生、友元、虚函数、静态成员、运算符重载、I/O类库、命名空间、模板和异常处理等。

3.2课程的重点、难点及解决办法

(1) 算法表达、结构化语句:结构化编程的基础。注重讲授算法的结构化表示法,结构化语句,常用基本算法,断点+单步调试技术。

(2) 函数:模块化编程基础。注重讲授程序的模块化组织思想和方法,自顶向下逐步求精的程序设计思想,参数传递,变量作用域,程序的多文件组织。

(3) 数组、结构体、指针:数据的结构化和模块化组织基础。指针是重点和难点,应正确区分指针与地址,强调指针类型的作用,讲清各类指针的含义及作用。特别注重讲授指针在动态生成基本数据结构,解决实际问题方面的综合实例。

(4)类、对象、继承、运算符重载、虚函数:面向对象程序设计基础。运算符重载较易理解,但有些方面易忽视,应提请学生注意。虚函数是重点和难点,应注重讲授虚函数的必要性、重要性、实现机制和综合实例。

4改革考评方式,正确发挥考试的导向作用

根据VC++课程的特点,正确发挥考试的导向作用。改革考评方式,实行考教分离,并使其与江苏省大学生计算机等级(二级)考试方式接轨,采取笔试(50%)+机试(50%)的方式,理论与实践并重。

试卷的试题源自题库和现任教师的征卷,试卷由选题算法和软件系统产生,难度与二级考试相当,提高了考评的科学性。

5总结提炼教学经验和成果,积极开展特色教材建设

教材建设是课程建设的重要方面。几年来,课程组对国内外流行C++教材进行研究、分析和试用,总结、积累和提炼自己的教学经验和成果,从校内讲义开始,逐步开展具有自己特色的教材建设工作。2005年2月,自编教材《Visual C++程序设计习题、实验与编程实践》由华东理工大学出版社出版,同年12月又第二次印刷,得到了社会读者的认可。2005年10月,本课程获江苏省高等学校精品教材立项建设,课程组编著的体现“负反馈”教学特色的教材《C++程序设计实践教程》一书目前已与清华大学出版社签订出版合同,书稿已经交付,将于2007年上半年出版。

6运用现代化教学手段,加强网络教学资源建设

经过多年的教学、研究、建设和总结,本课程已积累了丰富的网上教学资源,经常更新,在教学中发挥重要作用。网上教学资源包括:课程教学大纲、课程设计大纲、教学日历、课程设计任务书、实验指导书、教学课件、习题集、典型问题及参考程序、相关教学论文、英文版课外辅导材料、模拟试卷等。课程组成员开发的“基于WEB的《C语言程序设计》教学系统”2006年11月获得第二届全国高等学校计算机课件评比二等奖。本课程网上教学资源的网址为:。

参考文献:

[1] 刘维富,陈建平,王春明. 浅谈“C++程序设计”课程的建设与实践[C]. 第二届全国计算机课程报告论坛,2006,11.

[2] 刘维富,丁卫平,沈学华. Visual C++程序设计习题、实验与编程实践[M]. 上海:华东理工大学出版社,2005,2.

[3] 顾晖,刘维富,管致锦. 负反馈教学法的原理与实践[J]. 电气电子教学学报,2004,(4): 102-104.

[4] 邱建林,刘维富,顾晖. C语言程序设计教学的研究与实践[J]. 电气电子教学学报, 2003,(4):96-98.

[5] 刘维富. C++运算符重载教学和编程中易被忽视的问题[J]. 南通工学院学报(自然科学版),2003,(3):56-59.

[6] 刘维富. C++语言引用型变量的实现机制浅析[J]. 南通工学院学报(自然科学版),2002,(1):64-66.

[7] 顾晖. C/C++语言可变参数函数的参数传递机制剖析[J]. 电脑与信息技术, 2004,(3): 37-38.

[8] 丁卫平,刘维富,沈天晴. C++中二维数组与指针关系的深入剖析[J]. 南通工学院学报(自然科学版),2004,(3):85-87.

投稿日期:2007-2-24

作者简介:陈建平(1960-),男,江苏南通人,硕士,教授,研究方向为快速算法设计与实现等。

刘维富(1961-),男,江苏南通人,硕士,副教授。研究方向为计算机语言与程序设计等。

通信地址:江苏省南通市啬园路9号南通大学计算机科学与技术学院陈建平邮编226019

E-mail:

电话:0513-85975405,13962955020

基金项目:江苏省高校精品教材建设项目“Visual C++程序设计”(苏教高[2005]26号)

c程序篇8

[关键词] C语言程序设计 课程教学 策略研究

一、引言

多年来,《C语言程序设计》一直是高校计算机专业的一门重要的专业基础课,很多其他的理工科专业,也在1年级开设这门课程。这门课程的主要目的是掌握C语言的语法规则,并具备一定的程序设计能力。对于没有编程经验的初学者来说,掌握结构化程序设计方法的困难相当大。与其他高级语言相比,C语言具有语法限制少,程序设计自由度大,可以直接操作硬件等优点,但这也使学习《C语言程序设计》这门课程更加困难。本文从《C语言程序设计》的课程教学策略入手,探讨了与教学效果有关的若干问题。

二、课程内容组织策略

在《C语言程序设计》课程教学中,内容组织策略对教学效果有直接影响。常见的内容组织策略有3种:滚雪球式内容组织策略、铺垫式内容组织策略、词典式内容组织策略。

1.滚雪球式内容组织策略

滚雪球式内容组织策略是先讲述问题的核心部分,然后按照问题各要点的逻辑关系,成螺旋状,由内相外,层层展开。这一过程有些像在雪地里滚雪球,雪球由小到大的形成过程,因此称为滚雪球式内容组织策略。例如某些演讲,先讲述演讲的题目,然后解释题目的含义,再举例说明,最后给听众一个思考的问题,这就是滚雪球式内容组织策略。

这种策略的特点是正向思维,开门见山,观点鲜明,讲解的始终是听众最需要解决的问题。优点是先入为主,能够预期要讲的内容,不感到意外;缺点是对复杂的问题,难以立刻让听众明白;对难以接受的观点,难以立刻引起听众的共鸣。

滚雪球式内容组织策略是在《C语言程序设计》教学中常用的内容组织策略。对于复杂、系统化的知识,需要详细设计讲述的过程。我们可以先用准确的术语直接讲解问题的核心部分,再用通俗易懂的话语解释,对于问题的其他部分,以后再按思路慢慢展开。例如,在第一节课介绍什么是C程序时,可以先讲最简单的C程序,即只有一个main函数,而且main函数也是空函数。然后向main函数中添加语句,再介绍含有多个函数的程序。

滚雪球式内容组织策略不仅适用于某一问题,也适用于一本书或一门课程的整体内容组织。例如,我们可以在《C语言程序设计》的教材前言或课程第一讲,就讲述什么是“C语言程序设计”等核心内容,而且要让学生听懂。在第一次课后的上机,就要让学生能够完成简单的程序设计。以后各讲再详细讲解编程所需要的完整知识。

2.铺垫式内容组织策略

铺垫式内容组织策略是先讲述问题的部分,然后按照问题各要点的逻辑关系,成螺旋状,由外相内,层层逼近,最后讲述核心观点。这种策略是在讲核心部分之前,先做充分的铺垫,因此称为铺垫式内容组织策略。例如有的演讲,先讲述日常生活中身边的某些现象,然后举一反三,引出不易想到的问题,再加以深刻的剖析,最后亮出自己的观点,这就是铺垫式内容组织策略。

这种策略的特点是逆向思维,在离中心论点较远的选择入口点,在讲述开始时听众不容易明白入口点与中心论点的关联,因此不能够预期要讲的内容。在引申剖析时往往出人意料,使听众恍然大悟,本来难以接受的事显得顺理成章、水到渠成,产生画龙点睛式的效果;但是在“点睛”之前可能会让听众不明其所以然,晕头转向,心急的听众可能没有耐心听下去。

铺垫式内容组织策略在《C语言程序设计》教学中有时会用到。对于某些复杂的概念、程序或例题,采用铺垫式内容组织策略比采用滚雪球式内容组织策略的教学效果更好。例如,在讲解“数组”、“结构体”等概念时,采用概念功能应用举例的顺序,不如采用应用举例功能概念的顺序讲解效果好。直接讲述概念时,不容易与前面的知识构成一个系统。我们可以先讲某些不适合使用简单变量的例子,然后分析简单变量为什么不适合,如简单变量难以大批量定义,不适合用循环结构依次处理,难以反映数据之间的内在联系,等等,再引出适合这些应用的“数组”来。这样讲解,“数组”的概念更容易被接受。

3.词典式内容组织策略

词典式内容组织策略是把问题的各个要点按某一规律排序,再按此顺序一一讲述。排序的规律是客观的,与要点的内在含义无关,不考虑听众是否容易理解。这种组织方式有些像词典中单词的组织方式,单词排列的次序是由单词的字母决定的,与单词的含义、读者是否容易理解、记忆无关,因此称为词典式内容组织策略。

在讲述那些需要让听众理解的内容时,一般不采用这种内容组织策略。如果某些概念只罗列名称,不介绍含义,可以按这种内容组织策略把这些名称建一个总表。很多教材的附录,手册性质的图书,也会采用这种内容组织策略。这种内容组织策略的优点是便于检索,缺点是不适合理解系统化的、内在联系密切的内容。

词典式内容组织策略在《C语言程序设计》教学中出现的较少。C语言的教材和电子教案一般是按照便于教学,便于读懂的原则编写的。那些没有详细展开讲的内容,往往以表格的形式出现在附录中或者正文中,如printf函数的格式字符表,常用库函数表等。某些总结性质的索引表也经常出现教材或电子教案中。

在《C语言程序设计》课程教学中,经常应该综合运用以上3种内容组织策略。具体应用哪一种,应该看具体情况,例如要讲解的问题是什么,学生的掌握情况和接受能力,教学条件,教师的教学风格等等因素,再确定详细内容组织策略。很多情况下,我们的教学方案是多种内容组织策略的组合。

三、课程教学资源分配策略

这里教学资源指理论课时、实验课时、辅导答疑、批改作业或其他耗费教师精力、学校资产等资源的因素。目前在很多高校,《C语言程序设计》课程存在着学时紧张的状况。因此,确定课程的各个环节占用多少教学资源,成为与教学效果(如考试成绩、编程能力等)直接相关的因素。在确定课程教学资源分配策略时,需要考虑学生学习能力、课程总学时、教学要求等具体情况。

按学生的学习能力,高校学生基本上可以分为A、B、C共3类学生。A类学生的特点是对本课程感兴趣,有钻研能力,有耐心,有恒心。即使得不到很好的教育条件,依靠自己的努力,也能够学会一些知识。对这类学生,不需要耗费太多教学资源,就能获得出色的学习效果。B类学生的特点是认真好学,但是自学能力差,对教师的依赖性很强。对投入的教学资源的回报率很高,在教师的精心指导下也能够取得很好的学习效果。C类学生的特点是对学习不感兴趣,一贯学习不好,自暴自弃。难以预计需要投入多少教学资源,才能达到与B类、C类学生同样的教学效果。

图1为一些常见的有缺陷的分配策略。图中横坐标(X轴)表示按时间顺序排列的各个教学环节,纵坐标(Y轴)表示需要投入的教学资源。3条水平虚线Y=A、Y=B、Y=C分别表示在各个教学环节能够让A类学生、B类学生、C类学生达到教学要求所需要的教学资源。

如图1(a)所示,当教学资源紧张时,把教学资源平均地分配在各个教学环节上是不合适的。若只分析教学资源中的理论课时,那么这时课程进度对B类和C类学生来说过快,会过早促使这些学生两极分化,大批学生在入门阶段就失去信心。在图1(b)中,在入门阶段进度过快,未入门的学生在之后的学习会很吃力。为了让他们达到教学要求,不得不投入更多的时间精力,投入的教学资源的回报率不高。在图1(c)中,在入门阶段过分重视教学效果,占用的课时太多。为完成教学计划,后面的教学环节只好草草完成,呈现出“虎头蛇尾”的现象,总体教学效果不好。

图2是推荐的几种在不同情况下的课程教学资源分配策略。在图2(a)中,大部分学生为B类学生,推荐的分配策略是:首先,尽量使B类学生达到基本教学要求;其次,使尽可能多的学生入门;再次,辅导少数学生达到较高水平。在图2(b)中,学生两极分化严重,A类学生和C类学生为学生的主体。这时推荐的分配策略是:一方面使尽量多的学生(含C类学生)达到基本教学要求,另一方面使上游学生达到尽可能高的水平。

《C语言程序设计》课程教学资源分配策略多种多样,在实际应用中应灵活变化,才能达到最佳效果。

四、结束语

针对不同的情况确定不同的课程内容组织策略和教学资源分配策略固然重要,但更有意义的是把尽量多的C类学生和B类学生培养成为A类学生。“十年树木,百年树人”,把学生塑造成栋梁之才,这对学生的一生都有长远的意义。

参考文献:

[1]谢竞博.C语言程序设计教学中的问题及改革建议[J].重庆邮电大学学报(社会科学版),2008,20(2):137-140.

[2]方红萍,陈和平.C语言课程改革与实践[J].电气电子学报,2007,27(5):11-13.

上一篇:民事诉讼程序范文 下一篇:三维动画专业范文