c语言程序设计

2022-03-23 版权声明 我要投稿

第1篇:c语言程序设计

“C/C++语言程序设计”课程教学改革与实践

摘要:针对目前高校C语言程序设计课程教学的现状及存在的问题,结合课程组在国家级精品课程“C/C++语言程序设计”建设过程中的经验和收获,提出“以应用为前提,学生为主体,知识为主线,培养学生的实践动手能力为着力点”的教学理念,阐述如何构建一套教材体系完善、教学资源丰富、教学手段先进、教学评价合理、考核方式差异化的教学体系。

关键词:C/C++语言程序设计;教学改革;国家精品课程;教学方法

1 课程教学现状及存在问题

“C/C++语言程序设计”是理工科非计算机专业本科学生的第二门计算机课程,也是大学计算机基础系列课程的核心课程。“C/C++语言程序设计”课程的内容抽象,概念和语法规则较多,特别讲究适用技巧。长期以来,高校都在不断地探索和实践关于“C/C++语言程序设计”课程的教学改革,但仍然存在很多问题。例如,教学依然以传统教学方式为主,不能将实验环节与课堂教学环节很好地相互连贯,相互印证,使得理论教学和实践教学脱节;某些教师忽视学生的实践能力和创新能力的培养,使学生在分析问题和解决问题时无从下手,缺乏编程和调试的能力;实验教学中的多数实验内容是验证性的,学生机械式的运行程序,对知识的理解只停留在表面上;理论和实验课时数较少,上课信息量大,学生接受知识的进度不一样,这就导致教师和学生的学习步调不一致。

针对上述问题,许多高校对“C/C++语言程序设计”课程的教学作出了有益的探索,如文献[1]提出“通、实、新、联”的教学理念;文献[2]提出教学设计原理;文献[3]提出项目教学法;文献[4]提出案例教学法;文献[5]提出“机房授课+自主学习”的授课模式;文献[6]提出将“以应用为背景,以知识为主线,以提高能力和兴趣为目的,变应试为应用”的教学理念应用于该课程的教学中。这些方法均在一定程度上激发了学生的学习兴趣,增强了学生的动手能力,取得了较为明显的教学效果。

为了探究出适合成都理工大学人才培养的课程特点,“C/C++语言程序设计”课程组经过多年的课程建设和对教学环节的研究与探索,提出了“以应用为前提,学生为主体,知识为主线,培养学生的实践动手能力为着力点”的教学理念,构建了一套教材体系完善、教学资源丰富、教学手段先进、教学评价合理、考核方式差异化、精品课程网站新颖的教学体系。下面分别从教学设计、教学方法、教学手段、考核方式以及教学资源等方面进行阐述。

2 教学设计及课程内容组织

2.1教学设计

成都理工大学每年有4000名以上的学生参加“C/C++语言程序设计”课程学习。为实施因材施教,我们重视研究性学习、探究性学习、协作学习等现代教育理念在教学中的应用,根据课程内容和学生特征,对教学方法和教学评价进行设计,并在教学理念与教学设计上实施了多种改革举措。

1)以学生为中心的教学模式。

以学生为中心的教学模式让教师从传统的教学方式中解脱出来,变“教学”为“导学”。教师充分利用多种教学媒体和提示学习资源,讲重点、解难点、释疑点,讲评作业,指导学习方法,辅助小组学习,发挥学生的主体作用,引导学生自主学习,帮助学生培养自学能力。

教师要在理论课前了解学生是否掌握了与课程有关的基础知识和基本技能,根据学生在实验课的表现来了解学生是否掌握了教学目标中要求学会的知识和技能,以及掌握的程度等信息,从而确定后续教学中应重点讲解和辅导的知识,根据学生的实际情况设计教学环节。对于部分优秀学生和已经学习了程序设计的学生,我们要加快他们的学习进度,增加学习难度和深度,使他们可以很快在自己的专业中使用程序设计来解决相关问题。

2)精心准备每一节课,激发学生学习积极性。

激发学生对程序设计课程的学习兴趣,是本课程任务执行的重要目标。学生是主动学习还是被动学习会让教学效果产生明显的差别,因此每位教师都应精心准备每一节课。引领学生跨入程序设计大门的第一节课是极其重要的。学生所关心的是所学课程对自己的专业和今后的工作有什么作用,教师可从不同的专业角度,结合当前最热门的IT话题和实际应用为学生介绍学习本课程的意义和作用,同时介绍一些往届学生将所学程序设计知识用于数学建模、程序设计竞赛、专业课程学习等方面的生动实例,这些都是教师第一节课的良好素材。

3)培养学生系统化的程序设计思维。

程序设计课程长期存在着注重语句、语法和细节的特点,基本上是以程序设计语言自身的体系为脉络展开的。许多学生在学习程序设计语言课程时会觉得枯燥难学,学过后又不能用来解决实际问题。所以学生虽然学了一定的程序设计知识,但编程能力较差。‘部分学生在遇到实际问题依旧无从下手。而系统化程序设计思维培养模式是从本科生的认知特点出发,让教师在教授学生程序设计课程、提高学生编程能力的同时,培养学生的系统化程序设计思维。

程序设计课程不仅教学生如何进行计算机编程,而且教学生如何像程序员一样思考问题。系统化的程序设计思维的培养过程就是让学生自己动手解决实际问题的过程。这个过程充满了学生对未知问题的探索、研究与创新,不仅可以教会学生解决在程序设计中遇到的问题,而且可以锻炼思维,使学生的逻辑思维更加严密,这对一个理工科的大学生来说是至关重要的,对学生整体素质的提高、程序设计课程整体教学水平的提高都有现实意义。

4)互换角色思考与提问。

在教学过程中我们发现,很多学生不提问,有时是学生提不出问题,有时是不知该如何提问。这时,教师需要站在学生位置上,思考学生可能会有什么问题,然后由教师提出问题,让学生来回答。如果学生不能回答,教师再为学生解答。教师备课时不再只是准备我要讲什么,而是思考学生会遇到什么难点,需要向学生提什么问题、解答什么问题。基于此目的,教师需准备大量经典案例,提出问题,分析问题,并在问题中设置一些错误,让学生思考原因,并进一步思考如何修改错误,在这样的学习过程中潜移默化地掌握基本的语法知识和解决问题的方法。这种模式转变了学生的学习方式,激励学生积极思考问题、分析和解决问题。

2.2理论课程设计

由于科学技术的快速发展,计算机科学与其他学科间的交叉、融合日益增强。大多数非计算机专业的培养目标已将学生的计算机程序设计能力作为了一项重要内容。

本课程主要是针对非计算机专业的理工科一年级大学生开设的。与计算机专业不同的是,非计算机专业学生一般只学一门语言课程。因此,该课程的教学就担负起培养学生编程能力的重要责任,成为了学习其他程序设计语言的基础。

根据非计算机专业各学科的培养目标,“C/C++语言程序设计”课程在理论课程内容设计上注意知识结构的合理,强调基本能力的培养,注重基础理论与实际应用的融合。课程内容体系结构重点突出学以致用。课程内容知识结构由C语言简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理与变量的存储类型、文件、结构体与共用体、图形程序设计基础、C++程序设计基础、查找和排序12部分组成。

根据学以致用的原则,在实际应用中,函数是程序设计的重要内容之一,也是学生学习的难点之一,因此在理论课程设计中,我们将函数的使用提前讲解,让学生尽早接触函数,理解模块化的设计方法,掌握函数的基本设计和操作。在讲授第2章有关输入/输出库函数时,可同时结合第8章文件的知识,使学生掌握实际问题中涉及不同数据的不同输入/输出方式,较好地解决了学生学习C语言后不能熟练掌握文件操作的问题。

教材在内容编排上注重易用性。每章的开头设置本章学习目标,之后设置本章学习指导,包含“课前思考”“本章难点”和“本章编程中容易出现的错误”。每章后的练习题涵盖了程序设计中的常见算法,涉及简单程序设计、较复杂程序设计、易于举一反三的程序设计问题等内容,使学生能够通过练习,大大地提高编程能力。

2.3实验课程设计

