软件开发环境试验(1).docx

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子科技大学 实验报告 学生姓名:郭小明 学号:20 一、 实验室名称:主楼A2-412 二、 实验项目名称: 软件开发环境试验——Huffman编码实验 三、 实验原理: 分割函数的三项原则 分割函数的三项原则包括:与其写注释,不如写函数;重复就是罪恶;函数不要超过 50行至70行。 关于分割函数三原则的具体含义,请见教材和课堂教学 PPT关于电话本的内容。这里 不再赘述。 Huffman编码的基本原理 本实验要求使用Huffman编码算法,实现对文件的压缩和解压。 因此,我们首先介绍 huffman的编码算法。 Huffman编码是一种可变长编码方式,是由美国数学家 David Huffman创立的,是二 叉树的一种特殊转化形式。编码的基本原理是:将使用次数多的代码转换成长度较短的编 码,而使用次数少的代码则可以使用较长的编码,并且保持编码的唯一可解性。 指导书试验原理部分较多,在这里就不做粘贴复制了。 四、 实验目的: 本实验总体目的是,通过使用 huffman编码算法从而实现文件的压缩和解压,以达到 使学生掌握并灵活运用分割函数的三项原则。 五、实验内容: 本实验要求实现一个exe程序。这个程序按照huffman编码方式,同时包含了压缩功能 和解压功能。用户通过以下命令进行压缩: C:\> - c uncompress_filename compress_filename 上述命令中,是程序名,-c表示要进行压缩。uncompress_filenam是要压缩的文件名, 可以包含路径信息,而 compress_file name是压缩之后的文件名,同样可以包含路径信息。 用户可以通过如下命令进行解压: C:\> - u compress_filename uncompress_filename 上述命令中,-u表示要执行解压命令。compress_filename是要解压的文件名,可以包 含路径信息;un compress_file nam^是解压后所得到的文件,同样可以包含路径信息。 提示:在实现程序时,需要考虑如何存储 huffman树或者编码表或者词频表等等。 本实验要求实现两个版本的程序,一是 C语言版本的,二是C++版本的。对这两个版 本的要求如下: 对于每一个版本的程序,需要在实验报告中给出函数调用关系图、流程处理关系 图以及它们的文字说明等内容; 对于每一个版本的程序,都需要在实验报告中给出源代码。为了便于查重,代码 中注释的比例要占到总行数的 20%; C++版本的程序,需要给出类关系图。 实验报告的评分标准,包括以下几个方面: 实验报告是否规范 实验报告内容是否详实 实验报告中是否包含了函数调用图、流程图、类图以及它们的文字说明 实验报告中的代码注释是否达到要求 程序是否正确无误 程序是否严格按照分函数的原则编写 C++版本的程序类关系的耦合度如何 程序实现是否考虑了大文件情况 六、 实验器材(设备、元器件): PC机,vs 2008软件平台。 七、 实验数据及结果分析: 代码见附件。 huffma nForC 文件中函数列表如下: #sum_bit##co unt# */ void freToFile(int code[],HCode *HC) Huffma nTree Control 类 jmp 整个多分支流 HuffmanNo Code 类 令地址 swap() else if() cmp操作数1操作数2 jxx地址(如果不符合if条件就跳转到下一个if条件处再进行比较) jmp 整个多分支流程语句后的指令地址 } else if() cmp操作数1操作数2 jxx地址(如果不符合if条件就跳转到下一个if条件处再进行比较) { jmp 整个多分支流程语句后的指令地址 else if () cmp操作数1操作数2 jxx地址(如果不符合if条件就跳转到else条件处再进行比较) { } else jmp 整个多分支流程语句后的指令地址 { } for循环反汇编代码 for循环反汇编代码 通过实验指导书当中给出的代码清单 9的反汇编结果和分析,给出 的规律如下: for(int i = 0;i<10;i++) { 定义i变量,并进行初始化指令代码 jmp xxx跳转到A处执行 B:执行计数变量递增操作 将变量i mov至U eax处 eax里内容递增1 再将eax里面内容mov到i的变量里 A:cmp操作数1操作数2与循环结束条件做比较指令代码 jxx xxx 如果仍旧满足条件,向下执行;否则跳转到 C处向下执行 循环体指令代码 jmp xxx跳转到B处执行 } C: 代码清单10 while循环的代码示例: int _tmain(nt argc, _TCHAR* argv[]) { int i

文档评论(0)

kunpengchaoyue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档