实验设计

1.评价指标与评分办法

评价指标:按以下四项考核指标。

1)准备充分,按要求上传文档。(小组文档、个人文档及代码、个人预习报告及代码)

2)程序运行正确,达到预测结果。

3)现场回答提问,正确或大部分正确。从5个方面提问考查:①思想方法:如何体现面向过程编程思想,即如何分模块(分步)做事?②表达手段:第一点:模块(每步)的入口、出口?模块的形式如何?第二点:模块如何归属?③模块的解决思路?④模块中具体代码含义?(关联本章节知识点)⑤实验思考问题的解决思路?

4)实验报告格式项目完整,格式工整(参见下面5.实验报告格式要求),并上传至指点位置(参见下面6.上传文档格式)。

 

评分办法:

1)各项指标达成完美,评定为优秀90-100

2)各指标达成良好,个别指标问题回答不够准确,评定为良好80-89

3)各指标达成一般,多个指标回答不够准确,有1个指标问题回答错误,经提醒后给出正确解释,评定为中70-79

4)各指标达成很差,多个指标回答不够准确,有2个指标问题回答错误,经提醒依然不知,评定为不通过。

 

评价评语:

评语:完美。

评语:好,保持。

评语:较好,达到基本要求,努力。

评语:不好,没有达到要求,慎重。

 

考核注意:

1)学生需知:实验课的内容是实验课前完成,实验课任务有3点。第1点:检查验收实验结果;第2点:写实验总结和思考题;第3点:以小组为单位按教学要求进行自学(按下一章教学预习点预习,并在笔记本上记录学习内容),并做简单记录。

2)考核均实验课现场完成,要求学生现场提供各电子资料和运行程序(按要求上传至服务器中,并且自行在U盘上准备一份以便应急)。

3考核采取团队整体参与、一人主答。小组全部成员上场,随机抽取组内某位同学,对“实验检查表”中的考核指标逐一进行评价,并记为整组分数(小组其他同学即时记录成绩)。下表中的补检指在实验课中因为其他临时安排无法正常检测的处理方式。此种考核方式成功避免传统报告检查评价实验中抄袭等弊端,将考核的目标放在是否真正掌握核心知识点和智力技能点上。

4)程序运行不正确,个人实验报告格式不正确,直接确定为不通过,不参与提问检查。

5)个人实验报告抄袭者,直接确定为不通过,不参与提问检查。说明:个人实验报告可以有限度借鉴小组共享内容,但绝对不允许完全抄袭(即便借鉴,也要调整格式和内容与自己所写报告风格一致,如图形大小、画法,字体大小等要一致),尤其是栏目“数据预测”、“实验调试”、“总结思考”一定是不同的。所以个人实验报告完全是基于个人来写。

6两次实验(总实验次数共10次)不通过,课程不允通过

7)成绩优秀学生可参与考评其余同学,其工作量计入总分(具体根据教师要求)。

8)每组学生代表在实验答辩中,按检查表自动答题,以3分钟为限(学生应做好充分答题准备,而非现场临时准备)。

2.评价内容

思维训练手册中 “思维训练题-上机实验”,以及基本的知识、概念等。

3.评价考核时间

主要安排在实验课中完成,如果有特殊原因没有完成,请学生自行约请教师完成评价。

4.实验检查表*

0章绪论实验检查表

栏目

检测

补检

检查在自己机器上安装成功C/C++开发工具和作图软件

 

 

检查是否按格式上传了自己的资料,实验报告内容完整,项目齐全(7个栏目)

 

 

*安装VM,有哪些注意之处(可选)

*visio画图,如何改变背景,如何画流程图

*如何将画好的图放到个人实验报告中

*个人实验报告的格式应该包括哪些栏目

 

 

总成绩:_______

 

1章模型模块实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2按要求上传文档

2.1小组文档中栏目是否齐全-实验题目,模型结构,小组分工,共享位置

2.2小组个人文档是否按要求完成(注意,如问题比较小而模块不够分配,允许重复写某个模块,但内容不能完全一致)

2.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

2.4个人代码上传

 

 

3思想方法:如何体现面向过程编程思想,即如何分模块(分步)做事?

 

 

