当前位置:文档之家› 32位浮点数加法设计仿真实验报告

32位浮点数加法设计仿真实验报告

32位浮点数加法设计仿真实验报告
32位浮点数加法设计仿真实验报告

32位浮点数加法设计仿真实验报告

名字:李磊学号:10045116 班级:10042211

32位浮点数的IEEE-754格式

单精度格式

IEEE.754标准规定了单精度浮点数共32位,由三部分组成:23位尾数f,8位偏置指数e,1位符号位s。将这三部分由低到高连续存放在一个32位的字里,对其进行编码。其中[22:0]位包含23位的尾数f;[30:23]位包含8位指数e;第31位包含符号s

{s[31],e[30:23],f[22:0]}

其中偏置指数为实际指数+偏置量,单精度浮点数的偏置量为128,双精度浮点数的偏置量为1024。

规格化的数:由符号位,偏置指数,尾数组成,实际值为1.f乘2的E-128次方

非规格化的数:由符号位,非偏置指数,尾数组成,实际值为0.f乘2的E次方

特殊的数:0(全为零),+无穷大(指数全为1,尾数为0,符号位为0),-无穷大(指数

全为1,尾数为0,符号位为1),NAN(指数全为1,尾数为不全为0)

浮点数加法器设计

设计思路:

1.前端处理,还原尾数

2.指数处理,尾数移位,使指数相等

3.尾数相加

4.尾数规格化处理

5.后端处理,输出浮点数

具体设计:

设计全文:

module flowadd(ix, iy, clk, a_en, ost,oz);

input ix, iy, clk, a_en;

output oz, ost;

wire[31:0] ix,iy;

reg[31:0] oz;

wire clk,ost,a_en;

reg[25:0] xm, ym, zm;

reg[7:0] xe, ye, ze;

reg[2:0] state;

parameter start = 3'b000, //设置状态机

zerock = 3'b001,

exequal = 3'b010,

addm = 3'b011,

infifl = 3'b100,

over = 3'b110;

assign ost = (state == over) ? 1 : 0; /*后端处理,输出浮点数*/

always@(posedge ost)

begin

if(a_en)

oz <= {zm[25],ze[7:0],zm[22:0]};

end

always@(posedge clk) //状态机

begin

case(state)

start: //前端处理,分离尾数和指数,同时还原尾数

begin

xe <= ix[30:23];

xm <= {ix[31],1'b0,1'b1,ix[22:0]};

ye <= iy[30:23];

ym <= {iy[31],1'b0,1'b1,iy[22:0]};

state <= zerock;

end

zerock:

begin

if(ix == 0)

begin

{ze, zm} <= {ye, ym};

state <= over;

end

else

if(iy == 0)

begin

{ze, zm} <= {xe, xm};

state <= over;

end

else

state <= exequal;

end

exequal: //指数处理,使得指数相等begin

if(xe == ye)

state <= addm;

else

if(xe > ye)

begin

ye <= ye + 1;

