程序设计,就是这样——如何学习程序设计

有许多网友都曾迷惑地问我:“怎么样才能学好程序设计?”,这不是一两句话能说清楚的,于是我就写了这篇文章,给广大爱好者一个能解惑的方法,无论你是什么样的“鸟”相信都能在这篇文章里找到你想要的
            什么是程序设计
话就从一个著名的公式说起:程序设计=数据结构+算法                         
每当我写下这个公式的时候,心中总有一种新的感悟,可是就这个程序界尽人皆知的公式却难倒了一大批想和Bill·Gates一争高下的朋友,下面我为大家解剖这个公式:                 
“程序设计”说白了就是大家所谓编程,先不管这个词中有什么深刻的内涵,先看看等式右面的这两个名词。
按照官方的定义:数据结构即非数值计算的程序设计问题中的计算机的操作对象以及它们之间的关系和操作;算法是对特定问题求解步骤的一种描述,是对指令的有序序列。官方的解释就是经典,可是我们看了却更糊涂了。别急,听我给大家解释。
程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你若想盖房子首先必须有原料(数据结构),但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸(算法)上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,你使用的编译工具(如Jave /C/Basic/Pascal等)中有各种功能语句或基本结构(如Read/Write/Real/Boolean等),它们不会自动排列成你要的程序代码。你得按照程序规定的功能去编写,而程序的功能是实现就是算法的具体体现。所以通俗地说:你必须按照特定的规则,把特定的功能语句和基本结构按照特定的顺序排列起来,形成一个有特定功能的程序,这就是:程序设计=数据结构+算法。                                                     数据结构是程序设计这座大厦的基础,没有基础,无论设计有多么高明,这座大厦不可能建造起来的。算法则是程序设计的思想,它的灵魂!没有灵魂的程序不能叫程序,只是一堆杂乱无章的符号而已。在程序设计中,数据结构就像物质,算法就是意识。这就像哲学上说的:意识是依赖与物质而存在的,物质是由于意识而发展。双方是相互依存、缺一不可的!
数据结构内容不多仅仅有几个系统自带的基本结构(像顺序结构、分支结构、循环结构、函数过程)数据类型(整型、实型、布尔、字符等)和用户定义的高级点的数据结构(数组、集合、文件、指针(队列、栈、树、图等)······)就这么多。可是算法却不同了,它是多中多样的!它可以让你让数据以你想要的方式排列(当然要符合语法和功能要求^_^)。再打个比方,数据结构是人体的各种组织、器官,算法则是人的思想。你可以用你的思想去支配你身体的各个可以运动的器官随意运动。如果,你想去取一个苹果,你可以走过去,也可以跑过去,只要你想,你甚至可以爬过去。但是无论如何,你你的器官还你的器官(没有变),目的还是同一个目的(取苹果),而方式却是随心所欲!这就是算法的灵活性,不固定性。因此可以这样说:数据结构是死的,而算法是活的!现在明白许多了吧!GO ON
            怎样学习程序设计
