第1课 - 进阶高手的大门

理解程序的本质

1.为什么会有各种各样的程序存在,程序的本质是什么?

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

(2)一小步的进阶:理解实际问题

  ①确认问题类型:如:数值计算,求最小值个数

  ②确认求解步骤:如:打开文件,读数据,关闭文件,计算和

2.如何判断问题求解步骤的好坏

【实例分析】

 1 /*
 2     问题:给定一个整数 n,编程求解 1 + 2 + 3 + ... + n 的和。
 3
 4     QQ交流群: 199546072
 5
 6     D.T.Software
 7 */
 8
 9
10 #include <iostream>
11
12 using namespace std;
13
14 long sum1(int n)
15 {
16     long ret = 0;
17     int* array = new int[n];
18
19     for(int i=0; i<n; i++)
20     {
21         array[i] = i + 1;
22     }
23
24     for(int i=0; i<n; i++)
25     {
26         ret += array[i];
27     }
28
29     delete[] array;
30
31     return ret;
32 }
33
34 long sum2(int n)
35 {
36     long ret = 0;
37
38     for(int i=1; i<=n; i++)
39     {
40         ret += i;
41     }
42
43     return ret;
44 }
45
46 long sum3(int n)
47 {
48     long ret = 0;
49
50     if( n > 0 )
51     {
52         ret = (1 + n) * n / 2;
53     }
54
55     return ret;
56 }
57
58 int main()
59 {
60     cout << "sum1(100) = " << sum1(100) << endl;
61     cout << "sum2(100) = " << sum2(100) << endl;
62     cout << "sum3(100) = " << sum3(100) << endl;
63
64     return 0;
65 }

(1)程序评鉴初探

  ①用尽量少的时间解决问题

  ②用尽量少的步骤解决问题

  ③用尽量少的内存解决问题

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

3.数据结构课程的历史起源

(1)1968年,由高纳德教授(Donald E.Knuth)开创

(2)同年,在计算机科学的学位课程中出现(必修

(3)高纳德的主要成就

  ①ACM授予图灵奖软件系统奖霍泼奖

  ②美国数学会授予Lester R.Ford奖、J.B.Priestley奖和Steele

  ③TEX排版软件METAFONT字型设计软件

  ④《计算机程序设计的艺术》等系列技术书籍


卷数


主要内容


第1卷 基本算法


第1章:基本概念

第2章:信息结构


第2卷 半数值算法


第3章:随机数

第4章:算术


第3卷 排序与查找


第5章:排序

第6章:查找


第4卷 组合算法


第7章:组合检索

第8章:递归


第5卷 语法算法


第9章:词法扫描

第10章:语法分析


第6卷 语言理论


第11章——还在准备中…


第7卷 编译程序


第12章——还在准备中…


Bill Gates的评价:如果你认为你是一名真正优秀的程序员……读Knuth的《计算机程序设计艺术》,如果你能读懂整套书的话,请给我发一份你的简历。

Byte的评价:这是一套集所有基础算法之大成的经典之作。当今软件开发人员所掌握的绝大多数计算机程序设计的知识都来源于此。

4. 数据结构课程的研究范围

(1)非数值计算类型的程序问题

  ①数值计算是指使用计算机求解数学问题近似解的方法与过程。数值计算主要研究如何利用计算机更好的解决各种数学问题。

  ②非数值计算指计算的对象不仅仅是数字,而是人的思维。是自然界和人类社会的一切事物,更确切地说是某些信息。如数据、文字、语言、图形、知识、事物、事物的运动过程及思维过程。例如,用计算机下棋。)

  ③数据结构研究的是非数值计算问题,即不是研究科学计算的问题。

(2)数据间的组织和操作方式

(3)数据的逻辑结构和存储结构

(4)历史上的经典公式程序 = 数据 + 算法,对于数据结构算法的研究,语言不重要,重要的是思想

5. 小结

(1)程序是为了解决实际问题而存在的

(2)针对同一个问题可以有多种解决方案

(3)专业程序员应该尽量追求高质量的程序

(4)数据结构课程主要研究非数值计算问题

时间: 2024-10-13 01:08:00