ym[24:0] <= {1'b0, ym[24:1]};

if(ym == 0)

begin

zm <= xm;

ze <= xe;

state <= over;

end

else

state <= exequal;

end

else

begin

xe <= xe + 1;

xm[24:0] <= {1'b0,xm[24:1]};

if(xm == 0)

begin

zm <= ym;

ze <= ye;

state <= over;

end

else

state <= exequal;

end

end

addm: //带符号位和保留进位的尾数相加begin

if ((xm[25]^ym[25])==0)

begin

zm[25] <= xm[25];

zm[24:0] <= xm[24:0]+ym[24:0];

end

else

if(xm[24:0]>ym[24:0])

begin

zm[25] <= xm[25];

zm[24:0] <=xm[24:0]-ym[24:0];

end

else

begin

zm[25] <= ym[25];

zm[24:0] <=ym[24:0]-xm[24:0];

end

ze <= xe;

state <= infifl;

end

infifl: //尾数规格化处理

begin

if(zm[24]==1)

begin

zm[24:0] <= {1'b0,zm[24:1]};

ze <= ze + 1;

state <= over;

end

else

if(zm[23]==0)

begin

zm[24:0] <= {zm[23:0],1'b0};

ze <= ze - 1;

state <= infifl;

end

else

state <= over;

end

over:

begin

state<= start;

end

default:

begin

state<= start;

end

endcase

end

endmodule

设计结果仿真

仿真结果为41A00000H+41080000H=41E40000H

41A00000H=10D,41080000H=4.25D,41E40000H=14.25D,验证成功

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

算法设计与分析实验报告贪心算法

算法设计与分析实验报告 贪心算法 班级:2013156 学号:201315614 姓名:张春阳哈夫曼编码 代码 #include float small1,small2; int flag1,flag2,count; typedefstructHuffmanTree { float weight; intlchild,rchild,parent; }huffman; huffmanhuffmantree[100]; void CreatHuffmanTree(intn,int m) { inti; void select(); printf("请输入%d个节点的权值:",n); for(i=0;i

printf("\n"); for(i=0;i

四路彩灯设计

Proteus 仿 真 大 作 业 课题:四路彩灯设计系部: 班级: 姓名: 指导老师: 2013.05.31

前言 Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。 使用Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。 因此,有较高的推广利用价值。

目录 第一章四路彩灯、555简介 (5) 1.1 四路彩灯设计原理 (5) 1.2 555芯片简介 (5) 第二章课程设计任务及要求 (6) 2.1 设计任务 (6) 2.2 设计要求及器件 (6) 2.3 设计目标 (6) 2.4 设计软件环境要求 (6) 2.5 元器件列表 (7) 2.6系统逻辑框图 (7) 2.7 彩灯点亮过程 (7) 第三章Proteus仿真电路 (8) 3.1 绘制数字时钟电路Protues仿真原理图: (8) 3.1.1 启动ISIS 7 Professional软件 (8) 3.1.2 数字时钟原理图 (9) 3.1.3 时钟电路 (9) 3.1.4 计数电路 (11) 3.1.5 电路检测 (12) 3.1.6参数的计算 (12) 3.2 仿真调试 (12) 第四章调试及测试结果分析 (14) 4.1 结果的调试及分析 (14) 4.2测试电路的方法和技巧: (14) 4.3调试中出现的故障、原因及排除方法: (14) 总结 (15) 参考文献 (16)

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

北京理工大学《数据结构与算法设计》实验报告实验一

《数据结构与算法设计》 实验报告 ——实验一 学院: 班级: 学号: 姓名:

一、实验目的 1.通过实验实践、巩固线性表的相关操作; 2.熟悉VC环境,加强编程、调试的练习; 3.用C语言编写函数,实现循环链表的建立、插入、删除、取数据等基本操作; 4.理论知识与实际问题相结合,利用上述基本操作实现约瑟夫环。 二、实验内容 1、采用单向环表实现约瑟夫环。 请按以下要求编程实现: ①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的 结点编号依次为1,2,……,m。 ②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到 第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点 的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出 了这个环表的全部结点为止。 三、程序设计 1、概要设计 为实现上述程序功能,应用单向环表寄存编号,为此需要建立一个抽象数据类型:单向环表。 (1)、单向环表的抽象数据类型定义为: ADT Joseph{ 数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0} 数据关系:R1={ |ai∈D,i=1,2,……,n} 基本操作: create(&L,n) 操作结果:构造一个有n个结点的单向环表L。 show(L) 初始条件:单向环表L已存在。 操作结果:按顺序在屏幕上输出L的数据元素。 Josephf( L,m,s,n) 初始条件:单向环表L已存在, s>0,n>0,s

课程设计----四路彩灯显示系统设计

数字电路逻辑设计 实 验 报 告 设计题目: 专业班级: 姓名: 学号:

设计课题:四路彩灯显示系统设计 1.设计任务和要求 设计一个四路彩灯控制器,设计要求如下: (1)接通电源后,彩灯可以自动按预先设置的程序循环闪烁。 (2)设置的彩灯花型由三个节拍组成: 第一节拍:四路彩灯从左向右逐次渐亮,灯亮时间1s,共用4s; 第二节拍:四路彩灯从右向左逐次渐灭,也需4s; 第三节拍:四路彩灯同时亮0.5s,然后同时变暗,进行4次,所需时间也 为4s。 (3)三个节拍完成一个循环,一共需要12s。一次循环之后重复进行闪烁。 2. 设计分析 四路彩灯既有四路输出,设依次为d Q、c Q、b Q、a Q,若“1”表示灯亮,“0”表示灯灭,由课题要求可知四路彩灯显示系统要求如下表1所示的输出显示。 表1 四路彩灯输出显示

由上表可知,需要一个分频器起节拍产生和控制作用,每4s 一个节拍,3个节拍共12s 后反复循环。一个节拍结束后应产生一个信号到节拍程序执行器,完成彩灯渐亮、渐灭、同时亮、同时灭等功能。 分频及节拍控制可以用一个模12计数器来完成;彩灯渐亮、渐灭可以用器件的左移、右移功能来实现,因此可选用移位寄存器74194来完成。同时亮0.5s 、同时灭0.5s 可考虑把1Hz 的秒脉冲信号直接加到输出显示端来完成。 综上所述,要完成四路彩灯显示功能需要有分频器、节拍控制器、节拍程序执行器及脉冲源等电路。 记第一,二,三节拍分别为012Y YY 有效时间应为4秒,0Y 结束1Y 马上开始,1 Y 后2Y 马上开始,如此循环不断。为此可考虑采用移位寄存器构成的移位型控制器。由于有三个状态,因此需要用三个触发器对现时状态进行记忆,为使各状态的有效时间间隔为4秒,则驱动该移位控制器动作时钟周期应为4秒。应在开机瞬间,使移位型控制器的状态被确定下来,即012Y YY 节拍应为100,可控制输入信号使触发器置位、复位来实现。 为实现0Y 功能要求器件具有右移功能,为实现1Y 功能要求器件有左移功能;而且左、右移输入可为“0”也可为“1”;为实现2Y 功能,要求器件同时具有并行置数功能。因此可选用一种具有左移、右移和并行置数功能的通用移位寄存器74LS194。74LS194具有并行输入端A 、B 、C 、D ,并行输出端A Q 、B Q 、C Q 、D Q ,右移输入端SR ,左移输入端SL 和模式控制输入端0S ,1S 以及一个无条件直接清除端CLR 。模式控制输入0S ,1S 有00、01、10、11四种组合方式,分别表示双向移位寄存器所具有的四种功能,即禁止、右移、左移和并行置数。为了使当 012Y YY =100时,01S S =01(右移),012Y YY =010时,01S S =10(左移),当012Y YY =001时01S S =11(并行置数)。 74LS194的输出端初态均为零,在开机瞬间,使移位控制端01S S 的状态被确 定下来,即 012Y YY =100时,01S S =01 右移串行数据输入端 SR 经脉冲信号经四分频电路和 通过两或门组成的节拍电路,使四路彩灯从右到左依次亮共 4秒 ,

网络程序设计实验报告-Winsock编程接口实验

网络程序设计 实验报告 实验名称: Winsock编程接口实验 实验类型:____验证型实验_____ __ 指导教师:______________________ 专业班级:_____________________ 姓名:_______________________ 学号:_____________________ 电子邮件:____________ 实验地点:______ _______ 实验日期2013 年 3 月29 日 实验成绩:__________________________

一、实验目的 ●掌握Winsock的启动和初始化; ●掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 二、实验设计 由实验内容可以知道: 1、编写程序能同时实现对多个域名的解析。比如在控制台输入:getip https://www.doczj.com/doc/2e6793512.html, https://www.doczj.com/doc/2e6793512.html,,能输出https://www.doczj.com/doc/2e6793512.html,和https://www.doczj.com/doc/2e6793512.html,对应的IP地址列表。 2、编写程序获取并输出本地主机的所有适配器的IP地址,子网掩码,默认网关,MAC 地址。 首先要了解一些基本的知识gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的基本知识gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。 之后要根据内容画出函数流程图

三、实验过程(包含实验结果) 1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier的报错,原因是没有包含其头文件,之后进行一些修改解决了问题. 2.实验结果 3.选择查看本机信息 四、讨论与分析 1.Winsock初始化的作用是什么? 答:使用winsock初始化可加载winsock编程的动态链接库。

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

算法设计与实验报告讲解

算法设计与分析实验报告 学院:信息学院 专业:物联网1101 姓名:黄振亮 学号:20113379 2013年11月

目录 作业1 0-1背包问题的动态规划算法 (7) 1.1算法应用背景 (3) 1.2算法原理 (3) 1.3算法描述 (4) 1.4程序实现及程序截图 (4) 1.4.1程序源码 (4) 1.4.2程序截图 (5) 1.5学习或程序调试心得 (6) 作业2 0-1背包问题的回溯算法 (7) 2.1算法应用背景 (3) 2.2算法原理 (3) 2.3算法描述 (4) 2.4程序实现及程序截图 (4) 2.4.1程序源码 (4) 2.4.2程序截图 (5) 2.5学习或程序调试心得 (6) 作业3循环赛日程表的分治算法 (7) 3.1算法应用背景 (3) 3.2算法原理 (3) 3.3算法描述 (4) 3.4程序实现及程序截图 (4)

3.4.1程序源码 (4) 3.4.2程序截图 (5) 3.5学习或程序调试心得 (6) 作业4活动安排的贪心算法 (7) 4.1算法应用背景 (3) 4.2算法原理 (3) 4.3算法描述 (4) 4.4程序实现及程序截图 (4) 4.4.1程序源码 (4) 4.4.2程序截图 (5) 4.5学习或程序调试心得 (6)

作业1 0-1背包问题的动态规划算法 1.1算法应用背景 从计算复杂性来看,背包问题是一个NP难解问题。半个世纪以来,该问题一直是算法与复杂性研究的热点之一。另外,背包问题在信息加密、预算控制、项目选择、材料切割、货物装载、网络信息安全等应用中具有重要的价值。如果能够解决这个问题那么则具有很高的经济价值和决策价值,在上述领域可以获得最大的价值。本文从动态规划角度给出一种解决背包问题的算法。 1.2算法原理 1.2.1、问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 形式化描述:给定c >0, wi >0, vi >0 , 1≤i≤n.要求找一n元向量(x1,x2,…,xn,), xi ∈{0,1}, ?∑ wi xi≤c,且∑ vi xi达最大.即一个特殊的整数规划问题。 1.2.2、最优性原理: 设(y1,y2,…,yn)是 (3.4.1)的一个最优解.则(y2,…,yn)是下面相应子问题的一个最优解: 证明:使用反证法。若不然,设(z2,z3,…,zn)是上述子问题的一个最优解,而(y2,y3,…,yn)不是它的最优解。显然有 ∑vizi > ∑viyi (i=2,…,n) 且 w1y1+ ∑wizi<= c 因此 v1y1+ ∑vizi (i=2,…,n) > ∑ viyi, (i=1,…,n) 说明(y1,z2, z3,…,zn)是(3.4.1)0-1背包问题的一个更优解,导出(y1,y2,…,yn)不是背包问题的最优解,矛盾。 1.2.3、递推关系:

四路彩灯系统报告书

一.设计整体思路 根据课程设计课题要求,要实现本系统,需要设计时钟脉冲产生电路,循环控制电路和彩灯花样输出电路。时钟脉冲产生电路由74LS161分频实现,循环控制电路由74LS161和7420实现,彩灯花样输出电路由74LS194和相关逻辑电路实现。前两个节拍由74LS194芯片左移右移功能易于实现,第三个节拍整体送数,利用异步清零将清零端置0达0.5秒即可。 二.基本原理及整体框图 1、基本原理 由设计要求出发可知彩灯的三个节拍可以用移位寄存器74LS194实现,通过控制S0和S1实现右移、左移和送数,通过控制CLR'控制清零。第一节拍为1右移,第二节拍为0左移,第三节拍全亮为置数1,全灭为清零。由于程序循环一次要12秒,故需要一个12进制的计数器控制循环。第三节拍时要求1秒内全灭全亮各一次,故可在前0.5秒内送数1将彩灯全部点亮,接下来的0.5秒使得74LS19清零端为零,从而将彩灯熄灭。然后重复此亮灭状态三次。因此第三个节拍只要在清零端送与CL K端相同的脉冲,但考虑到竞争冒险对电路的影响,需延迟时钟脉冲。

2、框图

三.单元电路设计及单元电路 1、分频器的实现 在数字电子技术中,对脉冲实现分频的方法一般有两种:其一是用n进制计数器。其二是用D触发器电路。这两种方法各有优势,但在此处我只分析用74LS161计数器实现分频的电路。电路分析图: 及其波形图 如下

2、循环控制电路 如果模N计数器的计数序列从最小1到最大数N,那么N+1是多余的,可用与非门检测N,当N出现时,与非门输出为低,用它控制清零端CR,将计数器清零。此处工作状态从0001~1100,检测到1101时异步清零。 12进

网络编程实验报告

实验一TCP Socket API程序设计 一、预备知识 1.网络编程基本概念 网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。 套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。 图1-1 TCP通信流程 2.TCP通信流程 TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与

服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。 二、实验目的 1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。 三、实验任务 使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。 四、实验环境及工具 1. Windows2000/XP/7 2. Visual C++开发平台 3. Visual Studio2010 五、实验内容和步骤 参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。 连接: void CChatClientDlg::OnConnect() { WSADATA wsd; //WSADATA结构 WSAStartup(MAKEWORD(2,2),&wsd); //加载协议,使用Winsock 2.2版 m_client = socket(AF_INET,SOCK_STREAM,0); //创建流式套接字 //服务器地址 sockaddr_in serveraddr; UpdateData(); if(ServerIP.IsBlank()) { AfxMessageBox("请指定服务器IP!"); return; } if(sPort.IsEmpty()) { AfxMessageBox("请指定端口!"); return; }

Java程序设计实验报告2(弹球游戏)[1]1

《Java语言程序设计》课程设计 实习报告 题目: 班级: 学号: 姓名: 同组人员: 指导老师:张彬

一、实验目的 1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。 2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行 线程的创建、启动等工作。 3、培养独立查找资料,并解决问题的能力。 二、实验任务 1、设计并编程实现弹球游戏: 用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。 鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。 程序需提供计时功能,并最终显示玩家能坚持多少秒。 2、程序要求: (1)具备相应界面,并通过事件编程,实现相应的GUI组件功能。 (2)使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。 (3)实现鼠标与屏幕四周,以及与小球的碰撞检测。 三、开发工具与平台 1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。 2.开发平台:JDK1.5 四、设计思路 1.界面设计 (1)制作一个简单的面板JFrame,文件保存为bollFrame.java 其中为一public的类bollFrame,其构造方法为: bollFrame(int n){ super(); setTitle("我的弹球小游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//得到电脑屏幕大小 setSize(450,450); setLocation((dimension.width-game.getWidth())/2-250, (dimension.height-game.getHeight())/2-250);//设置面板显示基中; this.n = n; myBollPanel = new bollPanel(n);//构造一个画板; add(myBollPanel);//将画板放入JFrame createMenu();//创建菜单; setJMenuBar(bar); } (2)构造画板类,文件保存为bollPanel.java 其构造函数如下: bollPanel(int n){ this.n = n; // executorThread = Executors.newCachedThreadPool();//创建线程池; mouse = new mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程; this.setIsOver(false);//游戏开始线程条件的判断; for(int i =0 ;i

银行家算法设计实验报告

银行家算法设计实验报告

银行家算法设计实验报告 一.题目分析 1.银行家算法: 我们可以把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求资源相当于客户向银行家贷款。操作系统按银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程尚需求的资源量,若是系统现存的资源可以满足它尚需求的资源量,则按当前的申请量来分配资源,否则就推迟分配。 当进程在执行中继续申请资源时,先测试该进程申请的资源量是否超过了它尚需的资源量。若超过则拒绝分配,若没有超过则再测试系统尚存的资源是否满足该进程尚需的资源量,若满足即可按当前的申请量来分配,若不满足亦推迟分配。 2.基本要求: (1)可以输入某系统的资源以及T0时刻进程对资源的占用及需求情况的表项,以及T0时刻系统的可利用资源数。 (2)对T0时刻的进行安全性检测,即检测在T0时刻该状态是否安全。

(3)进程申请资源,用银行家算法对其进行检测,分为以下三种情况: A. 所申请的资源大于其所需资源,提示分配不合理不予分配并返回 B. 所申请的资源未大于其所需资源, 但大于系统此时的可利用资源,提 示分配不合理不予分配并返回。 C. 所申请的资源未大于其所需资源, 亦未大于系统此时的可利用资源,预 分配并进行安全性检查: a. 预分配后系统是安全的,将该进 程所申请的资源予以实际分配并 打印后返回。 b. 与分配后系统进入不安全状态,提示系统不安全并返回。 (4)对输入进行检查,即若输入不符合条件,应当报错并返回重新输入。 3.目的: 根据设计题目的要求,充分地分析和理解题 目,叙述系统的要求,明确程序要求实现的功能以及限制条件。 明白自己需要用代码实现的功能,清楚编写每部分代码的目的,做到有的放矢,有条理不遗漏的用代码实现银行家算法。

四路彩灯显示系统设计

课程名称: 数字电路逻辑设计 设计项目:四 路彩灯显示系统设计 专业班级: 通信 学生姓名: 同组人姓名: 指导教师: 学号:

设计课题:四路彩灯显示系统设计 一、 设计目的 1、 2、 3、 熟悉常用中规模计数器的逻辑功能。 掌握技术、译码电路的工作原理及应用。 熟悉移位寄存器的工作原理、典型应用和调试方法。 二、 设计任务与要求 设计一个四路彩灯控制器,设计要求如下: (1) 接通电源后,彩灯可以自动按预先设置的程序循环闪烁。 (2) 设置的彩灯花型由三个节拍组成: 第一节拍:四路彩灯从左向右逐次渐亮,灯亮时间 1s ,共用 4s ; 第二节拍:四路彩灯从右向左逐次渐灭,也需 4s ; 第三节拍:四路彩灯同时亮 0.5s,然后同时变暗,进行 4 次,所需时间也为 4s 。 (3)三个节拍完成一个循环,一共需要 12s 。一次循环之后重复进行闪烁。 三、设计原理 图(a)四路彩灯控制流程图 四路彩灯即有四路发光二极管输出,设依次为 、 、 、 ,若用高电平“1” 表示灯亮,低电平“0”表示灯灭,由课程设计要求可知四路彩灯显示系统有如下表所示的输 出显示。 Q Q Q Q d c b a

说明 输出 所用时间Q d Q c Q b Q a 开机初态0 0 0 0 第一节拍逐次渐亮1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1s 1s 1s 1s 第二节拍逆序渐灭1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1s 1s 1s 1s 第三节拍同时亮0.5s,然后同时灭0.5s,进行四次1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0.5s 0.5s 0.5s 0.5s 0.5s 0.5s 0.5s 0.5s 分析可知,要实现上表所示功能,需要一个分频器起节拍产生和控制作用,每4s一个节拍,3个节拍共12s后反复循环。一个节拍结束后应产生一个信号到节拍程序执行器,完成彩灯渐亮、渐灭、同时亮、同时灭等功能。

南京邮电大学算法设计实验报告——动态规划法

实验报告 (2009/2010学年第一学期) 课程名称算法分析与设计A 实验名称动态规划法 实验时间2009 年11 月20 日指导单位计算机学院软件工程系 指导教师张怡婷 学生姓名丁力琪班级学号B07030907 学院(系) 计算机学院专业软件工程

实验报告 实验名称动态规划法指导教师张怡婷实验类型验证实验学时2×2实验时间2009-11-20一、实验目的和任务 目的:加深对动态规划法的算法原理及实现过程的理解,学习用动态规划法解决实际应用中的最长公共子序列问题。 任务:用动态规划法实现求两序列的最长公共子序列,其比较结果可用于基因比较、文章比较等多个领域。 要求:掌握动态规划法的思想,及动态规划法在实际中的应用;分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的最长公共子序列。 二、实验环境(实验设备) 硬件:计算机 软件:Visual C++

三、实验原理及内容(包括操作过程、结果分析等) 1、最长公共子序列(LCS)问题是:给定两个字符序列X={x1,x2,……,x m}和Y={y1,y2,……,y n},要求找出X和Y的一个最长公共子序列。 例如:X={a,b,c,b,d,a,b},Y={b,d,c,a,b,a}。它们的最长公共子序列LSC={b,c,d,a}。 通过“穷举法”列出所有X的所有子序列,检查其是否为Y的子序列并记录最长公共子序列并记录最长公共子序列的长度这种方法,求解时间为指数级别的,因此不可取。 2、分析LCS问题特征可知,如果Z={z1,z2,……,z k}为它们的最长公共子序列,则它们一定具有以下性质: (1)若x m=y n,则z k=x m=y n,且Z k-1是X m-1和Y n-1的最长公共子序列; (2)若x m≠y n且x m≠z k,则Z是X m-1和Y的最长公共子序列; (3)若x m≠y n且z k≠y n,则Z是X和Y的最长公共子序列。 这样就将求X和Y的最长公共子序列问题,分解为求解较小规模的问题: 若x m=y m,则进一步分解为求解两个(前缀)子字符序列X m-1和Y n-1的最长公共子序列问题; 如果x m≠y n,则原问题转化为求解两个子问题,即找出X m-1和Y的最长公共子序列与找出X 和Y n-1的最长公共子序列,取两者中较长者作为X和Y的最长公共子序列。 由此可见,两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序列,具有最优子结构性质。 3、令c[i][j]保存字符序列X i={x1,x2,……,x i}和Y j={y1,y2,……,y j}的最长公共子序列的长度,由上述分析可得如下递推式: 0 i=0或j=0 c[i][j]= c[i-1][j-1]+1 i,j>0且x i=y j max{c[i][j-1],c[i-1][j]} i,j>0且x i≠y j 由此可见,最长公共子序列的求解具有重叠子问题性质,如果采用递归算法实现,会得到一个指数时间算法,因此需要采用动态规划法自底向上求解,并保存子问题的解,这样可以避免重复计算子问题,在多项式时间内完成计算。 4、为了能由最优解值进一步得到最优解(即最长公共子序列),还需要一个二维数组s[][],数组中的元素s[i][j]记录c[i][j]的值是由三个子问题c[i-1][j-1]+1,c[i][j-1]和c[i-1][j]中的哪一个计算得到,从而可以得到最优解的当前解分量(即最长公共子序列中的当前字符),最终构造出最长公共子序列自身。

《程序设计课程设计》实验报告材料

《程序设计》课程设计 姓名: 学号: 班级:软件工程14 班 指导教师: 成绩:

1.消除类游戏 1.1【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 1.2【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 1.3【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 1.4【功能实现】 #include #include using namespace std;

int main() { int m, n, i ,j; int temp; cin >> n >> m; temp = m; m = n; n = temp; int * map = new int[m * n]; int * mark = new int[m * n]; int * tmap = map; int * tmark = mark; int dif = 0; //输入 for ( i = 0 ; i < m ; i++ ) for (j = 0; j < n; j++) cin >> *(tmap + i * n + j); for (i = 0; i < m; i++) for (j = 0; j < n; j++) { //横行 if ((tmap + 2 - map) % n != 0 || (tmap + 1 - map) % n != 0) if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + 1) = 0; *(tmark + dif + 2) = 0; } //竖列 if (tmap + 2 * n - map < m * n || tmap + n - map < m * n) if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + n) = 0; *(tmark + dif + 2 * n) = 0; } tmap = map + (j+1) + i * n; } //输出 cout << endl; tmap = map; for (i = 0; i < m; i++)

算法与设计实验报告

算法与分析实验报告软件工程专业 安徽工业大学 指导老师:许精明

实验内容 1:杨辉三角 2:背包问题 3:汉诺塔问题 一:实验目的 1:掌握动态规划算法的基本思想,学会用其解决实际问题。 2:通过几个基本的实验,提高算法分析与设计能力,提高动手操作能力和培养良好的编程习惯。 二:实验内容 1:杨辉三角 2:背包问题 3:汉诺塔问题 实验一:杨辉三角

问题分析: ①每行数字左右对称,由1开始逐渐变大,然后变小,回到1。 ②第n行数之和为2^n。 ③下一行每个数字等于上一行的左右两个数字之和。 算法设计及相关源代码: public void yanghui(int n) { int[] a = new int[n]; if(n==1){ System.out.println(1); }else if(n==2) { System.out.print(1 + " " +1); }else{ a[1]=1; System.out.println(a[1]); a[2]=1;

System.out.println(a[1]+" "+a[2]); for(int i=3;i<=n;i++){ a[1]=a[i]=1; for(int j=i-1;j>1;j--){ a[j]=a[j]+a[j-1]; } for(int j=1;j<=i;j++){ System.out.print(a[j]+" "); } System.out.println(); } } } 实验结果:n=10 实验二:0-1背包问题 问题分析::令V(i,j)表示在前i(1<=i<=n)个物品中能够装入容量为就 j(1<=j<=C)的背包中的物品的最大价值,则可以得到如下的动态规划函数: (1) V(i,0)=V(0,j)=0 (2) V(i,j)=V(i-1,j) j

四路彩灯报告

电子技术课程设计报告 设计名称:四路彩灯 姓名学号:秦江 021212224 同实验者:安煜 021212215 指导老师:卓郑安 完成学期: 2013-14(二)

一.目的意义及原理 本次课题设计的目的是: 1.共有四个彩灯,分别实现三个过程,构成一个循共12秒; 2.第一个过程要求四个彩灯依次点亮,共4秒; 3.第二个过程要求四个彩灯依次熄灭,共4秒,先亮者先灭; 4.最后四秒要求四个灯同时亮一下灭一下,共闪4下。 四路彩灯采用的是四位双向通用位移存储器74LS194,将四路彩灯接在Q0到Q4上,SR稳定接高电平,SL稳定接低点位,而DO到D3接周期为1秒的方波信号。CLK的信号频率为2Hz,这样才可以在D0到D3的一个周期内出现CLK的两个上升沿,Q0到Q3分别读到1和0 各一次,如图一。 图一 1Hz和2Hz方波信号 即正确的时钟信号在整个12秒的时间应该是前8秒为1Hz的频率,后4秒变为2Hz的频率,因此用555定时器产生2Hz的方波信号,再用D触发器分频产生1Hz的方波信号,如图二。 图二 1Hz和2Hz方波信号原理图

再来确定S1S0的信号,四种工作方式种剔除第一种S1S0为00的情况,那么S1S0应按01、10、11的顺序循环,可设为一个同步计数器,时钟周期为4秒,共三个状态。 图三四路彩灯原理图 二.Proteus仿真过程 1.元件清单 1)电源统一使用稳压源输出电压。 2)电阻阻值有一些微小变化,以元件中现有的相近阻值替代。 2.电路仿真过程和运行结果

在Proteus中画出用555产生的1Hz和2Hz方波信号仿真图,如下图所示: 图四 555产生的1Hz和2Hz方波信号仿真图 在Proteus中画出四路彩灯仿真图,点击运行,灯泡变亮。如下图所示: 图五四路彩灯仿真图 三.电路焊接与调试 在焊接开始前,首先要对元器件进行确认,是否符合要求并逐一检查是否有缺漏,然后对整个布局进行一个确认以便与焊接方便及美观。由于仿真图和原理

相关主题
文本预览
相关文档 最新文档