算法设计与分析实验四(共7篇)
算法设计与分析实验四 篇1
实验1 递归与分治
一、实验目的:
利用C/C++/JAVA等程序设计语言,实现本章节中分治算法、递归,汉诺塔问题/二分搜索算法/合并排序/快速排序等经典算法。通过本实验章节掌握递归、分治算法的设计思想及实现技巧,加深对课程知识的理解。
二、实验学时:2
三、实验任务:
利用高级程序设计语言,编程实现以下问题: 1)递归:排列问题,汉诺塔问题;
2)分治:递归实现的合并排序及非递归的自然合并排序;
四、实验要求
1,设计过程
理解课本中源代码或伪代码的思想,结合流程图等工具描述实验任务的设计过程,并独自完成代码编写、调试及测试过程。2,代码及注释
提交包含完整源代码及关键代码注释的实验报告。3,运行效果图及测试数据
实验报告中应有能体现源代码正确编译、运行的实验运行效果图及多组测试数据集。
4,心得体会
将实验过程中所遇到的问题以及解决问题的方式、方法以及调试过程加以概括,并总结该实验过程中的收获。
算法设计与分析实验四 篇2
关键词:算法分析与设计实验,教学改革,Python算法
1 概述
《算法设计与分析》课程是计算机科学和应用数学类专业等的核心课程, 其前导课程主要有《面向对象程序设计》、《数据结构》等。该课程由于涉及大量的抽象数据类型和算法, 理论和实践性很强, 各种经典算法思想都是从经典问题的解决方案中总结提炼出来的, 因此学生学习起来有相当大的难度。在该课程的教学过程中发现, 多数学生对该课程只注重理论学习, 忽视了运用实践, 没有利用算法思想来思考和解决实际问题, 导致实验课的教学效果不理想。但是, 实验课是算法设计与分析课程的一个重要的环节, 课堂上所学的内容只有通过实验才能较好的掌握, 它是检验教学效果和巩固所学算法的关键。因此就要求教师思考如何设计与改进实验教学的内容、方法和手段, 从而改变算法实验课的现状。
2 存在的问题分析
当前的算法实验教学效果不理想, 学生在实验过程中往往表现为对算法流程无从下手进行实现, 并且缺乏信心, 主要原因有以下方面:
2.1 课程本身内容难度大
《算法分析与设计》课程内容丰富, 理论性强, 学习量大。课程内容主要是讨论和介绍计算机算法的复杂性理论, 结合对一些熟悉的算法进行分析和总结, 强化基础理论知识, 对一些大型工程软件的分析, 会有一定的辅助作用。它主要介绍计算机科学及应用领域常见的有代表性的非数值算法及算法设计的若干重要方法, 同时, 介绍算法分析的基本知识。阐述计算模型和时间复杂性的定义;讨论递归技术和算法分析的基本手段;介绍算法设计的几类方法, 如分治法、回溯法、贪心法、动态规划法、分枝限界法等, 并结合某些有实用意义的经典算法来加深设计方法的探讨, 由浅入深地进行算法效率分析, 使学生在掌握各种算法设计方法和分析基本技术的同时, 也使逻辑思维得到锻炼。
2.2 对程序设计语言掌握不好
数学类专业学生在前导课程中只学习了C语言程序设计、面向对象程序设计和数据结构, 学习和接触到的都只是简单的数据类型和单个函数的程序, 主要是进行语法的学习, 因此对《算法分析与设计》实验课程中需要大量使用C语言的头文件、宏定义、结构体、指针等的学习较少, 缺乏理解, 从而造成了学生在进行算法实验中不懂如何编程实现或者是在编译阶段错误很多, 因此学生对此很容易造成失去学习的积极性。而且学生面对大量的程序编译调试错误时, 他们的注意力就会集中在编程语言的语法层面, 忽视了算法思想本身, 形成恶性循环, 使得教学效果很不理想。
2.3 实验项目安排不合理
原有的实验项目安排不合理, 第一和第二个实验相对较难, 而学生在进行该课程实验的时候, 一般都是沿用原来C程序设计实验的作法。实验前没有做相应的预习和准备, 没有考虑数据的逻辑结构和存储结构, 到实验室一打开计算机就直接进入编程环境, 立即开始编写源代码。紧接着就编译运行, 然后就是编译错误很多, 即使编译通过, 运行结果与预想的结果却相差很远。然后就造成学生做完第一次算法实验后就再也提不起兴趣了, 总觉得这个实验都是太难了, 没有信心实现出来, 从而造成了恶性循环。
3 实验教学改革的实践对策
根据上述问题, 结合该课程的知识内容抽象、教学难度大的特点, 我们从如下几个方面对该课程的实验进行改革和优化:
3.1 实验指导书内容的改革
在新的课程实验教学大纲指导下, 针对知识点适当地选择具有代表性、难度适当, 而且工程项目中使用较多的典型算法, 让学生进行编程实现和调试。将实验分为基础实验、自选实验、综合实验。其中基础实验为教师在现场辅导学生在实验课堂上必须完成的内容。自选实验为难度更大一些的, 要求学生掌握比较复杂的数据结构和存储结构, 以及算法的表示和实现。综合实验则是为了让学生在课程教学过程中能掌握程序设计的思想和方法, 以小组为单位, 选择教师提供的一些大型的综合题目, 需要学生全面综合运用所学过的基础知识来解决问题。这样使得不同层次的学生可以选不同层次的实验内容, 所有的学生都可以选择适合自己能力水平的实验, 实验内容设计基础知识的验证, 学生学到的课堂知识可以很快转为可以解决问题的工具, 使学生进一步理解《算法分析与设计》对程序设计思想的作用。
3.2 编程语言的选择
大多数院校的算法实验课程都选择使用C/C++来实现, 但是针对数学类专业的学生来说, 由于计算机类的课程较计算机科学专业的少, 而且存在数学类专业学生的C语言编程水平普遍不高的现象。因此, 为了使得学生把注意力从编程语言语法转为集中在算法本身上, 我们选择Python脚本语言作为该课程实验的编程语言。Python是一种面向对象、直译式的编程语言, 也是一种功能强大的通用型语言。它的语法非常简捷和清晰, 采用缩进用于定义语句。美国麻省理工的计算机编程入门和算法课程都是使用Python语言作为编程教学语言[1,2,3,4,5]。
例如我们对用蒙特卡罗方法来求PI的问题进行求解, 以显示Python与C语言的语法区别:
从上述的示例代码中可以看出, python的可读性非常好, 即使不写注释, 也能很容易读懂。语法和算法的伪代码有些类似, 因此更易于展示算法的运行过程。
3.3 实验内容与学时分配改革
减少实验次数, 但是保证总学时不变, 降低第一和第二次实验的难度, 以提高学生对实验课程兴趣。
从上述两个表格的对比中可以看出, 新的实验内容中在难易度和学时安排上都做了调整, 实验一相对最容易, 安排时间也是最少的, 此次实验用于引导学生入门。实验二增加了的难度不大, 而且增加了实验学时。依次类推, 后面的实验就循序渐进了。
4 总结与展望
通过对《算法分析与设计》实验课程的改革, 提高了学生对该课程的掌握程度, 学生通过完成上机的实验项目, 提高了学生对实际问题分析的能力和编程水平。《算法分析与设计》实验课程的建设在数学类专业的建设中具有重要作用, 结合数学类课程《数值分析》、《组合数学》等, 学生在后续的学习过程中能够通过相应的编程实现来强化理论学习的效果, 因此, 通过该课程实验的改革来激发数学专业学生的编程兴趣、培养动手能力, 从而提高学生的整体素质。
参考文献
[1]http://ocw.mit.edu/courses/#electrical-engineering-and-c omputer-science.
[2]毛睿, 朱宁.数学建模教学的探索[J].桂林电子工业学院学报, 2005, 25 (4) :89-92.
[3]徐安农.数学实验课实践与研究[J].桂林电子工业学院学报, 2004, 24 (2) :94-96.
[4]杨华宣.高等数学中某些问题的探讨[J].桂林电子工业学院学报, 2004, 24 (5) :72-76.
[5]林昕茜.数学建模思想在高等数学教学中应用价值的研究[J].桂林电子科技大学学报, 2009, 29 (2) :155-158.
[6]严蔚敏, 吴伟民.数据结构 (C语言版) [M].北京:清华大学出版社, 2001.
算法设计与分析实验四 篇3
摘要:目前“算法设计与分析”课程的实验题目主要以验证课堂所讲的理论为主,不利于培养学生的学习兴趣、创新意识和能力。提出将计算机博弈竞赛项目与“算法设计与分析”实验教学题目相结合的观点,并论述了两者结合的意义和可行性。
关键词:算法设计与分析;计算机博弈;实验教学
作者简介:李淑琴(1963-),女,北京人,北京信息科技大学计算机学院,教授;李宁(1964-),男,北京人,北京信息科技大学计算机学院,教授。(北京?100101)
基金项目:本文系校研究生优质课程建设项目(项目编号:YKJ201104)、校研究生科技创新和实践能力培养项目、校教学改革研究项目(项目编号:2010JG19)的研究成果。
中图分类号:G642.0?????文献标识码:A?????文章编号:1007-0079(2012)20-0093-02
“算法设计与分析”是计算机科学的核心问题之一,是计算机科学与技术专业本科及研究生的一门重要的专业基础课,也是计算机软件开发人员的必修课。“算法设计与分析”课程主要针对生活中经常遇到的实际问题,讲授如何设计并实现计算机算法的基本原理、思想、方法与技术,从而使学生在选择或者设计算法时可以对其进行时空耗费分析,使算法的时空复杂性最优,进而为其编写出高效程序、开发出优秀软件系统奠定基础。
近年来北京信息科技大学招考的计算机专业的研究生中,本科不是计算机科学或相关专业毕业却想攻读计算机科学硕士学位的学生比例不断加大,这些学生来自全国各地不同类型的学校,对应该在本科生阶段掌握的计算机专业的理论深度与广度的把握有较大差别,学生普遍编程能力较弱,远达不到灵活运用的程度。而“算法设计与分析”课程是理论与实践并重的课程,是一门集应用性、创造性及实践性融为一体的课程。学生通过学习算法设计与分析课程可以开阔编程思路,编写出高效程序,对学生分析问题、解决问题的能力培养起到非常重要的作用。
目前北京信息科技大学算法课设置为计算机专业硕士研究生的一门专业基础课,32学时。为了提高学生的综合能力,我们对该课程的实践题目上下功夫,主要设计了两个方面的题目。
第一类题目,称为验证型小实践。主要是将课堂讨论的理论加以验证,一方面加深对理论的理解,另一方面锻炼编程能力。这部分作业是实现算法课的最基本要求,因此要求每个学生必须独立并保质保量地完成。
第二类题目,称为应用型大实践。作为研究生仅仅停留在算法的验证上还是不够的,要使学生能够跟上技术发展的步伐,增强就业竞争力,就要加强创新能力培养,全面提高分析问题和解决问题的能力,提高灵活应用经典算法和当前的新技术进行程序设计的能力。将计算机博弈竞赛题目作为“算法设计与分析”课程综合实践题目是一个可行方案。
一、计算机博弈与“算法设计与分析”
计算机博弈,顾名思义就是让计算机拥有人的思维去进行博弈游戏,能够像人一样下棋。计算机博弈是既简单方便、经济实用又内涵丰富、变化无穷的思维逻辑的研究载体,它在国际上作为一个学科领域,已经开展了半个多世纪的研究与竞赛活动,经过了波澜壮阔的艰苦历程。1997年5月IBM“深蓝”计算机战胜世界棋王卡斯帕罗夫,成为计算机博弈和人工智能的里程碑。目前,无论在国际还是国内,计算机博弈比赛每年举办一次,竞赛项目包括六子棋、点格棋、苏拉卡尔塔棋、亚马逊棋、幻影围棋、中国象棋、围棋、九路围棋等项目。
编写一个好的计算机博弈程序需要涉及数据结构、编程语言、程序设计方法、软件工程、并行计算等综合知识,可以综合提高学生的实践创新能力。
一个完整的机器博弈系统主要包括棋局表示、着法生成器、搜索引擎以及评估函数四部分。
棋局表示是对比赛过程中形成的棋局的描述,涉及数据结构的选择,其中包括棋盘、棋子、障碍、空格、棋局、走棋表示的编码与存储。良好的数据结构可以节省大量的存储空间,可以提高存取的效率。为了适应博弈树的展开与搜索,常常还要同时给出棋局的多种数据格式。如棋局状态、棋子位置、比特棋局和比特向量,还要用到哈希变换和哈希表等。
着法生成器是在已形成的棋局下生成可行的着法,涉及对下棋规则的描述并根据规则生成所有可行着法,是搜索对象的产生器。
搜索引擎是如何找到最优着法,这是计算机博弈的核心部分,是对人类思维模拟的最佳体现。搜索算法包括着法生成、博弈树展开、各种剪枝搜索和各种启发式搜索。涉及的核心问题覆盖了常见的算法设计策略。
局面评估就是对棋局进行评估,是搜索算法的前提。棋局的静态评估是计算机博弈的另一个难点,它不仅需要棋类对弈的基本知识,而且用到直接量化、模式量化、随机评估、模糊评估等一系列手段。例如象棋,可以给每个棋子和棋位打分,而对于围棋则要进行定式的抽取和模式的匹配。
以上这些问题都是算法设计课程的涉及内容,也是研究生今后研究工作涉及的主要方面之一。
(1)竞赛程序的实现有时间、空间限制,能很好地反映算法设计与分析技巧在程序设计中的应用意义。
(2)竞赛项目难度适中。计算机博弈被称为人工智能的“果蝇”,因为它具有周期短、变化多、容易实现、便于检查的特点。个把小时就可以下一盘棋,就可以对电脑的“智能”进行测试,而且可以悔棋、重试、复盘。
(3)竞赛富有挑战性,趣味盎然。通过编写、调试程序,让计算机下棋,一步步地发现电脑与人脑功能的差距,从而不断提高电脑的智力水平。与所学专业知识有密切关系,有效激发学生对计算机技术的兴趣。
(4)竞赛要求综合运用多种知识,有助于学生理解所学内容之间的相互关系,并创造性地考虑问题。
(5)竞赛项目与课程题目挂钩,一举多得。作业完成得好的学生可以参加全国竞赛,获得奖项还能提升就业机会,同时也在一定程度上提高学校的知名度,促进良好校风的形成。
二、综合实验的实施与评定
实践主要以提交课程报告形式,考核学生算法分析与设计的综合能力。课程报告内容包括算法设计、算法实现、算法效率分析、程序测试等。对于小实践作业根据学生撰写报告内容、程序的质量综合给分。对于大实践作业主要通过集中汇报的方式,验收、比较程序的运行效率。另外参考是否参加科技竞赛、是否获得奖项、是否做出不错的科研成果以及是否发表学术论文等综合因素给分。
目前综合实验作业的完成是采取3~4个学生组织成研究小组的方式进行的。分组上采取学生自由组合,选题上采用任意挑选竞赛题目的方式。要求小组中每个学生都要有明确的任务分工,期末汇报自己所做的工作;每组推选一位小组长,负责整个小组的组织和协调工作。通过这种分组和汇报的形式大大提高了学生团队合作和学术交流的能力,对他们将来从事科研工作或找工作都起到很好的帮助作用。
综合实践作业完成情况的评定主要由三个方面组成。一是提交课程报告。课程报告内容包括算法设计、算法实现、算法效率分析、程序测试等,考核学生算法分析与设计的综合能力。二是集中汇报。每个人叙述自己所做的工作,验收程序能否执行、同一题目的小组之间进行比赛,比较程序的运行效率。三是提供辅助材料。参考学生是否参加科技竞赛、是否获得奖项、是否做出不错的科研成果以及是否发表学术论文等综合因素给分。
三、小结
近两年来,笔者将计算机博弈竞赛项目与“算法设计与分析”实验教学题目相结合取得良好效果。作业完成得好的学生参加了两届全国计算机博弈大赛,取得点格棋项目组季军、六字棋、苏拉卡尔塔棋和亚马逊棋二等奖的好成绩。实践表明,提出的将计算机博弈竞赛和“算法设计与分析”课程教学相结合的观点是可行的,有助于培养学生的学习兴趣和创新意识,有助于学生创新能力、实践能力、编程能力、自学能力、协作能力、分析和解决问题能力等多方面能力的培养,提高了学生在今后社会工作的素质和能力,符合21世纪计算机科学与技术专业人才培养的要求。
参考文献:
[1]徐子珊.“算法设计与分析”教学中理论与技术的平衡[J].计算机教育,2008,10(2):72-73.
[2]徐心和,邓志力,王骄,等.机器博弈研究面临的各种挑战[J].智能系统学报,2008,3(4):288-293.
[3]杨春明,陈念年.基于竞赛模式的“算法分析与设计”教学探索与实践[J].计算机教育,2009,(20):146-147.
[4]李淑琴,赵延,刘均梅.机器人足球仿真竞赛与程序设计能力培养[J].计算机教育,2010,(13):31-32.
[5]张云洲,吴成东,崔建江,等.基于机器人竞赛的大学生创新素质培养与实践[J].电气电子教学学报,2007,29(1):116-119.
算法设计与分析学习报告 篇4
持续13周的高级算法设计与分析课程结束了。选修了这门课程的同学们即将迎来最后的考试。回顾这半年以来关于这么课程的学习情况,我体会最深的是:不论是从深度还是从广度上,现在所习的算法比曾经学习的算法难度增加了很多。但是邓教授极富经验的教学和详细的课件,为我的学习提供了很大的方便。可是毕竟我以前的底子不够厚,基础不够劳,在听课中会出现跟不上教师思路的现象。我也积极的采取措施,争取处理好这种情况。总体说来,上完算法课,我还是学到了很多东西的。下面我就对所学的内容进行梳理归纳,总结一下我在学习中的体会和研究心得。
算法课程的开课阶段,邓教授为我们简单介绍了算法,课堂上可能用到的参考资料,以及一些著名的算法方面的书籍,为我的学习提供潜在的工具。我购买了一本教材——《算法导论》。这本书够厚,够详细。但是我一直没有机会仔细的研读。我想有一天希望能够好好读一下。在介绍算法的课堂上,我还了解了算法相关的一些基本概念,算法的重要性,还有算法的历史。我印象最深的就是一个叫图灵的外国人。对计算机科学与技术这个领域做出了图书贡献。我个人认为,堪比爱因斯塔发现相对论的贡献。都揭示了某个领域的本质。开辟的一个领域的发展。对于整个人类来说,他们这类人都是功不可没的。已经不能简单的用伟人来形容他们。但是人类社会需要这样的人,社会需要一些人的推动才能进步。说到这里,我不禁要想,算法到底有什么用,也许答案是简单的,为了方便写程序实现系统功能。这只是表面的用途。我觉得最本质的作用是为了社会进步。辩证唯物主义自然观中有关于科学技术的详细定义。之所以产生科学技术是为了发挥人的主观能动性去改造自然。学习和研究算法正是为了让人在一定的限度内改造自然。我不是在扯,而是在写算法报告和背自然辩证法资料的时候产生的心得体会,不知道算不算邓教授要求的心得。介绍完算法历史以后,就进入的真正的算法设计与分析的学习。首先是算法的定义和时间复杂度等。然后,为了方便以后的课程学习,我学到了一些必要的数学知识,既是为了以后的学习打基础,也是为了弥补在曾经的学习中的不足。这些数学知识包括生成函数和主定理等。这些数学知识都是连在高等数学里都没有接触过的。不知道属于哪个范畴的数学,反正用两个字形容就是“厉害”。我学的不亦乐乎,晕头转向。
几堂课后,对算法这一概念有了基本的了解,也对数学知识进行了补强。我们在邓教授的带领下,进入了实际的算法技术的学习。一共有六种常用技术:分治法,贪心法,周游法,回溯法,动态规划法,分支界定法。最先学习的是六种技术之首,应用最广泛的,分治法。分治法的算法思想真的很神奇,不止分治,这几种算法常用技术都很神奇,可以将问题的求解进行很大程度上的优化,而且有些还是反人类的想法。对我的智商着实是一个考验。当然了,算法的学习不只是靠智商的,更要靠辛勤的汗水,即便有时候汗水没有智商有用,但是你还是要付出汗水。因为这是一种福报。能力有多大,就享有多大的成果。这就好比一个人中了500万的头彩。这个人有能力享有这500万的财富吗?如果他有足够很好的驾驭这笔财富的能力,那么在未来,他会让这笔财富继续增长,直到达到他的能力的极限情形。如果他没有驾驭的能力,用不了多久,他就会分崩离析。我的思维再一次被学科外的体会占据了。言归正传,我学了很多利用分治法结局的问题,比如寻找最近点对,求数组的第k小元等。这些都是利用分治法解决的。在这之中,出现了平衡的概念,和分治法是密切相关,甚至是不可分的。在这部分
中,最后学习了离散傅立叶变换和快速傅立叶变换。
接下来的学习的算法技术是动态规划法。这种技术和分治法有很多相同点,最基本的就是都是讲问题分解为若干子问题,不同点是分治的子问题是相互独立的,动态规划的子问题是重复的,这也决定了,一个用递归的计算方式,一个用递推的计算方式。我也学到了利用动态规划法解决的很多问题,简单的如矩阵连成问题,复杂一点的有最长公共子序列问题,最有二分搜索树和流水作业问题。在这部分知识中,还有一点,就是备忘录方法,可以说是对动态规划法的一个完善和改进。
随着课程的进行,我又学到了集合算法。主要知识点有平摊分析,合并算法,2-3树,以及一些概念如字典,可并堆和可连接队列等。需要注意的是这部分留过作业的FIND()和FIND_DEPTH()两个函数。还有有穷自动机问题。
接下来学习的是随机算法。应该说这部分内容还是相当重要的,而且应用也非常广泛。在日常生活中更是随处可见。举一个最简单的例子,当我在看NBA比赛的时候,每节的休息时间都要抽奖,那个随机显示的中奖观众就是基于随机算法实现的功能。在这部分内容中,我学到了3个重要的随机算法:KMP、Monte Carlo和Las Vegas算法的评价和比较。这也是作为作业研究过的。也学习的素数判定随机算法。这里,要明白Miller-Rabin算法,是Rabin在Miller提出的基础上,研究出来的很常用的算法。
在课程的最后阶段,我学到了RAM和RASP这两个概念。应该说这部分知识是我学的最不好的地方。算法本质还没有了解。还需要进一步的研究。最后是NP-C和NP-hard问题。
算法与数据结构实验册 篇5
学 生 实 验 报 告 册
课程名称:
学生学号:
所属院部:
(理工类)
算法与数据结构 专业班级: 14计单(2)
1413201007 学生姓名: 毛卓
计算机工程学院 指导教师: 章海鸥 16 ——20 17 学年 第 二 学期
金陵科技学院教务处制
金陵科技学院实验报告
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。
实验报告书写说明
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
金陵科技学院实验报告
实验项目名称: 顺序表 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验1 顺序表
一、实验目的和要求
掌握顺序表的定位、插入、删除等操作。
二、实验仪器和设备
VC6.0
三、实验内容与过程(含程序清单及流程图)
1、必做题
(1)编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。
(2)编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果不存在,返回-1。编写主函数测试结果。(3)在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。
解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。
(4)删除顺序表中所有等于X的数据元素。
2、选做题
(5)已知两个顺序表A和B按元素值递增有序排列,要求写一算法实现将A和B归并成一个按元素值递减有序排列的顺序表(允许表中含有值相同的元素)。
程序清单:
(1):/*编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。*/ #include
金陵科技学院实验报告
}sequenlist;void main(){ sequenlist L;int i,n;printf(“请输入元素个数:”);scanf(“%d”,&n);printf(“n请输入元素:”);for(i=0;i 如果不存在,返回-1。*/ #include int fun(sequenlist L,int x,int n){ 金陵科技学院实验报告 } int i;for(i=0;i } int i,n,y;int x; printf(“请输入元素个数:”);scanf(“%d”,&n);printf(“n请输入元素:”);for(i=0;i printf(“n请输入要查找的数据元素:”);scanf(“%d”,&x);y=fun(L,x,n);if(y==-1)else printf(“n数据元素 %d 所在的位置为 %d n”,x,y);printf(“n所要查找的数据元素不存在。n”);(3): /*在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。 解题思路:首先查找插入的位置,再移位,最后进行插入操作; 从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置; 金陵科技学院实验报告 然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。*/ #define maxsize 100 typedef struct{ int data[maxsize]; int last;}sequenlist;main(){ int i,x,j; sequenlist l={{1,3,5,6,7,9},5}; printf(“n插入元素前的数据为:”); for(i=0;i<=l.last;i++) printf(“%2d”,l.data[i]); printf(“n请输入要插入的元素:”); scanf(“%d”,&x); for(i=1;i<=l.last;i++) if(l.data[i-1]>x)break; if(i>l.last) { l.data [l.last +1]=x; } else { for(j=l.last;j>=i-1;j--)l.data[j+1]=l.data[j];l.data[i-1]=x; } l.last++; printf(“插入元素后的数据为:n”); 金陵科技学院实验报告 for(j=0;j<=l.last;j++) printf(“%3d”,l.data[j]); printf(“n”);}(4): /*删除顺序表中所有等于X的数据元素。*/ #define maxsize 100 typedef struct{ int data[maxsize]; int last;}sequenlist;main(){ int i,j,x=0,k=0; sequenlist L={{1,3,5,7,2,4,6,8,2,9},9}; printf(“n原数据为:”); for(i=0;i<=L.last;i++)printf(“%3d”,L.data[i]); printf(“n请输入要删除的数据:”); scanf(“%d”,&x); for(i=1;i<=L.last+1;i++) if(L.data[i-1]==x){ for(j=i;j<=L.last+1;j++)L.data[j-1]=L.data[j]; L.last--; i--; k=1; } if(k==1){ printf(“删除后的数据为:n”); for(j=0;j<=L.last;j++)printf(“%3d”,L.data[j]); } else printf(“Not found!n”); 金陵科技学院实验报告 printf(“n”);} 四、实验结果与分析(程序运行结果及其分析)(1)结果: 请输入元素个数:5 请输入元素:1 2 3 4 5 元素输出:1 2 3 4 5(2)结果: 请输入元素个数:5 请输入元素:1 2 3 4 5 请输入要查找的数据元素:5 数据元素5所在的位置为 4(3)结果:插入数据前的元素为:1 3 5 6 7 9 请输入要插入的元素为:10 插入元素后的数据为: 5 6 7 9 10(4)结果:原数据为:1 3 5 7 2 4 6 8 2 9 请输入要删除的数据为:7 删除后的数据为: 3 5 2 4 6 8 2 9 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 单链表 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验2 单链表 一、实验目的和要求 1、实验目的 掌握单链表的定位、插入、删除等操作。 2、实验要求 (1)注意链表的空间是动态分配的,某结点不用之后要及时进行物理删除,以便释放其内存空间。 (2)链表不能实现直接定位,一定注意指针的保存,防止丢失。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)编写程序建立一个单链表,并逐个输出单链表中所有数据元素。(2)在递增有序的单链表中插入一个新结点x,保持单链表的有序性。 解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插入操作。 (3)编写实现带头结点单链表就地逆置的子函数,并编写主函数测试结果。 2、选做题 已知指针LA和LB分别指向两个无头结点单链表的首元结点。要求编一算法实现,从表LA中删除自第i个元素起共len个元素后,将它们插入到表LB中第j个元素之前。程序清单: 金陵科技学院实验报告 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 堆栈和队列 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验3 堆栈和队列 一、实验目的和要求 (1)掌握应用栈解决问题的方法。(2)掌握利用栈进行表达式求和的算法。 (3)掌握队列的存储结构及基本操作实现,并能在相应的应用问题中正确选用它们。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)判断一个算术表达式中开括号和闭括号是否配对。(2)测试“汉诺塔”问题。 (3)假设称正读和反读都相同的字符序列为”回文”,试写一个算法判别读入的一个以’@’为结束符的字符序列是否是“回文”。 2、选做题 在顺序存储结构上实现输出受限的双端循环队列的入列和出列算法。设每个元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作业的平均时间,则插入在队头,否则插入在队尾。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 串 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验4 串 一、实验目的和要求 掌握串的存储及应用。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)编写输出字符串s中值等于字符ch的第一个字符的函数,并用主函数测试结果。 (2)编写输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。 解题思路:可以将第一题程序改进成一个子函数,在本题中循环调用。(3)设字符串采用单字符的链式存储结构,编程删除串s从位置i开始长度为k的子串。 2、选做题 假设以链结构表示串,编写算法实现将串S插入到串T中某个字符之后,若串T中不存在这个字符,则将串S联接在串T的末尾。 提示:为提高程序的通用性,插入位置字符应设计为从键盘输入。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 二叉树 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验5 二叉树 一、实验目的和要求 (1)掌握二叉树的生成,以及前、中、后序遍历算法。(2)掌握应用二叉树递归遍历思想解决问题的方法。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)建立一棵二叉树。对此树进行前序遍历、中序遍历及后序遍历,输出遍历序列。 (2)在第一题基础上,求二叉树中叶结点的个数。(3)在第一题基础上,求二叉树中结点总数。(4)在第一题基础上,求二叉树的深度。 2、选做题 已知一棵完全二叉树存于顺序表sa中,sa.elem[1…sa.last]存储结点的值。试编写算法由此顺序存储结构建立该二叉树的二叉链表。 解题思路:根据完全二叉树顺序存储的性质来确定二叉树的父子关系即“还原”了二叉树,之后再按照二叉树二叉链表的构造方法进行建立。完全二叉树顺序存储的一个重要性质为,第i个结点的左孩子是编号为2i的结点,第i个结点的右孩子是编号为2i+1的结点。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 图 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验6 图 一、实验目的和要求 (1)熟练掌握图的基本概念、构造及其存储结构。 (2)熟练掌握对图的深度优先搜索遍历和广度优先搜索遍历的算法。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)构造一个无向图(用邻接矩阵表示存储结构)。 (2)对上面所构造的无向图,进行深度优先遍历和广度优先遍历,输出遍历序列。 2、选做题 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。简单路径是指其顶点序列中不含有重复顶点的路径。提示:两个顶点及k值均作为参数给出。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 排序 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验7 排序 一、实验目的和要求 (1)熟练掌握希尔排序、堆排序、直接插入排序、起泡排序、快速排序、直接选择排序、归并排序和基数排序的基本概念。 (2)掌握以上各种排序的算法。区分以上不同排序的优、缺点。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 用随机数产生100000个待排序数据元素的关键字值。测试下列各排序函数的机器实际执行时间(至少测试两个):直接插入排序、希尔排序(增量为4,2,1)、冒泡排序、快速排序、直接选择排序、二路归并排序、堆排序和基于链式队列的基数排序。 2、选做题 假设含n个记录的序列中,其所有关键字为值介于v和w之间的整数,且其中很多关键字的值是相同的。则可按如下方法排序:另设数组number[v…w],令number[i]统计关键字为整数i的纪录个数,然后按number重排序列以达到有序。试编写算法实现上述排序方法,并讨论此种方法的优缺点。程序清单: 金陵科技学院实验报告 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 查找 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验8 查找 一、实验目的和要求 (1)掌握顺序表查找、有序表查找、索引顺序表查找的各种算法。(2)掌握哈希表设计。 二、实验仪器和设备 Visual C++6.0 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)在一个递增有序的线性表中利用二分查找法查找数据元素X。 2、选做题 (2)构造一个哈希表,哈希函数采用除留余数法,哈希冲突解决方法采用链地址法。设计一个测试程序进行测试。 提示:构造哈希表只是完成查找的第一步,大家应该掌握在哈希表上进行查找的过程,可以试着编程序实现。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 计算机系统中的任何软件, 都是按一个个特定的算法来予以实现的。算法性能的好坏, 直接决定了所实现软件性能的优劣。如何判定一个算法的性能、用什么方法来设计算法、所设计的算法需要多少运行时间、多少存储空间, 在实现一个软件时, 这些都是必须予以解决的。计算机的操作系统、语言编译系统、数据库管理系统以及各种各样的计算机应用系统软件, 都离不开用具体的算法来实现。因此, 算法设计与分析是计算机科学与技术的一个核心问题, 也是大学计算机专业本科生及研究生的一门重要的专业基础课程。 而目前, 就计算机专业IT企业招聘需求和学生就业去向分析来看, 企业对学生的需求不再是单纯以学生成绩和各种奖励为主要参考依据, 更多的企业将人才需求定位在能力考察上。部分就业学生面对企业能力要求和实践要求, 自费到培训学校去"镀金", 以便面对企业招聘时的实践经验取得一定突破。因此, 大力加强算法分析与设计课程的实践性建设研究, 突出它的应用性, 提高算法分析与设计课程的教学质量, 有利于教学改革和教育创新, 有利于计算机科学系应用型创新人才的培养。 1、《算法设计与分析》教学的现状 《算法设计与分析》课程的主要目的是讲授计算机应用中常常遇到的实际问题的解法, 讲授设计与分析各种算法的基本原理思想、方法与技术, 从而使学生在选择或者设计算法时可以对其进行时空耗费分析, 并使所设计算法时空复杂性最优, 进而为其编写出高效程序、开发出优秀软件系统奠定基础。但是, 我们在教学过程中发现, 学生对该门课程掌握的情况并不十分理想。这其中一个非常重要的原因, 是实践环节的不足。学生在学完理论后, 不能及时通过实践来检验和巩固所学知识, 导致越学越糊涂, 也越加深了对这门课程的畏难心理。 下面是目前《算法设计与分析》教学中存在一些不足的原因: (1) 该课程需要学生具有较好的离散数学、程序设计、计算方法、数据结构等前驱课程的基础。 (2) 该课程要求学生能在理解算法设计思想的基础上, 举一反三灵活运用, 而不是死记硬背。 (3) 实践效果不显著 人们已经普遍认识到计算机程序设计课程是实践性、技术性非常强的课程, 需要大力加强实践性教学环节, 因此实践课课时的比例也越来越大。当前实践课内容、形式虽然能在一定程度上提高了学生的动手实践能力, 但并不一定能提升学生解决实际问题的能力。其一, 实验内容大多是课堂教学内容的验证性实验, 学生往往是照着葫芦画个瓢, 知其然不知其所以然, 实验的时候对所学习内容没有充分理解, 只是充当的打字员, 结果出来后就万事大吉。其二, 各个实验内容各不相关, 互相脱节, 不能形成一个问题的全部, 在以后遇到同类问题, 不能从全局的角度分析解决, 只能部分的解决局部问题, 不利于能力的提高。 2、实践教学改进 在《算法设计与分析》课程的学习过程中, 学生比较困扰的是理论脱离实践, 对"算法设计与分析"潜在的应用价值难以有深刻的认识。在课程建设中, 在努力提高课堂教学效果和抓好习作的同时, 下大力气对上机实验的要求和管理进行重点建设。在第一次上实验课程时, 除了给问题和要求外, 还给出问题分析、总体结构设计、部分详细设计, 最后要求学生进行主要算法程序设计及调试。这样做的目的是让所有的学生对"算法设计与分析"实验有初步了解, 在给出的整体框架上将主要算法及应用实现出来, 达到学习"算法设计与分析"的效果。同时, 还考虑到学生的学习程度不同, 有些学生底子较薄, 对实验认识也不够, 认为"算法设计与分析"只是理论上的学习, 根本无法编写程序和实际应用。根据这种情况, 我们给出部分详细设计就是要使这部分学生增强用程序实现算法的自信心, 继而模仿编程, 最终实现将理论知识应用到解决实际问题中去, 提高应用与创新能力。对每个实验都有具体要求, 并鼓励学生课下多编程、上机调试, 每次试验结束后要求学生完成实验报告及调试分析, 算法的时空分析以及经验体会, 为将来进行软件开发打下坚实的基础。 为了在有限的上机学时内, 尽可能地提高算法实践的教学效果, 以下是我们在"算法设计与分析"课程教学中的几点做法: (1) 引发学生兴趣, 明确实验内容 学生普遍认为"算法设计与分析"实验难于上手, 而且不知道它的应用。这就需让学生了解算法设计与分析的重要性, 告诉学生, 在计算机科学中, 算法设计的优劣决定着软件系统的性能, 对算法进行研究能使我们深刻地理解问题的本质以及可能的求解技术。从而引发学生学习的主动性。 在课堂授课中, 还要向学生介绍各章节内容的意义、算法的思想以及实验的内容。在开始阶段, 教师最好给出一些简单程序的源代码, 以供学生参考, 激发学生上机的积极性。笔者在授课的开始阶段就前几章节的算法实现, 都亲自编写源程序, 供学生参考, 并上机讲解, 帮助学生调试成功, 增强学生自信, 从而激发了学生的上机兴趣。 (2) 强化程序设计语言的程序开发能力 首先教师给出程序案例的框架结构, 学生经过思考, 选择合适的算法和指令语句, 经互相讨论, 完善和丰富程序案例, 然后上机调试, 通过运行来检验结果。程序案例的教学法是从兴趣入手, 首先给人们编程的乐趣, 继而带领学生进入程序的天地, 提高了探索的欲望, 使学习编程变得生动而有趣。 (3) 精选实验内容, 编程实现典型算法 "算法设计与分析"教学中的上机是理论联系实际的重要教学环节, 在选择实验内容上应从以下几个方面进行考虑: 1) 在选择算法实践内容时, 要注意从应用背景出发, 面向实际应用问题, 强调基本应用能力的培养, 这样, 才可以激发学生学习的积极性, 提高学生学习的兴趣, 并充分发挥学生的主观能动性。 2) 算法实践习题的难度要适中, 不要出现怪题和偏题, 这些内容的出现, 会打击学生的自信心。同时, 习题也不能太简单, 过分简单的内容不能达到教学目的。 3) 算法实践内容一定要具有综合性, 既有助于学习算法设计与分析, 又有助于提高编程能力。 在教学实践中, 我们选择以下实验课程内容: 实践表明, 多数学生经过努力, 可以完成以上的算法。 (4) 对同一个问题, 可让学生使用不同的算法设计策略来解决。从而使得学生可以对算法进行比较, 体会不同算法设计策略所适用的场合, 进而加深对算法的理解。 (5) 学生的接受能力、理解能力以及动手能力各不相同, 因此, 需要贯彻因材施教的原则, 区别对待。对于能力强的学生, 可以在完成基本要求的基础上, 再增加一些有难度的问题, 并引导学生自主研究新的解决问题的方法, 激发学生的创新能力。 3、结束语 在本课程教学设置上, 我们既要考虑到本科教育的基础性和阶段性, 也要充分考虑到技术应用型人才适应第一线工作的要求, 体现了既要有一定的学术性, 又要有一定的实践性。在教学方式上除要加强正常教学外, 重视实践教学环节和通过项目活动过程突出应用专业技术能力的培养, 使技术本科学生不但知其然, 而且能知其所以然。培养基础扎实、动手操作能力强、综合素质高的应用型人才, 已成为高等教育工作的重心。 实践表明, 只有将理论教学和实践教学密切结合, 才能使学生更好地掌握算法设计与分析这门课程, 从而切实提高教学质量, 贯彻完成大纲要求。 摘要:针对《算法设计与分析》这门课的课程特点, 结合我校技术应用型本科教育的理念, 分析了目前在课程教学中存在的不足之处, 提出加强“算法设计与分析”实践教学, 探讨了实践教学内容的设置以及应注意的问题。 关键词:算法设计与分析,实践,教学方法 参考文献 [1].Anany Levitin.算法设计与分析基础[M].北京:清华大学出版社, 2004. [2].陈国良.并行算法实践[M].北京:高等教育出版社, 2002. 实验设计题一般具有难度大、开放性高和得分低等特点。解答该类试题时,要求考生能准确理解实验原理,合理运用实验材料与用具,采用一定的实验手段,控制相应的实验条件,合理调节各类实验因素,这样方能对实验方案进行科学的设计。 一、实验设计步骤的基本方法 1. 明确实验目的 认真审题,找准关键词,搞清实验要探究什么问题(课题)。一般从题干(或课题)中就可以读出。 2. 分析实验原理 实验所依据的科学道理、规律。解生物实验设计题时,一定要认真审题。审题最关键的目标就是要明确该实验所依据的科学原理。 3. 确定实验思路 首先,明确实验目的、实验原理及实验要求等基本条件;其次,精心策划实验方法、严格设计实验过程、合理设置对照或变量,并引入科学的观测方法;最后,能够做到有效预测实验结果、科学描述实验结果,并得出科学的实验结论。 如在明了确探究性实验要求、目的后,可分为三步骤进行:(1)实验准备,包括必要的实验器材及实验药品的准备;(2)设计对照实验。满足条件X设计一个实验,观察事件P能否发生;条件X改变设计一个实验,观察事件P能否发生,发生的程度如何?(3)梳理,实验是否遵循“单因子变量”、“等量原则”。 4. 设计实验步骤 在明确了实验目的和实验原理,选准实验材料,遵循实验原则并做出实验假设后,就可以编制一个严密、科学的实验程序进行实验。对于编制的实验程序,须要仔细推敲,形成一个最优化的方案,使实验科学、简捷、可行。 二、实验步骤书写“四步曲” 分组对照实验的步骤设计可分为四步:第一步:对实验材料、实验用具分组并编号。根据题目的实验目的和实验变量,确定可分为几组。叙述时注意每组实验材料、用具都要相同。这一步要求我们做题时一定要仔细审清题意,根据实验给定的条件要求来设计。第二步:对各组进行实验变量处理。施加实验变量的组为实验组,不施加实验变量的组为对照组。该步要求我们注意合理设计对照实验,并注意实验变量怎样处理。第三步:各组在其他条件相同且适宜的条件下,培养或反应一段相同的时间,该步要注意控制好无关变量,保证实验遵循单一变量原则。第四步:观察并记录实验结果,结合具体题目叙述怎样对结果进行观察记录。 三、实验设计步骤中常见的错误 同学们做实验设计题时,往往不能根据研究目的和研究内容来设计实验方案,对于具体实验步骤,描述不全面,语言表达能力不到位等。 【考点例析】 例1 血液中的钙离子在血液凝固过程中起重要作用,缺乏则血液不能凝固,草酸钾能与血液中的钙离子发生反应,形成草酸钙沉淀,起抗凝作用。请根据提供的实验材料和用具,验证钙离子在血液凝固中的作用。简要写出第二步及以后的实验步骤。 1. 实验材料和用具 ①家兔 ②生理盐水 ③酒精棉 ④适宜浓度的草酸钾溶液 ⑤适宜浓度的氯化钙溶液 ⑥试管、注射器(针管和针头) 2. 实验步骤 第一步:取两只试管,编号A、B,分别加入等量的草酸钾溶液和生理盐水。 第二步: …… 解析 (1)明确目的和要求:此实验的目的、要求是验证钙离子在血液凝固中的作用。(2)分析原理:此实验的原理是①血液中的钙离子在血液凝固过程中起重要作用,缺乏则血液不能凝固;②草酸钾溶液能与血液中的钙离子发生反应,形成草酸钙沉淀,起抗凝作用。(3)确定实验思路:观察血液中有钙离子和无钙离子2种情况下,血液的凝固情况,以验证钙离子在血液凝固中的作用。(4)设计实验步骤:要注意题中已给的第1步,要意识到A管和B管是一组对照,在将要设计的各步骤中要注意有关事项,如试剂用量、控制条件。 本题设计步骤如下:第二步:用酒精棉消毒,用注射器取家兔血液。第三步:立即将等量的新鲜血液分别加入A、B两试管中,静置一段时间。第四步:将等量的氯化钙溶液分别加入A、B两试管中(或只在A管中加入一定的氯化钙溶液)。 例2 在“课外”活动中,生物小组同学了解到一种有毒植物“博落回”,农民常用其茎叶的浸出液对水稻种子进行消毒杀菌,防治秧苗病害,但是使用时常出现水稻发芽率降低的现象。同学们经调查后发现,农民所使用的“博落回”浸出液浓度约为100mL水中含有3~7g“博落回”茎叶干重。他们推测,水稻发芽率降低现象可能与使用的浸出液浓度有关。 课题名称:不同浓度“博落回”浸出液对水稻种子发芽率的影响。 实验材料:晒干的“博落回”茎叶,饱满无菌、已经水浸泡一天的水稻种子500粒、培养皿数套、大小烧杯数只、量筒、台秤、漏斗、纱布、吸管、吸水纸等。 实验步骤: 。 解析 本题实验目的是研究“不同浓度‘博落回’浸出液对水稻种子发芽率的影响”,由此可知实验变量为“不同浓度的‘博落回’浸出液”,应设计用不同浓度“博落回”浸出液处理的水稻种子,分成几组,均为实验组,同时应设计一组不用“博落回”浸出液而用蒸馏水处理的水稻种子为对照组。另外实验材料只给出“晒干的‘博落回’茎叶”,设计中应获取“博落回”浸出液。叙述中还要注意关键词的使用,如“等量的”、“温度等条件适宜且相同情况下”等。 在设计实验步骤时,同学们要特别注意,题目中给出的实验试剂和材料一般要充分利用(要用完),除非题目条件允许,否则不要随意增加、更改或减少实验试剂和材料。此外,同学们在书写实验步骤答案时,要注意:①要分步描述并加以编号(一般不宜连续描述);②实验中涉及到两组或两组以上,所用器材需用1、2、3……或A、B、C……等加以编号便于区分;③在量上难以做到准确的量化描述,应尽可能用“定性”的语言表达,如“一段时间”、“适宜的温度”、“适量的”、“一定量的”等;④叙说中尽量要用规范的实验术语,不能用俗语、口语,如:“盖玻片”不能说是“薄的玻璃片”,“等量的”不宜说成“一样多的”,“振荡”不宜说成“晃动”“摇动”,“不变色”不等于“无色”,不要将“褪色”说成“无色”,“不变”也不能说成“无现象”等等。 答案 实验步骤:①称取“博落回”茎叶30g、40g、50g、60g、70g分别放入不同烧杯中,各加水500mL,浸泡两天,用纱布过滤,得到不同浓度的浸出液;②用培养皿6只,分别编号,在培养皿内铺垫吸水纸;③按编号倒入等量的相应浓度的浸出液,对照组倒入等量蒸馏水,使吸水纸吸足水分,每一培养皿中的吸水纸上平铺50粒水稻种子,各组置于温度适宜且相同条件下培养;④每天观察,使吸水纸保持湿润,三天后,检查并记录每一培养皿中发芽和不发芽的种子数。 例3 科学研究已证实某类有机污染物对水生软体动物雌性个体有致畸作用,畸变雌性体内出现雄性生殖器官。近期某水域被该类有机物X污染,为了解此有机物对水生软体动物是否有致畸作用,生物兴趣小组同学提出开展探究活动。请利用中考生物实验室常用器材以及下列实验材料和用具,设计实验步骤。 实验材料和用具:采自未受污染水域、体重相近、性成熟的水生螺(A螺)(300只),解剖镜,有机污染物X溶液,养殖池,正常A螺雌、雄性器官解剖图谱等。 提示:给药剂量、具体仪器操作不作要求,室温恒定,养殖时间30天。A螺为雌雄异体,性别特征可在解剖镜下鉴定。 实验步骤: 。 解析 解答该题时,同学们常见的错误有:(1)没有考虑到做前测观察(见答案实验步骤①)和统计计算畸变率(见答案实验步骤⑤);(2)理解不到位,将“畸变雌性体内出现雄性生殖器官”误解为“雌性个体变为雄性个体或变为雌雄同体个体”;(3)没有注意题目中给出的条件,选用“培养皿、烧杯、试管、瓶子”等器皿培养螺;(4)分组不随机,表现在先用解剖镜挑出雌螺和雄螺,然后按雌雄螺进行分组;(5)对样本数量没有统计学概念,在培养后只取几只甚至1只进行解剖统计;(6)没有写明白实验观察和分析的具体内容,仅写出“观察实验结果”、“分析得出结论”等概括性描述。 【算法设计与分析实验四】推荐阅读: 《算法分析与设计》实验指导书07-07 算法设计与分析论文06-20 算法设计与实现07-29 算法与程序设计教学08-09 《算法与程序设计》教学探析 期10-22 数据结构与算法课程设计题目11-05 高中信息技术 算法与程序设计教案 粤教版选修1概要09-29 算法设计实现08-14 分糖果问题算法设计07-04《算法设计与分析》实践教学探讨 篇6
第四部分 实验步骤设计 篇7