程序设计专题实践指导书

上传人:无*** 文档编号:86629774 上传时间:2022-05-08 格式:DOC 页数:16 大小:96.50KB
收藏 版权申诉 举报 下载
程序设计专题实践指导书_第1页
第1页 / 共16页
程序设计专题实践指导书_第2页
第2页 / 共16页
程序设计专题实践指导书_第3页
第3页 / 共16页
资源描述:

《程序设计专题实践指导书》由会员分享,可在线阅读,更多相关《程序设计专题实践指导书(16页珍藏版)》请在装配图网上搜索。

1、执 笔 人:杨崇实验一 利用梯形法求函数的积分。一 实验目的:通过实验了解并掌握利用计算机实现数值计算的基本原理与方法,了解数学理论与利用计算机进行实际应用的联系与区别,培养针对数学模型进行建模的能力,掌握计算特殊函数积分的基本方法和技巧。二 实验内容:在Turbo C 平台下编程利用梯形法求出使用常规方法无法求出原函数的特殊函数的积分值,积分函数为。要求将积分结果的精度控制在要求的范围内。三 实验原理:普通的函数可以通过寻找原函数求得定积分值,而某些特殊函数是无法找到原函数的,那么,利用牛顿莱布尼兹公式求积分法将无所适从,通过积分中值定理我们知道:在积分区间a,b内存在一点,成立,也就是说,

2、底为b-a而高为f()的矩形面积恰等于所求曲面梯形的面积。问题在于点的具体位置一般是不知道的,因而难以准确f()的值。我们将f()成为区间a,b上的平均高度,这样,只要对平均高度f()提供一种算法,相应地获得一种数值求积分法。如果我们用两个端点的高度f(a),f(b)取算术平均值作为f()的近似值,这样导出的求积公式Tf(a)+f(b)便是我们所熟悉的梯形公式。设将积分区间a,b划分为n等份,步长h=(b-a)/2,分点为xk=a+kh,k=0,1,2,3,.,n。利用低阶的牛顿轲特斯公式求得每个子区间xk,xk+1上的积分值Ik,然后再求和,用来作为所求积分I的近似值。复化梯形公式:Tn=f

3、(xk)+fxk+1)= f(a)+2f(xk)+f(b)。四、实验步骤1 打开开始-程序-附件-命令提示符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。五、实验中应注意的问题:1 当变量值为0时,根据罗必塔法则函数值取1。2 对步长进行运算时,应采用for循环,可避免产生死循环。3 运算时数值类型应为float 或者double,打印数据时,小数点后应保留足够的位数。4 在取除数时,由于使用了实型数据,因此分子或分母的数字部分也应该采取实数形式:如1.0x,否则将无法得到正确结果。5 上机时应注意随时存盘,

4、尤其是调试时,避免因为死循环造成无法正常退出而丢失源文件或数据。六、实验报告内容:1 实验原理及实现方法。2上机源程序代码。3 实验结果。4 误差分析。实验二 矩阵的运算一 实验目的:通过实验了解并掌握利用计算机实现矩阵计算的基本原理与方法,了解数学抽象概念在实际应用中的引用和计算方法、技巧,培养针对数学模型进行建模的能力,掌握矩阵的基本运算方法。二 实验内容:在Turbo C 平台下编程求出矩阵的加减,以及MN 矩阵和NM矩阵的乘运算。三 实验原理:矩阵实际上就是一张表,可以认为是数的集合,它表示了一个一维、二维、空间的抽象特征。本实验涉及的是二维矩阵。矩阵在进行加减运算时,进行运算的两个矩

5、阵必须是行数必须相同,列数也必须相同。也就是说MN的矩阵A只能与MN的矩阵B进行运算,运算的规则是:Cij=AijBij矩阵在进行乘运算的时候,进行运算的两个矩阵应为MN矩阵乘以NM的矩阵,反之亦然,但相乘的结果可能不同,运算规则是:Cij=(i=1,2,m,j=1,2,n)在计算机中,矩阵的存储方式是以数组的方式以行为主或以列为主的形式存放在内存中,C语言的缺省存储方式是以行为主。利用二维数组存储矩阵的时候,应当注意,C语言定义数组的下标起始值为0,即第一个元素的下角标为(0,0)而不是(1,1),第(M,N)个数据的下角标为(M-1,N-1)。四、实验步骤1 打开开始-程序-附件-命令提示

