c语言程序学习心得(共9篇)
c语言程序学习心得 篇1
C语言学习心得
刚开始学C语言的时候,很迷茫,在此之前从没有接触过C语言,有点摸不着头脑。可是在上机过后,我觉得编程是很有趣的一件事。我知道要学好C语言不容易,可是我决定
=完成这件不容易的事。
要学好C语言就要先懂得最基本的语法知识,看课本是必需的。我觉得看不懂也没关系,尽力去理解就好了,在对知识有了一个大致的了解过后,就要上机实践。学习C语言一定要动手,只看不做,眼高手低是不行的。
最开始可以打书上的例题,熟悉程序,慢慢的开始试着编程。在编程时要理清自己的思路,然后再转换成C语言中的语言,这个时候就更要动手了,只有通过上机操作才能验证自己程序的正确性。执行程序,不要害怕错误,其实,我觉得错误是好的,知道了自己所学知识的不足,并根据提示改
正程序中发生的错误,一种成就感油然而生,觉得自己的付出都是值得的。
良好的编程习惯是学好C语言的重要因素,只有勤动手,多动脑才能学好C语言,光说不练是不行的。
在学习的时候,不会的一定要问明白,可以求助于老师,同学,不要自己一个人钻牛角尖,浪费时间又学不到东西。
上课的时候一定要认真听,老师讲的肯定是最重要的,错过了就是一大笔损失,认真听讲才可以提高学习效率。
我觉得在编程之前,要把自己的想法写在纸上,如果是简单一点的程序不需要这样,如果程序比较复杂,就写下来,这样可以让思路更加清晰。
输入程序时一定要认真,不要把“,”与“;”混淆,用
scanf的时候不要忘记“&”,用“switch”要记得“break”,用if,while的时候注意不要加“;”,“{}”“()”一定要配对,不要多也不要少一半,“=”与“==”的区别要清楚,要勤查优先级,要记住一些基本的,例如两个值之间的调换怎么写等等。
在编程时除了要认真谨慎之外,更重要的是掌握基本的知识,例如if语句与switch语句的区别,它们都是条件语句,用来执行判断功能,但是什么时候用if什么时侯用switch应该弄清楚:若条件分支多但是条件的值是一个确定的值时就用switch。反之,在大多数情况下就用if。又如各种循环的应用,及循环之间的嵌套都要能灵活应用。还要注意一些细小的琐碎的知识,如C语言规定的标识符,大小写字母间的ASCII代码值相差32,强制类型转换符,自增自减运算符,符合运算符,逗号运算符等。
学习C语言需要的是坚持下去的毅力,认真对待每次错误的耐心,还有孜孜不倦的努力。拥有一个良好的心态,相信自己,你就会发现学好C语言不再困难!
c语言程序学习心得 篇2
关键词:高校,C语言编程,改善对策
1 C语言及其优势
C语言作为目前世界上使用最广泛、最流行的计算机编程语言,要想学习起来得心应手,对其的了解也是必不可少的,C语言起源于上世纪60年代,成型于70年代,在近50年的使用过程中表现出了以下特点:C语言简介紧凑、灵活方便,语法限制不严格,程序的书写比较自由,将高级编程语言的结构性和低级编程语言的实用性有效的结合起来,形成了新的功能强大的编程语言;应用广泛,可植性强,C语言适用于多种操作系统;C语言中各种运算符丰富,在C语言编程过程中灵活的使用各种运算符,可以实现其他很多高级语言无法实现的功能;数据结构丰富:多种的数据结构类型的使用使C语言除了可以完成各种复杂的数据运算外还具有强大的图形功能;结构式的语言特点使代码和数据分割,程序层次清晰,便于使用、维护、调试;用C语言可以直接对物理地址进行访问,由此可见C语言的强大功能,所以在信息技术的世界中C语言的地位是很高的。
2 学习C语言枯燥原因分析
C语言的强大功能决定了它的“江湖地位”,所以社会重视、企业重视、学校重视使得学习C语言、想掌握C语言技术的人也越来越多,但是大部分人在学习过程中却表示:C语言的学习是非常难,非常枯燥的,经常是一个学期下来感觉毫无所获,还是处于云里雾里,对学科没有整体清晰的概念。为什么会出现这样的状况呢,为什么越重视效果越不行?笔者认为C语言属于高级语言,是跟面向对象的语言有很大的区别的面向过程的编程语言,它不能直接看到很华丽的画面效果,编写过程稍有不慎就会出错,而且C语言中的很多算法和数据结构如果不加以理解而只是死记硬背的话是会非常枯燥且容易出错的。在运行过程中不能很直接的看到出错的地方,需要自己投入其中进行深入分析,还应该积极的研究算法,因为只有充分地了解算法才能够在C语言的学习上游刃有余,将C语言知识融会贯通,教师在教学过程中也不能一味的讲解,而不考虑学生的接收情况,想当然学生都应该懂。笔者认为C语言编程的学习中,C语言编程技巧可以帮助C语言的学习。
3 C语言编程技巧
现在的C语言学习过程中,学生普遍感觉枯燥无味,其实笔者认为初学C语言觉得比较复杂是人之常情,但是只要你具备了一定的编程经验,再掌握一些编程技巧,其实C语言也不是很难,而且可以更加有效地提高编程的效率和编程能力。在此介绍几种在实践中比较有用的编程技巧:
首先熟练掌握指针,指针的重要性是学习过C语言的人都知道的,指针为什么重要,因为其可以大大提高运算的速度,并且使用的语句简单,但是可以达到意想不到的效果,当然指针也有缺点,就是占用了大量的内存,但是获得了程序执行的高效率。如果系统的实时性要求很高,内存还有一些可以使用指针操作会达到良好的效果。其次运用数学方法解决问题,在C语言的学习过程中,一般有大量的算法和数据结构需要去了解,通常这个阶段是最难熬的阶段,因为对于初学者来说显得比较复杂和枯燥,IT界有一句比较实在的话“数学是计算机之母”,由此可见数学在计算机学习中的重要地位,同理,在C语言的学习过程中,数学思想的应用会让人有豁然开朗之感,一般而言程序的编写都是要解决问题,而简单的运算问题的解决其实就是在数学领域的,编写程序是为了让计算机可以代替人操作运算过程,从而减少人力。从这个角度上来说,在编程前应该用数学的思维寻找规律,用数学的威力来提高编程效率,拓展编程人员的思维。最后要用高效的C语言编程,可以使用位操作,在所有的计算机程序中,可以说位是最小的数据单位,一般而言所有的运算和操作都可以通过“位运算”来解决,足见“位”在编程语言中的重要性,在C语言编程过程中使用位操作可以使代码更简洁,效率更高,当然使用任何技巧都应该视情况而定,如位操作的使用有时可能导致程序的安全隐患。
上面介绍的几种提高编程效率的编程技巧总体来说对于学习C语言指明了方向,让人们在C语言的学习中有重点和方向可寻,必定能使得人们学习C语言的积极性提高,将C语言应用地更加广泛。
4 结语
C语言的强大功能和可植入性一直是其他编程语言望尘莫及的,所以C语言在IT界广受追捧,熟悉C语言的人都被人称为“电脑高手”,所以这些年来,C语言在高校中也有原来的计算机专业课程发展到现在的理工类公共课程,自然,这对于C语言的发展来说是一件好事。与面向对象的编程语言不同,C语言是一门面向过程的编程语言,这就决定了其对算法和数据结构的要求比较高,而算法和数据结构恰恰是编程语言中比较难的部分,正因如此,现在在C语言的学习过程中,大部分人都表示这是一门很重要却很难学的课程,要让C语言更好地服务,必须打破这种现状。笔者认为在C语言的编程教学中加入C语言编程技巧的教学可以很好地改善现状。因为C语言编程技巧可以让人们提高学习兴趣、学习起来也比较有目的性,可以很好地提高C语言的学习效果。
参考文献
[1]李利国,王磊.C语言编程风格之六大章法[J].成才之路,2007,(20).
[2]王展运.C语言编程中常见错误及解决办法[J].长江职工大学学报,2002,(03).
[3]李自清.浅谈C语言编程中的常见错误和解决方法[J].科技信息(科学教研),2007,(33).
[4]王彤,张小志,王大鹏.C语言编程的技巧探讨[J].科技信息(学术研究),2007,(09).
c语言程序学习心得 篇3
关键词:C语言;编程技巧;应用
中图分类号:G642 文献标识码:B 文章编号:1002-7661(2014)24-002-01
C语言属于一种程序设计类语言,其使用在数据处理方面有突出作用,在很多的学习工作领域都有大规模的应用,像是软件开发、科研建设等都离不开C语言的利用。C语言编程,就是用C语言进行相应计算机代码的编写,C语言的学习,需要掌握一定的技巧,不然没有头绪的学习是得不到良好学习效果的,掌握了C语言的学习技巧,才能够更好的促进C语言的学习[1]。
一、C语言与C语言的优势
当下世界上使用范围最广,流行度最高的计算机编程语言便是C语言,要想良好的学习和使用C语言,必须加深对C语言的了解。C语言发源于上个世纪60年代,成熟在70年代,最近半个世纪的使用过程中,C语言表现了如下几种优势:第一,C语言简洁紧凑,使用方式灵活方便,且语法运用宽松不受限制,书写方式自由随意,结合了高级编程语言的结构性与实用性的特点,组成了一种全新式的有强大使用功能的编程语言;第二,C语言有广泛的应用层面,且可植性强,C语言在各种系统中都能够被兼容使用;第三,C语言的运算符丰富多样,各种数据结构类型的使用,除了C语言可以将各种复杂的数据运算完成外,还具有强大的图形功能;第四,结构式的语言特点分割了代码和数据,其中的程序表现层次条理清楚,后期的使用和维护工作便利,使用C语言可以访问物理地址[2]。从中可知,C语言具有强大的功能,因此在信息技术的领域中,C语言所占据的地位是非常高的。
二、C语言学习难度大的原因
因为C语言所具备的各种强大功能,因此人们对其的关注程度也越来越高,想要学会并且全面掌握C语言技术的人也越来越多。可是大部分在刚刚接触C语言的时候,觉得C语言过于枯燥乏味,学习了一段时间后都没有掌握到多少知识,也没有一个清楚全面的认识对于C语言,觉得十分的茫然。出现这种情况的原因还是因为C语言是一种高级语言,这种语言和面向对象的语言之间存在较大的差别,在C语言的学习过程中,学习者难以从中看到形象的画面,只能够在编程程序成功后,经过调试才可以看到效果。在编程的过程中,只要出现一点粗心错误,就会让整个编程无法成功调试,出现一些错误的现象,除此之外,C语言的使用过程中,包含了大量的算法与数据组成结构,这些没有任何的技巧,就是要死记硬背,所以很多学习者在遇到这些枯燥晦涩的问题时,就会丧失学习兴趣,降低学习效率和学习质量。
三、C语言编程技巧的应用
1、用空间换时间
例如对字符串进行赋值,方法有以下几种:
(1)基础方法:
#define LEN 32
Char string I[LEN];
memset(string 1,0,LEN);
ctrcpy(string 1,“this is a example”) ;
(2)方法2:
const char string2[LEN]=“this is a example”;
char*cp;
cp=string2;
从这个案例中可以发现,方法(1)与方法(2)在电脑上的执行效率是不一样的,第一种方法必须使用两个字符函数才可以完成,而第二种方法直接使用指针就可以完成了。但是第二种方法相比第一种方法灵活性欠缺,如果这个字符串有不断变化的要求,那么第一种方法就有很大的使用优势了,第二种方法要占用较大的内存,但是效率比第一种更高[3]。
2、位运算掌握
在利用位运算的时候,能够让代码变得更加的简洁,提升运算效率,让问题得到顺利解决。在所有的计算机程序之中,最小的数据单位就是位,无特殊情况的话,所有的数据运算和操作都可以使用“位运算”方式完成,从这里就就可以看出,在编程语言之中,“位”有多么重要了。“位”使用在C语言的运算过程中,可以提升工作效率,顺利的将更多难度大的问题解决。
3、C语言特有函数掌握
很多时候进行编程,都需要使用C语言的特有函数,函数不是一种数据,而是一种功能,每一个函数都能够执行一定的功能建设,而相对应的函数名称中也将函数的功能反映了出来。开展函数定义的时候,要求操作者包含名字、参数名、类型和函数返回类型的数据,编译过程中,数据库系统是之前被定义好了的,使用过程中只要通过#include这项指令,把各种相关的头文件包含在本文件当中就可以了。
但是不管在C语言编程过程中使用怎样的技巧,还是需要做到具体问题具体分析,以上各种技巧使用起来因人而异,整体是能够提升编程效率,在学习过程中使用会获得一定的成效,而降低学习的枯燥感,拓宽C语言的使用范围。
C语言的学习过程中,每一位学习者都应该对C语言的特性有充分的了解,学习并且掌握每一种编程技巧,学习好了C语言的编程技巧,可以帮助学生提升C语言的学习兴趣,让学生的学习目的性更强,提升学生的C语言学习效率与学习质量。
参考文献:
[1] 余 勍.王 捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,2013,07:108.
[2] 赵 黎.范君君.C语言编程技巧在C语言学习中的应用研究[J]. 信息与电脑(理论版),2014,09:252.
c语言学习心得 篇4
就我个人而言,上课听老师讲语法知识是最重要的,老师一节课下来要讲的内容很多,所以基本上没有时间记笔记,最好记笔记的方式就是课下边回忆边总结。你能回忆起多少,就说明你这节课学到了多少。
进过两个多月的学习,我发现C语言也不是很陌生的名词了。下面是我学习C语言的一些方法,希望你们有更好的方法一起分享。
(1).课下一定要整理笔记,因为课上的学习只是瞬时记忆,要把它转为长期记忆。笔记也要常看。
(2).代码一定要自己写,不能只是懂了,眼高手低是不行的。
(3).重视每一次编译时出现的错误,特别是频繁出现的更要注意。出现错误也不要着急,多交流。也许别人会看到你发现不了的漏洞。
(4).多去图书馆上上自习,图书馆真的很多关于计算机各个方面的书。相信会给你带来惊喜!
(5).课本不能丢,多看看运算符的优先级和常用字符与ASCII码对照表。
C语言学习心得及报告 篇5
学校:西安航空学院
系别:电气系
班级:过控1409
姓名:兰敏
学号:1***3
前言
两个原因促使我写下这篇文章,第一就是作为过来人根据我自己的经验我知道编程的初学者 一般都很兴 奋也都有种困惑,一方面对运行在计算机(注:不特别指明都指个人微型计算机)的五花八门如精彩的游戏程序,多姿多彩的网站等等漂亮的视窗程序所着迷,另一方面大部分的初学者(如计算机专业的低年级学生)都是从简单命令行程序“Hello world!”开始入手而且很长一段时间都无法接触到日常经常使用的视窗程序,由此好奇者有之,迷惑者有之等等,更遗憾的是也有少部分人因为困惑对编程逐渐失去兴趣。第二就是今天妹妹看C程序设计语言的人读碰到一个例题没有看懂,而作为计算机专业毕业的老哥自然义不容辞地承担起了讲解的任务,在噼里啪啦的大说之后,老妹终于弄懂了例题程序的意思,但仍然不过瘾,竟然问起我如何学好C语言,弄得我心一惊,这里我还是有点自知之明的,因为我知道我并不是什么大师,甚至自己对计算机世界也经常是一片茫然,不过看着她那“崇拜”的眼神,不说点什么似乎有点不大好,只好硬着头皮把自己以前的一些理解讲了一番。所以既然知道有这个需要,尽管自己见识浅薄,也抱着“区区陋见假如能够对后学者能够有所帮助那是再好不过了,即使有所偏颇当当笑话看看能有助于大家饭后生活也是美德一件”的心 情就写下了这篇文章。
简介
我是很乐意将计算机(程序设计)语言跟人类语言做类比的,在我看来学习程序设计语言就想学习外语一样,通过计算机语言与计算机交流就如同在使用外语与老外交流一样。通常学习语言比如英语有单词,语法,语义三个部分组成,单词是构成语言的最基本的要素,语法告诉我们单词如何构成语句,语义则告诉我们单词构成的语句的意思,类似的程序设计语言中也是有[1] “单词”,“语法”,“语义”三部分组成,其中跟人类语言一样,“单词”“语法”是基础,而为达到交流的目的“语义”是整个程序设计语言的重点。当然相对人类语言(以英语为例)而言程序设计语言(以C语言为例)显然要有简单得多的组成,所以这里我们要首先确立自己对学好程序设计语言的信心。下面试加以说明,其中可能有些类比不太适当,不过好像也差不多吧,你自己也可以试着举出更好的例子以使自己更容易明白,我这里就抛砖引玉吧。
先从“单词”谈起,在英语中就是由26个英文字母以及26个英文字母构成的单词组成,学习语言我们首先应该记忆的就是“单词”,26个英文字母A,B,C,„„然后就是令人头痛的英文单词,记忆的过程是痛苦的至少我学英语时最恼火的地方就是反复记忆老是忘记的单词,类似的在C语言中我们可以作这样的类比,C语言的单词是由26个英文字母、数字(0,1,2„„9)、运算符以及其他特殊符号组成,所以相比而言学习C语言是多么的幸福。
“语法”,在英语中是如常见构词法、时态、常用句型、特殊用法、固定用法等等(呵呵,不是语言专家如有兴趣可以参考英语语法书籍),仅拿构词法来说动词后面加er就变成名词(work-worker),名词后面加y就变成形容词(wind-windy)等十多种变换还要记忆些特殊变换,复杂且繁琐,假如算上时态、句型等那就更复杂了。在C语言中也同样也存在有语法,比如标识符、常量、表达式、数据定义、函数定义、变量初始化、语句构成、预处理命令等大致8种语法,如标识符[2]可由字母、数字以及下划线组成,且必须以字母或下划线开头,区分大小写,另外在不同的编译器中字符数目有不同的规定,一般为7个字符。不过这里有些可能会被忽略的就是书写格式,在C语言中书写格式也是需要被注意的,因为格式也可以当作C语言的语法项目,如语句是以分号‘;’作为结束的标志的而不是以换行作为结束标志,其实英语也有要求比如什么时候该使用句号什么时候该使用逗号等等只不过我们日常要求并不注意,而且也可以看的懂所以不太较真。
总结
综上所述我们要学好一门程序设计语言首先就要像学习英语一样先熟记至少要熟悉这门语言的“单词”和“语法”然后才能谈得上使用,俗话说“万丈高楼平地起”,学好C语言的必要前提就是先打下坚实的C语言基础,所以潭先生的书作为一本很好的教材,我建议是不能丢的,而且还要反复看,至少刚开始我学习的时候上机机会不多,就是反复看懂看明白这本书,有些东西该记的还是要记尤其是一些重要的语法比如标识符、数据类型、语句的特点、函数的占式结构,指针的意义等等。
最后始终记住这点在没有实践之前,先打下坚实的理论基础吧,毕竟理论是实践的先行,理论可以更好的指导实践。即使再低点的要求至少要先熟悉理论吧,毕竟“摸着石头过河”感觉还是盲目以及痛苦的
“语义”即语句的意思、含义。同人类语言一样,程序设计语言最重要的目的还是“交流”,所以写一段没有任何作用的代码就如同说一句没有任何意思的话是没有意义的,在这一点上两者是共同的,至于在其他某些方面两者也有惊人的相似之处,试举一例吧,比如说可以有不同的表达表示同一个意思,如微型计算机同个人计算机就是同一个意思,在C语言中比如要让变量i自增1,可以有i=i+1或者i+=1等等。不过与人类语言相比,程序设计语言毕竟是与计算机交流,交流对象计算机与人类的不同也决定了程序设计语言与人类语言还是有所区别,甚至可以说是存在巨大的“鸿沟”,这也就是学习程序设计语言的重点。
与人类相区别,计算机最大的不同之处在于没有“自己”的“思维”,没有像人类那样丰富的感情,所以在交流过程中对于人类的跳跃性的思维,对于人类的“幽默”无法理解也没有丝毫的兴趣。比如说对与同样一句话“Do it”,在不同的场景不同的说话语气,对10个人来说就会有10种不同的回答,有的人可能会认为这是合理的要求,有的人可能会认为这可能是个玩笑而不与理睬,有的人则可能认为语气要求有些过分而感到非常愤怒„„,但对所有的计算机来说则是严格执行。不过也正是由于计算机“机械”“笨着”的可爱而深得人们的喜爱并被广泛使用,因为对我们来说,计算机就像一个忠实的士兵一样在执行我们的命令并且作为指挥者,当然我们希望计算机在合适的时间干切当的事情。而要达到这个目的,很凑巧有点类似于社会的“权利与义务”法则一样,我们也有自己的义务那就是下达明确而又正确的“命令”。
首先明确,即我们要在与计算机交流时“语义”必须明确,否则计算机将无所适从,因此作为交流工具的程序设计语言的“语义”也必须是能够明确无二义的。当然程序设计语言的设计者已经注意到这一点,在设计时就回避了这个问题,所以我们——程序设计语言的使用者——程序员也就无须过多关注这点,也就是说使用何种程序设计语言(C,Basic,Pascal等)并不是我们要关注的重点。其次正确,包括正确的输入以及正确的逻辑。由于计算机 “忠实”得有点“盲目”以至于对事情的对错毫无判断力,就像一把枪一样,在警察手里它就是正义的化身,而在土匪手里就成了恶魔的代言人,因此要时刻记住计算机是没有错的,“错误”掌握在我们自己手里,这也就决定了我们在编程时是不是应该投入更多的精力来纠正我们自己所犯下的错误上面来?除此之外,我们智慧的结晶——程序,在我们的上帝——顾客,在程序的使用者看来就像个黑匣子,他们只管输入哪怕是错误的输入却同样期待能得到正确的结果,而对于上帝我们除了祈祷和期望之外还能有什么选择?因此对于输入的不可预期的程序源数据,我们是不是也应该花更多的时间进行处理呢?
先小结下,由于我们在编程时需要对于输入的不可预期的程序源数据以及提高我们自己的逻辑正确性花费更多的时间,因此这也就是我们编程训练所应该关注的重点,而不是关注于何种实际的程序设计语言。
为了加深印象,下面我们举个实际的例子来说明这点。先看题目要求“输入一行字符串(全字母或空格),统计其中的单词数量,单词之间用空格分开”,应该说这是个简单的题目,有些人可能一看到这个题目很快就给出了自己的答案。如有些人会想单词是以空格分开的,我们统计其中空格的数量再加上最后一个单词不就是单词的个数吗,因此便很快给出如下答案。
/*Program1*/ #include
char string[81];
int i,num = 0;
char c;
gets(string);
for(i = 0;(c=string[i])!=';i++)
if(c == )
num++;
printf(“There are %d words in the line.n”,num+1);}
编译运行,然后输入“I am a student”,得出正确答案“There are 4 words in the line.”在输入几个类似的测试用例,都得出正确答案,最后确信无误便自信满满的交出自己的答卷。应该说正确的输入情况下,这个程序毫无疑问是能够正确运行的,但这种正确性是非常脆弱的,你不能指望用户和你一样聪明并且不犯错误,何况即使是神仙那也有打盹的时候。假如用户输入“ I am a student”,“ I
am a student”,“
I am a
student ”„„这种情况下,你是不是应该重新修正你的思路呢?现在我这样考虑一个单词应该是字母后面紧接着一个空格或者结束符号,所以重新写下如下程序。
/* Program 2*/ #include
char string[81];
int i,num = 0;
char c;
gets(string);
for(i = 0;(c = string[i])!=';i++)
if(c!= &&(string[i+1] ==|| string[i+1]== '))
num++;
printf(“There are %d words in the line.n”,num);}
运行一遍,发现结果是正确的,单词之间不管你是有几个空格,不管是两个也好,三个也好都能够正确运行,但是回过头来我们看下这个程序是不是还有些可以改进的地方呢?我们再看如下一个程序 /* Program 3[3]*/ #include
if(c == )word = 0;
else if(word == 0)
{
word = 1;
num++;
} printf(“There are %d words in the line.n”,num);}
输入测试用例也能够完全正确,看看源程序,其中增加了一个标志位便把所有的情况给考虑进去了,相比前一个程序,程序2就是直白的描述了解题的思路,而程序3看起来好像不好理解但似乎更能满足我们作为“天才程序员”的欲望,这也就是编程时使用的一些小技巧。
总体比较三个程序,可以说类似程序1的错误——逻辑错误是我们程序员比较容易犯的,也是在编程调试过程中最费时间的,至于语法错误编译器可以很快的给我们找出错误的地方程序2逻辑正确但相比程序1思路要更难想到,程序3思路不但正确而且还在编程的过程中使用了一些编程技巧,所有这些开阔的逻辑思路(解决问题),快速的调试方法及过程(发现错误),累积的编程技巧(让程序让“好看”)都需要我们在编程实践中去获得,这是宝贵的经验也我们作为程序员最珍贵的地方,而且最重要的这些经验是属于我们自己的,独一无二的。
综合上面的叙述,我们把编程看成程序设计语言的“单词”“语法”“明确的语义”“正确的语义”四个部分,可以看出前面三个部分是几乎所有的程序设计语言自身所具有的,“单词”“语法”不同的程序设计语言有所不同,但如果你仔细观察所有的程序设计语言,可以分成几类,而且有很多地方也有相通的地方,有点像一通百通的味道,这也就是为什么很多有经验的程序员可以在很短的时间就能熟悉其他语言的原因。至于“明确的语义”这是所有的程序设计语言都应该具备的,只是表述的方法由于程序设计的“单词”“语法”不同表述不同而已,但让计算机明白该做什么这点是相同的。最后“正确的语义”包括开阔的,正确的逻辑思路以及发现并纠正错误的能力则是属于我们自己的,这也是我们区别于其他人的地方,这些都需要在经常性的编程实践中去积累去开阔,所以是我们所应该关注的重中之重。
跟许多前辈一样,我是建议初学编程者先熟练掌握一门语言的,至于怎么学习,我想书本是纲领,我们首先要熟悉一门语言的粗枝大叶,在编程的过程中不至于老是去翻书查找一门语言的基本语法,比如说函数的传递方式,函数调用的一些特点,这样不仅非常浪费时间而且一直困扰于语法中使得自己有种身缘“庐山”中的那种非常迷茫的感觉。就向施工一样,建造一个茅屋可能没有图纸,抱着边建边看的态度兴许能完成(事实上你自己脑海里至少也有个大致的样子),但要建造一座大厦,没有图纸,困难可想而知。当然光有图纸还是不够的,我们可能在施工的过程中发现一些问题,这样我们在慢慢修改原来的方案或者原先有些地方描述不清楚通过具体施工确认我们的想法。因此编程实践同样不可少,编程实践不仅可以“让语义正确”即开阔编程思路,发现错误(调试),累计编程技巧,而且可以在编程过程中熟悉这门语言,熟悉这门语言的细节部分,但也请记住这些细节虽然重要,但也仅仅是细节。当然光看书,光有理论那也是不行的,有“纲领”而没有“章程”,有“纲领”而没有实施那同样也是没用的,毕竟实践是检验真理的唯一标准,实践过程中给理论修枝剪叶。
总得来说熟悉一门程序设计语言的语法是编程实践的先行,而编程实践是可以更好促进对程序设计语言基本语法知识的理解和熟悉,而积累的宝贵的编程经验则我们自己最珍贵的地方,最独一无二的地方,是所有程序设计语言所没有的。写到这里,我想现在应该是回答第一个问题的时候了,有人说我学了
这么长时间的C语言还是没编过一个漂亮花哨的程序,编出来的都是丑陋的而且看起来没什么价值的程序,一点自豪感都没有便丧失了对编程的兴趣,为什么前面我一直强调一门语言丰富的编程经验是你最珍贵的地方呢?原因就在于编程不仅仅是把我们的想法把我们的思路用程序设计语言写下来就够了,要得到实际运用还需要与计算机的其他知识如网络,低层硬件,图形图像,开发环境等,甚至还有其他学科知识比如自动控制,通讯等相结合,而这些知识需要我们在以后的学习过程中学习,比如一些后续课程,数据结构与算法,操作系统,数据库,计算机网络,软件工程等等,如果有兴趣你也可以在以后的课程中专门学习视窗程序的编程,或者也可以学习自己做个网站,那会就真的是有自豪感并且货真价实的了。当然那会可能你会有另外的想法比如说做嵌入式程序员,网络程序员,甚至去搞算法研究等等了。不管你选择做什么,书本知识都是大家所共有的,是全人类的财富,而自身的知识,尤其是经验却实实在在是你自己的,最后我还想强调一遍,这是我们最珍贵的地方。
所以在此之前,我知道打基础是痛苦而且没有多少成就感的过程,但是在化蛹成蝶之前,我们还是要继续我们做而且认真的做我们的毛毛虫,因为我们知道我们会有变成美丽蝴蝶的那一天。
我的心得体会
通过一学期对C语言的学习,我感觉学习C语言是有一定难度却又是非常有趣的科目。也是很有帮助的,特别是对将要面对的计算机二级考试。这段时间的学习我知道了C语言的基本特点有以下几点: 1.语言简洁,使用灵活方便。2.运算符丰富,表达能力强。3.数计类型丰富。
4.目标程序质量高,具有面向硬件系统的特点。5.具有结构化的控制语句和模块化的程序结构。6.具有编译预处理功能。
7.程序设计自由度大,可移植性好。
经过第一阶段对语法的学习,我觉得实例阶段应该是一个过渡阶段吧,通过前一阶段对语法的学习之后,可能有很多概念我们都比较模糊,或者说很多东西太抽象了,这就为我们第二个阶段的学习做好了实例化的准备,可以这样说吧,第一个阶段就我们为我们的学习一样东西而构建的一个类,里面讲了我们应该在这里面要做什么?第二阶,也就是本阶段,我们就应该去把前一段的东西具体化(实例化先前创建的类),那怎么个具体化呢,呵呵!说白了,去练习一些小例子,从网上下载的电子书上有很多这方面的例子的,如果有自己去书店买书的话,里面也应该提供了不少,里面的例子,我是每次都打了一遍,也许有的人不会亲自去用手打一遍,什么copy等,当然这样也行,但我个人认为,对于初学者来说,最好还是自己动力打一遍比较好,毕竟这些东西对我们来说,都比较陌生,如果每个字都自己打完的话,有些代码你不想记住也难了,在这里,我们得弄懂练习的每一个例子,如果能把一些例子稍稍修改,弄懂里面精髓的东西,让自己知道为什么这样做,那么是最好不过的了,我平时练习时,这一步是少不了的,都习惯了,所以也就成了条件反射,想不这样都不行。最后,我们就应该汇一下总,把前面做过的例子里所用的技术理一下,再做一个比较大的例子,尽量把到目前为止所懂的知识全部应用到里面去,只是尽量,当然有些东西是不能集成到一起的,也是是代码之间的排斥性。
C语言对单片机编程的学习心得 篇6
1.首先要明确一点,你是爱好单片机编程的,通过写出各种各样的程序,你可以从中得到快乐和成就感,这一点非常重要,如果你是因为学好单片机可以走上更好的工作岗位得到更好的报酬,那也可以,必竞有个动力所以可以驱使你好好的学。
2.要具备能吃苦的精神,学习单片机初期是十分枯燥无味的(在你能写出自已的程序前这一段时间),你会被状态控制字、中断地址、中断优先级等等问题所困惑,可能有些问题要好多天,查了很多资料,想的头疼后你才能彻底想明白。没有吃苦的精神是不行的。所以这一点也很重要。
3.要具备一些数字电路和模拟电路知识,这些虽然看起来和单片机关系不大,实际上哪个单片机没有外围电路,没有这些知识你学会单片机编程后,能力也会被大大的限制。
4.虽然现在工作中用单片机编程都用的C语言编程,因为C语言有代码编写程序速度快,逻辑比较清晰,可维护性强。但是汇编语言对初学者来说也十分重要,这有助于你了解单片机内部运行机制,对单片机的执行过程更加了解。听朋友这么说过,当一个工程师做单片机程序从汇编转到C时,他的水平就提高了,但当他从C又转回汇编时那么他就成精了。
5.要边学边练习,光看书还是不行的,要把你在学习过程中的编程思路在单片机上跑起来,你才会更能找到编写单片机程序的感觉。如果不把自已的编程思路在单片机上运行起来,那么后面你就不知道自已的想法是对是错,感觉无法继续下去。如果经济条件允许一块开发板还是必须的,理论和动手相经结合,你的单片机水平会提高的很快。
6.多想多练,做一些实际的项目,你可以根据你现有的开发板硬件条件,做出一些你感觉比较有意思的项目,实际动手做过项目和看过别人的项目还是有差别的。自已做过项目以后在工作或求职中就没有那么被动,也会有信心一点。
祝个位学习单片机的朋友早日提高!以上是个人见解有不同意见请提出来供广大单片机爱好参考。
C语言的指针学习法 篇7
关键词:指针,数组,地址,变量
凡是学习过c语言的都知道指针是c的灵魂, 它极大的丰富了c语言的功能。下面这部分内容就我个人认识做如下阐述。
1 指针的出现
我想有很多初学者学习到指针都感觉很难, 下面我就以自己的想法来解释下指针这个特殊的数据类型。基本类型变量大家可能并不难理解, 因为基本类型变量其内部存储了同类型的常量, 事实上指针也是变量, 不过呢, 这个变量和基本变量有点不一样, 不同点就在于基本类型变量内部存储了同类型的常量, 而指针变量内部存储的则是“同类型变量的首地址” (所指向的变量的地址) 。可以给你形象的来描述一下:
int a;/*声明一个基本整形的变量*/
此时, 编译器已经给a分配了连续4个字节的内存空间 (VC++6.0) , 结构如图1。
内存地址是线性编码的, 我们可以很容易的看出a的首地址就是他第一个单元的地址1001。
int*Pointer=&a;/*声明一个指向a的指针Pointer*/
编译器也同样给指针变量Pointer分配相应字节数的内存空间, 如图2
该内存空间里存放1001, 即为变量a的地址。
在程序设计中, 如果存在语句:a=10;直接给a赋值, 我们称为直接访问。
如果使用语句:*Pointer=10;即通过指针变量来赋值, 前面的*是间接运算符号, 意思是求Pointer内部存储地址所标识的内存单元, 也就是a。此时, 该赋值是通过间接访问来实现的。如图3
以上就是指针实现的基本解释, 很多优秀的程序员都说指针是C语言中的精华, 的确如此, 很多优秀的程序员写程序都非常依赖指针, 因为它很方便, 实际上指针所访问的对象是没有限制的, 他可以指向任何类型的变量, 前提是只要我们知道内存地址。因此指针也并不安全, 在开发网络程序的时候, 尽量要少使用指针。
2 指针在数组中的使用
简单的来解释下数组, 数组是“同类型变量的有限集合”。数组在内存中占用连续的内存单元 (地址连续) , 来存储数组中的每一个元素。数组是预先分配好指定长度的内存单元, 供数组元素使用。它并不支持动态内存分配。
下面以字符型数组为例来分析字符指针和一维数组之间的关系。数组名其实就是这一组内存单元的首单元, 它的地址就是整个数组的入口地址;数组名是一个指针, 它的基类型为基本数据类型, 不过在具体操作的时候不允许给数组名重新赋值, 可以把数组名理解为cons Pointer (指针常量) 。在程序中可以这样操作:
即同类型的指针, 完全可以胜任数组名的任务。一点问题没有而且可以运行的很好。当然, 我们可以进一步把代码这样来写:
把
改成
下面以基本整型二维数组为例来分析指针和二维数组之间的关系。二维数组名也代表二维数组的首地址, 也是一个指针常量, 只是其基类型为数组类型, 称为行指针 (a指向第0行, a+1指向第一行) 。可以把二维数组看做一个特殊的一维数组, 只是每个元素又是一个一维数组而已。在程序中可以这样操作:
/*把二维数组看做一维数组时, 每个数组元素a[0]、a[1]、a[2]又包含一个一维数组, 该一维数组又包含4个元素, 这样a[0]、a[1]、a[2]即成为相应的数组名, 也成为一个指针常量, 其基类型为基本整形;所以可以把a[0]、a[1]、a[2]分别赋给指针数组的相应元素*/
p=a;/*p为行指针, 其基类型为数组类型*/
3 总结
指针本身与指针所指向的变量不是一个单元, 一定要弄清楚指针变量的基类型。一个指针ptrold加上或减去一个整数n后, 结果是一个新的指针ptrnew, ptrnew的类型和ptrold的类型相同, ptrnew所指向的类型和ptrold所指向的类型也相同。
参考文献
[1]C语言初学者入门讲座:<http://www.gshu.cn/detail/0/337.htm>
c语言程序学习心得 篇8
关键词:问题式学习,合作学习,C语言,教学
Abstract: in view of the traditional C language teaching process, students' lack of interest in learning, content boring problems difficult to understand, lack of hands-on programming ability, this article put forward the problem-based learning mode cooperative learning C language teaching methods. The teaching methods and teachers as the leading factor, the students as the main body of the double main teaching model, will all student groups, difficult transition for each group of students put forward reasonable multiple problems, applying the concept of cooperative learning to improve each student's learning initiative and team coordination ability, finally, have incentive effect appraisal method to effectively promote the students' active learning the language C language program design.
Keywords: problem-based learning, cooperative learning, C language, teaching
一、传统教学模式存在的问题
目前传统的C语言程序设计教学主要存在以下三个问题:
1.枯燥的语法学习让学生缺乏兴趣
在大多数教材设计中,C语言的教学先讲授基本的数据类型、运算符与表达式这类语法知识,然后讲述顺序、选择、循环这三种基本的结构。这些内容枯燥繁琐,有大量需要记忆的细节,容易让学生失去学习兴趣和动力。而且这些语法的讲解即便是结合了具体实例、错误示范,也是局部细节的讲解,容易让学生陷入这些细节中,只见树木不见森林,渐渐失去了学习C语言的积极性。
2.学生难以适应对编程逻辑
C语言课程大多开设在工科院校的第一学年,学生第一次学习编程语言,需要很长的时间去适应编程逻辑,对于数学和C语言语法类似的地方也容易混淆。而上机时对编译出错和警告信息的理解判断、单步/断点调试方式的应用都需要大量的练习才能掌握,所以很多学生表示,学习了很长时间C语言,依旧弄不太懂这门语言的范式和规律。
3.教师考核的内容偏重语法,学生缺乏算法思维
由于C语言的学习需要先掌握常量、变量、数据类型、顺序、选择、循环语句,才能写出程序,所以教师在教学时,将大量的精力用在语法讲解上。同样,考试时教师也偏重于这些语法的考核,很多题目是为了考语法而考语法,而实际应用时极少用到那些极端的语法表达,反而是要表达得易于理解,避免混淆。在这样的教学与考核体系下,即便学生硬着头皮记下了大量的语法,也依旧缺乏算法思维,只能读程序,不会自己编程序。
针对以上问题,C语言的教学亟需改变传统的模式,用问题式学习模式激发学生的学习兴趣,引导学生课下自觉在编译平台上练习,培养编程逻辑。同时要改变单一的以教师为中心的教学模式,构建合作学习式的以教师为主导、学生为主体的双主型教学模式。
二、合作学习式的双主型教学模式
合作学习就是将所有学生分成几个“组内异构,组间同质”的小组,小组与小组之间的能力接近,而组内各成员素质良莠不齐,学生在学习活动中相互帮助,对老师提出的学习任务各尽其能完成,使小组利益最大化的一种教学理念。
合作学习的理念源于学习的本质应该是一种同客观世界对话、同他人对话、同自我对话的三位一体的活动,理想的教学应该是每个学生能安心学习,愉快地同教材对话,感受并分享同学间的见解,体验交流的喜悦。
通过合作学习,学生愿意为集体的利益和个人的利益而一起努力,在完成共同任务的过程中实现自己的理想,能改善竞争意识给学生带来的精神压力。由于合作学习是课堂学习和自学之间的缓冲,在教学组织方面具有衔接性,十分符合我国高校教学以班级授课形式为主的教学传统,教学组织形式上改革阻力较小,容易实施。
在高等院校的 C 语言教学中开展合作学习对提高学生编程能力和解决实际问题的能力有十分重要的意義。为避免合作学习走向某个学生“独当一面”或者合作流于形式两个极端,老师在组织 C 语言合作学习时,需要对整个 C 语言教学过程进行系统的设计。目前的教学设计模式分为三种:以教为主的教学系统设计、以学为主的教学系统设计、综合两者之长的以教师为主导、以学生为主体的“双主型”教学系统设计。
以教为主的教学系统设计将行为主义学习理论和认知学习理论为作为基础,在教学过程中,教师处于中心地位,强调教师的主导作用。这种教学方式是我国目前主要的教学形式,原因主要有以下几种:1.大部分学校的授课都是大班教学,教师讲学生听的模式,比较适合这种规模的课堂活动;2.这种传统的教学系统设计已经由众多专家、学者以及一线教师通过几十年的深入研究、实践与发展,形成了一套比较严谨、完整的理论体系供教学工作者操作使用,而其它方式在我国实现的范围小,年限短。
以学为主的教学系统设计强度以学生为中心,教师由知识的讲授者变为学生主动构建学习的引导者,教师是根据学生的需求定制课堂的教学目标和内容,教学设计主要围绕“自主学习策略”和“学习环境”两方面进行,学生的参与为教学活动的起止点。这种教学模式由于强调学生是认知过程的主体,是知识的主动建构者,因而有利于学生的主动探索、主动发现、有利于创造型人材的培养,这是其突出的优点。但是,这种教学模式由于强调学生的“学”,往往忽视教师主导作用的发挥,忽视师生之间的情感交流和情感因素在学习过程中的重要作用;另外,由于忽视教师主导作用,当学生自主学习的自由度过大时,还容易偏离教学目标的要求,这又是其不足之处。
C语言合作学习式的“主导-主体”双主型教学模式,结合以教为主和以学为主两种教学系统设计模式的优点和灵活性,以奥苏贝尔的“学与教”理论和建构主义的“学与教”理论为基础,互相弥补不足,既重视培养学生的创新思维、创新能力以及学生情感因素对学习效果的影响,又较好地体现了教师的主体作用。
三、问题式学习模式下的合作学习
传统的教学模式是教师单向讲授知识点,学生听课,在课后复习时进一步理解。这种学习方式很难将新的知识与学生用已有的知识联系起来,而人在接受新的知识时,一定要将新的信息与头脑中已知的信息结合起来,用自己的方式重构知识体系,这种新知识才能被理解消化。因此在C语言的教学中,需要由问题引发学生的思考,再引入新知识,将其内化为学生自己的知识,开启学生的自主学习之路。
问题式学习(Problem-based Learning,PBL)是一种基于构建主义的教学方式,它以问题为核心、以学生为中心,让学生在问题的引导下思考、相互协作、交流并构建知识,让学生掌握灵活的知识基础、发展更高层次的思维既能、培养学生解决问题和自主学习的能力。
C语言的教学在实施问题式学习模式时需要在课前合理设计问题,注重问题的层次性、激励性和系统性;在课中扮演好教师的角色,创造问题情境,促进课堂的动态生成;在课后要注意深入反思和总结,反思教师自己的教学并引导学生反思自己的学习。
实际的问题式学习模式下的C语言合作学习可采用以下流程:
1.教师分析学生的特征,确立学习目标。
学生的特征包括起点能力,学习风格等,C语言课程学习者多为工科院校大一的新生,已掌握的知识体系只有高中水平,基本没有基本的编程思想,对理论性的学习有一定兴趣,但更愿意动手实践。这些学生的学习风格又分为两大类:场独立性和场依存性。前者有自己的看法,不容易受外界和他人评价干扰;后者比较容易适应环境,但受到批评时容易学习积极性下降。在以上学生特征和学习风格的考虑,教师在确立学习目标时需要设计不同层次的问题,以适应不同类型的学生。
2.教师根据学习目标设置具体的学习情境,并选择与当前学习密切相关的真实事件或问题作为学习的中心内容。
教师在设计课堂内容时分为三个部分:链接旧知识、探究新知识、新知识小结。先对学生知识体系中已有的相关内容复习,为新课做铺垫,然后围绕新知识学习以不同层次的问题展开,设置一条问题探究线索,让学生对新内容有一个整体的把握。在课题学习的最后一部分对新知识做总结和反思。
3.学生根据教师提供的问题自主学习,解决问题。
学生先课前预习,在教师给出旧知链接,多个新问题引导的前提下,分组展开讨论,分组一般以5~6人为宜,讨论的内容包括学生预习后的展示,对疑难问题的解答,知识体系的链接更新等内容。
4.师生交流,对问题补充、修正、加深理解。
在学生讨论的过程中,教师可以观察每组动向,留意学生讨论的重心和存在的疑点,在学生讨论结束后,对有争议的问题做点拨和提示,但不是直接给出正确答案,而是引导学生自己得出正确答案,对开放性问题则引导学生在课后进一步查资料求证、思考,整个过程中教师只扮演协助者而不是主导者。
5.教师评价学生表现,学生填写反思表。
在课堂的最后一部分,学生和教师一起总结新知识,评价各个学生的表现,对整个课堂环节的设置、时间安排提出修改建议。教师自己也要随时记录课堂教学信息,发现问题,反思自己的教学行为。
四、考核方式
设计合理的考核方式对促进学生的学习效果具有十分重要的意义。学生成绩分为两部分:平时成绩与期末考试成绩。由于采用合作式学习方式,平时成绩的重心放在学生身上,需要评价学生在合作学习中的努力程度和被认可程度,所以每次课堂上的平时成绩由组内成员协商的组内成绩和组间评价给出的小组成绩组成,个人成绩=a1*组内成绩+a2*小组成绩,其中a1,a2为权重系数,由老师确定。平时成绩的评定需要给出量化指标如下:1)合作态度,成员需要积极参与讨论和解决任务的全过程,并且善于交流,能团结伙伴。2)合作学习方式,成员愿意倾听别人的意见并给出合理反馈,愿意将自己的成果与成员共享。3)解决问题能力,能积极有效地收集相关材料并完成自己所负责的任务。通过以上考核方式能较好地促进学生在问题引导下合作学习。
参考文献
[1]张华,张淼. 基于问题求解的C语言开篇教学研究[J]. 计算机教育,2014,No.20501:13-17.
[2]王晓光. C语言教学的教学模式改革策略解析[J]. 电脑知识与技术,2013,v.929:6583-6584+6586.
[3]辛秀. 高职院校C语言合作学习的教学实践与反思[D].辽宁师范大学,2012.
[4]汪红兵,姚琳,武航星,张敏. C语言程序设计课程中的计算思维探析[J]. 中国大学教学,2014,No.28909:59-62.
[5]张蕾. 基于项目化教学的“C语言程序设计”课程改革[J]. 计算机教育,2013,No.18202:17-20.
[6]钟美. 培养应用型人才为目标的C语言教学改革[J]. 计算机教育,2013,No.19616:55-58.
[7]邱曉红,李渤,樊中奎,邱晓平. 融合认知结构和CDIO教育理念的C语言教学[J]. 计算机教育,2013,No.19616:107-111.
作者简介:曾春艳,女,1986.2 湖北武汉,博士,湖北工业大学,信号处理
C语言程序设计心得体会 篇9
在设计打字游戏的过程中,通过我们小组各成员之间的相互讨论和合作,我们完成了打字练习的程序设计。在这个学期中,我们已经学习了《C 语言程序设计》这门课,但是我所学的知识最多也就是在做作业的时候才会用到,平时没有什么练习的机会,这次的设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程序。这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。
C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。
在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环和switch语句,还用到了函数之间的调用。由于我们是分工编写代码,最后需要将每个人的代码放到一起进行调试。因为我们每个人写的函数的思想不都一样,所以在调试的过程中也遇到了困难,但经过我们耐心的修改,终于功夫不负有心人,我们成功了!
【c语言程序学习心得】推荐阅读:
C语言程序设计学习指导(第2版)02-16
c语言的学习心得01-04
学习c语言心得体会12-31
单片机c语言学习心得08-19
C语言程序06-30
《语言程序设计》学习心得自主学习报告08-29
公共C语言程序设计07-30
C语言程序设计教学11-27
C语言程序设计题12-06
c语言程序设计205-10