4表达手段:第二点:模块(每步)的入口、出口?模块的形式如何?模块如何归属?

 

 

5模块中具体代码含义?return#include含义

 

 

6模块和文件的命名规范?

 

 

总成绩:_______

2章调试技术实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2按要求上传文档

2.1小组文档中栏目是否齐全-实验题目,模型结构,小组分工,共享位置?

2.2小组个人文档是否按要求完成(注意,如问题较小而模块不够分配,允许重复写某个模块,但内容不能完全一致)?

2.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

2.4个人代码上传?

 

 

3思想方法:如何体现面向过程编程思想,即如何分模块(分步)做事?

 

 

4表达手段:第2点:getMax模块的入口、出口?模块的形式如何?模块如何归属?第3点:getMin设计思路?

 

 

5模块中指定具体代码含义:&&是什么意思?

 

 

6main模块的getMax设置断点,运行至此,并进入内部?

 

 

总成绩:_______

3章基本的数据类型实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2按要求上传文档

2.1小组文档中栏目是否齐全-实验题目,模型结构,小组分工,共享位置?

2.2小组个人文档是否按要求完成(注意,如问题较小而模块不够分配,允许重复写某个模块,但内容不能完全一致)?

2.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

2.4个人代码上传?

 

 

3思想方法:在程序代码中,是如何体现面向过程编程思想,即如何分模块(分步)做事?

 

 

4表达手段:第2点:getDeposit模块的入口、出口?模块的形式如何?模块如何归属?

 

 

5模块中指定具体代码含义:34如何代码表达?

 

 

6main模块中调用的lower2Upper模块,定义在哪?使用在哪?相应的实参、形参分别是什么?

 

 

总成绩:_______

4章高级的数据类型实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:如何体现面向过程编程思想,即如何分模块(分步)做事?

 

 

3表达手段:针对sort模块,请指出:

3.1模块的输入、输出?

3.2模块的形式?模块如何归属?

3.3实参与形参在哪?

3.4模块的设计思路?

 

 

4基本概念与技能:指针使用3步曲?

 

 

5问题思考:sort模块内部涉及到两个变量值的交换,能否利用教材中定义的swap模块及如何调整?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

5章结构编程之顺序与选择实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:如何体现面向过程编程思想,即如何分模块(分步)做事?

 

 

3表达手段:(打开程序后,任意指定1个模块,指出)

3.1模块的输入、输出?

3.2模块的形式?模块如何归属?

3.3实参与形参在哪?

3.4此模块的设计思路?

 

 

4问题思考:主模块中将switch换成if语句,程序如何调整?

 

 

5演示单步调试,查看从一个模块到另外一个模块变量改变?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

 

 

6章结构编程之循环实验检查表

栏目

检测

补检

1程序运行:程序运行正确,达到预测结果?

 

 

2思想方法:对照着主模块,谈其中是如何体现面向过程编程思想,即如何分模块(分步)做事,分哪几个模块?

 

 

3合作方法:对照着模型结构图,谈如何合作?

 

 

4表达手段:(打开程序后,指定整数分析的某个模块,指出)

4.1此模块的输入、输出分别是什么?

4.2此模块的形式什么样?此模块如何归属?

4.3此模块调用时的实参与定义时的形参分别在哪?

4.4此模块的中如何利用循环解决问题?

 

 

5实际操作:现场演示,如何将别人做的代码文件(cpph)纳入自己做的项目中?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

7章数组实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:对照着程序,谈如何体现面向过程编程思想,即如何分模块(分步)做事。具体检查方法:打开主模块,指出调用哪些模块。

 

 

3表达手段:(打开主模块,随机指定调用的某模块,请指出)

3.1此模块的输入、输出?

3.2此模块的形式?模块如何归属?

3.3此模块的实参与形参在哪?

3.4此模块的代码解释?

 

 

4程序中全局变量定义点,声明点,和使用点在哪?

 

 

5实际操作:现场编写模块,根据给定的数组求所有元素和

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

 

 

8章字符串实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:对照着程序,谈如何体现面向过程编程思想,即如何分模块(分步)做事。具体检查方法:打开主模块,指出调用哪些模块。

 

 