6、符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。五、实验中应注意的问题:1 C语言数组下角标的定义特性,如数组个数为N,则下角标从0开始到N-1结束上机时应充分考虑这一特点,防止下标越界。2 矩阵运算时,循环结构采用for循环,避免死循环的发生。3 数据类型的定义要统一,不同类型的矩阵是不可以进行运算的。4 打印运算结果时,矩阵的打印要遵照一定的格式,应该以按行为主打印。5 矩阵数据的输入可采取静态装入,也可以采取运行时动态输入,但要保证输入数据对号入座。建议按行输入,每次输一行。六、实验报告内容:1 实验原

7、理及实现方法。2上机源程序代码。3 实验结果。实验三 利用二分法求方程的根一 实验目的:通过实验了解并掌握利用二分法求方程的跟的基本原理和方法。了解方程求跟问题在工程中的应用于理论的联系和区别。培养针对数学模型进行建模的能力,以及在工程中解决实际问题的创造能力。二 实验内容:在Turbo C 平台下编程利用二分法求出高阶方程的根,要求根的精度限定在一定的范围内,高阶方程为x3-x-1=0,设定有根区间为1.0,1.5。三 实验原理:数学物理中的许多问题常常归结为求解函数方程f(x)=0,这里,f(x)可以是代数多项式,也可以是超越函数,方程f(x)0的解x*成为它的根,或称为f(x)的零点。设

8、函数f(x)在a,b上连续,且f(a)f(b)0,根据连续函数的性质可知道方程f(x)在区间a,b内一定有实根。这时称区间a,b为方程f(x)0的有根区间。考察有根区间a,b,取中点x0=(a+b)/2将它分为两半,然后进行根的搜索,即检查f(x0)与f(a)是否同号,如果确系同号,说明所求的根x*在x0的右侧,这时令a1=x0,b1=b;否则x*必在x0的左侧,这时令a1=a,b1=x0。不管出现哪种情况,新的有根区间a1,b1的长度仅为a,b的一半。对压缩了的有根区间a1,b1又可以实行同样的步骤,即用中点x1=(a1+b1)/2再分为两半,然后通过根的搜索判定所求的根在x1的那一侧,从而

9、又确定了一个新的有根区间a2,b2,其长度为a1,b1的一半。如此反复下去,将会有a3,b3,a4,b4 ,.,ak,bk,当区间长度 bk-ak0时,也就是说当二分空间逐渐趋近于一个点x*时,该点即为所求函数之根。在工程上,往往不可能完成这个接近于无限的过程,其实也没有必要,因为在工程上,只要结果在一定的误差范围内即可,即| bk-ak | 程序-附件-命令提示符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。5 提高误差控制值,查看计算时间高精度求值余低精度求值时运算次数的区别。五、实验中应注意的问题与思考

10、题:1 求值区间为估算区间,如该区间无根,则应该如何考虑程序的健壮性?2 调整寻根区间时,定义区间端点的变量应为全局变量,为什么?3 误差区间应适度,过大则会造成运算结果不准确,太小则会造成浪费大量计算时间。4 如何选取适当的误差区间?六、实验报告内容:1 实验原理及实现方法。2上机源程序代码。3 实验结果。4 回答思考题。实验四 基于单向链表的学生信息处理程序一 实验目的:通过实验了解并掌握利用线性链表、结构体的定义与使用方法。了解线性链表的基本运算规则,掌握线形逻辑结构采取非线性存储情况下的软件开发技巧,进一步熟悉并掌握C语言中指针的用法。二 实验内容:在Turbo C 2.0 平台下,开

