标题:【转帖】c语言学习方法
只看楼主
zmq
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2008-11-2
 问题点数:0 回复次数:13 
【转帖】c语言学习方法
经过过几天的试用,发现《C/C程序设计学习与实验系统》是一个适合初学者学习C语言的好工具。
它的优点是很多学习方法和学习经验是免费的、C/C++编译、运行程序是免费的,还有Windows 编程和实例也是免费的。
它的缺点是C语言入门教材是要收费的、中英文编译错误信息同步翻译是收费的。
我的经验:使用的免费部分练习C程序、学习它的学习经验,至于教材网上很多免费的电子书,够你用的。
我的愿望:如果哪位朋友找到破解版或注册机告诉我,好东西大家共享。

C语言编程一百例下载 https://bbs.bccn.net/thread-242479-1-1.html
软件的下载地址  http://www2.

承认我的劳动的朋友要支持我!!!!!!
反对我的朋友请不要向我扔臭鸡蛋。
—————————————————————————————————————————————————————

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

2.按照《C语言程序设计入门学习六步曲》进行上机练习,点击查看C语言程序设计入门学习六步曲

3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组【如现在的编程论坛https://bbs.bccn.net】,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

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

[[it] 本帖最后由 zmq 于 2008-11-10 21:01 编辑 [/it]]
搜索更多相关主题的帖子: c语言 转帖 学习 
2008-11-09 19:53
peng_piao
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-11-5
得分:0 
恩,很好的说明
2008-11-09 20:28
zhanxuege
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-10-22
得分:0 
确实啊
2008-11-09 20:59
zmq
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2008-11-2
得分:0 
《C语言入门学习六步区》

    初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

    一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

    二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

    三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

 出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】  

说明:在使用本方法之前要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习  

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。



使用本软件可以很方便地看着教程的例题输入程序,具体方法参见帮助部分


      初学者最容易犯的错误是:

 1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

 2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。

C语言的错误信息的形式:(下面例子是的Turobo C2.0错误信息,如图1)

错误 文件名                 行号  冒号    错误内容
 
↓      ↓                   ↓    ↓       ↓
 
Error E:\WinTc\WinTc\frist.c 5     : Function call missing) in function main
 

C语言的错误信息的形式:(下面例子是Visual C++6.0 错误信息,如图2)

文件名                  行号 冒号    错误代码 冒号 错误内容
 
↓                       ↓  ↓         ↓    ↓    ↓
 
e:\wintc\wintc\frist.c ( 5 ) : error C2143    : syntax error : missing ')' before ';'

第二步、照葫芦画瓢

在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

   例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
    printf("Hello World!\n");
    return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include <stdio.h>
void main()
{

    int i,sum=0;
    for(i=1;i<=100;i++)
    {
            sum=sum+i;
     }
     printf("sum=%d\n",sum);
}

 

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化? 

找出程序结果变化的原因,就加深了对C语句的理解。 

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

    注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句
printf("Hello World!\n");
中的;改成中文的分号;

运行一下程序,看有什么结果?

    调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

 即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

   C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

    计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

    解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。   

在软件中有50多个典型的源程序,研究它的实现方法,提高自己的程序设计能力。

第六步、研究课程设计源成序,提高C语言的综合应用能力。

      软件中有4个注释详细的课程设计源程序

C语言好学吗?
      C语言好学吗?初学者常常问这个问题。答案很简单,对C语言感兴趣,有强烈的学习欲望,就容易学。如果不感兴趣,再简单的知识也学不会。
      试想一下,现在有几个学校教学生打游戏呢?答案是否定的,可是很多学生都会打游戏,而且还经常交流打游戏的心得体会。
      如果你对C语言感兴趣,为什么不把学习打游戏的经验用到学习C语言呢?如果这样的话,C语言还难学吗?
      最后送C语言初学者一句话来共勉:首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。做任何事,何尝不是这样呢?

[[it] 本帖最后由 zmq 于 2008-11-9 21:35 编辑 [/it]]
2008-11-09 21:21
zmq
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2008-11-2
得分:0 
C语言编写风格
    当开发人员把C语言程序写的越来越长的时候,他们发现维护这些程序需要花更多的功夫去读以前所编写的程序。保持一种良好的编码风格,对于一个开发团队或者自主开发者都是一件好事情。在这里要介绍的编程风格就是为了让初学者了解C语言的一些编写风格,使自己编写的程序,可读性,移植性,可维护性等更好,这是学习C语言必须学习的一种技能。这就象我们写文章一样,段落缩进两个文字这样的风格.
