论文范文网-权威专业免费论文范文资源下载门户!
当前位置:毕业论文格式范文>职称论文>范文阅读
快捷分类: 有关大数据的论文 资本结构分析论文 建筑结构论文 论文结构 毕业论文结构 数据挖掘论文 数据结构毕业论文范文 数据结构排序论文 数据结构毕业论文 数据结构开题报告 数据结构l论文参考文献 数据结构论文参考文献

数据结构方面学术论文怎么写 与程序设计和数据结构双向重构教学衔接法方面论文如何写

分类:职称论文 原创主题:数据结构论文 发表时间: 2024-01-14

程序设计和数据结构双向重构教学衔接法,该文是数据结构方面学术论文怎么写和数据结构和重构和程序设计有关论文写作技巧范文.

1背?景

1.1数据结构与程序设计课程的关系

程序设计类课程是数据结构课程的先修课,它们都是计算机专业的核心课程.数据结构课程的核心思想是通过在现实问题和计算机之间建立数学模型,然后用程序得到现实问题的答案.这要求学生先对程序有基本的认知和程序设计能力,但是从多年的教学过程中发现,学生在学完一门程序设计语言(如C语言)后,紧接着学习数据结构存在难以衔接的困难,主要包括以下几个问题.

问题一:对数据结构、算法和程序3者之间的认识不够;

问题二:简单算法和复杂数学模型之间的过渡困难;

问题三:从简单数据类型到复杂数据逻辑结构和存储结构之间的过渡困难;

问题四:从编写简单程序到复杂程序的训练不足;

问题五:对算法效率的评价认识和实践不足.

问题二和问题三是由问题一派生出来的,如果能解决问题一,问题二和问题三即能解决.关于问题四,学生进入数据结构的学习后,接触到大量非数值类的复杂问题,对编程能力是一个延续训练.关于问题五,数据结构的另一个研究重点是算法效率,算法设计的好坏直接关系到程序实现的正确性和效率.

1.2基于建构主义理论的知识“双向重构”思想

建构主义学习观中认为,知识并不是对现实的准确表征,它只是一种假设和解释,并不是问题的最终答案.相反,它会随着人类的进步而不断地被“革命”掉,并随之出现新的假设[1].建构主义的学习活动观认为,学习不是知识由教师向学生的传递,而是学生建构自己的知识的过程[1].建构主义的学习观认为,学生在接触新的知识之前,是有一定经验的,他们可以依靠经验背景出发,经过知识的重组和扩充,重新建构知识体系.

在建构主义学习理论下出现了多种学习模式.赫尔巴特等提出,要以问题解决为基础改革教学:应该让学生就学科内容形成问题,具有对知识的好奇,然后再去探索,去寻找答案,解决自己认识上的冲突,通过这种活动使学生建构起对知识的理解[1].皮亚杰认为,新经验的进入会使原有的经验发生一定的改变,使它得到丰富、调整或改造,这就是双向的建构过程[1].

在这个“双向重构”过程中,学习者首先是“正向”地接受新知识,是新知识的堆砌过程;之后,学习者通过思考、比较和重组,“逆向”地改变旧知识构成的旧的认知,是新旧知识发生融合、发生质变的一个过程.从实现者的角度出发,“双向”表示学习不再是教师把知识简单地教授给学生的单向传递过程,学习者不是被动接收信息刺激,而是主动地接受新知识,重新建构新认知结构的过程.“重构”指的是学生不一定按照教师的单向传递思路重建教师已经建构好的知识体系,而是可以重构出新的、具有创新性的认知体系.

2程序设计与数据结构课程的知识对比

程序设计与数据结构课程之间相辅相成,两门课程所讲述的内容,有很多知识点具有相关性和延续性.以C程序设计课程为例,对比两门课程讲述内容见表1.

对比表1中两门课程的内容,可以看出:①程序设计课程的内容是数据结构课程的基础;②数据结构课程的内容是程序设计课程的深入和延续;③程序设计课程内容(知识)可以作为学生的“原有经验”构建数据结构课程内容(知识),即“新的经验”或“新的知识体系”.

3基于“双向重构”思想的数据结构、算法和程序的递进学习模型

数据结构课程最重要的内容就是要让学生理解数据结构、算法和程序之间的关系.有了这个前提,学生才能不断地调整和改组旧知识,构建新的知识框架,用新的眼光和思考方式解决越来越复杂的现实问题.因此,应首先基于“双向重构”的思想,建立数据结构、算法和程序的模型;其次,根据这个模型,学生对新旧知识进行对比、拆解、分析和重新组装;最后,学生对知识点的理解和实践从量变到质变,重新构建数据结构、算法和程序的认知结构.整个模型分3个递进的子模型:概念模型、逻辑模型和实现模型.

3.1数据结构、算法和程序的概念模型

数据结构、算法和程序在数据结构和程序设计中是3个最重要的概念.图1所示为3个概念的概念模型.