“C/C++语言程序设计”是一门实践性很强的课程。在近几年的课程建设与教学改革中,实验课程注重理论课程内容与实验内容的有机结合,强调学生创新能力和实际动手能力的培养。C/C++程序设计实验教学内容改变了以往验证性实验为主的现象,使设计性实验内容占了70%以上。通过实验,培养学生分析问题和解决问题的能力,以及动手能力和程序设计能力,从而加深对理论课程内容的理解。

实验课程配有实验指导书,共设计了11个实验项目和一个综合程序设计,其基本出发点是帮助学生理解和消化课堂教学的内容,培养学生自主学习能力,加强其实践能力和团队协作精神,让学生掌握程序设计的基本思想和方法。具体实验内容包括:C/C++简单程序的编写和调试、C语言程序设计基础、控制结构、数组、指针、函数、编译预处理、文件、结构体与共用体、图形程序设计、C++程序设计基础。

3 教学方法和手段

3.1教学方法

为了实现程序设计课程的教学目标,使学生不但掌握高级编程语言的知识、编程技术和基本算法,更要掌握程序设计的思想和方法,培养学生进行问题求解和编程的能力,以及探索和创新能力,我们采用了多种教学方法,主要做了以下改革。

1)课内与课外训练相结合,注重学生综合能力的培养。

课内教师根据教材进行引导学习,加强典型例题的启发式讲解。在分析常见错误案例的过程中,教师讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,帮助学生理解错误发生的原因和实质,掌握纠错的方法和解决的对策。在实验教学中,我们为每堂实验课设计相应的实验项目。实验项目的设计注重实用性和综合性。实践教学强调大量程序设计的训练。教师在网上为学生发布一些经典、实用、有一定挑战性的作业,鼓励学生课外多训练,倡导学生课后以寝室为单位,组成学习小组,进行讨论、分析和解决问题。

为了激励学生参与程序设计的实践,进一步提高学生程序设计的兴趣,提升他们的软件技术水平,成都理工大学每年举行一次全校范围的程序设计大赛。大赛采用初赛和决赛制,要求学生在2~4小时内完成一个综合性较强的程序设计题目,或在一段时间内完成一个综合程序设计题目,然后进行答辩。

2)重视实践教学环节、注重学生创新意识与应用能力的培养。

为了培养学生的实践动手能力,我们加强了实践教学环节的管理。教师要积极使用多媒体实验室的教学设备,进行启发、引导式的实验指导,将平时测试与期末测试结合,测试学生在1个小时内调试和正确编写程序的能力,引导和督促学生重视实践教学。开放性实验注重培养学生的创新意识与应用能力。

3)网站互动学习。

课程组建立的教学网站、精品课程网站、课程资源平台等为学生提供了网络课程、网上答疑、作业提交、理论试题及答案、上机试题及答案、教学录像、视频节目、精品课程网站链接、相关学习网站链接等资源,扩充了课堂教学区域。学生可以在任何时候、任何地点进行互动学习。这种方法及时地解决了学生在学习中遇到的疑难问题。

4)改革考核方式,采用多元评价方式考核实验成绩。

为了提高学生的学习兴趣,培养学生问题求解和编程能力,以及探索和创新能力,我们采用了开卷和闭卷相结合的考试方式,鼓励基础好的学生开卷考试,完成一个综合编程题目。经过实践,参加开卷考试的学生在独立分析问题、解决问题和编程能力上得到了很大提高。

3.2教学手段

多年以来,成都理工大学“C/C++语言程序设计”课程最大限度地、多方位地应用了以下现代教育技术手段。

1)课堂多媒体理论教学。

本课程的理论教学将传统教学手段和现代教育技术手段相结合,在应用现代教育技术手段的同时,继续发挥传统教学的优势。课堂上多媒体课件的播放效果直接影响到学生的听课效果,因此我们不仅制作了幻灯片,还利用Autherware、Flash等工具,制作了具有较强动画效果的多媒体课件,将程序的执行过程利用动画演示,生动、形象地模拟了计算机执行程序的真实情况。

2)建立计算机基础教学网站。

我们开发课程网上教学平台,为学生提供电子教案、多媒体课件、视频等丰富的网上教学资源,同时提供讨论和在线答疑,构建以学生为中心的自主学习环境。

3)网上考试系统。

网上考试系统为学生提供了模拟和考试环境,实现了系统自动组卷和评分功能,为学生课后自学和自测、提高教学效果搭建了一个有效的平台。

4 考核方式

课程考核可以采用开卷和闭卷2种形式。

1)闭卷考试由笔试和机试组成。

(1)笔试(占总成绩的50%)主要考核语言基础、基本的阅读和编写程序的能力。题型包括选择题、填空题、程序阅读题和程序填空题。

(2)机试(占总成绩50%)主要考核程序设计能力,包括上机考试(占总成绩的30%)和平时出勤及作业完成情况(占总成绩的20%)。

2)开卷考试主要考核学生综合程序设计的能力,独立分析问题和解决问题的能力,难度较大。通常只有学习优秀的学生可以参加开卷考试。这些学生必须是按时完成了每一次的实验项目,且中期考试合格。开卷考试要求学生提供源程序、开卷考试报告并参加面试。

5 结语

通过对各种教学方法和教学手段的研究和探索,我们改变了传统的知识传授理念,从而更加注重学生解决实际问题的能力,并提出“以学生为主体,教师为引导,网络教学为辅助”的全新理念,极大地激发了学生的学习兴趣,挖掘了学生的创造潜能,又培养了他们自主研究、协作学习的能力。实践证明,通过上述教学改革措施,教学效果取得了显著提高。在计算机二级c语言考试中,学生通过率较往年大大提升。当然,实际教学过程是一个相当复杂的系统,也还存在着一些需要解决的问题,还需要我们在今后的实践中继续开拓,不断探索。

参考文献:

[1]赵珊,贾宗璞,“C语言程序设计”课程教学模式改革方案探讨[J],科技资讯,2011(35):185-187。

[2]黄群,C语言程序设计课程教学设计探讨[J],计算机教育,2010(5):78-81。

[3]陈洪超,项目教学法在“C语言程序设计”课程中的应用[J],重庆电力高等专科学校学报,2012,17(3):29-30,36。

[4]左永文,案例教学法在“C语言程序设计”课程中的应用[J],科技创新导报,2012(18):175-175。

[5]陈刚,朱晓燕,江汉大学“C语言程序设计”课程教学改革[J],计算机光盘软件与应用,2012(7):245-246。

[6]李敏杰,吕橙,王雅杰,“C语言程序设计基础”的教学改革与实践[J],现代计算机:专业版,2012(8):45-49。

(见习编辑:刘丽丽)

作者:鲁红英 肖思和 孙淑霞

第2篇:汇编语言与C语言的混合程序设计技术

摘 要: 汇编语言作为一种面向机器的语言,具有占用存储空间小、运行速度快的优点,并可直接控制硬件,在某些场合具有重要的作用;然而,汇编语言的编写和调试却相对困难和复杂,在进行数值混合运算与数据处理上尤为突出。C语言具有开发效率高,功能丰富、使用灵活、表达能力强的优点。在软件开发中,采用汇编语言与C语言混合程序设计技术,能有效提高运行效率。笔者结合自身工作经验,具体探讨了这一混合程序设计技术,希望能为广大同行提供借鉴。

关键词: 汇编语言; C语言; 混合编程

Exploration on design technique of hybrid programming of assembly language and C language

Kang Jingjing

(Institute of Information, Shanxi Agricultural University, Jinzhong, Shanxi 030800, China)

Key words: assembly language; C language; hybrid programming

0 引言

在大型程序的设计中,如果将汇编语言程序和高级语言程序结合使用,能充分发挥其各自的优点,实现两种语言的混合编程。在程序设计中,C语言可以调用汇编语言的子程序,而汇编语言也可调用C语言的子程序,还可在C语言程序中嵌入汇编语句,具有极大的优点[1]。同时,在混合编程中,模块的连接、参数的传递和调用关系的确定等都是应当引起编程者注意的重要问题。

1 汇编语言与C语言混合编程的方法

汇编语言与C语言混合编程的方法主要包括以下几种:

⑴ 在C语言程序中使用汇编程序定义的常量与变量[2];

⑵ 在C语言程序中内嵌汇编语句,实现C语言不能做到的对硬件的控制功能;

⑶ 在C语言程序中使用内部函数调用汇编语句;

