第一章 概述

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目的归纳

C++程序设计教程学习(1)-第一部分 编程基础的更多相关文章

  1. Jquery真的不难~第一回 编程基础知识

    Jquery真的不难~第一回 编程基础知识   回到目录 前言 说Jquery之前,先来学习一下Javascript(以后简称为JS)语言中的基础知识问题,其时对于每种编程语言来说基础知识都是大同小异 ...

  2. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

  3. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  4. C++程序设计教程学习(0)-引子

    回想一下从事C++相关开发工作已经有4年,主要从事基于MFC.Duilib等GUI框架开发进行windows应用程序开发,还涉及了一些开源的项目.但是真的谈起这门语言或多或少都会有些心虚,关于C++的 ...

  5. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  6. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  7. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  8. Nodejs 菜鸟教程学习-创建第一个应用

    注:为了解学习,都是参照http://www.runoob.com/nodejs/nodejs-tutorial.html书写,做下笔记. 对于Nodejs开发来说,在开发一个应用时,我们不仅仅是实现 ...

  9. C++学习笔记第一天:基础

    前言 N年前学的C,经过VB.JAVA.JS.C#等后辈的轮番蹂躏,当初学的那点儿东西早就还给老师了 现在有了在桌面端实现 Native + Web 的初衷,需要利用CEF开源组件来封装这个Nativ ...

随机推荐

  1. PHP iconv()编码转换函数用法示例

    PHP iconv()字符编码转换函数的用法,iconv()函数,在php5中是内置的,语法格式:iconv("UTF- 8","GB2312//IGNORE" ...

  2. centos 安装RAR

    根据系统的情况下载rarlinuxx64版本wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gzx86版本wget http://www.r ...

  3. 【结构型】Facade模式

    外观模式主要意图是为子系统提供一个统一的接口,从而使用用户对子系统的直接依赖中,解耦合出来.Facade主要是通过为子系统统一封装个入口一样,原先用户对子系统的接口.类等都是直接访问,现在要通过Fac ...

  4. oracle 数据库连接的四种方式

    Oracle Thin JDBC Driver驱动程序包名:ojdbc14.jar.ojdbc6.jar驱动程序类名: oracle.jdbc.driver.OracleDriverJDBC URL: ...

  5. Activity之间切换使用系统内置动画

    例如: startActivity(intent); overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out) ...

  6. .OCX、.dll文件注册命令Regsvr32的使用

    1.打开文件,打开需要注册的OCX文件或dll文件,2.然后根据需要进行OCX文件或DLL文件的注册和反注册 DLL.OCX注册方法--文件Regsvr32用法及情况介绍 使用过activex的人都知 ...

  7. linux串口驱动分析——打开设备

    串口驱动是由tty_driver架构实现的.一个应用程序中的函数要操作硬件,首先会经过tty,级级调用之后才会到达驱动之中.本文先介绍应用程序中打开设备的open函数的整个历程. 首先在串口初始化中会 ...

  8. [LeetCode] 147. Insertion Sort List 解题思路

    Sort a linked list using insertion sort. 问题:实现单向链表的插入排序. 这是比较常规的一个算法题目. 从左往右扫列表,每次将指针的下一个元素插入前面已排好序的 ...

  9. shell中的替换

    shell中如果存在一些特殊的字符,就需要进行替换,可进行命令替换.变量替换.转义替换 1.转义字符的替换 shell中包含以下的转移字符 \a   响铃警报\\   反斜杠 \b  退格(删除键) ...

  10. IOS设计模式学习(18)模板方法

    1 前言 模板方法模式是面向对象软件设计中一种非常简单的设计模式.其基本思想是在抽象类的一个方法定义“标准”算法.在这个方法中调用的基本操作由子类重载予以实现.这个方法成为“模板”.因为方法定义的算法 ...