文章标题

来源:互联网 发布:遭受网络攻击 损失 编辑:程序博客网 时间:2024/06/06 16:51

第一章 预备知识


  • 第一章 预备知识
    • 1 c简介
    • 2 c简史
      • 21 c语言
      • 22 c语言编程原理
      • 23 面向对象编程
      • 24 c和泛型编程
      • 25 c的起源
    • 3 可移植性和标准
      • 31 c的发展
    • 4 程序创建的技巧
      • 41 创建源代码文件
      • 42 编译和链接
    • 5 总结

1.1 c++简介

      c++融合了3种不通的编程方式:c语言代表的过程性语言,c++在c语言基础上添加的类代表的面向对象语言,c++模板支持的泛型编程.

1.2 c++简史

      20世纪70年代,c和Pascal这样的语言引领人们进入了结构化变成是滴啊,这种机制把秩序和规程带劲了迫切需要这种性质的领域中.除了提供结构化编程工具外,c还能生成简洁,快速运行的程序,并提供了处理硬件问题的能力.20世纪80年代,人们也见证了一种新编程模式的成长:面向对象编程(OOP).

1.2.1 c语言

      20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX操作系统.为完成这项工作,Ritchie需要一种语言,它必须简洁m能够生成简洁,快速的程序,并能有效地控制硬件.于是c语言因此诞生.

1.2.2 c语言编程原理

      一般来说,计算机语言要处理两个概念-数据和算法.数据是程序使用和处理的信息,而算法是程序使用的方法.c语言在最初面世时也是过程性语言,这意味着它强调的是编程的算法方面.从概念上说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作.程序名利计算机按一系列流程生成特定的结果.
      随着程序规模的扩大,早期的程序语言都会遇到组织方面的问题.例如,程序经常使用分支语句,根据某种测试的结果,执行一组或另一组指令.很多旧式程序的执行路径很混乱,几乎不可能通过程序来理解它.为了解决这种问题,计算机科学家开发了一种更有序的编程方法-结构化编程.c语言具有使用这种方法的特性.
      另一种新原则是自顶向下的设计.

1.2.3 面向对象编程

      虽然结构化编程的理念提高了程序的清晰度,可靠性,并使之便于维护,但它在编写大型程序时,仍然面临挑战.OOP提供了一种新的方法,与强调算法过程性编程不同的是,OOP强调的是数据.OOP不想过程性编程那样,试图使问题满足语言的过程性方法,而是试图让语言来瞒住问题的要求.其理念是设计与问题的本质特性相对应的数据格式.
      在c++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构.通常类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作.
      OOP程序设计方法首先设计类,他们准确地表示了程序要处理的东西.然后可以设计一个使用这些类的对象的程序.从低级组织到高级组织的处理过程叫做自下向上的编程.
      OOP编程并不仅仅是将数据和方法合并为类定义.
      设计有用,可靠的类是一项艰巨的任务,幸运的是,OOP语言使程序员在编程中能够轻松地使用已有的类.厂商提供了大量有用的类库,包括设计用于简化Windows或Macintosh环境下编程的类库.

1.2.4 c++和泛型编程

泛型编程是c++支持的另一种编程模式,它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单.不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型.

1.2.5 c++的起源

与c语言一样,c++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发除了这种语言.

1.3 可移植性和标准

      在可移植性方面存在连个障碍,其中一个是硬件.硬件特定的程序是不可移植的.第二个障碍是语言上的差异.
      c++国际标准ISO/IEC 14882:1998,该标准常被称为c++98,它不仅描述了已有的c++特性,还对该语言进行了扩展,添加了异常,运行阶段类型识别,模板和标准模板库(STL).2003年,发布了c++标准第二版(ISO/IEC 14882:2003).2001年8月批准了新标准ISO/IEC 14882:2011,该标准以前称为c++11.

