1. 大学计算机专业里 的c语言是什么
计算机专业里 的c语言:
C语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的DEC PDP-11计算机上使用。它由早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来,在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。 而B语言之前还有A语言,取名自世界上第一位女程序员Ada(艾达),同时也是编程语言之一。
知识扩展:
c语言的特征:
1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。工作单元。
2、C是结构式语言:结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。
5、C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
2. 自学计算机C语言
自学是没有问题的,下面给你一些自学的建议,希望对你有所帮助:
了解一些基本知识
一.C语言的背景
就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
二.二大语系二种不同的学习方法
例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),javascript,JSCRIPT ,VBSCRIPT,JAVA,ASP,FOXPRO,PERL等等,其实高级程序语言分为两大语系。一路是以C为主的程序语言,例如:javascript,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBSCRIPT等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。
讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。
1、入门后多看代码
在有一定基础以后一定要多看别人的代码。 注意代码中的算法和数据结构。 毕竟学C之后的关口就是算法和数据结构。提到数据结构,指针是其中重要的一环,绝大多数的数据结构是建立在指针之上的,如链表、队列、树、图等等,所以只有学好指针才能真正学好C。别的方面也要关注一下,诸如变量的命名、库函数的用法等等。有些库函数是经常用到的。对于这些函数的用法就要牢牢记住。
2、要自己动手
编程序是个实干的活,光说不练不行。刚开始学的时候可以多练习书上的习题。 对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。 自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。有一定的基础以后可以尝试编一点小游戏,照着编作为练习。基础很扎实的时候,可以编一些关于数据结构方面的东西。之后.....学汇编、硬件知识。
3、选择一个好的编译器
GCC或者VS都是一个好的选择
4、关于养成良好的编程习惯
(1) 在比较复杂的代码后面要有注释。 如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误。除非你一直编东西给自己看。能在代码里说明白的就一定要在代码里体现。比如变量名、函数名,在命名的时候尽量说明是干什么用的。
(2)注意语句的嵌套不能过长,一般来说,一段代码里Tab要少于8个。 简单说就是语句最多8个嵌套。 对于新手来说,这个标准还要下降。有一个好习惯是,把主函数尽量写简短。经常看到别人的代码是主函数只有几行,几个函数调用,而定义全在主函数外部。这样一是减少了主函数内部的嵌套,二是比较精简,容易读懂。
(3)注意语句的选择。并不是分支语句就用if循环就用while、for。在适当的情况下switch和do while语句也是要用的。在某些时候,switch语句比if语句更加精练明了,而do while比while少一个循环。
3. c语言浪漫代码
#include <stdio.h>
int main()
{
int i, j, k, l, m;
char c = '*'; //ASCII码里面 3 就是一个字符小爱心
for (i = 1; i <= 5; i++)
printf("\n"); //开头空出5行
for (i = 1; i <= 4; i++)
{ //前3行中间有空隙分开来写
for (j = 1; j <= 32 - 2 * i; j++)
printf(" "); //左边的空格,每下一行左边的空格比上一行少2个 //8*n-2*i
for (k = 1; k <= 4 * i - 2; k++)
printf("%c", c); //输出左半部分字符小爱心
for (l = 1; l <= 17 - 4 * i; l++)
printf(" "); //中间的空格,每下一行的空格比上一行少4个
for (m = 1; m <= 4 * i - 2; m++)
printf("%c", c); //输出右半部分字符小爱心
printf("\n"); //每一行输出完毕换行
}
for (i = 1; i <= 3; i++)
{ //下3行中间没有空格
for (j = 1; j <= 22 + 1; j++)
printf(" "); //左边的空格 //8*(n-1)+1
for (k = 1; k <= 31; k++)
printf("%c", c); //输出字符小爱心
printf("\n"); //每一行输出完毕换行
}
for (i = 7; i >= 1; i--)
{ //下7行
for (j = 1; j <= 38 - 2 * i; j++)
printf(" "); //左边的空格,每下一行左边的空格比上一行少2个//8*(n+1)-2*i
for (k = 1; k <= 4 * i + 1; k++)
printf("%c", c); //每下一行的字符小爱心比上一行少4个(这个循环是i--)
printf("\n"); //每一行输出完毕换行
}
for (i = 1; i <= 38; i++)
printf(" "); //最后一行左边的空格
printf("%c", c); //最后一个字符小爱心
for (i = 1; i <= 5; i++)
printf("\n"); //最后空出5行
return 0;
}
4. 计算机c语言怎么学
我是学软件工程的,C语言是我们的基础,在我认为如果是为了考国二,多注重理论,稍微练点上机就可以了,如果真的想把C语言学好,并想做点东西的话,我觉得应该要买一本经典的书,外国的最好,如果是英语好的话最好看英文版的,因为那个是最最最经典,如果英语不好就看一个翻译过来的也挺好,然后必须每学一章不断的进行锻炼,这个是想学好语言的最好方法,只有自己动手做了,才会有极大的进步,不出一个月,我相信你会成功的。
5. 自学计算机C语言
在CSDN上就有,要自学C语言的话,光是教学视频和教学软件是不够的,一般的教学视频上面精简度很高,他会把主要问题讲一讲,可你没有基础,再说你没有跟视频上配套的教材,听了你也不会明白他讲的是什么,就算你听明白了,也只是东一块西一块的,不能成体系。最好还是要有本教材, C 语言的话 个人感觉还是清华大学出版社出版的 谭浩强主编的《C语言程序设计》写得比较好。因为比较简单,讲得比较基础,知识点也比较细。作为学过那本书的前辈,我感觉,那本书的最大的特点就是,字体比较大,比较稀松简洁,看上去比较舒服,不会让人一看就害怕了。我看过好像是西安电子科技大学的一本教材,密密麻麻的,还都是程序,一看就害怕了,想学的劲一下子就没了,当然这只是个人感觉了。不过你放心,知识点什么的,那本教材不会少。要运行C语言只需要下载 visual c++ 6.0或 visual studio 2008就行,这些都能运行C
6. 学习计算机的C语言前需要安装哪些
C语言学习准备工作
工欲善其事,必先利其器。在开始学习C语言之前,需要先做点准备工作。
编程需要电脑
学习电脑技术,尤其是学习编程,最好最有效的方法就是上机实践。所以,一台可以方便使用的电脑当然是不可少的,如今,这对于多数人应该不是个障碍了。
有人可能会问,学习C语言需要准备个什么样的电脑,要什么配置?这个问题好回答,C语言学习对电脑硬件配置很低,基本上现在能见到的任何PC都足够满足学习之用了。不过,为了学习更方便高效,该电脑最好具备以下条件:
1.需要一个操作系统,如果是电脑新手,可以选择Windows,这样使用比较容易些
2.需要一个C语言编译器
3.最好能上网,方便看C语言教程,查资料...
C语言编译器选择
如果你使用的是Linux,恭喜你不需要选择了,一般的Linux发行版都带gcc/g++编译器,只要在安装时将它选上即可,如果没装,就需要下载一个安装包重新安装了。
如果你在Window下工作,那也恭喜你,Windows很方便强大,编译器的选择很多,下面三藏介绍几个常见C语言编译器:
■Dev-C++: 三藏认为,Dev-C++是C语言初学者的最佳选择,因为它简单小巧而不乏强大。三藏现在使用的是Dev-C++ 5.0 beta 9.2 (4.9.9.2)汉化版,整个安装包还不到10M,安装过程很傻瓜不必罗嗦,需要注意的是很多汉化版中都带有插件(比如网络搜霸),如果你也象三藏一样不喜欢流氓插件,需要安装时将其勾选消掉(隐藏在组件选择的最下部,没有明显提示)。
■Win-TC: Win-TC是一个基于Borland公司的TC2编译器的C语言IDE(集成开发环境)。优点是够简单,主要就是程序的编辑和编译功能,不用可以学习就能使用。缺点是每次编译完成都弹出一个多余的对话框,有些烦人;另外三藏在测试“hello,world”程序是发现有点异常,对软件的正确性不大确定,所以不特意推荐使用。
■TC2/TC3: TC曾是DOS年代最佳的C语言编程学习环境,但到如今,据说还有的学校让学生在TC下折腾,这就让三藏非常不解了。过去的就让它过去吧,所以TC就不用再谈了,毫无必要!
■VC6:VC6的强大与辉煌是勿庸置疑的,但正因为它太强大而致有些复杂,所以它不是C语言学习的最佳选择,因为太多的IDE功能会对初学者带来疑问和困惑,让人觉得不是你在用它,而是它玩你。注意:只是说它太适合新手用来学习C语言,没有否认它是最强大的Win程序开发工具之一。
■VS2003/2005/2008: 对初学者不特别推荐,理由同VC6。
注意:
1.多数C编译器同时也是C++编译器
2.TC,VC等不是编程语言,而是一个编程工具软件
7. 计算机学的C语言是什么
目前最着名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门十分优秀而又重要的语言。
c语言程序设计是过程性程序设计语言,它的发展贯穿了计算机发展的历程,它蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。
从市面上有关c语言的书籍和高等院校采用的教材来看,它们有一个共性,那就是:脱离了实际应用(全是小打小闹的小例子),纯粹的过程性程序设计,没有软件工程思想的体现,没有一定程序设计风格,仅仅是为了让大家明白什么是c语言而已。
高等院校开设c语言程序设计的目的是让学生对程序设计有个入门,有个直观的理解,同时为其他后续课程作铺垫。但是如果教学仅仅以此为目的,那么教学本身就效果而言是个大大的失败。
大家知道,在商业上讲究唯利是图,“利”是商业追求的目标,离开了“利”经商,则商无动力,其结果是必败无疑。在c语言程序设计教学当中,教师应该把“唯用是图”作为教学的首要目标。如果抛开了实际应用进行程序设计教学,就是纸上谈兵,就是“说明书”式的教学。印度的程序设计课程采用“事件驱动式”教学,我认为在中国的c语言程序设计教学中应该采用“项目驱动式”教学。“项目驱动式”教学就是以项目为目的,以c语言理论教学为过程,最终能用c语言设计项目,实现项目的要求。“项目驱动式”教学的关键在于培养学生“如何做什么”和“可以干什么”。一个项目就是一个工程,在“项目驱动式”教学中,首先应该让学生简单了解什么是软件工程思想,其次在c语言理论教学过程中,让学生懂得面向对象的程序设计的风格,最后引导他们来设计项目。
(二)“项目驱动”式教学应注意的问题
1.c语言程序设计教学要帮助学生树立面向工程的观点
在计算机行业中,软件是通过人们的智力活动、把知识与技术转化成信息的一种产品。软件的设计已经用工程的观念来进行管理。软件设计工作被当作一项系统工程来对待。软件的的生存周期一般可分为以下阶段:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。我们不难看出软件工程的复杂程度是很大的。理工科高等院校把c语言作为一门基础课程,也是为了给社会培养信息技术人才。众所周知,养成一个好的习惯是非常重要的,所以c语言程序设计作为大多数工科院校学生接触的第一门程序设计语言(有的院校讲pascal),就应该让学生树立正确的观点。那么当前的程序设计教学也必须以切合将来软件工程开发的实际需要为第一目标,使学生在学习程序设计的初级阶段就树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用设计打下良好的基础,而且有利于培养学生分析问题的完备性,以及统筹全局,协调关系的基本素质。
2.理论教学应从单一的“结构化程序设计”向“结构化与面向对象并举”转变
“结构化程序设计”方法是程序设计的基础,必须让学生掌握得坚实可靠。结构化程序设计的过程是培养学生思维能力的过程,在教学中经常发现有些学生的思维混乱。这些都是缺乏思维训练的结果。结构化程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。所以在授课过程中要注意讲解结构化程序设计的思想时应突出两点:(1)程序的质量首先取决于它的结构。(2)程序设计的基本方法是自顶向下地逐步求精和模块化。
在c程序教学过程中,越到后面的章节,学生越会产生设计程序逐渐变难的感觉,这是不符合逻辑的一种怪现象。按照常理,C语言学的越多,说明你的程序设计知识越多,设计起程序来应该更加得心应手,那么出现这种现象的原因何在呢?当然该问题的出现的原因是多方面的,但是其中最重要的一点就是长期以来程序设计的观念不是以如何处理好对象为出发点,而是以如何使用好语言为基本点。受这种思想的影响,我们的程序设计教学大多数不是以如何解决好问题为重点,而是以讲解语法规则和语句格式为重点,是“说明书”式的教学。这样做造成的结果就是见到一个程序后学生首先想到是该用哪条语句,而不是思考怎样合理的解析。要切实解决这个问题,首先应该改变程序设计的观念。“面向对象程序设计”思想是目前最为流行、极为实用的一种程序设计方法,但是让学生直接接触“面向对象程序设计”,肯定不能对程序设计打下牢固的基础。“结构化与面向对象并举”是现代计算机程序设计的发展趋势,应该认真探索研究,让学生有一个较为轻松的学习过程。程序设计的实质就是编写处理对象的过程,所以将c与c++有机的融为一体的教材应该是首选教材,在教学过程中,我们应该从社会发展的角度进行探索研究,将目前最为流行又极为实用“面向对象程序设计”思想融合到c语言教学中。
3.c语言教学应培养学生良好的程序设计风格
具有良好的设计风格应该是程序员所具备的基本素质,在实际的项目中程序员往往都有自己的一些编程风格。目前95%以上的程序设计书籍不注重程序设计风格问题,这导致了很多学生没有良好的程序设计风格,在他们刚刚毕业踏入社会时,如果周围的同事没有良好的编程风格,那么很难通过环境来使自己提高这方面的素质,即使有提高也不容易比较全面的提高。因此在学生接触的第一门程序设计语言教学中,就应该培养学生良好的程序设计风格,使他们一进工作环境就具备这个素质。
Pascal设计者N.Writh教授十分重视程序设计风格的养成,他坚信“教给学生们以表达他们思维的语言会深深地影响他们思维和创造发明的习惯,而正是这些语言本身的混乱直接影响着学生们的程序设计的风格”,他这里所指的“这些运用”是当时那些主要用于程序设计教学的计算机语言。对学生来讲,一开始就强调程序设计风格很有必要,良好的程序设计风格不仅有助于提高程序的可靠性、可理解性、可测试性、可维护性和可重用性,而且也能够促进技术的交流,改善软件的质量。所以培养良好的程序设计风格对于初学者来说非常重要。
程序设计风格,实际上是指的是编码风格。在教学过程中应从源程序文档化,数据说明的原则,输入/输出方法这三个方面培养学生的编码风格,进而从编码原则探讨提高程序的可读性、改善程序质量的方法。
(1)源程序文档化。编码的目的是产生程序,但是为了提高程序的可维护性。源代码是需要实现文档化的。源程序文档化包括选择标识符(变量和标号)的名字、安排注释以及标准的书写格式等。
①选择标识符的命名规则。标识符包括模块名、变量名、常量名、标号名、子程序名等。这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能顾名思义。另外在模块名、变量名、常量名、标号名、子程序名中使用下划线是一种风格。使用这一技术的一种广为人知的命名规则就是匈牙利命名法(变量类型由一个或两个字符表示,并且这些字符将作为变量名的前缀)。当然使用匈牙利命名法与否都没有错误,重要的是要保持一致性——在整个程序中使用相同的命名规则。这就是说,如果你在一个小组环境中编程,你和其他小组成员应该制定一种命名规则。并自始至终使用这种规则。如果有人使用了别的命名规则,那么集成的程序读起来将是很费劲的。此外,你还要与程序中用到的第三方库(如果有的话)所使用的风格保持一致。如果可能的话,你应该尽量使用与第三方库相同的命名规则,这将加强你的程序的可读性和一致性。
②注释。程序中的注释是程序设计者与程序阅读者之间通信的重要手段。注释能够帮助读者理解程序,并为后续测试维护提供明确的指导信息。因此,注释是十分重要的,大多数程序设计语言提供了使用自然语言来写注释的环境,为程序阅读者带来很大的方便。注释分为功能性注释和序言性注释。
a.功能性注释。功能性注释在源程序中,用以描述其后的语句或程序段是在做什么工作,也就是解释下面要“做什么”,而不是解释下面怎么做。对于书写功能性注释,要注意以下几点:第一描述一段程序,而不是每一个语句。第二利用缩进和空行,使程序与注释容易区别。第三注释要准确无误。
b.序言性注释。序言性注释通常位于每个程序模块的开头部分,它给出程序的整体说明,对于理解程序具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关内容包括:程序标题;有关该模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述;模块位置(在哪一个源文件中,或隶属于哪一个软件包);开发简历:模块设计者、复审考、复审日期。
③用标准的书写格式。源程序清单的书写建议采用以下几点:
a.每行只写一条语句;
b.用分层缩进的写法显示嵌套结构层次,这样可使程序的逻辑结构更加清晰,层次更加分明。
c.书写表达式时适当使用空格或圆括号作隔离符。
d.在注释段周围加上边框;
e.注释段与程序段、以及不同的程序段之间插入字行;
(2)数据说明采用的原则。在编写程序时,要注意数据说明的风格。
数据说明的次序如果规范,将有利于测试,排错和维护。首先说明的先后次序要固定,例如,按常量说明、简单变量类型说明、数组说明用数据块说明、所有的文件说明的顺序说明。当然在类型说明中还可进一步要求,例如按如下顺序排列:整型量说明、实型量说明、字符量说明、逻辑说明。
其次当用一个语句说明多个变量名时,应当对这些变量按字母的顺序排列。
最后对于复杂数据结构,应利用注释说明实现这个数据结构的特点。
(3)输入/输出方法。输入/输出的方式和格式应当尽量避免因设计不当给用户带来的麻烦。这就要求,源程序的输入/输出风格必须满足能否为用户接受这一原则。所以在设计程序时,应考虑以下原则:输入数据时,要使输入的步骤和操作尽可能简单,应允许使用自由格式输入;应允许缺省值;对输入的数据要进行检验,以保证每个数据的有效性。
(三)结束语
在教学过程中,我们让学生设计一个程序模拟体育彩票的销售与对奖的过程,取得了良好的效果。他不仅启发和诱导了学生独立思考、积极思维的主动性,而且充分调动了学生学习的自觉性和积极性,使学生融会贯通地掌握了所学知识,提高了分析问题和解决实际问题的能力。
搞好c程序设计的教学工作涉及的因素很多,如果以项目来驱动教学,首先让学生树立面向工程的思想,其次把教学从单一的“结构化程序设计”向“结构化与面向对象并举”转变,最后特别要培养学生养成良好的编码风格,从而使他们学会能够“干什么”,那么我们认为教学目的就达到了。
8. 怎样学C语言
我是学计算机专业的 给你一些建议!
首先:C语言入门相对比较简单,但如果想成为一个优秀的C程序员,需要很艰苦的训练,多读代码,多练习,多上机操作,多思考,学习是一件辛苦的事情,要放弃很多东西,要坚持下来才可以,可以说C语言是基础,将来想学其他的C++,JAVA等,如果有C的基础,还是比较好入门的.
C语言的用处比较广泛,可以说任何精通计算机的人都掌握C语言了,我是本科计算机专业的,C被作为许多课程的先行课,没有了C语言基础,就不能学习数据结构,操作系统,编译原理,计算机网络等核心课程,所以说,想学习计算机的话无论想在哪个方向发展(软件,硬件,网络,应用,开发,设计等方向)都必须掌握C语言.
关于C语言的教材:我向你推荐几本:
最经典的:《C程序设计语言》第2版,机械工业出版社
这个是C语言的设计者和UNIX系统的设计者合作编写的最经典的C语言教材,原书名叫《The C Programming Language》当然,这本书不太适合0起点的人,看这本书之前最好把《C程序设计》(谭浩强,清华大学)看了,老谭的书销量突破700万册了,虽然比较旧了,也不太符合新标准(现在出第3版了,也还是)但是,入门还是不错的选择。
另外还有必看的是《C Primer Plus》这个是一个美国人写的,人民邮电出版社出了中文版了,第5版,比较厚,砖头书,60元。但是非常适合初学的人,非常详细。
还有《从问题到程序——程序设计与C语言引论》机械工业出版社,这本书也很不错。
看完这些,就可以看算法的书了,比如数据结构什么的,这方面的书很多。如果想在程序界发展,那么有部重量级的着作不得不看《The Art of computer programming》一共三卷,有翻译版《计算机程序设计的艺术》这三卷书非常深,比较难,盖茨说,谁如果把这上面的习题都做对了,直接可以到微软上班了。
另外学习C语言要养成良好的程序风格,这点一定要注意练习!
9. 如何学习计算机C语言
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书
10. 计算机c语言入门
学c++吧。
Essential C++
C++ Primer
Accelerated C++: Practical Programming by Example
以上的三本书是我最推崇的C++教程,我对它们进行过细心的阅读,感觉受益匪浅,因此也不遗余力地向你推荐。
《Essential C++》(《Essential C++中文版》,华中科技大学出版社,2001)出自久负盛名的《C++ Primer》作者之一Stanley E. Lippman之手。的确有很多人对这个大师级的人物竟然写这样一本面向零基础的轻薄短小的入门教材感到不可理解。Lippman自己的解释是在参与一部电影的制作时(他拥有艺术硕士的学位!),他由于某种需要必须学习Perl语言,在学习的过程中他“在感伤的心境中明白”,C++ Primer无法扮演初学者导师的角色,那本书太庞大复杂了——对于那些想立刻学会C++语言并进行简单应用的人来说。于是他便有了这本并不太精细却体现语言核心的着作。这本书完全面向零基础读者,您可以对编程一无所知,《Essential C++》仍会引导您走向用C++编程之路,正如它的贴切的书名中所说的,它体现了C++的精髓(脚注:essential,精髓的、本质的)。
《C++ Primer》(《C++ Primer中文版(第4版)》,人民邮电出版社,2006)是一本庞大复杂的C++书籍,由三位世界级的大师Stanley B. Lippman、Josée LaJoie、Barbara E. Moo合力打造。虽然它的书名可以翻译为《C++入门》(脚注:primer,初级读本、入门(书)), 但这本书真得有点“名不副实”,这本英文版有912页的厚书详细地介绍了C++的方方面面和点点滴滴。然而,阅读C++ Primer这本讲解地很深入的教程的确也不需要什么准备知识。不过由于这本书的复杂性,读完Essential C++做基础再读本书却是更多人的选择。如果您想从零开始深入的学习C++,或者您在学习C++的道路上遇到了什么疑难,C++ Primer肯定会帮助您。另外,本书目录和正文中关于名词术语的中英文对照就是参照C++ Primer的附录完成的。
《Accelerated C++》(《Accelerated C++中文版》,中国电力出版社,2003)是另一种风格的C++教程。两位作者Andrew Koenigh和Barbara E. Moo是C++圈子里少见的夫妇搭档,Barbara的参与给本书带来了一种清新细腻的女性化风格。这本书同样也是适用于零基础的读者,同样轻薄短小,但却从最基础的程序语句一路讲到了STL的使用,知识密集度极高,并有很多例子。正如书名所说的,此书极有加速度(accelerate)。书中的某些习题也颇有难度、值得思考。但要注意的是据说本书的中文版(我没看过)的翻译有许多微瑕,请谨慎购买。
最后额外说一句,我在互联网上得到消息说C++之父Bjarne Stroustrup正在写一本C++大学教程。相信这个世界上对C++的理解没有人比Stroustrup更透彻,他的C++着作想来应当质量极高。如果这本书创作完成并出版了的话,相信会是给C++入门者不可多得的教材。
Ivor Horton's Beginning ANSI C++: The Complete Language
Problem Solving with C++: The Object of Programming
C++ Primer Plus
Professional C++
Absolute C++
C++ How to Program
You Can Do It: A Beginner's Introction to Computer Programming
上面给出书名的几本书是我推荐的C++教程的第二梯队,它们大部分是近两年才出版的新书,体现了最新的C++教学方法研究的成果。但事实上我并未完整阅读过这些新出的入门书籍,它们入选这个清单是因为它们在C++这个圈子里的名气。关于这些书的评价我参考了很多负责任的书评,并选择性地阅读了这些书的某些部分以进一步核实,这些评价应该是客观、中肯的。
骄傲的Ivor Horton将自己的名字写入书名《Ivor Horton's Beginning ANSI C++》(《C++入门经典(第3版)》,清华大学出版社,2006)。而据说这本经典的C++教程滋养了无数C++程序员。这本书的特点是结构严谨、内容详实,具有“学院派”一丝不苟的风格。若您的学习习惯是一点一点的建立一个严密的知识体系,那么本书很适合您。
《Problem Solving with C++》(《C++面向对象程序设计(第5版)》,清华大学出版社,2005)是Walter Savitch教授根据教学大纲精心编写的着作。它的特点是采用了很多便于读者巩固所学知识的教学特征、在网站上提供了许多课件类的支持材料,十分适宜于在课堂上进行双语教学。它的一大特色是可以自主决定主题的学习顺序,具有面向学生的易用性。
《C++ Primer Plus》(《C++ Primer Plus(第五版)中文版》,人民邮电出版社,2005)享有“程序员和开发人员学习C++的完整教程”的美誉。可见它面向的读者群是“程序员和开发人员”,这当然会影响它的写作风格和侧重点,也就是这本书可能适用于有一定基础、至少学过一门编程语言(如Pascal)的人群。如果您的目标与此书的读者群接近,那么这本书很适合您。
《Absolute C++》(《完美C++教程(第1版)》,清华大学出版社,2005)的作者也是创作了多本畅销书的Walter Savitch。它的编排特色是循序渐进、介绍了统一建模语言(UML)和模式以体现软件工程领域的最新趋势、特别设立了“提示”和“陷阱”两个小节。它似乎是与《Problem Solving with C++》相补充、适合于自学的一本教材。
《C++ How to Program》(《C++编程金典(第三版),清华大学出版社,2002)是畅销书作家Harvey M. Deitel和Paul J. Deitel两位父子的作品。虽然我并不相信这本书像宣称的那样是“全球使用最广泛的C++经典程序设计教材”,但这本书的确也被很多人所推崇和使用。其特点有注重案例分析、广泛使用了UML图等,分布在各章的“对象思想”、“案例分析”、“常见编程错误”、“良好编程习惯”是其特色部分。另外,据说书中的自测和练习很有水准。
《You Can Do It!》(《You Can Do It——C++编程新手互动教程》,人民邮电出版社,2005)的作者Francis Glassborow是一位很有性格的C++专家,他曾对很多负有盛名的C++入门类教材进行过不留情面的批评,而他本人操刀创作的这本C++教材却在出版之后大受好评。这本书的最大特色是作者在写作过程中利用本书对一位从未接触过计算机编程的家庭妇女Roberta进行了从零开始的C++教学,保证那位家庭妇女按照本书提供的内容能够达到作者设置的目标,如果达不到目标则会重写相应的部分。(注:这很像白居易的做法,不是吗?)Roberta阅读后的反馈意见和疑问以及作者详细的解答也包含在书中,相信同样第一次学C++的您很有可能会对这些内容感同身受。
关于C++语言入门教程的介绍就到这里。你可能会产生疑问:为何没有介绍任何一本以中文写作的C++入门教程?这样除去了那一层翻译的“隔膜”,不是更有助于初学者理解吗?事实上,国内对于C++教学的研究水平特别是教材的水准与国外差距太大。例如国内大学课堂上用的那些C++教材,它们的编写思路陈旧甚至僵化,没有一本能真正令人满意。这些教材几乎都是将C++作为“更好的C”来理解和讲述。(脚注:这个理解在1985年之前还是基本正确的。那时,模板、异常处理,还有更激动人心的STL等都还没有成为C++的一部分。然而,随着时间的推移,在拥有了众多用C根本无法模拟或实现的特性之后,C++已经全然成为一门新的语言,C只成为了C++相当小的一个子集。)对于C++最重要的区别于其它编程语言的特性——模板,这些教材中最多是“言简意赅”地提到了一下;而C++最强大的武器——STL,这些教材中根本题都未提。也就是说,先不论这些教材的质量如何,它们中没有一本能做到全面、完整地介绍C++!