⑷ 混合编程时,单个任务可被分成若干个功能模块,每个功能模块均以子程序或函数的形式存在,根据各单一模块的特点,选择合适的编程语言进行独立编程,然后通过对应的语言编译系统编译成目标文件,最后将诸多目标文件集合在一起成为一个可执行文件。

1.1 C语言程序嵌入汇编语句

在C语言中,可直接编写汇编语言代码,在C语言中嵌入汇编语句时不需要分号,具体语法为:

asm

如果要嵌入一组语句,则需要用大括号{}将其括起来:

asm {

mov ax,data1

xchg ax,data2

mov data1,ax

}

C语言允许嵌入的汇编命令包括四类:一般指令、跳转指令和数据定义、串操作指令、分配指令。

1.2 C语言调用汇编语言子程序

为了实现C语言对汇编语言子程序的调用,汇编语言源程序一定要严格依据编译系统要求或约定的段组合和段顺序。

⑴ 汇编语言子程序格式

汇编语言子程序的格式通常为:

MYCODE SEGMENT PARA PUBLIC ‘CODE’

PUBLIC_函数名;公共符号说明

DGROUP GROUP MYDATA,MYBBS

MYDATA SEGMENT WORD PUBLIC ‘CODE’

...定义变量,初始化数据

MYDATA ENDS

MYBBS SEGMENT WORD PUBLIC ‘CODE’

...非初始化数据,开辟内存区

MY BBS END

ASSUME

CS:MYCODE,DS:DGROUP,SS:DGROUP

...

_函数名 PROC NEAR/FAR

PUSH BP

MOV BP,SP

PUSH SI

PUSH DI

...程序主体语句

POP DI

POP SI

POP BP

RET

_函数名 END UP

...

MYCODE ENDS

END

⑵ 被调用汇编语言的子程序格式

将被调用的程序的格式与一般汇编语言程序的格式相对比,可得以下结论:

第一,由于汇编语言子程序与C语言程序共用一个堆栈段,因此,汇编语言子程序的开头必须运行以下两个命令:

PUSH BP

MOVE BO,SP

第二,将要被C语言程序调用的子程序必须要以PUBLIC伪操作来说明该子程序是外部调用的。

第三,C语言程序允许子程序使用DI和SI存放局部变量,当变量超过两个时才可存放在堆栈中,因此,模式中出现了PUSH DI与PUSH SI语句[3]。

第四,在整个程序中,定义了MYCODE代码段、MYDATA初始化数据段、MYBBS费初始化数据段,并将MYBBS与MYDATA合成为DGROUP段组,且同一段组中各段共享基址。

第五,程序主体语句部分要有函数值返回语句,该返回值必须在RET语句前。

第六,被调用过程要以RET命令返回。

第七,结束处的END只表示程序的结束,未标示启动位置。

1.3 汇编语言调用C语言子程序

汇编语言具有C语言难以比拟的优势,如:输入时可采用任意进制的数据,并可直接对其读取。因此,可以在汇编程序中调用C语言子程序。

汇编语言主程序的格式与其子程序相同,只需在程序开始处添加语句:

EXTERN 函数名

用以说明该函数是被调用的C语言子程序,是外部的。

在主过程语句中,可通过CALL语句调用外部函数,格式为:

CALL NEAR PTR 函数名

当C语言子程序作为子程序时,其中可只含有C函数,无需EXTERN说明。

2 C语言与汇编语言的连接

2.1 参数传递

C语言和汇编语言在调用时会有参数传递的问题,通常采用堆栈来传递,在汇编语言中,将BP作为基址寄存器,先将来源于C语言的参数压入堆栈,当使用这些参数时,再通过BP利用不同的偏移量对堆栈中的数据进行存取[4]。

2.2 确定调用关系

对将要调用的函数或过程,应进行事先说明,建立调用、被调用关系,被调用的函数或过程应先说明外部类型,调用程序也应说明要引用的外部模块。

此外,还应依据存储模式的不同而确定汇编语言格式,C程序大模式通常对应汇编程序的远类型过程,而C程序小模式通常对应汇编程序的近类型过程[5]。

2.3 C语言与汇编语句程序的模块连接

汇编语言与C语言模块的正确连接有两点要求:汇编模块与C模块的存储方式须一致;汇编模块必须遵从与C模块兼容的命名约定。编译系统在编译C源程序时,会在函数名和变量名前加下划线,为保持连接前后的一致性,所有被C语言调研的汇编子程序标示符都应加下划线。同时,为使汇编语言标示符在C语言中可见,必须以PUBLIC定义。汇编语言中的C语言函数与变量,须在其前加下划线,汇编程序开始部分调用的C函数与变量则应以EXTERN说明[6]。

3 结束语

综上所述,C语言与汇编语言混合编程可互相取长补短,发挥各自优势,进行参数传递、共享数据结构和数据信息,从而用以开发出更安全、实用、可靠的元件,使软件开发与编程事半功倍。

参考文献:

[1] 宋金华.汇编语言和C语言在图形处理中的综合应用[J].湖北广播电

视大学学报,2010.10(12):11-12

[2] 张银,索旭华,廖建林,郭娟.AOCC应用软件的快速仿真平台的研究

与技术实现[J].航天控制,2010.4(2):55-56

[3] 罗南超,向昌成,李唐辉.汇编语言实现多种进制的通用输入输出[J].

电脑知识与技术,2008.5(36):120-121

[4] 王文东,李竹林,尚建人.汇编语言与C语言的混合程序设计技术[J].

计算机技术与发展,2006.8(8):89-90

[5] 左艳丽.C语言和汇编语言混合编程的方法和实现[J].职教与经济研

究(娄底职业技术学院学报),2008.6(3):12-13

[6] 王咏宁.高级语言与汇编语言混合编程的实现方法[J].科技信息(学术

研究),2007.10(24):101-102

作者:康晶晶

第3篇:C语言程序设计课程教学探析

摘要:针对C语言程序设计课程难学和难教的问题,在学生学习目的不明确和学习内容不合理以及教学方式不完善三个方面存在问题的分析基础上,对C语言教学活动中的学习动机、理论和实践内容安排以及教学方式进行了分析,提出了激发学生学习兴趣、调动学生学习主动性和培养学生解决实际问题能力三个解决方法,在教学和实践中取得了良好的效果。

关键词:C语言;理论教学;实践教学

随着计算机学科和其他学科交叉应用的不断深入,高校都开设了程序设计课程,培养学生掌握和利用计算机分析解决问题的能力,同时提高学生的逻辑思维能力。要进行程序设计,必须掌握一门计算机语言作为编程工具,由于C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,它既有高级语言的优点,又有低级语言的许多特点,通过该课程可以很好地提高学生的编程能力,进一步为学习其他涉及到计算机知识的专业课程或者从事编程开发工作打下良好的基础,因此很多高校都把C语言程序设计作为一门基础的必修课进行开设[1]。然而通过调查发现,在教学过程学生普遍反应C语言难学而老师感觉难教,课程结束后很多学生对程序设计没有清醒的认识,更谈不上进行实际的应用开发[2]。如何解决C语言程序设计课程教学中普遍存在的问题,让学生对程序设计有一个完整的认识,进而培养和提高学生的综合素质,是值得每一位从事程序设计语言教学的教师去认真研究的课题。

一、存在的问题

高校C语言课程大都在一年级开设,由于大多数学生在高中时接触计算机编程较少,这就导致了学生在学习C语言的过程中,感觉其枯燥、抽象、难以掌握;对基本概念尚能理解,但当实际编程时,又感觉无从下手。这些问题跟教师讲课过程中过多注重语法等理论知识,对学生学习兴趣和解决实际问题的能力培养不够有很大关系,主要原因体现在以下几个方面。

(1)学习目的不明确。一些学生不清楚程序课程的学习目的和意义,认为就是学习语法规则,学习内容抽象并且晦涩难懂,没有实用价值,学习只是为了考试及格,认为大一开设的课程是基础课,和专业课联系不大,对自己的就业没有影响。一些非计算机专业学生学习该课程目的甚至只是为能通过计算机等级考试拿到证书。

(2)学习内容不合理。许多老师在讲授课程内容时往往都是先给出一般的语法格式,然后介绍语句的语法规则,最后讲解语法要点和例题,没有易于理解和能够提高学习的案例,由于书本内容死板枯燥且和实际问题脱节,无法满足学生的认识水平,也不能调动学生学习的兴趣。在进行上机实验时,试验内容往往是书本上的或是老师上课时所讲的案例,由于内容的选择不恰当,上机实践很大一部分情况下都变成了打字练习,或者只会验证性地做一些修改对错、得出程序运行结果的实验,一旦要求功能改进,不能进行算法和语法结构的调整,最后学生总会觉得出C语言难学的结论[3]。

(3)教学方式不完善。部分老师的教学仍然采用理论讲授在先、上机实验验证、最后布置作业巩固的传统教学模式,在教学过程中过多强调学习语法格式等理论知识,重点分析程序和算法的运行过程,而不是讲解根据问题如何分析和设计算法和程序,从而致使学生的程序设计能力不强。这种教学模式培养出的学生虽然理论知识学得很好,考试的时候也可以拿到高分,但在真正要求解决实际问题的时候,往往没有编写程序的思路,不知如何下手。由于经常解决不了问题,不能体会到计算机编程在解决实际问题时带来的便捷以及没有编程的成就感,久而久之,学生也就失去了学习计算机编程的动力。

二、解决方法

(1)激发学生学习兴趣。兴趣是最好的老师,能够使人产生愉快的心理状态,并对学习过程产生积极的影响。研究证明学习者只要对学习有兴趣,就可使人脑处于开放状态,学习者对于学习的兴趣越浓,信息在传输过程中受到的干扰就越小,信息接受量就越大。从教育心理学的角度来说,兴趣是一个人倾向于认识研究获得某种知识的心理特征,是推动人们求知的一种内在力量。人的注意力、观察力、思维能力、记忆力乃至想象力都和兴趣紧密相连,兴趣能使人的认识理解记忆处于最佳状态,思维能力最为主动和活跃[4]。有了学习兴趣,学生才有可能有意识地去思考和解决问题,因此在C语言教学的过程中要注重激发学生的学习兴趣。

比如,在讲解变量值交换时,有位老师就问一个比较调皮的学生,如何把桌上的两瓶水互换,这个学生不假思索地说,把一瓶水喝了,再把另一瓶水倒进来,这时老师就问那个空瓶子的水呢,学生很不好意思,就说再吐出来,全班大笑。这时,老师就因势利导地说,对了,在变量值交换的时候,一定要记得找一个人来喝水,然后再吐出来,然后就讲解变量值交换的过程。由于学生觉得当时的情况十分有趣,因此对交换变量值的过程就记忆深刻。再比如,C语言中指针是非常抽象的概念,老师在讲解的时候就问学生,如何让某一个同学起立来回答问题,学生往往就会回答,叫他名字,老师又问如果不知道那个学生的名字呢?学生就会回答叫第几排的第几个同学。这时,老师就讲解假如学生的名字相当于变量名,如果我要让某个学生回答问题,叫名字就是通过变量名来访问,叫第几排的第几个就是通过指针来访问,这只是方式不一样,但都是同一个人,教室有多少个座位相当于计算机内存有多大,第几排第几个相当于座位编号就是指针变量的地址,这时学生就会很容易地理解变量、指针及其地址。

(2)调动学生学习主动性。人有一个特点就是希望做事情有成就感,能够体现自我价值并受人尊重,当其有成就感时,往往能够以更大的精力和主观能动性投入到工作中去。成就感是一种主观感受,有两方面的来源,一是自身的价值观念,二是他人给予的肯定评价。一个人如果自身有一个价值判断,而且能够不管别人的看法,坚持这个判断,那么只要他自己认为自己所做的事情是有价值的。当他尽自己的努力,哪怕有一些错误,却有人关注,能够对他进行好的评价,他就能感受到成就感[5]。因此在C语言的教学过程中应及时鼓励学生表扬其优点,使其有学习C语言的成就感,从而调动学生的学习积极性。

比如在学习过程中对学生中出现的与众不同的新颖的程序设计方法和思路要及时宣讲并公开表扬,以鼓励这种有创意的学风[6];对编写的程序不符合规范的学生,也要从中找出值得肯定的地方,不能因程序编写中存在的问题而一概否定。在讲授循环的教学环节中,有一个题目叫求水仙花数,大部分同学根据教材思想从100开始到999单循环,分别求出变量的个位数、十位数和百位数,三次方后相加,如果求和与变量本身相等就输出。有一个同学则是使用三重循环,对三个循环变量进行三次方后相加,如果求得的和与三个变量按顺序组成的三位数相等则输出。由于该同学使用了不同的算法思想,老师对其大加赞扬,结果该同学的学习主动性空前提高,后来参加全国数学建模大赛并取得了很好的成绩。

(3)培养学生解决实际问题能力。在理论与实践的辩证关系中,实践是理论的基础,又是理论的出发点和归宿,实践对理论起决定作用;理论必须与实践紧密结合,接受实践的检验,为实践服务,并随着实践的发展而发展。高等教育培养的人才,既要有用社会实践指导的理论功底,又要有在实践中运用和发展理论知识的能力[7]。C语言课程的教学目的是要求学生熟练掌握程序设计的知识,为以后结合专业学习计算机技术以及进行相关的专业“课程设计”和“毕业设计”打下良好的基础。掌握基本语法和程序设计的基本思想、熟悉常用的算法与编程技巧,具备初步的编程解决实际问题的能力[8]。学生如果只会纸上谈兵,没有解决实际问题能力,也就失去了开设该课程的意义。因此在C语言的教学过程中,除了对基本的语法和语句等理论知识进行传授外,还应该注重对算法的教学,培养学生利用编程解决实际问题的能力。

比如,在讲解输入一个成绩输出其等级的问题时应该有效性判断,如果输入的成绩大于100或者小于0则为无效成绩。教师在讲授该环节时一般都会告诉学生,有效性判断是为了防止输入误操作,在实际编程中要加上条件判断语句,不满足时要重新输入。但是在实际应用时,却并非如此,因为在输入的操作过程中,很有可能第一次输入错误,第二次还是错误,以此类推,因此采用条件判断的分支语句在第二次输入错误时程序已不能运行,根本不能解决实际问题。

三、结语

对于大学生来说,学习C语言程序设计的目的是在掌握理论的基础上,通过实践,培养使用计算机编程来解决各种实际问题的能力,达到学以致用。对教师而言则应改进教学方式,使学生在学习过程中体验快乐,提高学习的积极性和主动性。课堂教学是一门艺术,教学方法探讨永无止境,只要能够符合教学内容,激发学生的学习热情和兴趣,就可以实现教学目标。文中所述的问题以及解决方法是根据实际教学情况分析得出,并已在C语言课程教学和实践中运用,并取得了良好的教学效果。当然,在具体的教学环节中,新问题层出不穷,需要我们不断探索和改进,努力使C语言课程教学日趋完善,让C语言程序设计真正成为学生喜欢的课程。

参考文献:

[1]陈一昌.C语言程序教学新探[J].科技经济市场,2011,(9):107.

[2]刘志宏,刘舟荷,张雯晖,等.项目教学法在C语言教学中的实践与研究[J].中国成人教育,2010,(4):139.

[3]万丽华,夏侯贇.C语言项目教学法在非计算机专业学生中的教学体会[J].电脑知识与技术,2011,(7):5968-5969.

[4]常丁.程序设计教学中如何提问题[J].山西师大学报(社会科学版)研究生论文专刊,2010,(37):197.

[5]赖小科.关于“成就感”的思考[J].体验,2010,(7):52.

[6]徐晓伟.《C语言程序设计》教学方法改革探析[J].软件导刊,2008,(7):207-208.

[7]甄阜铭.理论教学与实践教学的同构关系[J].现代教育科学,2011,(5):79.

[8]贾宗璞,许合利.C语言程序设计[M].北京:人民邮电出版社,2010.

作者:王国伟

第4篇:《C语言程序设计》教学策略与效应

摘要:全文论述运用创新教育理念进行C语言程序设计学科教学改革研究和实践。首先概述教学改革理论依据和目的。分析C语言程序设计特点。阐述基于自主创新的教学改革模式。

关键词:C语言程序设计;教学改革;创新教育;自主创新;现代教学

The C Language Program Design Teaching Strategies and Effect

WANG Xiao-xia

Key words: C program design; education reform; innovation education; independent innovation; the modern teaching

