第一章 概述

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. .SO 出现 undefined reference

    查看本SO文件依赖哪些其他的SO文件: readelf -d ldd undefined reference 涉及的问题是  主程序及静态库不能定位地址 undefined symbol 说的问题是动 ...

  2. Domj4读取xml文件

    节点: Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点 标签: Element Document.getRootElement(); //获取xm ...

  3. MD5加密字符串-备用

    @interface NSString (MyExtensions) - (NSString *) md5; @end @implementation NSString (MyExtensions) ...

  4. Ftp协议Socket实现

    原来用WebRequest来传输文件,被人鄙视了.就弄个Socket版的,支持Active,Passive模式. 带事件日志,有时间的人可以拿去做C#版的flashfxp. public class ...

  5. IE中对于stylesheet的个数限制

    对于IE6-9: 1.样式规则最多只能有4095个,多于这个数目的会被忽略: 2.样式表(通过@import, <link> 或 <style>)最多可以有31个(总和),多于 ...

  6. Cracking the coding interview--Q1.2

    原文 Implement a function void reverse(char* str) in C or C++ which reverses a null-terminated string. ...

  7. linux awk浅析(转)

    Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将 ...

  8. word 生成目录

    生成目录: (1)Ctrl+End,到达文档的最后一页: (2)"插入"菜单--引用--索引和目录(此时出现索引和目录对话框): (3)单击"目录"选项卡 a. ...

  9. 关于我们 HerlMax(赫马克斯),奢侈品顶级服装高级定制品牌!

    关于我们 HerlMax(赫马克斯),奢侈品顶级服装高级定制品牌! HerlMax品牌拥有着纯正悠远的意大利高级定制文化,带着对神秘东方的向往,荣耀登入中国市场.

  10. Mac OS X Shell 脚本和终端命令

    系统 重启 Mac OS X: 1 shutdown - r now 关闭 Mac OS X: 1 shutdown now 电源管理/省电 获取当前电源管理设置的信息 1 pmset -g 设置显示 ...