&nbsp;
1、 缩进
&nbsp;
  对于函数,选择,循环控制,在进入下级的程序段时,为了使结构清晰,一般将下级的程序段向后缩进一段位置。缩进的大小是为了清楚的定义一个块的开始和结束,特别是当你已经编写了很长的代码时,你会发现一个大的缩进格式使得你对程序的理解更容易,因为程序更有层次感,可以最快的找到需要查看的程序块。
  建议使用一个TAB位置(8个字节)进行缩进,有些代码编辑工具显示一个TAB位置为4个字节,这些都能使程序更清晰。现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受。回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序。总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候给你警告。这个时候,你应该修改你的程序,太多的嵌套对于程序执行的效率和易读性都是致命的杀手,可以考虑使用函数或者改变程序结构。
  int fother()
  {
      程序块
      if(...)
      {
          程序块
      }
      else
      {
          程序块
      }
&nbsp;
      for(...)
      {
          程序块
      }
  }
&nbsp;
2、 大括号的位置
&nbsp;
  一般情况下,有下列几种书写方式:
  (1)
  if(x>y)
  {
      t=x;
&nbsp;           x=y;
&nbsp;           y=t;
  }
  (2)Kernighan和Ritchie的经典方式
  if(x>y){
      t=x;
            x=y;
&nbsp;           y=t;
  }
  (3)
  if(x>y) { t=x; x=y; y=t;}
  推荐使用(1)方式,很明显,这种方式能更清楚的看到程序块的开始和结束的位置。但对于很简单的程序块,也可以使用(3)方式。
&nbsp;
3、 命名系统
&nbsp;
  除了常用的规则,如#define 常量应全部大写,变量命名的基本规则等之外,还要养成一个良好的命名的习惯。不要使用汉语拼音命名,尽量使用英文单词,常用的缩写,下划线,数字等,这样更容易理解变量的意义。但是也要避免过长的变量名和函数名。
  当一个工程越做越大,命名可以越来越难,因为重名现象会时有发生。现在比较流行的命名规则如匈牙利命名法很好的解决了这个问题。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
  可能有些开发人员认为匈牙利命名法有些冗长,但对于开发过程中,这种命名法则可以比较系统的,彻底的解决命名问题。但对于比较小的程序,也可以使用简单的命名方式。
&nbsp;
4、函数
  函数应该短小而迷人,而且它只作一件事情。它应只覆盖一到两个屏幕,并且只作一件事情,而且将它做好。
  一个函数的最大长度和函数的复杂程度以及缩进大小成反比。于是,如果你已经写了简单但长度较长的的函数,而且你已经对不同的情况做了很多很小的事情,写一个更长一点的函数也是无所谓的。
  然而,假如你要写一个很复杂的函数,而且你已经估计到假如一般人读这个函数,他可能都不知道这个函数在说些什么,这个时候,使用具有描述性名字的有帮助的函数。
  另外一个需要考虑的是局部变量的数量。他们不应该超过5-10个,否则你有可能会出错。重新考虑这个函数,将他们分割成更小的函数。人的大脑通常可以很容易的记住7件不同的事情,超过这个数量会引起混乱。你知道你很聪明,但是你可能仍想去明白2周以前的做的事情。
&nbsp;
4、 注释
&nbsp;
  注释一般采取的两种方式:对一个程序块注释和对一行程序注释。
  /*比较x,y大小*/
  if(x>y)
  {
      t=x;
&nbsp;           x=y;
&nbsp;           y=t; /*交换x,y*/
  }
  注释是一件很好的事情,但是过多的注释也是危险的,不要试图区解释你的代码是注释如何如何的好。你应该将代码写得更好,而不是花费大量的时间去解释那些糟糕的代码。
  通常情况下,你的注释是说明你的代码做些什么,而不是怎么做的。而且,要试图避免将注释插在一个函数体里。假如这个函数确实很复杂,你需要在其中有部分的注释,最好还是把复杂的函数拆分成几个简单的函数。也可以将注释写在函数前,告诉别人它做些什么事情,和可能为什么要这样做。
&nbsp;
5、 空格与空行
&nbsp;
  不要让自己的程序过于拥挤,这样同样影响可读性,善于使用空格区分一句程序中的变量,符号,表达式等,使他们对照整齐或者更清晰。善于使用空行区分程序块。
  例如:
  name = "young";
  age = 21;
  college = "ZIT";
  例如:
  if ( (x>100) || (x<0) )
&nbsp;
结束语
&nbsp;
  对于这些约定俗成的风格,不一定非要严格的去使用,你也可以有自己独特的风格。但是在团队开发时,一定要统一例如命名系统等主要的风格,这样团队成员协同工作能达到一个最好的效率。记住一点,我们的目的应该是写出可读性,移植性,可维护性等更好的程序。