随着科学技术和社会的发展和进步,教育作为社会文化的重要载体,人们对高质量的现代教育需求尤为突出。我国的传统的教育模式是已经远不能满足当前受教育者的需求,特别是《国家中长期教育改革和发展规划纲要》中提出了“创新人才培养模式。适应国家和社会发展需要,遵循教育规律和人才成长规律。深化教育教学改革,创新教育教学方法,探索多种培养方式。注重学思结合。倡导启发式、探究式、讨论式、参与式教学,帮助学生学会学习,激发学生的好奇心,培养学生的兴趣爱好,营造独立思考、自由探索、勇于创新的良好环境,适应经济社会发展和科技进步的要求,推进课程改革。充分发挥现代信息技术作用,促进优质教学资源共享。把改革创新作为教育发展的强大动力。教育要发展,根本靠改革。把提高质量作为教育改革发展的核心任务。”

《C语言程序设计》课程是计算机专业中重要的专业基础课,它是计算机专业和相关专业的必修课,是广泛应用的高级程序设计语言之一。它具有功能齐全强大、结构性能强、内容抽象,概念很复杂、规则比较多,易于出错,具有丰富的数据类型等。《C语言程序设计》的重要特点给教学带来极大难度。

依据《教育规划纲要》和教学现状突出问题,在《C语言程序设计》课程教学中进行深化改革更具有重要性和必要性。教学改革的关键是自主创新。自主创新是相对于技术引进、模仿而言的一种创造活动,是指通过拥有自主知识产权的独特的核心技术以及在此基础上实现新产品的价值的过程。因此,《C语言程序设计》课程教学应着重于创新教学方法,不断提高自主创新能力,提升教学品质,创新人才培养模式,构建自主创新的现代教学模式。

1现代教学观

教学是培养学生的创造性活动。现代教学不仅是传授知识,更重要的是全面提高学生素质,发展学生的智力和潜能。这就要求创新教学方法体系。深化教学改革的目标是全面育人。因此,教学中应具有教育性、创造性、科学性和实践性,应是教师主导作用与学生主体作用相结合的过程,应是从“以教师为中心”转向“以学生为中心”和“做中教,做中学”的过程,教学应培养学生自主学习和促进学生的全面发展。

2现代教学手段

科学技术的进步和发展使陈旧的教学行为与现代社会要求不相适应的。现代教学手段就是将现代的先进科学技术引用到教学活动中,运用多媒体技术进行教学授课、演示操作、测试、制作教学课件和电子教案等。将各种教学手段有机融合在教学活动中,使教学科学化、规范化和现代化,并提高“质重于量”的教学效率,现代教学手段是现代科学技术在教学中的重要应用,是教学技术的重要进步。

3现代教学法

3.1以突破“函数、数组、指针”作为教学切入点

C程序是由函数组成的,函数是C程序中的重要概念和核心部分,也是程序设计中的重要手段,使用函数可以提高程序设计的效率。数组是C语言提供的一种常用的结构型数据类型。指针是C语言具有代表性特征的功能之一,使用指针可以编制出简洁明快、功能强的程序,指针的概念比较复杂,使用也很灵活。数组和指针在《C语言程序设计》中具有极其重要的作用,是《C语言》程序中重要核心内容,是学习C语言的难点和重点之一,学生很难于理解。因此,突出重点讲解和强化突破“函数、数组与指针”概念的理解和运用是学生深刻理解和熟练掌握《C语言程序设计》的关键,起到化解难点的作用,使学生学习《C语言》获得事半功倍和非常轻松的效果。

3.2组合式教学法

组合式教学法就是将启发式、探究式、讨论式、参与式、实例式、课题式和实验式教学法有机结合并贯穿于全部课程教学中。

3.2.1启发式教学

教学中引用相关的知识和实例并运用多媒体技术现代教学手段等进行演示讲析。

3.2.2探究式教学

教学中提出课题进行探索研究。

3.2.3讨论式教学

教学中针对学习课题师生之间进行研究分析和解决。

3.2.4参与式教学

教学中引导学生进行解析学习课题。

3.2.5实验式教学

教学中引入实验、课程设计等,对教学课题进行实际操作。

教学中针对教学课题内容适时运用组合式教学法,其重要特点是教学方法灵活、有的放矢,培养学生自主学习和学会学习,培养学生的动手能力和实践能力,提高学生的分析问题和解决问题能力,做中教和做中学相结合,理论教学和实践教学有机结合,课堂教学与学生自主学习相结合,调动学生学习的积极性和主动性,增强学生的学习兴趣,突破C程序的教学难度,以多媒体技术为主,图文动态演示,增强学生对C程序设计的感性认识,多种教法有机融合、优势互补。有效的体现了师生互动、启发引导、因材施教、精讲多练和理论与实践相结合的教学方式和教学过程。

3.3实例教学法

实例教学法是选择适合课题的并具有典型性、规律性、代表性和示范性的范例融入到教学中。面向学生,针对学生的好奇心理,利用典型实际案例讲析,举一反三,深入浅出。

实例教学法非常适合《C语言程序设计》课程教学,特别是程序设计核心部分更为明显。C语言是一种结构化的程序设计语言,它的基本结构是顺序结构、选择结构和循环结构。其中,循环结构是程序基本结构中很重要的核心部分并具有很大的难度,它是C语言程序中的重要内容。教学中重点突破理解循环结构功能和正确灵活运用循环结构进行程序设计是进行高效编写高质量程序教学的重要关键性教学技术。针对此问题引用实例教学法是最佳有效的实现方法。

实例教学法实施过程:

1)讲析循环语句格式和功能。

格式和功能;演示课件。

2)引例计算1+2+3+…+100

分别用while语句、d0一while语句、for语句编写程序。

程序:演示课件

在C环境下运行程序,演示运行结果,学生察看运行结果。

3)导析画出流程图,讲析语句的执行过程。

演示课件

4)引导学生依据流程图分析语句的特点和各语句间的不同点

5)导题:如果i初值设为l0l,以上例子运行结果是多少?

在C环境下运行程序,演示运行结果,学生看到运行结果,印象深刻。

6)总结:

①3种循环可以互相代替。

②在while和do—while循环中,循环体应包含使循环趋于结束的语句。

③其它

7)导题:选择合适的循环语句:

①输出100~200内能被3整除的数。(使用for语句合适)

②输出用“$”号组成的图形,如每行有10个号组成的长方形、等腰三角形状。(使用for语句合适)

③输出九九乘法表。(使用for语句合适)

通过运用实例教学法,增强学生的学习积极性和兴趣,强化学生主动学习,深刻理解知识点,提高学生分析问题和解决问题的能力,有效突破教学难点,为学生学习其它程序设计打下坚实的基础。

3.4课题教学法

课题教学法就是将具有多功能和典型范例的研究课题引入到教学实践活动中。其特点是将学生自主学习融入到教学中,教师对学生学习进行引导和指导,从“教学生学”到“教学生学会学”转变,贯穿“做中教和做中学”,着重实践性,使学生深刻理解和掌握《C语言程序设计》功能和特点,突破学习《C语言程序设计》难度,提高学生的程序设计能力和操作技能,培养学生探索创新的能力,以适应现代社会需求。

通过《C语言程序设计》教学改革探究实践,获得更高的教学质量。教学改革是新世纪现代社会发展的需要,现代教学模式是切实可行的。自主创新是现代教学实效性的关键,基于自主创新的现代教学方法是创造性的教学实践。教学实践展现了教学改革的重要意义并凸显较好的教学效果。面向未来,教学要以科学发展观的教育思想向高新科学技术不断挑战并伴随可持续性教育发展不断创新。

参考文献:

[1]林东,陈琳.编程语言基础——C语言[M]. 2版.北京:高等教育出版社,2006.

[2]徐维祥.C语言程序设计教程[M].北京:高等教育出版社,1998.

[3]谭浩强,崔武子,付钪,等.C语言程序设计[M].北京:清华大学出版社,2008.

作者:王晓霞

第5篇:C语言程序设计教学探索与实践

摘要:围绕着如何提高C语言程序设计课程的教学效果,就C语言程序设计课程教学中存在的问题和现象进行分析,从教师和学生两个方面,提出解决问题的对策和措施方案,倡导“教师主导,学生为主体”的教学观念,采用启发式教学方法。

关键词:C语言程序设计;以应用为本位;启发式教学

