程序设计论文范文
时间:2023-03-16 19:23:27
导语:如何才能写好一篇程序设计论文,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
【行为导向教学法;程序设计;教学案例
随着计算机应用的普及,计算机应用专业也成了热门专业,而高级程序设计语言是计算机专业的一门必修课。在高级程序设计语言中,VisualBasic语言以其易学易用和功能强大,而且能够方便快捷地开发Windows应用程序等特征,而深受使用者欢迎。因此,其也作为中等职业学校的高级程序设计课的首选。VB是一门集知识和技能于一体、实践性很强的课程,要求学生既要学好理论知识,又要把握实际操作技能,同时,在进行软件开发时,要对用户需求及市场情况进行调研,再加上计算机软、硬件快速更新换代的特征,要求学生还要具有很强的自学能力和终身学习的思想。对于这些要求来说,传统的教学方法难以做到。而使用强调以职业活动为导向,以人的发展为本位的“行为导向教学法”将会较好的实现这些教学要求。本文拟就在中等职业教育的计算机程序设计(VisualBasic)教学中,如何运用“行为导向教学法”进行初步探索。
一、行为导向教学法的基本理论
“行为导向教学法”是在近几年从德国引进的现代的职业教育新模式,其目标层次是培养人的行为能力,方法层次是人的行为活动。即摘要:这种教育以行为为目标,教学以行为为导向,教学是学生积极参和的全面的教学,学习过程是学生同时用脑、心、手来进行学习的过程。
行为导向教学法具有很强的针对性,即是以职业活动为导向,以教会学生“学会学习、学会工作”为目标而开展教学活动,因此,对学习者来说,学习目的是十分明确,即现在的学习是为今后的职业服务。教学活动的开展,通常是围绕某一课题、新问题或项目开展,是以“学习任务”为载体,引导学生自主学习和探索的过程。整个教学过程为一个包括获取信息、制订计划、做出决定、实施工作计划、控制质量、评定工作成绩等环节在内的完整的行为模式。使用“行为导向教学法”,将能更好的培养学生的关键能力(专业能力、方法能力、社会能力、个性能力),以达到职业教育的“职业教育就是就业教育”的教学目标。
二、行为导向教学法在VisualBasic教学中的必要性和可行性
(一)必要性
现行的计算机专业类教材大多和其它学科式的教材一样,重视知识结构的系统性,教学内容大多以线性方式展开,适用于“循序渐进”的传统教学模式,以《VisualBasic程序设计》的教材为例,从语言基础、流程控制、过程和数组、窗体和控件、对话框设计、菜单、工具栏和状态栏设计等等,分章编排,在每一章的内容里,也同样按线性方式展开。假如,在教学中仍按传统的教学方法按章节讲授,势必降低的课程的综合性、实用性,也缺乏趣味性,这不但难以培养学生学习喜好,使得教学双方都陷入困境,而且,学生不知道如何在真实的情境中灵活地使用知识和运用技巧。这样的学习,是很难面对今后职业的。要改变这一现象的方法,比较成功的是运用以课题或项目来开展教学活动的行为导向教学法进行教学,在教学中,淡化知识的系统性和连贯性,更多关注的是知识之间的联系,在联系中学习知识、在综合运用中学习知识,使学生不仅学会了程序设计知识本身,又培养了学生运用程序设计的知识去解决实际新问题的能力,达到“学以致用”的教学目的。
(二)可行性
《VisualBasic程序设计》是一门实践性和操作性很强的课程,知识涉及许多抽象的术语,如摘要:类、对象、过程、语句、控件等等,还有大量的开发工具的使用。仅就VB的开发环境为例,其中就包含了摘要:窗体设计器、代码编辑器、对象浏览器、属性窗口、工程管理器、工具箱、菜单、工具栏等等。把握和熟悉它们的最好方法,就是在不断的结合实际的“案例”(案例教学法)或“课题”(项目教学法)的操作实践中去把握。在教学中,教师可以把课程内容包含在两到三个综合贴近实际的项目,给出案例,再把这个项目分成若干个小项目(或模块)。例如摘要:以开发一个“学生信息管理系统”为一个综合项目(教师首先给出案例演示,以引起同学们的关注),再分别以“登录窗口”、“查询窗口”等为小项目进行设计开发,学习相关的基础知识(如摘要:在设计“登录窗口”的项目中,学生可以把握“文本框、标签、命令按钮、属性设置、变量命名规则、变量定义、变量数据类型、变量的声明语句、赋值语句”等相关知识群)。学生在具有目标明确的项目驱动下,以“做中学”的方法进行学习,这样,不仅可以提高他们学习的主动性和学习乐趣,同时也培养了他们的关键能力。
二、“行为导向教学法”案例
行为导向教学法中的“项目教学法”是指师生以团队的形式共同实施一个完整“项目”的工作而进行的教学活动。通过在开展项目过程中有针对性的工作来培养学生的关键能力,非凡是独立工作能力、想象力、创新能力。项目教学法包括了计划、实施和检查及成果展示的全过程。它是由学生自己来完成整个过程的教学方法。以下是一个项目教学法的简案。
项目摘要:学生信息管理系统
(一)教学目标
1.培养学生运用VisualBasic知识解决实际新问题的能力;
2.培养学生独立学习和工作的能力;
3.培养学生和人合作的能力。
(二)项目的实施过程
三、需要重点注重的两个新问题
(一)教师角色的转换
在行为导向教学中,对教师提出了更高的要求。教师应是“双师型”的教师,老师的角色由传统的教学主导者转变为教学活动的引导者或主持人,在教学过程中,教师以咨询员、伙伴、朋友等角色出现在学生中,教学方法由注重“教法”转变为注重“学法”,为此,要完成教学任务,教师要付出更多的心血。
(二)项目设计的合理性
项目设计的最重要的原则就是可实践性,以保证学生可操作,并有收获。因此,项目的设计应采用结构化的方法,自上而下,逐步细化的原则;项目的实施,则采用自下而上,由易到难,逐步完善的原则进行。
篇2
上机实验课是《Java程序设计》课程教学环节中不可或缺的一部分,然而,在实际教学过程中,上机实验课应有的作用并没有被充分发挥出来。一项针对计算机专业学生的调查问卷结果显示,学生即便将理论知识学的扎实透彻,但遇到实际的编程问题时却很被动,不知道从何处下手。导致这种现象发生的原因就是高职院校对实验的重视度和关注度不高,没有给予学生充足的实验机会及指导,这样一来,学生的动手能力就相对较差。传统的教学模式下上机实验课的流程就是学生上机编程来完成教师预先布置的编程任务,教师则会呆在机房内随时解决学生在实际操作过程中提出的问题。这种实验方式没有给学生设定明确的上机目标,致使学生没有完成任务的紧迫感,甚至有的学生在教师看不到的时候肆意玩乐,这样一来,非常不利于培养学生的动手能力及解决问题的能力。由此不难看出,按照传统的教学模式来培养学生,学生不能够很好地具备解决实际问题的能力,因此,传统教学模式下的高职Java程序设计课程教学不能满足社会对高素质、高能力技术型人才的需求。
2高职Java程序设计课程教学的改革
2.1教学内容的改革
高职教育更侧重于将学生培养成能够满足工作岗位或职业需求、掌握相应技能的应用型人才,因此,改革教学内容是非常有必要的。改革教学内容就是改变传统的理论教学,引入适量的案例,将基本理论的讲授穿插于案例教学中。需要特别注意的是,选择恰当合理的案例是非常重要的,它的质量能够直接影响到最终的教学效果。因此,教师要根据学生认知的特点选择具有适用性及代表性的案例,而且这些被选择的案例必须能够包含Java程序设计中的大部分知识,这些案例既区别于课堂上的举例,但又和它们具有一定的联系。为了能够很好地展开案例教学,教师在课前需要对案例教学进行周密详细的安排,主要包括四个方面,它们分别是发放案例素材、组织案例实施、区分案例分析中的理论分析以及操作分析、安排处理案例教学中涉及到的外延知识。案例教学能够在课堂上很好的结合理论与实践,促进学生综合能力的提升。学生带着问题去分析案例,在这个过程中教师对涉及到的相关理论知识进行讲授,这种方式能够帮助学生更好地理解知识。对案例进行分析的过程不仅能够使学生拓宽知识面,掌握分析问题的技巧,还能够帮助学生将理论运用于实践,更好地消化吸收所学知识。因此,相比传统的理论教学,案例教学这种教学方法更够满足当今社会对应用型人才的需求。
2.2教学方法的改革
当今社会团队协作能力是非常重要的,因此,改革教学方法最主要的一个途径就是实行小组教学。所谓小组教学就是很据自愿或者协商的原则,将全班学生平均划分成几个小组,由小组成员共同推选出一个成员作为组长。在课堂上,首先教师需要在对典型案例进行讲解的过程中穿插对Java语言的介绍,帮助学生更好地理解进而接受理论知识,并且深入了解Java语言面向对象的特性。然后教师通过为每个学习小组安排编程的任务来使学生对案例进行分析,并且分析讨论后每个小组都要确定出最终的解决方案,由教师来点评这些方案。为了能够使学生高效率的完成规定任务,教师要在分析讨论过程中对学生提出相应的技术要求及纪律要求,并设定一个恰当的完成期限。这种教学模式充分体现了学生学习的自主性,彰显了学生课堂的主体地位以及突出了教师协助引导的作用。小组教学的教学模式可以使学生进行不同的思想交流,擦出智慧的火花,正如萧伯纳所说“如果我有一个苹果,你有一个苹果,互相交换,还是你有一个苹果,我有一个苹果。但是我有一种想法,你有一种想法,交换一下,双方就都有了两种思想。”这就说明了通过小组交流,学生思维会更加活跃,从而产生更优的思想。通过小组教学,不仅可以提升学生对理论知识的认知度,培养团队合作的能力,还能够提升学生分析、处理、解决问题的能力。此外,在小组教学的过程中,教师能够迅速接收到来源于学生的反馈信息,比如反馈分析案例过程中遇到的问题等信息,通过这些反馈信息,教师能够及时的采取相应措施来解决问题,从而实现教学相长。
2.3考核方式的改革
对教学成果进行考核对无论是教还是学都能做出恰当的评价,目前我国高职院校中通常采取考核这一手段来对教学的效果进行检验。在传统的教学模式下,通常采取卷面考试来进行考核,而且最终结果往往是由一次考试的成绩来评定的,也就是说,无论学生平日里表现多好,但如果在作为最终考核的那次考试中发挥失常,那么就会在一定程度上否认这个学生的学习能力。而且这种考核方式并不能够对学生的能力、知识以及技能做到真实的反映。由此看来,为了能够对学生的学习做出恰当合理的评价,改革考核方式是非常有必要的。这就要求高职院校要制定一个科学的评价标准,重点突出对学生知识应用能力的培养。在对高职Java程序设计课程学习进行考核时,可以通过两个方面来展开考核工作,相应地,学生总成绩也由两部分组成,一部分是综合能力考核成绩,另一部分是平时课堂表现成绩。具体来讲,一方面,通过案例教学,教师要求每个小组在对案例分析完成之后,做出案例的分析报告,在此基础上,综合小组成员的意见和建议,为假定的任意一个应用领域或虚拟企业设计一个信息管理系统,然后模拟其运行环境,最后进行编码或者程序设计。总之,就是给予学生一个展示自我知识、技能、操作等综合能力的机会,这种考核方式能够使学生更加牢固、系统的掌握所学的理论知识,这方面的考核成绩占据较大的比重,在总成绩中通常占据60%的比例。另一方面,也就是占据总成绩40%的平时成绩,具体来讲,就是在平时教学过程中,教师要密切关注课堂小组讨论中每位学生的表现,并且加以记录,给出相应的分数。此外,在本门学科结束学习后,教师需要组织每个小组进行小组内成员间的彼此评价,相互打分。最后,教师通过对这两小部分的成绩进行综合的评定,给出每个学生最终的平时课堂表现成绩。
3总结
篇3
关键词遗传算法;TSP;交叉算子
1引言
遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。总的说来,遗传算法是按不依赖于问题本身的方式去求解问题。它的目标是搜索这个多维、高度非线性空间以找到具有最优适应值(即最小费用的)的点[1]。
基本遗传算法是一个迭代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子和变异算子作用于种群,最终可得到问题的最优解和近似最优解。
2遗传算法程序设计改进比较
2.1基本遗传算法对TSP问题解的影响
本文研究的遗传算法及改进算法的实现是以C++语言为基础,在Windows2000的版本上运行,其实现程序是在MicrosoftVisualStadio6.0上编写及运行调试的。
1)遗传算法的执行代码
m_Tsp.Initpop();//种群的初始化
for(inti=0;i<m_Tsp.ReturnPop();i++)
m_Tsp.calculatefitness(i);//计算各个个体的适应值
m_Tsp.statistics();//统计最优个体
while(entropy>decen||variance>decvar)//m_Tsp.m_gen<100)
{
//将新种群更迭为旧种群,并进行遗传操作
m_Tsp.alternate();//将新种群付给旧种群
m_Tsp.generation();//对旧种群进行遗传操作,产生新种群
m_Tsp.m_gen++;
m_Tsp.statistics();//对新产生的种群进行统计
}
2)简单的遗传算法与分支定界法对TSP问题求解结果的对比
遗传算法在解决NPC问题的领域内具有寻找最优解的能力。但随着城市个数的增加,已没有精确解,无法确定遗传算法求解的精度有多高。一般情况下,当迭代代数增大时,解的精度可能高,但是时间开销也会增大。因此可以通过改进遗传算法来提高搜索能力,提高解的精度。
2.2初始化时的启发信息对TSP问题解的影响
1)初始化启发信息
在上述实验算法的基础上,对每一个初始化的个体的每五个相邻城市用分支界定法寻找最优子路径,然后执行遗传算法。
2)遗传算法与含有启发信息的遗传算法求解结果的对比
当城市数增至20个时,用分支定界法已经不可能在可以接受的时间内得到精确的解了,只能通过近似算法获得其可接受的解。试验设计中算法的截止条件:固定迭代1000代。表2中的平均最优解为经过多次试验(10次以上)得到的最优解的平均值,最优解的出现时间为最优解出现的平均时间,交叉操作次数为最优解出现时交叉次数的平均值。
表220个城市的TSP问题求解结果数据
算法交叉操作
次数最优解
出现时间平均
最优解
简单遗传算法80244.479.4s1641.8
含初始化启发信息的GA79000.237.4s1398.9
从表2中可以看出,当初始种群时引入启发信息将提高遗传算法的寻优能力。同时缩短了遗传算法的寻优时间和问题的求解精度。
2.3交叉算子对TSP问题解的影响
1)循环贪心交叉算子的核心代码
for(i=1;i<m_Chrom;i++)
{
flag=0;
city=m_newpop[first].chrom[i-1];//确定当前城市
j=0;
while(flag==0&&j<4)
{
sign=adjcity[city][j];//adjcity数组的数据为当前城市按顺序排列的邻接城市
flag=judge(first,i,sign);//判断此邻接城市是否已经存在待形成的个体中
j++;
}
if(flag==0)//如果所有邻接城市皆在待扩展的个体中
{
while(flag==0)
{
sign=(int)rand()/(RAND_MAX/(m_Chrom-1));//随机选择一城市
flag=judge(first,i,sign);
}
}
if(flag==1)
m_newpop[first].chrom[i]=sign;
}
2)问题描述与结果比较
下面笔者用经典的测试遗传算法效率的OliverTSP问题来测试循环贪心交叉算子的解的精度和解效率。OliverTSP问题的30个城市位置坐标如表3所示[2]。
从表4、图1中可以看到,贪心交叉算子大大提高了遗传算法的寻优能力,同时也降低了交叉操作次数。在多次试验中,贪心交叉算子找到的最优解与目前记载的最佳数据的误差率为2.7%。而部分匹配交叉算子找到的最优解与目前记载的最佳数据的误差率高达7%。从而可以得到交叉算子对于遗传算法
2.4并行遗传算法消息传递实现的核心代码
1)主程序代码
//接收各个从程序的最优个体
for(i=0;i<slave;i++)
{
MPI_Recv(Rchrom[i],chrom,MPI_UNSIGNED,MPI_ANY_SOURCE,gen,MPI_COMM_WORLD,&status);
}
//计算接收各个从程序的最优个体的回路距离
for(i=0;i<slave;i++)
{
fitness[i]=0.0;
for(intj=0;j<chrom-1;j++)
fitness[i]=fitness[i]+distance[Rchrom[i][j]][Rchrom[i][j+1]];
fitness[i]=fitness[i]+distance[Rchrom[i][0]][Rchrom[i][chrom-1]];
}
//找到最优的个体并把它记录到文件里
for(i=0;i<slave;i++)
{
if(1/fitness[i]>min)
{
sign=i;
min=1/fitness[i];
}
}
fwrite(&gen,sizeof(int),1,out);
for(i=0;i<chrom;i++)
fwrite(&Rchrom[sign][i],sizeof(unsigned),1,out);
fwrite(&fitness[sign],sizeof(double),1,out);
//每九代向从程序发送一个最优个体
if(gen%9==0)
MPI_Bcast(Rchrom[sign],chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);
2)从程序代码
//将上一代的最优个体传回主程序
MPI_Send(Rchrom1,chrom,MPI_UNSIGNED,0,gen,MPI_COMM_WORLD);
//每九代接收一个最优个体并将其加入种群中替换掉最差个体
if(gen%9==0)
{
PI_Bcast(Rchrom2,chrom,MPI_UNSIGNED,0,MPI_COMM_WORLD);
Tsp.IndiAlternate(Rchrom2);
}
//进行下一代的计算
Tsp.Aternate();
Tsp.Generation();
Tsp.Statistics();
3)并行遗传算法的性能
笔者在MPI并行环境下,用C++语言实现了一个解决TSP问题的粗粒度模型的并行遗传算法。该程序采用的是主从式的MPI程序设计,通过从硬盘的文件中读取数据来设置染色体长度、种群的规模、交叉概率和变异概率等参数。试验环境为曙光TC1700机,测试的对象是OliverTSP问题的30个城市的TSP问题。
正如在测试串行遗传算法所提到的数据结果,并行遗传算法也没有达到目前所记录的最好解,但是它提高了算法的收敛性,并行遗传算法的收敛趋势如图2所示[4]。
图2遗传算法的收敛过程
3结束语
本文通过对基本遗传算法的不断改进,证明了添加启发信息、改进遗传算子和利用遗传算法固有的并行性都可以提高遗传算法的收敛性,其中对遗传算法交叉算子的改进可以大大提高遗传算法的寻优能力。
参考文献
[1]刘勇、康立山,陈毓屏著.非数值并行算法-遗传算法.北京:科学出版社1995.1
[2]IMOliverDJSmithandJRCHolland,Astudyofpermutationcrossoveroperatorsonthetravelingsalesman[C]//ProblemofthesecondInternationalConferenceonGeneticAlgorithmsandTheirApplication,Erlbaum1897:224-230
篇4
进行图形程序设计时,还须考虑视频接口的一个重要特性——虚拟终端功能,因为它允许控制几个独立的图形应用窗口,允许多个应用程序在同一个终端上进行切换。本文提供针对IBM标准终端对虚拟终端进行有效管理的手段。
微机UNIX直接视频图形程序设计有两种方法,一种是利用设备驱动程序(见参考文献1),另一种是针对IBM标准终端进行编程,本文介绍后者。
一、图形程序设计
1.检测视频适配器
视频显示器是由视频适配器硬件控制的,视频适配器决定了图形方式下显示图形的分辨率及可能的颜色[2]。利用系统调用ioctl中的CONS-CURRENT命令可以检测到当前的视频适配器,即:
ioctl(0,CONS-CURRENT,NULL)
返回-1时表示出错,即没有相应的视频适配器硬件,如果检测到VGA卡则返回值为VGA,如果检测到EGA卡则返回值为EGA,……。
2.初始化图形系统
初始化图形必须完成下列任务。
(1)获取当前的视频显示方式
ioctl的CONS-GET命令用来判断当前适配器的显示方式,即:
ioctl(0,CONS-GET,NULL)
它返回显示方式的值,这些值在包含文件vtkd.h中均有定义,如:SW-VAG640x480C为VGA适配器设置成640x480分辨率彩色图形模式。
(2)设置图形模式
直接将图形模式值放入ioctl中的命令项即可设置相应的图形模式,如ioctl(0,SW-VGA640x480C,NULL)
将VGA适配器设置成640x480分辨率的彩色图形模式。
(3)获取图形模式下视频缓冲区物理地址
利用ioctl的MAPCONS命令可以实现此功能,即:
char*scrnmem;
scrnmem=(char*)ioctl(0,MAPCONS,NULL)
所有实现基本图素的操作都将针对scrnmem进行,scrnmem就是EGA/VGA相应的四个位平面的重叠地址,有关EGA/VGA的结构可参阅[2]。
3.实现基本图素
DOS操作系统下,对EGA/VGA的各种视频I/O寄存器进行操作是很方便的,可以直接使用汇编语言in和out指令进行读写。然而,UNIX操作系统下,对物理硬件的访问都是由UNIX系统核心和设备驱动程序管理的,要访问EGA/VGA的各种I/O寄存器,必须获得对其访问的特权,为了实现这种功能要求,可以使用下列ioctl系统调用方式:
ioctl(0,VGA-IOPRIVL,1)获取VGA的各种I/O寄存器的访问特权
ioctl(0,EGA-IOPRIVL,1)获取EGA的各种I/O寄存器的访问特权
UNIX操作系统基本上是采用C语言编写的,只是在低层的系统内核方面才使用低级的汇编语言,遵循这一原则,对EGA/VGA的I/O寄存器的访问可以采用汇编语言,而实现图形系统的基本图素则采用C语言。
如果用户的UNIX系统中已有inb()和outb()函数(嵌入在/usr/include/sys/inline.h中),则可以直接使用它们完成对各种I/O寄存器的读写,否则,必须编写下列低级汇编语言例程:
/*向一端口输出一字节*/
/*从一端口输入一字节*/
voidoutb(intport,ucharvalue)
{
-asmpushedx
-asmmovedx,port
-asmmoval,value
-asmoutdx,al
-asmpopedx
}
ucharinb(intport)
{
-asmpushedx
-asmmovedx,port
-asminal,dx
-asmpopedx
}
基本图素一般包括:设置颜色,对调色板的操作,画点、线、弧、矩形、圆、椭圆、多边形、画扇形、饼图,任意图形填充,多边形填充,保存屏幕,恢复屏幕等,这些操作均可用C语言实现,细节问题可参阅[2]。
4.关闭图形系统
退出图形系统之前必须恢复EGA/VGA各I/O寄存器的值,并将显示模式恢复到进入图形模式之前的模式。采用下列ioctl调用实现:
ioctl(0,MODESWITCH|oldmode,NULL)
oldmode是进入图形方式之前获取的方式,UNIX系统中,获取的方式和设置的方式之间的关系为:
设置方式值=获取方式值|MODESWITCH
二、虚拟终端的使用
虚拟终端(VirtualTerminal,简称VT)加强了UNIX系统V/386的接口功能,它不仅允许单个用户开发一个图形应用软件,而且允许多用户、多道程序在同一个物理终端上运行,在开始一个用户的应用程序之前不必停止另一个应用程序,而且各个用户之间可以互相切换。
虚拟终端有两种操作方式[1],一种是自动操作方式(VT-AUTO),这是默认情况,比较简单,应用程序并不了解终端用户接受或放弃当前VT的请求,这意味着被切换掉的进程的任何输入输出都可能丢失。另一种方式是进程控制方式(VT-PROCESS),该方式支持应用程序与其它正在使用VT的进程之间同步,应用程序可以负责接受或放弃使用VT。
[1]中介绍了以进程方式控制VT的过程,并以设备驱动程序方式介绍了接受和放弃对VT控制的信号处理例程。本文给出针对IBM标准终端编制VT的程序和相应的信号处理例程。
/*设置虚拟终端*/
voidsetvirtualterm(void)
{
structvt-modevtmode;
signal(SIGUSR1,release-disp);//release-disp为放弃VT的信号处理例程
signal(SIGUSR2,acquire-disp);//acquire-disp为接受VT的信号处理例程
vtmode.mode=VT_PROCESS;//设置进程控制方式
vtmode.relsig=SIGUSR1;
vtmode.acqsig=SIGUSR2;
if(ioctl(0,VT-SETMODE,&vtmode)==-1)exit(1);//出错即终止此进程
}
/*放弃VT的信号处理例程*/
voidrelease-disp(void)
{
signal(SIGUSR1,release-disp);
保存整个图形屏幕于内部缓冲区videobuf中;
ioctl(0),MODESWITCH|oldmode,NULL);
//oldmode为进入图形模式之前的显示方式
ioctl(0,VT-RELDISP,VT-TRUE);
//VT-TRUE表明同意放弃VT,如果此项为0,则表示拒绝放弃VT.
}
/*接受VT的信号处理例程*/
voidacquire-disp(void)
{
signal(SIGUSR2,acquire-disp);
ioctl(0,newmode,NULL);//newmode为应用程序所处的图形模式
scrnmem=(char*)ioctl(0,MAPCONS,NULL);
//重新获取图形缓冲区的物理地址
从videobuf中恢复整个图形屏幕,并释放videobuf;
ioctl(0,VT-RELDISP,VT-ACKACQ);//VT-ACKACQ表明接受VT
}
在微机UNIX操作系统下,针对EGA/VGA进行直接视频程序设计,独立开发一个图形程序包,不仅小巧方便,而且可以重用以前在DOS下开发的图形应用程序。笔者在SCOUNIX系统下开发了一个小的低层图形软件包,许多以前的DOS图形应用程序都可以移植到UNIX系统下来。
另外,本文介绍的程序在使用前还应包含下列文件,即:
#include<stdio.h>
#include<sys/types.h>
#include<sys/console.h>
#include<sys/vtkd.h>
#include<termio.h>
#include<sys/signal.h>
分配空间时还应加上#include<malloc.h>
参考文献
篇5
1.算法思想。数学里的算法是极其重要的内容,是数学的组成部分,同时是计算机理论的核心,也是技术的核心。在社会发展过程中,人们的日常生活已经离不开计算机,它成为生活中的重要工具,如看电影、绘画、处理数据等,它所涉及的面非常广,和生活息息相关。计算机虽是生活过程中必不可少的工具,但它的工作情况是什么样呢?想要了解这个问题,就要先从算法来开始学习。算法能使逻辑思维能力提高,对有条理思考和表达的发展非常有利。在过去时间里,算法这个名词虽然没有出现,但这种算法思维已经渗透到数学教学过程中,例如,运算过程中的四则运算、求解方程等,这些步骤的完成都需要程序化的表达,这个过程也是算法思想的形成。
2.算法的构建。在处理一些问题时,一系列可操作的步骤需要设计,或者设计它的可算操作,来通过这些步骤进行解决问题,这种解决问题的方法就是通常指的算法。广义的算法:就是一种工作的方法和步骤,例如,歌曲的歌谱、洗衣机说明书等都是它们使用的算法。数学教学中的算法:数学中,把计算机解决问题过程中的程序认为是现代意义的“算法”。这种算法可以用计算机实现,对求解的方法也是统一、机械的,例如:解方程、作图问题、函数求值等的算法。
二、ARCS动机设计模式在高中数学程序设计教学中的应用
1.注意策略。在学生考虑到需要输入输出时,实际上他们就已经开始有了算法思维,只是很多学生在开始时不确定如何准确划分步骤。通过上述例证使学生了解算法解决问题的思路和步骤。
2.相关性策略。《孙子算经》中原文是:“今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?答曰:二十三。”对高中生来说,在问题提出后,即使有些同学的思路一开始出现了偏差,但是和实际情况对比之后基本都能猜出正确答案。因此,对自己判断与实际情况不一致的同学来说,他们就会更深一步地问自己:为什么不一样?哪里出现了问题?这有助于学生独立思考能力的培养。只有让学生自己发现错误、判断错误、解决错误,才能让学生真正地掌握相关知识,这也有助于提高学生的高阶思维能力。
3.信心策略。算法实例基本是必考题,每次的考试中都有或多或少地涉及一些。算法题出题方式灵活,可考查内容较多,是一个全面评估学生知识掌握程度的考题。教师在对学生进行考核时,要考虑到学生自身知识的掌握水平,从学生角度出发,循序渐进地增加难度,切忌一次考核过难,打击学生的自信心,降低学生的学习兴趣。案例:例1.通过求1+2+3+4+5中的一个算法。解:算法1用逐一相加的方法来进行。第一步:计算1+2,得数3;第二步:把第一步中所得结果3与3相加,计算得到6;第三步:将第二步中所得的运算结果6与4相加,计算得到10;第四步:将第三步中所得的结果10与5相加,计算得得到15.说明:①一个问题的算法肯定不是唯一。②若将本例题改为“求1+2+3+…+100的结果,给一个算法”,则以上第二算法和第三算法表达较为方便。对刚开始接触程序设计的学生来说,这类题型可以提高学生的自信心,使学生产生强烈的荣誉感。题目的难度是明确的,但实际解题思路并不复杂,却有多种解题方法,对解题思路明确后,其流程图绘制也就轻而易举了。给学生自信心,让学生感受自身的能力有助于提升学生的学习动力。
4.满意策略。以满意度策略为基础的数学课堂教学方式有很多,如多媒体教学、学生学习目标设定、多元化教学方式等。在教学中,本人根据学生各自情况,与学生进行沟通后为每人设定了相应的学习目标。每次测评之后并不以全班同学的成绩来评论学生的好坏,而是通过横向与纵向两方面相比,让学生全面了解自身当前学习状况。另外,数学课堂教学中,要重视学生的能动性,通过参与问题、解决问题的方式让学生充分表现自己。通过满意策略提高学生的学习动机。
三、总结
篇6
1城市设计的主要内容及其对计算机图形图像技术的要求
城市设计简要地说就是为人们设计聚居地的一种艺术,它是城市规划的重要组成部分。城市设计所关心的是建筑实体的视觉效果;人与场所的连接性;活动空间与舒适环境的创造;整个城市景观改善的进程。城市设计要为建筑物实体及其空间布局,为建筑形式构图及其与周围空间的三维关系,为获得美学与社会质量成就进行视景布置建立整体框架。
1.1城市设计内容的层次性。城市设计的基本内容分为宏观、中观、微观三个层次。
宏观层次:城镇分布与城市形象。城市设计的宏观层次包括在一定区域内的城镇分布;城乡一体化规划与景观设计;城市的格局与形态、功能组团、环境保护、基础设施、分区特色与舒适的环境、城市出入口、土地利用与活动场所等。城市设计的宏观层次内容与城镇体系规划相辅相成,不过城市设计更注重于城市的关键性特征与自然景观的构成;注重城市开发建设对自然景观、文化或社会经济资源的物质的和视觉质量的直接和间接影响。在对宏观层次的城市设计进行评价时,创造高质量的城市环境和优美的城乡视野成为重要准则。包括对自然山水景观的组织与利用,视觉特征物的适宜性和可视性,整体高度轮廓和体量的协调性,与传统景观的协调性等等。为应用ArcGIS对炎陵县的自然地理、人口分布、交通条件等进行综合分析作出的城镇布局。为应用ArcGIS对炎陵县重点发展地区的用地空间发展所作的规划。规划在宏观上充分考虑了炎陵县作为人文与生态旅游县的自然环境特色。
中观层次:建筑物与空间。中观层次城市设计内容包括用地布局、建筑设计、交叉口与广场、街道和路网格局、视线走廊、连接度与整体性、体量与高度、地标物、开敞空间和公园、人行道与步行系统的连接等等内容。中观层次城市设计内容与城市总体或分区规划相辅相成,不过城市设计主要关注开发建设对自然景观的物质和视觉质量的直接和间接影响;人工建造物的适宜性和视角的关系;对光和空气的穿透性影响;与步行道格局的协调性;与城市整体立面轮廓和体量的协调性;与地方传统的协调和对周围环境的影响等等。图3为应用ArcGIS对炎陵县城现状所作的全景鸟瞰。
微观层次:使用者环境。微观层次的城市设计内容包括建筑物的人的尺度、街道陈设、材质颜色和纹理、过渡的处理、广告和标志、街道景观等。微观层次的城市设计与详细规划设计相辅相成。在对微观层次城市设计进行评价时,自然方面主要关注功能上的适宜性。人造方面关注街道结构和功能的适宜性,创造好的步行环境,人的尺度和生活质量的提高,空间的创造等。图4为某中学新校园的大门,通过三维建模贴图生成。
1.2城市设计对信息技术的要求
从城市设计各层次的内容及评价原则来看,人与自然环境的协调,恰当的空间组织,悦目的视觉效果均是共同的追求。以往城市规划和建筑设计由于受到技术手段的限制,规划师和建筑师主要是通过二维图形加空间想象来构思和评价设计方案,仅在进行建筑单体设计或很小的群体设计中才应用三维效果图,或固定路径的动画来模拟建成后的空间关系和视觉效果。众所周知,传统的效果渲染需要耗费大量时间和占用大量计算机内存。因此多方案的交互式设计和实时动画根本不可能进行。
城市设计计算机视景仿真需要解决几个方面的问题。其一,处理数字高程模型,生成并修改三维地形,进行坡度、坡向、高程、填挖、淹没、视线视域分析。
其二,进行建筑密度、容积率、可达性、缓冲、选址可行性分析,用以评价社会经济与环境效果。以上两项是GIS的典型功能。其三,大面积多单体的快速三维建模,包括建筑物、构筑物、城市家俱、广告牌、树木、车辆、人物等。一般GIS只有二维拉伸功能,称为2.5维,不是真三维。而流行的3Dmax三维建模不胜任大量对象建模与实时浏览任务。其四,实时虚拟。要能快速地重绘画面,包括对场景对象、天光背景、动画路径、视点视角等的改变均能立即作出反应。从理论上说,以上四大问题可以在一个GIS平台或统一的VR系统中得到解决,不过目前这种平台还处在研发之中,但是我们可以借助GIS与VR综合集成来解决问题。
2一种基于GIS与VR的城市设计技术方案
2.1虚拟现实系统集成。无论是GIS还是VR,当前国内外均有多种商业软件可供选用。美国ESRI的ArcGIS是世界上最先进的地理信息系统,不过它的三维建模功能不强,且没有实时虚拟动画的功能。美国Multigen-Paradigm公司的Multigen-Vega是当前虚拟现实的旗舰软件,其强大的三维建模工具Creator和虚拟仿真引擎Vega有机结合能很好地满足虚拟城市实时动画要求,不过它不具备空间分析的功能。其它的GIS与VR软件大体也是如此。所幸的是,我们已经有了一个综合两个方面的优势来解决城市设计技术问题的方案。这就是ESRI公司委托Multigen-Paradigm公司开发了一个ArcGIS扩展模块SiteBiulder,该模块使得ArcGIS具备了实时动画功能并且能接受Multigen的三维模型。于是我们就有了一个基于GIS与VR的应用于城市设计的虚拟现实系统.
2.2系统应用步骤。该系统的完整的应用包括场景的规划设计、单体的建筑设计、三维建模并贴图、实时虚拟动画几部分内容
2.2.1城市规划设计。无论是新城区的开发还是老城区的改建均要先确定规划设计目标,提出社会、经济、环境方面的要求。根据要求,进行自然条件、建设条件等一系列的基础分析。在分析基础上完成土地利用、道路交通、建筑布局、竖向规划、工程设施等规划设计方案。值得注意的是,以往规划设计仅用CAD进行辅助设计。本系统强调应用ArcGIS技术辅助规划设计,原因有两个方面。其一,CAD不具备所要求的空间分析功能;其二,只有ArcGIS主题及主题中的特征(对象)才能被引入到SiteBiulder中进行实时动画。图5为应用ArcGIS制作的湖南城市学院新校区地势图,图6为新校园的一个规划模型。
2.2.2建筑设计。在规划布局的基础上,进行建筑设计方案。各单体设计成果仍以平、立、剖面图为主。为配合下阶段的Creator三维建模和纹理贴图,建筑师绘制的单体立面效果图很有用处。整幅有阴影的彩色立面图可以代替多块片的烦琐贴图,在三维场景中具有相当的立体效果。如有必要,某些单体可设计出多个,供虚拟替代方案优化所用。
2.2.3组织ArcGIS主题。在SiteBiulder三维场景中,各虚拟对象是以ArcGIS主题来组织并引入的。进入三维场景的主要是三维地形、道路、建筑、树木、铺地和草地。主题中的特征并不要表现对象的具体几何形状,而只要确定各对象的具置。例如用点主题表示建筑布局,每栋建筑物仅需要一个点来表示,每个点代表的建筑物的模型被存放在数据库中,完全相同的建筑物如住宅只须保存一个实例就行了。只要建立起点对象与建筑实例的关联,则不同的建筑物模型都会被引入场景中。
2.2.4创建三维模型。本虚拟系统采用MultiGen公司的Creator作为三维场景建模工具,它的Open-Flight采用树状层次结构来组织管理场景数据。
城市设计所涉及的场地中的模型包括天空、地面、单体建筑、构造物、树木、街道陈设物、广告牌等等,建模工作量巨大。因此在建立模型之前,应根据场景中每个实体的几何空间位置以及模型内部与模型之间的相互关系,确定虚拟场景中所有单体模型的层次归属,以有利于模型的修改、调用。三维模型并非越细越好。我们要在几何真实与纹理真实之间取得某种协调。适当地划分几何面和准备适当分辨率的图片是建筑虚拟的关键。
2.3.5创建虚拟动画场景。起动ArcGIS及其扩展模块SiteBiulder,将模型库中的各模型实例与主题中的各特征建立起联系,各虚拟对象将依各自的空间位置呈现在三维场景中。SiteBiul-der有一套自己的菜单和工具,完成实时动画。
3新建校园虚拟现实应用实例
篇7
为了弥补立法上过于粗简的缺陷,最高人民法院先后颁布了一系列司法解释对简易程序进行进一步规范,其中部分内容,如赋予双方当事人程序选择权、规定简易程序与普通程序的转换等,还在此次修订中正式写入《民事诉讼法》。上述司法解释对于立法的粗简起到了一定的弥补作用,在司法审判实践中发挥了巨大的作用。但是,司法解释囿于效力的限制,与《民事诉讼法》不在一个法律位阶,执行起来显得刚性不足,这就使得简易程序没有建立起相应的地位。适用标准抽象和不明确。我国现行《民事诉讼法》第一百五十七条用“事实清楚”、“权利义务关系明确”、“争议不大”三者结合起来界定适用简易程序的标准,这种规定存在着很明显的缺陷和逻辑错误。在司法实践中,何为简单民事案件,完全取决于法官的主观理解。程序设计未体现简便快捷。简便快捷是简易程序区别于普通程序的明显特点,也是其最大价值所在。目前,我国《民事诉讼法》在普通程序的基础上规定了简易程序,其大部分规定都参照普通程序的做法,只是少了合议庭组成,无合议庭笔录,对案件审理的部分环节进行了简化,其他环节与普通程序相比没有太大差异,并未体现简易程序应有的规律,远不能满足对简易民事案件审判的要求。
我国小额经济纠纷案件诉讼程序的构建
(一)立法模式的选择
综观世界各国各地区的小额诉讼立法,大致存在三种模式。第一种模式是在民事诉讼法典外单独设置小额诉讼程序,如美国各州都规定了专为小额法庭制定的诉讼程序,韩国为处理大量的小额案件专门制定了《小额审判法》。第二种模式是在民事诉讼法典中设置专门的章节来规定小额诉讼程序,如英国在其《民事诉讼规则》里专章规定了小额索赔审理制,日本在其《民事诉讼法》里第六编专编规定了“关于小额诉讼的特则”,我国台湾地区也在其《民事诉讼法》里对小额诉讼程序做出了特别规定。第三种模式是在民事诉讼法简易程序中对小额诉讼程序做出规定,如德国和法国的小额诉讼程序就是通过对简易程序的简化来实现的。笔者认为,结合世界小额诉讼的几种主要立法模式,并从我国国情和立法传统出发,我国可以在民事诉讼法典中的简易程序一章后设置专章来规定小额诉讼程序,从而使小额诉讼程序独立于普通程序和简易程序。
(二)适用范围的确定
对于小额诉讼程序的适用范围,我国应当采用世界各国的普遍做法,即以诉讼标的额的最高限额作为小额诉讼的适用标准。小额的标准直接与普通民众的消费规模和交易习惯相关,我国人均收入偏低且不同地区差别较大,甚至在同一个省、自治区、直辖市内的不同地区也有很大的差异,因此各地区不宜统一规定“一刀切”的标准。应根据中国各地的不同情况,在“各省、自治区、直辖市上年度就业人员年平均工资百分之三十以下”的基础上,各省级人民法院可以根据各自的经济发展水平在上述幅度内自行确定辖区内不同地区的标的额上限,最后报最高人民法院备案。同时,小额诉讼程序适用案件类型一方面限于给付之诉,另一方面给付请求不仅限于金钱,也可包括其他小额动产或有价证券,这样更符合小额诉讼程序的目的。
(三)地域管辖的特殊性
现行《民事诉讼法》对民事案件的管辖采取了“地域管辖”原则,第二十一条确定了“原告就被告”的管辖原则,第三十四条确定了“合意管辖”的原则。在小额经济纠纷中大量存在着消费者与商家或厂家的消费纠纷,而消费者与商家或厂家的经济地位悬殊,如果还是要求广大消费者统一到商家或厂家住所地或格式合同确定的法院,将可能给当事人带来更大的诉讼成本,进而影响当事人诉诸法院维护自身权利的积极性。因此,在小额诉讼程序中,应当确立原告所在地法院管辖这一原则,有助于保护经济上处于弱势地位的小额案件当事人的合法权利;而当双方当事人均为法人商人或均为自然人时,就不适用此项原则,而仍应依照通常的“原告就被告”与“合意管辖”原则。
(四)赋予当事人程序选择权
在民事诉讼领域,程序选择权主要是指在民事诉讼法规定的范围内,当事人有选择诉讼程序及其他程序事项的权利。与《民事诉讼法》当事人双方“约定”适用简易程序的规定不同,原告时,可以主动行使程序选择权,选择是否适用小额诉讼程序。如果原告选择适用小额诉讼程序,则被告享有了程序异议权。即如果被告就适用小额诉讼程序有异议,应当在答辩期内向法院提出异议申请,并说明理由,经法院审查,如果异议成立,应将案件转入简易程序或普通程序;如果被告在答辩期内没有提出异议,则视为默示同意选择小额诉讼程序。
(五)限制律师
小额诉讼因其标的额较小,诉讼成本有限,聘请律师必将大大增加当事人的诉讼成本,不符合小额诉讼设立的目的。可以在小额诉讼程序的立法中取消有关律师的规定,但针对当事人法律专业知识不足的情况,法官应更主动地介入诉讼、行使职权,而不像在普通程序和简易程序中那样消极。
我国小额经济纠纷案件诉讼程序的具体设置
(一)形式
当事人可以预约到法院。当事人可以口头,也可使用固定格式化状,这种状由法院提供,并且法院应预先印制各种常见状的样稿,供当事人参考填写。当事人口头的,法院应当记入笔录,由当事人签字确定。
(二)庭前准备工作
为了保证庭审的顺利进行,开庭前的准备工作是完全必要的,但不能把准备工作复杂化。关于开庭的各种通知和诉讼权利的告知,应以口头方式,并简化送达、签字等手续,避免小额诉讼程序复杂化。
(三)实行独任审判
通过对小额诉讼程序的域外考察可以看出,世界各国均规定了法官独任审理的制度。我国《民事诉讼法》第一百四十五条也规定:“简单的民事案件由审判员一人独任审理”,而小额诉讼程序审理的是较之更为简单的小额经济纠纷。因此,我国在构建小额诉讼诉程序时,也应当规定一审审理由审判员一人独任担当的制度。
(四)审理时间和审理期限
为了不影响当事人的正常工作,节约当事人的诉讼成本,可以将开庭时间安排在节假日或者夜间,由法官根据当事人双方的具体情况自行决定。在双方当事人一同到法院要求解决纠纷的情况下,则应当立即安排人员进行审理,争取当日审结。并且,按照我国简易程序所规定的3个月的审理期限,对于小额诉讼程序来说还嫌过长,可以规定在立案之日起30日内审结。
(五)调解前置
注重调解一直是我国民事审判的优良传统,在构建我国的小额诉讼程序时应当规定调解前置主义:即凡适用小额诉讼程序审理的案件,应当先行调解,鼓励双方当事人达成调解协议,及时化解矛盾,调解不成的才进入审判程序;并且,对于调解成功的案件,当事人只须缴纳二分之一的诉讼费用,以调动当事人的积极性,提高前置调解的成功率。
(六)简化证人作证
在小额诉讼程序中,证人未必都要出庭作证。可以允许证人将法官需要询问的事项提供证言,并在当地公证机关进行公证,或由法官在开庭阶段电话询问证人,而不必一定要求证人出庭作证。
(七)简化法庭调查和法庭辩论程序
在小额诉讼程序中,关于法庭调查和法庭辩论程序,有三种情形可以从简进行:第一,遇有双方当事人相互认可或无争议的事实及情节,法庭调查和法庭辩论完全可以从简进行,对事实、情节、证据不进行审理和调查,只将双方认可的情况记录在卷就可以了;第二,遇有双方当事人对案件事实、证据无争议,只是在举证责任的承担和法律的运用上有分歧的情形,法庭调查可以省略,而直接引导双方进行法庭辩论;第三,依小额诉讼程序审理的案件,法庭调查和法庭辩论不必机械地分开,完全可以灵活地交叉进行。
篇8
参考文献:
[1]郑莉.计算机入门语言讲什么[J].计算机教育,2006,7:25-26
[2]朱平.java程序设计教学[J].湖北教育学院学报,2006,23(2):46-48
[3]孙伟.“java程序设计”课程的教学改革与实践[J].计算机时代,2005,11:84-86
[4]张孝祥,Java就业培训教程.清华出版社.2006.9.
[5]印昊,JAVA与面向对象程序设计.高等教育出版社.2004.4.
参考文献:
[1]李红艳.科技情报系统安全体系结构研究[D].西安电子科技大学2010
[2]张自然.基于JAVA/CORBA的WWW分布式电子商务系统研究[D].华中师范大学2002
[3]陈俊.基于SNMP和JAVA的网络流量检测系统[D].武汉理工大学2005
[4]黄华毅.基于Java移动系统的主机安全问题解决方案[D].暨南大学2003
[5]任力伟.基于CORBA的WebSCADA系统架构[D].南京理工大学2004
[6]DANNYAYERS,JOHNBELL.JAVA数据库编程指南[M].北京:电子工业出版社,2002.
[7]郑莉.Java语言程序设计[M].北京:清华大学出版社,2006.
[8]魏海萍.标准Java2类库使用手册[M].北京:电子工业出版社,2005.
参考文献
[1]史宝会.“任务驱动”教学法的几点体会.信息教育技术,2005.
[2]刘凤艳.建构主义论——教学改革的理论基础.牡丹江师范学院学报(哲学社会科学版),2006.6.
[3]迟丽华主编.《Java程序设计教程》.清华大学社出版.
篇9
关键词:高职院校,程序设计,语言,教学方法
一、引言
近年来,随着科技的进步,各行业对计算机技术的应用越来越普及,为适应社会对高层次人才的需求,各高校也在非计算机专业加强了计算机知识的教学,在一些理工科专业中开设了计算机公共基础课程,并进一步提升了程序设计课程的重要性。另外,程序设计课程是高职高专院校计算机专业的专业基础课程之一,它不仅可以培养学生的编程能力,增强学生的逻辑思维能力,还是学生学习好后续专业课程的前提和保障。
为了将学生顺利地领进计算机程序设计语言的大门,为了培养和训练学生的逻辑思维能力和编程的实际动手能,为了取得较好的教学效果和提高教学质量。笔者通过近年来的教学经验,对程序设计课程教学中存在的实际问题做个分析、在教学思路与教学方法上提出一些建议。
二、教学中存在的问题
1、学习目标不明确,兴趣不浓,积极性不高
由于高职院校学生的入学成绩相对较低,学习基础和学习能力相对较差,对知识的渴望程度有限,在没有明确的学习目标指引下,很难学好一门课程。免费论文参考网。在教学中本人发现,有很多学生不清楚学习程序设计语言课程的重要性,认为程序语言设计课程与他未来的工作毫无关系;有些学生认为学习程序设计语言太枯燥,不如学习多媒体或网络的一些课程;有些学生是因为学习程序设计需要较强的逻辑思维能力和一定的数学、英语基础,因而在学习程序设计时显得力不从心,不能掌握应用计算机解题的基本思维方式,对计算机程序设计产生畏惧感,知难而退。
2、教学方式呆板,教学内容陈旧
在教学过程中,有许多教师仍在沿用传统的教学方法,偏重知识的传授,忽视能力的培养。课堂上往往只是知识的传授者、灌输者,以教师作为课堂的中心,以广大学生为讲授对象,教师一边讲解教学内容,一边进行演示,课堂气氛沉闷,师生间缺乏互动沟通,课堂上留给学生练习的时间偏少,忽视了学生的认知主体作用,无法激发学生的积极主动性,所有学生被迫按照老师的讲授速度进行学习,不利于培养思维能力与创造能力,多数理论停留在纸上谈兵的阶段。
教材内容陈旧、枯燥,脱离课程教学目的,脱离实际。有些教师往往把很大的精力甚至是主要精力放在程序设计语言的语法规则和语义上,不自觉地把“程序设计”课变成“程序语言”课,在考查方式上也常常是一张试卷决定该课程的成绩,导致了学生学习精力的偏移教材中的例题和习题大都是立足于程序语言本身的语法规则,与现实生活相差太远,致使部分学生觉得学习编程语言是一件枯燥的事。
3、过于注重理论学习而忽略了编程实践能力
在高职院校中,非计算机专业的程序设计语言课程的课时量往往很少,例如我校安排的理论课时和实践课时加起来总课时为64课时。在教学过程中,很多老师由于受到课时的限制,无法按照正常进度讲授完所需的课程知识,或者无法对知识进行详细展开讲解,只好占用上机时间讲授理论知识,导致学生过度重视课本上的理论细节的东西,忽略问题的整体结构,轻视实验课上的上机操作。
三、提高语言程序设计教学质量的几点思考
1、努力培养学生学习兴趣
对于计算机程序设计语言而言,由于许多学生在进入大学以前并未接触过它,所以,他们会认为计算机语言很深奥、很难学,导致对计算机语言的学习缺乏信心。教师应该采取适当的方式激发学生的积极性和自信心。
“兴趣是最好的老师”, 因为高职学生有基础较弱自律性不强的特点,所以在讲授语言程序设计课时更应该优先考虑如何调动学生的积极性,激发学生的学习兴趣,点燃他们的学习热情。所以在上课伊始应该向学生介绍作为 21世纪的大学生在计算机应用方面的要求,以及计算机应用对于他们今后就业的影响以及工作中的用途。另外,在刚进行计算机语言教学时,不易涉及难度大、不易理解的内容,要突出趣味性、易学性,降低学生对新事物的困难感。可在课堂上当场编写一些小程序、小游戏,并进行演示,以调动学生的兴趣和积极性。
2、采用灵活多变的教学方法
1)实例教学法
教师根据本节课的教学目标,确定本节课的教学目的,然后再精选具有一定代表性的、能涵盖本节课要讲的知识点的案例程序,通过对案例程序的简单讲解引出本节课要讲的语法知识,运用语法反过来分析程序的运行结果,根据程序的执行过程分析程序的功能,根据程序的功能反过来分析编程思路,理解了上述编程思路后,运用这种方法结合原程序结构再来完成一系列类似程序的编写。
下面以本人C语言课程中“for 语句”的教学过程为例,详细阐述一下运用实例教学法如何来实施课堂教学。
①根据本节课在教学大纲中的要求:熟练掌握for语句的使用,利用任务驱动的方式为本节课设定任务。(任务:求1-100之间所有的奇数和)
②精心选择案例程序。
③以案例程序引入本节课的for语句的语法知识,介绍for语句的一般形式,讲解for语句的执行过程。
④通过前面两项的讲解,将所学知识运用到案例中去,画出程序执行的实际过程,从而得出程序运行的结果。
⑤针对案例进行编程思路上的分析,让同学们真正地理解各变量及表达式在for语句中所起的作用,以便于他们今后独立编写程序。
2)比较归纳法
程序设计语言中有很多的定义、概念、语法规则,它们的使用灵活,功能强大,但是难以记忆。教师可以通过比较归纳的方法将这些概念、语法归类,使学生获得的零散知识系统化,对知识理解的更深刻,掌握得更牢固。
下面还是以本人C语言课程为例,在讲解完指针这一章后,及时归纳和总结指针的数据类型是至关重要的。学生们普遍反映这样一个问题,前面的章节学得挺明白的,一到了指针这一章就开始糊涂起来。而指针又是C语言的一个重要概念,也是 C语言的一个重要特色,如果不掌握指针就是没有掌握C的精华。免费论文参考网。所以在教学中一定要提醒学生,在学习本章内容时要多思考、多比较、多上机,应用的时候应十分小心。
3、突出上机实践的重要地位,加强操作环节教学指导
为了锻炼学生解决较大型复杂问题的能力,老师在安排实验课内容时,可以布置一个大题目作为长期任务,再按不同功能模块分解开来,形成一个个短期任务。每次实验课要求学生完成其中一个或几个简单的功能模块,这样,每次实验课就好像一条铁链上的一个个铁环,紧密联系。仅以VF语言课程教学中的“学生信息管理系统”为例,把这个系统作为一个长期任务,然后把这个系统划分为若干个小的模块。免费论文参考网。比如输入输出学生信息、添加学生信息、修改学生信息、查询学生信息等模块。这样,当学生完成每一个功能模块后,便发现原来自己实现的是一个复杂的程序。通过这种方法,一方面可以大大降低学生对大型复杂程序的惧怕心理,另一方面也可以培养学生结构化程序设计方法的思想。
四、结束语
程序设计语言课程作为高职院校学生的计算机基础课程,直接影响到学生的后续课程的学习以及未来就业中的实践能力,所以在为高职院校的学生讲授该课程时,一定要从内因和外因两方面进行深入研究学生的状况,合理利用教学环境中的各种教学资源,注重以兴趣为导向设计教学内容,并且采用有效的教学方法,这样就能够使该门课程的教学质量上一个台阶。
参考文献
[1] 谭浩强.C 程序设计[M] .北京:清华大学出版社, 2004.
[2] 杨延广.对高职程序设计课教学方法的研究与探讨.高教论坛,2006(2).
[3] 范新明.高校非计算机专业《程序设计基础》课程的教学模式研究与实践[J].电脑知识与技术,2009,5(20):5 462-5 463.
篇10
关键词:VB,程序设计,过程调用,参数传递
1 前言
VB程序设计是采用面向对象的可视化操作界面,功能强大,应用广泛,而相对于其他面向对象的编程语言,如VC,Delphi等容易学习掌握。在程序设计中,为了缩短程序运行的时间,也为了方便、简化程序设计,就需要建立相应的过程,建立过程的目的之一就是减少重复代码,将公共代码放入过程中,并由其他事件过程调用它,调用过程有诸多技巧,经常根据程序编写的需要,按功能将程序分解成若干个相对独立的部分,然后对每个部分进行程序编写测试,这样就把每一个部分称之为过程。免费论文。
在全国VB等级考试中,要求学生掌握的过程主要有事件过程,Sub过程和Function过程。在过程调用中,Sub过程与Function过程相似,它们都是用来完成特定功能的独立程序代码,它们由一组符合VB语法的语句组成,但它们不同的是,Function过程可以返回一个值给调用程序。但有一点需要特别注意,那就是Sub过程与Function过程必须在事件过程或其他过程中有调用它们,否则过程代码将永远不会被执行。在过程的调用中,由于二者参数传递的机制相同,为便于描述,本文就以Sub过程(即子过程)为例,对过程的定义、调用及参数传递进行分析和说明。
2 VB过程的调用与分析
在调用过程时,主调过程的实参以一定的形式传递给被调过程的形参,完成实参与形参的配对结合,然后执行被调用的过程体即语句块。经被调过程处理后,并可得到处理的结果,但如果被调过程为Function过程时,可将所得结果返回给主调过程。VB中,参数的传递有传值和传址(引用)两种形式。免费论文。
2.1子过程的定义与调用
自定义子过程的格式:
[Public | Private] [ Static]Sub子过程名([形参表列] )
局部变量和常量定义
<语句块>
[Exit Sub]
[语句块]
End Sub
其中形参表列的每个参数的形式:[ByVal](变量名[()] [As类型,]……)
形参表列中的参数称为形参或哑元,只能是变量或数组名,不能是常量、函数、表达式等。在过程定义时,参数有传值和传址两种定义形式,带ByVal定义的参数为值传递,用于接收过程调用时实参传递过来的值,否则为地址(引用)传递,用于接收过程调用时实参传递过来的地址。
子过程的调用格式:
(1) Call过程名( [实参表列] )
(2) 过程名[实参表列]
子过程的调用是一条独立的调用语句,有上述(1)、(2)两种调用格式。其中:“实参表列”中的参数称为实参,实参的个数、数据类型都要与被调用过程的形参一一对应,实参可以是同类型的常量、变量、数组、表达式等。
2.2传值方式(ByVal)
VB中的传值方式,实参与形参在内存中占用不同的内存单元,当调用一个过程时,系统把实参的值复制给形参,当执行被调用的过程时,实参与形参并断开联系,过程的调用也将结束,形参的任何操作和变化都不会影响到实参。传值方式是“单向”的,形参的值不能返回给实参。在教学中,通过总结给出了如下按传值方式(ByVal)对过程调用的分析方法。
例1:编写两个数相加的过程,执行程序并输出结果。
Option Explicit
Public Sub Add(ByValx As Integer, ByVal y As Integer)
x =x + y : Print “x=” ;x
End Sub
Private Sub Command1_Click()
Dim a AsInteger , b As Integer
a = 20: b = 15: Call Add(a, b): Print “a=”; a;“b=”;b
End Sub
程序运行后得到的结果为:x=35a=20 b=15,通过该方法能简洁明了地得到正确结果,x的值由两个数相加所得的结果,而a,b两个数的值没有变化,分析参数传递过程的情况如图1所示,由于采用传值方式,实参和形参在内存中占用不同的内存单元,当调用过程Add时,系统把实参a, b的值复制一份给形参x和y,便断开实参与形参的联系,执行Add过程中的语句块后,形参x的值进行了变化即为两个数的和,但它的变化并不影响实参a和b,当返回到主调过程时,形参所占的内存被释放。
2.3传址方式(ByRef)
传址方式也称引用方式,是VB默认的参数传递方式,当调用一个过程时,系统将实参的地址传递给形参,实参与形参在内存中占用相同的存储单元,即过程接受的是实参变量的地址。因此在被调过程中对形参的任何操作都变成了对相应实参的操作,实参的值会随着形参的变化而改变,这种传递是“双向”的。下面来分析一下传址方式(ByRef)的一般情况,即形参与实参均为简单类型的变量。免费论文。
当形参是传址方式的简单类型变量,实参是同类型的简单变量时,系统采用传址方式实现虚实结合。下面采用传址方式,改编例1的程序,分析能否改变a,b的值。Add子过程修改如下,其主调过程与传值方式的主调过程相同。
Public Sub Add(ByRefx As Integer, ByRef y As Integer)
x =x + y : Print “x=” ;x
End Sub
执行程序,运行结果为:x=35 a=35 b=15。分析参数传递过程如图2所示,由于采用传址方式,实参和形参在内存中占用同一存储单元,当调用过程Add时,系统把实参a, b的地址分别传递给形参x和y,使得x与a是同一存储单元,y与b也是同一存储单元,在这种情况下可以把x与a看成是同一个变量,y与b也可看成是同一个变量,执行Add过程中的语句块后,形参x的值进行了改变,等同于实参a的值也进行了变化,调用结束后,返回主调过程,这样也就改变了a的值,由于y的值没有变化,所以b的值也就没有改变。