3表达手段:(打开主模块,随机指定调用的某模块,请指出)

3.1此模块的输入、输出?

3.2此模块的形式?模块如何归属?

3.3此模块的实参与形参在哪?

3.4此模块的代码解释?

 

 

4程序输入模块和显示模块,两个模块的参数不同,为什么?

 

 

5在显示模块中指出:如何表达第i个学生的姓名?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

9章结构体实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:对照着程序,谈如何体现面向过程编程思想,即如何分模块(分步)做事。具体检查方法:打开主模块,指出调用哪些模块。

 

 

3表达手段:(打开主模块,随机指定调用的某模块,请指出)

3.1此模块的输入、输出?

3.2此模块的形式?模块如何归属?

3.3此模块的实参与形参在哪?

3.4此模块的核心思路是什么?

 

 

4指出模块内部结构体的第i个元素的姓名如何表达?并与上一章表达对比?

 

 

5两个数组能直接赋值吗?两个结构体变量能直接赋值吗?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全-包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全-包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

 

10章文件实验检查表

栏目

检测

补检

1程序运行正确,达到预测结果?

 

 

2思想方法:对照着程序,谈如何体现面向过程编程思想,即如何分模块(分步)做事。具体检查方法:打开主模块,指出调用哪些模块。

 

 

3表达手段:(打开主模块,随机指定调用的某模块,请指出)

3.1此模块的输入、输出?

3.2此模块的形式?模块如何归属?

3.3此模块的实参与形参在哪?

3.4此模块的核心思路是什么?如,如何进行排序的?

 

 

4如何知道读到一个文本文件的末尾?

 

 

5文本文件操作的步骤?及指出相应代码并解释?

 

 

6按要求上传文档

6.1小组文档中栏目是否齐全包括实验题目,模型结构,小组分工,共享位置?小组分工是否按模块划分?

6.2小组个人文档是否按要求完成,是否按分工提供文档?

6.3个人实验报告栏目是否齐全?包括1)实验题目(2)模型设计(3)分工安排(4)模块描述(5)数据预测(6)实验调试(7)总结思考

6.4个人代码上传?

 

 

总成绩:_______

5.实验上传目录结构,及上传文档格式和内容要求

1)上传目录结构

以小组8做第1章实验为例,在chap1下小组自建立“小组共享”、“个人名”、“共享库”子目录。如第8小组有3个成员(张一,李帅,王俊),这样共建立下图5个文件夹。各子目录中上传文档如下:

 

2)上传文档格式和内容要求

小组共享目录:

8-1-小组-协作.doc文件,此文件描述实验题目,模型设计,分工合作方式等。具体请参见第5点的“参考范例”。这里8指第8组,1指第1次实验。

       8-1-小组-张一-分工.doc文件,此文件描述张一负责设计模块的4个步骤,以及相应的代码(代码必须经过验证是正确的)。具体请参见第5点的“参考范例”。

       8-1-小组-李帅-分工.doc文件,此文件描述李帅负责设计模块的4个步骤,以及相应的代码(代码必须经过验证是正确的)。具体请参见第5点的“参考范例”。

8-1-小组-王俊-分工.doc文件,此文件描述王俊负责设计模块的4个步骤,以及相应的代码(代码必须经过验证是正确的)。具体请参见第5点的“参考范例”。

 

张一目录:

8-1-个人-张一-实验报告.doc文件:对小组所有同学的综合。实际上,经过小组的协作,个人实验报告的撰写非常简单,需要增加“数据预测、实验调试、总结思考”三个部分即可。具体请参见第5点的“参考范例”。强调:个人的实验报告,可以借鉴小组共享目录中的文档内容,但格式和内容上应按自己的设计进行调整,尤其是报告中“数据预测、实验调整、总结思考”这三个栏目绝对不能相同

8-1-个人-张一-实验代码.rar文件:将完整的项目代码压缩成一个文件后,再上传,在实验检查中要求演示个人实验代码,并作解释。

李帅目录:同上

王俊目录:同上

 

