第一章 概述

C++到底难不难学?没有学不会的事情

1.1 程序设计语言

语言

编程语言 人和计算机交流的工具,群体扩大,人人间交流过程描述与信息表达的工具

机器语言,汇编语言,高级语言

1.2 C++简史

1.3 C++

  1. 褒贬C
    计算机应用范围的扩大和编程规模的扩大,可维护性、可扩展性、安全性要求。提出程序设计语言应该具有数据类型的扩充能力,基于数据类型和面向数据类型的编程语言不断出现。以程序员自己定义或设计数据类型的方式将复杂结构的数据进行系统的组织,统一的管理,以使程序组织合理,算法设计简单易懂。
  2. C继承者
    C++既可以进行过程化编程,又可以进行以抽象数据类型为特点的基于对象的程序设,还可以进行以继承和多态为特点的面向对象的程序设计,并正在完善以模板为特点的泛型程序设计。 C++是一种混合型程序设计语言,可以采用程序设计方法,进行各种目的之编程。不放弃高效运行的实用性特征,而又致力于提高大规模程序的编程质量,提高程序设计语言的问题描述能力。
  3. 标准C++
    标准C++与程序员更紧密的关系是系统的可移植性,采用标准C++编程可在不同的标准C++编译器上得到在不同计算机系统中运行出同样结果的机器程序。程序员可利用标准库。标准C++工具:windows:C++ Bulider6.0以上,VisualC++.NET以上,Linux:G++3.0 、Borland C++ Kylix3.0及以上

1.4 C++编程流程

  1. 编程过程
    编程语言分为解释型和编译型,解释型没有编译和连接的中间环节,方便执行但无法离开解释器现场,需要不断交互所以性能低。C++编程过程,编辑、编译、链接、调试
  2. 最小样板程序
  3. 编程风格

1.5 程序与算法

  1. 程序
    不同主体或不同状态性能有差异,追求的是各个抽象层次的编程,追求编程方法的实效性。这意味这“学会计算机语言,看得懂语法,了解了语言的描述方法”,还是不够的,它和熟练运用计算机语言,能用语言高效、正确地描述问题、解决问题是有天壤之别的。
  2. 算法

    程序的动作序列包含了对数据的存储访问和算术运算。对数据的合理描述、组织、存放和读取,关系到程序运行的和高效。

    1. 目的性:算法是有求节目的之动作序列,必须有运算结果

    2. 抽象性:算法离不开数据结构,比具体的程序设计更超脱,抽象层次更高一些,不在乎实现语言

    3. 研究性:描述算法的目的是沟通人们的是想,而不是实现,通过语言实现的程序来验证算法其资源占用与性能各项指标

  3. 编程与结构(Programming & Structures)

    编程强调全方位,具体问题请具体分析,编程当然是为了解决计算问题,计算问题强调算法,程序设计也就是在一定的抽象层次上的算法计算。这里的抽象层次理解为数据的描述方式。大量数据处理,编程问题含有大量纵横交错的数据时,意识到数据组织和数据结构的重要性,数据存在的形式必须脱离程序。程序=算法+数据结构。编程中数据结构的描述应相对算法而独立。针对算法事实上与数据相分离,如果数据由数据结构来描述,算法就可以以数据结构为依托,通过数据结构来访问数据,从而简化算法和提高逻辑清晰性。

    1. 从动态性上说:程序仍然是计算机中的过程运行体,即操作系统中的的进程。

    2. 从静态性上说:程序不再是单纯的过程体(操作序列)了,不再是单纯的算法了,而是算法和数据结构的有机组织。程序含有更多的数据组织描述,而数据组织描述又包含有一系列的操作。

    程序所反映的操作序列依赖于抽象层次更高的数据结构,而不是直接对应于单纯空间上的原始数据。观念上程序发生了变化,带来了设计方法的进化,改变了程序的静态描述形式,动态与静态不再对应了,计算机运行的进程与人工编程的逻辑开始分离,从单纯直译进入到对程序结构的复杂分析与理解。

1.6过程化程序设计

  1. 基于过程的程序设计(Procedural-Based Programming)
    从程序设计的角度来说,程序的概念是组织成一定形式的操作序列。过程结构中问题模型反应为过程结构模型,实际上就是功能模型。描述算法时一般总是分层次描述的,过程化设计以一系列过程的划分和组织来观察、分析和解决问题。
  2. 结构化程序设计(Structured Programing)
    学习程序设计方法的根本是要解决如何组织程序的问题,也即解决算法与数据的关系问题。
    1. 描述任何实体的操作序列只需要三种基本控制结构:顺序,选择,循环
    2. 程序设计中的各个过程体和组成部分应以模块表示:每个模块其内聚性越强,外链性越少,则模块独立性越好。
    3. 过程化的程序设计方法:程序设计采用从上到下,逐步细分的方法展开,即过程化程序设计方法

1.7对象化程序设计

  1. 基于对象的的程序设计(Object-Based Programing)
    抽象数据模型就是想要描述这一共同规范,它描述数据的组织和相关的操作,反映了问题的抽象模型。数据类型的本质是数据组织和其操作的捆绑性。程序=算法+抽象数据类型。对象是程序中抽象数据类型的具体表现。算法是基于抽象数据类型的,是作用在抽象数据类型实体化的过程中的行为序列。程序的行为表现为分层的过程结构与对象定义的集合。
  2. 面向对象的程序设计
    类的层次关系也带来了对象的层次关系,它反映了同种操作的异类行为。要能准确地反应分层之后的对象集合中每个对象行为的个性,这种属性称为对象操作的多态性。程序的运行是通过抽象数据类型来表现和沟通,而抽象数据类型最后还是以对象来实例化的。

1.8目的归纳

posted on 2014-10-21 14:41  爬坡  阅读(2219)  评论(0编辑  收藏  举报