根据概念模型,数据结构是数据与数据之间的复杂关系,这些关系可以用数据类型进行组合或者创造得到;算法仍然是解决问题的方法和步骤,只是步骤更多,逻辑性更强;程序仍然是程序,只是程序的结构和规模都变得更为复杂.建构这样一个概念模型还有一个好处,在这个阶段,3个重要概念中,只有数据结构需要认知的更新,从而减轻学生开始学习数据结构课程的恐惧心理.

3.2数据结构、算法和程序的逻辑模型

对数据结构、算法和程序概念再进行深层次的剖析和分解,建立逻辑模型,使得3个概念发生认知重构,如图2所示.

(1)数据结构.第一,数据结构(在计算机中的模型)是相互之间存在一种或多种特定关系的数据元素的集合[2].第二,Data Structure(数据结构)是数据的逻辑结构和存储结构的合体.数据的逻辑结构是数据之间的结构关系,是具体关系的抽象.数据的存储结构是数据结构在计算机内存中的表示[2].

(2)算法.在概念模型中,算法是对特定问题求解步骤的一种描述.在逻辑模型中,算法是对数据所进行的操作的一种描述,其中每一条指令表示一个或多个操作[2].

(3)程序.在逻辑模型中,也能说明公式“Data Structure + Algorithm等于Program”,并且是对概念模型的细化和验证.程序应该能够刻画数据的逻辑结构、存储结构和对数据的操作.在逻辑模型中最后出现了ADT(抽象数据类型),即告诉学生,在数据结构这门课中,通过研究ADT的定义、表示和实现,学习数据结构和算法在计算机中的表示,然后再将它们写成程序,从而完成“程序(program)”知识的重构.

3.3?数据结构、算法和程序的实现模型

根据概念模型和逻辑模型,学生通过知识重构,已经明确要在计算机中通过程序解决实际问题,必须学习ADT.接下来,教师就可以告知学生,如何通过创建好的ADT进行具体的实践.以顺序表的操作实现为例,构建数据结构、算法和程序的实现模型,如图3所示.

在实现模型中,数据的逻辑结构最终由ADT List的定义实现;数据的存储结构最终由线性表的动态分配顺序存储结构Sqlist,即文件S1.h实现;数据的操作最终由顺序表Sqlist的操作,即文件A1.h实现.另外,文件C1.h中包含的是类C语言的各种函数状态代码,文件Main.cpp是程序的主调函数.通过实现模型,数据结构和算法的概念又进行了重构,概念更新为具体的组成程序(Program)的各个文件.3个抽象的概念得以实体化.

4 数据结构、算法和程序的递进模型的实践和分析

4.1?数据结构、算法和程序的递进模型的实践

我们通过实例对数据结构、算法和程序的递进模型进行实践,如线性表La和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的元素仍按值非递减有序排列.根据实现模型,假设采用顺序表作为存储方式,要求学生用C语言或者C++语言,在VC++6.0中实现程序.由于文章篇幅有限,只能列出部分重要程序,程序中有符号“”,表示此处有省略的程序[3].

1)依次编辑文件C1.h、S1.h、A1.h和Main.cpp,并放入一个文件夹.

(1)文件C1.h的部分内容如下:

#include<string.h> ……

#define TRUE 1 ……

typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等

(2)文件S1.h的内容如下:

#define LIST_INIT_SIZE 10 // 线性表存储空间的初始分配量

#define LISTINCREMENT 2 // 线性表存储空间的分配增量

struct SqList

{

ElemType *elem; // 存储空间基址

int length; // 当前长度

int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位)

};

(3)文件A1.h的部分内容如下:

Status GetElem(SqList L,int i,ElemType &e) { …… }

int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)) {……}

Status ListInsert(SqList &L,int i,ElemType e) { ……}

(4)文件Main.cpp的部分内容如下:

#include"c1.h"

typedef int ElemType;

#include"S1.h"

#include"A1.cpp"

void MergeList(SqList La,SqList Lb,SqList &Lc) {

La_len等于ListLength(La);

Lb_len等于ListLength(Lb);

while(i<等于La_len&&j<等于Lb_len) {

GetElem(La,i,ai);

GetElem(Lb,j,bj);

if(ai<等于bj) { ListInsert(Lc,++k,ai); ++i;}

else { ListInsert(Lc,++k,bj); ++j; }

}

……

}

void main()

{

SqList La,Lb,Lc;

int j,a[4]等于{3,5,8,11},b[7]等于{2,6,8,9,11,15,20};

InitList(La); // 创建空表La

for(j等于1;j<等于4;j++) ListInsert(La,j,a[j-1]);// 在表La中插入4个元素

ListTrerse(La,print);

InitList(Lb); // 创建空表Lb

for(j等于1;j<等于7;j++) ListInsert(Lb,j,b[j-1]);// 在表Lb中插入7个元素

ListTrerse(Lb,print);

MergeList(La,Lb,Lc);

ListTrerse(Lc,print);

}

2)在VC++6.0中执行Main.cpp文件,查看并记录程序运行结果,如图4所示.