11、发基于单项链表的学生信息处理程序,利用链表对学生信息处理,应提供创建、编辑、删除、查询、排序等基本功能。学生的信息应采用结构体进行组织。三 实验原理: 线性链表是常见的线性表之一,它的特点是逻辑结构为线性,即遵守除头结点和尾结点外,其他结点均有且只有一个钱件,有且只有一个后件,头结点只有后件而无前件,尾结点只有前件而无后件。 线性链表的物理结构与逻辑结构不一定对应,通常是杂乱无章的,通过指针作为前后件的连接手段,即前件保存后件的物理地址。它的结构如下图:Data NEXT Data NEXT Data NEXT Data NEXT Head其中,Data域为数据域,用来加载用户数据,Next域

12、为指针域,用来存放后件的物理地址.但这些地址通常不连续。线性链表的存储方式充分利用了系统的零散空间,对提高计算机内存利用率有很好的作用。 线性链表的创建:创建过程实际上是链表结点的申请和连接的过程。向系统申请内存单元,输入用户数据,将结点加入到链表中,连接前后件,明确关系后添加下一个结点。 线性链表的删除:选定要删除的结点,将该结点前件的指针域数据修改为后件的物理地址值,释放该节点占用的内存空间。 线性链表的查找:给定查找条件,从链表头开始,顺延向后查找,当找到符合条件的结点时,返回该结点的地址值。线性链表的编辑:给定查找条件,查找到符合条件的结点后,修改相应的用户数据,但不能改变该结点的指针

13、值。 线性链表的排序:按照指定的用户数据用指定的的排序要求(升序或降序)对链表的逻辑结构进行重组,重组的过程中,只改变逻辑结构,而不是物理结构,也不改变结点的数据。四、实验步骤1 打开开始-程序-附件-命令提示符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。5 完成对链表的打印,要求程序可以循环执行。五、实验中应注意的问题与思考题:1 删除链表中的结点时应释放该节点所占用的空间。为什么?2 定义工作指针时,应注意避免造成内存泄漏?3 定义学生信息资料时应定义为结构体,信息应尽量全面。4 对链表进行运算时应保证

14、线性链表的逻辑完整性。六、实验报告内容:1 实验原理及实现方法。2上机源程序代码。3 实验结果。4 回答思考题。实验五 使用图形函数实现计算机绘图和动画显示一 实验目的:通过实验了解并掌握利用图形函数进行绘图的基本方法和技巧,熟悉图形函数的使用,了解并掌握计算机坐标系统的相关知识。二 实验内容:在Turbo C 2.0 平台下,使用图形函数绘制滑行小车,具体图形绘画模式由学生自主开发。应了解并掌握计算机坐标的特性和使用方法,做好绘画对象的数学建模。三 实验原理: PC机显示系统一般是由显示器和显示卡组成。显示器(Monitor)是独立于主机的一种外部设备。显示卡(Adapter)是插在PC主机

15、上的一块电路板。PC机对显示屏幕的所有操作都是通过显示卡来实现的。 显示系统的主要特性 1显示分辨率 显示分辨率是指屏幕上所能显示的像素点数,通常用列数和行数的乘积来表示。为了获得良好的显示效果,要求显示器的分辨率与对应分辨率的显示卡相匹配。通常,高分辨率的显示效果比低分辨率的效果好。但是,显示分辨率的提高对显示器与显示卡的硬、软件要求更高。特别是分辨率的提高在很大程度上受到显示器的显示尺寸和扫描频率的限制,也受到显示卡的显存的限制。 根据应用情况的不同,在不超过显示器最高分辨率的条件下,可以通过对显示卡的设置而使用不同的分辨率。 2显示速度显示速度是指在屏幕上显示图形和字符的速度。显示速度与