C语言功能丰富,应用面广,当下,很多高校依然把C语言作为非计算机专业学生的一门通识平台课开设。然而,在C语言课程的开设过程中,教师和学生不同程度地存在着缺位和误区,教与学的效果不尽如人意。在C语言的教学过程中,不少任课教师因循守旧,教学目标不清,教学方法单一,教学观念陈旧,使C语言的课堂蜕化为单纯的语法规则的灌输,使C语言的学习变为简单的语法知识的学习,学生普遍反映难学厌学。C语言程序设计课程一般面向的都是大学一年级的新生,他们刚刚结束高中生活步入大学校园,对一切充满了新鲜感和不适应感,学习观念、学习目的和学习方法有待转变和调整,学习的主体意识和自觉性有待增强和提高。针对这些问题和现象,笔者在自己的教学过程中进行一些了探索和实践,取得了一定的效果。

1 教师自觉转变教学观念,提高自身素质

纵观C语言程序设计课程的教学,现在最典型影响面最大的教学模式就是由教师和学生构成一个教学体,教师在讲台上自我表演,学生充当看客或听众【1】。所谓知识也好、信息也好,都是一个从教师到学生的单向流动。在这种以教师为主导、以教材为核心、以课堂为中心的教学模式下,教学蜕化成为一种单纯的知识传授,学生学习的积极性和主动性的调动,学生创新能力和创新思维的培养,都无从谈起。面对这样的现状和背景,教师教学观念的转变和自身素质的提高显得尤为重要。本着对学生负责,对学校负责的态度,教师应在自身责任感的驱使下,主动了解先进的教育思想和教学理念,像教学互动性、学生主体性和知识建构性等等;认真思考大学教育的功能,比如授人以鱼还是授人以渔;结合教学实际,转变教学观念,改变传统的教与学的地位,由过去的“以教师为中心”转变为“教师主导,以学生为主体”,营造民主的教学氛围;改变课堂老师单向灌输、学生被动听讲的授课模式,引入多元化的教学方法,比如启发式,探究式,引导学生独立思考,鼓励学生主动参与学习。

2 引导学生转变学习观念,培养学生学习的主体意识

C语言程序设计课程的开设面对的多数是大学一年级的新生,而对于刚入校的大学生来说,受中学养成的学习习惯的影响,学习的自主意识淡薄,学习还习惯性地全部寄托在老师身上,对老师的依附心理严重。同时,面对大学里比中学多得多的自由学习时间不知如何有效地管理和支配,对新的学习环境和新的学习生活有不同程度的不适应和困惑。面对这样一个处在比较特殊阶段的学生群体,承担C语言程序设计课程的任课教师要有针对性对学生进行引导和管理。首先,任课教师从一开始就让学生明确一个观点,即C语言是学生自己学会的,而不是老师教会的。俗话说,“师傅领进门,修行在个人”,尽管教师的教在教学活动中起着主导作用,但更重要的是学生的学,学习的主体是学生本人,只有学生充分发挥自己学习的自觉性和主动性,教师的教学思想才能得到很好地贯彻,教学效果才能得到很大的提高,整个学习活动也才会成功。其次,强化学生的责任意识。对绝大多数学生来说,如果单从年龄判断,步入大学校园也往往意味着步入成年人的行列。而成年人也就意味着要对自己负完全责任了。教师在教学过程中要不断强化学生对这一点变化的认知,让他们知道要对自己负责,对自己的学习负责,而不应再完全依赖教师或家长的监督。最后,教师的指导和管理。学习观念的转变,新的学习习惯的养成,不是一蹴而就的事情,需要在实际的学习活动中逐步完成。课前的预习、课堂的参与、课后的作业、实验的完成、期末的考试等是C语言教学活动不可或缺的环节,每一个环节里需要学生完成的任务,任课教师从一开始都给出一个明确的要求并严格按照要求去管理,将大大有益于转变学生的学习观念,培养学生学习的主体意识。

3 激发学生的学习兴趣,调动学生学习的积极性

在C语言程序设计课程的教学过程中,往往有学生反映C语言比较抽象,课堂教学又枯燥无味,很容易丧失学习的兴趣和热情。如何激发学生学习C语言的兴趣并始终保有这种兴趣,也常常是教授C语言课程的老师很头疼且又不能回避的问题。“兴趣是最好的老师”,每位教师都深知学生的学习兴趣对教学活动成功的重要性,但C语言程序设计课程侧重思维训练的特点又决定了在这方面留给任课教师的空间是有限的。笔者在自己的教学实践中做了一些尝试。

1)演示典型的完整的C语言应用,培养学生的学习兴趣

学生在学习C语言程序设计课程之初,对该门课程的学习目的和学习目标多数是模糊的,对C语言的认识也多半是空白,任课教师适当的引导很容易引起学生学习的兴趣和探究的欲望,因此该门课程的开篇很重要。笔者摒弃了以往通过文字抽象地介绍C语言的产生、C语言的特点和C语言的应用的做法,直接从演示典型的完整的C语言的应用开始。演示的程序有难有易,涉及的范围涵盖实际生活中的应用、有趣的数学问题、图形动画、游戏等。笔者一度选择了图书管理系统、文本编辑器、学生成绩管理系统、兔子产子问题、百钱百鸡问题、图形时钟、扑克牌的自动发牌、猜数游戏、五子棋游戏等应用,引起了学生浓厚的学习兴趣。

2)营造轻松的学习氛围,创造愉快的学习体验,强化学生的学习兴趣

要引起学生对C语言一时的兴趣不是一件难事,但要让学生在整个C语言程序设计课程的教学过程中始终抱有这样的学习兴趣就不是一件易事了。哪位任课教师做到了这一点,他的教学活动无疑就是成功的。C语言比较抽象,课堂教学容易枯燥无味,是一个不争的事实。为此,在实际的教学活动中,选择难易适中贴近生活的问题,比如利息的计算、持有的股票价值的计算、学生成绩的管理、募捐活动的模拟等;涉及C语言的语法特性时,尽量使用生活化的直白的语言,少用专业术语;课堂教学的开展过程中鼓励学生积极参与,对学生提出的任何有意义的问题都及时地给予肯定;面对问题,对学生做出的任何有价值的回答都及时地给予表扬,都有助于营造轻松的学习氛围,有助于让学生体验到成功的欢乐,有一种成就感,有助于强化学生学习的学习兴趣和热情。

4 践行以应用为本位的教学思路,有选择性地采用以知识为本位的教学思路

C语言程序设计课堂教学的组织有两种思路两种模式。一种是以知识为本位的教学思路下形成的“建筑模式” 【2】,课堂教学以讲授语法为主,先是提出语法概念,然后解释该语法概念,最后举例说明其应用,强调先系统学习理论打下宽厚的理论基础,然后再进行应用,讲究的是理论的系统性与严密性。另一种是以应用能力为本位的教学思路下形成的“生物模式”,课堂教学以程序设计为中心,以编程为目的,从应用的角度切入,先是提出问题,然后引导学生分析解决问题,最后着重介绍涉及的C语言的语法特性,强调结合应用学习必要的理论知识,随着应用的展开,编程难度的逐步提高,算法和语法的学习同步趋向深入,有利于学生能力的培养。

C语言系人工设定的具有确定内涵的概念和知识体系[3],同时C语言程序设计又是一门实践性很强的学科。为此,在C语言程序设计课堂教学的组织上,笔者始终践行以应用为本位的教学思路,同时根据课程内容的特点有选择性采用以知识为本位的教学思路,比如C语言中的基本数据类型、运算符和表达式、文件等基本概念和语法知识,在教学中只需把规定的内容阐述清楚,使学生理解并接受,同时又不破坏这些理论知识的系统性,就适宜采用以知识为本位的教学思路。

5 根据课程内容特征,选择灵活多样的教学方法

教学方法是在教学过程中,教师为了实现教学目的、完成教学任务而采取的教与学相互作用的活动方式的总称。C语言程序设计课程的教学目的是使学生掌握用C语言进行程序设计的基本思想和方法,并具有灵活应用这些思想和方法分析解决实际问题的能力。实现这一教学目的要完成的教学任务包括C语言基本语法的介绍,结构化、模块化程序设计思想和方法的引入,基本程序设计训练以及程序调试方法的演示等。面对这些多样的教学目标和任务,灵活多样的教学方法的选择和恰当应用成为必须。笔者在自己的教学实践中,结合课程内容的特点,有选择性地应用了如下的教学方法。

