C语言教学改革

2024-10-08

C语言教学改革(精选12篇)

C语言教学改革 篇1

《C语言程序设计》是大专计算机和电类专业重要的主干专业课,同时也是其他程序设计语言类课程的先修课,其丰富功能带来的繁多数据类型和复杂语法结构,既要求教师有良好的教学水平,又要求学生具有敏捷的思维和灵活的逻辑设计能力,因而成为一门难教又难学的课程。比如循环结构一章对于学生来讲就一直是难点之一,特别是多重循环那更是让初学者一头雾水。针对这一情况,在实际教学中改变以前先讲语句格式,再讲例题,然后做练习的模式,试着用螺旋式递进任务驱动逐步让学生理解和掌握循环语句的格式和编写方法,效果很好。

1 具体教学实践方法

首先,教师给出如下要求:让学生利用输出语句在屏幕上输出一个“觹”号。学生很快能运用前面学的知识写出如下语句:printf(“觹”);

接着将要求进行螺旋式递进:让学生在屏幕上输出一行连续的十个“觹”。学生也能顺利写出如下语句:printf(“觹觹觹觹觹觹觹觹觹觹”);这时提出问题:如果要连续输出一百个甚至更多数目的“觹”,是不是在语句中从键盘调入一百个甚至更多数目的“觹”?有没有别的更简便的方法?答案是肯定的。那就是利用循环语句来实现,将“输出一个星号”这个语句重复进行100次,语句格式如下:

由此引出循环语句的格式及使用时应注意的问题的讲解。

再进一步螺旋式递进:让学生在屏幕上输出如下图形:

部分学生可能会连续使用四个循环语句来实现,这时可引导学生思考:既然连续“输出十个星号”可以通过重复十次“输出一个星号”来实现,那么现在连续输出四行十个星号能不能用重复四次“输出十个星号”来实现?答案当然是能,由此引出双重循环的用法。程序如下:

在学生理解的基础上继续将要求递进:要求学生输出如下图形:

这些既可以作为课堂练习,也可以作为作业,让学生课内完成一部分,课外完成另一部分。通过这些实例的讲和练,学生能快速地理解和掌握循环语句的格式和用法,使得学生的学习既轻松又快速,也不会出现只听得懂仍不会编程的情况。

2 结束语

将上述教学方法运用于其他类似章节后,同学们不再说《C语言程序设计》难学难懂了,学起来也很有趣。

参考文献

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

[2]郭芹.对高职高专计算机专业程序设计教学的思考[J].北京:中国科技信息,2008.

C语言教学改革 篇2

具有较强的综合性、实用性、应用范围.我们特科研中的实战经验用于教学,提高学生的`学习兴趣,改革教学内容和教学方法,优化实验和课程设计环节,以此改善教学效果.

作 者:李红军 黄少敏 作者单位:李红军(武汉科技学院机电学院,湖北,武汉,430073)

黄少敏(武汉水利水电科学研究所,湖北,武汉,430070)

高职C语言教学浅析 篇3

【关键词】C语言;学生兴趣;教学方法

现在计算机已普及到各行各业,深入到各级层次。在我国高职院校教育中,C语言不但成为计算机专业的必修课,而且也成为非计算机专业的学习课程。做好该门课程的教学具有非常重要而深远的社会意义,现将我在C语言程序设计课程中教学内容、教学手段、教学方法等方面的改革与取得的教学效果与大家做一探讨

一、努力培养学生的学习兴趣及正确的思维摸式

兴趣是学习的关键,兴趣决定了教学效果的好坏。初学C语言时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,授课时我改变过去先给出定义和规则的讲授办法,而是演示一些由前几届学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了C语言程序设计的内容后,大家都能够编出这些小程序。努力把枯燥无味的“语言”讲的生动、活泼。

二、循序渐进

高职学生第一次接触计算机语言,“通俗性、可接受性”的教学原则同样适合于这门课的教学。在课程讲授过程中,我没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注意易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言的规定和程序设计的方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的、好的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。

三、改进授课方法、实现教学相长

(一)采用启发、引导的教学方法

(1)教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。我教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,给时间让学生思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。例如 ,在讲数组的概念时,我先设置问题:编程计算10个人的英语平均成绩。根据以前所学,学生会想到:需要说明10个类型相同的变量用于存放10个人的英语成绩。进一步要求:计`算50个人的英语平均成绩,这时候如再说明50个变量,则会将问题麻烦化,学生此刻需要讨论该如何合理说明变量。再深入一步:求100个人的英语平均成绩。此时,当教师引出数组的概念、分析数组的性质时,学生不仅能够记住数组的性质,还能够知道在什么情况下使用数组类型,达到事半功倍的效果。

(2)教给学生正确的学习方法,引导学生掌握程序设计的思想和方法。经验丰富的软件设计者都知道程序设计的关键在于找到解决问题的方法,即算法。根据软件工程的思想,当拿到一个任务时,首先应将这个问题自顶向下逐步细化,逐层向下分解,直到满足每一个要求。实现时,可以先用流程图描述出算法,进而写出合理的算法,再将之转化成程序。

(二)采用目标教学法,使学生明确目的,确立主题

学生是认知主体,是信息的主动接受者,但也并不能否定教师的指导作用,教师作为知识的先知者,自然清楚所学内容哪些是重点及难点,哪些是只需一般掌握的,如果脱离了这一点,学生有可能会不加区分地对所学内容完成认知,进而导致其知识主结构的无法确定,所以教师在进行教学设计的第一步还是要进行目标分析,指导学生确立主题。

四、校企结合,加强实践教学环节

高职教育着重培养具有实际工作能力的技术型和应用型人才。为了使学生学习到的知识与社会接轨,可以创建校企结合的课程建设方法。听取企业家对C语言程序设计教学改革的意见、由企业向学校提供实验(实习)条件、以企业作为学生的校外实习基地,通过这些方法使学生熟悉公司内的编程环境。学校还可以邀请企业家为学生开讲座,派遣青年教师到企业去实习,使教学的内容与企业的实际更为贴近。高职院校作为企业的人才培育基地,发挥技术和设备的优势,为企业提供支持,向企业输送合格毕业生,校企结合实现双赢。

C语言教学改革探讨 篇4

关键词:C语言,教学改革,案例教学

1 概述

C语言是程序设计中一种用途非常广泛的计算机语言, 既可用来写系统软件, 也可用来写应用软件。C语言是一种理想的结构化语言, 语言结构清晰, 便于学习, 而且编译、运行效率高, 数据类型丰富, 灵活性强, 特别有助于初学者学习模块设计思想和数据结构的运用, 对培养学生的抽象思维能力有很大帮助, 因而成为计算机语言教学的首选语言[1]。

目前, 国内各高等院校都把C语言程序设计作为重要的计算机基础课程。然而在传统的C语言教学效果未达到期望水平。首先, 学生对学习C语言课程没有明确的学习目的与兴趣。一些学生了解到现在流行的程序开发语言是Java和C#等, 觉得C语言用处不大[2]。其次, C语言的教学仍停留在传统的注重语句、语法等细节讲授和掌握上, 却忽略了程序设计能力与思维的培养。这些内容与实际应用相距甚远, 造成学生的学习积极性不高, 学习效果较差[3]。最重要的是, C语言程序设计是一门实践性很强的课程, 而实际的实验课环节效果较差。在上机过程中学生过分依赖书本, 多数学生上机就是拿书本上的例子来验证, 缺乏独立编写程序的有效训练。学生往往通过网络或者书本等其他途径来寻找答案, 而不是自己独立思考完成。

针对传统教学中存在的问题, 本文对C语言教学改革进行了探讨, 旨在激发学生的学习兴趣, 培养学生独立设计程序的能力, 提高教学质量。

2 C语言教学改革探讨

面对目前严峻的就业压力, 高校学生学习的目的性更加明确, 但其深入钻研的精神不足。授课教师应正视这些现象, 改进授课内容和方式, 让学生在有限时间内高效地掌握基础性和关键性的知识。为此从以下几个方面入手, 对C语言程序设计课程的教学内容和方法进行了探索性的改进。

2.1 上好C语言教学的第一堂课

C语言教学的第一堂课很重要:第一要讲明C语言的重要性;第二可以结合一个生动的C语言编程实例, 使学生对C语言的学习产生兴趣;第三提出课程学习要求与方法, 给出平时作业、上机实验、考试方式等具体要求。

2.2 适当淡化语法细节, 培养编程基本功