共享库目录:将本次实验所用的归属文件(经验证是正确的),拷贝至此目录中,以便于今后的开发使用原先做好的代码。提醒:一个归属包括2个文件,后缀名分别是cpph。如第1章的实验,需要上传Int.cppInt.h两个文件。

 

6.实验上传文档具体要求及参考范例

6.1“小组共享”目录中上传文档的具体要求及参考范例

1“协作”与“协作分工”具体要求

此目录下,要提交“协作文档”和“协作分工文档”(如小组有3人,则提交4份文档)。“协作文档”(如8-1-小组-协作.doc文件)中,要求小组在实验前集中,共同研究本次实验题目,确定关键的模型结构,并作好以模块为单元的分工规划。各小组成员按协作中的分工,按解决问题的4个步骤书写,并提交上传“协作分工文档”(如8-1-小组-张一-分工.doc文件)。

 

2“协作”与“协作分工”书写参考范例

1)“协作文档”书写参考范例:文件名,如8-1-小组-协作.doc

采用多文档模型结构实现如下要求:输入2个整数,编程求这2个数的最大数,并求其立方值。(特别注意:实际第一章实验题目,是基于2个小数,求立方值,故实验报告的实验代码需要调整)

 

2)“协作分工文档”书写参考范例

从上述分工中,可看到张一负责主模块main的设计过程及代码,书写内容是main模块解决的四个步骤及模块代码,提供的“协作分工文档”的文件中8-1-小组-张一-分工.doc,具体内容参考如下:

1TwoMaxCubeMain.cpp文件

主模块main

①模块功能:求两个整数的最大数,以及最大数的平方

②输入输出:系统模块,暂不考虑模块级别的输入输出,输入输出在内部完成

形式:int main()

归属:TwoMaxCubeMain

③解决思路

输入两个整数后,先求最大数,再根据最大数求出其立方值。例如:输入两个数分别34,先得到4,然后再计算4的立方值为64

④算法提纲

第一步,输入两个整数a,b

第二步,max=getMax(a,b);

第三步,cube=getCube(max);

第四步,输出maxcube

⑤模块代码

int main()

{

int a,b,max,cube;

cin>>a>>b;

max=getMax(a,b);

cube=getCube(max);

cout<<”最大值是”<<max;

cout<<”最大值的立方是”<<cube;

return 0;

}

 

从上述分工中,可看到李帅只负责主模块getMax的设计过程及代码,书写内容是getMax模块解决的四个步骤及模块代码,提供的“协作分工文档”的文件是8-1-小组-李帅-分工.doc,具体内容参考如下:

2Int.cpp文件

自定义模块getMax

①模块功能:求两个整数的最大值。

②输入输出

 

形式:int getMax(int a,int b)

归属:Int

③解决思路:比较ab,得到最大值,如a=3;b=4则应该返回b的值4

④算法步骤:如果a>b 返回a  ;否则  返回b

⑤模块代码

int getMax(int a,int b)

{

if(a>b)  return a;

else    return b;

}

 

王俊同学的“协作分工文档”与上述格式相同,不再示范。

 

6.2“个人”目录中上传文档的具体要求及参考范例

1“个人”实验报告格式要求

1)实验题目:来源于“上机实验部分”。

2)模型设计:专业软件绘制,结构清晰的模型图。

3)分工安排:根据模型图,确定小组中个人的工作内容(分工具体到某模块)。

4)模块描述:负责模块的模块功能、输入输出、设计思路、算法步骤、模块代码。

5)数据预测:根据事先给定的数据,预测可能产生的结果。

6)实验调试:明确错误,以及原因,并改正。

7)总结思考:包括总结部分和思考部分。

总结部分(4点):

1点,实验结果进行解释:输入什么样的数据,是否得到所要的结果;

2点,实验思路进行梳理:按面向过程的编程思路进行了怎样的设计,模块进行了怎样的归属,每个模块的主要设计思路是什么;

3点,实验过程中的问题进行收集分析:实验中出现的主要问题是什么?(是配合不默契,还是写报告部分?还是编程环境?还是程序问题?),以及如何解决这些问题的。

4点,实验深入研究(可选):本次的实验是否有另外的设计思路?实验要求能否扩展?有没有新的想法?

