520 likes | 740 Views
第一章 C++ 语言概述. 教学内容: 一、计算机系统与计算机软件 二、计算机软件与计算机语言 三、计算机语言的分类 四、面向过程、面向对象 —— 软件设计思想 (重点 , 难点) 五 、 C 语言与面向对象的 C++ 六 、 C++ 语言的词法规则 七 、简单 C++ 程序介绍 八 、 C++ 的上机实验环境 (必须熟练掌握) 九、小结. 一、计算机系统与计算机软件. 计算机硬件 输入设备 输出设备 CPU 存储设备=内存+外存 外存=磁盘+光盘+闪盘 外存信息需调入内存后,方可使用
E N D
第一章 C++语言概述 教学内容: 一、计算机系统与计算机软件 二、计算机软件与计算机语言 三、计算机语言的分类 四、面向过程、面向对象——软件设计思想(重点,难点) 五、C语言与面向对象的C++ 六、C++语言的词法规则 七、简单C++程序介绍 八、C++的上机实验环境(必须熟练掌握) 九、小结
一、计算机系统与计算机软件 • 计算机硬件 • 输入设备 输出设备 CPU • 存储设备=内存+外存 • 外存=磁盘+光盘+闪盘 • 外存信息需调入内存后,方可使用 • 内存按地址编号,CPU可以按地址 号直接存取 • 计算机软件 • 文档+程序
二、计算机软件与计算机语言 • 计算机软件主要是以程序的形式展现的 • 程序设计=数据结构+算法 • 算法需要用一种语言来描述 • 描述算法的语言有: • 自然语言、图形语言、伪代码、形式语言 • 最方便的是形式语言,形式语言主要特征是无歧义。 • 计算机语言全是形式语言。
三、计算机语言的分类 • 四大类: • 机器语言 (语言符号只有0、1代码) 计算机能直接识别的惟一语言,其余语言均须翻译 • 汇编语言 (机器语言符号化) • 高级语言 (最流行的是C++语言) • 超高级语言 又称为开发工具,开发软件主要用开发工具
三、计算机语言的分类 • 高级语言适合程序员编写程序。 • 高级语言编写的源程序需要由编译系统翻译为机器语言目标程序,计算机才能执行。 • 流行的高级语言有:C语言、C++语言、Pascal语言、JAVA语言等。 • 学好高级语言,是掌握软件开发技术的基础。
四、 软件设计风格概述 软件设计是一个将人类思维物化为计算机思维的过程,通过这个过程计算机获得一定程度的独立加工甚至思维的能力,从而将人类思维推向更高层次。关于软件设计的概念和方法的研究是随着计算机应用的深入和所处理问题的复杂化而不断加深的。本章将就软件设计的相关概念和程序设计方法的演化发展作一简要介绍。
1软件与软件危机 软件 程序 什么是软件 什么是软件危机 软件危机首次爆发于二十世纪六十年代。在大型程序设计中,人们发现投入大量的人力、物力、时间开发出的软件,其成本、效率、质量等方面却处于失控状态,尤其软件维护异常困难。程序的修改扩充往往需要大量重复性投入。
1 软件与软件危机 软件危机产生的原因主要有三个: 1软件开发者不熟悉用户问题的领域,或没有理解用户需求,软件产品与要求不一致。 2软件是一种逻辑产品而非物理产品,软件的开发过程本质上是人的思考过程。 3人的智力在面对越来越复杂的问题时,处理问题的效率会越来越低。
2 软件工程 软件危机的 出现迫使人们重新认识软件和软件开发过程。 大型软件开发也应该借鉴建筑、机械等行业的发展过程,由“手工方式”向“工程化”方向发展。1968年在北大西洋公约组织(NATO)的年会上首次提出软件工程的概念,此后又逐步提出软件生命期的概念。
2 软件工程 软件工程的提出和软件的定义 软件是程序、方法、规则、相关文档以及在计算机上运行所必需的数据的集合。而软件工程是开发、运行、维护软件的系统方法。 软件生命期 软件生命期指从开始研制到废弃不用的整个期间,可划分为五个阶段:需求分析、设计、编程、测试和运行维护。 软件的质量标准 正确性 健壮性 可维护性 可用性 可重用性 效率等
2 软件工程 正确性 软件的正确性指的是软件系统在正常条件下能够正确工作,完成规定功能。这是软件的首要指标。 例如,要求设计程序,输入一批数据,计算它们的累加和。在这里,正确性就是能正确计算累加和。
2 软件工程 健壮性 软件的健壮性指的是在意外情况下(如输入数据不合理或某些硬件故障),软件系统仍能适当地工作,并对意外情况进行适当处理,而不致于导致错误结果甚至系统的瘫痪或死机。 例如,要求设计程序,根据输入的三边a、b、c的长度判别三角形类型。现有如下设计思想:若a、b、c中只有两个量相等,则为等腰三角形,若三个量均相等,则为等边三角形,否则为一般三角形。如果输入为(-2,-2,-2)时,程序输出为:等边三角形。这个结果显然是错误的。这是由于程序对不合理数据不能进行适当处理,我们就说这个程序的健壮性不好。
2 软件工程 可维护性 软件的维护包括发现并改正软件的错误,以及由于软件运行环境发生变化或软件功能扩充而对软件进行的改动。 软件的可维护性指的是软件容易维护的程度。一般地说,软件的可读性好,容易理解,维护起来也就比较容易。因此可读性是可维护性的基础。
3 程序设计方法 3.1 传统的结构化程序设计 SP(Structured Programming) 3.2 面向对象的程序设计 OOP(Object Oriented Programming)
3.1 传统的结构化程序设计 传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。这种设计方法的着眼点是面向过程的,特点是数据与程序分离,即数据与数据处理分离。 结构化程序设计的基本思想是采用自顶向下、逐步细化的设计方法和单入单出的控制结构。
3.1 传统的结构化程序设计 程序 模块1 模块2 模块3 1.1 1.2 1.3 2.1 2.2 3.1 3.2 1.3.1 1.3.2 1.3.3 3.1.1 3.1.2
3.1 传统的结构化程序设计 1.读入数据 正整数个数为0;负整数个数0 取第一个整数 2.统计正数、负数的个数; 2.1 如数大于0,正整数个数加1 2.2 如数小于0,负整数个数加1 2.3: 取下一个整数 重复 至统 计完 3. 输出结果 举一个简单的例子,要求读入一组整数,统计其中正整数和负整数的个数。 该任务的模块结构及细化过程如下:
3.1 传统的结构化程序设计 结构化程序设计为处理复杂问题提供了有力手段,但到80年代末,这种设计方法逐渐暴露出以下缺陷: (1)难以适应大型软件的设计。 (2)程序可重用性差。
3.2 面向对象的程序设计 为什么要引入面向对象的设计方法 面向对象的设计方法与面向过程的设计方法有什么关系
3.2 面向对象的程序设计 面向过程程序设计缺点的根源在于数据与数据处理分离。 面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类对象还可抽象出共性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。
3.2 面向对象的程序设计 3.2.1基 本 概 念 3.2.2 面向对象的软件开发方法 3.2.3 “面向对象”程序设计的特点
3.2.1 面向对象的基本概念 对 象(object) 类(class) 消 息(message)
3.2.1 面向对象的基本概念 表针 旋钮 其他机械机构 属性 行为 对 象 调节旋钮
3.2.1 面向对象的基本概念 类的一个具体实现,称为实例 类对象 描述这类对象共有的、本质的属性和行为 具体到一只圆形的或方形的手表 手表一块手表 手表共有的属性(表针、旋钮、内部结构) 和行为(调节旋钮) 类 是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为。
3.2.1 面向对象的基本概念 发送消息 接收并响应消息 消 息 我们把对象之间产生相互作用所传递的信息称做消息。 启 动 转 向
3.2.2 面向对象的软件开发方法 面向对象软件开发的根本合理性在于它符合客观世界的组成方式和大脑的思维方式。 在大型程序开发过程中,编码只是其中很小一部分,应当采用工程化的方法,并将面向对象的思想贯穿于软件开发全过程,这就是面向对象的软件工程。 面相对象的软件工程同样遵循分层抽象、逐步细化的原则。软件开发过程包括以下五个阶段:
3.2.2 面向对象的软件开发方法 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程(OOP) 面向对象的测试(OOT) 面向对象的维护(OOSM) 分析阶段的主要任务是按照面向对象的概念和方法,从问题中识别出有意义的对象,以及对象的属性、行为和对象间的通信,进而抽象出类结构,最终将它们描述出来,形成一个需求模型。 设计阶段从需求模型出发,分别进行类的设计和应用程序的设计。 编程阶段实现由设计表示到面向对象程序设计语言描述的转换。 测试的任务在于发现并改正程序中的错误。
3.2.3 “面向对象”程序设计的特点 • 封装性 (2) 继承与派生性 (3) 多态性
3.2.3 “面向对象”程序设计的特点 内 外 机械零件 动作 调节旋钮 读表盘 封装性 对象是一个封装体,在其中封装了该对象的属性和操作。通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。 C++通过建立数据类型——类来支持封装和数据隐藏。封装性增加了对象的独立性,从而保证了数据的可靠性。一个定义完好的类可以作为独立模块使用。
3.2.3 “面向对象”程序设计的特点 汽车 载人 载货 客车 货车 小,速度快 大,速度慢 小轿车 大客车 继承与派生 以汽车为例看客观世界描述事物的方式: 面向对象程序设计提供了类似的机制: 当定义了一个类后,又需定义一个新类,这个新类与原来的类相比,只是增加或修改了部分属性和操作,这时可以用原来的类派生出新类,新类中只需描述自己所特有的属性和操作。 新类称为子类或派生类,原来的类称为基类。派生可以一直进行下去,形成一个派生树。 继承性大大简化了对问题的描述,大大提高了程序的可重用性,从而提高了程序设计、修改、扩充的效率。
3.2.3 “面向对象”程序设计的特点 多态性 多态性指,同一个消息被不同对象接收时,产生不同结果,即实现同一接口,不同方法。 计 算平均成绩 高中生 大学生 语文、数学、英语、政治、物理、化学、生物 高数、英语、计算机、线性代数
3.2.3 “面向对象”程序设计的特点 继承和多态性组合,可以生成很多相似但又独一无二的对象。继承性使得这些对象可以共享许多相似特性,而多态又使同一个操作对不同对象产生不同表现形式。这样不仅提高了程序设计的灵活性,而且减轻了分别设计的负担。 C++就是一种支持“面向对象”的程序设计语言。它支持封装性、继承性和多态性。
五、C语言与面向对象的C++ C语言是七十年代初贝尔实验室的Dennis Richie 等人在B语言基础上开发出来的。C最初是作为UNIX操作系统的开发语言为人们所认识。七十年代末,随着微型计算机的发展,C语言开始移植到非UNIX环境中,并逐步脱离UNIX系统成为一种独立的程序设计语言。C 语言版本很多,为了让开发出来的代码能够在多种平台上运行,1988年美国国家标准协会ANSI对C语言进行了标准化,产生了ANSI C。
五、C语言与面向对象的C++ C语言的主要特点: (1)C语言既具备高级语言的结构和编程环境,又提供类似于汇编语言那样的系统资源操纵能力及程序执行效率。适合解决有实时要求的问题。 (2)有丰富的运算符和数据类型,表达式类型多样化,可以方便地实现在其他语言中较难实现的运算,对各种不同类型的程序设计都有良好的适应性。 (3)以函数为基础实现程序的结构化设计,支持大型程序的多文件构成及单个文件独立编译,适合大型复杂程序的设计。 (4)语言简洁、紧凑,使用方便、灵活,书写形式自由。 (5)可移植性好。
五、C语言与面向对象的C++ C++是由C发展成为的以面向对象为主要特征的语言。作为C语言的超集,C++继承了C的所有优点,又对数据类型做了扩充,使得编译系统可以检查出更多类型错误。 C++支持面向对象程序设计,通过类和对象的概念把数据和对数据的操作封装在一起,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。 此外,在一致性(Consistency)检查机制方面也作了加强,提高了软件开发的效率和质量。
五、C语言与面向对象的C++ C++与C完全兼容,很多用C编写的库函数和应用程序都可以为C++所用。 但正是由于与C兼容,使得C++不是纯正的面向对象的语言,它既支持面向对象程序设计,也支持面向过程设计。但我们应当注意用面向对象的思想进行设计,以发挥出C++的优势。 C++有许多版本,国内较为流行的有Microsoft公司的Visual C++。
六、C++语言的词法规则 • 1. 字符集 • 大小写英文字母:a~z A~Z • 数字字符:0~9 • 其它字符:空格 ! # % ^ & * _ - + = ~ < > / \ . , ; : ? ‘ “ ( ) [ ] { } • 2. 单词及词法规则 • 标识符: • 是程序员用来命名程序中的一些实体的一类单词。如函数名、类名、对象名、变量名、常量名、类型名、标号名等。标识符由字母、数字和下划线构成,并以字母或下划线开头。注意:标识符中的字母区分大小写;长度不限制;尽量做到“见名识义”;不要将系统已定义标识符再次定义。
六、C++语言的词法规则 • 关键字: • 关键字是系统已定义的单词,有特殊含义,不可他用。书P6列出了常用的关键字。 • 运算符:+、-、*、/等 • 分隔符:空格、逗号、分号、冒号、花括号 • 常 量:数字常量、字符常量、字符串常量 • 注释符: • 两种方法:/* 注释内容 */ • // 注释内容 直至行末
七、C++程序基本结构 • 语法对象 示例(例1.1) • 预处理命令#include<iostream.h> • 函数void main() • { double x,y; cout<<“输入两个双精度实数:”; cin>>x>>y; double z=x+y; cout<<“x+y=“<<z<<endl; }
示例(例1.1)程序分析: • 第1行用预处理命令包含头文件,保证标准输入输出流(cin、cout)的使用。 • 第2行是主函数的函数首部,一个c++程序由若干个函数构成,例1.2中有2个函数。主函数(main)是可执行程序中必不可少的函数。 • 一对花括号是函数体的定界符。 • 第4行及后面的double定义其后的变量为双精度实型变量。 • cin为输入语句;cout为输出语句,输出语句中的endl表示显示屏上回车换行。
八、C++语言上机实验环境 • 使用微软公司开发的Visual C++6.0 做实验 • 调程序的实验步骤为: • 1.开机进入Windows • 2.进入VC的集成环境 • 3.编辑源程序 • 4.编译源程序 • 5.构建可执行程序 • 6.执行程序 • 7.如在4~6步中发现错误,返回3.修改程序
C++语言编程上机实验步骤二:进入VC集成环境(从开始菜单进入)C++语言编程上机实验步骤二:进入VC集成环境(从开始菜单进入)
C++语言编程上机实验步骤三:编辑源程序(点击菜单):file→new→flies→C++ source file
C++语言编程上机实验步骤三:编辑源程序(在file、location文本框内分别输入源程序文件名及存放位置,正确,点击ok)C++语言编程上机实验步骤三:编辑源程序(在file、location文本框内分别输入源程序文件名及存放位置,正确,点击ok)
C++语言编程上机实验步骤三:编辑源程序(进入编辑窗口编辑源程序)C++语言编程上机实验步骤三:编辑源程序(进入编辑窗口编辑源程序)
C++语言编程上机实验步骤四:编译源程序(点击菜单:build→compile)C++语言编程上机实验步骤四:编译源程序(点击菜单:build→compile)
C++语言编程上机实验步骤五:连结构件可执行程序(点击菜单:build→build)C++语言编程上机实验步骤五:连结构件可执行程序(点击菜单:build→build)
C++语言编程上机实验步骤六:执行程序(点击菜单:build→execute或点击工具栏图标:!)C++语言编程上机实验步骤六:执行程序(点击菜单:build→execute或点击工具栏图标:!)