C语言比较抽象且涉及知识点多, 若在授课过程中过多地讲授C语言的语法细节, 将会导致学生忽略对程序设计基本思想和方法的学习。面对不断更新的软件开发环境, 学生若不能以程序设计的基本思想和方法为指导, 将会降低学习新知识的效率, 从而对学习和工作产生不利影响[4]。在C语言教学中应该注重培养学生的编程思想、解决问题的思路, 对于语言的语法则适当淡化处理。对于编写代码中出现的格式细节问题, 不是过分强调, 而是告诉学生培养良好的编程风格的重要性。

考虑到学生的接受能力, 在教授内容方面注意以下几点:a.以基本概念为基础, 强调C语言的编程思想, 舍弃复杂的、容易混淆的技术细节;b.着眼于应用, 对于难于理解的内容, 通过例子说明, 避免学生陷入空泛的理论概念中;c.对于部分有能力、特别喜欢钻研的学生, 在其掌握基本的知识之外, 推荐一些选读和自学的内容。

教师在C语言授课过程中以讲授程序设计的基本思想和方法为主, 但并不意味着学生可以忽略具体程序设计语言细节的学习。在程序设计中, 细节处理不当将会导致程序无法正常运行或者运行结果与期望的结果不一致。

2.3 以学生为主体的课堂教学

以前教师在讲台教授, 学生被动听讲, 造成学生“课堂上明白, 下课后不会”的现象。在现代教学中应以学生为主体, 采用多种教学方法, 激发学生的学习兴趣, 调动学生学习的积极性和主动性。

案例教学以程序设计为主线, 以编程应用为驱动, 通过案例和问题引出教材内容, 重点讲解程序设计的思想和方法, 穿插讲解相关的语法知识[5]。对于一些重难点问题, 教师可以安排时间为学生做专题讲解。同时对于比较典型的问题, 可以安排少量课时实施“学生示范教学法”。在课堂的实践环节中, 教师可以让一个学生上讲台编程, 学生所有的操作会通过投影仪展现给全班同学。如果讲台上学生出现编程错误, 教师应以此为例加以更正和讲解, 并介绍一些可避免错误的编程技巧。

2.4 实验教学严格把关

C语言程序设计是一门实践性很强的课程, 只有通过上机实践, 才能将C语言程序设计的理论知识印在脑海中。教师在实验课环节中应严格把关。教师在实验教学过程中, 向学生介绍C语言程序设计采用的编程环境并演示调试程序的方法, 使学生掌握程序调试方法, 认识到实验对程序设计语言学习的重要性。在每次实验课前, 教师合理布置实验任务。上机调试中发现问题时应及时解决问题, 认真完成实验内容并按时上交实验作业。教师将作业中存在的问题及时反馈给学生, 督促其修正、完善程序。对于学生作业中普遍存在的问题, 教师可以在课堂上重点强调、讲解, 使学生改正错误, 加深对知识的理解和掌握。

2.5 以鼓励为主评价学生

教师在学生平时作业以及实验环节中多给学生鼓励, 多给学生积极正面的评价。对学生提出的问题要耐心地指出问题根源, 引导学生自己找出原因并改正错误;对学生有创意的程序设计思想和方法多给与鼓励和肯定。鼓励学生参加校内组织的C语言程序设计竞赛以及各种社会公开的程序设计大赛, 使学生在比赛中不断提升自我, 肯定自我。

结束语

传统教学中, 很多学生在学完C语言后能读懂基本程序代码, 还能写出程序运行结果, 但当他们遇到实际的程序编程时, 就无法应对自如。这是因为传统教学模式是给出问题和代码, 学生读懂程序后上机验证结果, 这就导致了学生只会读程序而不会写程序。针对传统C语言教学中存在的问题, 学校需要进行有效的教学改革, 提高教学质量。改革目的以培养学生的实践能力为主, 在教学中, 一定要以学生为主体, 从提高他们的实际操作能力出发, 改进传统的教学方法, 重视实践。C语言教学改革不是一蹴而就的, 应该重视理论与实践相结合, 在今后的教学过程中不断去完善。

参考文献

[1]朱鸣华, 刘旭麟, 杨微.C语言程序设计教程 (第二版) [M].北京:机械工业出版社, 2011.

[2]杨平.C语言教学改革探讨与实践[J].电脑学习, 2011, 2:63-64.

[3]刘克兴.信管专业C语言教改初探[J].科技向导, 2010, 29:27-28.

[4]王鹏远, 苏虹.高校非计算机专业C语言教学改革与实践[J].计算机教育, 2011, 2:15-18.

《C语言》教学大纲 篇5

适用范围:适用于网络教育、成人教育学生

一、教学目的和任务

本课程是计算机及相关专业的重要基础课程,它是计算机及相关专业学生掌握高级语言编程方法的入门语言。通过对C语言的基本特点、基本内容、语法规则、程序设计方法等内容的讲解,使学生掌握高级语言的基本知识和结构化程序的设计方法,掌握常规的编程技巧,提高学生的计算机解决问题的能力。为学生进一步学习计算机知识打下必要的基础。

二、教学的内容、基本要求和重点

基本要求注重掌握基本知识,学会计算机程序设计基础,注重程序设计能力培养。教材:《C及C++程序设计》(张富编,人民邮电出版社)教学时间:60学时(讲授40学时,上机辅导20学时)

第1章

对C语言的初步认识

一、教学内容(6学时)

C语言的基础知识,包括:C语言初步,简单输入输出,数据类型,运算符,变量和表达式等。

二、教学要求

1、C语言的基本知识,C语言简介,结构特点和编译方式等。

2、标准的输入和输出函数。

3、C语言数据类型。

4、变量说明。

5、操作符(运算符)和表达式。

三、重点:输入和输出函数,变量,操作符,表达式。

第2章

程序控制语句

(一)一、教学内容(2学时)

程序设计的三种基本结构,顺序结构介绍,分支结构。

二、教学要求

1、结构化程序设计基本内容。

2、顺序结构设计特点。

3、分支结构,if语句和switch语句的语法规则和应用。

三、重点:If语句和Switch语句 第3章

程序控制语句

(二)一、教学内容(4学时)

循环结构,包括:for, while, do while等语句。

二、基本要求

1、循环结构的思想及goto语句。

2、for, while, do while循环语句。

3、多重循环及continue, break语句。

三、重点:for, while , do while语句和多重循环。

四、上机辅导(4学时):分支、循环相关的程序设计。

第4章

数组

一、教学内容(4学时)

构造类型介绍,数组及应用。

二、教学要求

1、一维数组的定义及使用。

2、二维数组和多维数组的定义和使用。

3、字符数组和字符串变量。

三、重点:数组的定义和使用

四、上机辅导(4学时):数组应用程序设计

第5章

指针

一、教学内容(4学时)

指针的定义和使用,指针和数组,字符指针等。

二、教学要求

1、指针的概念,指针操作和指针表达式。

2、指针和数组。

3、字符指针和字符数组。

4、指针数组和二级指针。

三、重点:指针的使用,指针和数组,字符指针。

四、上机辅导(4学时):指针应用程序设计

第6章

函数

(一)一、教学内容(4学时)

函数的定义,函数参数,函数调用,递归。

二、教学要求

1、函数基本知识,函数参数和函数值。

2、函数的调用。

3、函数的嵌套调用和递归调用及应用举例。

三、重点:函数相关知识,递归和应用

第7章

函数

(二)一、教学内容(4学时)

函数的进一步讨论,返回值,变量作用域,参数,函数指针等。

二、要求

1、非整数返回值和变量的作用域。

2、函数的形参和实参,数组作为函数参数。

3、内部函数和外部函数,主函数。

4、函数指针。

三、重点:函数的返回值,形参和实参,数组参数,函数指针。

四、上机辅导(4学时):函数应用程序设计

第8章

数据存储方式及位操作

一、教学内容(4学时)

数据存储方式,位操作。

二、要求

1、数据存储方式,变量修饰符const,变量存储方式,动态存储单元。

2、位操作符,条件运算操作符,括号操作符,符合赋值运算符。

三、重点:变量存储方式,位操作符。

第9章

用户定义数据类型

一、教学内容(4学时)

用户定义数据类型,结构,位域,联合,枚举。

二、要求

1、结构类型的定义,结构数组,结构指针及其结构的应用。

2、位域的定义和应用。

3、联合和枚举的定义和应用。

三、重点:结构类型和位域的定义和应用。

四、上机辅导(4学时):结构应用程序设计

第10章

预处理器和磁盘文件操作

一、教学内容(4学时)

预处理器和磁盘文件操作。

二、要求