1.3.1 c++的发展

      Stroustrup编写的 The Programming Language 是最初的c++事实标准.
      下一个事实是Ellis和Stroustrup编写的The Annotated C++ Reference Manual
      c++98标准新增了大量特性,其篇幅将近800页,且包含的说明很少.
      c++11标准的篇幅长达1350页,对旧标准做了大量的补充.

1.4 程序创建的技巧

  1. 使用文本编辑器编写程序,并保存到文件中,这个文件就是程序的源代码.
  2. 编译源代码.将源代码翻译为主机使用的内部语言-机器语言.包含了翻译后的程序的文件就是程序的目标代码.
  3. 将目标代码与其他代码链接起来.

1.4.1 创建源代码文件

C++实现 源代码文件的扩展名 UNIX C,cc,cxx,c GNU C++ C,cc,cxx,cpp,c++ Digital Mars cpp, cxx Borland C++ cpp Watcom cpp Microsoft Visual C++ cpp, cxx, cc Freestyle CodeWarrior cp, cpp, cc, cxx, c++

1.4.2 编译和链接

      Stroustrup实现c++时,使用了一个c++到c的编译器程序,而不是开发直接的c++到目标代码的编译器.

  1. UNIX编译和链接

    • 最初,UNIX命令CC调用cfront,但cfront未能紧跟c++的发展步伐.现在一般是自由软件.如GNU g++编译器.编译命令如下:CC spiffy.c生成.O文件.接下来,编译器自动将目标代码文件传递给系统链接程序,该程序将代码与库代码结合起来,生成一个可执行文件.只要输入执行文件名即可.a.out.
    • 可以包含多个编译源文件.代码如下:CC my.C precious.C
    • 如果有多个源代码文件,则编译器将不会删除目标代码文件.这样,如果只修改了my.C文件,则可以用下面的命令重新编译该程序:CC my.C precious.o
    • 可能需要显示的指定一些库.例如,要访问数学库中定义的函数,必须在命令行中加上-lm标记CC usingmath.C -lm
  2. Linux编译和链接

    • Linux系统中最常用的编译器是g++,这是来自Free Software Foundation的GNU C++编译器.Linux的多数版本都包括改变一起.g++编译器的工作方式很像标准UNIX编译器.
    • 生成可执行文件a.out g++ spiffy.cxx
    • 有些版本可能要求链接c++库 g++ spiffy.cxx -lg++
    • 要变异多个源文件,只需要将他们全部放到命令行中即可 g++ my.cxx precious.cxx
  3. Windows命令行编译器

    • 要在Windows PC上编译C++程序,最便宜的方法是下载一个在Windows命令提示符模式下运行的免费命令行编译器.Cygwin和MinGW都包括编译器GNU c++,且可以免费下载.
    • 编译源代码文件 g++ great.cpp
  4. Windows编译器

    • 最流行的是Microsoft Visual C++.

1.5 总结

  • 随着计算机的功能越来越强大,计算机程序越来月庞大而复杂.为应对这种挑战,计算机语言也得到了改进,以便编程过程更为简单.C语言新增了诸如控制结构和函数等特性,以便更好的控制程序流程,支持结构化和木块花程序更高的方法;而c++增加了对面向对象编程和泛型编程的支持,这有助于提高模块化和创建可重用代码,从而节省编程时间并提高程序的可靠性.
  • C++的流行导致大量用于各种计算平台的c++实现得以面世,而ISOC++标准为确保众多实现的相互兼容提供了基础.这些标准规定了语言必须具备的特性,语言呈现出的行为,标准库函数,类和模板,旨在实现该语言在不同计算平台和实现之间的可移植性.
  • 要创建c++程序,可创建一个或多个源代码文件,其中包含了以c++语言表示的程序.这些文件是文本文件,它们经过编译和链接后将得到机器语言文件,后者构成了可执行的程序.上述任务通常是在IDE中完成的,IDE提供了用于创建源代码文件的文本编辑器,用于生成可执行文件的编译器和链接器以及其他资源,如项目管理和调试功能.
原创粉丝点击