16、显示分辨率和显示器的扫描频率密切相关。显示分辨率越高,整个屏幕上的像素点数就越多,显示速度就越慢。在这种情况下,为了提高显示速度,就需要提高扫描频率。 如果显示器只有一种扫描频率,则它只能与一种显示卡相匹配使用。随着显示技术的发展,目前一般的显示器可以适应具有多种分辨率与显示速度的显示卡。 颜色与灰度是衡量显示系统的重要参数。单色显示器只有亮和暗两种灰度;彩色显示器的颜色和灰度要受显示内存的限制,分辨率越高,颜色越丰富,所需要的显示内存就越多。 4图形显示能力 图形显示能力是显示系统对屏幕上的每一个像素点都可以设置成不同的值的能力。通常,图形显示对硬件的要求比字符显示要求高得多,同时,图形显示

17、对显示缓冲区的要求也比字符显示时高得多。显示卡的种类常用的显示卡有以下几种1MDA卡 MDA卡(Monochrome Display Adapter单色字符显示器适配卡)与单色字符显示器配接,它只支持字符显示功能,无图形功能。 2HGC卡 HGC卡(Hercules Graphics Card单色显示图形卡)不仅支持字符显示,而且支持单色图形功能。在图形方式下,其图形显示分辨率最高可达720348点阵。通过软件的设置,还可以支持640400单色图形显示以及模拟CGA卡图形方式。 3CGA卡 CGA卡(ColorGraphicsAdapter-彩色图形显示卡)支持字符图形两种方式。 在字符方式下

18、,它支持80列、25行及奶列、25行的方式,颜色可选16种。但是字符的质量比较差,只有8X8点阵。在图形方式下,它支持最大为640200分辨率,但只有黑、白两种颜色。此外,它还支持320200的分辨率,每个像素点可以有四种颜色。CGA卡有16K的显示缓冲区,用于显示字符及属性或图形方式下的图形数据。 4EGA卡 EGA卡(Enhanced Graphics Adapter增强型图形显示卡)的字符显示能力和图形显示能力都比CGA卡有了较大的提高,显示分辨率达到640350,最高分辨率图形方式的颜色达到了16种。EGA卡的显示模式也比CGA卡丰富,并且兼容CGA卡及MDA卡的显示模式。 5VGA卡

19、 VGA卡(Video Graphics Array一一视频图形阵列)是一种功能十分强大、颜色丰富的显示卡。VGA的标准分辨率可达到640480,并且具有16种颜色。一些兼容的VGA卡(如TVGA卡、EVGA卡)的分辨率可达640480(256种颜色)、800600(16种颜色)或1024768(16种颜色)。VGA卡兼容MDA卡、CGA卡、EGA卡的所有显示模式。 随着显示技术的发展,目前的显示卡的分辨率一般都可以达到1024X768,显示32位真彩(232种颜色)。 视频BIOS 视频BIOS(BasicIOSystem基本输入输出系统)是与显示卡配套的一个重要组成部分。用户通过调用它可以

20、完成一些与显示有关的控制功能。对于要用到显示系统的一般程序设计都可以通过调用视频BIOs或视频函数库来完成。但要想获得更高性能的显示程序,还需要对显示卡的寄存器和显示内存直接进行编程。显示模式 显示模式按功能可以分为字符模式和图形模式两大类。 字符模式也称为字母数字模式,即AN模式(A1phaNumbermode)。在这种模式下,显示缓冲区中存放的是显示字符的代码和属性,而显示屏幕被分为若干个字符显示行和列。图形模式(Graphics mode)也称为APA模式(A1l Points Addressable mode)。在这种模式下,显示缓冲区中存放的是显示器屏幕上的每个像素点的颜色或灰度值,

21、而显示屏幕被划分为像素行和像素列。 由于显示卡的种类很多,其中有些显示模式在不同类型的显示卡及不同厂家的显示卡之间是通用的,这类显示模式称为标准模式。还有些模式是专用的,称为非标准模式。通常,显示模式号小于14H的是标准模式;其他则为非标准模式。图形模式的初始化 不同的显示器适配器有不同的图形分辨率。即使是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器的种类将显示器设置成为某种图形模式。在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。 设置屏幕为图形模式,可用下列图形初始化函数: void far

