




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成都理工大学课 程 实 验 指 导 书课程名称:算法语言与程序设计课程性质:专业基础课实验学时:24适用专业:信息与计算科学编 写 者:王玉兰审 查 者:范安东编写日期:2007年 8月信息管理学院 编目 录1 课程实验目的12 课程实验要求13 课程实验内容2项目一 熟悉VC+开发环境2项目二 C+简单程序设计实现5项目三 函数的实现与应用8项目四 类与对象操作练习8项目五 数组、指针与字符串操作练习10项目六 继承和派生的实现11项目七 虚函数与多态性验证12项目八 流类库与输入/输出练习13项目九 异常处理练习(示例)14附录1 课程实验报告格式16附录2 算法语言与程序设计课程实验教学大纲191 课程实验目的算法语言与程序设计是一门实践性很强的课程,实践是最重要的环节,本实验课程的内容与理论课联系紧密,学生在理论课上获取的知识,需要在实验课上加深理解,融会贯通,同时实验课是培养学生动手能力和创新思维的重要教学环节。通过完成本实验课的实验,学生应能初步掌握常用算法分析和程序设计的基本技能、常用编程技术和面向对象程序设计技术。2 课程实验要求2.1 课程实验准备要求(1)要求学生在实验前学好教材或者相关的参考资料,复习实验所用的预备知识。这需要学生有自主的学习意识和整理知识的能力。(2)根据实验项目要求,完成实验前的相关算法分析和程序预设计工作,以便高效利用机时确保在有限上机时间内完成实验项目内容。2.2 课程实验过程要求实验过程主要包括:1使用Visual C+6.0开发环境,从创建VC+项目开始,按算法要求在VC+环境中编辑C+源程序,并完成编译运行调试过程;2分析程序运行结果的正确性,对错误原因进行分析并修正程序;3试使用不同的程序结构实现算法,比较不同实现程序的特点。2.3 课程实验报告要求在每一次实验后要求根据实验内容及实验报告的格式要求编写实验报告。报告格式见附录。2.4 课程实验考核要求实验成绩占总成绩的20%(实验成绩中实验态度、纪律占20%,预习及操作占60%,实验结果20%)。实习课无故缺席两次,扣除其全部实验成绩,缺席三次取消其考试资格。实习成绩采用五级记分制。3 课程实验内容项目一 熟悉VC+开发环境实验目的了解VC+的特点;熟悉VC+开发环境;学习使用VC+编辑、编译和运行C+控制台程序的过程。实验学时2学时实验准备1安装Visual C+6.0或以上版本的编译环境; 2掌握C+完整程序 概念;实验内容及步骤#include using namespace std;int main()cout Hello!n;cout Welcome to c+!n;使用VC+建立一个非图形化的标准C+程序Sam1_1.cpp,编译并运行。程序Sam1_1.cpp:1启动VC+6.0开发环境从“开始”菜单中选择“程序”Microsoft Visual Studio 6.0Microsoft Visual C+ 6.0,即可显示如图1-1所示的VC+6.0开发环境主窗口。图1-1 VC+启动界面2创建一个新工程项目(Project)单击文件(File)菜单中的新建(New)选项,弹出如图1-2所示对话框,按提示创建一个空的名为Sam1_1控制台工程。注意系统为自动创建工程文件夹,请查看相应文件夹下内容如图1-3所示。图1-2 VC+创建新的控制台工程界面图1-3 空控制台工程Sam1_1文件夹内的内容3在工程Sam1_1中创建C+源程序文件Sam1_1.cpp在菜单“工程”(Project)添加工程(Add to Project)新建(New),弹出新建对话框,如图1-4所示。按提示将程序Sam1_1.cpp内容编辑到工程中,如图1-5所示。图1-4 在工程Sam1_1中添加源程序文件图1-5 含C+源程序Sam1_1.cpp的工程4创建并运行可执行程序选择菜单命令 “编译”(Compiling)构建(Build) Sam1_1.exe 创建可执行程序;选择菜单命令“编译”执行(Execute) Sam1_1.exe ,观察屏幕显示内容。5关闭工作空间选择菜单命令“文件”关闭工作区(Close Workspace)项目二 C+简单程序设计实现实验目的学会编写简单C+程序;练习数据类型、变量、常量、运算符、表达式等的应用;练习结构化程序设计基本控制结构的运用、自定义数据类型的应用;简单的输入输出;了解包含头文件的作用;学习使用debug调试程序实验学时4学时实验准备1熟练掌握项目一的工作2.掌握数据类型、变量、常量、运算符、表达式等的概念和表示;3.掌握结构化程序设计基本控制结构及使用、自定义数据类型的使用;4 掌握简单的输入输出语句及格式。实验内容及步骤1C+数据和运算的表述方法及输入输出建立一个空的控制台应用工程Sam2-1,并输入下列程序Sam2_1.cpp练习不同类型常量、变量的表示,运算符的使用,表达式的构造,输入输出语句的使用。源程序Sam2_1.cpp:#include using namespace std;void main()/测试不同类型数据及表达式占用的内存空间int i_a=10;float f_b=20.30;double d_c=30.70;coutsizeof(int)=sizeof(int)endl;coutsizeof(short int)=sizeof(short int)endl;coutsizeof(long int)=sizeof(long int)endl;coutsizeof(unsigned int)=sizeof(unsigned int)endl;coutsizeof(unsigned short int)=sizeof(unsigned short int)endl;coutsizeof(char)=sizeof(char)endl;coutsizeof(unsigned char)=sizeof(unsigned char)endl;coutsizeof(float)=sizeof(float)endl;coutsizeof(double)=sizeof(double)endl;coutsizeof(long double)=sizeof(long double)endl;coutsizeof(int *)=sizeof(int *)endl;coutsizeof(int &)=sizeof(int &)endl;coutsizeof(int3)=sizeof(int3)endl;coutsizeof(6.2)=sizeof(6.2)endl;coutsizeof 2+6.2 =sizeof 2+6.2 endl;coutsizeof 2.0+6.2 =sizeof 2.0+6.2 endl;coutsizeof f+4.3 =sizeof f+4.3 endl;cout int(i_a+f_b+d_c)= int(i_a+f_b+d_c)endl;cout (int)f_b+d_c+i_a=(int)f_b+d_c+i_aendl;cout sizeof(int)f_b+d_c+i_a)=sizeof(int)f_b+d_c+i_a)endl;/测试+,-等算术运算符及运算赋值表达式 int a,b,c,d,m,n;a=5;b=5;c=5;a+=b+c+;cout1 a b cendl;a=5;b=5;c=5;a-=+b+c-;cout2 a b cendl;a=5;b=5;c=5;a*=b-c-;cout3 a b cendl;a=5;b=5;c=5;a/=5+b+-c+;cout4 a b cendl;/测试逻辑类型数据及相关运算a=5;b=6;c=7;d=8;m=2;n=2;cout0 b)&(n=cd)n= nendl;cout00 n= nendl;bool x=true,y=false,z=false;x=x|y&z;y=x&y|z;z=!(x!=y)|(y=z);cout5a xendl;cout5a yendl;cout5a z n;/测试位运算符unsigned int b_a=0x1234;unsigned int b_b=b_a2;unsigned int b_d=b_b&b_c;unsigned int b_e=b_b|b_c;unsigned int b_f=b_bb_c;unsigned int b_g=b_a;cout b_a=hexb_aendl;cout b_b=hexb_bendl;cout b_c=hexb_cendl;cout b_d=hexb_dendl;cout b_e=hexb_eendl;cout b_f=hexb_fendl;cout b_g=hexb_gendl;2基本控制结构程序设计建立一个空的控制台应用工程Sam2-2,输入例2-7并运行。(1)去掉源程序中的#include语句,重新编译,观察出现的问题。理解包含文件的作用。(2)改写程序,用for循环替换程序中的dowhile循环,完成相同功能,将程序另存为Sam2_2.cpp。3 VC+的debug调试功能建立一个空的控制台应用工程Sam2-3,输入源程序Sam2_3.cpp,编译并执行。源程序Sam2-3.cpp:#include using namespace std;const float PI = 3.1416;int main()int iType;float radius, a, b, area;cout iType;switch(iType)case 1:cout radius;area = PI * radius * radius;cout面积为:areaendl;break;case 2:cout a;cout b;area = a * b;cout面积为:areaendl;break;case 3:cout a;area = a * a;cout面积为:areaendl;break;default:cout 不是合法的输入值!2;(1)将程序编写完成并编译通过,使用快捷键F11或选择菜单命令“debug”Step Into进入调试状态。(2)利用观察窗口观察n值的变化。项目四 类与对象操作练习实验目的掌握类的定义和使用;掌握类对象的声明和使用;学习不同访问控制方式下成员的访问;观察构造函数和析构函数的执行过程;使用VC+的debug调试功能观察程序流程:跟踪观察类的构造函数、析构函数和成员函数的执行顺序。实验学时4学时实验准备1熟悉类定义,特别是类成员的访问控制形式;2熟悉类对象声明和使用方式;3熟悉构造函数和析构函数的功能。实验内容及步骤1声明一个CPU类该类中包含等级(rank)、频率(frequency)、电压(voltage)等属性,含run和stop两个公有成员函数,另有构造函数和析构函数。1)rank为枚举类型CPU_rank,可能的取值为P1,P2,P3,P4,P5,P6,P7;2)frequency单位为MHz,整型数;3)voltage是浮点类型值;4)run 函数和stop函数仅用于输出运行过程提示信息;以便了解程序执行过程。5)构造函数和析构函数中也要求写输出信息,以便了解构造函数和析构函数的调用顺序和时刻;6)在主程序中声明一个CPU对象,调用其成员函数,观察类对象构造函数和析构函数的调用顺序,以及成员函数的调用。7)使用VC+的debug调试功能观察程序流程:跟踪观察类的构造函数、析构函数和成员函数的执行顺序。2声明一个简单的Computer类该类中包含有芯片(cpu)、内存(ram)、光驱(cdrom)等数据成员,含run和stop两个公有成员函数,另有构造函数和析构函数。1)cpu为类CPU对象;2)ram和cdrom为两个布尔型变量;用于说明计算机是否配置了相应部件。3)run 函数和stop函数仅用于输出运行过程提示信息;以便了解程序执行过程。4)构造函数和析构函数中也要求写输出信息,以便了解构造函数和析构函数的调用顺序和时刻;5)在主程序中声明一个Computer对象,调用其成员函数,观察类对象构造函数和析构函数的调用顺序,以及成员函数的调用。3设计一个用于人事管理的People类该在包含编号(number)、姓名(name)、性别(sex)、出生年月(birth)、身份证号(id)等属性,以及用于输入及显示人员信息的成员函数input和display。1) birth为日期类(CTime)的对象;2) 要求包括不同的构造函数、拷贝构造函数和析构函数及内联成员函数。3) 在主程序中声明中People对象,并跟踪执行。项目五 数组、指针与字符串操作练习实验目的学习使用数组数据、字符串数据的组织和处理;掌握指针的使用、通过debug观察指针的内容及其所指的对象的内容;练习通过动态内存分配实现动态数组,体会指针在其中的作用;分别使用字符数组和标准C+库练习处理字符串的方法。实验学时4学时实验准备1熟悉数组的声明、初始化和使用;2熟悉指针的声明、初始化和使用,以及指针与数组的关系;3熟悉字符串的声明、初始化及与字符数组的关系; 实验内容及步骤1编写一个程序用于计算4*4整数矩阵的转置。要求:1)用二维数组保存矩阵;2)定义转置函数实现转置功能;3)注意使用不同的参数传递形式,实现函数调用。2修改上述程序,使用动态内存分配生成动态数组,用指针实现函数功能;3编写程序实现将两字符串连接的功能。要求:1)使用字符数组保存字符串;2)自定义连接函数而不使用系统函数。4使用CString类声明字符串对象,调用类成员函数实现两字符串连接功能;5利用项目四中定义的People类,在主程序中创建包含5个元素的对象数组,并调用相应成员函数对每个元素的数据信息并一次显示5个对象的数据。项目六 继承和派生的实现实验目的学习定义和使用类的继承关系,声明派生类;掌握不同继承访问控制方式下对基类成员的访问控制;学习利用虚基类解决重复继承产生的二义性问题。 实验学时4学时实验准备1熟悉类继承和派生的概念;2熟悉不同继承访问控制方式下派生类对象可以访问的基类成员;3熟悉单继承、多继承、重复继承的概念及产生二义性问题的原因。实验内容及步骤1测试不同继承访问控制方式下的访问限制声明一个基类Animal,包含私有整型数据成员age,公有成员函数Set(int n)用于为其成员Age赋值;构造Animal的派生类Dog,包含一个公有成员函数SetAge(int n)用于直接为Age赋值。要求:1)编写一程序,在主程序中声明一个Dog类对象,并调用其成员函数SetAge;编译该程序,观察编译结果;2)修改上述程序将Animal类中的成员Age改为公有,重新编译,观察编译结果;3)修改上述程序在主程序中调用Set函数为Age赋值,重新编译,观察编译结果;4)修改程序将Dog类的继承访问控制方式改为私有,在主程序中调用Set函数为Age赋值,重新编译,观察编译结果;2测试存在派生继承时构造函数和析构函数的调用顺序1)声明一个基类BaseClass,包含一个整型数据成员number和一个用于显示number值公有成员函数display,以及带输出信息的构造函数(对number初始化)和析构函数;2)构造其派生类DerivedClass,同样包含带输出信息的构造函数(间接对number初始化)和析构函数;3)编写一主程序,声明一个DerivedClass对象,调用display显示number值,观察构造函数和析构函数的调用顺序。3测试重复继承时二义性问题1)声明一个车类(Vehicle),包含Maxspeed、Weight等受保护的数据成员和公有display函数用于显示数据成员值,另有Run、Stop等公有成员函数;2)由此类派生出Bicycle类(含Height等属性)和Car类(含Seats等属性);3)由Bicycle类和Car类派生出Motorcycle类;4)编写一主程序,在其中声明一Motorcycle类对象,调用display函数,观察编译结果。5)在Bicycle类和Car类定义中将Vehicle改为虚基类,重新观察编译结果。项目七 虚函数与多态性验证实验目的掌握运算符重载的方法;学习使用虚函数实现动态多态性。 实验学时2学时实验准备1熟悉运算符重载的方法(成员函数或友元函数)2熟悉虚函数的概念及虚函数重定义的方法。 实验内容及步骤1向量类的设计(运算符重载) 声明一个向量类Vecter,要求:1)包含三个私有数据成员_x,_y,_z;2)可实现向量加减运算(利用运算符重载实现对+和-和重载)3)使用不同方式的运算符重载;4)使用主函数测试设计效果。2摩托车类的设计(动态多态性的实现)1)声明一个车类(Vehicle),包含Maxspeed、Weight等受保护的数据成员和公有虚函数display函数用于显示数据成员值,另有Run、Stop等公有成员函数;2)由此类派生出Bicycle类(含Height等属性)和Car类(含Seats等属性),都包含对虚函数display函数的重定义;3)由Bicycle类和Car类派生出Motorcycle类;包含对虚函数display函数的重定义;4)编写一主程序,在其中声明各类对象及Vehicle类指针,让Vehicle类指针指向其派生类对象,调用display函数,观察编译和运行结果。项目八 流类库与输入/输出练习实验目的熟悉流类库中常用的类及其成员函数的用法;学习标准输入输出及格式控制;学习文件的操作方式。实验学时2学时实验准备1熟悉流类库的概念和基本使用;2熟悉标准输入输出的概念和格式控制;3了解文件的操作的概念。 实验内容及步骤1通过给定程序学习流类库的使用及输入输出格式的控制运行下列程序,观察运行结果。/Sam11_1.cpp#include using namespace std;#define D(a) T #a endl; aofstream T(output.out);int main() D(int i = 53;) D(float f = 4700113.141593;) char* s = Is there any more?; D(T.setf(ios:unitbuf);) D(T.setf(ios:showbase);) D(T.setf(ios:uppercase);) D(T.setf(ios:showpos);) D(T i endl;) D(T.setf(ios:hex, ios:basefield);) D(T i endl;) D(T.unsetf(ios:uppercase);) D(T.setf(ios:oct, ios:basefield);) D(T i endl;) D(T.unsetf(ios:showbase);) D(T.setf(ios:dec, ios:basefield);) D(T.setf(ios:left, ios:adjustfield);) D(T.fill(0);) D(T fill char: T.fill() endl;) D(T.width(8);) T i endl; D(T.setf(ios:right, ios:adjustfield);) D(T.width(8);) T i endl; D(T.setf(ios:internal, ios:adjustfield);) D(T.width(8);) T i endl; D(T i endl;) / Without width(10) D(T.unsetf(ios:showpos);) D(T.setf(ios:showpoint);) D(T prec = T.precision() endl;) D(T.setf(ios:scientific, ios:floatfield);) D(T endl f endl;) D(T.setf(ios:fixed, ios:floatfield);) D(T f endl;) D(T.setf(0, ios:floatfield);) / Automatic D(T f endl;) D(T.precision(16);) D(T prec = T.precision() endl;) D(T endl f endl;) D(T.setf(ios:scientific, ios:floatfield);) D(T endl f endl;) D(T.setf(ios:fixed, ios:floatfield);) D(T f endl;) D(T.setf(0, ios:floatfield);) / Automatic D(T f endl;) D(T.width(8);) T s endl; D(T.width(36);) T s endl; D(T.setf(ios:left, ios:adjustfield);) D(T.width(36);) T s endl; D(T.unsetf(ios:showpoint);) D(T.unsetf(ios:unitbuf);)2编写一个文件输入输出操作程序,打开指定数据文件。有数据文件test.dat,要求使用C+程序读出并在每行前加行标号,输出到文件result.dat中。 项目九 异常处理练习(示例)实验目的正确理解C+的异常处理机制;学习异常处理的声明和执行过程。 实验学时2学时实验准备1熟悉异常处理的概念;2熟悉异常处理中三个关键字try,throw,catch的作用。 实验内容及步骤声明一个异常类CExpection,包含用来显示异常类型的成员函数Reason(),在子函数中触发异常,在主程序中处理异常,观察程序执行流程。参考程序如下:#include using namespace std;class CExceptionpublic: CException(); CException(); const char *Reason() const return Cexception类型的异常。; ;void fn1()cout 在子函数中触发CException类异常 endl; throw CException();int main() cout 进入主函数 endl; try cout 在try模块中,调用子函数 endl; fn1(); catch( CException E ) cout 在catch模块中,捕获到CException类型异常:; cout E.Reason() endl; catch( char *str ) cout 捕获到其它类型异常: str endl; cout 回到主函数,异常已被处理 endl;附录1 课程实验报告格式算法语言与程序设计课 程 实 验 报 告 项目名称:异常处理练习学生姓名:王 羽学生学号:200707020518指导教师:王玉兰完成日期:2007年5月18日1 实验内容 声明一个异常类CExpection,包含用来显示异常类型的成员函数Reason(),在子函数中触发异常,在主程序中处理异常,观察程序执行流程。2 程序设计根据要求完成程序如下#include using namespace std;class CExceptionpublic: CException(); CException(); const char *Reason() const return Cexception类型的异常。; ;void fn1()cout 在子函数中触发CException类异常 endl; throw CException();int main() cout 进入主函数 endl; try cout 在try模块中,调用子函数 endl; fn1(); catch( CException E ) cout 在catch模块中,捕获到CException类型异常:; cout E.Reason() endl; catch( char *str ) cout 捕获到其它类型异常: str endl; cout 回到主函数,异常已被处理 endl;3 程序运行结果及分析经过编译修改程序运行结果如下:4 实验体会该程序仅仅是用于演示异常的处理过程,要真正在实用系统中使用还需要做很多工作。要学习的知识还很多。5 实验考核成绩表上课纪律(20%)实验过程及结果(40%)实验报告质量(40%)教师评语:总分:教师签字:附录2 算法语言与程序设计课程实验教学大纲算法语言与程序设计课程实验大纲Algorithm Language and Programming课程类别:专业基础课课程学时:72课时实验学时:24课时(验证性实验14课时,综合、设计性实验10课时)适用专业:信息与计算科学,计算机科学与技术,信息工程,数学与应用数学编写人员:王茂芝负责审查:信管学院信息与计算科学专业课程实验大纲审查组编写年月:2006年12月修订年月:2006年12月一、课程实验的地位、作用和目的本课程是一门实践性很强的课程,实践是最重要的环节,本实验课程的内容与理论课联系紧密,学生在理论课上获取的知识,需要在实验课上加深理解,融会贯通,同时实验课是培养学生动手能力和创新思维的重要教学环节。通过完成本实验课的实验,学生应能初步掌握程序设计的基本技能、常用编程技术和面向对象程序设计技术。二、课程实验成绩评定1考核方式:考查。2评分标准:实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级数据分析师技能测试题库及答案解析
- 编校技能大赛试题及答案
- 初一英语期末试卷及答案
- 风湿病护理考试题及答案
- 预见性护理试题及答案解析
- 现代礼仪资料题库及答案
- 施工方案落实的统计表格
- 八年级道德与法治上册 第一单元 走进社会生活 第二课 网络生活新空间 第1框 网络改变世界说课稿 新人教版
- 2025年中国能源建设集团校园招聘笔试答题技巧与经验
- 2025年全国计算机等级考试三级模拟题及解析
- 2025年水面渔业养殖承包合同范本:水产养殖合作协议
- 2025年有害生物防治员初级理论知识考核试题及答案
- 新版2026统编版小学道德与法治三年级上册 第4课《 科技力量大》第1课时 科技改变生活和科技改变观念 教案设计(教案)
- 供应链金融操作指南
- 2025-2026学年湘教版(2024)初中地理七年级上册教学计划及进度表
- 2025年重庆八中宏帆中学小升初自主招生数学试题(含答案详解)
- 人教部编版道德与法治九年级下册教材解读及单元目标
- 财务尽职调查工作方案
- 焊接和切割作业的防火、防爆措施
- 人事任命书红头文件模板
- 探讨恶性肿瘤患者化疗后口腔溃疡治疗及护理的有效措施
评论
0/150
提交评论