回 帖 发 新 帖 刷新版面

主题:C语言的学习方法之我见

 
  [url=http://www.programfan.com/club/post-261082.html]祝贺C/C++软件被国家级规划教材指定为实验软件和获得2007年安阳市科技进步二等奖[/url]              
              
    [color=000080][size=5]C语言的学习方法之我见[/size][/color]

    1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习,如果你刚开始学C语言可参考软件中的《C语言入门教程》。

    2.按照《C语言程序设计入门学习六步曲》进行上机练习,点击查看C语言程序设计入门学习六步曲[url]http://www.programfan.com/club/showbbs.asp?id=191578[/url]

    3.在上机练习时要养成良好的编程风格。请看下面的[color=FF0000]C语言编程分格[/color]
    
    4.积极参加C、C++兴趣小组(如编程爱好者网站的兴趣小组),养成和老师与同学交流习惯,从而相互收益。[color=FF0000]有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。[/color]

    5.及时总结自己的学习经验,养成写C语言日记的习惯。在Turbo C/C++ for windows 集成实验与学习环境中编程日记功能,可以很方便地记录你C语言的学习历程。
    
    6.从网上或教材上找一个自己感兴趣的题目([color=0000FF]选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理[/color])进行实战训练,提高自己的C语言综合应用能力。

    [b]7.由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等知识的基本应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、VC或C++Builder就像空中楼阁,是不现实的。[/b]


   [img]http://www.jiaminsoft.com/tcvc3.jpg[/img]

   使用《C/C++程序设计学习与实验系统》可以很方便地编写风格良好的程序来。软件有智能排版功能,上图是只输入程序和回车键后的效果,而不需要输入空格。    

                        [size=3] [color=0000FF]C语言编写风格[/color][/size]

    当开发人员把C语言程序写的越来越长的时候,他们发现维护这些程序需要花更多的功夫去读以前所编写的程序。保持一种良好的编码风格,对于一个开发团队或者自主开发者都是一件好事情。在这里要介绍的编程风格就是为了让初学者了解C语言的一些编写风格,使自己编写的程序,可读性,移植性,可维护性等更好,这是学习C语言必须学习的一种技能。这就象我们写文章一样,段落缩进两个文字这样的风格.

 

   [b] 1、 缩进[/b]

 

  对于函数,选择,循环控制,在进入下级的程序段时,为了使结构清晰,一般将下级的程序段向后缩进一段位置。缩进的大小是为了清楚的定义一个块的开始和结束,特别是当你已经编写了很长的代码时,你会发现一个大的缩进格式使得你对程序的理解更容易,因为程序更有层次感,可以最快的找到需要查看的程序块。

  建议使用一个TAB位置(8个字节)进行缩进,有些代码编辑工具显示一个TAB位置为4个字节,这些都能使程序更清晰。现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受。回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序。总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候给你警告。这个时候,你应该修改你的程序,太多的嵌套对于程序执行的效率和易读性都是致命的杀手,可以考虑使用函数或者改变程序结构。

  int fother()

  {

      程序块

      if(...)

      {

          程序块

      }

      else

      {

          程序块

      }

 

      for(...)

      {

          程序块

      }

  }

 

    [b]2、 大括号的位置[/b]

 

  一般情况下,有下列几种书写方式:

  (1)

  if(x>y)

  {

      t=x;
            x=y;
            y=t;

  }

  (2)Kernighan和Ritchie的经典方式

  if(x>y){

      t=x;
            x=y;
            y=t;

  }

  (3)

  if(x>y)
   { 
       t=x;
       x=y; 
       y=t;
   }

  推荐使用(1)方式,很明显,这种方式能更清楚的看到程序块的开始和结束的位置。但对于很简单的程序块,也可以使用(3)方式。

 

    [b]3、 命名系统[/b]

 

  除了常用的规则,如#define 常量应全部大写,变量命名的基本规则等之外,还要养成一个良好的命名的习惯。不要使用汉语拼音命名,尽量使用英文单词,常用的缩写,下划线,数字等,这样更容易理解变量的意义。但是也要避免过长的变量名和函数名。

  当一个工程越做越大,命名可以越来越难,因为重名现象会时有发生。现在比较流行的命名规则如匈牙利命名法很好的解决了这个问题。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

  可能有些开发人员认为匈牙利命名法有些冗长,但对于开发过程中,这种命名法则可以比较系统的,彻底的解决命名问题。但对于比较小的程序,也可以使用简单的命名方式。

 

    [b]4、函数[/b]

  函数应该短小而迷人,而且它只作一件事情。它应只覆盖一到两个屏幕,并且只作一件事情,而且将它做好。

  一个函数的最大长度和函数的复杂程度以及缩进大小成反比。于是,如果你已经写了简单但长度较长的的函数,而且你已经对不同的情况做了很多很小的事情,写一个更长一点的函数也是无所谓的。

  然而,假如你要写一个很复杂的函数,而且你已经估计到假如一般人读这个函数,他可能都不知道这个函数在说些什么,这个时候,使用具有描述性名字的有帮助的函数。

  另外一个需要考虑的是局部变量的数量。他们不应该超过5-10个,否则你有可能会出错。重新考虑这个函数,将他们分割成更小的函数。人的大脑通常可以很容易的记住7件不同的事情,超过这个数量会引起混乱。你知道你很聪明,但是你可能仍想去明白2周以前的做的事情。

 

   [b] 5、 注释[/b]

 

  注释一般采取的两种方式:对一个程序块注释和对一行程序注释。

  /*比较x,y大小*/

  if(x>y)

  {

      t=x;
            x=y; 
            y=t; /*交换x,y*/

  }

  注释是一件很好的事情,但是过多的注释也是危险的,不要试图区解释你的代码是注释如何如何的好。你应该将代码写得更好,而不是花费大量的时间去解释那些糟糕的代码。

  通常情况下,你的注释是说明你的代码做些什么,而不是怎么做的。而且,要试图避免将注释插在一个函数体里。假如这个函数确实很复杂,你需要在其中有部分的注释,最好还是把复杂的函数拆分成几个简单的函数。也可以将注释写在函数前,告诉别人它做些什么事情,和可能为什么要这样做。

 

    [b] 6、 空格与空行[/b]

 

  不要让自己的程序过于拥挤,这样同样影响可读性,善于使用空格区分一句程序中的变量,符号,表达式等,使他们对照整齐或者更清晰。善于使用空行区分程序块。

  例如:

  name = "young";

  age = 21;

  college = "ZIT";

  例如:

  if ( (x>100) || (x<0) )

 

   [b] 结束语[/b]

 

  对于这些约定俗成的风格,不一定非要严格的去使用,你也可以有自己独特的风格。但是在团队开发时,一定要统一例如命名系统等主要的风格,这样团队成员协同工作能达到一个最好的效率。[color=FF0000]记住一点,我们的目的应该是写出可读性,移植性,可维护性等更好的程序。[/color]



                  [color=0000FF][url=http://www.jiaminsoft.com/]更多的学习方法请访问作者的网站[/url][/color]

回复列表 (共31个回复)

11 楼

大哥不吝赐教!!!!!!!!!!!!!1
     小弟记住拉!!!!!!!!!


大哥果然高手!!!!!!!!!!!!!11

12 楼


   楼顶说的好!好好支持一下。

13 楼

坚持,方法,毅力并重...

14 楼

好贴

15 楼

最好学习C的方法就是不从它学起.
学学pascal?或者从Java开始.

我推荐从Python开始.

16 楼

人家不是说的很清楚了么,这样的人,...

17 楼

多谢指点,正在学习中

18 楼

不错.学习再学习

19 楼

支持这类文章多发表,给初学者好的启示!

20 楼


这类文章支持~!给初学者好的启示[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册