4.2数据结构、算法和程序的递进模型的分析

从整个递进模型来看,概念模型在整个数据结构的学习过程中,只需建立一次.它是程序设计课与数据结构课程衔接的简单过渡,学生容易理解,在“绪论”一章中就可以给学生建立.建立逻辑模型的过程是学生知识纳入和认知重构的过程,这一阶段需要教师列举一些实例,如迷宫、学生信息管理、交通管理等,以帮助学生解决数据结构、算法和程序之间的关系(问题一).这一阶段也是1.1节问题二和问题三的重要过渡阶段,教师也应在“绪论”一章帮助学生建立起来.第3个模型可在后序整个数据结构课程学习过程中.教师每讲解一种新的数据结构,首先可以重复逻辑模型,以加深学生对问题二和问题三的过渡;然后再建立新的实现模型;最后,将问题转换为程序由计算机给出运行结果.这一阶段是程序设计课与数据结构课衔接的重要实践阶段.根据实现模型,学生就能得到从简单程序到复杂程序编写的训练(问题四).另外,教师还应强调改变ADT的表示即改变数据的存储结构,ADT的实现即对数据的操作也要随之改变,也就是数据在不同存储方式下,解决同一问题的算法也要改变.这样,可引导学生分析算法的效率(问题五),如在以上实例中,也可以用链式存储方式解决,算法执行的效率将有所不同.如果学生能根据新旧知识的融合,设计出新的存储结构或者算法,则实现了认知结构的创新.至此,解决了本文前面1.1节所提出的5个问题.

5结?语

从数据结构、算法和程序递进模型可以看出,此模型设计了这样一个过程:通过一个具体的实例(现实问题),分析其在计算机中的表示(数据结构),并找到问题的解决方法(算法),最后用程序得到问题的解答.模型将数据结构、算法和程序实体化.数据结构课程中有很多的现实问题,包括一元多项式的求解、迷宫问题、模式匹配、最小生成树、最短路径等,都可以用此模型所描述的过程进行学习和实践.从整个递进模型的实践过程来看,学生亲历了从数据结构到算法、从算法到程序的过程.一方面,学生再次明确数据的逻辑结构与算法的设计相关,而数据的存储结构与算法的实现相关[4];另一个方面,学生可以更加清楚算法和程序不等价[5],完全不必因为没有学好程序设计语言而害怕数据结构,反而能够通过对各种数据结构运用递进模型的实践,增强编程能力.这个模型采用了“双向重构”思想,是学习者对新信息的建构,同时又包含对原有经验的改造和重组.学习过程中需要注意:①教师在“正向”传递知识时,应了解学生的基本情况,设计便于学生理解和重组的知识;②学生进行“逆向”重组时,多设计实例和需求供学生重构,争取做到“教师引导,学生创新”;③可适当引导学生根据问题,归类算法的思想,为后序算法设计和分析课程打下基础.

上文总结:这是关于数据结构和重构和程序设计方面的相关大学硕士和数据结构本科毕业论文以及相关数据结构论文开题报告范文和职称论文写作参考文献资料.

参考文献:

1、 基于多微驱动的SPOC混合教学模式和实践以《面向对象程序设计》为例 戴振中,叶晓彤(绍兴文理学院计算机系,浙江绍兴312000)摘要移动互联技术的快速发展和笔记本电脑、手机、平板……移动终端设备的普及打通了在线教育的“最后一公里” 基于&ldq.

2、 结合分层教学的对分课堂在程序设计教学中的应用 摘要为了提高课堂教学效果、促进学生有效地学习,在高职院校程序设计课程教学中应用对分课堂理论实施课程教学改革 拓展了对分课堂理论的应用范围,并很好地实现了分层教学,使各层次的学生都能学有所得 关键词对分.

3、 数据结构课程QAE实践教学模式和实践 摘 要数据结构是一门应用实践性强的课程,为加强数据结构实践课程建设,分析了数据结构实践课程教学中存在的问题,提出了以问题驱动为基础、立体化进阶式教学与考核为手段、时空拓展实践教学为特色(QAE)的教学.

4、 民族地区高校Ja程序设计课程双语教学和 任廷艳(黔南民族师范学院 计算机科学系,贵州 都匀 558000)摘 要分析目前民族地区高校双语教学中存在的主要问题,提出Ja程序设计课程双语教学的建设方案,从教学目标、教学管理、教学计划、教师培养….

5、 数据结构和算法分析立体化教学模式 数据结构与算法分析立体化教学模式探索华伟1,张典1,姜官男1,徐自励2(1 四川大学 电子信息学院,四川 成都 610065;2 中国民航总局第二研究所,四川 成都 610041)摘要针对数据结构与算.

6、 流程图在程序设计语言教学中的应用 摘要针对学生学习编程过程中存在的问题,在结构化编程思想的基础上,将流程图应用于程序设计语言教学之中 实践证明这种方式有助于学生理解程序设计语言中的基本控制流程,掌握自顶向下的设计方法,提高分析问题解决.