c语言设计程序(通用10篇)
本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。
2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。
2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!
1激发学生学习兴趣,树立学好C语言信心
引起学习动机的注意力条件有3个,即:感知的唤起、好奇心的激发、注意力的保持。感知唤起是引起注意力第一步,教师可以通过各种方式刺激学习者的感知系统,引起其好奇心,进而达到引起并保持注意力的效果。在上第一次C语言课时,很多学生对C语言到底是什么、作用如何等问题迷惑不解。我们可以先从大家熟悉的计算机操作系统入手,告诉他们操作系统中有很多用C语言编写的程序,然后通过演示C语言编程环境,看代码、编译、连接、执行一个完整程序来刺激其感知系统,进而激发其好奇心。在讲解完程序执行过程后,演一段由上一级学生编写的游戏程序,学生将会无比惊讶,C语言程序能用来设计游戏而且可转入到手机?在这种好奇心的驱使下,我们告诉学生,学会C语言的时候他们也能编出更多甚至比这更好的程序,接着进一步告诉他们C语言无比强大的功能与作用,使得学生充满对C语言的向往,从而激发其兴趣。
因为高职院校的学生英语、数学基础普遍较差,在激发学生兴趣后,要趁机打消学生英语薄弱的顾虑,告诉他们其实在C语言里用到的英文并不很多,能看懂编译时出现的英文就行,教学过程把常见语句告诉他们中文意思就能解决问题。
2改革课程教学内容
将整个C语言语法知识分解为四个部分。每个部分让学生独立学习与独立参加考试,目的是为了让学生在上一个阶段掌握大部分内容的基础上去学习一个部分,直到全部内容系统地学完,现将课程内容大致分成如下四个部分:
第一部分
1.概述与算法基础知识
2.数据类型、运算符和表达式
第二部分
1.最简单的C程序设计——顺序结构程序设计
2.选择结构程序设计
3.循环结构程序设计
第三部分
1.数组
2.函数
3.结构体和共用体
第四部分
1.预处理命令
2.指针
3.文件
经过这样划分后整个学期教学过程就分成四个阶段进行,可以达到循序渐进的效果。
3以实例为引,讲解语法规则,转变学生学习动机、学以致用
对于职业院校的学生来说,学习语法不是学习C语言程序设计的真正目的,应该在掌握语法的基础上,通过上机实践,真正的让学生学会用C语言来解决各种实际问题,学以致用。教师应在开学初就让学生充分了解学习C语言并不难,然后在以后的教学过程中,要使学生在学习中得到快乐、尝试成功的喜悦,提高学习的积极性和主动性,让《C语言程序设计》真正成为学生喜爱的课程。
教师在教学过程中,不能一味地按书本去讲,而要多举些实际的例子,多与日常应用相结合,用C语言解决实际问题,使学生明白C语言的用处及其强大的功能。例如,在讲授for循环时,可以计算当前班级的所有学生的平均成绩,计算总分时,用for循环计算,最后把总分除以班级人数即可得到班级学生的平均分,这样就可以节省很多工作量,而且保证结果的正确性。在课上可先把一个简单的例子给学生演示一遍,然后告诉学生具体算法设计过程,再让学生上机调试,在调试过程中让学生由统计一门课程到统计一个学生多门成绩。让他们在调试过程发现光用循环语句不能达到目的,于是引导他们学习下阶段中的数组就能解决此问题,由此让学生在解决问题的过程中产生自学的意识。
C语言还是一门实践性相当强的课程。学好C语言,要理论与实践并重。学习中存在的疑点或难点,学生可通过上机调试得到明确解答,同时也加深对学习内容的理解。教师在上课时,给学生举的例子要当场演示,在多媒体教学电脑上编译运行程序,得出正确的结果,加深学生的印象。对学生而言,在每一次的上机前应做好充分准备,编写好上机内容。对上机中出现的问题应能调试分析,编写实验报告,分析程序结果。学生只有反复上机操作,才能对C语言有更深、更全面的认识和理解,才能逐步提高实际操作和学习的能力。
4改革上机操作的实践环节,让学生当学习的主人
程序设计课程是一门实践性很强的课程,包括课堂教学和实验教学两部分。实验教学是课堂教学不可缺少的补充,实验教学质量的好坏影响课程的整体教学效果和质量,只听不练是学不好的,因此必须多编程、多上机调试。只有经过上机调试,编写的程序达到了预期的目的才算基本上掌握了编程知识。因此,要加强实践性教学环节,主要从以下几方面着手。
(1)在教学计划的安排上要增强实践性教学的学时,最好达到理论和实验的学时比例为1:1。
(2)在教学过程中,作为教学主体的教师除了讲述理论外,应尽可能地开设习题课,引导学生思考和给予学生自己分析问题的锻炼机会。
(3)在有限的设备条件下,学校应尽量提供好的实践环境和实践机会,尽可能的开放实验室和部分机房,鼓励学生独立进行工作,培养独立思考的能力和创新精神。
(4)充分发挥网络媒体的作用。以校园网为平台组建班级学习论坛。将课件与相关的视频教程加载到论坛中,以便学生随时都可以学习。开辟学生讨论空间,让学生把自己编写的程序上传至论坛中,让学生互相学习比较,教师定期点评程序质量。
5改革成绩认定方式
引入多角度评定成绩的因素,建立客观全面的考核机制。改变传统的以一张考卷决定学生在本门课程的学习中是合格还是重修的方式。综合考虑学生每个阶段的考核结果的基础上,四个阶段分别占10%,25%,30%,35%。同时鼓励学生以证代考,如获得全国计算机等级考试中的二级C语言证书,或获得省级以上的程序设计大赛三等奖以的学生可以不用参加期末考试等,以此方式鼓励学生。
总之,C语言是一门非常优秀的编程语言,学生也知道在工作过程中非常有用。但由于C语言自身比较复杂和灵活,因而掌握起来有一定难度,但一旦激发了学生的学习兴趣,并在教学过程采取有效的方法与手段,让学生积极参与到实践中来,就能取较好的教学效果。
摘要:C语言功能强大,几乎所有高校都开设了《C语言程序设计》这门课程。本文就C语言的教学方法进行了探讨,并提出了几种可供借鉴的方法。
关键词:C语言,程序设计,教学方法,学习兴趣
参考文献
[1]张建珍.C语言教学方法探究[J].计算机教育,2007,(18).
[2]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2006.
[3]彭丽.ARCS动机设计教学模式在高校C语言教学中的应用软件导刊.教学技术2007,(11).
关键词:C语言;项目化教学;教学方法
中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01
《C语言程序设计》作为计算机专业的基础课,在整个课程体系中占有重要地位。在C语言教学过程中,教师的教学方法和学生的理解接受能力的差异,对教学效果都会产生直接的影响。总结多年来的教学经验和教学体会,结合学生在学习程序设计类课程的思维规律和模式,把一些经验和方法总结出来,希望能对C语言教学有所帮助。
一、现行教学和学习中存在的问题
现行教学中理论课与实践课相对分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,而在实践课程中,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。《C语言程序设计》是一个逻辑性很强的课程。学生在面对具体的程序设计时遇到的问题与教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的大多数教材中,结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试也主要是测试学生对于教材内容的掌握程度,而与实际应用相距较大。这种考试实际上主要是测试学生对书本中的基本知识的掌握程度,而忽略了对学生解决实际问题的能力的培养。另一方面为了应付考试,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有程序整体设计的概念。这样做的结果就是学生在学习时一切围绕老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容来解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。
二、提高教学效果的方法和途径
(一)明确课程目标。本课程的目标主要是提高学生解决实际问题的能力,适应社会需求。对C语言程序设计课程的教学而言,强调实践性是在教学中特别重要的问题。老师的教学不应仅仅是传授知识,应该以培养学生的实际应用能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中来不断学习和掌握。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。
(二)进行教学改革。1.教学内容改革。高职学校学生的培养就是要直接面对社会需求,招之即能用。因此,程序设计课程要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生实践能力方面的要求,强化学生的实际开发和应用能力。总结本人多年的教学经验,结合其他老师成功的教学方法,采用项目化教学方法可以达到很好的效果。这个项目应具有以下几个特点:(1)实用性。本项目就是一个具体的实际需求,是解决现实性中一个实际问题而设计,这样也能提高学生的兴趣和热情;(2)完整性。本项目的程序设计是系统的、完整的,要能全面运用整个课程学习的知识,案例的设计贯穿整个课程的学习,随着课程的学习不断完善。
2.改变教学思想和方法。培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,先介绍项目的整个程序设计框架,目的是使学生先对程序有个初步的印象,再结合教材,简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。计算机语言程序设计中算法是其灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。通过案例分析,重点讲解程序设计的思想和方法,辅以語言知识的介绍,将课程内容分为若干个主题,以项目程序设计为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成,然后提出项目中的问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。整个课程教学围绕一个工程项目进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到项目的程序编写中。
3.改革课程考核方式。(1)平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%;(2)期末前,要求学生完成本课程项目的整体设计,考核学生综合解决问题的能力,占据期末总成绩30%;(3)期末进行理论考试,占期末总成绩的40%。
(三)展示学生作品,激发学生的学习欲望。计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的学生成果,及时肯定学生的成绩,这样会有利于激发学生的学习热情,保持学生的学习兴趣,对学生的后续学习将产生强大的动力和自信心。
(四)培养学生的自学能力和创造性。学生学习计算机语言的最终目的是编写满足实际需求的程序,所以在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题。通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。
参考文献:
任务1 课题名称:
学生顺序表的处理
课题内容:
在一个数据文件中存放若干学生数据记录,每条记录都有如下数据项:学号,姓名,性别,成绩。
编一个程序,采用顺序存储结构存储这批数据,并对该数据进行排序。要求:数组前部为女同学,后部为男同学,并且男女同学都按成绩递减排序,分别计算男生合格率、女生合格率、全班的成绩平均分,并把排序后的学生数据记录及计算结果存入另一个数据文件中。
任务2 课题名称:
学生成绩的管理(顺序存储)
课题内容:
某班级学生C语言第一次正考的成绩存于数据文件score.dat中,记录了学生学号、姓名和考试成绩,bk.dat文件中记录了补考学生的学号、姓名和补考成绩,编写程序以顺序存储结构实现以下要求:
1、对该班级按成绩降序排序并统计成绩平均分及每个分数段的人数,结果写入到result.dat中。
2、再根据补考成绩修改原成绩,修改成绩后仍按成绩降序写在result.dat的后面。成绩修改原则: 1)补考成绩大于等于60,原成绩以60分记;2)补考成绩小于60,取两次成绩中最高值记。
任务3 课题名称:
学生基本信息的管理(顺序存储)
课题内容:
已知学生的信息包括:学号,姓名,性别,出生年月,地址,电话,E-mail等。以顺序存储结构设计程序能实现以下功能:(1)学生信息录入:可随时增加学生信息到数据文件中(2)学生信息浏览:学生的信息输出到屏幕(3)查询:按学号查询、按姓名查询(4)修改:修改指定学生的信息(5)删除:删除指定学生的信息
(6)排序:按指定的关键字排序后输出到屏幕。(7)系统以菜单方式工作
任务4 课题名称:
图书顺序表的处理
课题内容:
在一个数据文件中存放若干图书数据记录,每条记录都有如下数据项:书名,作者,出版社,ISBN,出版时间,价格,类别。
编写一个程序,采用顺序存储结构存储这批数据,并对该数据进行排序。要求:按出版社进行分类存取图书信息,同一出版社中的图书信息按照出版时间降序排列。分别统计每个出版社出版的图书数量,并把排序后的图书记录及计算结果存入另一个数据文件中。
任务5 课题名称:
旅游信息顺序表的处理
课题内容:
在一个数据文件中存放若干旅游信息数据记录,每条记录都有如下数据项:线路编号、目的地、旅游天数、旅游类别、出行月份、价格。
实验目的
1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
实验内容
计算并输出1000以内的10个素数以及它们的和。
要求:
在程序内部加必要的注释。
由于偶数不是素数,可以不考虑对偶数的处理。
虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
输出形式为:素数1+素数2+素数3+…+素数10=总和值。
算法描述流程图
Main函数:
判断素数:
源程序
#include
#include
int sushu(int n)/* 判断素数的函数 */
{
int t,i;
t=sqrt(n);
for(i=2;i1;i-=2)/* x为奇数时,做函数计算 */
{
n=sushu(i); /* 做判断素数的函数调用 */
( 励志天下 )
if(n!=0)/* 对素数的处理 */
{
a[j]=n;/* 把素数由大至小存入数组a[ ]中 */
j++;
if(j<11)
m+=n;/* 统计前10个素数之和 */
}
}
if(j<10)/* 当素数个数小于10个时,结果输出 */
{
for(i=0;i
{
n=a[i];
printf(“%d”,n);
printf(“+”);
}
printf(“2=”);
printf(“%d ”,m+2);
}
else for(i=0;i<10;i++)/* 当素数个数大于等于10个时,结果输出 */
{
n=a[i];
printf(“%d”,n);
if(i<9)
printf(“+”);
else
{
printf(“=”);
printf(“%d ”,m);
}
}
}
}
测试数据
分别输入1000、100、10测试。
运行结果
出现问题及解决方法
当素数个数小于10时的处理不够完善,考虑不够周全。把“+2”的处理做的太勉强。
程序过大,不够精简,无用文字太多。
学习耐心与细心不足,如scanf(“%d”,&n);中的“&”经常忘记。
编程思想不够发散,例如如何判断素数,只能想出2种方式(其中1种为参考教科书上内容);在今后学习中应更多的动脑,综合运用所学。
基本功不够,如清屏clrscr等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。
物理实验报告 ·化学实验报告 ·生物实验报告 ·实验报告格式 ·实验报告模板
当今计算机已广泛应用于社会生活的各个领域, 并向普及化方向发展。对80、90后的大学生而言, 除了掌握一般的计算机操作技能以外还必须具有一定的实际应用编程能力。C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点, 运用它既能编写操作系统软件, 又能开发各个领域的应用软件。C语言的实用性使之成为编程的首选语言。学好并掌握C语言不光能够提高学生自身的计算机编程能力, 而且为将来学生的顺利就业打下基础。然而有很多学习过C语言甚至是计算机专业毕业的大学生连最基本的程序都不会编写, 针对这种现象教学之余笔者做了深入的调查和分析, 发现在当今的C语言教学中还存在一些问题, 有待我们研究和探讨。
1. C语言教学中存在的问题
1.1人才培养目标定位不准确
有的高职高专型学校太注重理论教学环节, 忽视实践教学环节。教师过分强调学习语法等理论知识, 忽视培养学生实际应用的能力。受学科型教学思维的影响, 由教师主导的教学过程呈现出以语法为主线的教学模式, 编程变成了语法学习的示例或验证。这样学生理论课听不懂, 实践课练习编程屡屡受挫, 学习C语言的积极性和主动性受到严重打击。
1.2教师教学过程中采用的教学方法不适当
有的教师在上C语言的第一堂课就采用单调死板、照本宣科的牧师讲法。先讲概念, 然后举例去验证理论的正确性, 而实际问题一点也得不到解决, 使学生陷入不断被灌入理论和不断的尝试和验证中, 使学生失去学习C语言的兴趣。
1.3实训课和实践课没有被充分重视起来
笔者多年教学发现C语言上机课安排的较少, 在相对理论课较少的C语言上机课堂上, 还有很多学生迟到、旷课, 或者上机时打游戏, 做小动作。笔者去过不同的学校听不同的
老师上课, 笔者发现在有的老师的上机课上有将近一半的学生请事假。久而久之, C语言的上机课实际上是名存实亡。学生得不到很好的上机练习机会, 编程能力也得不到提高。
2. 解决问题的方法
2.1准确定位人才培养目标
学校应面向市场, 准确把握市场对计算机编程人员的需求, 从而制定合适的人才培养计划, 依据计划由学校的资深教师编制教学大纲并选定教材。C语言是面向过程的编程语言, 即不生动有趣又不直观可见, 让初学者望而生畏。高职高专型学校和本科学校相比生源质量相对较差, 学生的起点低, 一些普招上来的学生没有学习过计算机文化基础, 甚至有些学生根本没有接触过计算机, 根据笔者多年的C语言教学经验, C语言的第一次实训课上, 往往有很多学生不会开机, 也不会关机。所以高职高专型学校应把人才培养目标定位在培养技能应用型人才上, 培养学生实际动手能力和软件开发能力。
2.2把一些先进直观的教学方法应用到C语言教学中
(一) 采用启发式教学, 激发学生学习的自主性
针对C语言概念多, 语法规则较繁的现状, 采用启发式教学可以将难理解、难记忆的概念和规则变成一系列具体直观的问题呈现在课堂教学中, 这样就能把学生的注意力集中起来, 把学生的学习积极性调动起来, 达到师生互动的效果。这种启发式、讨论式、交流式的教法, 不仅改变原来的灌输式教学, 而且增强了学生自主学习的能力。
(二) 采用任务驱动教学法
传统C语言教学总是从基本数据类型讲起, 再接着讲C语言的各种数据类型及概念, 基本上是这样一个过程:设计算法—书写程序—调试程序, 显得即抽象又复杂, 这种方式对学生来说比较枯燥, 也较难理解和掌握。在教学中, 可先给出一个任务, 然后再给出源程序和运行结果, 学生对此任务有了初步认识并对其产生了强烈的好奇心, 学生的求知欲被充分调动起来, 然后教师再具体讲解程序中用到的语句和概念, 从而让学生明白如何分析并解决问题, 逐步培养学生进行程序设计的正确思维模式, 以后再大量的做这样的练习题, 强化训练, 使学生对类似知识点达到举一反三, 融会贯通。
(三) “框架法”和“求异法”相结合
“框架法”可培养学生的全局思维和算法的整体设计能力。具体体现在两方面:一是在学生有了一点编程基础后要利用伪代码或流程图, 从算法设计的角度讲解编程思路, 而不应拘泥于语法细节, 不分主次、逐条语句的讲解代码。通过此框架, 可使初学者把着眼点放在函数的设计框架上, 体现参数设计、返回值设计等关键问题, 而无需细讲函数体的实现细节。
(四) 采用现代化教学手段—多媒体
现在大多数学校的教师都在多媒体教室上课, 但是仅仅是使用PPT教学, 没有做到真正意义上的多媒体教学。
笔者建议采用多媒体教学技术, 把枯燥的内容形象化, 使声、形、图、文融为一体。例如在讲冒泡排序时可以采用flash动画技术把排序的过程动态的演示一遍, 也可以在平时的上机训练时让学生编写简单的小游戏程序, 这样在娱乐中让学生觉得学习C语言更有兴趣了。在实训室实训时教师可以采用广播教学的方式互动教学, 逐个学生、逐一问题、逐步突破。
3. 结束语
C语言程序设计的教学要讲究方法, 通过灵活采用多种教学方式和教学手段, 提高学生的学习兴趣和学习积极性。通过这门课的学习, 不仅要使学生掌握语言的基本规则, 而且要切实培养学生分析问题, 解决问题的能力, 培养学生的创新精神, 团队意识, 为学生提供更好的展示才华的舞台。
参考文献
关键词:C语言;程序设计;教学方法
1.前言
C语言是目前最流行的、功能强大的、面向对象的编程语言,在教学过程中发现,学生经常会出现听得懂、编不出程序的现象,影响学生的在专业方面的需求。笔者结合多年教学经验,认为在教学过程中要将学生分为三个不同的阶段,具体为引导入门、基础充实和实践提高三个阶段,分阶段采用不同的教学方法与手段,提高教学效果。
2.引导入门阶段
学生刚开始学习《C语言程序设计》,感觉内容抽象,学习枯燥,失去学习兴趣,因而没有学习动力。入门阶段关键在于激发学生学习C语言程序设计的兴趣,引导学生入门。有些老师恨不得学生一下子掌握自己所有的知识,不知老师的知识是多年积累下来的,学生很难一下子接受,更不用说掌握了。教师对所教内容需精心选择,以简单有趣为主,关键是能够激发学生学习兴趣。可通过多媒体课件,用一些趣味性的程序或者小游戏来调动学生的积极性,提高他们学习编程的兴趣。学生具有差异性,为了让所有学生都能产生浓厚的学习兴趣,适宜采用分层教学法。入门阶段也需注重理论联系实际,但不必要求学生编程,可考虑让学生编辑或修改程序,可以通过给出源代码的、简单的并有详细输入、输出结果的程序,让学生进行编辑并调试,利用输出结果让学生收获成功的喜悦,以轻松愉快的心态学习程序设计。在此基础上,以循序渐进的方式,逐步引导,进行一些简单的修改,让程序得到不同的结果,并解释原因,然后提出新的问题,让学生思考如何修改程序以解决新的问题,培养学生的创造性。
3.基础充实阶段
兴趣是最好的老师,学生经过入门阶段的学习产生了兴趣,就可以进入基础充实阶段了。这一阶段主要是打基础,主要是一些基本概念的讲解和语法的学习,为提高教学质量,也要求老师能够根据不同的概念灵活采用教法,常用的教学方法有类比法、对比法、归纳法和实例教学等方法。
3.1教学方法
相对抽象的概念教学时可选用类比法,例如《数据及其类型》章节中类型的概念,可以采用类比法来进行教学,把C语言中所涉及的数据类型和生活中重量单位做类比,加深概念的认识;可以采用对比法传授《顺序、分支、循环》三种程序设计,通过对比,分清三种程序设计的异同,从根本上掌握三种程序设计。按顺序执行是顺序结构程序设计的特点;分支结构程序设计的特点是需要根据条件而执行不同的操作;而循环结构程序设计中存在重复执行的某种操作。在基础阶段,选取的例题要具有代表性,针对不同的知识点选择典型例题,重点是要学生通过典型例题的掌握,理解程序思想,教师可采用归纳教学法,帮助学生归纳出某一类型程序的程序设计。《指针》是C语言的精华,主要采用实例教学法,参照生活中具体的事例将理论实例化,指针就是地址,学会如何描述地址也就掌握了指针的主要应用(以一维数组和指针为例来进行说明)。一维数组中各元素的地址利用指针法描述,讲解时可以类比第一层教学楼的教室,例如a[O]所在的地址为东1 101,则a[1]所在的地址为东1102,可以假想P为一个人,处于东1101的位置,移动到东1 102即往下走了一个教室,即下一个元素的地址值为P+I。再运用类比的教学方法讲解二维数组和指针,应用类比法可以推广到更加一般的情形。
3.2教学手段
3.2.1科学安排内容,灵活运用多媒体课件
不必所有的内容都讲到,更不必所有内容详细讲,要科学安排内容,可以安排学生在老师的指点下自学简单的内容;如函数、指针等重点内容需要借助多媒体课件详细讲解,最好能够应用一些具有代表性的实例,让学生在理解的基础上掌握概念与思想。
3.2.2成立兴趣小组,培养学生的合作能力。
对一些学习能力较好的同学,以四到五人为单位,按照自愿的原则组织起来成立兴趣小组,通过小组内同学之间互相帮助,培养学生的团队合作精神;通过小组之间相互竞争,锻炼学生的竞争意识。还可以指导兴趣小组参与实际项目的开发,或者组织兴趣小組成员参加一些软件开发竞赛,进一步提高学生的实际动手能力。
3.2.3构建网络平台,加强学生学习的能力。
如今计算机网络已经走进校园,构建网络教学资源平台,构建一个学生可以在任何时候、反复进行互动学习的平台,提供一个师生互动的教学环境。分章节将知识重点、难点放在网站上,让学生通过网络自行解决实践课上那些出现的错误。学生利用网络把每次实践课上程序编写和调试中所犯的错误进行交流、总结,加强学生学习的能力。
4.实践提高阶段
实践提高阶段,采用最适合计算机软件应用课的教学方法项目教学法。通过实施一个完整的项目工作而进行的教学活动,采取小组讨论、协作学习的方式,学生学习的过程就是一个探究的过程。在C语言程序设计课程中应用这种方法的目的在于培养学生综合运用所学知识解决实际问题的能力。它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。改变过去单纯讲理论的现状,运用项目引导的方法,学生在分组解决项目的过程中学会语法的使用,逐步过渡到独立的编写简单小程序,通过项目训练多模块程序的编写,最终实现开发一定规模的大型程序。
5.结束语
适用于三年制专科计算机应用专业 学分:1 周数:1
一、设计目的与要求
《高级语言程序设计课程设计》是《高级语言程序设计》课程的实践环节,其教学目的是通过一些中小规模程序的编程,使学生对c语言程序设计的基本规则与方法有比较全面的理解和认识,熟练掌握高级语言程序设计技术,为以后学习更高层次的程序设计和软件开发奠定坚实基础。
通过本课程设计,应达到下列基本要求: 能够结合c语言来理解程序设计的基本概念;
掌握用c语言解决问题的基本方法和步骤,能够熟练地使用c语言编写中小型应用程序; 熟练掌握c语言编程规则,掌握函数的应用方法和编写; 熟练掌握面向过程程序设计方法; 掌握结构化程序设计思想和方法; 培养和提高学生的程序调试能力;
培养学生查阅手册、图表和文献资料的能力; 培养学生撰写报告文档的能力。
二、课程设计题目
每个题目的限选人数根据班级总人数平均后确定,但要求同一题目的学生独立完成设计题目,以下10个题目任选其一。1。职工信息管理系统设计 1.1问题描述
试设计一职工信息管理系统,职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)1.2基本要求
1.系统以菜单方式工作(2.职工信息录入功能(3.职工信息浏览功能(4.查询和排序功能:(至少一种查询方式)--算法(((1)按工资查询((2)按学历查询等
5.职工信息删除、修改功能(任选项)(2.图书信息管理系统设计 1.1问题描述
试设计一图书信息管理系统,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。1.2基本要求
1.系统以菜单方式工作(2..图书信息录入功能(3..图书信息浏览功能(4..查询和排序功能:(至少一种查询方式)--算法(((1)按书名查询((2)按作者名查询
5..图书信息的删除与修改(3。学生信息管理系统设计 3.1问题描述
试设计一学生信息管理系统,学生信息包括:学号、姓名、年龄、性别、出生年月、地址、电话、E-mail等。3.2基本要求
1..系统以菜单方式工作 2..学生信息录入功能 3..学生信息浏览功能 4..查询、排序功能(1)按学号查询(2)按姓名查询
5..学生信息的删除与修改 4。学生选修课程系统设计 4.1问题描述
试设计一选修课程系统,假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。4.2基本要求
1.系统以菜单方式工作(2.课程信息录入功能(3.课程信息浏览功能(4.查询功能:(至少一种查询方式)--算法((1)按学分查询((2)按课程性质查询(5.学生选修课程(可选项)(5。销售管理系统 5.1问题描述
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:(1)销售员的代号,(2)产品的代号。(3)这种产品的当天的销售额。每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,5.2基本要求
编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1.计算上个月每个人每种产品的销售额。
2.按销售额对销售员进行排序,输出排序结果(销售员代号)
3.统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4.输出统计报表
销售统计报表能反映出:销售员代号 产品代号 销售之和 每种产品之和 总和 6.学生成绩管理 6.1问题描述 对学生成绩进行管理,学生信息如下: 现有学生成绩信息,内容如下 姓名学号语文数学英语
张明明
01
李成友
02
张辉灿
03
王露
04
陈东明
05
„.......… 6.2基本要求
实现学生信息管理,软件的入口界面应包括如下几个方面: 1.系统以菜单方式工作
2.学生信息数据能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息
3.查询时可实现按姓名查询、按学号查询
4.成绩统计:输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
5.能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)6.学生可自动增加新功能模块(视情况可另外加分)7.学生成绩管理 7.1问题描述
学生成绩进行管理,学生信息包括:学号、姓名、班级、课程
1、课程
2、课程
3、课程
4、学期。
7.2基本要求
1.系统以菜单方式工作
2.能按学期、按班级完成对学生成绩的录入、修改
3.能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 4.能查询学生成绩,不及格科目及学生名单
5.统计每门课100~85分、84~70、69~60分以上不及格的人数
6.从键盘上输入一个姓名或学号,能够查找是否是该班成员,若是,要求输出该生的全部信息
7.可以对任一学生的成绩、学号进行修改
8.可增添和删除任一学号学生的信息,增添和删除后仍能按学号排序 9.能按班级输出学生的成绩单 8.通讯录管理 8.1问题描述
设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串 地址字符串 邮政编码字符串 电话号码字符串 8.2基本要求 1.主要功能:
(1)能建立、查询、修改和增删学生通讯录(2)能够按多种方式进行查询 2.要求:界面友好,易于操作 9.图书管理系统 9.1问题描述
图书信息管理系统设计,图书信息包括:登录号、书名、作者名、存在状态、分类号、出版单位、出版时间、价格、借书人姓名、性别、学号等。信息描述: 9.2基本要求
1.系统以菜单方式工作 2.新进图书基本信息 3.图书信息浏览功能
4.图书基本信息的查询和排序功能:(至少一种查询方式)--算法 按书名查、按作者名查询
5.对撤消图书信息的删除删除与修改(可选项)(6. 为借书人办理注册
7.办理借书手续(非注册会员不能借书)8.办理还书手续
10.设计一个简单计算器 10.1问题描述
模拟windows操作系统中的计算器,能进行加减乘除等计算。10.2基本要求
1.显示计算器界面
2.当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止 3.可以多次响应用户的计算请求 11..图书借还管理系统 11.1问题描述
对借还图书进行管理,图书被借阅,应记录借阅信息,同时图书的存库数量相应减少。还书时,应将图书数量相应增加,同时删除图书借阅信息。图书基本信息应包括:图书名称、图书编号、单价、作者、存库数量。借书人信息应包括姓名、性别、学号等。11.2基本要求
1.新进图书基本信息的输入 2.图书基本信息的查询 3.对撤消图书信息的删除 4.为借书人办理注册
5.办理借书手续(非注册会员不能借书)6.办理还书手续
12.用户登录程序设计 12.1问题描述
做一个密码验证程序,密码验证只有三次机会。12.2基本要求 1.有登录界面,用户输入密码时以*代替输出,用户登录成功后可以修改密码。2.可以有多个用户登录。
3.初次登录的密码有管理员设置。13.车票管理程序设计 13.1问题描述
一车站每天有n个发车班次,每个班次都有一班次号(1、2、3„n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次发车时间起点站终点站行车时间额定载量已定票人数
8:00
郫县广汉
2
6:30
郫县成都
0.5
„
13.2基本要求
1.录入班次信息,可不定时地增加班次数据。
2.浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
3.查询路线:可按班次号查询 ,可按终点站查询。4.售票和退票功能。
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。5.至少采用文本菜单界面(如果能采用图形菜单界面更好)。
三、进度安排
第1天:分析所选题目,查阅相关资料,写出需求分析,确定系统功能,划分模块;设计算法、数据结构;
第2-3天:编制代码并调试; 第4天:检查学生程序;
第5天:提交源程序清单和课程设计报告,进行答辩。
四、设计方式
1.对于每个题目,应完成算法设计和简单的应用程序设计。
a)算法设计包括解题思路,模块划分和模块代码实现方法。附传统的流程图或N-S图。b)应用程序设计包括:编辑录入源程序;反复调试、排错、运行;借用软件工程的一些方法和技巧对程序进行测试。
2.编程量以满足基本要求即可,但必须调试通过,运行结果准确。3.设计完成后,需要写成一份课程设计报告(A4纸打印出来),体现课程设计所做工作。4.结果形式:提交调试无误的源程序代码,课程设计报告一份。
五、成绩评定标准
学生成绩以优、良、中、及格和不及格5个等级评定。1.学生编写的实际软件和运行结果,占总成绩40% 2.设计报告,占总成绩40% 3.教师提问,占总成绩10% 4.出勤,占总成绩10%
六、课程设计报告要求
按照软件工程及应用程序系统设计步骤详细叙述课程设计题目的完成过程。课程设计报告的格式要求: 封面
洛阳理工学院C语言课程设计报告 题目 院系 班级 姓名 指导老师 年月日
2.课程设计内容:
(1)问题描述:描述要求编程解决的问题。(本课题具有哪些功能,做了哪些工作、用了哪些方法技巧,实现结果如何)
(2)基本要求:给出程序要达到的具体的要求
(3)所设计的应用程序运行所需要的软件、硬件支持环境。(4)算法分析(设计思路),描述解决相应问题算法的设计思想。
(5)功能模块划分,每个模块对应的函数、每个函数功能及参数设计情况说明。(6)系统流程图
(7)实现步骤(要求有详细的文字表述):
如安装 VC;熟悉课题;查找资料;需求分析;设计框图;录入程序;
语法排错;逻辑排错;程序测试;程序运行;数据记录;写课题设计报告等。(8)源程序完整代码以及原始数据、测试数据、输入数据及其运行结果记录。(9)简要总结及自我评价。
(10)源程序:给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参数的含义和函数返回值的含义。(11)参考文献 参考文献书写模板:
[1] ***.C程序设计(第三版).北京:清华大学出版社,2005 [2] ***.C程序设计题解与上机指导(第三版).北京:清华大学出版社,2005 [3] ***主编.C语言程序设计实验与实训指导及题解.北京: 高等教育出版社,2005 [4] ***.C语言程序设计.北京:清华大学出版社,2008 [5] 王静, 武春岭编著.C语言程序设计基础习题集.北京:中国水利水电出版社,2008 [6] 黄维通,马力妮等编著.C语言程序设计习题解析与应用案例分析.北京: 清华大学出版社,2004
七、实习时间、地点及班级人数
尊敬的 院(系)分团委(团总支)、学生会
第三届C语言程序设计大赛
随着计算机技术的快速发展,计算机程序语言也呈现多样化的发展趋势。C语言作为一种最基本的计算机语言对于当代大学生来说已经越来越重要。
为了丰富校园文化生活,发掘大学生潜能,提高同学们的动手动脑能力,展现大学生的精神风貌,知识应用以及相关创新能力。同时,也让更多的同学关注C语言、学习C语言,增强C语言爱好者之间的经验交流,促进共同进步,特举办本次C语言程序设计大赛。
一、主办单位
合肥师范学院实验实训中心 合肥师范学院团委
二、承办单位
计算机科学与技术系
三、比赛地点
躬行楼三楼软件机房
四、比赛时间
2014年4月26日
五、参赛对象
合肥师范学院全日制在校大学生
六、报名时间
【关键词】C语言;DSP程序;main()函数
传统的汇编语言依赖于计算机硬件,程序的可读性和可移植性比较差。一般的高级语言具有很好的移植性,但是又难以实现汇编语言的某些功能。而C/C++语言作为一种高级语言,既可以访问物理地址又可以进行位操作,能直接对硬件进行操作,适合用作DSP开发语言。
1、C语言的基本结构
一個最小的C应用程序项目至少包含如下几个文件:
(1)有且必须有一个作为C程序入口点的包含main﹙﹚函数的C语言源文件(.C)。系统库初始化完毕后,就把控制权交给main﹙﹚函数。
(2)连接命令文件。该文件包含了DSP和目标板的存储空间的定义以及代码段、数据段是如何分配到这些存储空间的。
(3)C运行库文件rts2xx.lib。C运行库提供了编译器提供的所有功能,包括初始化C语言环境、设置堆栈及提供标准C的库函数如printf等。库文件及其源代码位于CCS安装目录下的\c2000\cgtools\lib目录下。
若用户所写程序要写进ROM存储器并在上电后直接运行,还必须包含中断向量表文件,中断向量表文件通常是汇编文件(.asm)的形式,此文件需要被链接器命令文件准确定位在DSP复位后执行指令的地址。
一个用C编写的DSP程序的常规执行流程为:中断向量表的第一条指令可设置为“B_c_int00”,从而在上电复位后,把控制权交给rts2xx.lib运行库中的C环境入口点_c_int00,在c_int00()函数中完成堆栈指针的初始化及全局变量初始化等操作,再调用main()函数,把控制权交给main()函数,从而执行用户的应用程序。
2、C程序中CMD文件
TI的CCS开发环境提供了将C语言编译为汇编语言的C/C++编译器。与汇编器类似,C/C++编译器对C程序编译后也产生已初始化段和未初始化段,具体的段名稍有不同。
C/C++编译器不会生成.data段,但也产生了一些新的段。
TMS320C2xx的C/C++编译器生成以下几种段。
(1)包括数据表或可执行代码的初始化段。编译器生成以下几种初始化段。
.text段:包括所有的可执行代码和常量。
.cinit 段:包括初始化数量和常量的表。
.const段:包括字符串常量、明显初始化的全局和静态变量的定义和初始化。
.switch段:包含Switch语句表。
(2)用于保留空间的未初始化段。程序可在运行时使用这些空间建立和存储变量。编译器生成以下几种未初始化段。
.bss段:为全局和静态变量保留存储空间。若设置了-c连接选项,C的引导程序会将数据从.cinit段复制到bss段。
.ebss段:与bss段类似,只为far修饰的全局和静态变量保留存储空间。若设置了-c链接选项,C的引导程序再将数据从cinit段中复制到edss段。
.stack:段:系统堆栈段,通过堆栈可以给函数传递参数或为局部变量分配空间。
.sysmem段:为动态存储器分配保留空间。函数malloc()、calloc()和realloc()使用该保留空间。若程序没有使用这些函数,不会产生.sysmem段。
.esysmem段:与.sysmem段类似,只为far修饰的malloc()、calloc()和realloc()才能使用该保留空间。若程序没有使用这些函数,不会产生.esysmem段。
链接器将不同模块中同名段组合为输出段,一个完整的程序就是由这些输出段组成。用户可以将这些输出段分配到特定的地址空间,以满足系统需要。
通常.text、.cinit和switch段会被链接到ROM或RAM,且必须分配到程序存储器;.const段被链接到ROM或RAM,且必须分配到数据存储器;.bss/.ebss、.symsmem/.esysmem段必须被链接到RAM,且必须分配到数据储存器中。
使用#pragma伪指令,也可以在C程序中自定义代码段和数据段,#pragma是标准C中保留的预处理命令,它告诉编译器的预处理器如何处理函数和数据。#pragma必须在符号被定义和使用前使用,且不能在函数体内声明#pragma。
CODE-SECTION pragma伪指令函数在指明的段中分配空间,使用该伪指令创建的段可与.text段分配到不同的区域。它的语法为:
#pragma CODE-SECTION(func,“section name”)
其中func为函数名,section name是用户自己定义在程序空间的段名。
3、C编程的其他问题
(1)关键字
与标准C一样,DSP的C编译器也支持关键字,下面对常用的关键字进行介绍。
1)const关键字。DSP的C/C++编译器支持ANSIC中的const关键字,用于限定值不能被修改的变量或数组。若变量或数组被const关键字所修饰,则该变量或数组所占的存储空间会被分配到.const段。
2)volatile关键字。使用volatile关键字修饰的变量每次被访问时,执行部件都会从其所在的内存单元中取出值。而未使用volatile修饰的变量在访问时则可能直接从CPU的寄存器中取值,因为该变量之前可能被访问过,读取寄存器的速度比读取内存要快得多。使用volatile修饰的变量会被分配到末初始化段中。程序设计时,那些随时可能被外部硬件改变的内存地址的内容要使用volatile修饰,如芯片内部的外设寄存器或某个随时可能改变的外部硬件的寄存器。
3)crgister关键字。使用crgister关键字可用高级语言直接访问DSP的控制寄存器,但crgister修饰的对象的名字要与C28x DSP的控制寄存器名相符,否则编译器会报错。该关键字不能在函数内部使用,且只能修饰整型或指针变量,而不能修饰浮点型及任何结构体及共用体。
4)interrupt关键字。interrupt关键字用于指定一个函数作为中断服务函数。使用该关键字指定一个函数后,编译器会按照中断服务函数的要求对寄存器进行保护并使用正确的返回顺序,函数的入口参数必须是void类型,函数返回值也必须是void类型,函数体内使用局部变量,也可自由是堆栈和全局变量。
(2)C运行支持库
同标准C一样,C28x的开发也可使用库函数来实现常用任务。C运行支持库的库文件位于\C2000\cgtools\lib,该库文件包括标准的C/C++运行支持库函数、浮点运算函数、I/O函数及程序的入口点c_int00等。在CCS的安装目录\C2000\cgtoo\lib中有库对应的源程序文件rts.src,用户可以利用归档器和建库器对rts.src中的文件进行提取、修改等操作,并重新生成自己需要的库文件。
参考文献
[1]王玮,万隆.DSP原理与实例应用[M].北京:清华大学出版社,2011年6月
[2]杨东凯.DSP嵌入式系统设计与开发指南.北京:中国电力出版社,2008年
【c语言设计程序】推荐阅读:
c语言程序设计实验11-19
c语言程序设计作业三06-24
C语言图形程序设计报告10-13
c语言程序设计基础题10-28
c语言程序设计补充题11-17
c语言程序设计复习题10-28
《C语言程序设计》精品试题(附讲解答案)06-10
AVR单片机C语言高级程序设计09-25
c语言课程设计要求07-25