理解程序的本质

问题:为什么会有各种各样的程序存在?程序的本质是什么?

  • 程序是为了解决实际问题而存在的,从本质而言,程序是解决问题的步骤描述。

image.png

一小步的进阶:理解实际问题
  • 确认问题类型

    • 如:数值计算,求最小值个数
  • 确认求解步骤

    • 如:打开文件,读取文件,关闭文件,计算和

问题:如何判断问题求解步骤的好坏?

实例分析:判断求解步骤的好坏

#include <iostream>

using namespace std;

long sum1(int n)
{
    long ret = 0;
    int* array = new int[n];
    
    for(int i=0; i<n; i++)
    {
        array[i] = i + 1;
    }
    
    for(int i=0; i<n; i++)
    {
        ret += array[i];
    }
    
    delete[] array;
    
    return ret;
}

long sum2(int n)
{
    long ret = 0;
    
    for(int i=1; i<=n; i++)
    {
        ret += i;
    }
    
    return ret;
}

long sum3(int n)
{
    long ret = 0;
    
    if( n > 0 )
    {
        ret = (1 + n) * n / 2;
    }
    
    return ret;
}

int main()
{
    cout << "sum1(100) = " << sum1(100) << endl;
    cout << "sum2(100) = " << sum2(100) << endl;
    cout << "sum3(100) = " << sum3(100) << endl;
    
    return 0;
}

程序评判初探

  • 用尽量少的时间解决问题
  • 用尽量少的步骤解决问题
  • 用尽量少的内存解决问题

优秀的开发者追求高质量的代码

数据结构的历史起源

  • 1968 年由高德纳教授(Donald E.Knuth)开创
  • 同年,在计算机的学位课程中出现(必修)

image.png
主要成就

  1. ACM教授的图灵奖、软件系统将和霍泼奖
  2. 美国数学会授予Lester R.Ford奖、J.B.Priestley奖和Steele奖
  3. TEX排版软件和METAFONT字形设计软件
  4. 《计算机程序设计的艺术》等系列书籍
  5. 。。。

数据结构课程的研究范围

  • 非数值计算类型的程序问题
  • 数值间的组织和操作方式
  • 数据的逻辑结构和存储结构

历史上的经典公式:程序= 数据结构 + 算法

对于数据结构和算法的研究,语言不重要,重要的是思想

小结

  • 程序是为了解决实际问题而存在的
  • 针对同一个问题可以由多种解决方案
  • 专业程序员应该尽量追求高质量的程序
  • 数据结构课程主要研究非数值计算问题

注:
经典公式在结构化程序设计时代提出。当今计算机已在解决实际生活中的问题,而这些问题往往非常复杂,经典公式已不能很好的处理,于是面向对象程序设计方法被提出。
但经典公式在本门课程中依旧可以遵循。

以上内容参考狄泰软件学院系列课程,请大家保护原创!


TianSong
737 声望139 粉丝

阿里山神木的种子在3000年前已经埋下,今天不过是看到当年注定的结果,为了未来的自己,今天就埋下一颗好种子吧