22、 initgraph (int far* gdriver,int far *gmode,char *path); 其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。图形驱动程序由Turbo C出版商提供,文件扩展名为BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器的图形驱动程序为EGAVGA.BGI。有时编程者并不知道所用的图形显示器适配器种类,而且我们为了将编写的程序可以用于不同图形驱动器,增强程序的通用性,我们通常不指定图形显示器适配器种类,而使用Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为:

23、void far detectgraph ( int *gdriver, *gmode);其中gdriver和gmode意义同上。基本图形函数基本图形函数包括画点,线以及其它一些基本图形的函数。具体内容详见上机参考书C程序设计上机指导谭浩强编著 北京 清华大学出版社 1999屏幕坐标系统PC机的屏幕坐标原点位于屏幕的左上方。从左至右为X轴正方向,从上至下为Y轴正方向。如下图第三象限 第四象限(0,0)X屏幕第一象限第二象限 Y坐标系统的单位为像素,如系统分辨率为640480时,屏幕的横向(X轴)为640点,纵向(Y轴)为480点。在采用计算机进行绘图和仿真时,应该注意屏幕坐标系统与迪卡尔坐标系

24、的区别。小车绘图示例见下图。 (0,0) X 200 280 803002040 120 40 Y四、实验步骤1 打开开始-程序-附件-命令提示符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。五、实验中应注意的问题与思考题:1小车向前走动的时候循环结构应采取for循环,可避免产生死循环。2单次循环结束后应该清空屏幕,为什么?3延时函数设置值与计算机硬件速度有关,可酌情设定,但不宜延时太长。4如何让小车在某个位置停止?如何让小车向后退?5 小车的外观自行设计,但应充分考虑各元素,避免产生不协调运动。六、实验报告

25、内容:1 实验原理及实现方法。2上机源程序代码。3 实验结果。4 回答思考题。实验六 使用图像函数制作圆盘式时钟的动画显示一 实验目的:通过实验了解并掌握利用图形函数进行绘图的基本方法和技巧,熟悉图形函数的使用,了解并掌握计算机坐标系统的相关知识。二 实验内容:在Turbo C 2.0 平台下,使用图形函数绘制圆盘式时钟,应实现对时针、分针、秒针三者之间数学关系的准确描述。三 实验原理:基础知识部分同实验五圆盘式时钟的示例见下图 X (0,0)秒针时针分针 Y圆盘式时钟的三个指针:时针、分针、秒针均为顺时针旋转。它们的数学关系如下:1秒160分13600小时。而对于圆盘式时钟而言,由于圆周为2

26、。则秒针单位转动增量弧度为23030。当每秒钟秒针运行30时,分针的转动增量弧度为(3060)1800。由于圆盘式时钟的一个圆周为12小时,则时针此时的转动增量弧度为:(180012)21600。即,每秒钟秒针转动30,分针转动1800,时针转动21600。当顺时针转动时,转动时弧度均为增量。当某个指针转动一定的角度时,它的坐标位置会随着自身的转动而发生改变,当然,在这里指针的“轴”位置(x1,y1)不会发生改变,发生改变的是指针位置的坐标值(x2,y2)。转动时,它们的数学关系为:x2 = x1 + Cos(当前弧度) *指针长度。其中,自身长度通过平面两点间距离公式可以得到,该公式为:指针长度当前弧度为指针在坐标系统中的弧度值,当指针指向0点时,弧度为32四、实验步骤1 打开开始-程序-附件-命令提示符,进入Turbo C 2.0,输入程序。2 按F2存盘。3 按F9键检查语法是否存在错误。4 按Ctrl +F9运行程序,调试编译。五、实验中应注意的问题与思考题:1循环结构应采取for循环,可避免产生死循环。2单次循环结束后应该清空屏幕。3延时函数设置值与计算机硬件速度有关,可酌情设定,但不宜延时太长。4若要让时钟逆时针转动,将怎么设计?5 时钟样式和具体绘图元素自行编写。六、实验报告内容:1 实验原理及实现方法。2上机源程序代码。3 实验结果。4 回答思考题。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!