计算机地图制图原理与方法上机实验报告

计算机地图制图原理与方法上机实验报告
计算机地图制图原理与方法上机实验报告

<<计算机地图制图原理与方法>>

上机实验报告

学院:环境与测绘学院

学号: 07113021

姓名: 田孟浩

班级:测绘11-3班

2011-11-11

实验一、地图扫描矢量化

一、实验目的

1、熟悉Cass、AutoCAD制图环境。

2、掌握在计算机制图中扫描矢量化处理。

3、掌握用南方Cass、AutoCAD制图软件扫描矢量化的基本步骤与基本方法。

4、进一步对计算机制图课堂知识加深了解。

二、实验原理

扫描矢量化的基本原理是对各种类型的数字工作底图如纸质地图、黑图或聚酯薄膜图,使用扫描仪及相关扫描图像处理软件,把底图转化为光栅图像,对光栅图像进行诸如点处理、区处理、桢处理、几何处理等,在此基础上对光栅图像进行矢量化处理和编辑,包括图像二值化、黑白反转、线细化、噪声消除、结点断开、断线连接等。这些处理由专业扫描图像处理软件进行,其中区处理是二值图像处理(如线细化)的基础,而几何处理则是进行图像坐标纠正处理的基础,通过处理达到提高影像质量的目的。然后利用软件矢量化的功能,采用交互矢量化或自动矢量化的方式,对地图的各类要素进行矢量化,并对矢量化结果进行编辑整理,存储在计算机中,最终获得矢量化数据,即数字化地图,完成扫描矢量化的过程。

数据采集是数字化图最重要的工作,在数字化过程中各种地物的数字化均有自身特点,因而,在数字化作业时必须充分考虑各种类型地物的特点进行数据采集。

对于点状类符号(如独立地物符号),仅需采集符号的定位点数据;对折线类型的线状符号只需采集各转折点数据;曲线类型的线状符号,只对其特征点的数据进行采集,由程序自动拟合为曲线,特征点的选择同地形测图时的方法相同,曲线上明显的转弯点等均是特征点。对于斜坡、陡坎、围墙、栏杆等有方向性的线状类符号,数据的采集要结合图式符号库的具体算法进行,数据采集只在定位线上进行,采集数据的前进方向的选择要按软件图式符号库的规定进行,如规定有方向性的线状类符号的短毛线或小符号在前进方向右侧(或左侧),由此可结合图上符号的具体位置决定数据采集的前进方向;对面状类符号,则只需采集在其轮廓线上的拐点或特征点。面状符号内部有填充符号时,面状符号的轮廓线必须闭合。

在地图地物符号采集时,为保证采集的点位数据的正确性,必须掌握地物符号的定位点、定位线的基本知识,知道各地物符号的定位点、定位线在地物中的位置。

(1)图式符号中的比例符号。对轮廓较大的地物,如湖泊、草地、林地、房屋等,其形状按实测点(特征点)位置,再据图式配置规定的符号,据测图比例尺缩绘即可。

(2)图式符号中非比例符号。对轮廓较小而无法按测图比例尺将其形状和大小缩绘到图上的地物,而按测图要求又不能省略的地物,如测量控制点、独

立树、烟囱等,其在图上的表示是按图式规定统一符号进行的,这类所谓非比例符号的定位点、定位线的位置会因地物不同而异,特征点数据采集时应加以注意,有关应注意的问题综合如下:①类似三角点、导线点、检查井等圆形、矩形、三角形等几何图形符号,图形的几何中心为其定位点。②蒙古包、烟囱、独立石类的宽底符号,其底线为定位线,底线中心为定位点。③风车、路标等类的底部为直角形的符号,其底部直角的顶点为定位点。 ④气象站、雷达站、无线电杆等类地物的定位点,在其下方图形的中心点或交叉点。 ⑤窑、亭、山筒等下方没有宽点或直角顶点的不规则符号,不依比例尺表示的,定位点在其下方两端点间连线的中心点。⑥不依比例尺表示的其他符号如桥梁、水闸、挡水坝、溶斗等,定位点在符号的中心点⑦半比例符号如通讯线路、窄道路、管道等一些带状延伸的地物,其长度可按比例尺缩绘在图上,而宽度却因尺寸太小无法缩绘,即所谓线状符号,其图形的几何中心线即为该类符号的定位线。地物在绘制时用比例符号、非比例符号还是线状符号表示,是由测图比例尺决定的,比例尺大时,宽度较小的地物也可按比例绘制,大比例尺地图中用比例符号的地物多,比例尺小时许多地物无法按比例表示,在图中就变成线状符号。

三、实验数据

在本次实验中,我所用实验数据为王老师提供的Tif格式的地形图中第四幅地图,数据如下:

四、实验步骤

运行南方Cass软件,在Cass中载入数据:

步骤:工具->光栅图像->插入图像。

图象纠正,对图象进行变形纠正并赋以坐标:

步骤:工具->光栅图像->图像纠正。

图像纠正完毕后,进行矢量化处理

(1)对线状要素数字化:

对于线状要素,首先点击多段线命令,然后在图上选择要素的特征点,连成多段线。

对于曲线部分,用折线段来替代,曲率小时取点较少,大时可多取些点,尽量避免冗余数据。

数据采集要尽量与原图保持一致,但要识别出原图中模糊、毛刺、斑点等质量问题,做到精益求精。数字化时,要正确划分要素个体,不要多个要素连成一体,也不要单一要素分成若干段。对于能用线状符号描述的,只需数字化符号的中心线或控制线、边界线即可;不能用符号描述的,可以整体数字化。数字化时,有时找中心线很困难,可以沿着某边数字化,完成后再整体平移到中心线处。数字化具有平行、垂直、相交、相切、相连等关系的要素,需要使用捕捉功能,以及复制、镜象、旋转等操作,保证要素的精确、完整。

(2)对面状要素数字化:

对于面状要素,首先点击多段线命令,然后在图上选择面域边界的特征点,连成闭合的多段线。对面状要素,数字化为闭合的多段线,一定在结束时选择闭合命令,或在多段线属性中选择闭合,首尾点重合不表示闭合。数据点的采集要符合实际,如房屋的墙体一般是平直的,并且前后面保持平行,对于共用边界,要严格保证边界的一致,不要出现空洞、交叠的现象,做到不重、不漏。可以采用捕捉、复制等手段。对于不同层要素,也要注意相互的关系,点与线、线与线,线与面,面与面等的关系是否正确。

(3)对点状要素数字化:

对于点状要素,数字化为点,点的采集要尽量位于要素中心,可以适当放大要素。

五、成果截图

六、实验体会

通过本次试验我熟悉了AutoCAD制图环境;掌握在计算机制图中扫描矢量化处理;掌握用南方Cass制图软件扫描矢量化的基本步骤与基本方法;进一步对计算机制图课堂知识加深了解。本次实验我在实验过程中遇到了许多问题,比如说如何加图幅、图名、图框,辨认地形图上不清晰的地物符号、文字,最终经

过请教同学和老师最终操作问题得以解决。受益匪浅!

实验二、构建TIN-生成等高线

一、实验目的

2、熟悉Cass、AutoCAD制图环境。

5、掌握在计算机制图中生成等高线处理。

6、掌握用南方Cass、AutoCAD制图软件构建TIN的基本步骤与基本方法。

7、进一步对计算机制图课堂知识加深了解。

二、实验数据

本次实验中我用的是第六幅图

三、实验过程

通过本菜单可建立数字地面模型,计算并绘制等高线或等深线,自动切除穿建筑物、陡坎、高程注记的等高线。

1.建立DTM

功能:建立三角网。

操作过程:左键点击菜单,弹出如图1-133所示对话框,首先选择建立DTM的方式,分为两种:由数据文件生成和由图面高程点生成,如果选择由数据文件生成,则在坐标数据文件名中选择坐标数据文件;如果选择由图面高程点生成,则在绘图区选择参加建立DTM的高程点。然后选择结果显示,分为三种:显示建三角网结果、显示建三角网过程和不显示三角网。最后选择在建立DTM的过程中是否考虑陡坎和地性线。

2.图面完善

功能:利用“图面DTM完善”即可将各个独立的DTM模型自动重组在一起,而不必进行数据的合并后再重新建立DTM模型。

操作过程:执行此菜单后,见命令区提示。

提示:选择要处理的高程点、控制点及三角网:选择需要建网的点或三角网。

3.删除三角形

功能:当发现某些三角形内不应该有等高线穿过时,就可以用该功能删去它。注意各三角形都和邻近的三角形重边。

操作过程:执行此菜单后,见命令区提示。

提示:select objects:用鼠标在三角网上选取待删除的三角形后回车或按鼠标右键,三角形消失。当您修改完确认无误后,必需进行修改结果存盘。

4.过滤三角形

功能:将不符合要求的三角形过滤掉。

操作过程:执行此菜单后,见命令区提示。

提示:请输入最小角度:(0-30) <10度> 在0-30度之间设定一个角度,若三角形中有小于此设定角度的角,则此三角形会被系统删除掉。

请输入三角形最大边长最多大于最小边长的倍数:<10.0倍> 设定一个倍数,若三角形最大边长与最小边长之比大于此倍数,则此三角形会被系统删除掉。

5.增加三角形

功能:将未连成三角形的三个地形点(测点)连成一个三角形。

操作过程:执行此菜单后,见命令区提示。

提示:依次为顶点1:顶点2:顶点3:用鼠标在屏幕上指定,系统自动将捕捉模式设为捕捉交点,以便指定已有三角形的顶点。增加的三角形的颜色为蓝色,以便和其他三角形区别。当增加完三角形确认无误后,请立即进行修改结果存盘。

6.三角形内插点

功能:通过在已有三角形内插一个点来增加建网三角形。

操作过程:执行此菜单后,见命令区提示。

提示:输入要插入的点: 输入插入点。

高程(米)= 输入此点高程。

7.删三角形顶点

功能:删除指定的三角形顶点。适用于DTM中有错误点的情况,为避免画等高线时出错将该顶点删除。

操作过程:见命令区提示。

提示:请点取要删除的三角形顶点:选取要删除的点。

系统会立即从三角网中删除该点,并重组相关区域的三角形。

8.重组三角形

功能:通过改换三角形公共边顶点重组不合理的三角网。指定两相邻三角形的公共边,系统自动将两三角形删除,并将两三角形的另两点连接起来构成两个新的三角形。如果因两三角形的形状无法重组,会有出错提示。

操作过程:执行此菜单后,见命令区提示。

提示:指定要重组的三角形边:此指定边应是相邻两三角形的公共边。9.加入地性线

功能:由于等高线是与地性线是互相垂直的关系,所以在建三角网时要考虑到地性线的位置。

操作过程:执行此菜单后,见命令区提示。

提示:第一点:输入一地性线的起点。

曲线Q/边长交会B/<指定点>输入第二点。

曲线Q/边长交会B/隔一点J/微导线A/延伸E/插点I/回退U/换向H<指定点>继续输入点,回车结束。

10.删三角网

功能:删除整个DTM三角网图形。当您想单看等高线效果时,需要执行此功能删除三角网。

11.三角网存取

功能:可将已经建立好的三角网DTM模型保存到文件中,随时调用。12.修改结果存盘

功能:将修改好的DTM三角网存入文件。

13.绘制等高线

功能:系统自动采用最近一次生成的DTM三角网或三角网存盘文件计算并绘制等高线。

操作过程:执行此菜单后,弹出如图1-134所示对话框。

对话框中会显示参加生成DTM的高程点的最小高程和最大高程。如果只生成单条等高线,那么就在单条等高线高程中输入此条等高线的高程;如果生成多条等高线,则在等高距框中输入相邻两条等高线之间的等高距。最后选择等高线的拟合方式。总共有四种拟合方式:不拟合(折线)、张力样条拟合、三次B样条拟合和SPLINE拟合。观察等高线效果时,可输入较大等高距并选择不光滑,以加快速度。如选拟合方法2,则拟合步距以2米为宜,但这时生成的等高线数据量比较大,速度会稍慢。测点较密或等高线较密时,最好选择光滑方法3,也可选择不光滑,过后再用“批量拟合”功能对等高线进行拟合。选择4则用标准SPLINE样条曲线来绘制等高线,提示请输入样条曲线容差: <0.0>容差是曲线偏离理论点的允许差值,可直接回车。SPLINE线的优点在于即使其被断开后仍然是样条曲线,可以进行后续编辑修改,缺点是较选项3容易发生线条交叉现象。

14.绘制等深线

功能:计算并绘制等深线。

操作过程:同“绘制等高线”,但过程中系统会提问水面高程,高于此高程的等深线将用实线来画,否则用虚线画。

15.等高线内插

功能:当等高线过疏时,通过此功能在其中内插等高线。

操作过程:根据命令区提示选择两条边界等高线,然后命令区会有提示:

提示:输入等高线上采样点距:(米)<3.0> 采样点距越小,内插等高线精度越高,当然计算时间也越长。系统默认值为3米。

请给出内插等高线数:<1> 输入需插入的等高线条数。

在做此项工作之前,要使内插等高线更准确,最好先将等高线进行拟

合。但有时在边界等高线弯曲过大时,内插线变形稍大,这时需要手工进行局部处理。

16. 等值线过滤

功能:当等高线或等深线过密时,通过此功能删除部分等高线或等深线。

17.删全部等高线

功能:删除屏幕上的全部等高线。

18.查询指定点高程

功能:查询图面上任一点的坐标及高程。如之前没有建立过DTM,系统会提示输入数据文件名。

19.等高线修剪

功能:提供强大的等高线修饰功能。

批量修剪等高线

功能:批量切除不符合条件的等高线。

说明:左键点击菜单,弹出如图所示对话框。

20.等高线注记

(1)单个高程注记

功能:在指定点给某条等高线注记高程。

操作过程:执行此菜单后,见命令区提示。

提示:选择需注记的等高(深)线: 指定要注记的等高线。

依法线方向指定相邻一条等高(深)线:依法线方向指定临近的一根等高(深)线。

【注意】:等高线应含有高程信息,如果没有应该用“批量修改复合线高”加入复合线高。

(2)沿直线高程注记

功能:在选定直线与等高线相交处注记高程。(直线必须是line命令

画出的)

(3)单个示坡线

功能:给指定等高线加注示坡线,特别在等高线稀疏区。

操作过程:执行此菜单后,见命令区提示。

提示:选择需注记的等高(深)线:在等高线上指定位置。

依法线方向指定相邻一条等高(深)线:依法线方向指定临近的一根等高或等深线。

【注意】:高程注记通常字头由低向高,而示坡线通常由高向低,等高线应含有高程信息,如果没有应该用“批量修改复合线高”加入复合线高。

(4)沿直线示坡线

功能:在选定直线与等高线相交处注记示坡线。(直线必须是line命令画出的)

五、实验结果

六、实验体会

等高线生成是地图制图中一项很重要的工作,要注意很多规范和要求,本次试验我做的是第六幅图,相对来说比较简单,基本没有复杂的地物地貌,完成起来相对来说轻松一点,感觉对AutoCAD的操作更熟练了一点,总体来说相对成功。

机械原理习题及解答

机构的结构分析 2-1填充题及简答题 (1)平面运动副的最大约束数为,最小约束数为。 (2)平面机构中若引入一高副将带入个约束,而引入一个低副将带入个约束。 (3)机构具有确定运动的条件是什么? (4)何谓复合铰链、局部自由度和虚约束? (5)杆组具有什么特点?如何确定机构的级别?选择不同的原动件对机构级别有无影响? 答案: (1)平面运动副的最大约束数为2,最小约束数为1 (2)平面机构中若引入一高副将带入1个约束,而引入一个低副将带入2个约束。 (3)机构具有确定运动的条件是:机构的自由度大于零,且自由度数等于原动件数。 (4)复合铰链:在同一点形成两个以上的转动副,这一点为复合铰链。 局部自由度:某个构件的局部运动对输出构件的运动没有影响,这个局部运动的自由度叫局部自由度。 虚约束:起不到真正的约束作用,所引起的约束是虚的、假的。 (5)杆组是自由度为零、不可再拆的运动链。机构的级别是所含杆组的最高级别。选择不 同的原动件使得机构中所含杆组发生变化,可能会导致机构的级别发生变化。 2-2 计算下图机构的自由度,若含有复合铰链,局部自由度,虚约束等情况时必须一一指出, 图中BC、ED、FG分别平行且相等。要使机构有确定运动,请在图上标出原动件。 2-2答案:B点为复合铰链,滚子绕B点的转动为局部自由度,ED及其两个转动副引入虚 约束,I、J两个移动副只能算一个。

11826323=-?-?=--=h L p p n F 根据机构具有确定运动的条件,自由度数等于原动件数,故给凸轮为原动件。 2-3 题图2-3所示为一内燃机的机构简图,试计算其自由度,以AB 为原动件分析组成此机 构的基本杆组。又如在该机构中改选EF 为原动件,试问组成此机构的基本杆组是否与前有所不同,机构的级别怎样? 2-3答案:110273=?-?=F 。注意其中的C 、F 、D 、H点并不是复合铰链。 以AB 为原动件时: 此时,机构由三个Ⅱ级基本杆组与原动件、机架构成,机构的级别为二级。 以EF 为原动件时: 机构由1个Ⅱ级基本杆组,1个Ⅲ级基本杆组和机架组成。机构的级别为三级。显然,取不同构件为原动件,机构中所含的杆组发生了变化,此题中,机构的级别也发生了变化。 2-4 图示为一机构的初拟设计方案。试分析:

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

同济大学微机原理实验报告

《微机原理与接口技术》上机实验报告

《微机原理与接口技术》上机实验报告

实验报告:(包括目的、方法、原理、结果或实验小节等)。 一、实验目的 掌握简单并行接口的工作原理及使用方法。 二、实验内容 1、按下面图一简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。 3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。 图一图二 三、实验中使用到的程序 对于简单并行输出接口: stack1 segment stack 'stack' dw 32 dup(0) stack1 ends data segment baseport equ 0ec00h-280h;实际基址 port equ baseport+2a8h;基址+偏移地址 data ends code segment assume ss:stack1,ds:data,cs:code start: mov ax,data mov ds,ax again: mov ah,1 int 21h

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

微机原理与接口技术实验报告

微机原理与接口技术实验报告

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

编译原理实验报告

学生学号0120810680316 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称《编译原理》 开课学院计算机科学与技术学院 指导老师姓名何九周 学生姓名刘洋 学生专业班级软件工程0803 2010 —2011 学年第二学期

实验课程名称:编译原理 实验项目名称单词的词法分析程序设计实验成绩实验者刘洋专业班级软件0803 组别 同组者实验日期 2011 年 5 月 17日 第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的: 设计,编制并调试一个词法分析程序,加深对词法分析原理的理解。 实验要求: 在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写;上机时应随带有关的高级语言教材或参考书;要学会程序调试与纠错;每次实验后要交实验报告。 实验题目: 对于给定的源程序(如C语言或Pascal等),要求从组成源程序的字符行中寻找出单词,并给出它们的种别和属性——输出二元组序列。以便提供给语法分析的时候使用。要求能识别所有的关键字,标志符等,并且能够对出先的一些词法规则的错误进行必要的处理。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或 者算法描述) 实验原理: 由于这是一个用高级语言编写一个词法分析器,使之能识别输入串,并把分析结果(单词符号,标识符,关键字等等)输出.输入源程序,输入单词符号,本词法分析器可以辨别关键字,标识符,常数,运算符号和某些界符,运用了文件读入来获取源程序代码,再对该源程序代码进行词法分析,这就是词法分析器的基本功能.当词法分析器调用预处理子程序处理出一串输入字符放进扫描缓冲区之后,分析器就从此缓冲区中逐一识别单词符号.当缓冲区里的字符串被处理完之后,它又调用预处理子程序来处理新串. 编写的时候,使用了文件的输入和输出,以便于词法分析的通用型,同时在文件输出时,并保存在输出文件output文件中。 从左到右扫描程序,通过初始化:1为关键字;2为标志符; 3为常数;4为运算符或界符。 三、主要仪器设备及耗材 计算机

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

微机原理及应用实验报告

微机原理及其应用上机实验报告 实验一 程序调试实验(顺序结构程序设计) 一、实验目的: 1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。 2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求: 1、上机前,要认真阅读前言和课本相关章节 2、上机前,画好流程图,编写好程序 3、上机时,注意出现的错误,记录下出错信息,翻译之 4、完成好实验报告 三、实验内容: 在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。 (2).分析 X 平方的值是tab 为首地址且x 的值为有效地址中的值。 data segment x db 8 y db data ends stack segment para'stack' db 100 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax

mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start (3).程序调试: 4.心得体会 了解了顺序结构,掌握了程序的运行,调试。 实验二分支程序设计 一、实验目的: 熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。掌握分支程序设计、编写、调试和运行的方法。 二、实验要求: 1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。 2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。 二、实验内容

编译原理实验报告一

实验一词法分析程序实现 一、实验目得与要求 通过编写与调试一个词法分析程序,掌握在对程序设计语言得源程序进行扫描得过程中,将字符流形式得源程序转化为一个由各类单词符号组成得流得词法分析方法 二、实验内容 基本实验题目:若某一程序设计语言中得单词包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符与四个算术运算符,试构造能识别这些单词得词法分析程序(各类单词得分类码参见表I)。 表I语言中得各类单词符号及其分类码表 输入:由符合与不符合所规定得单词类别结构得各类单词组成得源程序文件。 输出:把所识别出得每一单词均按形如(CLASS,VALUE)得二元式形式输出,并将结果放到某个文件中。对于标识符与无符号常数,CLASS字段为相应得类别码得助记符;V AL UE字段则就是该标识符、常数得具体值;对于关键字与运算符,采用一词一类得编码形式,仅需在二元式得CLASS字段上放置相应单词得类别码得助记符,V ALUE字段则为“空". 三、实现方法与环境 词法分析就是编译程序得第一个处理阶段,可以通过两种途径来构造词法分析程序.其一就是根据对语言中各类单词得某种描述或定义(如BNF),用手工得方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应得状态矩阵,该状态矩阵连同控制程序一起便组成了编译器得词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序得另外一种途径就是所谓得词法分析程序得自动生成,即首先用正规式对语言中得各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程

机械原理实验报告

机械原理实验指导 实验一 机构运动简图的测绘 一、 实验目的 1.掌握根据各种机构实物或模型绘制机构运动简图的方法; 2.验证机构自由度的计算公式; 3.分析某些四杆机构的演化过程。 二、 实验设备和工具 1.各类机构的模型和实物; 2.钢板尺、量角器、内外卡钳等; 3.三角尺、铅笔、橡皮、草稿纸等(自备)。 三、 实验原理 由于机构的运动仅与机构中构件的数目和构件所组成的运动副数目、类型和相对位置有关。因此,可以撇开构件的实际外形和运动副的具体构造,用简单的线条来表示构件,用规定的或惯用的符号来表示运动副,并按一定的比例画出运动副的相对位置,这种简单的图形即为机构运动简图。 四、 实验步骤 1.使被测机构缓慢运动,从原动件开始,循着传动路线观察机构的运动,分清各个运动单元,确定组成机构的构件数目; 2.根据直接相联接两构件的接触情况及相对运动性质,确定运动副的种类; 3.选择能清楚表达各构件相互关系的投影面,从原动件开始,按传动路线用规定的符号,以目测的比例画出机构运动示意图,再仔细测量与机构有关的尺寸,按确定的比例再画出机构运动简图,用数字1、2、3……分别标注各构件,用字母A 、B 、C ……分别标注各运动副; 比例尺) (构件在图纸上的长度 ) (构件实际长度mm AB cm L AB L = μ 4.分析机构运动的确定性,计算机构运动的自由度。

五、思考题 1.一张正确的机构运动简图应包括哪些内容? 2.绘制机构运动简图时,原动件的位置能否任意选择?是否会影响简图的正确性? 3.机构自由度的计算对测绘机构运动简图有何帮助? 六、实验报告

实验二 渐开线齿轮的范成原理 一、 实验目的 1.掌握用范成法加工渐开线齿轮齿廓曲线的原理; 2.了解齿廓产生根切现象的原因及避免根切的方法; 3.了解刀具径向变位对齿轮的齿形和几何尺寸的影响。 二、 实验设备和工具 1.齿轮范成仪; 2.剪刀、绘图仪; 3.圆规、三角尺、两种颜色的铅笔或圆珠笔(自备)。 三、 实验原理 范成法是利用齿轮啮合时其共轭齿廓互为包络线的原理来加工齿轮的一种方法。加工时,其中一轮为刀具,另一轮为轮坯。他们之间保持固定的角速度比传动,好象一对真正的齿轮啮合传动一样,同时刀具还沿轮坯的轴向作切削运动,这样制得的齿轮齿廓就是刀具的刀刃在各个位置的包络线。为了能清楚地看到包络线的形成,我们用范成仪来模拟实现齿轮轮坯与刀具间的传动“切削”过程。 齿轮范成仪构造如图2——1所示,半圆盘2绕固定于机架上的轴心转动,在圆盘的周缘刻有凹槽,凹槽内嵌有两条钢丝3,钢丝绕在凹槽内,其中心线形成的圆相当于被加工齿轮的分度圆。两条钢丝的一端固定在圆盘2上的B 、B ‘ 点,另一端固定在拖板4的A 、A ’ 点,拖板可水平方向移动,这与被加工齿轮相对齿条刀具的运动方向相同。 在拖板4上还装有带有刀具的小拖板5,转动螺钉7可以调节刀具中线至轮坯中心的距离。 齿轮范成仪中,已知基本参数为: 1. 齿条刀具:压力角0 20=α,模数mm m 25=, 齿顶高系数0.1* =a h ,径向间隙系数25.0* =C 2. 被加工齿轮:分度圆直径mm d 200= 四、 实验步骤 1.根据已知基本参数分别计算被加工齿轮的基圆直径d b 、最小变位系数x min ,标准齿轮和变位齿轮的齿顶圆直径d a1和d a2、齿根圆直径d f1和d f2,将上述六个圆

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?)

TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL A DDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#include #include void main() { double sum=0; int n=1; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++; } printf("sum[%d]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

编译原理标准实验报告

电子科技大学 实验报告 学生姓名:学号:指导教师: 实验地点:实验时间: 一、实验室名称:计算机学院软件工程实验室 二、实验项目名称:词法分析器的设计与实现 三、实验学时:4学时 四、实验原理 1.编译程序要求对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序。 2.词法分析的功能是从左到右逐个地扫描源程序字符串,按照词法规则识别出单词符号作为输出,对识别过程中发现的词法错误,输出相关信息。 3.状态转换图是有限有向图,是设计词法分析器的有效工具。 五、实验目的 通过设计词法分析器的实验,使同学们了解和掌握词法分析程序设计的原理及相应的程序设计方法,同时提高编程能力。 六、实验内容 实现求n!的极小语言的词法分析程序,返回二元式作为输出。 七、实验器材(设备、元器件) 1.操作系统:Windows XP

2.开发工具:VC6.0 3.普通PC即可 八、实验步骤 (1)启动VC6.0,创建空白工程项目。选择菜单中的“文件”->“新建”->“项目”,在弹出的对话框中,左边的“项目类型”框中,选择“Visual C++ 项目”,在右边框中,选择“空项目(.Net)”,在对话框下边,选择工程文件存放目录及输入名称,如Example1,单击“确定”。 (2)建立相应的单词符号与种别对照表; (3)根据状态转换图编写相应的处理函数; (4)完成词法分析器; (5)编译与调试以上程序; (6)生成相应的*.dyd文件,作为后面语法分析的输入文件。 九、实验数据及结果分析

可以对源程序进行词法分析,如果有错给出出错信息和所在行数,如果无错则生成二元式文件。 十、实验结论 本实验程序较好地完成了词法分析程序的设计与实现,能够对所给文法的程序进行词法分析,在没有词法错误的时候生成相应的二元式文件。该实验程序可一次性给出源程序中的词法错误。 十一、总结及心得体会 通过该实验,对词法分析程序的设计,以及运用C语言进行编程有了更深刻的理解,同时加深了自己对词法分析程序的原理的理解与掌握,提高了自己的动手能力。 十二、对本实验过程及方法、手段的改进建议 程序设计合理,代码可进一步优化。 报告评分: 指导教师签字:

机械原理实验思考题参考

《机构测绘、分析及设计》实验思考题参考答案 1.一个正确的“机构运动简图”应能说明哪些内容? 机构运动简图应着重表达机构各构件间的相对运动关系,应包括原动件的运动规律、机构中所有构件和运动副的类型、数目及其相对位置(即转动副的中心位置、移动副的中心线位置和高副接触点的位置),而与构件的外形、断面尺寸、组成构件的零件数目及其固联方式和运动副的具体结构无关。因此绘制机构运动简图可以撇开构件的复杂外形和运动副的具体构造,用简单的线条和规定的符号代表构件和运动副,并按比例定出各运动副的相对位置。 2.根据所装配的曲柄滑块机构,分析此机构中曲柄存在条件是什么?连杆长度与机构传力性能之间有什么关联? 曲柄滑块机构中曲柄存在条件是: L AB +e<=L BC 连杆长度越长则机构传力性能越好,因为连杆越长则压力角越小。 3.牛头刨六杆机构中滑杆的行程长度如何调整?调整曲柄长度 4.曲柄滑块机构、曲柄摇块机构、摆动导杆机构之间的演化关系如何?举例说明机构演化的方法有哪些? 铰链四杆机构可以通过四种方式演化出其它形式的四杆机构。即①取不同构件为机架;②转动副变移动副;③杆状构件与块状构件互换;④销钉扩大。 曲柄滑块机构曲柄摇块机构摆动导杆机构

曲柄滑块机构、曲柄摇块机构、摆动导杆机构之间通过取不同构件为机架来演化。 对心曲柄滑块机构偏心轮滑块机构 牛头刨六杆机构正弦机 构曲柄摇杆机构 《平面机构特性分析》实验思考题参考答案 1、铰链四杆机构(L1=50 mm,L2=100 mm,L3=80 mm)中,通过改变机架长度可得到何种机构? 设四杆机构中机架L4<=50,L4=L min,则由曲柄存在条件:最短杆与最长杆的长度之和必须小于或等于其余二杆的长度之和(L max+L min<=L2+L3)可得: 100+L4<=50+80 即0=100,L4=L max,则由曲柄存在条件:最短杆与最长杆的长度之和必须小于或等于其余二杆的长度之和(L max+L min<=L2+L3)可得:

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

编译原理实验报告

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 选取无符号数的算术四则运算中的各类单词为识别对象,要求将其中的各个单词识别出来。 输入:由无符号数和+,-,*,/, ( , ) 构成的算术表达式,如1.5E+2-100。 输出:对识别出的每一单词均单行输出其类别码(无符号数的值暂不要求计算)。 三、实现方法与环境 1、首先设计识别各类单词的状态转换图。 描述无符号常数的确定、最小化状态转换图如图1所示。其中编号0,1,2, (6) 表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>,1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 图1 文法G[<无符号数>]的状态转换图 其中编号0,1,2,…,6代表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>,1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 在一个程序设计语言中,一般都含有若干类单词符号,为此可首先为每类单词建立一张状态转换图,然后将这些状态转换图合并成一张统一的状态图,即得到了一个有限自动机,再进行必要的确定化和状态数最小化处理,最后据此构造词法分析程序。 四则运算算术符号的识别很简单,直接在状态图的0状态分别引出相应标记的矢线至一个新的终态即可。根据自己的习惯,也可以将其转换为状态矩阵形式。 2、词法分析程序编写 根据描述语言中各类单词的文法状态转换图或状态矩阵,利用某种语言(C语言或JA V A 语言)直接编写词法分析程序。 3、词法分析程序测试 用于测试扫描器的实例源文件中应有词法正确的,也应有错误的字符串,对于输入的测试用例的源程序文件,以对照的形式将扫描器的分析结果信息在输出文件中表示出来。四、参考资料 实现无符号数识别的参考方法:将设计的状态转换图直接转化为一张程序流程图,并在外层再增加一个以EOF为循环终止条件的while循环,即形成能连续识别各类单词的词法分析程序。 各类单词的编码建议如表1。 表1 单词的内部编码

计算方法实验报告册

实验一——插值方法 实验学时:4 实验类型:设计 实验要求:必修 一 实验目的 通过本次上机实习,能够进一步加深对各种插值算法的理解;学会使用用三种类型的插值函数的数学模型、基本算法,结合相应软件(如VC/VB/Delphi/Matlab/JAVA/Turbo C )编程实现数值方法的求解。并用该软件的绘图功能来显示插值函数,使其计算结果更加直观和形象化。 二 实验内容 通过程序求出插值函数的表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。取点越密集,所得折线就越逼近理论上的插值曲线。本实验中将所取的点的横坐标存放于动态数组[]X n 中,通过插值方法计算得到的对应纵坐标存放 于动态数组[]Y n 中。 以Visual C++.Net 2005为例。 本实验将Lagrange 插值、Newton 插值和三次样条插值实现为一个C++类CInterpolation ,并在Button 单击事件中调用该类相应函数,得出插值结果并画出图像。CInterpolation 类为 class CInterpolation { public : CInterpolation();//构造函数 CInterpolation(float *x1, float *y1, int n1);//结点横坐标、纵坐标、下标上限 ~ CInterpolation();//析构函数 ………… ………… int n, N;//结点下标上限,采样点下标上限 float *x, *y, *X;//分别存放结点横坐标、结点纵坐标、采样点横坐标 float *p_H,*p_Alpha,*p_Beta,*p_a,*p_b,*p_c,*p_d,*p_m;//样条插值用到的公有指针,分别存放 i h ,i α,i β,i a ,i b ,i c ,i d 和i m }; 其中,有参数的构造函数为 CInterpolation(float *x1, float *y1, int n1) { //动态数组x1,y1中存放结点的横、纵坐标,n1是结点下标上限(即n1+1个结点) n=n1; N=x1[n]-x1[0]; X=new float [N+1]; x=new float [n+1]; y=new float [n+1];

相关文档
最新文档