上面说了许多数据结构的在程序设计中重要性,所以努力学习好数据结构是学好程序设计的第一步,也是关键的一步。你初学起来一定会觉得难,枯燥(其实我当时也是这么想的 ^_^),什么标准文件、标准类型、标准函数、标准过程搞的你烦不胜烦。于是,就有许多初学者就厌倦了,停滞不前了,退缩了。你若是想编好程序的话就想:难道就这么一点点小困难就难倒我了吗?我还要挑战Bill·Gates呢?我一定能行,相信自己,一定会闯过这一关的!这样以来,你就具备了程序员最基本的素质——毅力。这一点是程序员必备的,否则在后面开发程序的漫长时间里,你会熬不住的。而且只有这样你才能静下心来学习。这一端时间没有什么捷径,只有多看书、多练习,把所有结构和类型的用法都找掌握牢固。不懂就要问,可以去 CSDN技术社区 。最好呢,有一位老师指引,这样比自己在这条路是摸黑前进强多了,而且往往还事半功倍。切记!只要跨出了第一步,以后就容易多了,万事开头难嘛!一定要坚持,当你过了这一端时间以后,你就发现程序设计根本没有你想象的那样难。当你把所有的东东都学会时,程序设计的大门已经向你敞开了一扇,而另一扇就是······ 
算法,这个是程序设计的重点,也是难点。许多菜鸟和老鸟的区别主要在对算法掌握的熟练程度上面。有许多朋友曾这样问我:“我数据结构上面的都学会了,也知道该怎么样用,可是我为什么还是在编程时,不知道该怎样用呢?其实,这就是缺少算法思想的一个具体表现。并不是学好了数据结构就会编程了。算法是灵活多变的,它不像数据结构那样有固定的形式。算法是不固定性就决定了它的特点,你不可能把所有的算法都学会,因为它是无穷尽的。但是你要是能把自己学的有限的算法融会贯通了,那你就了不起了。就好象你只学会了1、2、3这三个数,但是你可以组成12、23、32、123······。所以算法这条路既长有短,既难又易。 
学习好算法的方法不少,在此详细的给大家举几个例子。 
首先,你要养成一个良好的程序设计风格和习惯。这也分许多种。其中最重要的是养成自上向下逐步求精的程序设计思想和方法。怎样才是自上向下逐步求精的程序设计呢。举个例子。有这样一个问题:已知三角形的两边及夹角,求第三边及面积。
现在,当你看到这个问题是,你不要立即下手去编写,而是要思考一下怎样才能求解(算法),然后把她写下来以免忘记。于是就写了:
一级算法:
1 输入两边的长度a、b以及夹角A                        
2 计算第三边c和面积s                             
3 输出c以及s                            
当你写完之后,你若觉得第2步不太清晰,还不能写出代码,那就继续求精。       
二级求精:
2-1、将α的角度转换为弧度;
2-2、c=sqrt(a*a+b*b-2*a*b*cos(α));
2-3、s=1/2*(a*b*sin(α))
哈哈,这样问题不就得到解决了吗?接着就可以轻松的编代码了。再仔细看看上面的步骤:先写出一级算法,如果觉得由此还是得不到源代码,或者是其中有一步还有很多步骤要写,那么就继续求精,直到你认为可以很清晰的写出代码为

This entry was posted in 程序设计 and tagged . Bookmark the permalink.

11 Responses to 程序设计,就是这样——如何学习程序设计

  1. HOHO says:

    接着写啊!我等着看呢!

  2. jave says:

    恩,还不错,有前途!继续啊!

  3. lieo says:

    大哥,写的不错!我支持你

  4. 西风惊云 says:

    看过了,很好,数据结构是基础,算法是思想,灵魂.写的很不错.

  5. davelv says:

    终于写完了!

  6. Liangent says:

    [quote]
    <br>1、一台电脑。586以上就可以,不用太高,除非你设计大型软件,我想像我们这样的初学者用这样的电脑已经足够了,也就是说,你要你有电脑就能编程。当然,机子配置越高越好了。(必备)
    <br>[/quote]
    <br>[quote]
    <br>1、一个趁手的编译器,要编好程序,顺手的工具是必不可少的。要是一开始你想要简单易用的工具,建议使用VB、TC(Turbo C)、TP(Turbo Pascal)等等。你若是喜欢功能强大的IDE(Integrated Development Environment集成开发环境)那么就推荐使用VB.NET、BCB(Borland C++ Builder)、Borland Delphi、Eclipse(Java)…… (必备)
    <br>[/quote]
    <br>又要我们用的电脑“不用太高”,又让我们用VB.NET(应该是VS.NET)、Eclipse… 我试过在一台586上面运行Eclipse3.1有多慢,你还写“必备”的…

  7. davelv says:

    ~~~~~~~

回复 lieo 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注