版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1计算机程序设计语言的发展
(ComputerProgrammingLanguagesDevelopment) 1.2程序设计方法(ProgrammingMethodology)1.3面向对象程序设计的基本特点
(BasicFeatureofObject-OrientedProgramming)1.4简单的C++程序(SimpleC++Programs)本章小结(ChapterSummary)
习题1(Exercises1)
1.1.1程序设计语言概述
(IntroductiontoProgrammingLanguages)
计算机的每一步发展几乎都会在软件设计和程序设计语言中得到充分体现。随着软件开发规模的扩大和开发方式的变化,人们开始将程序设计语言作为一门科学来对待,程序设计方法和技术在各个时期的发展直接导致了一大批风格各异的程序设计语言的诞生。1.1计算机程序设计语言的发展1.1.2机器语言与汇编语言
(MachineLanguageandAssembleLanguage)
1.机器语言
最基本的计算机语言是机器语言。
2.汇编语言
汇编语言(也称为第二代语言)的出现简化了编程人员的工作。
虽然汇编语言较机器语言已有很大的改进,但仍是低级语言,它有以下两个主要缺点:
(1)涉及细节太多;
(2)与具体的计算机相关。1.1.3高级语言(AdvancedLanguage)
20世纪60年代,出现了高级语言。由于高级语言的编写方式更接近人们的思维习惯,因此用高级语言编写的程序易读、易懂、易于维护。高级语言的另一个优点是:编写的程序具有一定的通用性。使用高级语言编程,一般不必了解计算机的指令系统和硬件结构,只需掌握解题方法和高级语言的语法规则,就可以编写程序。1.1.4面向对象语言
(Object-OrientedProgrammingLanguage)
20世纪80年代,出现了面向对象的编程语言。面向对象语言的出现改变了编程者的思维方式,使程序设计的出发点由问题域中的过程转向问题域中的对象及其相互关系,这种转变更加符合人们对客观事物的认识。
面向对象的语言分为几大类别:一类是纯面向对象的语言,另一类是混合型的面向对象语言,还有一类是与人工智能语言相结合形成的语言。1.2.1结构化程序设计方法
(StructuredProgramming)
结构化程序设计(StructuredProgramming,SP)方法是由E.W.Dijkstra等人于1972年首先提出的,它建立在Bohm、Jacopini证明的结构定理的基础之上。1.2程序设计方法(ProgrammingMethodology)结构化程序设计方法的优点如下:
(1)自顶向下,逐步细化。
(2)模块化设计。
(3)结构化编码。
随着程序规模与复杂性的增长,面向过程的结构化程序设计方法存在明显的不足之处:
(1)数据安全性问题。
(2)可维护性及可重用性差。
(3)图形用户界面的应用程序很难用过程来描述和实现,开发和维护也都很困难。
1.2.2面向对象程序设计方法
(Objected-OrientedProgramming)
面向对象程序设计方法建立在结构化程序设计方法的基础之上,避免了结构化程序设计方法中所存在的问题。
当然,对象之间存在各种联系,但它们之间只能通过“消息”进行通信。程序可表示为:
程序 = 对象 + 类 + 继承 + 消息通信
【例1-1】
用C++ 语言描述,用结构化程序设计方法计算三角形的面积(已知一个三角形的3个顶点的坐标)。
分析:要想计算三角形的面积,就必须知道三角形的3条边长,而边长可以通过坐标求得。假定3个坐标点分别为a(x1,y1)、b(x2,y2)、c(x3,y3),所以3条边长可用下面的公式求出:求面积之前先计算边长和的一半:面积的计算公式为:根据上述问题分析和算法描述,很容易写出求解问题的C++ 源程序代码。由于求三角形的边长要计算3次,因此可编写一个计算边长的函数。因为在程序中要用到输入/输出流和数学函数,所以在程序的开始处必须包含相关的以 .h为扩展名的头文件。编写其源程序如下:
#include<iostream> //包含输入/输出流
usingnamespacestd;
#include<math.h> //包含数学函数的头文件
doubleedge(doublex1,doublex2,doubley1,doubley2)
{ //求三角形的边长
doublelen;
len=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); //求边长
returnlen;
}
intmain()
{
doublex1,x2,x3,y1,y2,y3,s,area,ab,ac,bc;
//说明变量
cin>>x1>>x2>>x3;
cin>>y1>>y2>>y3; //输入坐标值
ab=edge(x1,x2,y1,y2); //求边长
ac=edge(x1,x3,y1,y3);
bc=edge(x2,x3,y2,y3);
s=(ab+ac+bc)/2; //求边长和的一半
area=sqrt(s*(s-ab)*(s-ac)*(s-bc)); //计算面积
cout<<"area="<<area<<'\n'; //输出三角形面积
return0
}
【例1-2】
用面向对象的程序设计方法计算矩形面积。
例1-1是采用传统的“面向过程”的程序设计方法实现的,而本例要求用“面向对象”方法实现。源程序如下:
#include<iostream>
usingnamespacestd;
//类的声明
classRectangleArea
{
public: voidSetData(floatL,floatW); //输入长、宽值
floatComputeArea(); //计算面积
voidOutputArea(); //输出面积
private:
floatlength,width,area;
//定义长、宽、面积
};
voidRectangleArea::SetData(floatL,floatW)
{ length=L;
width=W;
}
floatRectangleArea::ComputeArea()
{
area=length*width;
returnarea;
}
voidRectangleArea::OutputArea()
{ cout<<"area="<<area<<endl;
}
intmain()
{
RectangleAreaRectangl; //声明对象
Rectangl.SetData(8,9);
Rectangl.ComputeArea();
Rectangl.OutputArea();
return0;
}1.3.1抽象(Abstract)
抽象是人类认识客观世界的最基本的思维方法。
1.3面向对象程序设计的基本特点(BasicFeatureofObject-OrientedProgramming)用C++ 语言可以描述如下:
矩形面积(RectangleArea);
数据抽象:floatlength,width,area;
代码抽象:voidSetData(floatL,floatW);//输入长、宽值
floatComputeArea();
//计算面积
voidOutputArea();
//输出面积1.3.2封装(Encapsulation)
封装就是把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。通过对抽象结果进行封装,将一部分行为作为外部访问的接口与外部发生联系,而将数据和其他行为进行有效隐藏,就可以达到对数据访问权限的合理控制。
在类中,封装是通过存取权限实现的。例如,将每个类的属性和操作分为私有的和公有的两种类型,对象在类的外部,只能访问对象的公有部分,不能直接访问对象的私有
部分。1.3.3消息(Message)
消息是面向对象程序设计中用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。
例如,外界与RectangleArea类进行通信,可以通过下面的C++ 语句来描述:
//创建一个Rectangle对象
RectangleAreaRectangle;
//通过对象调用ComputeArea()函数
Rectangle.ComputeArea();1.3.4继承(Inheritance)
在面向对象程序设计中,继承性是指从已有的对象类型出发建立一种新的对象类型,使这种新对象类型继承原对象的特点和功能,同时又拥有自己特殊的特点和功能。这种思想是面向对象设计对程序设计方法的主要贡献之一。抽象和封装是面向对象程序设计的初步工作。继承是一个对象可以获得另一个对象的特性的机制,它支持层次类这一概念。1.3.5多态(Polymorphism)
继承讨论的是类与类间的层次关系;多态则考虑的是这种层次关系以及类自身成员函数之间的关系问题,用于解决功能与行为的再抽象问题。
一个消息可以产生不同的响应效果,这种现象叫做多态。多态即“多种形态”。具体到程序语言,多态则有以下两个含义:
(1)相同的语言结构可以代表不同类型的实体,即一名多用或重载(Overloading)。
(2)相同的语言结构可以对不同类型的实体进行操作。下面是两个简单的C++程序的例子。
【例1-3】
编写程序求两个从键盘输入的整型数之和。
程序如下:
//功能为求两个整型之和
#include<iostream>
usingnamespacestd;
//使用名字空间
voidmain()
//主函数
{1.4简单的C++程序(SimpleC++Programs)
intx,y,z; //int表示定义3个整型变量
cout<<“pleaseinputtwointnumber:”;
cin>>x>>y; //从键盘输入两个数
z=x+y;
cout<<“x+y=”<<z<<endl;
//输出两个数的和
}
执行该程序,屏幕上出现如下提示:
pleaseinputtwointnumber:2236↙
输入两个用空格分隔的整型数后,按回车键,得输出结果为
x+y=58
【例1-4】
用一个子函数和一个主函数编写程序实现例1-3的编程要求。
程序如下:
//利用函数求两整数之和
#include<iostream>//C++的预编译命令,其中的
//iostream是C++定义的一个头
//文件,用于设置C++风格的I/O环境
usingnamespacestd;
//使用名字空间
intadd(inta,intb); //函数原型的声明
intmain() //主函数
{
intx,y,sum; //定义三个整型变量
cout<<“Entertwonumber:”; //提示用户输入两个数
cin>>x>>y; //从键盘输入变量x,y的值
sum=add(x,y);
//调用函数add计算x+y的值并将
//其赋给sum
cout<<"x+y="<<sum<<"\n"; //输出sum的值
return0;
}intadd(inta,intb) //定义add函数,函数值为整型
{
intc;
//定义一个整型变量
c=a+b;
//计算两个数的和
returnc;
//将c的值返回,通过add带回调用处
}编译运行该程序,屏幕上将出现与例1-3相同的提示,当输入两个整型数(22和36)后,按回车键,同样可得输出结果:
x+y=58
通过上面的两个例子可以看出,一个简单的C++ 程序一般都由注释、编译预处理和程序主体等几部分构成。
1.注释
注释是程序员为读者做的说明,是提高程序可读性的一种手段。
2.编译预处理
程序中每个以符号“#”开头的行称为预处理行,一般都写在程序的最前面几行中。
3.使用名字空间
过去一直使用后缀“.h”标识头文件,但在前面的两个例子中,没有使用后缀,原因是新的C++ 标准引入了新的标准类库的头文件载入方式,即省略“.h”。
4.程序主体
程序主体由一个名为main()的主函数和若干个子函数构成。子函数可有,也可以没有,但main()函数不能没有,而且只能有一个。函数名main全都由小写字母构成。在C++程序中所有系统给定的关键字必须都用小写字母拼写,程序中其他名字的大小写是要特别注意的。
一个函数是由若干条语句组成的。语句是组成程序的基本单元,而语句由单词组成,单词间用空格分隔,单词又由C++ 的字符所组成。C++ 程序中的语句必须以分号结束。计算机程序设计语言是计算机可以识别的语言,用于描述解决问题的方法,供计算机阅读和执行。计算机语言经历了机器语言、汇编语言、高级语言和面向对象语言的发展过程。软件开发方法也经历了面向机器的方法、面向过程的方法和面向对象的方法。
C++语言既支持面向过程,又支持面向对象,是目前应用最广、最成功的面向对象语言。本章小结(ChapterSummary)一、单项选择题
1.最初的计算机编程语言是()。
A.机器语言B.汇编语言C.高级语言 D.低级语言
2.下列各种高级语言中,()不是面向对象的程序设计语言。
A.Java
B.PASCAL
C.C++ D.Delphi习题1(Exercises1)
3.结构化程序设计的基本结构不包含()。
A.顺序B.选择C.跳转 D.循环
4.()不是面向对象系统所包含的要素。
A.继承 B.对象 C.类 D.重载
5.下列关于C++ 与C语言的关系描述中,()是错误的。
A.C++ 和C语言都是面向对象的
B.C语言与C++ 是兼容的
C.C++ 对C语言进行了一些改进
D.C语言是C++ 的一个子集
6.下列()不是面向对象程序设计的主要特征。
A.封装 B.继承 C.多态 D.结构
7.下列关于对象概念的描述中,()是错误的。
A.对象就是C语言中的结构变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
8.下列关于类的概念描述中,()是错误的。
A.类是抽象数据类型的实现
B.类是具有共同行为的若干对象的统一描述体
C.类是创建对象的样板
D.类就是C语言中的结构类型
9.程序必须包含的部分是()。
A.头文件 B.注释
C.高级语言 D.数据结构和算法
10.C++ 对C语言作了许多改进,下列描述中()使C++语言成为面向对象的语言。
A.增加了一些新的运算符
B.允许函数重载,并允许函数有默认参数
C.引进了类和对象的概念
D.规定函数说明必须用原型
11.对象之间的相互作用和通信是通过消息进行的。下列()不是消息的组成部分。
A.接受消息的对象 B.要执行的函数的名字
C.要执行的函数的内部结构 D.函数需要的参数二、填空题
1.语言处理程序主要包括______、_______、_______三种。
2.汇编程序的功能是将汇编语言所编写的源程序翻译成由_________组成的目标程序。
3.编译过程一般分成5个阶段:________、语法分析、_______、代码优化和目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考地理一轮复习第三部分区域可持续发展-重在综合第五章区际联系与区域协调发展第35讲产业转移课时作业含解析新人教版
- 小学一年级英语教学计划
- 2024年湖北三峡职业技术学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 八年级道德与法治上册第一次月考测试卷作业课件新人教版
- 2024年淄博师范高等专科学校高职单招语文历年参考题库含答案解析
- 2024年浙江经济职业技术学院高职单招语文历年参考题库含答案解析
- 高考生物一轮复习课时作业二十五通过激素的调节及神经调节与体液调节的关系课件
- 多电子原子课件-完整版
- gh-bladed计算载荷步骤
- 二零二五年生态湿地除草与水质净化合同3篇
- 人工智能算法模型定制开发合同
- 申请行政复议的申请书范文模板
- 【MOOC期末】《形势与政策》(北京科技大学)期末慕课答案
- 2024年医疗健康知识科普视频制作合同3篇
- 2024年古董古玩买卖协议6篇
- QC/T 1209-2024汽车噪声与振动(NVH)术语和定义
- 安全风险隐患举报奖励制度
- 江苏省苏州市2023-2024学年高三上学期期末考试 数学 含答案
- 教学成果奖培育工作方案
- 药品省区经理管理培训
- DB32T 1589-2013 苏式日光温室(钢骨架)通 用技术要求
评论
0/150
提交评论