文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计实验讲义

面向对象程序设计实验讲义

面向对象程序设计实验讲义
面向对象程序设计实验讲义

面向对象程序设计实验讲义

目录

实验一封装机制 (1)

一、实验目的 (1)

二、实验内容 (1)

三、实验要求 (3)

四、思考与练习 (4)

实验二继承机制 (5)

一、实验目的 (5)

二、实验内容 (5)

三、实验要求 (7)

四、思考与练习 (7)

实验三虚函数和动态绑定 (8)

一、实验目的 (8)

二、实验内容 (8)

三、实验要求 (11)

四、思考与练习 (11)

实验四运算符重载 (12)

一、实验目的 (12)

二、实验内容 (12)

三、实验要求 (14)

四、思考与练习 (14)

实验五文件I/O (15)

一、实验目的 (15)

二、实验内容 (15)

三、实验要求 (16)

四、思考与练习 (17)

附录VISUAL C++实验环境介绍 (18)

一、Visual C++简介 (18)

二、控制台应用 (18)

实验一封装机制

一、实验目的

1.掌握面向对象的基本概念,类的定义方法;

2.掌握类成员的访问权限及访问类成员的方法;

3.掌握内联函数;

4.掌握构造函数与析构函数的意义及使用方法。

二、实验内容

【范例】设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,完成赋值、修改、显示等功能的接口,并编写main函数测试,要求用一个对象初始化另一对象。

【分析】要确定一个矩形(四边都是水平或垂直方向,不能倾斜),只要确定其左上角和右下角的x和y坐标即可,因此应包括四个数据成员,left,right,top,bottom,即左右上下四个边界值。由构造函数对数据成员赋值,赋值函数完成未初始化的矩形赋值,修改函数可以修改各数据成员,显示函数则画出该矩形。【程序1】所有原代码作为一个文件保存

#include

class Rectangle {

int left, top ;

int right, bottom;

public:

Rectangle(int l=0, int t=0, int r=0, int b=0);

~Rectangle(){}; //析构函数,在此函数体为空

void Assign(int l, int t, int r, int b);

void SetLeft(int t){ left = t;} // 以下四个函数皆为内联成员函数

void SetRight( int t ){ right = t;}

void SetTop( int t ){ top = t;}

void SetBottom( int t ){ bottom = t;}

void Show();

};

// 构造函数,带缺省参数,缺省值为全0,在声明中指定