1)启发式教学,引导学生思考,在应用中学习。

在C语言程序设计的课堂教学中,根据课程内容的特点,精心设计任务或场景,引导学生发现问题、思考问题,使学生在启发诱导下获取知识,解决学习中的疑难问题。比如,在引入数组时,笔者设计了这样一个任务,即编写一个C语言成绩管理程序,要求能够统计出学生C语言成绩的平均分、最高分、最低分以及各个分数段的人数(为了说明问题的方便,假设当前要处理的有10个学生的成绩)。第一步,引导学生描述出10个学生的成绩。根据之前的学习经验,学生很容易想到用10个float类型的简单变量表示,比如score1,score2,、、、,score10。第二步,为节省时间,直接给出用这10个相互独立的简单变量实现的程序,引导学生观察。在学生感叹程序复杂之余,带领学生读程序,引导学生发现,当前的程序无论是成绩的录入、求学生成绩的最高分、最低分,还是统计各个分数段的人数,对每位学生成绩的处理方法都是一样的,存在大量的相似的操作。同时提出问题,这些相似的操作能不能用循环结构描述和实现,让学生思考。诱导学生分析发现,要想用循环结构描述这些相似的操作,学生成绩的描述必须有一个统一的表示方法。适时地给出score[i]这一表示方法,指出让i从0到9变化表示10个学生的成绩,和学生一块用该表示形式改写之前程序的关键部分。让学生比较改写前后的两个程序,很容易得出结论,用score[i]描述批量数据,方便和循环结合起来使用,数据的处理更为有效。最后指出score[i]这一描述形式就是数组,接下来介绍数组的定义完善改写后的程序。

和学生一块模拟执行该程序,由之前的知识积累学生知道,形参m、n和实参a、b对应的是不同的存储单元,m、n和temp是自动变量,从变量的作用域和生存周期的角度,容易得出一个让学生意外的结论,该swap函数中形参m、n值的交换影响不到实参a、b。在学生诧异之余,启发学生思考,诱导学生尝试给出不同的解决方法。往往有学生提出定义a、b为全局变量,诚然这不失为一种解决方法,在鼓励学生的同时,再次诱导学生发现问题的关键并在此基础上找解决方法。和学生一块梳理思路,发现swap函数中形参m、n值的交换传递不到实参a、b,一方面是因为彼此对应的是不同的存储单元,另一方面是由于变量的作用域和生存周期的问题。学生提出的定义a、b为全局变量的解决方法显然是从后者考虑的,现在有意识地诱导学生只从前者考虑,让学生大胆假设在什么样的前提下形参m、n值的交换即是实参a、b值的交换。毋庸置疑,只有当形参m、n和实参a、b对应的是相同的内存单元时。在学生给出了这一假设之后,启发学生思考该假设能不能成立以及如何成立。和学生一块分析,要使形参m、n和实参a、b对应的是相同的内存单元,表面上看它们不能是相同的类型,但实现又要求形参m、n操作的对象是实参a、b,显然形参m、n操作的对象和实参a、b应该是相同类型,同时形参m、n指向的是和实参a、b相同的内存单元,学生相对容易想到形参m、n应该是指向实参a、b的指针变量,问题由此迎刃而解。最后结合该任务的完成引导学生总结,在主调函数和被调函数之间双向传递数据变化,全局变量和指针变量都是不错的解决方法。

2)注重当堂实践,现场编程互动,在学习中应用。

C语言程序设计是一门实践性很强的课程,在践行以应用为本位的教学思路的过程中,笔者不仅重视实验课这一实践环节,更是把实践延伸到课堂教学中。在带领学生对特别设计的问题做了充分的分析之后,引导学生当堂实践,或者师生现场编程互动,不仅可以调动学生学习的积极性,更能培养学生解决实际问题的能力。

参考文献:

[1] 李克东.教育技术学研究方法[M].北京:北京师范大学出版社,2003:132-137.

[2] 熊芳敏,许烁娜..C语言课程教学探讨[J].计算机教育,2010(13):104-105.

[3] 顾钧.程序设计语言课程的概念体系及教学策略探讨[J].中国成人教育,2010(16):159-160.

作者:张露

第6篇:C语言程序设计教学方法探讨

摘要:C语言程序设计是计算机专业的基础课程,也是其他程序设计语言的先导课程,如何通过有效的教学方法提高该课程的教学质量显得尤为重要。针对教学中出现的问题,从C语言的特点和学生的学习习惯等角度,从课堂教学和实验教学等几个角度提出多种形式结合的教学方法。

关键词:C语言程序设计 课程教学 实验教学

0 引言

C语言是当今最为流行的程序设计语言之一,C语言程序设计不但成为高等院校计算机相关专业学生的专业必修课,而且也已经被非计算机专业学生学习的课程[1]。课程开设的主要目的是使学生掌握一种基本的程序设计语言,通过对C语言的数据类型、结构化程序设计方法、数组及函数的使用、指针结构体以及文件等相关内容的学习,能够解决和处理与本专业有关的大量实际问题,培养学生熟练使用C语言进行编程分析和解决问题的能力。

C语言程序设计作为学生入学后系统地学习程序设计语言的第一门课程,由于其涉及的概念比较复杂、规则繁多、容易出错,因此在C语言程序设计教学过程中,初学者比较不容易适应程序设计的思路,会遇到很多语言学习上的困难[2]。为了提高学生学习程序设计的兴趣和信心,取得较好的教学效果,教师应该积极探索教学和上机实践方法,进一步提高教学质量。本文在作者近几年C语言程序设计的教学和自己程序设计语言学习过程中积累的教学和实践经验,对C语言程序设计课程中的几种教学方法进行初步的探讨。

2 C语言程序设计教学方式探讨

2.1 从第一个程序开始提起学生学习的兴趣 在所有程序设计语言的学习中,第一个接触的程序几乎都是Hello World程序,C语言程序设计也不例外。Hello World程序的C语言内容具体如下:

首先为了使得显示屏幕中出现的内容不会枯燥,我们可以在printf("Hello, world!");的下一行添加一句printf("%c",2)。由于ASCII码值为2对应的是一个笑脸,因此在最终的程序输出结果中会显示Hello, world!再加上个笑脸的内容,这样既增加了趣味性,又增加了学生学习C语言的兴趣。

通过这个例子吸引起学生之后,他们就会在自己的脑子里问为什么会这样。此时,就需要老师讲这几行语句的主要功能要跟学生讲一下,这些内容也是C语言程序语句的主体。讲授的内容可以这样安排:#include的作用是要包含城中所用到语句的头文件,因为我们用到了pringf输出语句,所以要将标准输入输出头文件stdio.h包含进来;main()是主函数名,函数体要用{ }包含进来,并且强调上面程序的编写方式({单独一行,}单独一行)会有利于同学们后续程序的编写,语句更加清晰;pringf语句是输出语句,将" "对应的内容输出在屏幕上,此时可以强调" "中可以添加中文,并且对于输出笑脸的语句,解释为是有格式的输出(这个会在以后的章节中具体讲到);最后一条语句是return语句,将0值返回。由于主函数被定义成整型(int),因此在函数的结尾需要返回一个整数。

2.2 实例教学培养学生思维能力 在C语言程序设计的学习开始阶段,首先要重视语法规则和基础知识的掌握,然后才是程序的阅读和编写。随后在学生学习的过程中,从学会看懂程序开始,到能够编写简单的程序,然后逐步的深入,这样也为下一步进行实例教学打好基础。

