第一篇:顺序结构与逻辑运算实验报告
实验 2
顺序结构与逻辑运算
1.实验目的和要求 (1)掌握数据输入/输出函数的使用,能正确使用各种格式转换符。
(2)熟悉顺序结构程序中语句的执行过程,并学会基本调试程序方法。
(3)能够正确使用逻辑运算符和逻辑表达式。
(4)学会运用逻辑表达式或关系表达式等表示条件。
(5)熟练掌握 if 语句和 switch 语句,掌握条件表达式构成的选择结构。
(6)熟练掌握跟踪调试程序,针对具体数据组织输入测试数据,观察程序运行能否得到预期的输出结果。
(7)学会编写简单程序。
2.实验内容:实验指导书中的实验三和实验四 3.实验步 骤及结果 实验三部分:
3-1-1 该程序正确的源程序代码(或窗口截图):
程序运行结果画面如下:
3-1-2 该程序正确的源程序代码(或窗口截图):
程序运行结果画面如下:
3-2-1 该程序完整的源程序代码(或窗口截图):
程序运行结果画面如下:
3-2-2 该程序完整的源程序代码(或窗口截图):
程序运行结果画面如下:
3-3 注意:这道程序我们不按书中提示进行,而在 VC 环境下进行调试。
语法错误和逻辑错误的区别何在? 语法了 错误是指编译的程序中破坏了 C 语言固有的语法规则,比如缺 少或者多添了一个字母符号,一个标点符号,或者缺少群头文件等,导致程序合 无法编译和运行;逻辑错误是指代码符合 C 语言规范,程序可以运行,但是结果有误,通常是语句逻辑有误。
如何启动单步调试? 点击【 组建 】
按钮下的 【 开始调试 】
选项,在新出现的对话框中点击【 【step into 】按钮,每条语句便可单独执行。
要使程序运行到“ss=(k…”这一行暂停下来,该如何操作? 光标 放在目标行前,点击 项目栏的【remove breakpoint 】程序便可在目标处暂停。
怎样终止调试状态(程序复位)? 点击【 【step over 】程序便可 在目标处暂停调试。
单步调试状态下,向下运行一条语句的操作方法(分两种情况回答,第一种,跟踪到自定义函数内部,第 2 种,不跟踪到自定义函数内部):1.单击调试菜单中的【step into 】跟踪到自定义函数内部。2.单击调试菜单中的【step over 】不跟踪到自定义函数内部 在本题中,假设要在运行第 2 条语句(即 scanf 语句后),要马上观察 i,j,k,ss,m,n 的变量的值,操作方法:于 光标放于 scanf 行前,单击调试菜单中的【查看】运行到 scanf 语句,输入任意的整形变量的值。请把观察这些变量时的画面粘贴到下面:
通过这道题单步调试,你对 i++和++i 及 i—和—i 应该有了更直观的理解,他们的区别在于:
i++(i--)是 是给 先赋值给 i 再加(减)1 参与运算;而++i(--i)是先给变量加(减)1,再用变化的值参与运算。
3-4 请回答书中问题 问题(1)c1,c2 应定义为字符型。
问题(2)将 将 c1,c2 定义为字符型用 printf 函数输出。
问题(3)
在一些情况下可以相互替换,有时不能替换。这是因为字符型表示的数值范围在-128~127 之间,而就有符号基本整形所表示的数值范围在-32768~32767 之间,有符号 短整形的数值范围在-32768~32767 之间,还有其它整形的数值范围也于字符型不同,但两者相同的部分可以相互转换。
程序运行结果画面如下:
3-5 该程序的源程序代码(或窗口截图):
运行结果画面:
3-7 该程序的源程序代码(或窗口截图):
运行结果画面:
实验四
逻辑运算和判断选取控制
4-1-a 该程序正确的源程序代码(或窗口截图):
运行结果画面:
4-1-b 该程序正确的源程序代码(或窗口截图):
运行结果画面:
4-1-c 该程序正确的源程序代码(或窗口截图):
运行结果画面:
4-2-1 该程序完整的源程序代码(或窗口截图):
运行结果画面:
4-2-2 该程序完整的源程序代码(或窗口截图):
运行结果画面:
4-3 该程序完整的源程序代码(或窗口截图):
运行结果画面:
4-4 运行结果画面:
4-5 该程序的源程序代码(或窗口截图):
运行结果画面:
*4-6 该程序的源程序代码(或窗口截图):
运行结果画面:
实验小结 通过本次实验我掌握了函数的输入输出,以及 if 和 switch 的使用,掌握了一些基本的调试功能,懂得了一些简单程序的编写,会简单追踪调试程序,理清了顺序结构中语句的执行过程。
第二篇:《计算机组成原理》实验报告---8位算术逻辑运算实验
计算机专业类课程
实验报告 课程名称:计算机组成原理 学
院:信息与软件工程学院 专
业:软件工程 学生姓名: 学
号: 指导教师:
日
期: 2012 年 12 月 15 日
电子科技大学计算机学院实验中心
电 子 科 技 大 学
实
验
报
告
一、实验名称: 8位算术逻辑运算实验
二、实验学时:2
三、实验内容、目的和实验原理: 实验目的:
1.掌握算术逻辑运算器单元ALU(74LS181)的工作原理。2.掌握模型机运算器的数据传送通路组成原理。3.验证74LS181的组合功能。
4.按给定数据,完成实验指导书中的算术/逻辑运算。
实验内容:
使用模型机运算器,置入两个数据DR1=35,DR2=48,改变运算器的功能设定,观察运算器的输出,记录到实验表格中,将实验结果对比分析,得出结论。实验原理:
1.运算器由两片74LS181以并/串形式构成8位字长的ALU。2.运算器的输出经过一个三态门(74LS245)和数据总线相连。3.运算器的两个数据输入端分别由两个锁存器(74LS273)锁存。4.锁存器的输入连至数据总线,数据开关(INPUT DEVICE)用来给出参与运算的数据,并经过一三态门(74LS245)和数据总线相连。5.数据显示灯(BUS UNIT)已和数据总线相连,用来显示数据总线内容。
实验器材(设备、元器件):模型机运算器
四、实验步骤:
1.仔细查看试验箱,按以下步骤连线 1)ALUBUS连EXJ3 2)ALU01连BUS1 3)SJ2连UJ2 4)跳线器J23上T4连SD 5)LDDR1,LDDR2,ALUB,SWB四个跳线器拨在左边 6)AR跳线器拨在左边,同时开关AR拨在“1”电平2.核对线路,核对正确后接通电源
3.用二进制数据开关KD0-KD7向DR1和DR2寄存器置入8位运算数据。
电子科技大学计算机学院实验中心 ① 调拨8位数据开关KD0-KD7为01100101(35H),准备向DR1送二进制数据。
② 数据输出三态缓冲器门控信号ALUB=1(关闭)。③ 数据输入三态缓冲器门控信号 SWB=0(打开)。
④ 数据锁存DRi控制信号LDDR1=1(打开),同时,LDDR2=0(关闭)。
⑤ 打入脉冲信号T4,将数据65H置入DR1。重复步骤1-5,同理将数据A7H置入DR2 4.检验DR1和DR2置入的数据是否正确。
1)
数据输出三态缓冲器门控信号ALUB=0(打开); 2)数据输入三态缓冲器门控信号SWB=1(关闭); 3)
数据锁存DRi控制信号LDDR1、LDDR2=0(关闭)4)
设置开关M、开关S3、S2、S1、S0 相应值
如M=1,S3、S2、S1、S0=1111,验证8位数据 DR1;S3、S2、S1、S0=1010验证8位数据DR2 5.验证74LS181的算术和逻辑运算功能。
1)在给定DR1=65、DR2=A7的情况下,改变算术逻辑运算功能发生器的功能设置,观察运算器的输出。
2)将输出结果填入实验报告表中,并和理论分析进行比较、验证。
6.填写实验数据。
五、实验数据及结果分析(包括各种截图:实验过程截图、界面截图、操作截图、运算结果截图):
运算器数据通路图:
模型机运算器连线及跳线完毕图:
电子科技大学计算机学院实验中心
实验数据输出表:
六、实验结论、心得体会和改进建议: 通过这次试验,掌握了算术逻辑运算器单元ALU(74LS181)的工作原理,掌握了简单运算器的数据传送通道,了解了由74LS181等组合逻辑电路的运算功能发生器运算功能,能够按给定数据,完成实验指定的算术/逻辑运算。
电子科技大学计算机学院实验中心
第三篇:选择结构实验报告
预习报告
实验项目:选择结构程序设计
实验日期:2012年3月26日
实验原理:利用 if 或switch 语句实现多分支选择结构程序设计
实验仪器:PC
实验内容及步骤:
内容:利用scanf函数读入变量x的值,利用if或switch 语句判断x所在的区间,并求函数在x 处的函数值
步骤:
1、程序设计:
(1)定义变量;(2)利用scanf给变量x赋值;(3)利用 if 或 switch 判断x所在范围执行相应计算,以求得函数在x 处的函数值;(4)输出相应函数值
2、输入程序、调试并运行通过。
实验报告
实验目的要求:抄写指导手册上相应章节的目的要求
实验环境:windows XPTC或 VC
实验内容:完整抄写P77页4.5小题
实验步骤:直接写代码
实验结果:根据实验题目自己输入相应值并观察程序输出结果
总结:主要写出自己在本次实验中的收获及不足
第四篇:《顺序结构》 教学设计
盐城中学
何娟
《顺序结构》教学设计
一、教材分析
本节课是《算法与程序设计》(选修)
盐城中学
何娟
★
学习方法:模仿学习、自主探究学习,小组交流合作学习
六、设计思想
尊重学生解决问题的思维过程,模拟学生的学习体验和情感体验,在以学生为主体、教师为主导的架构下,搭建以生为本的学习的平台,帮助学生通过学与练,以不断解决问题为手段,一步步完成学习任务。
新课标中提出了信息技术课程要以进一步提高学生信息素养为宗旨,强调通过合作解决实际问题,掌握信息技术,感受信息文化,增强信息意识,提高学生总体的信息素养。而在本节课中就坚持了以教师为主导,学生为主体,发展能力和提高素质为主线的启发式教学思想,努力为学生创设了开放式的学习环境。
本节课以一个简单的例子——计算图形的周长、面积并打印为主线介绍顺序结构的特点、执行过程和基本思想,并通过这个程序抽象出代码设计的四个基本部分:定义常变量、输入数据、处理数据、输出数据。让学生通过模仿学习、自主学习相结合的方式编写程序,发现问题,探究解决问题,最后学会自我总结。
七、教学过程
1.分组体验,导入新课
导入:上节课我们学习了赋值语句,现在屏幕上有三道题目,请同学选择其一解答。学生分组体验程序的运行结果。题一:
Dim a As Integer Dim b As Integer a = a + 1 a = 3 b = a b = b + 1 Print a, b 运行结果:3 4 题二:
Dim a As Integer Dim b As Integer a = 3 a = a + 1 b = a b = b + 1 Print a, b 运行结果:4 5
题三:
Dim a As Integer Dim b As Integer
盐城中学
何娟
a = 3 b = a a = a + 1 b = b + 1 Print a, b 运行结果:4 4 教师:经过观察,我们发现上述三个例子中涉及到的语句都是一模一样的,可是为什么得到结果不一样呢?
学生:顺序不同。
教师:对,由于这个程序的执行过程是按语句书写的先后顺序一句一句执行的,每次给变量赋的值不同,所以得到的结果不一样。这种按语句顺序执行的结构我们成为顺序结构,在以后的学习过程中我们还将学习另外两种结构:分支结构和循环结构。分支结构根据不同的条件判断来决定程序执行的走向,循环结构根据条件判断,需要重复执行某一段代码。而顺序结构每一条语句执行且只执行一次,没有跳过某一条语句,也没有重复执行某一条语句。老师这里有三幅图,图中显示的路途方式和程序设计的三种基本结构非常的类似,同学们仔细观察一下,你能猜出哪一幅图对应于顺序结构吗?
图1
图2
图3 学生:图1
2.学科迁移,设计代码
盐城中学
何娟
教师:这节课我们着重学习顺序结构。请看这道题目:已知圆的半径为1000,编写程序求解其周长和面积,并作图。如果是一道数学题,同学肯定不费吹灰之力,可是编程怎么求解呢?同学可能一时犯了难,没关系,既然同学们对数学的解题步骤比较熟悉,我们姑且把把它当作一道数学题来解答。首先,我们分析一下,题目中涉及到几个变量?哪几个?
学生:三个,半径、周长和面积。
教师:和数学中一样,我们分别用r、c、s表示这三个变量。请一位同学书写相关语句
学生操作:
教师:刚才的三个变量哪些是已知条件?
学生:半径
教师:其值是多少?
学生:1000 教师:好,利用赋值语句给半径赋值,代码是?
学生回答,教师操作:r=1000 教师:此时,我们已经知道r的值了,那么如何通过已知条件求解出c和s呢?请一位同学在教师机上演示。
学生操作:c=2*3.14*r
s=3.14*r*r
(书写过程中若有语法错误,请其他同学纠正)设疑:程序编写到这里是否行了呢?同学的意见出现了分歧,都说实践是检验真理的唯一标准,那么我们就让机器来验证吧
教师:程序并没有如我们所料想的那样显示结果,事实证明我们的程序存在一些小问题,那究竟是哪里出错了呢?正如同学们知道的,我们其实已经把周长和面积的值求出来了,可是程序为什么不显示结果呢?对!我们把求出来的结果存放在变量c和s中,而对于用户而言,并不知道变量c和s的存在,他只关心屏幕上有没有显示结果,所以,我们还应该打印变量c和s。代码是?
学生:print c,s 教师:这样的代码已经能完成基本功能了,为了使用户看得更清楚明了,再添加一些说明性文字。Print “圆的周长为”;c Print “圆的面积为”;s 教师:接下来我们还要作图。你们平时是怎么画圆的?
学生:用圆规画圆,先确定圆心位置,然后确定半径画圆。
教师:vb中提供了circle方法可以象圆规一样画圆,请同学看老师演示代码
Circle(2000, 2000), 1000其中(2000,2000)是圆心位置,1000是圆半径。需要说明的是,vb中的坐标系和数学中不同,原点(0,0)的位置为窗口左上角,窗口左边框为纵轴正方向,窗口上边框为横轴正方向。关于circle方法我还提供了一个小资料,同学们可以根据小资料修改不同参数画出不一样的圆。
3.现学现卖,小试牛刀
盐城中学
何娟
课堂实践一:已知圆的半径为1000,编写程序画出此圆,然后求解其周长和面积。(提供代码图片和circle小资料)
展示学生程序:老师不但可选成功的程序,也可选取较不成功的作品,但要有典型意义。
4.层层递进,探究实践
教师:现在我们已经能够求出指定半径圆的周长和面积并作图了,如果我们把这个程序给用户使用,他们可能会想这个程序只能求半径为1000的圆,我要是能输入其他的半径值就好了,而用户不一定懂得修改程序代码,直接修改程序行不通,同学们能不能想想办法让用户能自己输入半径的值?
学生1:我们可以用文本框
学生2:还可以用inputbox函数
教师:那就刚才程序的基础上修改代码实现你的想法吧。
课堂实践二:根据用户输入的半径值求圆的周长和面积并作图。解法一:
盐城中学
何娟
解法2:
展示学生程序:演示几个学生的程序,请学生相互评价指出优点和不足,教师适当点评。教师总结:一个完整的代码通常包括这样几个部分:
1、定义常变量
2、输入
3、处理
4、输出
5.课堂小结,提出希望
一直以来,在我们的印象中,编程是件很难的事。但是通过这节课的学习,我们发现编程也是有章可循的,希望同学们能喜爱上编程,让程序学习变成一件快乐的事,编写出更多更好的程序,成为
第五篇:顺序表的操作实验报告
顺序表的基本操作
一、实验目的
1、复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。[基本要求](1).依次从键盘读入数据,建立带头结点的顺序表;(2).输出顺序表中的数据元素
(3).根据指定条件能够取元素和修改元素;(4).实现在指定位置插入和删除元素的功能。
三、实验步骤、调试及输出结果
(—).数据结构与核心算法的设计描述: #include
/*当前的表长度*/ /*顺序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}
/*顺序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}
/*顺序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*顺序表的删除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){
SeqList L;int i,x;int n=10;
/*当前顺序表的长度*/ L.length=0;CreateList(&L,n);
/*建立顺序表*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*顺序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*顺序表插入*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*顺序表删除*/ PrintList(&L,L.length);/*输出顺序表*/ }(二).调试及输出结果 测试数据:
1、输入n个数;
2、输出顺序列表;
3、顺序表的查找;4.顺序表的插入;
5、顺序表的删除;
数据测试如下截图:
四、实验讨论与总结:
通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。
在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。
单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。
这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。