实验1 编辑与调试环境的熟悉
1、实验目的
熟悉VC编程环境,学会独立使用VC++。
了解如何利用VC++编辑、编译、链接和运行一个C++程序。
通过运行简单的C++程序,初步了解C++源程序的调试手段及其方法。
加深认识C++对C的扩充语法的正确书写格式。
2、实验要求
熟悉VC++6.0编辑环境,了解各大菜单项及其工具栏中各工具按钮的功能。 创建一个源文件,在该源文件中完成第3章习题30的编程。
借助编译器进行语法检查,检验源程序是否合法。在此程序编制的基础上掌握常用的调试程序的方法、手段,了解调试中常用的快捷键的区别。
练习使用常用的调试程序的方法和手段,善于使用快捷键。掌握F5,F10,F11,F9等调试常用键,watch窗口的作用及区别。
掌握如何设置断点、跟踪程序的执行情况等等。
3、内容
教材第3.30题: 下面是一个计算器类定义,请完成该类成员函数的实现。
class counter
{
public:
counter(int number);
void increment( ); //给原值加1
void decrement( ); //给原值减1
int getvalue( ); //取得计算器的值
int print( ); //显示计数private:
int value;
};
实验2 有关类和对象类的实验
1、实验目的
掌握声明类的方法,类和类的成员的概念
掌握定义类和对象的基本用法
掌握对象成员的三种访问方式
理解类的封装性和信息隐蔽
2、实验要求
●构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元
素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。显示每个对象的qu*price 的值。
●选做题目:实现如下类:
class Date
{
public:
void printDate( ); //显示日期
void setDay(int d ); //设置日的值
void setMonth(int m); //设置月的值
void setYear(int y ); //设置年的值
private:
int day,month, year;
};
根据注释语句的提示,实现类Date的成员函数。
在主程序中通过实例化对象的形式调用各成员函数,了解对象成员的三种访问方式。
在主程序中完成设置日期的显示。
3、内容
类和对象的基本用法。
成员函数在类外定义的格式
空闲时间完成:电子秒表的设计。
说明 每个实验做完以后,按照实验报告模板格式完成相应的实验报告,存储为word 文档,最终提交的实验文档数量种类和命名原则如下例:(不按要求 者拒收) 目录结构图目录实验 1 内的文件种类和命名原则实验报告成绩将作为平时成绩的一部分计算到期末总成绩中。 实验报告严禁相互抄袭,一经发现抄袭和被抄袭者本次实验按零分计算!
实验1 C 的实验环境和C 语言的数据类型 1. 实验目的 ⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C 程序。 ⑵ 通过运行简单的C 程序,初步了解C 源程序的特点。 ⑶ 掌握C 语言数据类型, 熟悉如何定义一个整型、字符型和实型的变量,以及对它 们赋值的方法。 ⑷ 掌握不同的类型数据之间赋值的规律。 ⑸ 学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减(--)运算符的使用。 2. 实验内容和步骤 检查所用的计算机系统是否已安装了C 编译系统并确定他所在的子目录。 进入所用的集成环境。 熟悉集成环境的界面和有关菜单的使用方法。 输入并运行一个简单的、正确的程序。 3. 实验题目 输入下面的程序 # include "stdio.h" void main() { printf( "This is a c program.\n" ); } 程序无误,其运行的结果为:(请填写) ⑵ 输入并编辑一个有错误的 C 程序。 # include “ stdio.h ” void main() { int a,b,sum a=123; b=456; sum=a+b print( “ suism%d n” ,sum); } 运行后程序出现几处错误,请分别指出,并逐一更改: ⑶ 若k,g 均为int 型变量, 则下列语句的输出为, : # include "stdio.h" void main() { int k, g; k=017; g=111;
简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。
面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include
实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {
int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>