C语言初学者首先遇到的问题是毫无头绪,不知从何处下手。在C语言的教学中,如果一味地先讲语法格式,逐步讲解语法要点,最后给出例子,这样很容易造成程序设计学习的思维定势。我们希望通过实例教学,培养学生自己分析问题和解决问题的能力,最后达到能够使用程序设计语言来描述和解决这个问题的结果。这里以一个常见的数学问题为例,自然数求和1+2+3+…+50。首先让学生观察求和的公式,然后寻找规律。第一个规律是,在公式中,加数都是递增的并且步长值为1。第二个规律是,在从左到右求和过程中,我们总是将前面求完的和跟下一个加数相加。因此从分析的规律可知,这个过程一直重复下去直到加到最后一个加数50为止。分析完这个问题之后,就可以对循环结构语句进行介绍,并给出具体的使用方法,并以简单的例子对该知识进行巩固。随后,对自然数求和问题进行C语言程序设计。首先,C语言程序是由函数构成的。一个C语言程序至少包含一个main主函数。一个完整的函数由函数的首部与函数体两个部分组成。其次,帮助学生回顾C语言的数据类型,数据的基本表现形式,C语言中的运算符和表达式。这里,根据前面分析,定义两个整型int变量k和total,k表示加数,变量total用来存储前面加数的和,并对其赋初值为0。然后,考虑应该使用何种C语言基本结构,使用结构中的那些语句及其格式要求,这里使用的是循环结构中的for语句。在for循环语句中,首先需要对循环变量赋初值,k=1;然后给定循环停止条件k<=50,最后是循环变量最后,补全完善程序段,为了便于与用户进行交互,应在C语言程序中加入输入和输出语句,由于需要使用输入和输出语句,因此在使用时要先调用头文件stdio.h。将上述分析整个联系起来,可以完成上述问题的C语言的程序编写,具体为:

编完上述程序之后,教师还需提醒学生注意融汇贯通,例如如果是求1+2+3+…+n该怎么办,n为用户指定的,如果是求应该如何解决等等诸多类似的问题,教师都可以拿出来跟学生一起分析,并让他们在上级实验时加以练习,达到信手拈来的程度。因此课程上机实验环节在C语言程序设计教学环节中也是非常重要的,能够帮助学生有效地巩固基础知识和增加程序设计的经验。

2.3 实验教学进一步提高学生程序设计能力 C语言程序设计是一门实践性很强的课程,既要掌握基本语法知识,又要动手编程并上机调试运行[3,4]。实验教学是通过学生编写和调试程序发现和暴露编程过程中出现的问题,通过解决问题进一步获得更多的知识。在上机实验环节,需要对学生的以下能力进行培养:对编程题目的阅读能力,构思算法步骤,编写程序、运行程序并分析所得的结果,根据结果对程序进行调试,最终完成程序的设计。具体的实验教学可以从以下几个方面来设计,一方面为学生设计基础性的实验,例如:求一元二次方程的根、简单的排序算法等编程实验,使学生能够通过实验及时掌握和消化课堂的教学内容,进一步提高学生的学习热情。另一方面,增加一些难度性大和实用性强的实验,并对学生进行分组,通过组内讨论得出算法解决思路和算法流程,然后上机编程调试并撰写报告。通过组内成员对实验题目的讨论,可以使得不同水平的学生之间能够相互交流并借鉴各自掌握的程序设计知识以及解决问题的思路,最终起到共同学习共同进步的目的。实验内容可以是设计简单的管理系统对班级成员进行存储,并根据条件查询人员信息,或者是利用数组与指针,将多个人的姓名进行排序,规则为按照姓名拼音的字母顺序进行排序。通过这些上机实验,一方面培养了学生对知识的应用能力与问题的分析能力,有利于学生加深对所学知识的理解,让学生真正体会到C语言的灵活性,激发学生的求知欲;另一方面也培养了学生之间的协作能力,有助于提高他们工作后的分工协作能力。

2.4 其他教学方式 除了以上主要的教学形式,我们还会在这些教学内容中辅以趣味性的内容提高学生的学习兴趣。为了活跃课堂气氛,我曾在课堂上通过设计一个随机学号产生器,通过产生随机学号对对应学号的学生进行提问,这样既增加学生的学习兴趣,又能提高学生上课的注意力。此外,将上机实验的好坏作为学生成绩考核的一部分,让学生在平时保持紧张状态,提高他们的学习主动性,认真完成每一阶段的学习。

3 结论

C语言程序设计的主要目的就是培养学生的程序设计能力,本文根据作者实际教学过程中学生存在的问题,从课堂教学和实验教学等几个方面进行了探讨。希望这些教学方式有助于改善C语言程序设计教学中的诸多问题,加强师生间的互动交流,提高学生学习的兴趣和主动性。当然,同样的教学内容面对不同的学生,不一定产生同样的效果,在使用这些教学方法的同时,还要适时地根据学生的课堂以及上机实验反应加以调整,最终完成教与学的有机统一。作者将继续努力探索,使《C语言程序设计》课程教学日趋完善。希望本文能对大学本科生程序设计语言的教学有一定的借鉴作用。

参考文献:

[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.

[2]刘桂玲.C语言程序设计教学改革与实践[J].软件导刊,2012,11(3):194-195.

[3]谭浩强.C语言程序设计.北京:清华大学出版社,2000.

[4]谭浩强.C程序设计题解与上机指导[M].北京:清华大学出版社,1992.

基金项目:国家自然科学基金资助项目(61202153)。

作者:刘汉强

第7篇:C语言程序设计教案 第一章C语言概述

第一章 C语言概述

课题:

教学目的: 教学重点: 教学难点: 第一章 C语言概述

1、了解C语言出现的背景

2、掌握C语言程序的构成、书写格式和上机步骤 C语言程序的构成 上机操作

步骤一 引入新课

从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。 步骤二 讲授新课

一、 C语言出现的背景

1. ALGOL60 :1960年面向问题、结构化,可读性、可移植性好,不能对硬件操作; 2. CPL:63年接近硬件,规模较大、难以应用;

3. SIMULA:1966~1967 SIMULA 66是ALGOL 60的扩充;SIMULA 67引进了“对象”和“类”等概念而成为第一个面向对象的语言;

4. BCPL :67年由CPL改制,结构化、直接处理硬件;

5. B语言:1970年贝尔实验室的Ken Thompson以BCPL语言为基础设计的,开发了第一个UNIX操作系统;

6. C语言:1972-73年间,保持了BCPL和B语言的精炼与接近硬件的优点,克服了它们过于简单、数据无类型的缺点,重写了UNIX操作系统的90%;

7. 标准 C:以1978年发表的UNIX第七版中的C编译程序为基础,Brain W.Kernighan&Dennis M.Ritchie合著的《The C Programming Language》问世; 8. ANSI C:1983年美国国家标准化协会(ANSI)制定的标准

9. C++:1986年 与C兼容,保持了C的所有优点并进行了增强:增强了面向对象的机制,成为典型的面向对象和面向过程的混合语言,适用于大型系统软件和应用软件的开发;

10. 87 ANSI C:1987年制定的新标准;

11. ISO C:1990年ISO接受87 ANSI C为ISO C的标准,该标准是目前C编译器的标准。

二、 C语言的特点

1. 语言简洁、紧凑,使用方便、灵活; 2. 运算符丰富

3. 数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类等) 4. 具有结构化的控制语句 5. 语法不太严格,自由度大

6. 既是高级语言,又具有低级语言的功能 7. 生成目标代码质量高,程序执行效率 8. 可移植性好

三、C语言程序的构成

1. C语言是由函数构成的,至少有一个main()函数;

2. 每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成; 3. 每个C程序从main()函数开始执行,并在main()中结束; 4. 每个语句和数据定义的最后必须加分号;

5. C程序无输入、输出语句

输入功能由scanf()函数完成;输出功能由printf()函数完成; 6. 可加注释/*……*/

借助程序实例加以说明,并提倡良好的程序设计书写风格: 1) 每个语句占一行;

2) 同一层次的语句从同一位置处开始书写;

3) 同一层次中嵌套的结构,应从不同位置开始书写;

4) 编译控制行、外部数据定义、函数定义之间空一行书写; 5) 对于函数体的大括号的书写约定 6) 学会使用注释。

四、上机步骤

1. 进入环境c: c c 或进入ms-dos,>cd,>cd tc,>tc 2. 编辑源程序 3. 保存源程序 4. 编译源程序F9 5. 执行程序Ctrl-F9,查看结果Alt-F5 6. 退出C环境Alt-X

步骤三 课堂小结

1、 C语言的构成要素,main函数在程序中的作用

2、 上机操作的过程

步骤四 布置作业 上机练习:

1、进入C编辑环境,按良好的程序设计风格输入例题,按步骤编译、运行、查看结果

2、根据求两个数最大值的例题,试编写程序求三个数的最大值

第8篇:C 语言程序设计

《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。

上一篇:创新设计下一篇:初三化学