C++程序设计教程学习(1)-第一部分 编程基础
第一章 概述
C++到底难不难学?没有学不会的事情
1.1 程序设计语言
语言
编程语言 人和计算机交流的工具,群体扩大,人人间交流过程描述与信息表达的工具
机器语言,汇编语言,高级语言
1.2 C++简史
1.3 C++
褒贬C
计算机应用范围的扩大和编程规模的扩大,可维护性、可扩展性、安全性要求。提出程序设计语言应该具有数据类型的扩充能力,基于数据类型和面向数据类型的编程语言不断出现。以程序员自己定义或设计数据类型的方式将复杂结构的数据进行系统的组织,统一的管理,以使程序组织合理,算法设计简单易懂。
C继承者
C++既可以进行过程化编程,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计,并正在完善以模板为特点的泛型程序设计。 C++是一种混合型程序设计语言,可以采用程序设计方法,进行各种目的之编程。不放弃高效运行的实用性特征,而又致力于提高大规模程序的编程质量,提高程序设计语言的问题描述能力。
标准C++
标准C++与程序员更紧密的关系是系统的可移植性,采用标准C++编程可在不同的标准C++编译器上得到在不同计算机系统中运行出同样结果的机器程序。程序员可利用标准库。标准C++工具:windows:C++ Bulider6.0以上,VisualC++.NET以上,Linux:G++3.0 、Borland C++ Kylix3.0及以上
1.4 C++编程流程
编程过程
编程语言分为解释型和编译型,解释型没有编译和连接的中间环节,方便执行但无法离开解释器现场,需要不断交互所以性能低。C++编程过程,编辑、编译、链接、调试
最小样板程序
编程风格
1.5 程序与算法
程序
不同主体或不同状态性能有差异,追求的是各个抽象层次的编程,追求编程方法的实效性。这意味这“学会计算机语言,看得懂语法,了解了语言的描述方法”,还是不够的,它和熟练运用计算机语言,能用语言高效、正确地描述问题、解决问题是有天壤之别的。
- 算法
程序的动作序列包含了对数据的存储访问和算术运算。对数据的合理描述、组织、存放和读取,关系到程序运行的和高效。
目的性:算法是有求节目的之动作序列,必须有运算结果
抽象性:算法离不开数据结构,比具体的程序设计更超脱,抽象层次更高一些,不在乎实现语言
研究性:描述算法的目的是沟通人们的是想,而不是实现,通过语言实现的程序来验证算法其资源占用与性能各项指标
编程与结构(Programming & Structures)
编程强调全方位,具体问题请具体分析,编程当然是为了解决计算问题,计算问题强调算法,程序设计也就是在一定的抽象层次上的算法计算。这里的抽象层次理解为数据的描述方式。大量数据处理,编程问题含有大量纵横交错的数据时,意识到数据组织和数据结构的重要性,数据存在的形式必须脱离程序。程序=算法+数据结构。编程中数据结构的描述应相对算法而独立。针对算法事实上与数据相分离,如果数据由数据结构来描述,算法就可以以数据结构为依托,通过数据结构来访问数据,从而简化算法和提高逻辑清晰性。
从动态性上说:程序仍然是计算机中的过程运行体,即操作系统中的的进程。
从静态性上说:程序不再是单纯的过程体(操作序列)了,不再是单纯的算法了,而是算法和数据结构的有机组织。程序含有更多的数据组织描述,而数据组织描述又包含有一系列的操作。
程序所反映的操作序列依赖于抽象层次更高的数据结构,而不是直接对应于单纯空间上的原始数据。观念上程序发生了变化,带来了设计方法的进化,改变了程序的静态描述形式,动态与静态不再对应了,计算机运行的进程与人工编程的逻辑开始分离,从单纯直译进入到对程序结构的复杂分析与理解。
1.6过程化程序设计
基于过程的程序设计(Procedural-Based Programming)
从程序设计的角度来说,程序的概念是组织成一定形式的操作序列。过程结构中问题模型反应为过程结构模型,实际上就是功能模型。描述算法时一般总是分层次描述的,过程化设计以一系列过程的划分和组织来观察、分析和解决问题。
结构化程序设计(Structured Programing)
学习程序设计方法的根本是要解决如何组织程序的问题,也即解决算法与数据的关系问题。
- 描述任何实体的操作序列只需要三种基本控制结构:顺序,选择,循环
- 程序设计中的各个过程体和组成部分应以模块表示:每个模块其内聚性越强,外链性越少,则模块独立性越好。
- 过程化的程序设计方法:程序设计采用从上到下,逐步细分的方法展开,即过程化程序设计方法
1.7对象化程序设计
基于对象的的程序设计(Object-Based Programing)
抽象数据模型就是想要描述这一共同规范,它描述数据的组织和相关的操作,反映了问题的抽象模型。数据类型的本质是数据组织和其操作的捆绑性。程序=算法+抽象数据类型。对象是程序中抽象数据类型的具体表现。算法是基于抽象数据类型的,是作用在抽象数据类型实体化的过程中的行为序列。程序的行为表现为分层的过程结构与对象定义的集合。
面向对象的程序设计
类的层次关系也带来了对象的层次关系,它反映了同种操作的异类行为。要能准确地反应分层之后的对象集合中每个对象行为的个性,这种属性称为对象操作的多态性。程序的运行是通过抽象数据类型来表现和沟通,而抽象数据类型最后还是以对象来实例化的。
1.8目的归纳
C++程序设计教程学习(1)-第一部分 编程基础的更多相关文章
- Jquery真的不难~第一回 编程基础知识
Jquery真的不难~第一回 编程基础知识 回到目录 前言 说Jquery之前,先来学习一下Javascript(以后简称为JS)语言中的基础知识问题,其时对于每种编程语言来说基础知识都是大同小异 ...
- Objective-C 基础教程第三章,面向对象编程基础知
目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- C++程序设计教程学习(0)-引子
回想一下从事C++相关开发工作已经有4年,主要从事基于MFC.Duilib等GUI框架开发进行windows应用程序开发,还涉及了一些开源的项目.但是真的谈起这门语言或多或少都会有些心虚,关于C++的 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
blog.csdn.net/totogo2010/article/details/8205810 目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...
- Nodejs 菜鸟教程学习-创建第一个应用
注:为了解学习,都是参照http://www.runoob.com/nodejs/nodejs-tutorial.html书写,做下笔记. 对于Nodejs开发来说,在开发一个应用时,我们不仅仅是实现 ...
- C++学习笔记第一天:基础
前言 N年前学的C,经过VB.JAVA.JS.C#等后辈的轮番蹂躏,当初学的那点儿东西早就还给老师了 现在有了在桌面端实现 Native + Web 的初衷,需要利用CEF开源组件来封装这个Nativ ...
随机推荐
- 使用node-webkit开发Clover桌面客户端的一些记录(一)
首先说一说Clover. 这是一个OA产品,是我们公司组建我们技术部以来最最重要的一项工作 -- 开发企业内部使用的管理系统."Clover"这个名字是我们老大起的,拆开看是&qu ...
- eclipse 新建servlet
在mac下的eclipse新建servlet报错: 解决一: --------------------------------- 解决二: 在右键项目名称中,打开 Properties->jav ...
- jQuery 中的事件绑定与取消绑定
1:在jQuery中使用bind方法进行事件的绑定,bind方法有两个参数,第一个参数是事件的类型例如click,change,keyup,keydown,blur,focus等.第二个参数是一个回调 ...
- Android中开发Service
Service的开发分为两个步骤:定义Service和配置Service1.定义Service定义一个Service子类继承于Service2.配置Service在AndroidManifest.xm ...
- hibernate 映射<三>一对一外键键关联
bean 关系: 正向工程: 反向工程: 逆向生成步骤: 生成的xml: ... from hbm_one2one_pk.person person0_ left outer join hbm_one ...
- 技巧:Linux 动态库与静态库制作及使用详解
技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 L ...
- android 复杂的json数据解析
1.通过谷歌的Gson来进行解析: json数据:sTotalString = {"message":"success","result": ...
- 高性能Web服务器Nginx及相关新技术的应用实践-张宴
http://files.cnblogs.com/files/niaowo/%E9%AB%98%E6%80%A7%E8%83%BDWeb%E6%9C%8D%E5%8A%A1%E5%99%A8Nginx ...
- HDU_2055——刷题不要使用fflush()
Problem Description we define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, ... f(Z) = 26, f(z) = -26; G ...
- Makefile如何通过宏开关进行条件编译
在开发中经常会遇到需要条件编译一段代码,即: #ifdef DEBUG { 如果定义了DUBUG,则执行此段代码!} #else {否则执行此段代码!} 这就需要通过宏开关来进行条件编译,也就是常说的 ...