展开查看详情
1.绪论——C++ Introduction 主 讲:王红平 Email:wanghp@cug.edu.cn 面向对象程序设计(C++)
2.内容提要 程序语言简介 - Introduction to Programming Languages C/C++简介 - Introduction to C++ C++开发简介 - Introduction to C++ Development
3.1、Introduction to Programming Language 计算机程序(通常也被称为应用程序)是一组计算机可 以执行一些任务的指令。创建程序的过程称为编程。程 序员通常通过生成源代码(通常缩写为代码)来创建程 序,源代码是键入一个或多个文本文件的命令列表。 组成计算机和执行程序的物理计算机部件的集合称为硬 件。当计算机程序被加载到存储器中并且硬件顺序执行 每个指令时,这称为运行或执行程序。
4. 1、Introduction to Programming Language 计算机程序与源代码 机器语言 汇编语言 高级语言 编译与解释
5.计算机程序和源代码 计算机程序(通常也被称为应用程序)是一组计算机可以 执行一些任务的指令。创建程序的过程称为编程。程序员 通常通过生成源代码(通常缩写为代码)来创建程序,源 代码是键入一个或多个文本文件的命令列表。 组成计算机和执行程序的物理计算机部件的集合称为硬件 。当计算机程序被加载到存储器中并且硬件顺序执行每个 指令时,这称为运行或执行程序。
6.机器语言 计算机CPU是无法解读C++语言的。CPU可以直接理解的 有限指令集称为机器代码(机器语言或指令集)。 这是一个示例机器语言指令: 10110000 01100001 当计算机最初发明时,程序员必须直接用机器语言编写程 序,这是一件非常困难和耗时的事情。 机器语言Wikipedia
7.汇编语言 因为人类对阅读和理解机器语言很难理解,所以就发明了 汇编语言。在汇编语言中,每个指令由短缩写(而不是一 组位)标识,并且可以使用名称和其他数字。 以下是汇编语言中与上述相同的指令: mov al, 061h 汇编语言比机器语言更容易读取和写入。但是,CPU无法 直接理解汇编语言。 汇编语言也有缺点 汇编语言仍需要大量指令来完成简单的任务。虽然单个指令本身 在某种程度上是人类可读的,但了解整个程序正在做什么可能具 有挑战性(这有点像试图通过单独查看每个字母来理解句子)。 汇编语言是面向指令集的,针对不同指令集的硬件,需要重写或 修改相应的代码。如:Intel CPU 和 AMD CPU的指令集就不完全 相同。
8.高级语言 为了解决可读性和可移植性问题,出现了新的编程语言, 如C,C ++,Pascal(以及后来的Java,Javascript和Perl 等语言)。这些语言被称为高级语言,它们旨在允许程序 员编写程序而无需关心程序将运行在何种类型的计算机上 。 这是与C/C ++中相同的指令: a = 97; 与汇编程序非常相似,用高级语言编写的程序必须翻译成 计算机可以运行的格式。两种主要方式:编译和解释。
9.不同类程序语言间的对比 语言 执行效率 可读性 移植性 机器语言 高 晦涩难懂 汇编语言 高 指令别名,程序逻辑仍难理解 高 可读性好 高级语言 中 接近自然语言 自然语言 ? 自然语言
10.编译器VS.解释器 编译过程的简化表示 解释过程的简化表示 有关编译与解释的讨论
11.高级语言的特性 高级语言更容易读写,因为命令更接近我们每天使用的自然语言。 高级语言程序更为简洁,也更容易理解,相同的任务所需的指令比与 低级语言少。如在C++中,a=b*2+5;在汇编语言中,这将需要5或6个 不同的指令。 可以为许多不同的系统编译(或解释)程序,并且不必将程序更改为 在不同的CPU上运行(您只需为该CPU重新编译)。如:
12. 2、Introduction to C/C++ C++的前世C C++的诞生 C和C++的哲学 Question about C++?
13.C++的前世C C语言由贝尔电话实验室的Dennis Ritchie于 1972年开发而成,主要用于系统编程语言( 编写操作系统的语言) C最终变得如此高效和灵活,以至于1973年, Ritchie和Ken Thompson使用C重写了大部分 UNIX操作系统。 1978年,Brian Kernighan和Dennis Ritchie出 Dennis Ritchie 版了一本名为“The C Programming Language”的书。K&R书中提供了C语言的 非正式规范,并成为事实上的标准。当需要最 大的可移植性时,程序员会坚持K&R中的建 议,因为当时大多数编译器都是按照K&R标 Brian Kernighan 准实现的。
14.C++的诞生 C++(发音为see plus plus)是由 Bjarne Stroustrup在贝尔实验室从 1979年开始开发的。作为C的扩展, C ++为C语言添加了许多新功能。 C++声名鹊起的主要原因在于它是一 种面向对象的语言。 C++于1998年由ISO委员会批准,并 于2003年再次批准(称为C++ 03)。 自那时起,C ++语言(C++ 11,C++ 14和C++ 17,在2011年,2014年和 2017年得到批准)的三个主要更新已 经完成,为该语言添加了额外的功能 。特别是C++ 11为该语言添加了大量 Bjarne Stroustrup 新功能。
15.C和C++的哲学 C和C++的基本设计理念可以概括为:“信任程序员” — — 既美妙又危险。 C++旨在让程序员可以高度自由地完成他们想要的任务。 然而,这也意味着语言通常不会阻止你做一些没有意义的 事情。如果没有意识到,新程序员可能会陷入相当多的陷 阱。这就是为什么你应该知道在C/C ++中做什么和不能做 什么几乎一样重要的原因之一。
16.Question:C++擅长什么? 答:C++在需要高性能和精确控制内存和其他资源的情况 下表现出色。以下是一些常见的应用程序类型,最有可能 用C ++编写: 视频游戏 实时系统(例如运输,制造等......) 高性能金融应用(例如高频交易) 图形应用程序和模拟 生产力/办公应用 嵌入式软件 音视频处理
17.Question:是否需要先行了解C? 问:在学习C++之前,我是否需要了解C? 答:不!从C++开始是完美的,我们会教你一路上需要知 道的一切(包括要避免的陷阱)。 一旦你了解了C ++,如果你有需要,学习标准C应该很容 易。目前,C主要用于小众用例:在嵌入式设备上运行的 代码,当您需要与只能与C接口等的其他语言进行交互时 ......对于大多数其他情况,建议使用C ++。
18.3、Introduction to C++ development C++开发流程 Step 1:定义要解决的问题 Step 2:确定如何解决问题 Step 3:编写程序 Step 4:编译源代码 Step 5:链接目标文件和库 Step 6:调试 Step 7:测试
19.C++开发流程 C++开发流程简图 定义问题 设计解决方案 编码实现 编译代码 链接程序 测试程序 调试程序
20.第1步:定义要解决的问题 这是“什么”步骤,你需要找出需要解决的问题。提出你 想要编程的最初想法可能是最简单的步骤,也可能是最难 的步骤。但从概念上讲,它是最简单的。你只需要一个可 以很好定义的想法,并为下一步做好准备。 这里有一些例子: 我想编写一个程序,允许我输入许多数字,然后计算平均值。 我想写一个生成二维迷宫的程序,让用户浏览它。如果用户到达 目的地,用户将获胜。 我想写一个程序,读取股票价格文件并预测股票是涨还是跌。
21.第2步:确定如何解决问题 这是“如何”步骤,你可以在其中确定如何解决步骤1中 提出的问题。这也是软件开发中最容易忽略的步骤。问题 的关键在于有很多方法可以解决问题。但是,其中一些解 决方案很好,而其中一些解决方案很糟糕。通常,程序员 会得到一个想法,坐下来,并立即开始编写解决方案。这 通常会产生一个属于坏类别的解决方案。(权衡、取舍) 通常,良好的解决方案具有以下特征: 它们很简单(不会过于复杂或混乱)。 它们有很好的文件记录(特别是在任何假设或限制的情况下)。 它们是模块化构建的,因此可以在以后重复使用或更改部件,而 不会影响程序的其他部分。 它们非常稳健,可以在出现意外情况时恢复或提供有用的错误消 息。
22.第3步:编写程序 为了编写程序,我们需要两件事: 首先我们需要编程语言的知识,这正是本门课程所学的内容! 其次,我们需要一名编辑。可以使用您想要的任何编辑器编写程 序,甚至可以像记事本或Unix的vi或pico那样简单。 专为编码而设计的典型编辑器具有一些使编程更容易的功 能,包括: 行号。当编译器给我们一个错误时,行编号很有用,因为典型的 编译器错误会说明:某些错误代码/消息,第64行。如果没有显示 行号的编辑器,找到第64行可能会非常麻烦。 语法高亮和着色。语法高亮和着色会更改程序各个部分的颜色, 以便更容易识别程序的不同组件。这是一个包含行号和语法高亮 的C ++程序示例: 明确的字体。非编程字体通常使得难以区分数字0和字母O,或数 字1,字母l(小写字母L)和字母I(大写字母i)之间。一个好的 编程字体将区分这些符号,以确保不会意外地使用一个符号代替 另一个符号。
23.第4步:编译源代码 C++编译器的工作是按顺序遍历程序中的每个源代码( .cpp)文件,并执行两项重要任务: 1. 检查代码确保其遵循C ++语言的规则 2. 将C++源代码转换为与机器语言对应的目标文件 如程序中有3个.cpp文件,编译器将生成3个目标文件:
24.第5步:链接目标文件和库 在编译器创建一个或多个目标文件之后,另一个称为链接 器的程序启动。 链接器的工作有三个: 1. 将编译器所生成的所有目标文件组合成一个可执行程序 2. 除了能够链接目标文件之外,链接器还能够链接库文件 3. 确保所有跨文件依赖关系的正确性
25.步骤6和7:调试和测试 这是有趣的部分(希望如此)!您可以运行可执行文件, 看看它是否产生您期望的输出! 如果您的程序运行但无法正常工作,那么现在是时候进行 一些调试以找出问题所在。我们将在后面的部分讨论如何 测试程序以及如何更快地调试它们。 调试和测试工作特别重要。一般而言,调试和测试的工作 量占到软件开发80%以上的工作量。
26.Home Work 1. 查找资料,整理一份C++发展史的里程碑 2. 编译器与解释器的各自特点与优势 3. 在你的机器上试着安装一个IDE环境,参考 https://www.learncpp.com/cpp-tutorial/installing- anintegrated-development-environment-ide/