编程基础——计算机、程序和C++语言简介

发布时间 2023-07-12 08:56:47作者: 小骑士橙

  编程(programming)的意思是创建(或开发)软件,软件也称为程序(program)。软件是一个包含指令的集合,这些指令告诉计算机,或者计算设备,应该做什么。

  软件设计者使用一种强大的工具——程序设计语言(programming language)开发出这些软件。没有最棒的编程语言,一种编程语言在某些情况下可能很有效,但是另一种编程语言却可能更适合其他一些场合。熟练的程序开发人员会尽力掌握多种不同的编程语言。就像拥有一个巨大的开发工具库一样。

  • 计算机

  计算机包含硬件(hardware)和软件(software)两部分。计算机硬件是我们可以看到的物理特征,而软件是不可见的指令,它控制硬件,使之完成特定的任务。

  计算机主要包括五个硬件部件:

1. 中央处理单元(CPU):CPU(Central Processing Unit,中央处理单元)是一台计算机的大脑,它从内存获取并执行指令。它通常由两部分组成:控制单元(control unit)控制、协调其他部件的动作,算术/逻辑单元(arithmetic/logic unit)执行数字运算(加、减、乘、除)和逻辑运算(比较)。时钟单位的度量单位称为赫兹(hertz,Hz),1Hz每秒发出一个脉冲,计算机的时钟速度往往以兆赫(megahertz,MHz)来度量。CPU最初都是单个内核(core)的,内核是处理器的一部分,用来读取和执行指令。

2. 内存(主存,memory):其实计算机不过是一系列开关。每个开关存在两种状态:打开或关闭。计算机中存储的信息是简单的一组开关序列打开或关闭,如果开关是打开状态,它的值是1。如果开关是关闭状态,它的值是0。这些0和1的序列被解释为二进制系统的数字,称为位(bit,二进制位)。计算机的最小存储单元是字节(byte)。一个字节由8个二进制位组成。我们不需要知道数据是如何编码和解码的,这些是由计算机依据“编码模式”自动完成的。一个编码模式(encoding scheme)是一系列如何把字符、数字和符号转换成计算机可以使用的数据的规定的集合.一个千字节(KB)是1000字节,一个兆字节(MB)是100|0000字节,一个吉字节(GB)是10|0000|0000字节,一个太字节(TB)是1|0000|0000|0000字节。计算机的内存由一系列有序的字节构成,用来存储程序和程序所操作的数据。由于内存中的字节可以按照任意顺序读取,所以内存又称为随机存储器(Random Access Memory,RAM)。

3. 存储设备(磁盘、光盘,storage device):存储设备主要有三类:磁盘驱动器,光盘驱动器(CD或DVD),USB闪存驱动器。其中驱动器(derive)是能够操作磁盘、等存储介质的设备。存储介质是对数据和程序指令进行物理存储,驱动器则从存储介质中读取数据或将数据写入存储介质中。磁盘:硬盘(hard disk):用来永久地存储数据和程序。(小,CD(光盘)和(大,DVD(通用数字光盘):CD-R(只读),CD-RW(可重写),DVD-R(只读)DVD-RW(可重写)。USB闪存:通用串行总线(Universal Serial Bus)USB允许用户把一些外围设备接入计算机。USB闪存是一种数据存储和传输设备。它是一种便携式的硬盘,可以用USB接口连接在计算机上。磁盘>USB闪存>CD或DVD(通常情况)。

4. 输入设备(鼠标、键盘),输出设备(显示器、打印机):输入输出设备是用户与计算机沟通的媒介。常用的输入设备有键盘(Keyboard)和鼠标(mouse),常用的输出设备有显示器(monitor)和打印机(printer)。其中显示器显示文本或图形信息,分辨率和点距决定了显示的质量。分辨率(screen resolution)是指显示器每平方英寸的像素数量。点距(dot pitch)是指像素间的间隔大小,以毫米度量。点距越小,显示越锐利。

5. 通信设备(调制解调器、网卡):

  • 拨号调制解调器(dial-up modem)使用电话线传输数据,速度可达到5|6000bps(bits per second,每秒位数)。
  • DSL(Digital Subscriber Line,数字用户线路)也使用电话线,但数据传输速度可达拨号调制解调器的20倍。
  • 线缆调制解调器(cable modem)使用有线电视线路传输数据,这种线路是由有线电视公司维护的。线缆调制解调器的速度通常比DSL快。
  • 网卡(Network Interface Card,NIC)将计算机连接到局域网(Local Area Network,LAN)中。局域网通常在大学,公司以及政府部门中使用。
  • 无线网络适配器通常在家、公司、学校里非常流行。如今,每台笔记本都装备了无线适配器,这样可以让计算机连接到局域网和Internet。

  计算机中所有的部件通过一个称为总线(bus)的子系统连接起来,总线集成在计算机的母板(Motherboard)上。

  • 编程语言

  计算机不能理解人类的语言,所以必须用计算机能够理解的语言来书写程序。

1. 机器语言(machine language):它是每台计算机都内置的一组原语指令。机器指令都是二进制码格式因此如果你想用机器语言给计算机一条指令,则必须输入二进制码指令。

2. 汇编语言(assembly language):汇编语言被创造出来以代替机器语言。它使用助记符(mnemonic)表示机器语言指令。由于计算机不能直接执行汇编语言,所以还需要一个称为汇编器(assembler)的程序将汇编语言转换为机器码。正因为汇编语言接近机器语言,所以称为低级语言(low-level language)。

3. 高级语言(high-level language):高级语言更像英语,而且容易学习和使用。高级语言的指令称为语句(statement)。现在有很多种高级语言,如Ada、BASIC、C、C++、C#、COBOL、FORTRAN、Java、Pascal、Python、Visual Basic……

  用高级语言编写的程序称为源程序(source program)或源代码(source code),由于计算机不能执行源程序,所以源程序不许翻译为机器码来执行。翻译工作使用一个叫做翻译器(interpreter)或者编译器(compiler)的工具来完成。

  翻译器(又称解释器,interpreter)从源代码中读取一行代码,把它翻译成为机器码或者虚拟机码,然后立即执行。

  编译器(compiler)是把整个源文件编译成一个机器码文件,然后这个机器码文件将会被执行。

  • 操作系统

  操作系统(Operating System,OS):是一台计算机上运行的最重要的程序,它负责管理和控制计算机的所有活动。适用于通用计算机的流行操作系统有微软的Windows、苹果的Mac OS和Linux。

  操作系统的主要任务包括:

1. 控制和监视系统活动:操作系统还执行一些基本任务,如识别来自键盘的输入,发送输出到显示器……操作系统还应保证在同一时刻运行的不同程序和用户不会相互干扰。操作系统负责计算机系统的安全,确保未授权的用户和程序无法访问系统。

2. 分配和指派系统资源:操作系统应负责确定一个程序需要哪些计算机资源(例如,CPU时间、内存、磁盘、输入输出设备),并负责分配资源,指派给该程序,使其正常运行。

3. 任务调度:

  • 多道程序(multiprogramming)允许多个程序同时进行,它们共享CPU。
  • 多线程(multithreading)技术允许一个程序的多个子任务同时运行。
  • 多处理(multiprocessing)技术,或者称为并行处理(paraller processing)技术,可以使用两个或更多处理器一起来执行一个任务。

 

  • C++语言的历史(C++是一种通用的、面向对象的编程语言)

  C++是一个通用的编程语言,意味着可以使用C++为任和编程任务写代码。C++是一个面对对象(OOP)的编程语言。面对对象编程是开发可重用软件的有力工具

  • 一个简单的C++程序

  #include<iostream>是一条编译预处理指令,作用是告知编译器在此程序中包含iostream库,这个库是支持控制台输入输出所必需的。C++库包含了开发C++程序所需的预定义代码。像iostream这样的库在C++中称为头文件(header file),因此通常都在程序头部包含这些库。

  using namespace std; 告诉编译器使用标准命名空间。std是standard的缩写。命名空间是一个用来避免大型项目中名字重复的机制。

  cout和endl被定义在标准命名空间的iostream库中。为了让编译器能够找到这些名称,必须使用using namespace std; 。

  每个C++程序都从一个主函数开始执行。所谓函数,就是包含若干语句的程序结构。主函数共包含了两条语句,这两条语句包含在一个语句块(block)内,语句块以左大括号“{”开始,以右大括号“}”结束。语句块内的每条语句必须以一个分号“;”作为结尾,分号是语句终止符(statement terminator)。

  cout表示控制台输出(console output),运算符“<<”称为流插入运算符(stream insertion operator),它向控制台发送一个字符串。字符串必须包含在引号内,先向控制台输出字符串“Welcome to C++!",然后输出endl。endl表示结束行(end line),向控制台发送endl会输出一个换行,并刷新输出缓冲区。保证输出内容立即显示出来。

  return 0; 应放置在每个主函数末尾,用来退出程序。返回值0表示程序成功推出(successful exit)。

  注释(comment)作用是说明这段程序是什么,是如何编写的。注释能帮助程序员相互交流,理解程序。注释不是编程语句,因此会被编译器忽略。行注释(//,line comment)以及块注释(block comment)或段注释(“/*”和”*/“,paragraph comment)。

  关键字(Keyboard)或称为保留字(reserv word),是指对编译器来说有特殊含义的。不能在程序中用于其他用途的字。例如:using、namespace、int、return……C++有自己的语法规则,叫做语法(syntax),我们需要编写遵循语法规则的代码。

  • C++的开发周期

       C++的开发周期包括创建/修改源代码、编译、链接和执行程序。【我们必须首先创建一个程序,编译它,然后才能执行】,这个过程是反复的,如果程序出现编译错误,我们就必须修改程序修正错误,然后重新编译。如果程序运行时发生错误,或者没有生成正确的结果,那么还是要修改程序,重新编译然后再执行一次。C++编译器只执行了三个任务:预处理(preprocessing),编译(compling)和链接(linking)因此一个C++程序包含了三个不同的程序:预处理器(preprocessor),编译器(compiler)和链接器(linker),为了简单起见,我们把涉及3个程序合起来统称为C++编译器。

1. 预处理器是一个用来在源文件传递给编译器之前处理它的程序。预处理器处理指令。指令都是由#符号开始的。编译器产生中间文件。

2. 编译器接着把中间文件转换为机器码文件。机器码文件也称为目标文件(object file)。

3. 链接器链接机器码文件和所需的支持文件来形成一个可执行文件。在Windows上,机器码文件在磁盘中存储为.obj文件,可执行文件存储为.exe文件,C++源程序文件通常以.cpp为扩展名。

  我们可以通过命令行方式开发一个C++程序,也可以使用IDE。IDE提供了集成开发环境(integrated development environment),以便进行C++程序快速开发的软件。编辑、编译、程序生成、调试和在线帮助都集成在一个图形用户界面中。

  • 程序风格和文档

        编程风格(programming style)解决程序应该是什么样的。

1. 适当的注释和注释风格。

2. 正确的缩进和间距。

  • 编程错误

1. 语法错误(syntax error)或者编译错误(compile error):语法错误是代码结构错误的结果。这种错误通常很容易发现,因为编译器告诉我们它们在哪,是什么原因引起的。

2. 运行时错误(runtime error):导致一个程序异常中断。当程序运行时,如果环境检测到一个操作不能被顺利实施,运行时错误就发生了。输入错误是典型的运行时错误的原因。另一种常见的错误就是除数是0的错误。

3. 逻辑错误(logic error):出现在程序不是按照预期执行的时候。这种错误有很多种原因。