思考部分:见《思维训练手册》每次实验后的思考题。

 

说明:

1)“个人”实验报告中的七个栏目中,前3个栏目可借鉴“小组共享”的“协作文档”,第4个栏目“模块描述”可借鉴“小组共享”的“协作分工文档”,后3个栏目“数据预测”、“实验调试”、“总结思考”完全由学生个人完成,没有重复性。

2)可借鉴部分仅代表参考,不代表完全抄录,而是基于完全理解,甚至是改变。

3)实验报告格式必须完全统一(图表尺寸,文字大小,排版格式等)。

2“个人”实验报告参考范例

采用多文档模型结构实现如下要求:输入2个整数,编程求这2个数的最大数,并求其立方值。(特别注意:第一章真正的实验题目,是基于2个小数,求立方值,故实验报告的实验代码需要调整)

1TwoMaxCubeMain.cpp文件

主模块main

①模块功能:求两个整数的最大数,以及最大数的平方

②输入输出:系统模块,暂不考虑模块级别的输入输出,输入输出在内部完成

形式:int main()

归属:TwoMaxCubeMain

③解决思路

输入两个整数后,先求出最大数,再根据最大数求出其立方值。例如:输入两个数分别是34,先得到4,然后再计算4的立方值为64

④算法提纲

第一步,输入两个整数a,b

第二步,max=getMax(a,b);

第三步,cube=getCube(max);

第四步,输出maxcube

⑤模块代码

int main(){

int a,b,max,cube;

cin>>a>>b;

max=getMax(a,b);

cube=getCube(max);

cout<<”最大值是”<<max;

cout<<”最大值的立方是”<<cube;

return 0;

}

 

2Int.cpp文件

自定义模块getMax

①模块功能:求两个整数的最大值。

②输入输出

形式:int getMax(int a,int b)

归属:Int

③解决思路:比较ab,得到最大值,如a=3;b=4则应该返回b的值4

④算法步骤:如果a>b 返回a  ;否则  返回b

⑤模块代码

int getMax(int a,int b)

{

if(a>b)  return a;

else    return b;

}

 

自定义模块getCube

①模块功能:求一个整数的立方值

②输入输出

形式:int getCube(int max)

归属:Int

③解决思路:直接max*max*max得到结果,如max=5,结果是125

④算法步骤:先计算max*max*max,然后再返回结果。

⑤模块代码

int getCube(int max)

{

              return max*max*max;

}

3Int.h文件

int getMax(int a,int b);

int getCube(int max);

 

程序运行后,输入:3  5,结果应该是125

程序运行后,输入:3  10,结果应该是1000

问题编号

出错信息

改正办法

1

 

 

2

 

 

3

 

 

 

1.  总结部分

1)实验结果进行解释:输入2个整数3 5(中间用空格),得到125,即得到了最大值的立方,与实验预测是一致,达到目的;

2)实验思路进行梳理:本次实验按面向过程的编程思路进行设计,将整个过程分成两步(两个模块):第一步求两个整数的最大值,第二步求最大值的立方。因为都是针对整数的操作,所以这两个模块归属在Int中。求最大值模块主要设计思路是比较后返回最大值,求最大值立方模块是直接返回max*max*max

3)实验过程中的问题进行收集分析:

问题:实验报告画图时用viso制作时,画不好。解决:网上教程。

问题:报告中格式还是不太清楚。解决:查看学生手册解决。

问题:编程环境vc6安装不上。解决:安装vs2015,也安装了cfree

问题:实验时编译时不通过。解决:找到原因,是因为getMax写成了getmax

问题:实验时编译时不通过。解决:找到原因,是因为没有加入头文件,使用自定义模块时,一定相应的声明文件,本案要加#include<Int.h>

4)实验深入研究(可选):

本次实验要求使用文档方案,即将3个部分(主模块,自定义模块,自定义模块清单)写在3个文件中,我尝试将3个部分写在一起,写成单文档程序,编译连接运行通过。

如果要求求3个整数的最大数,我想思路是这样的,

其他新的想法

2.  思考部分

见《思维训练手册》的思考题