2008-11-09 21:22
zmq
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2008-11-2
得分:0 
C语言程序设计基本步骤
程序设计方法包括三个基本步骤:
第一步:  分析问题。
第二步:  画出程序的基本轮廓。
第三步:  实现该程序。 (1) 编写程序; (2) 测试和调试程序;,(3) 提供数据打印结果。
下面, 我们来说明每一步的具体细节。
第一步: 分析问题
在这一步, 你必须:
a.       作为解决问题的一种方法, 确定要产生的数据(输出)。 作为这一子步的一部分, 你应定义表示输出的变量。
b.       确定需产生输出的数据(称为输入), 作为这一子步的一部分,  你应定义表示输入的变量。
c.       研制一种算法, 从有限步的输入中获取输出。 这种算法定义为结构化的顺序操作, 以便在有限步内解决问题。就数字问题而言, 这种算法包括获取输出的计算, 但对非数字问题来说, 这种算法包括许多文本和图象处理操作。   
第二步: 画出程序的基本轮廓
在这一步, 你要用一些句子(伪代码)来画出程序的基本轮廓。每个句子对应一个简单的程序操作。对一个简单的程序来说,  通过列出程序顺序执行的动作, 便可直接产生伪代码。然而, 对复杂一些的程序来说, 则需要将大致过程有条理地进行组织。对此, 应使用自上而下的设计方法。
当使用自上而下的设计方法时, 你要把程序分割成几段来完成。列出每段要实现的任务, 程序的轮廓也就有了, 这称之为主模块。当一项任务列在主模块时, 仅用其名加以标识, 并未指出该任务将如何完成。这方面的内容留给程序设计的下一阶段来讨论。将程序分为几项任务只是对程序的初步设计。整个程序设计归结为下图所示的流程图1.。


如果把主模块的每项任务扩展成一个模块, 并根据子任务进行定义的话, 那么, 程序设计就更为详细了(见图2.)。这些模块称为主模块的子模块。程序中许多子模块之间的关系可象图2.中那样归结为一张图。这种图称为结构图。
要画出模块的轮廓, 你可不考虑细节。如果这样的话, 你必须使用子模块, 将各个模块求精, 达到第三级设计。继续这一过程, 直至说明程序的全部细节。这一级一级的设计过程称为逐步求精法。在编写程序之前, 对你的程序进行逐步求精, 对你来说, 是很好的程序设计实践, 会使你养成良好的设计习惯。
我们则才描述了程序设计中自上而下的设计方法。实际上就是说, 我们设计程序是从程序的"顶部"开始一直考虑到程序的"底部"。
第三步: 实现该程序
程序设计的最后一步是编写源码程序。 在这一步, &nbsp;把模块的伪代码翻译成 C语句。
对于源程序, 你应包含注释方式的文件编制, 以描述程序各个部分做何种工作。此外, 源程序还应包含调试程序段, 以测试程序的运行情况, 并允许查找编程错误。一旦程序运行情况良好, 可去掉调试程序段, 然而,  文件编制应做为源程序的固定部分保留下来, 便于你或其他人维护和修改。

编写一个C程序需要这么麻烦吗?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编写一个简单程序当然不需要这么麻烦,但是这是训练你解决问题的方法,如果你坚持这么做你以后会感到收益非浅,因为我们学程序设计目的是进行软件开发,而现在早已不再是求伯均、王江民软件开发个人英雄时代,而是软件开发的规模化时代,软件设计的规范化是每一个程序员应具备的基本技能。

&nbsp;&nbsp;&nbsp;&nbsp;

[[it] 本帖最后由 zmq 于 2008-11-9 21:28 编辑 [/it]]
2008-11-09 21:27
名扬低调
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2008-10-12
得分:0 
写得非常不错,可总感觉有做广告的嫌疑

无声的坚持或许沉默也是一种执着.!  By:名扬低调
变量的指针和指向变量的指针变量.!
2008-11-10 10:21
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
广告无所谓,只要内容对初学者有帮助就好

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-10 10:45
zmq
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2008-11-2
得分:0 
经过过几天的试用,发现《C/C程序设计学习与实验系统》是一个适合初学者学习C语言的好工具。
它的优点是很多学习方法和学习经验是免费的、C/C++编译、运行程序是免费的,还有Windows 编程和实例也是免费的。
它的缺点是C语言入门教材是要收费的、中英文编译错误信息同步翻译是收费的。
我的经验:使用的免费部分练习C程序、学习它的学习经验,至于教材网上很多免费的电子书,够你用的。
我的愿望:如果哪位朋友找到破解版或注册机告诉我,好东西大家共享。
2008-11-10 20:52
hbzj01
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-11-1
得分:0 
虽然部分收费,但免费的东西也有不少看头
2008-11-10 21:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-243259-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.570364 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved