华中科技大学计算机学院实验报告
华中科技大学计算机学院《计算机网络》实验报告实验名称网络组建与实施及SOCKET编程_团队成员:姓名班级学号贡献百分比得分姚富品Cs1105 U201113625 40%刘华涧Cs1105 60%注:团队成员贡献百分比之和为1教师评语:实验一网络组建与实施一.实验环境Boson Netsim仿真软件(版本号为5.31).WINDOWS 7 操作系统二.实验目的1,了解IP协议,网络层协议和数据链路层协议的工作原理及机制.2,掌握IP地址的规划方法3,掌握路由协议的配置方法4,掌握路由器及二/三层交换机的配置方法5,了解VLAN的划分原理6,掌握访问控制的配置方法三.实验内容及过程本实验所用的2张拓扑结构图分别如图1.1与图1.2:该实验分为四个试验,各试验分别如下:第一项试验----组网试验:试验要求:使用仿真软件描述网络拓扑图1.1。
按照如下要求进行IP 地址规划:将PC1、PC2 设置在同一个网段,子网地址是:192.168.0.0,PC3~PC8 设置在同一个网段,子网地址是:192.168.1.0同时为路由器配置端口地址,使得两个子网内部的各PC 机之间可以自由通信。
按照如下要求重新设置各PC 机IP 地址:PC1 与 PC2 在一个网段,子网地址是:192.168.0.0;PC3,PC5,PC7 在一个网段,子网地址是:192.168.1.0;PC4,PC6,PC8 在一个网段,子网地址是:192.168.2.0;为路由器配置端口地址分析各PC 机之间的连通性并对分析结果进行测试,同时使用所学理论知识对测试结果进行再分析试验过程:首先使用Net Designer软件画出图1.1所示的网络拓扑结构图,然后使用该结构图转到Boson_NetSim软件下,按照如下要求配置各PC机的IP地址:IP地址子网掩码默认网关PC1 192.168.0.2 255.255.255.0 192.168.0.1PC2 192.168.0.3 255.255.255.0 192.168.0.1PC3 192.168.1.2 255.255.255.0 192.168.1.1PC4 192.168.2.2 255.255.255.0 192.168.2.1PC5 192.168.1.3 255.255.255.0 192.168.1.1PC6 192.168.2.3 255.255.255.0 192.168.2.1PC7 192.168.1.3 255.255.255.0 192.168.1.1PC8 192.168.2.3 255.255.255.0 192.168.2.1这时,PC1与PC2 , PC3与PC5与PC7 , PC4与PC6与PC8之间可以互相连通,然后配置路由器端口地址如下:Router(config)# int fa0/0Router(config-if)# ip addr 192.168.0.1 255.255.255.0Router(config-if)# no shutdownRouter(config-if)# exitRouter(config)# int fa0/1Router(config-if)# no shutdownRouter(config-if)# exitRouter(config)# int fa0/1.1Router(config-subif)# ip addr 192.168.1.1 255.255.255.0Router(config-subif)#no shutdownRouter(config-subif)# exitRouter(config)# int fa0/1.2Router(config-subif)# ip addr 192.168.2.1 255.255.255.0Router(config-subif)#no shutdownRouter(config-subif)# end这样配置路由器端口地址之后,各PC机之间都能够相互连通.第二项试验----路由器配置试验实验要求:使用仿真软件描述网络拓扑图1.2按照如下要求配置RIP 协议:设置各PC 机IP 地址:PC1 处于192.168.1.0 网段;PC2 处于192.168.2.0 网段;PC3 处于192.168.3.0 网段;PC4 处于192.168.4.0 网段设置路由器端口的IP 地址在路由器上配置RIP 协议,使各PC 机能互相访问思考题(进阶)如果不设置时钟频率,会出现什么现象在路由器上重新配置OSPF 协议,使各PC 机能互相访问试验过程:首先按照如下要求配置各PC的IP地址IP地址子网掩码默认网关PC1 192.168.0.2 255.255.255.0 192.168.0.1PC2 192.168.1.2 255.255.255.0 192.168.1.1PC3 192.168.2.2 255.255.255.0 192.168.2.1PC4 192.168.3.2 255.255.255.0 192.1683.1路由器的配置如下:首先配置路由器的基本参数Router1的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.0.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.4.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.5.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter2的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.1.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.4.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.6.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter3的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.2.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.5.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.6.2 255.255.255.0Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s2Router(config-if)#ip address 192.168.7.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter4的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.3.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.7.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#end然后进行RIP协议配置:在路由器Router1 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.0.0Router(config-router)#network 192.168.4.0Router(config-router)#network 192.168.5.0Router(config-router)#end在路由器Router2 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.1.0Router(config-router)#network 192.168.4.0Router(config-router)#network 192.168.6.0Router(config-router)#end在路由器Router3 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.2.0Router(config-router)#network 192.168.5.0Router(config-router)#network 192.168.6.0Router(config-router)#network 192.168.7.0Router(config-router)#end在路由器Router4 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.3.0Router(config-router)#network 192.168.7.0Router(config-router)#end配置完了之后各PC机之间能够相互通信.第三项试验----VLAN划分试验试验要求:在第一项试验的最终配置结果上进行VLAN 划分划分VLAN,并按照如下所述配置各VLAN 的访问权限:将交换机2、交换机3、交换机4 组成的部分网络(路由器A 右部网络)划分成2 个VLAN: PC3、PC5、PC7 处于一个VLAN;PC4、PC6、PC8 处于一个VLAN。
华中科技大学计算机原理实验报告
电气学科大类《计算机原理与应用实验》课程实验报告电气与电子工程学院级姓名:学号:专业班号:日期:2014年1月7日实验成绩:评阅人:实验评分表目录实验评分表错误!未指定书签。
实验一:软件安装与使用错误!未指定书签。
一、实验目的错误!未指定书签。
二、实验设备错误!未指定书签。
三、实验任务错误!未指定书签。
四、实验原理错误!未指定书签。
五、实验内容错误!未指定书签。
六、实验过程及结果错误!未指定书签。
七、实验感想八、参考文献实验二:汇编语言实例讲解与程序编写一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验三:基于软件的最小系统硬件设计一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验四:基于最小系统的汇编程序设计一、实验目的错误!未指定书签。
二、实验设备错误!未指定书签。
三、实验任务错误!未指定书签。
四、实验原理错误!未指定书签。
五、实验内容六、实验过程及结果七、实验感想八、参考文献实验五:并行接口实验(演示实验)一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验六:工频测频接口电路设计与实现一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验一:软件安装与使用一、实验目的通过本实验学习软件的安装与使用。
二、实验设备微机一台,仿真软件三、实验任务.安装仿真软件。
.利用仿真软件编程。
四、实验原理仿真软件就是在下的一种仿真软件,它可以仿真模拟的程序运行,并且可以直观地观察寄存器的变化情况。
结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟),还有一个循序渐进的指导工具。
这对刚开始学组合语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。
华中科技大学计算机网络实验二报告
华中科技大学计算机网络实验(二)报告————————————————————————————————作者:————————————————————————————————日期:ﻩ计算机网络课程实验报告实验2:抗干扰编码姓名李蓝鑫院系自动化学院学号U201514280实验地点科技楼十二楼机房实验时间2018年5月3日实验目的:1. 了解抗干扰编码原理。
2、掌握海明编码和CRC编码的原理,能熟练计算实验内容:内容1:海明编码1.1海明编码原理将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码;在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者个出错的校验组的共同校验位,得出具体的出错比特位;对错误位取反来将其纠正;假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2^r-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2^r-1,同时也确保各位码本身不被其他校验码校验)。
海明码的校验码的位置必须是在2n次方位置(n从0开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。
确定每个校验码所校验的比特位:1.2海明编码程序流程图1.3交互界面设计编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框内输出编码序列,对输入编码要求为二进制输入译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进制序列的要求1.4核心代码与注释输入序列框callback%做输入检测,检测是否是“0”“1”输入,否则报错temp_str=get(handles.input,'String');num_char=unique(temp_str);%unique函数获得输入字符串中不同字符的字符串if length(num_char)==2 %如果字符串长度为2if num_char(2)=='1' %第二个字符不是“1”说明字符串中有其他字符else set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelseif length(num_char)==1 %如果字符串长度为1,判断“1”还是“0",否则报错if num_char(1)=='0'elseif num_char(1)=='1'elseset(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelse %如果字符串长度不为2,直接报错set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');End编码按钮callback(编码核心)%获取输入字符串temp_str=get(handles.input,'string');%获取字符串长度len_str=length(temp_str);%转存原码字符串长度备用k=len_str;%初始化需要插入的校验码的位数r=0;%根据海明编码的2^(r)-1)<(k+r)要求,计算校验码位数while((2^(r)-1)<(k+r))r=r+1;end%把字符串数组转成0和1的数组,便于处理for i=1:1:len_strif temp_str(i)=='1'yuan(i)=1;%原码数组为yuanelseyuan(i)=0;endend%把求得相应位数的校验码,用0插入原码中得到新码j=0;m=1;for i=1:1:(k+r)if i==2^(j) %如果该位置为2的次方,则插入校验码xin(i)=0;j=j+1;elsexin(i)=yuan(m);m=m+1;endend%进行海明编码odd=0;%用于计算每位校验码负责校验的位置的和for j=1:1:r %共有r位校验码,需要计算r次n=1; %初始化循环变量i=1;while((n*2^(j-1)+i-1)<=(k+r))%当没有超过数组长度时继续循环if i>(2^(j-1)) %如果本段的编码已经加完i=1; %则调转到下一段,也就是隔一个2^(j-1)的段再进行累加n=n+2;else %累加odd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0 %判断是否为偶数xin(2^(j-1))=0; %若为偶数,则在对应的校验位插入0 elsexin(2^(j-1))=1; %若为奇数,则在对应的校验为插入1 endodd=0;end%编码完毕,把数组转换成字符串用于输出for i=1:1:(k+r)if xin(i)==1output_str(i)='1';elseoutput_str(i)='0';endendset(handles.out,'String',output_str);译码按钮callback(原理与编码基本相同)%获得译码序列字符串temp_str=get(handles.input,'string');len_str=length(temp_str);%判断输入序列长度是否满足要求,不满足报错返回if len_str<3errordlg('译码最低输入位数为3位','输入出错');elsek=len_str;%编码中信息码的个数r=len_str;%编码中校验码的个数while((2^(r)-1)>=len_str)r=r-1;endr=r+1;%找到校验码的个数k=len_str-r;for i=1:1:len_str%得到所有编码数组if temp_str(i)=='1'xin(i)=1;elsexin(i)=0;endend%提取出信息编码数组m=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endend%重新偶校验,原理同编码odd=0;for j=1:1:rn=1;i=1;while((n*2^(j-1)+i-1)<=(k+r))if i>(2^(j-1))i=1;n=n+2;elseodd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0check(j)=0; %校验结果存在check数组中elsecheck(j)=1;endodd=0;end%把check数组也就是校验结果转成十进制数num_wrong=0;for j=1:1:rnum_wrong=num_wrong*2;if check(r-j+1)==1num_wrong=num_wrong+1;endend%判断校验是否正确,为0则正确if num_wrong==0for m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);else%否则校验错误,对应位置取反后再输出if xin(num_wrong)==0xin(num_wrong)=1;elsexin(num_wrong)=0;endm=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endendfor m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);errordlg(['校验码第',num2str(num_wrong),' 位出错,对应位置取反后得到正确解码为',output_str],'校验出错');endend1.5程序执行测试1.5.1 编码测试①正常编码1.5.2 译码测试①输入报错②正常解码③解码错误与纠正内容2:CRC编码2.1 CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。
华科_计算机系统实验报告
课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:年月日计算机科学与技术学院目录实验1: (1)实验2: (7)实验3: (24)实验总结 (34)实验1:数据表示1.1 实验概述实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。
实验目标:加深对数据二进制编码表示的了解。
实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。
实验语言:c。
实验环境:linux1.2 实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。
1)位操作表1列出了bits.c中一组操作和测试位组的函数。
其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。
你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。
表1 位操作题目列表2)补码运算表2列出了bits.c中一组使用整数的补码表示的函数。
可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
表2 补码运算题目列表3)浮点数操作表3列出了bits.c中一组浮点数二进制表示的操作函数。
可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。
表3 浮点数操作题目列表表示,当输入参数是NaN 时,返回NaN 号整型操作,包括||,&&以及if,while控制结构4 float_f2i 返回浮点数‘f’的强制整型转换“(int)f”表示仅能使用任何整型/无符号整型操作,包括||,&&以及if,while控制结构301.3 实验设计根据题目要求,选择合适的操作符来编写代码。
华中科技大学-计算机学院-数据结构实验报告
华中科技大学-计算机学院-数据结构实验报告LT目录1基于顺序存储结构实现线性表的基本运算 (1)1.1 实验目的 (1)1.2 线性表演示系统设计 (1)1.2.1 系统总体设计 (1)1.2.2 有关常量和类型定义 (1)1.2.3 算法设计 (1)1.3 线性表演示系统实现与测试 (3)1.3.1 系统实现 (3)1.3.2 系统测试 (11)1.4 实验小结 (12)2 基于链式实现线性表的基本运算 (13)2.1 问题描述 (13)2.2 线性表演示系统设计 (13)2.2.1 系统总体设计 (13)2.2.2 有关常量和类型定义 (13)2.2.3 算法设计 (13)2.3 线性表演示系统实现与测试 (15)2.3.1 系统实现 (15)2.3.2 系统测试 (24)2.4 实验小结 (25)3基于顺序存储结构实现栈的基本运算 (27)3.1实验目的 (27)3.2栈演示系统设计 (27)3.2.1 系统总体设计 (27)3.2.2 算法实现 (27)3.3 栈演示系统实现与测试 (28)3.3.1 程序实现 (28)3.3.2 系统测试 (34)3.4 实验小结 (35)4基于循环队列存储结构实现队列的基本运算 (36)4.1 问题描述 (36)4.2.1 系统总体设计 (36)4.2.2 有关常量和类型定义 (36)4.2.3 算法设计 (36)4.3 队列演示系统实现与测试 (37)4.3.1 系统实现 (37)4.3.2 系统测试 (44)4.4 实验小结 (45)5基于二叉链表实现二叉树的基本运算 (46)5.1 实验目的 (46)5.2.1 系统总体设计 (46)5.2.2 有关常量和类型定义 (46)5.2.3 算法设计 (46)5.3 二叉树演示系统实现与测试 (48)5.3.1 系统实现 (48)5.3.2 系统测试 (79)5.4 实验小结 (81)6基于邻接表实现图的基本和常见运算 (82)6.1 实验目的 (82)6.2.1 系统总体设计 (82)6.2.2 有关常量和类型定义 (82)6.2.3 算法设计 (82)6.3 图演示系统实现与测试 (83)6.3.1 系统实现 (83)6.3.2 系统测试 (101)6.4 实验小结 (103)参考文献 (104)1基于顺序存储结构实现线性表的基本运算1.1 实验目的通过实验达到:(1)加深对线性表的概念、基本运算的理解;(2)熟练掌握线性表的逻辑结构与物理结构的关系;(3)物理结构采用顺序表,熟练掌握线性表的基本运算的实现。
华科计算机并行实验报告
课程设计报告题目:并行实验报告课程名称:并行编程原理与实践专业班级:学号:姓名:指导教师:报告日期:计算机科学与技术学院目录1,实验一 (1)1 实验目的与要求 (1)1.1实验目的 (1)1.2实验要求 (1)2 实验内容 (1)2.1.1熟悉pthread编程 (1)2.1.2简单的thread编程 (2)2.2.1熟悉openMP编程 (3)2.3.1熟悉MPI编程 (4)2,实验2~5 (7)1 实验目的与要求 (7)2 算法描述 (7)3.实验方案 (8)4实验结果与分析 (8)3 心得体会 (10)附录: (10)3 蒙特.卡罗算法求π的并行优化 (19)1.蒙特.卡罗算法基本思想 (19)2.工作过程 (20)3.算法描述 (20)4 设计与实现 (21)5 结果比较与分析 (23)6 思考与总结 (24)1,实验一1 实验目的与要求1.1实验目的1)熟悉并行开发环境,能进行简单程序的并行开发,在Linux下熟练操作。
2)熟悉一些并行工具,如pthread,OpenMP,MPI等进行并行编程3)培养并行编程的意识1.2实验要求1)利用pthread、OpenMP、MPI等工具,在Linux下进行简单的并行编程,并且掌握其编译、运行的方法。
2)理解并行计算的基础,理解pthread、OpenMP、MPI等并行方法。
2 实验内容2.1.1熟悉pthread编程Linux系统下的多线程遵循POSIX线程接口,称为 pthread。
编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。
下面是pthread编程的几个常用函数:1,int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg);返回值:若是成功建立线程返回0,否则返回错误的编号形式参数:pthread_t *restrict tidp 要创建的线程的线程id指针const pthread_attr_t *restrict attr 创建线程时的线程属性void* (start_rtn)(void) 返回值是void类型的指针函数void *restrict arg start_rtn的行参2 , int pthread_join( pthread_t thread, void **retval );thread表示线程ID,与线程中的pid概念类似;retval用于存储等待线程的返回值连接函数pthread_join()是一种在线程间完成同步的方法。
华中科技大学计算机网络实验报告
实验四:网络协议与 Web 通信
一、 实验目的
1. 了解网络协议数据单元的格式 2. 分析网络协议工作基本流程 3. 深入理解 Web 应用的通信过程
二、 实验内容
1. 网络协议数据单元分析 通过 wireshark 抓取局域网数据包并分析各个层次的协议数据单元内容 (1) 以太网帧头 (2) IP 分组首部 (3) ARP 包 (4) ICMP 包(ping) 2. Web 原理实验 (1) HTTP 协议分析 (2) 通过 socket 编程模拟 HTTP 协议通信过程
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
华科计算机学院算法实验报告-二分检索树
课程实验报告课程实验名称:_算法设计与分析实验设计专业班级:学号:__姓名:____指导教师:王多强_报告日期: 2013年6月15日计算机科学与技术学院目录一、实验题目 (2)二、理论方法 (2)三、算法描述 (3)四、代码实现 (4)1.模块一:基本算法 (4)2.模块二:输出结果 (5)1)输出C(0,n),W(0,n),R(0,n) (5)2)从上至下,输出每个节点的左右节点 (5)五、实验结果截图 (6)六、计算时间分析 (6)七、实验体会 (7)八、源代码 (7)12一、 实验题目在二分检索树中,为了把动态规划应用于得到一颗最优二分检索树的问题,需要把构造这样的一个数看成是一系列决策的结果,而且要能列出求取最优决策序列的递推式。
二、 理论方法解决上述问题的一种可能方法是对{a 1,a 2,…,a n } (a 1<a 2 < … < a n )的二分检索树,若a k 是该树的根,则内结点a 1,a 2,…,a k-1和外部结点E 0,E 1,…,E k-1将位于根a k 的左子树L 中,而其余的结点 a k +1, a k+2, …,a n 及E k ,E k+1,…,E n 将位于右子树R 中。
含义:左、右子树的预期成本。
这里,将左、右子树的根作为第一级来统计左、右子树中所有结点的级数,该级数等于相对原树根的级数-1。
若:level T (X)为结点X 在树T 中的级数,level(X)为X 在T 的 左/右子树中的级数,则:level T (X) = level(X)+1∑∑∑∑∑∑∑∑∑∑∑∑∑∑≤≤≤≤+≤≤≤≤+≤≤≤≤≤≤≤≤≤≤∈≤≤+∈≤≤∈≤≤∈≤≤≤≤++-++++-++=-++++-++++=-+=ni k ni 1k ni k ni 1k 1-k i 01-k i 11-k i 01-k i 1ni k 右子树E ni 1k 右子树a 1-k i 0左子树E 1-k i 1左子树a ni 0ni 1Q(i)P(i) )1)((*Q(i))(*P(i) Q(i)P(i) )1)((*Q(i))(*P(i)P(k) )1)1)((*Q(i))1)((*P(i) )1)1)((*Q(i))1)((*P(i))( )1)((*Q(i))(*P(i))(COST i i i i i i i i i i i i i T i T E level a level E level a level E level a level E level a level k P E level a level T 证明最优性原理对于上述问题是成立的:∑∑<≤<≤-+=k i iki iE level i Q a level i P L COST 01)1((*)()(*)()(∑∑≤≤≤<-+=ni k ini k iE level i Q a level i P R COST )1((*)()(*)()(若以ak 为根的二分检索树T是关于集合{a1,a2,…,an}的一棵最优二分检索树,L、R分别是ak 的左子树和右子树,L包含结点a1,a2,…,ak-1和E,E1,…,Ek-1、R包含结点及ak+1, ak+2, …,an和Ek,Ek+1,…,En,则L和R必是相应集合的最优二分检索树。
华中科技大学计算机图形学实验报告解析
课程实验报告课程名称:计算机图形学专业班级:学号:姓名:指导教师:报告日期:2015-11-11计算机科学与技术学院实验一:分形图形绘制一、实验目的(标题四号黑体)(1)理解OpenGL 中glut 程序框架;(2)掌握二维基本图形绘制算法;(3)利用二维基本图形绘制算法,扩展对其他复杂图形的绘制理解。
二、实验内容1、实验算法(a)中点Bresenham算法画线a)输入直线的两个端点:端点、端点。
必要时交换A、B两点的坐标,使A点不在B点的右边。
令,,,b)讨论直线的斜率的大小及正负,分四种情况分别逐点画线:i.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
ii.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
iii.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
iv.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
c)当直线没有画完时重复b)步骤(b)绘制分形三角形a)输入三角形的三个端点:端点、端点、端点、递归层数n。
b)连接A、B、C三点。
c)当时,连接输入三角形三边的中点,将分割得到的四个三角形中包含顶点的三个、作为输入参数,递归调用本步骤。
2、源程序#include <iostream>#include <math.h>#include <GL/glut.h>#define ROUND(a) ((int )(a+0.5)) //求某个数的四舍五入值using namespace std;//全局变量声明:三角形三顶点及递归层数GLint Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc;int Global_n;void init(void){glClearColor(1.0, 1.0, 1.0, 0.0);//指定窗口的背景色为白色glMatrixMode(GL_PROJECTION);//对投影矩阵进行操作gluOrtho2D(0.0, 600.0, 0.0, 600.0);//使用正投影}//绘制直线的函数void lineDDA(GLint xa, GLint ya, GLint xb, GLint yb){GLint dx = xb - xa, dy = yb - ya; //计算x,y方向的跨距int steps, k; //定义绘制直线像素点的步数float xIcre, yIcre, x = xa, y = ya; //定义步长的增量//取X,Y方向跨距较大的值为步数if (abs(dx) > abs(dy)) steps = abs(dx);else steps = abs(dy);//根据步数来求步长增量xIcre = dx / (float)steps;yIcre = dy / (float)steps;//从起点开始绘制像素点for (k = 0; k <= steps; k++){glBegin(GL_POINTS);glVertex2f(x, y);glEnd();x += xIcre;y += yIcre;}}//绘制直线的函数(中点Bresenham算法)void lineBre(GLint xa, GLint ya, GLint xb, GLint yb){GLint dx, dy, d, UpIncre, DownIncre, x, y; //统一规定UpIncre为能使非最大位移方向坐标改变时的Di增量//统一规定DownIncre为不能使非最大位移方向坐标改变时的Di增量if (xa > xb) {/* 确保a点不在b点的右方*/x = xb; xb = xa; xa = x;y = yb; yb = ya; ya = y;}x = xa; y = ya; //计算画线起点dx = xb - xa; dy = yb - ya; //计算dx和dyif (abs(dx) >= abs(dy)){/* 考虑|k|<=1的情况*/if (dy >= 0) {/* 考虑k>=0的情况*/d = dx - 2 * dy; //计算D0UpIncre = 2 * dx - 2 * dy; DownIncre = -2 * dy; //计算UpIncre和DownIncrewhile (x <= xb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();x++; //移动下一画点位置的x轴坐标if (d < 0) {/* 考虑Di<0的情况*/y++; //移动下一画点位置的y轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}else {/* 考虑k<0的情况*/d = -dx - 2 * dy; //计算D0UpIncre = -2 * dx - 2 * dy; DownIncre = -2 * dy; //计算UpIncre和DownIncrewhile (x <= xb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();x++; //移动下一画点位置的x轴坐标if (d > 0) {/* 考虑Di>0的情况*/y--; //移动下一画点位置的y轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}}else {/* 考虑|k|>1的情况*/if (dy > 0) {/* 考虑k>0的情况*/d = 2 * dx - dy; //计算D0UpIncre = 2 * dx - 2 * dy; DownIncre = 2 * dx; //计算UpIncre和DownIncrewhile (y <= yb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();y++; //移动下一画点位置的y轴坐标if (d > 0) {/* 考虑Di>0的情况*/x++; //移动下一画点位置的x轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}else {/* 考虑k<0的情况*/d = -2 * dx - dy; //计算D0UpIncre = -2 * dx - 2 * dy; DownIncre = -2 * dx; //计算UpIncre和DownIncrewhile (y >= yb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();y--; //移动下一画点位置的y轴坐标if (d < 0) {/* 考虑Di>0的情况*/x++; //移动下一画点位置的x轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}}}void Triangle(GLint xa, GLint ya, GLint xb, GLint yb, GLint xc, GLint yc){// 绘制三角形// xa,ya;xb,yb;xc,yc;是三角形的三个顶点lineBre(xa, ya, xb, yb);lineBre(xb, yb, xc, yc);lineBre(xa, ya, xc, yc);}void Fractal(GLint xa, GLint ya, GLint xb, GLint yb, GLint xc, GLint yc, int n){GLint xaa, yaa, xbb, ybb, xcc, ycc; //获取三边中点的坐标xaa = (xb + xc) / 2;yaa = (yb + yc) / 2;xbb = (xa + xc) / 2;ybb = (ya + yc) / 2;xcc = (xa + xb) / 2;ycc = (ya + yb) / 2;if (n >= 1) {//递归Fractal(xa, ya, xbb, ybb, xcc, ycc, n - 1);Fractal(xb, yb, xaa, yaa, xcc, ycc, n - 1);Fractal(xc, yc, xaa, yaa, xbb, ybb, n - 1);Triangle(xaa, yaa, xbb, ybb, xcc, ycc); //连接三边中点}}void Fractal_Call(){// 绘制分形三角形// xa,ya;xb,yb;xc,yc;是三角形的初始顶点// n 是三角形的递归层数glClear(GL_COLOR_BUFFER_BIT);//设定颜色缓存中的值glColor3f(1.0, 0.0, 0.0); //设置直线颜色为红色Triangle(Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc);//连接三角形顶点Fractal(Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc, Global_n);//递归生成分形图形glFlush(); //立即执行}int main(int argc, char ** argv){glutInit(&argc, argv);//初始化GLUT库OpenGL窗口的显示模式glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //初始化窗口的显示模式glutInitWindowSize(600, 600); //设置窗口的尺寸glutInitWindowPosition(100, 100); //设置窗口的位置glutCreateWindow("分形图形绘制");cout << "分形图形绘制" << endl;//输入直线的起点坐标cout << "please input the first point(xa,ya) of the Triangle(Integer that range from 0 to 600): " << endl;cin >> Global_xa;cin >> Global_ya;//输入直线的终点坐标cout << "please input the second point(xb,yb) of the Triangle(Integer range from 0 to 600): " << endl;cin >> Global_xb;cin >> Global_yb;//输入直线的终点坐标cout << "please input the last point(xc,yc) of the Triangle(Integer range from 0 to 600): " << endl;cin >> Global_xc;cin >> Global_yc;//输入直线的终点坐标cout << "please input the recursion layer(n) of the Triangle(Integer range greater than -1): " << endl;cin >> Global_n;init(); //初始化glutDisplayFunc(Fractal_Call); //执行画图程序glutMainLoop(); //启动主GLUT事件处理循环}3、实验结果图3-1 DDA算法绘制直线结果(k=1)图3-2 DDA算法绘制直线结果(k>1)图3-3 DDA算法绘制直线结果(k<-1)图3-4 DDA算法绘制直线结果(0>k>-1)图3-5 四层分形斜三角形图3-6 六层分形正三角形三、实验心得这次实验真的算是一次比较特殊的体验,因为这是我第一次在程序中完全地依赖数学编写程序。
嵌入式系统实验报告(华中科技大学)
课程实验报告实验名称:嵌入式系统实验专业班级:计算机科学与技术x班学号:Ux姓名:x合作者:x实验时间:xxxx年xx月xx日计算机科学与技术学院试验一:bootloader (ads、引导)一、实验任务1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心二、实验内容编写串口接收数据函数编写串口发送数据函数学习ads、jtag调试、flash烧写打印菜单,等待用户输入下载并运行linux核心配置主机的nfs服务器,与linux核心连接三、实验步骤1.编写串口接收数据函数编写串口发送数据函数修改bootloader:菜单、串口收发、命令行;接收串口数据并做相应处理:while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}Bootloader的main()函数打印菜单:int main(void){ARMTargetInit(); //目标板初始化;//接收用户命令,传递linux核心;Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');return 0;}串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}2.使用ads1.2编译bootloader;3.使用uarmjtag下载、调试bootloader;4.使用axd查看变量、内存,单步跟踪;5.配置超级终端,与bootloader通讯;6.配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;9.启动Linux核心运行,察看结果;10.linux核心能够运行到加载root步骤,说明bootloader正常运行;11.将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。
华中科技大学计算机网络实验报告
华中科技⼤学计算机⽹络实验报告计算机⽹络实验报告班级:电信0904姓名:XX学号:U200913693实验四:⽹络协议与Web通信⼀、实验⽬的1.了解⽹络协议数据单元的格式2.分析⽹络协议⼯作基本流程3.深⼊理解Web应⽤的通信过程⼆、实验内容1.⽹络协议数据单元分析通过wireshark抓取局域⽹数据包并分析各个层次的协议数据单元内容(1)以太⽹帧头(2)IP分组⾸部(3)ARP包(4)ICMP包(ping)2.Web原理实验(1)HTTP协议分析(2)通过socket编程模拟HTTP协议通信过程三、实验原理1.Web通信经过四个步骤:(1)建⽴连接(2)客户端发送HTTP REQUEST请求(3)服务器端接收请求,⽣成RESPONSE响应(4)关闭连接2.HTTP协议客户端浏览器或其他程序与Web服务器之间的应⽤层通信协议。
⼀般在Internet 上的Web服务器上存放的都是超⽂本信息,客户机需要通过HTTP协议传输所要访问的超⽂本信息。
四、实验内容及分析1.编译、执⾏参考程序本次实验提供了两个原始程序(NetServer.java和NetClient.java),它们可以实现⼀个服务器/客户端请求响应的完整过程。
Dos环境下先后编译执⾏NetServer.java与NetClient.java,即可得到⼀次完整的客户端向服务器请求并得到响应的完整过程,结果如下:2.修改、编写实验程序参考程序模拟了客户端与服务器之间的对话,但由于其之间交互的数据都是我们设定的⽽不含有http报头信息,因此不能和真正的web服务器与浏览器对话,以下即为实现⾃制web服务器的⽅法(1)利⽤⾃制的服务器获取真正浏览器的HTTP Request 报头信息:运⾏⾃制的服务器,默认监听端⼝8080,在浏览器中输⼊以下⽹址http://127.0.0.1:8080/new/main/UserLoad.jsp,其中127.0.0.1为本机localhost地址,这样浏览器就会向⾃制服务器发出请求,服务器即可获取http request报头信息。