1、宏定义和宏替换(#define),文件包含(#include),条件编译。

2、文件概述,控制台I/O,ANSI文件I/O系统。

浅谈C语言教学的误区 篇6

关键词:C语言;教学现状;教学误区

一﹑教学现状

在高等学校的本科教育中,“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语言程序设计”课的教学目的则要分为三个层次,一是使学生全面理解计算机程序设计语言的基本内容和结构;二是通过算法掌握程序设计的基本方法和步骤,并具备一定的程序设计能力;三是为后续课程的算法描述和其他程序设计语言的学习奠定基础。

二﹑教学误区

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

(一)教材误区

国内高校的“C语言程序设计”课大多选用谭浩强主编、清华大学出版社出版的“C程序设计”[1]为主教材,目前使用的是2005年7月修订出版的第三版,教材共363页,主体内容分为14章,其中,第3章的数据类型与表达式占用30页,第4章的格式输入输出占用12页,前9章共占用218页,后5章共占用145页。占用如此大篇幅的原因是教材中除了介绍相关语法格式外,还增加了相当多“特殊格式”和“特殊情况”的解释和说明,因此,该教材的最大优点就是“内容详尽、解释清晰”。

然而,对于初学者来说,学习计算机程序设计语言就是为了“为计算机描述求解问题的过程”,过于详细但又远离现实问题的“特殊格式”和“特殊情况”的解释,使得学习内容复杂化,增加了程序设计语言学习的难度,误导了学习者的学习重点,由此也赋予了该教材无法掩饰的缺点,那就是教材编写的指导思想和教材内容的组织脱离了高校各专业“C语言程序设计”课程的教学目标,过分强调语法细节而忽略了程序设计语言的“正向表达能力”的应用,过分强调“语言的灵活性”而导致教材主体内容的“复杂化”,从而误导“C语言程序设计”课程的教学内容朝着“重语法学习、轻算法描述”的“语言研究”方向发展。

(二)讲授误区

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

(三)考核误区

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

C语言教学初探 篇7

C语言是计算机软件开发领域中流行的程序设计语言之一,它使用灵活、功能丰富、表达力强、生成目标程序质量效率高、可移植性好、语法简洁精妙,很便于描述算法,同时还可以方便直接地控制计算机的底层硬件,使我们能够深入系统底层进行编程,既可用来编写系统软件,也可用来编写应用软件,应用范围很广。其由于功能强大、效率高、简洁灵活和可移植性强的特点,在软件开发领域深受编程人员的喜爱。

C语言由于是理想的结构化语言,同样适合于程序设计教学,所以成为计算机语言教学的主流语言。通过对C语言的学习,可以使学生掌握基本的编程思想,为学习其他编程语言奠定基础。C语言掌握的程度,不仅能直接影响到学生对后继课程的学习,同时对他们以后的学习和发展也起着至关重要的作用。同时,它也是计算机等级考试的主要考试科目。大部分学校采用C语言作为非计算机专业学生计算机等级考试二级语言课程。

2. 教学中存在的问题

然而,但从目前的教学情况来看,学生在学习C语言时往往存在着一定的问题,实际掌握的情况并不理想。由于C语言涉及的概念多、规则广、使用灵活,初学者很难掌握,容易出错。对于大多数的初学者,C语言灵活的语法结构使他们望而生畏,繁琐的细节使他们头晕脑张。同时由于缺乏对计算机结构的全面了解,缺乏对计算机硬件尤其是内存结合很紧密的一些概念,学生基本上很难理解和掌握C语言。

(1)课堂教学中没有突出语言本身的特色。C语言作为一门高级计算机语言,和其他计算机语言有很多相似甚至相同的地方,对于已经掌握计算机基础和其他语言的人,就不能再重复这些知识。一些教师对C语言本身的一些特有的概念,尤其指针、链表的应用,强调不够,既浪费了学生课堂上宝贵的时间,又使得学生对新知识理解不深。

(2)没有充分调动学生学习的积极性。在目前的课堂教学中,还是以教师讲授为主,没有充分发挥学生学习的主动性,启发式教学没有得到充分运用。教师不了解学生课前预习的情况,不了解学生的真正需求、难点和问题所在,挫伤了学生学习的积极性和热情。

(3)对于实践教学环节重视不够。C语言是一门实践性很强的计算机语言,但目前的实践课教学存在很多弊端。例如:学生不明确上机实验的目的,实验的内容不清楚,想干什么就干什么,没有相应的实验要求,考核中上机没有一定的比例。这样,语言课就成了单一为了考试的一门课,其结果有的学生连最基本的实践操作也不会做。

3. 教学内容及方法的改革

学习程序设计不仅是为了掌握一种开发工具,更重要的是用计算机解决问题。因此在教学过程中,教师应改革传统的语法学习内容,将算法教学融入到语言教学中,通过实例由浅入深,使学生在解决具体问题的过程中掌握算法的精髓[2]。

在实践教学过程中,要对《C程序设计语言》教学内容进行调整和整合。首先,对书上的主要内容———I/O格式、控制结构、指针等内容,采用讲、练结合的方法让学生掌握精华部分,对结构体、公用体、文件等内容采用以学生自学为主、答疑为辅的方式让学生掌握这部分内容。其次,针对学生对语言课程学习的单调性和枯燥特点,采用多种教学方法,并在重点内容的教学上辅以大量的课内习题课和课外练习方式,让学生牢牢掌握基本内容。再次,让学生做针对性很强的练习来加强学生的理解。最后,对学生在作业过程中暴露的主要问题集中解决、个别问题单独解决,以此来弥补个体差异,同时兼顾到大多数学生的利益。

在教学过程中,要坚持“结构化程序设计”原则。所谓结构化程序设计,是组织人的思维,以便在合理的时间里,将计算任务用较容易理解的方式表示出来。结构化程序设计方法的基本思路是,把一个复杂的问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。因此,在学生初学程序设计时,这一方法可以养成良好的思维习惯。在教学中,应当向学生强调这样的几点:第一,程序质量的优劣首先取决于程序模块结构的清晰度,要按照一定的标准、一定的原则、一定的风格设计。第二,结构化程序的三种基本结构:顺序、分支、循环,它们是构成程序的基本单位。如果在程序中,所有的模块都只使用这三种单入口、单出口的基本控制结构,那么,不论程序包括多少模块,也不论一个模块包含多少个基本控制结构,整个程序仍然能够显示清晰的流程,这就实现了程序语言的“结构化”。第三,结构化程序设计的基本方法是自顶向下、逐步细化、模块化设计、结构化编码。逐步细化总是和自顶向下结合使用,一般也把逐步细化看作自顶向下的具体表现。

4. 加强实验环节,注重学生动手能力的培养

C程序设计是一门实践性很强的课程,要把学生在课堂上所学的知识在计算机上用程序设计反映出来,必须加强实验环节的教学,强化实验能力和学生的动手能力[3]。为此要做好以下几点:

(1)编写符合学生实际情况的实验讲义,注重学生综合实验能力的培养。

(2)每一堂实验课前,检查学生的实验预习报告,了解学生的预习情况,并对本次实验内容提出具体的要求,在实验课结束前对实验中存在的问题进行总结。

(3)加强实验环节注重学生动手能力培养。

在实验教学过程中注意培养学生的动手能力、独立科研能力及合作精神,绝不允许“一人动手大家看”这种“放羊式”现象出现。学生在做完实验后都由教师检查其结果,打分后方可离开,凡无结果或结果不理想者,必须补做或提供条件让其重做,促使学生在实验中勤动手,也使学生们具有成就感。对于部分综合型的实验尤其强调分工合作,实行小组长负责制,争取小组成员一起协调配合完成。

数字图像处理技术案例教学法探讨

(台州职业技术学院,浙江台州

摘要:笔者就案例教学法在数字图像处理技术中的应用作了初步的探讨,同时,简要介绍了在尝试数字图像处理技术案例教学中的一些体会。

关键词:数字图像处理技术案例教学法分析

1.引言

随着数码技术应用日益普及和深化,数码设备及其产生的数字图像信息的数量以惊人的速度急剧膨胀,而且对数字图像信息的要求与日俱增,数字图像处理技术日益显示其重要地位。数字图像信息的处理涉及多方面的知识,仅仅掌握理论知识不足以指导实践,通过案例教学法,将实践中的实际案例引入课堂,可以很好地衔接教学与实践,具有极好的指导意义。

案例教学法是以对案例的分析解决为主线,通过对案例中的问题进行分析,激发学生的求知欲,调动学生的积极性,使学生自觉主动地学习案例,掌握原理和方法,实行科学的教育思想观念的一种教学方式。它是一种互动式的教学方法,可以实现启发式教学,能够极大地提高学生的学习兴趣,实现真正的教学相长。它更是实现理论联系实际的现实可实施的途径。案例教学法在数字图像处理技术教学中的应用将在更大程度上激发学生学习的学习兴趣和参与的积极性,同时,有利于学生掌握理论知识,并运用知识解决软件开发中的实际问题,最终提高教学质量,达到学校教育培养的目标。

有鉴于此,本文有对案例教学法在数字图像处理技术中的应用作了初步探讨,以期对教育同行和广大学习者有所启发和借鉴。

2.案例教学法的含义

案例教学法(case methods of teaching)可简单地界定为一种运用案例进行教学的一种方法,它是美国当今教育行业中非常盛行而有效的一种方法,在我国正在慢慢推广开来。1910年,美国哈佛商学院最先使用案例教学,开创了案例教学的先河。案例教学法于20世纪80年代初传入我国,它有利于培养学

5. 改进考核方式

采用书面考试、上机考试、课程设计相结合的方式全面考核。计算机语言课的实践性决定了它不要求学生死记硬背各种语法规则和语句格式,而是要求学生在解决实际问题的过程中掌握程序设计方法,提高逻辑思维能力。因此,计算机语言课的考核宜采用书面考试与上机考核相结合的方式,辅之以对课程设计情况的考查。书面考试可以侧重对基本概念的理解和掌握方面,编程题目的涉及面可以较宽,以考查学生对基础知识的掌握情况。上机考核可以让学生在规定时间内对给定的程序设计题目编出程序,并在机上调试通过,题目可以是基础知识的综合运用,这样可以考查学生的综合应用能力和快速编程能力。课程设计的具体做法可以结合实验课,将学生分成若干小组,每组布置一个稍大的有实际应用背景的程序设计题目,组内分工各人完成一部分,再由其中一个人负责完成联合调试任务。通过对课程设计情况的

生分析问题、解决问题的能力,提高教学效果。

案例教学是在学生掌握了有关基本知识和分析技术的基础上,在教师的精心策划和指导下,根据教学目的和教学要求,运用典型案例,将学生带入特定的现场进行案例分析,学生通过独立思考和集体协作,进一步提高识别、分析和解决某一具体问题的能力,同时培养学生的沟通能力和协作精神的教学方式。通过案例分析,学生可以获得蕴涵其中的那些已形成的教育原理、教学方法等知识,同时可以提高和发展学生的创造能力及解决实际问题的能力。更重要的是,学生通过案例教学获得的知识是内化了的知识,是“做中学”获得自己理解了的能驾驭的知识,不再像传统教学下获得的抽象的、过度概括化的生硬知识,它能立即被用到类似的教学实践情境中去解决处理类似的疑难教学问题。所以从美国教育家舒尔1986年在美国教育研究协会(AERA)年会重要演讲中发出要发展关于教学的案例知识的呼吁,时至今日,在众多国家的教育研究领域中都能发现案例教学法的应用。

3.数字图像处理技术案例的选择

概括而言,案例是含有问题或疑难情境在内的真实发生的典型性事件。没有案例,案例教学无从谈起,没有好的案例,便没有有效的案例教学,所以案例的选择在案例教学中至关重要。一个高质量的案例应该具备以下几个特点。

(1)目的性。案例教学的目的是为了让学生理论联系实际,通过案例让学生掌握基本的原理和概念,提高发现问题、解决实际问题的能力。一个好的案例应该使学生在讨论中加深对教材中某一重点或难点知识的理解和把握,能利用课堂学习的理论知识来分析和解决案例中所涉及的问题。所以案例的选择一定要围绕教学目的和教学要求。如果脱离这两个中心,即使案例再生动,其教学效果也大打折扣。

(2)真实性。案例一定是现实中发生的真实事件,是常见又复杂的问题,有助于学生实践能力的提高。

(3)启发性。一个好的案例需要蕴涵一定的问题,能启发学生思考,发现多种解决的途径。问题越诱人深入,越能够给

考查,了解学生运用语言解决实际问题的能力和协作编程的能力。

6. 结语

以上是本人在C语言教学过程中的几点体会,现总结出来,谨供各位同行参考,不当之处,敬请指正。教师需要在教学过程中不断总结,在教学方式、教学方法、课题设计等方面进行探索,为C语言课程建设积累经验,促进计算机语言教学学科的建设。

参考文献

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

[2]张敏霞.程序设计语言课程教学方法改革的探索与实践.中国高教研究,2004,(2).

C语言教学探讨 篇8

一、明确课程目标

C语言课程一般是为应用性教学而设置的, 强调实践性是计算机语言课程教学中特别要注意的问题。C语言的内容繁多, 在有限的课时内不可能也没必要面面俱到, 所以必须突出重点, 突出实用性, 关键在于教会学生正确运用C语言编写程序, 一些细节、具体规则和进一步的知识可以让学生在今后的应用中查阅有关书籍。教师应始终坚持以应用为中心, 以算法为基础, 以培养学生的实践能力为核心, 突出技术实用性和再学习能力的培养。

二、实施教学改革

1、培养学生正确的思维模式

《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程, 在整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点, 从而让学生明白如何分析、解决实际问题, 逐渐培养学生进行程序设计的正确思维模式。

在讲课中, 应集中精力对章节的知识结构进行详细阐述、对所要解决的实际问题进行深入剖析, 不应花太多的时间放在对语句语法的过多讲解。当遇到实际编程时, 需积极引导学生把“要想干什么”的问题, 直接转化为“要解决什么”的问题。当问题确定以后, 选择正确的算法。

2、“项目驱动”教学

在理论教学中采用“项目驱动”教学法, 整个课程教学围绕一个“工程项目”进行, 通过逐步拓展的实训项目和设计, 将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到一个个实训项目的程序编写中。在课程初期, 主要是进行单项的编程练习, 重在掌握C语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时, 开始实训项目的编程实践, 逐步组建“学生信息管理系统”, 并且添加文本菜单, 整合扩展记录添加、排序、查询、统计和记录浏览等内容形成课程设计。

3、授课过程中始终把握五个要点

突出特点:在实际授课中, 要一直向学生强调, C语言是一种函数式语言, 这种函数式的特点正是结构化程序设计思想的很好体现, 讲课时多使用函数, 要求大家也多用函数来编程实现。

侧重分析:分析是解决的第一步。把典型问题从不同角度分析, 再比较各种方法的优劣, 取得最佳方法, 这个过程强化了学生分析问题的能力。

抓住重点、化解难点:讲授重点内容时, 应放慢速度、加重语气, 从而吸引学生的注意力。遇到难点时, 善于化解, 把问题逐渐细化, 所有小问题解决了, 难点自然就解决了。

强化实践:计算机语言的实践就是上机编程, 是培养学生综合运用相关知识解决问题的重要途径, 也是我们掌握教学反馈信息的主要渠道。只有亲自动手、亲自实践, 才能真正体会到语言编程的乐趣。通过上机练习也可以进一步加深对理论知识的掌握, 有利于培养学生的创造思维、独立分析问题和解决问题的能力。

注重反馈:教学过程实际上是一个教师与学生互动的过程。为了获得良好的教学效果, 教师应注重及时从每一个环节获得有关学生掌握所学知识的情况、存在问题的反馈信息, 进行有针对性的辅导。

4、在例题上下功夫

一题多解, 注重算法是程序设计的灵魂, 是教学重点, 也是教学难点, 而语言只是表示形式。没有正确的算法, 计算机将解决不了任何问题。对于C语言所涉及到的算法, 应进行部分精讲多练。

对说明语法规则和语法现象的例子追求尽量简单, 对说明算法的例子追求尽量典型, 除了综合演练外, 所有例子都不要太过复杂;不但要举正面的例子, 而且要特别注意举反例;一个程序例材用后不要轻易抛弃, 可尽量变化使用, 例如每次改一点, 看看情况会如何变化, 加深学生对程序中各项参数和要素的理解;一个题目原型, 可采用多种办法来实现, 讲解时不一定要一次操作完, 例材可以重复使用, 这样可节省背景介绍, 加深学生的印象;对一些典型算法 (如排序) 要注意提取其轮廓框架, 进一步浓缩其算法要点;对使用频度高、容易掌握的算法或程序结构可多讲, 反之, 可少讲;对非结构化的语言来说, 结构化的手段和例子要多讲, 非结构化的可少讲或不讲。

5、一题多解 (分组讨论) 刺激学习积极性

为了调动学生编程的积极性, 我们可以采取分组比较方式, 培养他们合作和竞争意识, 从而达到提高学习兴趣的目的。比如求“素数”数这个例子, 先介绍一种常见算法, 其他方法把全班同学分组自主去解决, 最后比较哪组使用方法最多, 最巧, 同时把这些好方法介绍给大家, 鼓励大家去发现新思路、新方法, 培养他们创造性思维。实践证明这种分组讨论方式不但可以帮助学生掌握多种语句的使用方法, 还能培养他们多种角度分析问题的能力以及集体协作能力。

6、课程考核方式改革

(1) 平时上机训练时给学生留一些编程习题, 每次根据学生编写情况进行测评并占据期末总成绩30%。

(2) 期末前, 给学生留一个综合实训题考核学生综合解决问题的能力, 要求同学们在一定时间内完成, 占据期末总成绩30%。

(3) 期末进行理论考试, 占期末总成绩的40%。

以上是本人在C语言教学中的一些体会, 希望能对大家有所帮助。

参考文献

[1]郭琴:对高职高专计算机专业程序设计教学的思考中国科技信息2008[1]

C语言指针教学改革探析 篇9

近年来, C语言已经成为大部分理工科专业的必修课, 其目的是培养学生的程序设计能力, 进而深入理解计算机工作原理及运行过程, 以便今后熟练应用计算机解决本学科的诸多问题。

指针是C语言中的一个重要概念, 是C语言的精华, 正确、灵活运用指针, 可以使程序简洁、紧凑、高效, 但是指针的概念比较复杂, 使用也十分灵活, 因此在学习过程中要理解和掌握它存在一定的难度。本文就是从这一问题出发, 先让学生掌握组成原理中内存地址划分和存取原理知识, 再运用内存图示, 深刻掌握和理解指针的概念和本质。由于指针内容设置偏后和集中讲授带来一些缺点, 本文对指针的内容体系设置提出了一些新的调整方案, 以期提高指针的教学效果。

1 指针概念及实质

1.1 概念

要理解指针的概念, 首先要掌握内存的基本存取原理。冯·诺依曼的“程序存储思想”告诉我们, 计算机的本质其实是“程序的机器”, 其工作原理就是自动、连续地运行存放在内存中的程序的过程。内存是计算机的记忆设备, 可以存放二进制数据, 但是内存的空间很大, 如2GB的内存存放231×8位的二进制数, 可用字节将内存分成231个空间, 以字节的整数倍大小给程序和数据分配存放空间。为了数据的正确存取, 每个空间必须给一个编号, 也就是地址, 这样就知道数据到底存放在内存空间的什么位置了, 取数时也会从确定的地址找到存放空间而不会发生错误。这就相当于一个宾馆中有许多房间, 每个房间都有一个不同的编号一样。

假设程序已定义了3 个变量i、j、k, 变量有3 要素:变量名、变量类型、变量值。变量名实际上是以一个名字代表的一个存储空间, 存储空间的大小由其类型决定, 例如:

short int i=3;

int j=12;

float k=8.3;

char c1=’a’;

不同的编译环境分配给数据类型的存储空间不同, Visual C++6.0编译系统分配给短整型的存储空间是2个, 整型是4个, 浮点型也为4个, 而double型为8个存储空间, 字符在存储器中是用它的ASCII码值来存放的, 所以分配了一个存储空间, 如图1所示。内存的地址从0开始, 依次递增, 每个存储空间都唯一对应了一个地址编号。假设1000~1001单元用来存放变量i, 其值为3, 要注意变量地址和变量值是两个概念, 就如同房间的号码和房间住的客人是不一样的;同样的1002~1005存放整型变量j, 2002~2005存放浮点型变量k, 2006单元存放字符变量c1。

程序执行时, 通过变量名i找到存储空间的地址, 从中取出存放的变量值。程序经过编译之后将变量转换成变量的地址, 对变量值的存取都是通过地址进行的, 这种直接按变量名的访问方式称为“直接访问”。

假设将i变量的地址存放在变量A_i的存储空间中, 现在A_i中不是存放了一个数据, 而是地址, 要存取变量i的值时, 又多了一种方法, 如图2所示, 通过变量A_i得到其存储空间地址为3020, 在该地址中取出存放的值1000, 它不是数据, 而是i的地址, 通过该地址, 再访问内存地址为1000的存储空间, 取出其中存放的变量i的值3, 像这种访问变量i的方法叫“间接访问”。

这样变量A_i和i之间建立起了一种联系, 即通过A_i能知道i的地址, 从而找到i的内存单元, 如图2中用A_i指向变量i箭头表示这种指向关系。

由于通过地址能找到对应的存储单元, 因此将其地址形象化地称为“指针”。一个变量的地址称为该变量的“指针”, 如果有一个变量专门存放其它变量的地址 (指针) , 则它称为“指针变量”, 如A_i就是一个指针变量, 专门用来存放地址, 它的值就是地址, 也就是指针。

1.2 指针变量

专门存放指针值的变量就是指针变量, 它只能存放指针, 也就是说指针变量的值是其它变量存储空间的地址, 而不是一般数据。如果说一个指针变量的值是X, 也就是说该指针指向了以X为首地址的一块存储空间, 在存储中用箭头形象的表示这种指向关系。

指针变量定义的格式为:数据类型*变量名称;

比如说:float*pointer_1;

Int* pointer_2;

可以用赋值语句使指针变量得到另一个变量地址, 从而使它指向这个变量, 如:

float i;

int j;

pointer_1=&i;

pointer_2=&j;

在定义时注意:“*”表示该变量的类型为指针变量。

一定要注意, 定义指针变量时必须指定其类型, 这是因为变量的类型有多种, 其所占的存储空间大小也不同, 当指针变量指向不同类型的变量时, 指针变量本身的类型也应该有所不同, 并且指针变量的类型和所指向的变量类型必须相同, 否则会出现错误。 如上例中定义了一个float类型的指针变量时, 它只能指向float类型的变量。

指针变量中只能存放地址, 因此不能将任何非地址类型的数据赋给一个指针变量, 如:pointer_1=2000是错误的。

所以以后再处理指针变量问题时, 一定要将以下3个问题搞清楚:指针变量的类型是什么?指针变量指向的变量类型是什么?该指针指向了哪里?

2 指针内容体系改革

通观现行的C语言教材, 绝大部分将指针内容独立成章, 在讲授时也是集中讲解, 这样可以在集中讲授时便于综合分析、比较, 但是该章节内容在整个课程内容体系中所处位置偏后, 学生接触到指针内容大约在16周左右, 离学期结束已经为时不多, 在短暂的时间内要理解和吃透指针内容是很难的, 更不要说灵活运用了。

因此指针内容改革的主要问题集中在内容偏后和独立成章上, 改革方案的思想就是打破传统, 将指针内容贯穿于整个课程体系的始终。

例如, 在介绍变量时, 要重点区分变量名和变量值这两个概念。变量名实际上是以一个名字代表的一个存储空间地址, 从变量中取值, 实际上是通过变量名找到相应的内存存储空间地址, 从该存储单元中读取数据。在讲到变量这部分内容时, 就可以引入指针概念, 该变量的存储空间地址就是指针。另外, 在讲到数据的输入函数scanf () 函数时, 要讲到其格式 (scanf (格式控制, 地址表列) ) 中的地址表列, 它是由若干个地址组成的表列, 也就是变量地址, 而不是变量名。例如语句:“scanf (”%d”, &a) ;”, 意为从键盘上输入一个值送到变量a的存储空间中去, 如果将语句写成这样:“scanf (”%d”, a) ;”就错了。“&”是取地址运算符, “&a”就是变量a的存储空间地址, 即指向a的指针。这样在课程2、3章就引入指针概念, 增加了学生的学习时间, 有助于学生对指针的理解, 但是本部分对指针的介绍都是针对基本概念, 对指针的应用等没有作详细介绍。

在讲解数组时, 可将数组和指针内容有机结合, 将指针的使用穿插在数组的内容讲解中, 比如数组元素的引用方法, 引用数组元素可以用下标法, 也可以用指针法。例如语句:“p=&a[0];”, 意为将数组的首元素地址赋给指针变量p, 之后就可以通过p++ 或p-- 来引用数组中的其它元素。在讲解函数时, 将函数指针、函数指针参数、指针值函数等内容和函数的内容有机结合在一起讲解。

这种将指针的内容贯穿于课程体系始终, 将集中讲解改为循序渐进的讲授方法, 不但不会把指针在C语言中的重要地位削弱, 而是更加突出了指针的重要性, 并且这种由浅入深的讲授将指针的各个难点逐一攻破, 使学生在长时间的学习中逐步理解、掌握指针, 使学生克服了对指针的恐惧、畏难心理, 从整体上降低了指针的难度。

3 指针的错误分析

3.1 混淆“int*p”和“*p”的区别

例:void main ()

语句1中的“*”说明变量p是指针变量, 语句2是把变量b的地址赋给指针变量p, 因此指针p就指向了变量b。而语句3中的“*”是“间接访问”运算符, *p表示指针变量p所指向的对象, 即变量b, 所以该条语句还可以写成“b=8;”。

3.2 指针在使用前未初始化

例:void main ()

指针在定义时不会自动初始化, 如果程序中没有对定义的指针赋值初始化, 那它指向的存储空间就是随机的。而语句“*p=b;”就会将p指向的存储空间值用b的值8覆盖, 有可能会造成数据的丢失甚至系统的崩溃。编译程序会产生警告信息:local cariable‘p’used without having been initialized。因此指针的初始化十分重要, 在讲授时要多次强调。

3.3 指针指向的地址越界

这个例子的作用是对数组n的5个元素分别从键盘上输入之后再输出。当1处的for循环执行了一遍之后, 指针q由于每次自己由原来指向的n[0]转而指向了n[4]的下一个位置, 也就是该数组之外了;而2处的输出就会输出数组之外的数据, 这显然是错误的。因为C语言的编译器对该类指针指向迷失不作检查, 因此该类错误很容易发生, 所以要给学生强调指针的指向, 养成良好的编程习惯, 避免地址越界错误的发生。

参考文献

[1]李秋, 赵家刚, 张晴晖.C语言指针教学中的知识点分析与总结[J].计算机教育, 2011 (8) :55-60.

[2]于福生, 刘玉铭, 王加银.C语言课程中指针内容体系设置的改革尝试[J].计算机教育, 2013 (4) :22-24.

[3]郭曦, 何炎祥, 张焕国.一种改进的指针安全分析算法[J].武汉理工大学学报:理工版, 2010, 56 (2) :170-174.

[4]朱立华, 余琼.C语言教材建设的研究与实践[J].计算机教育, 2009 (13) :151-153.

[5]谭浩强.C语言程序设计[M].第4版.北京:清华大学出版社, 2010.

浅谈C语言教学实践 篇10

关键字是C语言的基本单位, 就像人类语言的词语, 单词, 建筑物的砖瓦一样, 不论多么庞大的程序, 都是由这些基本单位组成的, 这些基本结构虽然数量不少, 但是不需要刚刚接触的时候就全都记住, 只要循序渐进, 慢慢的运用, 便可掌握, 根本不需要学生刻意去记忆, 所以难度并不大。而且好多关键字的意义都差不多, 只不过类型不同罢了。

二、数据类型

1. 基本数据类型:

int是声明整型变量或函数的关键字, long, float, short, char等关键字意义跟int差不多, 都是声明语句, 只不过long是声明长整型, short是声明短整型, float是声明浮点型, char是声明字符型。它们的作用是定义变量的数据类型。

2. 复杂数据类型:

struct是结构体声明关键字, 是一种复杂类型的数据类型, 是一种很多基本数据类型的集合, 它里面包含了很多基本的数据类型。比如一个结构体里面, 可以包含有整形, 浮点型, 长整型, 字符型等各种基本数据类型, 结构体的生成并不是固定的, 而是随时随地在内存中生成, 只要有结构体的地址, 就可以应用结构体参与运算, 所以结构体一般都是配合指针使用, 需要的时候生成, 存储数据, 依靠指针保存的地址运用结构体运算, 当运算完成后, 可以按照指针的地址, 释放掉结构体占用的内存, 这个结构体就消失了, 使得内存能够循环利用, 节省系统资源。

3. 数组:

数组是一种有序数据的集合, 它能够定义一个存放变量的数据集合, 存放很多同类型的数据, 减少定义同类变量的数量, 而且在数组中的数据能够一目了然它存放数据的类型, 增加程序的可读性, 使程序可以更简练, 它既可以保存基本数据类型的整形变量、浮点型变量、字符型变量等。也可以保存复杂型的数据, 即保存结构体的数组。

三、程序结构

1. 顺序结构:

最简单的程序结构, 是C语言教育实践的开端, 这种结构, 一般只有定义变量, 输入函数, 简单的加减乘除运算, 一般不涉及逻辑判断运算。程序的主函数流程从定义变量开始, 把数据通过输入函数赋值给变量, 然后变量经过一些简单的算数运算, 得出结果赋值给变量, 然后通过输出函数将变量的数值输出出来。

2. 选择结构:

选择结构是一种逻辑运算, 判定程序语句是否符合条件, 如果条件为真, 那么就执行, 如果条件为假, 那么就跳过。以此来控制程序的运行方向。常用的语句是, if () 语句1else语句2。如果if括号中的表达式判定的结果是1的话, 即为真, 那么就执行语句1, 如果if括号中的表达式判定结果是0, 即为假, 那么就执行语句2。这是最简单的选择结构, 如果需要判定的分支比较多, 还可以嵌套使用if () ;else, 达到多重判定的目的, 但是这种嵌套的多重判定有他的局限性, 就是只能上下级之间多重判定, 做不到同级之间的多重判定。那么就需要另外的语句来实现平级之间选择结构, switch就是这样的一个语句。它的格式是switch (变量x) {case‘变量1’语句1;····case‘变量n’语句n;default;语句;}, 当变量x等于变量1到变量n的时候, 就执行相应case后的语句。如果没有变量等于变量x, 那么就执行default后的语句。

3. 循环控制结构:

循环控制结构也是程序设计的基本结构之一, 最常用的循环控制语句有while和for两种。

在While (循环变量表达式) {语句1;···语句n;循环变量+1}结构中, 当循环变量表达式为真的时候, 那么就反复执行while中的语句, 直到while中的表达式为假的时候, 才跳出循环。

For语句的结构为For (表达式1 (循环变量赋初值) ;表达式2 (循环条件) ;表达式3 (循环变量增值) ) {语句1;····语句n;}, for语句是循序控制中最实用的, 它能在循环次数确定时用, 也能在循环次数不确定, 只有循环条件时用。

循环控制结构和顺序结构、选择结构作为各种复杂程序的基本构造单元。程序结构虽然就这么三种, 但是所有的复杂程序都是由这些基本的结构来完成的, 循环控制结构和顺序结构、选择结构作为各种复杂程序的基本构造单元。顺序结构决定程序整体流程, 选择结构决定程序的运行方向, 而循环结构通过循环判定条件达到程序的运算结果符合要求。而且三种控制结构都可以互相嵌套, 灵活运用。

四、函数

C语言各种函数中最常用的就是输入输出函数了, 输入输出函数是程序设计中人机互动的关键, 最基本的输入函数是scanf () 和输入函数printf () , scanf () 的作用是把需要运算的数据输入计算机, printf () 的作用是把程序的运算结果在屏幕上显示出来。它们的作用只是输入和输出, 对程序的运行没有任何的影响, 也就是说, 如果没有输入输出函数, 程序也能正常运行, 只不过没有输入函数, 程序只能在编程的时候输入数据。当需要这个程序运算别的数据时, 需要改动程序, 非常麻烦, 如加入输入函数的时候, 可以通过输入函数输入不两只数据进行运算, 做到灵活控制程序的运行。而输出函数是把程序运算的结果输出出来, 程序中如没有这个函数, 运算的结果只能靠程序员, 观察内存得出, 不能给别人直观的效果。所以说, 输入输出函数, 虽然不参与程序的运行, 但是却是程序的关键部分, 是人与计算机互动的桥梁。

五、结束语

C语言需要掌握的内容有很多, 但是最基本的要求, 就是数据类型, 控制结构和函数, 只要学生将这些最基本的都熟练掌握了, 那么其余延伸的部分也都可以随心所欲的应用了。掌握这些基础内容最有效的方法就是上机实践, 仔细体会C语言各种结构的作用, 当熟练后, 就可以任意组合, 达到能独立编写程序的目的。

摘要:随着计算机的高速发展, 用人单位对能实际操作的编程人员需求越来越大, 传统的理论教学已经不能满足社会的需求, C语言是一门理论和实际操作兼顾的高级编程语言, 能很好的兼顾教学和实践, 是一门非常适合高职高专教育的编程语言。

关键词:C语言,教学,实践

参考文献

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

[2]霍顿.C语言入门经典 (第4版) [M].北京:清华大学出版社, 2008.

[3]雷萌、赵亚妮.C语言疑惑经验谈[J].软件导刊, 2011 (03) .

高职高专C语言教学改革探讨 篇11

【关键词】C语言;教学改革;模块化教学;项目化教学

0.前言

C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点,运用它既能编写操作系统软件,又能开发各个领域的应用软件。本课程是计算机专业的计算机基础课,是学生今后学好后继课程的基础,学好了C语言,再进一步学习C++、VC++、JAVA等语言,就有了坚实的基础。

C语言教学的主要任务是培养学生程序设计的思想,并奠定学习其它计算机课程的理论基础。要求学生通过C语言的学习,了解语言课的基础知识、基本技能和编程的基本思想,同时需要学生有一定的软件和硬件的的基础知识和一定的高等数学基础,能运用C语言进行程序设计,解决显示生活中的一些实际问题。了解一般的应用程序和系统程序的编程知识 。

1.C语言教学现状

1.1理论和实践脱节

学校分别安排理论教学和实践教学的地点,甚至负责理论教学和实践教学的教师都不同。这样就导致理论和实践教学各自一条线进行。上实践课的时候可能还缺乏一些理论基础,也有可能上了很久的理论知识得不到实践机会,教学环节上的脱节,导致教师无法很好的掌控整个教学过程。

1.2学生缺乏兴趣

C语言从基本概念、语法规则,到较复杂的程序设计,要求掌握语言、算法、数据结构和程序设计等方面的知识,同时需要有一定的软件和硬件的基础知识和一定的高等数学知识。而高职高专的学生恰恰数学基础很差,面对C语言是概念性强、理论性强、内容丰富且抽象、严密的逻辑性这些,学习难度比较大,也就自然的失去了学习的积极性。尤其是单纯的理论课,到课率不高,实验课效果稍好些。

1.3课堂效果不好

高职高专学生基础较差,理解问题、掌握问题的速度较慢,需要指导老师非常耐心的教学,然而目前学校的情况是一个老师带四五十个学生,这样很难照顾好每个学生。有些学习不自觉的学生就干脆抄袭别人的作业,甚至不做作业,很难把当堂课内容掌握好。实践课的给部分同学提供了条件,一些自律性较差的学生在机房不学习,只顾玩游戏,很难扭转这种坏习惯。另外学生本身长期养成的不好的学习习惯,导致他们中的大部分听课效率都不高,老师上课讲授的内容很难听进,即使是实践课的问题,也是要讲很多遍才能解决,也就导致上课的效率不高,很难实现预期目标。

2.教学改革策略

2.1激发学生的学习兴趣

C语言本身是一门极其抽象难懂的学科,把抽象的问题形象化,使本来枯燥无味的程序代码变得充满魅力,让学习过程变得轻松有趣,是激发学生兴趣的关键所在。要激发学生的兴趣,首先要让学生明白C语言能做到很多事,利用它我们能编写各种软件,可以向学生展示很多程序结果,面对如此多的程序结果,学生应该很想自己动手试一试了,也就有了学习的兴趣和动力。

接下来让学生亲自动动手。C语言是一门实践性课程,要理论结合实践,加强学生的动手能力和解决问题的能力,教师可以举出几个简单的小程序演示给他们看,并逐一讲解,引导学生自己去发现程序中存在的缺陷以及改进的方式。让学生仿照所列举的几个程序模仿着编一个小程序。程序不用太多代码,也不要求能完成多强大的功能,哪怕完成一个简单的计算器也能让学生有强大的成就感,进而产生继续学习的动力和乐趣。

2.2 C语言理论教学方法

理论教学整体采用模块教学法,按照本课程难易层次组织教学内容。按照由浅及深的顺序大致把本课程分为三个模块:

(1)了解计算机语言的整体结构。主要内容如下:

C语言的概述。

数据类型、运算符与表达式简易部分。

三种基本结构(顺序结构、选择结构、循环结构)及相应的程序设计。

(2)掌握基本的语言规则和编程方法。主要内容如下:

函数概念及函数的简单调用。

数组的概念与简单应用。

指针的概念及指针的简单应用。

结构体与共用体的概念。

文件的概念及文件的简单读写。

(3)了解C语言的扩展功能,掌握C语言的编程技巧。主要内容如下。

复杂的选择、循环控制盒、带有一定算法的程序设计。

函数的复杂调用,内外部函数、存储类型等。

(4)掌握C语言高级编程技巧,进行综合的程序设计。

教师可以根据学生的学习情况,适当调整模块中的内容,比如讲述函数的简单应用,如学生掌握很好,且学习愿望强烈,可以适当添加复杂函数应用的实例。上课中可以采用问题启发式、引申法、框架法、求异法相结合方法授课。采用问题启发式即把很多难理解、难记忆的概念和规则变成一系列问题呈现在课堂教学中,把学习积极性调动起来,师生问答,达到师生互动的效果,增强学生自主探索的能力。引申法是由此及彼,在现有的已经解决的问题的基础上,引申出其他相关联的问题和应用,引导学生解决。这种方法可以培养学生自主解决问题的能力,毕竟程序设计过程中产生的问题是无法完全预料的,在实际编程工作中面对问题,自主解决的能力尤其重要。 框架法可培养学生的全局思维和算法的整体设计能力。通过框架法,可以使初学者有清晰的结构和思路,从全局角度设计问题,层次分明,突出算法设计的关键,利于培养学生的编程思路。求异法是指解决问题的方案可以设计多种,在多种方法中选择最优方法。这种方法能启发学生多角度、多侧面去寻求解决问题的办法,则可激发学生思考的积极性,提高其学习兴致。

3.C语言实践课的教学方法

C语言实践课采用项目化教学的策略。针对每个模块的学习内容,设计相应的程序设计要求,即项目要求。学生根据项目要求,写出设计方法及步骤,交与老师检查,进一步确定设计方案,然后在一定的时限内完成代码编写工作,并给出系统的分析、设计、实现报告。项目化教学方法类似于任务驱动式教学,只不过任务驱动是以课时为时限设计单一的任务,学生根据要求完成一个个分散的任务。而项目化教学没有那么严格的时限,是设计综合的实际应用,是完成可应用的功能,是综合型的。为了达到实践教学的目标以下事项须注意:

(1)学习C语言程序设计应当充分重视实践课。学生应多编写程序,多上机调试程序,积累编程经验。只有在实际的编程实践中,才能发现问题,解决问题,进而提高编程技巧和能力。

(2)加强机房管理,对学生严格考勤,并把考勤成绩记入期末成绩。对学生严格要求,杜绝在机房玩游戏、看电影等情况。

(3)在项目下设计小项目,争取在每个课时都能有所实现,达到课堂效果。

(4)每周编写一次实验报告,总结本周完成事项,记录解决问题的方案,这样可以帮助他们总结编程经验。

4.改革初见成效

C语言教学改革 篇12

C / C + + 语言程序设计是计算机专业本科生的专业基础课程,也是大学计算机基础系列课程的核心课程。通过本系列课程的学习,旨在使学生掌握程序编写的基本技能,培养程序设计思想和方法,养成良好的编程风格,编制高效可靠的程序,进而具备灵活利用所学知识解决实际问题的能力。长期以来,高校都在不断地探索和实践关于C /C + + 语言程序设计课程的教学模式。传统的教学一般着重概念和语法规则,缺少学习的实用性和针对性,实验环节与课堂教学环节存在不同程度的脱节。面对繁复枯燥的语法规则和程序结构,学生也很难的有学习兴趣。因此,根据质量工程的相关要求,研究教学改革方案,找出目前C /C + + 语言程序设计课程在教学中存在的主要问题,对现有的教学方法和教学手进行现代化研究与实践,具有十分重要的现实意义。

2 C / C + + 语言程序设计教学现状

本人承担了多年的C /C + + 语言程序设计课程的教学工作,在教学过程中发现了现有教学模式的一些问题和不足,分析总结如下:

( 1) 教学中过度依赖课本,“照本宣科”现象比较普遍。受中学教育模式影响,大多数教师授课时倾向于依赖选定的教材或很少几本参考教材授课,课程章节固化,凡事以课本为主,课本里有什么就讲什么,授课内容“流程化”“格式化”。这虽然有助于教学内容的结构和完整,学生也能直接沿用中学培养的习惯获得知识,但这只不过是“填鸭式”教学的延伸。长此以往,学生学习的主动性会逐渐丧失,对课本外的东西提不起兴趣,学习也只是为了应付考试。

( 2) 过于偏重理论教学,实践教学所占比重较小。在有限的课时教学中,传统方式仅能将基本的、重要的概念、语义语法规则教授给学生,而对其应用方式、更深层次的知识点、探索及发散性的科学问题涉及较少。课程考核也大多片面强调书面成绩,对于C /C + + 语言程序设计这种实践性要求强的课程,书面考试并不能反映出学生对课程的掌握水平,反而误导部分学生靠“死记硬背”课本上的知识点和程序片段蒙混过关。

( 3) 课程衔接性差,在知识体系中,没能很好形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C /C + + 语言知识应用于专业问题的描述和求解中。在教学中,缺少利用所学知识解决实际问题的教学引导,书本与现实隔离,很难做到“学为所用”。

针对上述问题,结合本校实际,对C /C + + 语言课程教学的主要环节教学模式、上机实践、课程考核等方面进行了研究与探讨。

3 C / C + + 语言程序设计教学改革与探索

结合C /C + + 课程的特点,针对传统教学中存在的问题,积极进行课堂教学、实验教学和考核方式的改革,具体从以下几个方面进行了一定的探索实践:

3. 1课程教学改革

( 1) 打破课本章节格式,探索“实例驱动式”和“阶梯式”教学方法针对C /C + + 语言程序设计的课程特色,强调“从实践中来,到实践中去”的教学目标。在课程教学中,注意引入具体化的实例,使得概念的抽象都来源于实际的例子。比如在C语言教学中发现很多同学上课时能听懂,看别人的程序也能看懂,但自己动手去写时却无从下手。这种情况不是个例,而是学习语言类课程时大多数学生都存在的问题。在教学中可以结合生活中的实际例子来示范,为学生“看”和“写”搭建桥梁,培养程序设计思想。例如,从做面包到C语言程序编写的示例( 图1) 。在教学中,可以引导学生分步考虑面包的制作工序,操作中需要摒除详细的细节部分,抽象出核心的流程,然后一步一步代入C语言的程序设计结构和语法规则,使得学生对课程内容有熟悉度和参与感。

通过“做面包”的例子,可以结合变量在内存中存储的方式,帮助学生掌握“变量需要先声明才能使用”的知识点,同时也铺垫了函数的概念,还可以进一步扩展加入分支结构( 面包的不同口味) ,循环结构( 制作多份面包) 等。通过动员学生逐步思考,一起动手做面包,把计算思维与有趣的课堂互动结合起来,既提高了学生学习的兴趣,也“润物细无声”地把编程思维传达到学生心中。而后在学生通过课程学习已经建立了一定的编程思维的基础上,再结合我校的卓越工程师计划,把实际项目引入课堂中来,深入引导实例教学,实现学生从“课本学习”到“实践学习”的转变,通过项目实例让学生亲身感受所学知识的用处,也为毕业后的职业发展打下扎实的基础。

另一方面,知识的获取需要一个循序渐进的过程。这就需要教师在备课时,将同类型问题找出来,将这些问题按难易程度排队上课,先让学生解决最简单的问题,再依次提高问题的难度。通过教学,学生对于同类问题的解决就有了比较深刻的认识。比如上面提到的做面包的问题,同一个问题可以分级扩展,从做一份面包到做多份面包,从做单一口味的面包到做多种口味的面包,从做面包到卖面包,进而面包分类,存货处理等等。通过与实际例子结合循序引进,反复强调知识点加深学生印象,打牢基础。C语言的开设一般在大学一年级,此时着重培养学习兴趣和规范学生养成良好的编程习惯,而C + + 的学习着重于面向对象的程序设计,一般开设于大二下学期或者大三上学期,在C + + 面向对象语言学习时,结合类和对象的概念以及继承和派生等等知识点还可以对“做面包”的问题再做进一步扩展,从做面包到做馒头、饼干等各种糕点,鼓励学生动脑思考逐渐扩充功能,可以自己编程开发一个具备制作、买卖、分类、存货处理等功能的糕点铺。教学中可以根据需要切换各种生活场合,提高学生兴趣,强调编程思想源于生活,服务于生活,学生在日常中也会经常回想起课堂所学知识,达到事半功倍的效果。

( 2) 高效利用团队教学资源,体现从计算机基础课到专业课的顺利交接

C / C + + 语言程序设计立足于引导学生建立基本的“人机互动”概念,构建编程思维理念,掌握核心程序设计方法,开发“发现问题,凝练问题,求解问题”的能力。它是计算机基础课到计算机专业课程的重要衔接,所以在课程设计上,要逐步培养学生从“使用计算机工具→理解计算机工作原理→开发计算机软硬件”的计算思维。但这个目的只通过一门课程是无法完成的,在教学过程中,需要利用院系优秀的教学资源,组建教学团队,使得课程选取→大纲制定→计划培养→落实实施形成系统化,脉络化的结构,加强课程之间的衔接和交互,增加知识的穿插讲授,使得各个课程相辅相成,相得益彰,起到事半功倍的作用。通过对不同专业需求的分析,在制定教学大纲时注重课程的衔接,在实际操作中注重教学团队中任课教师课堂情况的反馈,通过强化教学内容和学生掌握情况双重渠道,避免课程之间的脱节。针对一门课程,学生学分的获取和讲授课时的结束并不意味着本门课程的结束,在形成系统化的课程设计后,可以有效利用每门课程的信息反馈,有的放矢的对学生薄弱环节进行再强化,达到扎实学习,学以致用,而不仅仅是应付考试的良性循环机制。

3. 2上机实践改革

计算机语言类课程的学习关键在于动手实践,但即使意识到了实践的重要性,学生真正动手也往往受限于上机时间和实践平台。在传统的实验教学模式下,大多此类课程都由实验指导书作为参照,学生按图索骥的输入一些代码,完成一些任务。评判的方式也大多依赖于教师,学生实践得不到实时反馈,积极性很难调动起来,课下也不会有意识去编程实践。通过借助我校搭建的ACM/ICPC竞赛平台,学生平时有充足的题目可供练习。而且所有题目规范,输入输出格式明确,评判也由机器在后台完成,正确与否也能实时反馈。通过多组数据的测试,竞赛平台能够发现并迫使学生修正编程中存在的容易人为忽略的问题。另外,ACM/ICPC竞赛平台还可以按照班级、年级、专业等排名,学生也能实时监控自己做题的数量、成功率等,并可以通过Q&A的环节进行错误求助并与其他同学沟通。学生的学习积极性一下子就提高了起来,出错的题目,知识点通过讨论也能自己在课余时间解决。

通过与ACM/ICPC竞赛平台的结合,主要实现了以下几个 方面的探索:

( 1) 激发学生学习兴趣,创造兴趣学习小组

在ACM/ICPC的平台的辅助下,激发学生分组分队共同解决问题,成立程序编写互帮互助小组,采用不定时竞赛的方式对各小组进行考评,并辅以奖励和惩罚措施,尽量让每个学生都不落队。通过组队,同学之间也有了更好的沟通渠道,每个人成为团队的一部分,培养了学生的分享和互帮互助的团队合作精神。

( 2) 鼓励学生涉猎算法等相关知识,培养计算思维

通过ACM选拔,ACM战队的主力队员会通过集训学习数论、计算几何、动态规划、二分图、博弈论、网络流等相关知识,但竞赛选拔的队员屈指可数。这些优秀的种子选手和现有的ACM培训资源却未被大多数学生利用。C /C + + 语言类教学和大多数计算机类课程所追求目标,其核心就是培养学生的计算思维。我们采用了通过优秀学生和ACM集训队带队教师的不定期讲座和培训,以及培训资料等资源的共享来吸引更多的学生参与到程序设计的队伍中来,并已经在学生中通过口耳相传起到了一定的影响力。在上机课中适度引入部分难度稍大的,需要借助其他相关知识才能解决的问题,鼓励学生查阅资料,自己动脑,动手去分析和解决问题,养成良好的主动学习习惯。

3. 3课程考核改革

课程设置的目的不是考试,而是解决问题,特别对于C /C + + 语言程序设计类需要实践的课程尤其是这样。传统的卷面考试不仅不能反映学生对课程的掌握程度,反而诱导出诸如靠划重点、死记硬背程序企图蒙混过关拿到学分的问题。所以在对C /C + + 语言程序设计考核时,我们采用了平时成绩和期末机考相结合的方式。考试成绩分三部分组成,上课活跃度占30% ,分组实践占30% ,期末机考占40% 。其中,上课活跃度包括出勤次数和上课提问情况; 分组实践指通过小组成员共同努力分析、解决实例的情况,一般在上机时根据进度提出难度稍高的问题,鼓励学生通过团队协作,查阅课外资料等来完成; 期末机考是从ACM平台上抽取一部分题目作为期末考核,考察学生实际编程能力。

4结束语

在研究与探索C /C + + 语言程序设计教学的过程中,通过“阶梯式”“实例驱动”的教学方法,辅以ACM竞赛平台,优化配置团队教学资源,追求实用性、系统化、高效率的课程实现,全面提升学生的对程序设计的实践应用能力。通过教学改革,提高学生在学习中发现问题、分析问题和解决问题的能力,培养学生编程思维,计算思维。实践表明,本文提出的教学改进方法可以激发学生学习的热情和兴趣,有效地提高了C /C + + 语言程序设计课程的教学效果。

摘要:针对C/C++语言程序设计课程语法规则繁琐、概念抽象等特点,结合我校实际情况,通过深入分析课堂教学、上机实验及课程考核等教学环节,从教学方法、实验设计及课程考核三方面提出改进方案,提出了以培养学生计算思维为最终目标,以提高学生学习兴趣,激发学生学习积极性为目的,以“阶梯式”“实例驱动”为教学方法,整合教学团队共同促进教学的模式。通过教学改革,激发了学生对C/C++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。

上一篇:汽车美容养护下一篇:无机化学分析实验