Rectangle::Rectangle(int l , int t, int r, int b) {

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Assign(int l, int t, int r, int b){

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Show(){

cout<<"left-top point is ("<

cout<<"right-bottom point is ("<

void main(){

Rectangle rect;

rect.Show();

rect.Assign(100,200,300,400);

rect.Show();

Rectangle rect1(0,0,200,200);

rect1.Show();

Rectangle rect2(rect1);

rect2.Show();

}

//将上述所有内容保存为rect.cpp(也可自命名)

【程序2】类的界面、类的实现以及main函数分开保存

class Rectangle {

int left, top ;

int right, bottom;

public:

Rectangle(int l=0, int t=0, int r=0, int b=0);

~Rectangle(){}; //析构函数,在此函数体为空

void Assign(int l, int t, int r, int b);

void SetLeft(int t){ left = t;} // 以下四个函数皆为内联成员函数void SetRight( int t ){ right = t;}

void SetTop( int t ){ top = t;}

void SetBottom( int t ){ bottom = t;}

void Show();

};

//将上述内容保存为rect.h

#include

#include “rect.h”

// 构造函数,带缺省参数,缺省值为全0,在声明中指定

Rectangle::Rectangle(int l , int t, int r, int b) {

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Assign(int l, int t, int r, int b){

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Show(){

cout<<”left-top point is (”<

cout<<”right-bottom point is (”<

}

// 将上述内容保存为rect.cpp

#include

#include “rect.h”

void main(){

Rectangle rect;

rect.Show();

rect.Assign(100,200,300,400);

rect.Show();

Rectangle rect1(0,0,200,200);

rect1.Show();

Rectangle rect2(rect1);

rect2.Show();

}

// 将上述内容保存为Exp6_1.cpp

三、实验要求

1.创建工程,录入上述源程序,以1个文件和多文件组织两种形式保存工程,

建立可执行文件并执行,观察结果;哪些函数是内联的?为什么?其他函数怎样说明为内联的?

2.修改上述程序,以键盘输入的方式输入矩形的坐标值,修改后再执行。

四、思考与练习

定义一个圆类(Circle),属性为半径(radius)和圆周长、面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。

实验二继承机制

一、实验目的

1.掌握继承与派生的关系及方法;

2.掌握在派生类构造函数中初始化基类成员;

3.掌握多重继承的方法;

二、实验内容

【范例】定义一个继承与派生关系的类体系,在派生类中访问基类成员。【分析】定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员;以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数;定义一个直线类,以两个点类对象作数据成员,定义显示、求面积及长度函数。编程测试所定义的类体系。

【程序】

#include

#include

#define PI 3.14159

class Point{

friend class Line;

protected:

double x, y ;

public:

Point(){x = 0 ; y = 0 ; }

Point(double xv,double yv){ x = xv; y = yv; }

double Area(){return 0;}

void Show() {

cout<<"x="<

start.Show();

cout<<"end point:\n";

end.Show();

}

};

void main(){

Point pt(0,0);

Circle cl(100,100,10);

Line ln1(0,0,100,100);

cout<

pt.Show();

cout<

cl.Show();

cout<

ln1.Show();

}

【注意】在Point类中,将Line类定义为友元,方便在Line中访问;Point的x 和y定义为Protected访问权限,便于派生类访问。注意派生类的构造函数中对基类数据成员的初始化方法,以及构造函数中对对象成员的初始化。

三、实验要求

1.建立工程,录入上述程序,改变数据实验之。

2.修改CPoint类数据成员x,y的访问权限为private,再运行,结果如何?

3.如果不将CLine设为CPoint的友元,应采取什么措施?为哪个类增加数据

或函数成员?

四、思考与练习

使用多重继承和虚基类实现工资管理。

【要求】某公司雇员(employee)包括经理(manager),技术人员(technician)和销售员(salesman)。开发部经理(developermanger),既是经理也是技术人员(salesmanager)。销售部经理(salesmanager),既是经理也是销售员。

【提示】

以employee类为虚基类派生出manager,technician和salesman类;再进一步多重派生出developermanager和salesmanager类。

employee类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。操作包括月薪计算函数(page()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。

technician类派生的属性有每小时附加酬金和当月工作时数,及研究完成进度系数。业绩工资为三者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。

salesman类派生的属性有当月销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。

manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。

而developermanager类,pay()函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。

salesamanager类,pay()函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。

【注意】pay()应用同名覆盖的方法。要求有拷贝构造函数,并测试是否正确。

实验三虚函数和动态绑定

一、实验目的

1.在掌握继承与派生关系的基础上,进一步理解虚函数与多态型的关系;

2.掌握运行时的多态性的实现。

二、实验内容

【范例】使用虚函数和抽象基类对实验二进行改进。

【要求】定义一个抽象基类CElement,提供显示、求面积等公共接口(虚函数),派生出CPoint、CLine、CCircle、CArc等图形元素类,并重定义(override)这些虚函数,完成各自的任务。再定义一个CElemList链表类,存储CElement的派生类。然后定义main函数,生成多个图形元素插入链表中,通过链表的头指针逐个访问链表中的元素,输出所有图形元素。

在这里,CElement是抽象基类,它不能提供具体的显示等操作,应将其成员函数定义为纯虚函数。只有采用指向基类的指针或对基类的引用进行调用,实现的才是动态联编,完成运行时的多态性。

【程序】

#include

#include

double const PI=3.14159;

class CElement {

public:

virtual void Show()=0;

virtual double Area() = 0;

CElement *Next;

};

class CPoint:public CElement{

friend class CLine;

protected:

double x,y;

public:

CPoint(){x = 0; y = 0; }

CPoint(double xv,double yv){x = xv;y = yv;}

double Area(){return 0;}

void Show(){

cout<<"x="<

start.Show();

cout<<"end point:\n";

end.Show();

cout<<"Length="<

}

};

class CElemList{

protected:

CElement *head; // 链表头指针定义为基类类型public:

CElemList():head(NULL){}

~CElemList();

void Insert(CElement *); // 插入元素

int Delete(CElement *); // 删除元素

void Show(); // 显示所有元素

CElement* GetHead(){ return head; } // 取得链表头};

CElemList::~CElemList(){

CElement *p = head,*p2;

while(p){

p2 = p;

p = p->Next;

delete p2;

}

return ;

}

void CElemList::Insert(CElement *elem){

elem->Next = head; // 在表头插入结点

head = elem;

}

int CElemList::Delete(CElement * elem){

CElement *p1 = head,*p2 = head;

while(p1&&p1!=elem)p2 = p1,p1 = p1->Next;

if(p1==elem){

if(p1!=head) p2->Next = p1->Next;

else head = head->Next;

delete p1;

return 1;

}

else return 0;

}

void CElemList::Show(){

CElement *p = head;

while(p){ // 通过基类指针调用派生类成员函数,实现运行时多态性

p->Show();

p = p->Next;

}

return ;

}

void main(){

CElemList list; // 定义链表类对象

CElement *p1 = new CLine(100,100,100,200);

list.Insert(p1);

list.Show();

cout<

p1 = new CCircle(200,100, 20);

list.Insert(p1);

list.Show();

cout<

list.Delete(p1);

list.Show();

cout<

}

三、实验要求

1.建立工程,录入上述程序,改变数据实验之。

2.若将CElement的两个虚函数virtual关键词删除,再运行,结果如何?

3.为保证类的通用性,析构函数总是定义为虚函数,修改之。养成这种习惯。

四、思考与练习

修改实验二中思考与练习题,pay()采用虚函数,动态联编。

实验四运算符重载

一、实验目的

1.掌握友元函数和友元类的应用;

2.掌握运算符重载为成员函数和友元函数的方法。

二、实验内容

【范例】为实验一的Rectangle类增加加减复合赋值和加减运算符重载函数。加减复合赋值语义定义为固定长方形的左上角,对右下角的坐标进行加减运算,使新矩形的长宽为原两矩形长宽之和或差,对加和减复合赋值定义为成员函数。两个矩形加减运算定义为友元函数。

【程序】

#include

class Rectangle {

int left, top ;

int right, bottom;

public:

Rectangle(int l=0, int t=0, int r=0, int b=0);

~Rectangle(){}; //析构函数,在此函数体为空

void Assign(int l, int t, int r, int b);

void SetLeft(int t){ left = t;} // 以下四个函数皆为内联成员函数

void SetRight( int t ){ right = t;}

void SetTop( int t ){ top = t;}

void SetBottom( int t ){ bottom = t;}

void Show();

void operator +=(Rectangle&);

void operator -= (Rectangle&);

friend Rectangle operator+ ( Rectangle &, Rectangle&);

friend Rectangle operator- ( Rectangle &, Rectangle&);

};

Rectangle::Rectangle(int l , int t, int r, int b) {

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Assign(int l, int t, int r, int b){

left = l; top = t;

right = r; bottom = b;

}

void Rectangle::Show(){

cout<<"left-top point is ("<

cout<<"right-bottom point is ("<

void Rectangle::operator+=(Rectangle& rect){

int x = rect.right - rect.left;

int y = rect.bottom - rect.top;

right += x;

bottom += y;

}

void Rectangle::operator-=(Rectangle& rect){

int x = rect.right - rect.left;

int y = rect.bottom - rect.top;

right -= x;

bottom -= y;

}

Rectangle operator- ( Rectangle &rect1, Rectangle& rect2){ //矩形相减,从rect1中减去rect2的长度和宽度

rect1 -= rect2;

return rect1;

}

Rectangle operator+ ( Rectangle &rect1, Rectangle& rect2){ //矩形相加,从rect1中加上rect2的长度和宽度

rect1 += rect2;

return rect1;

}

void main(){

Rectangle rect;

rect.Show();

rect.Assign(100,200,300,400);

rect.Show();

Rectangle rect1(0,0,200,200);

rect1.Show();

rect += rect1;

rect.Show();

rect -= rect1;

rect.Show();

Rectangle rect2;

rect2 = rect+rect1;

rect2.Show();

rect2 = rect-rect1;

rect2.Show();

}

三、实验要求

1.建立工程,录入上述程序,改变数据实验之。

2.若将加减运算重载为成员函数,如何实现?

3.为矩形类再增加一个静态数据成员Counter,统计共产生了多少个矩形对象。

为Counter添加定义、赋初值及随程序运行而变化的代码,并在main函数中对其输出。注意静态数据成员应该有定义性说明。

四、思考与练习

改善复数类,增加重载的运算符:-、-=、*=和/=,实现完整的复数的加减乘除运算,定义++为辐角不变而模加1,重载前后++(++对普通的复数表达方式a+ib 为:a+a/sqrt(a*a+b*b),b+b/sqrt(a*a+b*b))。并定义main函数检测之。要求分别重载为成员函数和友元函数。

实验五文件I/O

一、实验目的

1.掌握文件流的打开、读写与关闭;

2.掌握文件的随机访问;

3.掌握用构造函数打开文件来创建对象,用析构函数撤销对象并存入文件。

二、实验内容

【范例】建立一个应用程序,包括数据输入、存盘、读盘、操作数据后存储。通过随机数函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中。然后读出这些数,在内存中对它们进行增序排序,再将排序后的数以文本方式逐个写入file.out文件中。

【程序】用C++的文件流进行文件管理,用流类的函数进行文件读写。

#include

#include

#include

#include

#include

void sort(int [],int);

main(){

fstream dat, out; //定义文件流对象

int i,a[20],b[20];

dat.open("file.dat",ios::binary|ios::out|ios::in);//为读写打开二进制文件

if(!dat){

cout<< ("cannot open file\n");

exit(0);

}

for(i=0;i<20;i++){

a[i]=rand();

dat.write((char*)&a[i],sizeof(int));//将二十个数写入文件

}

dat.seekg(0); //将文件指针移至文件头

for(i=0;i<20;i++){

dat.read((char*)&b[i],sizeof(int));//读出二十个数

}

sort(b,20); //调用排序函数

out.open("file.out",ios::out); //为输出打开文本文件

if(!out){

cout<<"cannot open file\n";

exit(0);

}

for(i=0;i<20;i++){ //将排序后数据写入文本文件out<

}

out<<'\n';

for(i=0;i<20;i++) cout<

cout<<"\n";

out.close(); //关闭文件

dat.close();

return 0;

}

void sort(int x[],int m){ //排序函数

int i,j,k,t;

for(i=0;i

k=i;

for(j=i+1;j

if(k!=i){

t=x[i];x[i]=x[k];x[k]=t;

}

}

}

程序执行后,file.out文件中内容为:

41 491 2995 4827 5436

5705 6334 9961 11478 11942

15724 16827 18467 19169 23281

24464 26500 26962 28145 29358

三、实验要求

1.建立工程,录入上述程序,改变数据实验之。

2.改造为一个类:a[20],b[20]为私有数据成员;在构造函数中用随机数发生器

为a[]赋值,并打开两个文件;在析构函数中关闭文件;其余各种操作定义

为成员函数。

四、思考与练习

两个文件中各有若干个以递增次序排列的实数,编写一个程序将这两个文件中的数统一排序后写入到一个新的文件中。并检验新文件数据是否正确。

附录Visual C++实验环境介绍

一、Visual C++简介

Visual C++是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发包。VisualStudio提供了一整套开发Internet和Windows应用程序的工具,包括VisualC++, Visual Basic, Visual Foxpro, Visual InterDev, Visual J++以及其他辅助工具,如代码管理工具Visual SourceSafe和联机帮助系统MSDN。Visual C++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。

从最早期的1.0版本,发展到最新的6.0版本,Visual C++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的6.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。

Visual C++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种。

Visual C++集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。Visual C++软件包中的Developer Studio就是一个集成开发环境,它集成了各种开发工具和VC编译器。程序员可以在不离开该环境的情况下编辑、编译、调试和运行一个应用程序。IDE中还提供大量在线帮助信息协助程序员做好开发工作。Developer Studio中除了程序编辑器、资源编辑器、编译器、调试器外,还有各种工具和向导(如AppWizard和ClassWizard),以及MFC类库,这些都可以帮助程序员快速而正确地开发出应用程序。

二、控制台应用

用AppWizard建立一个控制台应用,在终端上输出”Hello”。

术语:“控制台应用程序”是一个在DOS窗口中运行的基于字符的程序。

1)创建第一个应用

首先创建一个项目(project),项目将代表你的应用,存放你应用的所有信息,包括源文件、资源文件、编译连接设置等。创建项目的步骤为:

(1)启动Developer Studio

(2)从主菜单中选择File|New,将显示出New对话框

(3)选择Projects标签,并从列表中单击Win32 Console Application

面向对象程序设计教程 (马石安版)

第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

应用化学综合实验思考题

草酸盐共沉淀法制备Y2O3:Eu纳米荧光粉 1、过滤所得前驱体放在马弗炉中焙烧的目的是什么? 答:当温度升高到一定值时,盐熔化形成熔体,熔盐提供了液态的环境,加快了固相反应物之间的传质速度,使得反应更容易进行,同时,由于熔盐双电子层效应,生成物之间又不容易团聚,因而更易获得分散细小粉体,随着温度增加,熔盐促进了Y3+,Eu3+及配位体的扩散起着熔焊作用,使激活剂更容易进入基质且分配均匀并促使基质结晶更完整,表面缺陷减少,发光亮度得以提高。 2、查阅文献,制备稀土发光材料的常用方法有哪些,各有何优缺点? 答:1)高温固相法 优点:微晶晶体质量优良,表面缺陷少,余光辉效率高,利于工业化生产。 缺点:烧结温度高,保温时间长,设备要求高。 2)软化学法 (1)溶胶—凝胶法 优点:可获得更细的粒径,无需研磨,且合成温度比传统合成方法更低。 缺点:发光效率低,余光辉性能差,结晶质量不好,晶粒形状又难以控制,不易工业化。(2)低温燃烧合成法 优点:具有安全、省时、节能的优点。 缺点:同上。 (3)水热合成法 优点:产物物相纯度高,可获得较小颗粒。 缺点:同上。 3)物理合成法 (1)CO2激光加热气相沉积法 优点:可获得的粒径更小的稀土纳米发光材料,也可通过控制蒸发室的气压来调整纳米微粒粒径的大小 缺点:当纳米微粒中Eu的含量超过0.7%时,将会出现单独的Eu2O3相Y2O3:Eu3+ (2)微波辐射合成法 优点:选择性加热、受热均匀、副反应减少、产物相对单纯;加热速度快,省时,能耗小。缺点:采用原料为极少吸收微波的氧化物,必须采取措施,如在被加热原料外覆盖微波吸收介质,才能有效的利用微波法合成发光材料。 荧光防伪材料的制备 3、实验时溶液PH过大或则过小有何影响? 答:PH过大,溶液中会产生Eu(OH)2白色沉淀。 PH过小,溶液中颜色消失。 4、查阅文献,除了Phen和TTA之外,稀土配合物发光材料的代表性配体还有哪些? 答:有三乙酰丙酮、三苯基氧膦,PMIP联吡啶等。 5、稀土离子Eu3+形成的产物一般发什么颜色光?为什么? 答:一般发红光,因为稀土铕配合物的荧光更强,Eu3+与5D0-7F2的特征发射,其发光波长为614nm左右,半峰宽小于10nm,其发红色光。

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

面向对象程序设计复习资料

1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪米特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。 (3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自己所属类中定义的这个操作方法去执行,从而产生不同的结果。 6.RUP(统一软件开发过程):是一个面向对象且基于网络的程序开发方法论。RUP好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。

应用化学专业简介

应用化学专业简介 培养目标 本专业主要培养具备化学的基础知识、基本理论和较强实验技能,相关的工程技术知识和基本技能,能在石油、化工、制药等行业从事生产、质量检验、新产品应用及开发等工作,适应社会主义现代化建设事业需要的,德、智、体、美全面发展的高级技术应用型人才。 就业领域 毕业生主要在石油、化工、制药、环保及相关行业从事以下工作: 1.各种原料及成品的分析测试 2.化工、石油炼制等生产操作、技术和质量管理 3.石油产品的调配、分析与营销 4.精细化学品、油田化学剂的研制与开发 5.分析仪器的维护和保养,化验室的技术与质量管理 6.分析仪器营销 主要课程 分析化学、有机化学、物理化学、化工原理、石油产品分析与应用、油田化学原理与技术、化工设备和仪表、精细合成单元反应 新增课程 石油炼制、化工设备与仪表、化工仿真实习、石油商品学、精细化工概论、工业分析 主要课程介绍 1.无机化学:化学反应中有关平衡、氧化还原、周期率、物质结构等基本理论,元素和化合物的基本知识,化学反应的基本规律。 2.有机化学:有机物的命名、结构、物理性质和化学性质、实际应用。有机化合物的典型反应及重要合成方法,各类有机化合物相互转变的基本规律,有机化合物结构与性质关系。 3.分析化学:化学定量分析方法,包括酸碱滴定、配位滴定、氧化还原滴定、沉淀滴定、重量分析以及吸光光度法的基本原理、结果计算和实际应用。 4.物理化学:学习化学变化基本规律,内容包括化学热力学、化学动力学、电化学、统计热力学、表面化学及胶体化学初步。 5.高分子化学:高分子研究对象、聚合物分类、自由基均聚与共聚、阳离子聚合、阴离子聚合、缩合聚合等的基本原理、反应动力学以及实施方法。 6.仪器分析:紫外光谱法、红外光谱法、原子吸收光谱法、电位分析法、气相色谱法和液相色谱法的基本原理、分析方法及实际应用,相关仪器操作技术。7.化工原理:将复杂的化工工艺过程抽象为数量有限的单元操作,学习化工单元操作中的基本原理、典型设备及其计算。

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.wendangku.net/doc/3d3415101.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

微机软件实验习题与答案(完整版)

微机原理软件实验 实验1 两个多位十进制数相加的实验 实验容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个存单元中(低位在前),结果送回DATA1处。完整代码如下: DATAS SEGMENT ;此处输入数据段代码 STRING1 DB'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:','$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H INPUT1: ;输入第一个数 MOV AH,01;输入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV [SI],AL INC SI

JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;输入第二个数 MOV AH,01;输入字符至AL INT 21H CMP AL,'/' JE L2 MOV [DI],AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空进位标志位CF MOV CX,6

应用化学综合实验实验报告5

无 机 综 合 实 验 报 告 理学院

题目Ⅰ利用粗铜粉制备硫酸四氨合铜(Ⅱ) 一、实验目的: 1.掌握利用铜粉制备硫酸铜的方法。 2.用精制的硫酸铜通过配位取代反应制备硫酸四氨合铜(Ⅱ)。 3.掌握和巩固倾析法、减压过滤、蒸发浓缩和重结晶等基本实验操作。 4.掌握固体的灼烧、直接加热、水浴加热和溶解等操作。 二、实验原理 1.利用废铜粉灼烧氧化法制备CuSO4·5H2O: 先将铜粉在空气中灼烧氧化成氧化铜,然后将其溶于硫酸而制得: 2Cu + O2 === 2CuO(黑色) CuO + H2SO4 === CuSO4 + H2O 由于废铜粉不纯,所得CuSO4溶液中常含有不溶性杂质和可溶性杂质FeSO4、Fe2(SO4)3及其他重金属盐等。Fe2+离子需用氧化剂H2O2溶液氧化为Fe3+ 离子,然后调节溶液pH≈4.0,并加热煮沸,使Fe3+离子水解为Fe(OH)3沉淀滤去。其反应式为 2Fe2+ + 2H+ + H2O2 === 2Fe3+ + 2H2O Fe3+ + 3H2O === Fe(OH)3↓+ 3H+ CuSO4·5H2O在水中的溶解度,随温度的升高而明显增大,因此粗硫酸铜中的其他杂质,可通过重结晶法使杂质在母液中,从而得到较纯的蓝色水合硫酸铜晶体。 硫酸铜晶体的化学式可写为[Cu(H2O)4]SO4·H2O,习惯上简写为CuSO4·5H2O,其中5个水分子结合的方式有所不同,Cu2+有空轨道,每个Cu2+可以跟4个水分子形成配位键,离子还可与1个水分子里的H原子形成氢键。 水合硫酸铜在不同的温度下可以逐步脱水,其反应式为 CuSO4·5H2O === CuSO4·3H2O + 2H2O(48℃) CuSO4·3H2O === CuSO4·H2O + 2H2O(99℃) CuSO4·H2O === CuSO4 + H2O(218℃) 2.硫酸四氨合铜(Ⅱ)([Cu(NH3)4]SO4·H2O)的制备 硫酸四氨合铜(Ⅱ)([Cu(NH3)4]SO4·H2O)为蓝色正交晶体,在工业上用途广泛,主要用于印染,电镀,纤维,杀虫剂的制备和制备某些含铜的化合物。本实验通过将过量氨水加入硫酸铜溶液中反应得硫酸四氨合铜。离子反应式为: [Cu(H2O)6]2+ +4NH3 +SO42- ====[Cu(NH3)4]SO4·H2O+5H2O 硫酸四氨合铜溶于水但不溶于乙醇,因此在硫酸四氨合铜溶液中加入乙醇,即可析出深蓝色的[Cu(NH3)4]SO4·H2O晶体。 三、实验仪器及试剂 1.仪器: 托盘天平、恒温烘箱、干燥器、温度计(300℃)、瓷坩埚、研钵、烧杯(50mL)、电炉、布氏漏斗、抽滤瓶、精密pH试纸、蒸发皿、表面皿,水浴锅、量筒(10mL)。 2.试剂: 铜粉、无水乙醇、H2SO4(2mol·L-1)、H2O2(3%)、K3[Fe(CN)6](0.1mol·L-1)、NaOH(2mol·L-1)、氨水NH3·H2O(1:1)。 四、实验步骤

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

C++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

微机原理实验讲义

微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月

汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.wendangku.net/doc/3d3415101.html,,使用https://www.wendangku.net/doc/3d3415101.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试

>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START

南京信息工程大学滨江学院C++面向对象程序设计期末复习资料-填空考点

一、考点 1.面向对象的四大特性是:抽象、封装、继承、多态 2.构造函数的作用是:创建对象时为对象赋初值 析构函数的作用是:释放对象占用的资源 3.根据继承的基类的多少,C++将继承分为:单继承和多继承 4.C++进行动态内存分配的一对运算符是:new和delete 5.纯虚函数:是一个在基类中说明的虚函数,它在该类基类中没有定义, 但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。 抽象类:如果一个类至少有一个纯虚函数,那么就称该类为抽象类。 带有纯虚函数的类是抽象类,抽象类不能实例化。 6.对象拷贝有两种方式:浅拷贝和深拷贝 7.变量的生存期分为:动态生存期、静态生存期 8.C++里的逻辑值:非0表示真,0表示假 9.C++里函数参数传递方式有:值传递、地址传递、引用传递 10.静态成员变量属于类,所有的对象共享。 11.根据访问控制,C++将继承分为:公有继承、私有继承、保护继承 12.类的访问属性包括:公有、私有、继承 13.用const修饰的对象,其意思是:对象的状态不能被修改 14.拷贝构造函数被调用的场合有3种,分别是:用对象作参数构造对象时、 为函数实参对象赋值时、函数返回对象时 15.C++里的模版包括:函数模版、类模版 16.命名空间:一个由程序设计者命名的内存区域

作用:类似于操作系统中的目录和文件的关系。名字空间建立了一些 相互分隔的作用域,把全局标识符分隔开,避免产生名字冲突。 17.虚基类的作用P124 如果一个派生类有多个直接基类,而这些基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类成员的多份同名成员。但由 于保留共同基类的多份成员,不仅占用较多的存储空间,还增加了访问 这些成天元时的困难,容易出错。C++提供了虚基类的方法,使得在继 承间接共同基类时只保留其一份成员。 18.多态及其分类P145 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名 函数。 面向对象的多态性分为:参数多态,包含多态,重载多态,强制多态 前两种称为通用多态,后两种称为专用多态 19.虚函数与重载函数的比较 ....P153 (1)函数重载处理的是同一层次上的同名函数问题,而虚函数处理的是同一类族中不同派生层次上的同名函数问题,前者是横向重载,后者可以理解为纵向重载。但与重载不同的是:同一类族的虚函数的首部是相同的,而函数重载时函数的首部是不同的。 (2)重载函数可以是成员函数或普通函数,而虚函数只能是成员函数。 (3)重载函数调用是以所传递参数序列的差别作为调用不同函数的依据;虚函数是根据对象的不同去调用不同类的虚函数。

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

微机原理与接口技术实验讲义

实验一熟悉汇编语言环境及建立汇编的过程 一、实验目的 1.熟悉汇编语言环境。 2.掌握汇编语言的上机过程。 3.了解汇编语言程序的编程格式。 二、实验要求 通过一个小程序的编写达到以上的实验目的。 三、实验原理 1.汇编语言程序的上机过程 用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下: 四、实验步骤 1、打开编辑环境 2、输入程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BL,40H ADD AL,BL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM 4、建立汇编过程 (1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM 汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需 要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。 (2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ 5、执行程序:C:\MASM>1.EXE

实验二两个多位十进制数相加的实验 一、实验目的: 1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。 二、实验内容: 将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验原理 1.ADC 带进位相加指令的功能和指令格式 2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式 3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用 4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.wendangku.net/doc/3d3415101.html,/sites/ccf/ 2. 计算机爱好者协会https://www.wendangku.net/doc/3d3415101.html,/forum.php 3.C语言中文网https://www.wendangku.net/doc/3d3415101.html,/cpp 5.中国悠悠期刊网https://www.wendangku.net/doc/3d3415101.html,/ 6. 中国知网https://www.wendangku.net/doc/3d3415101.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

《应用化学实验Ⅰ》课程实验教学大纲

《应用化学实验Ⅰ》课程实验教学大纲 一、制定实验教学大纲的依据 根据本校《2004级本科指导培养计划》和应用化学教学基本要求而编写。 二、本实验课在专业人才培养中的地位和作用 《应用化学实验?》密切配合有机波谱分析和现代仪器分析的理论课,使学生在具有一定专业基础知识和技能的基础上,运用现代分析测试仪器,结合计算机知识进行各种试样组分的分离分析、成分测定、结构分析以及分析数据的计算机处理。 三、本实验课讲授的基本实验理论 本实验课程讲授电化学分析、高压液相色谱仪、气相色谱仪、原子吸收光谱仪以及紫外光谱仪、红外光谱仪等大型精密仪器的基本原理和基本操作方法;使学生掌握高压液相色谱、气相色谱分离混合物的基本操作与技能,掌握原子吸收光谱法测定金属元素的方法;掌握红外光谱仪、紫外光谱仪的制样技术和一般谱图的解析方法。 四、本实验课学生应达到的能力 1、掌握电位法测定离子浓度的基本原理和实验技术 2、掌握高压液相色谱、气相色谱分离混合物的基本操作与技能; 3、掌握原子吸收光谱法测定金属元素的方法; 4、了解紫外光谱仪、红外光谱仪的基本组成和构造,掌握制样技术和一般谱图的解析方法。 五、学时、教学文件 学时:本课程总学时为32学时,实验32学时。 教学文件:《应用化学实验指导书》,杜宝中编,校内印刷,2004 要求:学生实验前预习实验内容,并写出预习报告。指导教师应概述实验的原理、方法及设备使用等,具体实验步骤和实际数据处理由学生独立完成。 六、实验考核办法与成绩评定 实验成绩分平时成绩和考试成绩两部分,平时成绩占60%,考试成绩以最后的综述论文成绩记入总分,占实验成绩的40%。总成绩及格可获得学分,不及格者需重修。 七、仪器设备及注意事项 仪器设备:红外光谱仪、紫外光谱仪、原子吸收光谱仪、气和色谱、高效汇相色谱仪、PH/my 计。 注意事项:注意保护设备,严格按仪器使用规则操作,维持仪器的完好率。

微机原理上机实验答案

实验01A 将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器 程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AX,0FFFFH MOV BX,AX MOV CX,AX MOV DX,AX MOV SI,AX MOV DI,AX MOV BP,AX ;============================== RET START ENDP CODE ENDS END STT 实验01B 将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中程序如下: DA TA SEGMENT ORG 1000H H1 DB 5 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AL,0FFH MOV DI,1000H MOV CX,5 ;循环5次 LP1:MOV [DI],AL ;FF放入1000H-1004H中 INC DI

DEC CX JNZ LP1 ;============================== RET START ENDP CODE ENDS END STT 实验02A 编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=? 程序如下: DA TA SEGMENT ORG 1000H H1 DB 10 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX Mov ax,dseg Mov ds,ax ;============================== MOV SI,1000H ;不带最高位进位的全加器 MOV DI,1003H MOV BX,1006H MOV CX,3 CLC AA: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL PUSHF ;保护FR,这里其实没有必要,因为INC不会产生进位 INC SI INC DI INC BX POPF LOOP AA

相关文档