第1课 - 进阶高手的大门的相关文章

数据-第1课-进阶高手的大门

第1课-进阶高手的大门 理解程序的本质 程序是为了实际的问题而存在从本质上而言,程序是解决问题的步骤描述. 问题: 怎样把大象放冰箱? (1)打开冰箱门 (2)把大象放进去 (3)关上冰箱门 Elephan* e = getElep(); int f = open("fridge"); put(f, e); close(f 首先理解实际问题 (1) 确认问题类型. 如:数值计算,求最小值个数. (2) 确认求解的步骤. 如:打开文件,读数据,关闭文件,计算和. 我们看一个求前n项和的程

第一课——进阶高手的大门

理解程序的本质程序是为了实际的问题而存在从本质上而言,程序是解决问题的步骤描述 一小步的进阶首先理解实际问题! 确认问题类型– 如:数值计算,求最小值个数 确认求解的步骤– 如:打开文件,读数据,关闭文件,计算和问题:如何判断求解步骤的好坏 通过下面的例子说明: #include <stdio.h> #include <malloc.h> long sum1(int n) { long ret = 0; int* array = (int*)malloc(n * sizeof(in

第14课 进阶面向对象(下)

1. 类之间的基本关系 (1)继承 ①从已存在类细分出来的类和原类之间具有继承关系(is-a) ②继承的类(子类)拥有原类(父类)的所有属性和行为 (2)组合 ①一些类的存在必须依赖于其它的类,这种关系叫组合 ②组合的类在某一个局部上由其它的类组成 2. 类的表示法 [编程实验]类的表示法 #include <stdio.h> struct Biology { bool living;//生命 }; struct Animal : Biology { bool movable;//可移动 vo

JVM菜鸟进阶高手之路十二(jdk9、JVM方面变化, 蹭热度)

转载请注明原创出处,谢谢! 经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章. 目前jdk9和jvm9的规范都还没有出来,很多细节估计还不清楚,基本就是通过官方介绍,看的. 所以各位看官 http://pic.cnhubei.com/space.php?uid=1079&do=album&id=808012http://pic.cnhubei.com/space.php?uid

JVM菜鸟进阶高手之路十(基础知识开场白)

转载请注明原创出处,谢谢! 最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2.3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本解决oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时 http://pic.cnhubei.com/space.php?uid=1993&do=album&id=1086558http://pic.cnhubei.com/space.php?ui

第13课 进阶面向对象(上)

日常生活中,我们都习惯于对事物进行分类,那么这种分类思想是否可以引入程序设计中呢? 面向对象的基本概念: 类和对象的意义: 一些有趣的问题: 小结: 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9563375.html

第0课 - 数据结构引言

第0课 - 课程目标(实现一个轻量级STL) 第1课 - 进阶高手的大门 第2课 - 数据的艺术 第3课 - 初识程序的灵魂 第4课 - 程序灵魂的审判 第5课 - 算法的时间复杂度 第6课 - 算法效率的度量 第7课 - 课程学习小问答 第8课 - 泛型编程简介 第9课 - 智能指针示例 第10课 - C++异常简介 第11课 - 异常类构建 第12课 - 顶层父类的创建 第13课 - 类族结构的进化 第14课 - 线性表的本质和操作 第15课 - 线性表的顺序存储结构 第16课 - 顺序存储

数据结构一

//===================================================//// //// 基本概念 //// ////===================================================//一. 进阶高手的大门(1)理解程序的本质 程序是为了实际的问题而存在的,从本质上而言,程序是解决问题的步骤描述. (实际问题==>深入分析问题==>解决问题的步骤==>将解决步骤翻译成程序) 首先理解实际问题: 1.确认问题类型,如

c#认知学习-知识点

C#的入门技术是委托.事件.消息.只有当你可以纯熟运用这三个技能的时候,才刚刚入门,此时C#的大门才算正式为你打开. 1,        comom language runtime :初级人员无视他,中级人员起码要知道他,高级人员多数要会使用其中一些应用比如security,架构师要理解原理. 2,        .netframework :这里有许多框架,会的越多越好. 3,        Base class library :这里都是基本语法你会了多少呢,想成为高手一定要全部学会,一个