程序设计十篇

时间:2023-04-10 02:35:36

程序设计

程序设计篇1

【关键词】界面设计 代码设计 算法

1 引言

程序设计不仅是一门科学而且是一门艺术,它有较强的创造性和灵活性,也是学生较难掌握的技能。一方面程序设计本身枯燥、严谨,难以理解,另一方面更主要的是教师在组织程序设计教学中缺乏针对性,没充分考虑学生的知识水平、认知规律、学习特点和接受能力。

Visual Basic,是一种面向对象的程序设计语言,编写应用程序快捷高效,是职中计算机专业的必修科目。在这门课的教学实践中,我紧紧抓住界面设计和程序代码设计两大环节,打破教材原有以知识的逻辑结构体系为顺序组织课堂教学的方式,以教授程序设计的基本方法为主线,从具体问题入手,由浅入深,由简及繁,循序渐进,介绍解决问题的方法,最后引出概念和结论,取得良好教学效果。

2 界面设计

在面向对象程序设计语言教学中,界面设计是一项很重要的工作,程序是否简便易用,与界面的质量有很大关系,而界面中的对象属性会影响对象的外观及功能,因此,对象的属性设置在界面设计教学中要重点加以训练。我设计了如下的界面,让学生和我一起完成。

题目要求任意输入两数,求这两数的和(或差、或积、或商),实际是完成一个简单的计算器。

2.1 建立应用程序界面

(1)启动 VB。

(2)加入两个文本框。

(3)加入四个运算按钮。

(4)加入两个标签框。

在界面设计教学中,学生通过自己的实际操作,很容易就掌握了如何在界面内添加对象,如何改变对象位置,以及如何设置对象的属性。通过几次针对性的练习,学生对属性的设置不会有太大问题。

2.2 设置各控件的属性

如表1。

2.3 编写代码

当程序运行后整个系统处于相对“静止”,等待输入,当输入数据后,单击四个按钮中的任一个时,则引发Label2的Caption属性变化,由原来的内容改为两文本框中内容的和(或差、或积、或商),因此,必须在四个按钮中的Click(单击)事件中加入适当的代码,使Label2的Caption发生变化。

编写“+”代码的操作方法:

(1)双击“+”按钮。

(2)在Command1_Click()过程中加入以下一行代码。

Private Sub Command1_Click()

Label2.Caption = Val(Text1.Text) + Val(Text2.Text)

End Sub

通过此例,很容易便可掌握属性值在代码中的设置。其它按钮控件仿照以上方法,让学生自行完成。

3 程序代码设计

程序设计主要学习的是编程本身的思想,学习的效果不能马上看到,但是可以学到扎实的基本功,如强化逻辑分析和建立数学模型的能力;数据结构和算法知识;丰富的实践经验。针对客观实际,我在VB教学中采取了以下几个措施。

3.1 密切联系实际,激发学生学习兴趣

职中学生相当一部分文化基础差,对概念理解力差,发现问题与解决问题的能力较低,对学习兴趣不高,课堂注意力容易分散,知识掌握不牢固。因此在程序设计教学中我放低教学起点,降低教学难度,培养他们的学习兴趣,让他们学得轻松,学有所获,感受成功。

3.2 编程教学中淡化语句教学,注重算法教学,贯彻结构化程序设计思想

程序的长短、变量的多少不是判断一个程序好环的标准,算法的清晰易懂才是最主要的。同时要强调VB面向对象的结构化程序设计思想,如下例,“给100个整数,打印输出其中的素数”结合算法将一个大任务分解成若干“功能模块”。

3.3 从不同角度看同一问题,把握问题实质

程序设计可以通过不同的算法、语句设计出不同的程序而解决同一个问题。一个程序的好坏关键在于这个程序是否简洁明确、结构清晰和高效率。可把解决同一问题的A程序、B程序或C程序的不同地方加以分析和归类,向学生展示讲解,从而加深学生印象。如在讲授循环结构时,同一例题就可用DO、While…Wend、Do…While、Do…Until、For…Next五种语句来实现。可以适当的加以提示,鼓励学生用不同的语句来设计程序解决问题。最后给予总结和提炼,明确哪种方法简洁、易读,哪种方法运行速度快,哪种方法灵活。

总之,教学有法,教无定法,只要教学得法。如何培养学生学习兴趣,改进教学方法,使学生得到发展是我们长期而艰巨的任务,围绕着这个任务,在保护学生学习积极性的前提下,按照学生的认知规律组织教学,一切可行的教学方法都可在我们的教学过程中加以运用。

参考文献

[1]朱海红.程序设计的教学要讲究方法[J].新课程导学,2011.

[2]申然.我在进行VB程序设计教学过程中的几点尝试[J].文教资料,2006.

作者简介

谢翠芬(1976-),女,广东省佛山市人。现为佛山市华材职业技术学校计算机中学一级教师,主要从事计算机科学教育改革研究。

程序设计篇2

在计算机领域中,设计是指建立计算机程序,包括算法的步骤和数据表示,以满足特定的要求。在设计过程中,人们会因为解决了一项明确的计算任务而获得兴奋感,也会因必须注意一些细节、服从诸多限制和反复试验而感到沮丧。应运而生的系统化程序设计方法,可以帮助开发人员确保程序的正确性和性能,同时降低开发成本。所谓系统化设计是指将问题一步一步描述成理想的效果,其本质是再现、自动化并加快创造与开发过程,其中:理解、部署和演化的程序注重规范的清晰度,程序验证、使用和生存周期注重实施效率。系统化设计方法可以让我们从繁琐且易错的环节中解放,避免重复工作,致力于真正创造性工作。本书在之前很多重要的研究者的研究工作中开发出了一种统一系统化的程序设计方法。

全书由7章组成:1.引言。提出了在计算机程序设计、算法设计和解决一般问题时采用清晰且有效的系统化设计方法的必要性,并提出了所面临的挑战,介绍了一种基于增量方法:迭代、增量与实施,解释了支持对于给定问题的清晰的规范的语言的必要性和成本模型,给出了全书中使用的术语和符号;2.循环:增量。阐释了基于增量的方法中的核心步骤:增量,介绍了循环中的基本语法和数组结构,以及如何实现相对循环增量保持不变增量原理,给出了在硬件中二进制整数开根号算法与图像处理中增量模型中的应用,讨论了数据、控制抽象的必要性;3.集合:增量与实现。介绍了为解决数据抽象的增量与实施中的集合表达式,说明了涉及定点运算时,迭代将运算转换为循环的工作原理及过程,增量步骤将大的集合表达式转化为组和增量维护代码,降低了运行时间,实施中则关注设计链接数据结构,给出了访问控制和查询优化实例,讨论了递归中控制抽象的必要性;4.递归:迭代与增量。研究了将迭代后的增量应用递归优化,介绍了递归函数应用范围广泛但效率较低的特点,阐述了在迭代中确定最低增量和转化递归函数为迭代过程,在增量中产生增量函数和达到动态规划,以及实施过程中,使用链接与索引数据结构,给出了在组合优化及在数学中的问题实例;5.规则:迭代、增量与实现。提出了两个示例应用程序:程序分析和信任管理,讨论了在构建大型应用程序进行模块抽象的必要性;6.对象:跨模块抽象增量。介绍了在大规模应用中的模块抽象规范与实现,讨论了在应用模块时产生的清晰度与效率的冲突及解决办法,介绍了电子健康记录数据库与机器人游戏中的应用实例;7.结论。对增量模型进行了深层次研究,介绍了三种排序例子的思想,以及建立并打破抽象的程序设计需求,讨论了该方法在实现和实验中的问题,并指出了该方法的局限性和未来的研究方向。

本书在每一章后均给出了问题相关的历史工作和文献注释,使读者对正文中提到的某些问题有较为全面的认识。在本书的最后,列出了所有参考文献,为读者研究书中提到的方法及问题提供系统的参考。

本书适合从事计算机科学、编程语言和软件设计和应用逻辑研究的高年级本科生及一年级硕士研究生阅读和参考,适用于自学与课堂讲授。对于有一些计算机科学背景知识的读者及有经验的计算机科学研究人员和从业人员,本书也将提供很有用的帮助。

张进兴,硕士研究生

程序设计篇3

一、前言

Windows提供强大的功能以及友好的图形用户界面(GUI),使得它不仅广泛的用作管理事务型工作的支持平台,也被工业领域的工程人员所关注。但Windows3.1并非基于优先级来调度任务,无法立即响应外部事件中断,也就不能满足工业应用环境中实时事件处理和实时控制应用的要求。因此,如何在Windows环境中处理外部实时事件一直是技术人员尤其是实时领域工程人员所关注的问题。目前已有的方法大都采用内挂实时多任务内核的方式,如Windows下的实时控制软件包FLX等,而iRMX实时操作系统则把Windows3.1当作它的一个任务来运行。对于大型的工程项目,开发人员可采用购买实时软件然后集成方式。

对中小项目,从投资上考虑就不很经济。如何寻找一种简明的方法来处理外部实时事件依然显得很必要。

本文首先阐述Windwos的消息机制及中断机制,然后结合DPMI接口,给出一种保护模式下中断程序的设计方法,以处理外部实时事件。经实际运行结果表明,该方法具有简洁、实用、可靠的特点,并同样可运行于Win95。

二、Windows的消息机制

Windows是一消息驱动式系统,见图1。Windows消息提供了应用程序与应用程序之间、应用程序与Windows系统之间进行通讯的手段。应用程序要实现的功能由消息来触发,并靠对消息的响应和处理来完成。

Windows系统中有两种消息队列,一种是系统消息队列,另一种是应用程序消息队列。计算机的所有输入设备由Windows监控,当一个事件发生时,Windows先将输入的消息放入系统消息队列中,然后再将输入的消息拷贝到相应的应用程序队列中。应用程序中的消息循环从它的消息队列中检索每一个消息并发送给相应的窗口函数中。一个事件的发生,到达处理它的窗口函数必需经历上述过程。值得注意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),这就使得一些外部实时事件可能得不到及时的处理。

图1

三、Windows的保护模式及中断机制

1.Windows的保护模式

保护模式指的是线性地址由一个选择符间接生成的,该选择符指向描述表中的某一项;而实模式中则通过一个段/偏移量对来直接寻址。80386(486)CPU提供的保护模式能力包括一个64K的虚拟地址空间和一个4G的段尺寸。Windows3.1实现时有所差别,它支持标准模式和增强模式。标准模式针对286机器,不属本文探讨范围。增强模式是对386以上CPU而言,Windows正是使用保护模式来打破1M的屏障并且执行简单的内存保护。它使用选择器、描述器和描述器表控制访问指定内存的位置和段。描述器表包括全局描述器表、局部描述器表、中断描述器表。保护模式与实模式有许多不同。其中显著的差异是访问内存的机制不同。

2.中断机制

(1)实模式中断

为了便于理解,我们先回顾实模式中断。

在实模式下,中断向量表IVT起到相当重要的作用。无论来自外部硬件的中断或是内部的软中断INTn,在CPU中都产生同样的响应。

①CPU将当前的指令指针寄存器(IP)、代码段寄存器(CS)、标志寄存器压入堆栈。

②然后CPU使用n值作为指向中断向量表IVT的索引,在IVT中找出服务例程的远地址。

③CPU将此远地址装入CS:IP寄存器中,并开始执行服务例程。

④中断例程总以IRET指令结束。此指令使存在堆栈中的三个值弹出并填入CS、IP和标志寄存器,CPU继续执行原来的指令。

(2)保护模式中断

保护模式中断过程与实模式中断过程类似,但它不再使用中断向量表IVT,而使用中断描述符表(IDT)。值得一提的是,Windows运行时IVT还存在,应用程序并不使用它,Windows仍然使用,但含义已不同。

①IVT结构:IVT在RAM的0000∶0000之上,占据开始的1024字节。

它仍然由BIOS启动例程设置,由DOS填充到RAM中。

②IDT中断描述符表:保护模式下,Windows操作系统为实现中断机制而建立的一个特殊表,即中断描述符表IDT。该表被用来保存中断服务例程的线性地址,它们是真正的24位或32位地址,没有段:偏移值结构。中断描述器表最多可含有256个例程说明,详细说明请见【3】。I

DT结构见图2。

图2

③当中断或异常发生时,处理过程与实模式类同。当前的CS∶IP值和标志寄存器值被存储。保存的内容还包括CPU其他内部寄存器的值,以及目前正在被执行的任务的有关信息(若必须发生任务切换的话)。CPU设法获取中断向量后,以它为索引值,查找IDT中的服务例程远地址,接着将控制转移到该处的服务例程。这是与实模式转移到IVT的不同所在。保护模式使用IDTR寄存器分配和定位内存中的IDT中断描述符表。IDT在内存中是可移动的,与IVT固定在内存中刚好相反。IDT中断描述符表在Windows中起决定性的作用。理解了Windows下保护模

式的中断机制。有助于我们理解中断服务程序的设计,它的关键就在于如何将服务例程的地址放入IDT中断描述符表中。当中断发生时,如何将断点地址及CPU各寄存器值保护起来;中断结束时,如何将保护的值恢复。Windows系统本身并不提供实现上述功能的API,而DOS保护模式接口DPMI正具备了上述的功能。

下面我们首先介绍DPMI接口,然后基于它实现Windows下中断服务程序的设计。

四、DOS保护模式接口DPMI

Windows除了标准服务外,还支持一组特殊的DOS服务,称为DOS保护模式接口DPMI,由一些INT2FH和INT31H服务组成。它使应用程序能够访问PC系列计算机的扩充内存,同时维护系统的保护功能。DPMI通过软件中断31h来定义了一个新的接口,使得保护模式的应用程序能够用它作分配内存,修改描述符以及调用实模式软件等工作。

Windows为应用程序提供DPMI服务。即Windows是DPMI的宿主(host),应用程序是DPMI的客户(client),可通过INT-31H调用得到DPMI服务。INT-31H本身提供多功能。其中它的中断管理服务允许保护模式用于拦截实模式中断,并且挂住处理器异常。有些服务能够和DPMI宿主合作,以维护应用程序的虚拟中断标志。

可以用INT31H来挂住保护模式中断向量,以中断方式处理外部实时事件。利用INT31H,功能0205H:设置保护模式中断向量,将特定中断的保护模式处理程序的地址置入中断向量里。调用方式:AX=0205H,BL=中断号,CX∶(E)DX=中断处理程序选择符:偏移值。返回:执行成功CF=清零,执行失败CF=置位。

挂住/解挂中断向量的时机很重要。主窗口第一次被创建时会传送它WM-CREATE消息,这时是挂住中断向量的最好时机。退出时需解挂向量,否则Windows可能崩溃。主窗口接收到WM-DE-STROY之后进行解挂工作,是最适合的。解挂向量可先用INT35H,0204H功能将老的中断向量保存,退出时用INT35H,0205H恢复。

五、编程实现

有了DPMI的支持,我们就可以很方便地处理数据采集、串行通信等工业过程中的实时事件。下面以Windows3.1平台下中断方式实现的串行通信为例,说明中断程序的编制和实现。为便于参考,给出了详细的代码。开发平台BC3.1/BC4.5,其本身支持0.9版的DPMI,无需运行其它支持DPMI的软件。编程语言C,可与C++混合编译。

初始化COM1,9600波特率,每字符8bits,1个停止位,中断接收,查询发送。

//windowsasycommunication

//byLiXiuming

//lastmodifiedonJune25,1996

#include〈windows.h〉

#include〈dos.h〉

voidinterruptfarDataReceive();

voidinterruptfar(*old-vector)();

unsignedchardatacom-r[1024],datacom-s[1024];

intinflag=0;

unsignedints8259;

intInitCom1()

{//串口1初使化

s8259=inportb(0x21);//读入8259当前状态并保存

outportb(0x21,s8259&0xe8);//初始化8259,允许0x0c号中断

outportb(0x3fb,0x83);

outportb(0x3f8,0x0c);

outportb(0x3f9,0x00);

outportb(0x3fb,0x03);

outportb(0x3fc,0x08);//允许中断信号送到8259A,以便能中断

outportb(0x3f9,0x01);//0x01,中断允许

return1;

}

voidinterruptfarDataReceive()

{//中断接收子程序

staticinti=0;//静态局部变量

charrechar=0;//每中断一次,i自动加1

rechar=inportb(0x3f8);//从数据口读出发送过来的数据

if(inflag==0)

{

if(rechar!=s&&i==0)//帧起始

{

i=0;

gotoll;

}

datacom-r[i++]=rechar;//存入datacom-r[](通信缓冲区)

if(rechar==e)//帧结束

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20);//回送中断结束标志

}

//调用DPMI

//保存旧的0CH号保护模式中断向量

//设置新的保护模式中断服务例程

voidInitCom(void)

{

asm{

cli

movax,204h

movbl,0ch

int31h

sti

}

old-vector=MK-FP(-CX,-DX);//保存

asm{cli//设置新的0x0c中断服务例程

movax,205h

movbl,0ch

movcx,segdatareceive

movdx,offsetdatareceive

int31h

sti

}

InitCom1();

}

//恢复8259状态

//恢复0CH保护模式向量

voidRestoreComm(void)

{

outportb(0x21,s8259);

asm{

cli

movax,205h

movbl,0ch

movcx,segold-vector

movdx,offsetold-vector

int31h

sti

}

}

在窗口第一次被创建时会传送它WM-CREATE消息,这时调用InitCom()即可。在主窗口关闭时,即主窗口中收到WM-DESTROY消息时,调用RestoreComm()恢复原来的状态。

程序设计篇4

一、教学评价实施原则

1.评价针对专业特点教学评价要直接针对专业特点,不同的学科有不同的教学观察点。计算机程序设计类课程要注重学生在真实环境中编程能力的提升。对学生学习情况的检查,来衡量教师教学的有效性,真正做到“以学评教”。对教师的教学评价应注重教师课前资料的准备,如有没有做好相应的课件;上课时的语言能否把程序讲的简明、可理解,能否激发学生探索的兴趣;课后对学生作业的辅导能否使学生更深刻地理解程序设计的精妙之处。评价表要根据专业和课程特点,进行分类编制。计算机程序设计类课程基础理论知识丰富,实验操作性强。所以评价表首先可以在学校层面制定出教学评价的总方针,然后各专业再根据自身特点,编制出符合教学实际的评价表。评价的周期不必是固定的一学期一次,可以根据教学实际情况来定。2.评价注重学生发展教学评价应更注重学生在教学活动过程中的体验、感受和成就,致力于学生对计算机程序设计类课程的良好学习习惯和逻辑思维能力的养成,提高在真实编程环境中的创造力。从教学的核心目标来看,真正重要的是通过教学的过程能够使学生整体的素养得到提高。从知识和技能目标来讲,学生通过学习计算机程序设计类课程,掌握学科理论知识和程序设计技能;从情感目标来讲,激发学生学习计算机程序设计类课程的兴趣和愿望;从发展目标来讲,使学生在学习计算机程序设计类课程过程中,培养了独立性和创造性,能将课程原理应用于相同的问题情境之中。具体的做法是可以在评价的过程中设计像“教学过程能使你提高程序设计分析能力吗?”“教学活动过程能激起你的程序设计创造灵感吗?”这些重在关注学生通过完成程序设计类课程的发展性问题。3.评价分类职称类别教学评价也要考虑教师的职称类别,助理讲师、讲师、高级讲师所具有的授课经验、资源积累、知识处理能力都是不同的。对于助理讲师,注重其教学基本功,传授的知识是否准确,讲授的内容难度是否适宜就可以了;对于讲师,注重其教学方法的灵活性和多样性,教学内容的系统性,对学生创新能力的培养;对于高级讲师,关注其教学中独到的学术见解,对传授知识的适时,介绍学科前沿理论及发展趋势等等。

二、教学评价实施方法

1.电子评教,及时反馈取消纸质的教学评价方式,无论是学生问卷调查表,还是教师教学评价表,一律改为Excel电子表,借助Excel强大的计算功能很快可以统计出各种需要的数据。这样不但可以保证各种数据的准确性,还使得教师从繁重的数据统计工作中解放出来,可以有更多的精力投入到教学工作中去。使用计算机程序设计课的实验室电脑,每一个实验项目结束都可以立即进行电子评教,教师第一时间得到学生的信息反馈,有助于及时调整教学思路,做出重难点疑问解答,有效提高了教学质量。2.师生交流,共同探究在教学评价过程中,除了让学生填写冷冰冰的表格之外,还可召开师生座谈会。召开座谈会,与教师面对面的交流,学生就会很愿意就程序设计类的问题向教师提问,并谈谈自己的想法进而说出肺腑之言。在教育中,师生之间的交流合作,人际交往,思想碰撞,是促进学生发展和专业成熟的重要因素。3.同行观察,专家指导在教学活动过程中,学校可以通过开设公开课等方式,让同专业的教师可以相互听课,并且可以询问被评教师课前准备、教学思路、课后学生作业布置等与教学活动相关的一系列情况。同行评价能调动教师参与教学评价的积极性,发挥优秀教师的教学特长及其辐射作用,消除教师之间的隔离感,促进全体教师的专业发展。除了同行观察,学校还可以请同专业的专家来指导教师教学活动过程。专家可以是企业的程序设计人员,从当今程序设计的新思路、新软件进行指导;也可以是教研室的相关老师,从教学的新改革、新方法进行指导。四、总结为了满足时代的发展,适应社会的需求,教学评价应遵循评价范围主体多元、针对专业特点、注重学生发展、分类职称类别的原则,并且应用电子评教、师生交流、同行观察、专家指导的方法,以教学评价提高教学质量,全面提高学生对计算机程序设计类课程的兴趣,激发其专业创造性。

作者:周颖 单位:江苏省吴中中等专业学校

程序设计篇5

关键词:Visual Basic;Excel;数据表;打印

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)09-11669-04

The VB Program Design: Universal Procedure to Print Report

ZHENG Xiao-hong

(From the Computer Science Department of Beijing Dongcheng Audlt College, Beijing 100020, China)

Abstract: This article will introduce, using the Visual Basic operation Microsost Excel in a application writen Visual Basic, how to print the dissimilar structure and diferen title reports with a procedure that takes a recordset parameter and a string type parameter. The procedure overcame the limit of function of the Visual Basic report design; solved the problem to print the different structure recordsets which were produce in a routine; unified and simplified the methos to design and print reports to each kind of different structure in a application writen Visual Basic.

Key words: Visual Basic; Excel; Print Report

1 Visual Basic系统中报表功能的局现限

尽管Visual Basic系统中提供了设计打印报表功能,但是,需要对各种结构不同的数据表分别去设计,这是一项繁琐的工作,并且要在程序设计阶段确定数据表的结构。然而,在信息管理系统中,常常需要程序运行中,根据用户输入条件而生成各种结构不同的记录集,对于这种程序运行中生成的记录集,在程序设计时往往不能确定表的结构,要打印输出这种动态表,Visual Basic中的报表设计功能是无能为力的。

2 Visual Basic数据表通用打印程序

本人在信息管理系统开发应用中,利用VB操作Excel,设计一个带参数的过程,实现对各种结构不同的数据表的打印输出,使得对各类不同结构数据表的设计及打印统一并简化为对通用打印过程的一次调用,大大提高了VB程序设计中报表设计和打印的效率。

2.1 通用报表打印过程的参数

在标准模块中声明Public报表打印过程,过程的头如下面语句所示:

Public Sub TablePrint(rs As ADODB.Recordset, Title As String)

其中TablePrint为过程名,参数rs是ADO记录集对象,参数Title是字符串变量,这两个参数分别将要打印报表对应的记录集和报表标题带入到打印过程,在打印过程中从这两个参变量中获取并输出要打印报表的标题、结构及数据。

2.2 在Visual Basic中引用和创建外部Excel对象

在VB中操作Excel,首先要添加引用“Microsof Excel Object Library”。在设置引用Excel对象之后,在过程中声明Excel应用程序对象、工作簿对象并创建相关对象实例。下面语句依次声明了Excel应用程序对象xlapp、工作簿对象xlbook。

Dim xlapp As Excel.Application

Dim xlbook As Excel.Workbook

下面语句依次创建Excel应用程序对象实例、新工作簿文件实例及选择工作表sheet1。

Set xlapp = CreateObject("excel.application")

Set xlbook = xlapp.Workbooks.Add

xlapp.Sheets(1).Select

2.3 由记录集的字段名建立表的列标题

将记录集输出为数据表,首先要建立数据表的列标题,本程序通过一个循环语句将记录集的字段名即表的列标题依次写入当前选定的工作表Sheet1的第1行。

For i = 0 Tors.FieldsCount-1

xlapp.Cells(1, i+1) = rs.Fields(i).Name

Next i

2.4 将记录集中的数据写入工作表

下面语句通过一个嵌套的循环将记录集中的记录数据依次写入工作表。

rs.MoveFirst

For j = 1 To rs.RecordCount

For i = 0 To rs.Fields.Count-1

xlapp.Cells(j+1, i+1) = rs.Fields(i).Value

Next i

rs.MoveNext

Next j

2.5 记录工作表的数据区域

为了使程序能自动将数据表完整打印,程序必须记录Excel工作表中的数据区域,下面语句分别获取表格数据区域的最右列列号及右下角单元格地址,存入变量ec及ec1中。

ec = Chr(65 + rs.Fields.Count -1)

ecl = ec & rs.RecordCount + 1

2.6 设置数据表的列宽及文字格式

在打印数据表之前,需要设置工作表的格式。

Excel工作表中的“Columns”对象的“AutoFit”方法,可实现工作表自动调整列宽为最适合的列宽。

xlapp.Worksheets(1).Columns("A:" & ec).AutoFit

在选定工作表的数据区后,利用Excel工作表的相关属性设置选定区域的字体、字号及文字对齐方式。

xlapp.Range("a1", ecl).Select

With xlapp.Selection

.Font.Name = "宋体"

.Font.Size = 10

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

End With

2.7 设置数据表的打印格式及打印输出

在打印数据表之前,打印格式的设置是必不可少的。用With xlapp.ActiveSheet.PageSetup……End With括起来的下面一组语句实现了对数据表的打印设置。

设置打印区域、页眉中打印数据表标题和打印日期、页脚中打印页码和页数

.PrintArea = "a1:" & ecl

.CenterHeader = Title & " (打印日期:&""Times New Roman,常规""&D&""宋体,常规"")"

.CenterFooter = "第 &P 页,共 &N 页"

设置打印数据表的上、下、左、右、页边距及页头、页脚边距

.TopMargin = Application.InchesToPoints(1)

.BottomMargin = Application.InchesToPoints(1)

.LeftMargin = Application.InchesToPoints(0.5)

.RightMargin = Application.InchesToPoints(0.2)

.HeaderMargin = Application.InchesToPoints(0.5)

.FooterMargin = Application.InchesToPoints(0.5)

设置打印表格线、设置每页都要打印的列标题、设置表的打印缩放比例。

.PrintGridlines = True

.PrintTitleRows = "$1:$1"

.Zoom = 95

下面语句实现将工作表打印,并且首先弹出打印预览页面,由用护选择时否打印。

xlapp.ActiveWindow.SelectedSheets.PrintOut Preview:=True

2.8 完整的打印过程源代码

Public Sub TablePrint(rs As ADODB.Recordset, Title As String)

'定义Excel应用程序对象xlapp、工作簿对象xlbook

Dim xlapp As Excel.Application

Dim xlbook As Excel.Workbook

Set xlapp = CreateObject("excel.application") '创建Excel应用程序对象实例

Set xlbook = xlapp.Workbooks.Add '创建新工作簿文件

xlapp.Sheets(1).Select '选择工作表sheet1

xlapp.Visible = false '设置电子表格的可见性为假(调试时可设置为真,以便于观察)

'将记录集的字段(表的列标题)写入Sheet1表的第1行

For i = 0 To rs.Fields.Count - 1

xlapp.Cells(1, i + 1) = rs.Fields(i).Name

Next i

'将记录集中的记录写入Sheet1中

rs.MoveFirst

For j = 1 To rs.RecordCount

For i = 0 To rs.Fields.Count - 1

xlapp.Cells(j + 1, i + 1) = rs.Fields(i).Value

Next i

rs.MoveNext

Next j

'获取表格有效区域――即有数据的区域

ec = Chr(65 + rs.Fields.Count - 1)'最右边列号

ecl = ec & rs.RecordCount + 1 '最右下角单元格地址

'自动调整表格列宽

xlapp.Worksheets(1).Columns("A:" & ec).AutoFit

'设置表格字体,字号,单元格文字对齐

xlapp.Range("a1", ecl).Select

With xlapp.Selection

.Font.Name = "宋体"

.Font.Size = 10

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

End With

'打印设置

With xlapp.ActiveSheet.PageSetup

'设置页眉:显进标题和打印日期

.CenterHeader = Title & "(打印日期:&""Times New Roman,常规""&D&""宋体,常规"")"

'设置页脚

.CenterFooter = "第 &P 页,共 &N 页"

'设置上、下、左、右、页边距及页头、页脚边距

.LeftMargin = Application.InchesToPoints(0.5)

.RightMargin = Application.InchesToPoints(0.2)

.TopMargin = Application.InchesToPoints(1)

.BottomMargin = Application.InchesToPoints(1)

.HeaderMargin = Application.InchesToPoints(0.5)

.FooterMargin = Application.InchesToPoints(0.5)

.PrintHeadings = False '设置打印表的行列号

.PrintArea = "a1:" & ecl'设置打印区域

.PrintGridlines = True '设置打印表格线

.PrintTitleRows = "$1:$1" '设置行标题

.PrintTitleColumns = "$A:$B" '设置页标题

.CenterHorizontally = True '设置表格打印水平距中

.Zoom = 95'设置表格打印的缩放比例(也可做为参数代入)

End With

'打印预览并打印

xlapp.ActiveWindow.SelectedSheets.PrintOut Preview:=True

End Sub

3 结束语

在Visual Basic应用程序中,调用该过程,就可实现Visual Basic操作Excel程序在后台设计及打印数据表,用户看不到具体过程,只看到漂亮的报表轻易地被打印出来。

这种方法可以充分发挥MS Excel的报表设计打印功能,简化了Visual Basic应用程序中的报表设计工作,摆脱了Visual Basic中设计打印数据报表的烦脑。

参考文献:

[1] 刘文涛. Visual Basic+Access数据库开发与实例[M]. 清华大学出版社,2006-07.

程序设计篇6

关键词:再审程序;主体;程序设计

一、民事再审程序的功能

“功能”一词就是指事物或方法所发挥的有利作用,由于主体的不同其发挥的功能也是有差异的。研究功能就是为了实现民事诉讼法解决纠纷的目的并设计出必要的合理的制度。关于民事再审程序,对于当事人和案外人而言其发挥的是救济性的功能,对于法院而言是纠错的功能,而对于检察院来讲却是通过对法院的司法活动进行监督,从而达到对法院的违法行为进行纠正和对当事人的合法权益的救济和保障的功能,兼具监督、纠错和救济的功能。

(一)救济功能

救济功能主要是针对案件的当事人和案外人而言的,民事裁判的错误意味着当事人的合法权益没能得到司法的保护,甚至受到了侵犯。因此,民事纠纷就没能得到解决,再审程序的发动本身就说明这一点。从当事人申请再审的事由中我们可以看出:不论民事裁判出现事实认定的错误、法律适用上的错误还是程序上的错误时,当事人都能够向法院申请再审。这说明我国民事再审程序设计的主要是在于对当事人受到侵犯合法的权益进行的补救。

(二)纠错功能

纠错功能主要是针对法院而言的,但对案件的当事人和案外人而言也是具有重要的意义的。纠错和补救就是一个问题的两个侧面,对法院的错误裁判进行纠正的目的除了规范我国司法活动外,最重要的就是保障当事人的合法权益,解决纠纷。民事诉讼法第179条规定的事由其实就是对法院可能出现的错误的一种列举。从理论上讲,通过再审程序是可以达到纠错的功能的。

(三)监督功能

监督功能主要是针对检察院而言的。检察机关是国家的法律监督者,对法院的司法活动具有监督的功能这是不存在争议的。但是,由于民事法律关系尊重当事人的处分权,居于私权范畴,所以检察机关提起民事诉讼的范围须严格限制,应仅限于为维护国家利益和社会公共利益的必要。[1]

二、我国学界对启动民事再审程序主体制度的研究现状

鉴于我国现行民事审判监督程序的启动主体的宽泛性,我国学者从各方面分析了启动主体的合法性和合理性,并提出了很多优秀的修改方案。在此,我简单的介绍下这种观点的理由。

(一)取消人民法院依职权提起再审程序

主张取消人民法院依职权提起再审程序主要基于三种理由:1.法院作为提起再审的主体违背诉审分离的原则。2.违背当事人处分原则。3.违背司法公正原则。因此人民法院依职权提起再审程序有违法理,侵害当事人的处分权,弊端重重。因此,只有取消人民法院依职权提起民事再审程序,人民法院在审理再审案件时处于消极的裁判者的地位,才能公平地对待双方当事人,做出的裁判就会更加令人信服。同时,取消人民法院依职权提起再审程序,也理顺了当事人的诉权和人民法院审判权的关系。[2]

(二)保留人民检察院的抗诉权,但要限定人民检察院提起再审程序的案件范围

抗诉权在我国发挥了很重要的作用,废除检察院的抗诉权时不合适的,但宽泛的抗诉事由也是不合适的,所以我们完善检察院的抗诉制度,应从抗诉理由上着手。正如蔡虹所讲:在抗诉事由方面,应当将检察机关抗诉的事由与当事人申请再审的事由区别开来,应将抗诉理由严格界定在“违法的民事审判活动或审判行为”及审判人员在审判该案件时有贪污受贿枉法裁判行为。在申请救济途径方面以当事人申请再审为主,与抗诉的事由不应该有功能上的混同。

(三)确立当事人申请再审优先原则

《民事诉讼法》规定了当事人申请再审制度,但实践中申诉难的问题并没有得到很好的解决。因此学者提出增加当事人申请再审优先原则,使再审的启动权首先应该掌握在当事人的手中,这符合民事法律关系私权自治的的原则。同时该原则有利于案件的诉求迅速获得解决,也体现了对再审启动程序的诉权化改造,把申请再审看作是当事人的一项诉讼权利。当事人申请再审被法院驳回后,当事人不服的,可以再向人民检察院申请抗诉。此外,该制度设计也可以有效减轻检察机关的负担,当然,该制度设计的前提应当是优化对人民检察院工作的考核机制。[3]

三、启动民事再审程序制度之程序设计

当前面临的再审难、申诉难问题,其症结就在于再审程序的启动上。解决这一问题主要的还是要解决如何保障当事人行使申请再审的权利。将当事人的意愿放在首位,加强检察院的民事检查监督是较符合我国国情的。

(一)增加当事人申请再审优先原则

通过对再审程序的功能的分析,我们认识到再审程序的最核心的功能就是实现对当事人的合法权益的救济和保障。基于此,我们再设计程序时最应当考虑的就是当事人的意愿。将当事人申请再审优先原则加入该程序是符合民事法律关系私权自治原则的。

该原则将我们现行的当事人申请再审制度提到了一个重要的位置,排除了法院依职权启动再审程序,但是并没有从本质上触及到我国申诉难的症结。当事人可以基于《民事诉讼法》第179条的理由向上一级法院申请再审,法院经过审查可以裁定再审,也可以裁定不再审。再审的决定权仍然在法院。当事人的申诉权还是无法实现。笔者认为,可以以提起再审的理由来决定是否必须或可以再审。

(二)对法院裁定不予再审的程序制约

再审的理由可以分为事实错误、法律适用错误或程序的错误三种。当事人可以基于这三种理由中的任意一种提起。法院应当基于当事人提交的再审申请书进行审查。法院当然可以裁定再审,也可以裁定不再审。但对裁定不再审的应该向申请人出具书面说明不再审的理由。

这种书面的说明理由的过程就是对原判决的正确性的说明,对申请人的一种释明的过程。这种制约虽然不强,但是对法院裁定不予再审的随意性进行了一定的制约。申请对于该书面说明不服或者认为不符合事实的可以向检察院申诉。

(三)检察机关的抗诉机制的完善

首先,上文已经谈过当事人申请再审优先原则,检察机关就应当受该原则的约束。因此,当事人的申诉和同意是检察机关对已生效裁判的前提条件。

其次,检察机关的抗诉理由应该受到限制。在再审理由方面,应当将检察机关抗诉的理由与当事人申请再审的理由区别开来,根据检察机关的法律监督特性而将检察机关的抗诉理由严格界定在涉及公共利益的范围之内。凡是涉及当事人私益的,均由当事人以申请再审的方式启动再审程序;凡是涉及到公共利益的,均由检察机关以抗诉的方式提起再审;如果同时涉及到当事人私益和公共利益,则可由当事人和检察机关分别提出申请再审和抗诉。[4]

第三,处理当事人对法院的书面说明不服或者认为不符合事实的案件的申诉。对于处理这一问题笔者认为应该交给检察院来做。检察机关应该进行调查。通过调查认为书面说明没有异议的,并不应该启动再审的,检察机关应当做好息诉工作。对书面说明有异议的,认为应该再审的,检察机关应当向法院作出应当再审的检察建议。法院收到检察建议的应当再审,并将再审结果通知发出检察建议的检察机关。在这一过程中,检察机关是不参与后续的审判活动的,这与抗诉是有区别的。

参考文献:

[1] 江 伟,张慧敏,段厚省.民事行政检察监督改革论纲[J].人民检察,2004,(3).

程序设计篇7

关键词:学习领域;学习情境;重构;教学实施

中图分类号:TP312 文献标识码:A文章编号:1007-9599 (2011) 15-0000-02

"J2ME Programming"Learning Areas Curriculum Design and Implementation

Zhang Yong

(Wuhan Polytechnic Institute of Computer Technology and Software Engineering,Wuhan430074,China)

Abstract:This paper describes the"work process"oriented"J2ME programming"learning field development concepts and ideas,use of knowledge deconstruction and reconstruction methods to rethink this course of teaching methods,with emphasis on learning environment design,new teaching models and teaching methods used,and teaching environmental design and implementation of the specific implementation described,the last two terms of teaching and learning from the detailed analysis of the implementation of the results.

Keywords:Learning areas;Learning context;Reconstruction;Teaching practice

一、《J2ME程序设计》学习领域课程开发的理念与思路

(一)基于“工作过程”为导向的开发理念

《J2ME程序设计》是手机游戏专业的专业核心课程,此学习领域的开发理念是:以手机游戏开发的能力培养为主线,遵循职业教育以行动导向的教学理念,按照“任务引领、项目驱动”的原则,以学生掌握实际开发手机游戏项目的流程为目标,贯穿综合素质培养与职业道德素质培养,开发以“工作过程”为导向的J2ME程序设计学习领域。通过本课程的学习,使学生培养自学能力,学会实际开发手机游戏项目的基本步骤及方法,培养较强的可持续发展能力。

(二)以开发真实的手机游戏产品为载体的开发思路

为培养高技能人才,体现专业课程突出能力培养,基于职业岗位分析和具体工作过程的学习领域的设计理念,根据该学习领域所对应游戏开发岗位的20项工作任务进行整合,形成6项工作任务,并以此为载体开发出6个学习情境,以真实工作任务和企业真实产品为载体组织教学内容。J2ME程序设计作为手机游戏专业最重要的专业核心课程,充分体现高职高专特点,与行业企业实际生产任务紧密结合。

(三)运用知识解构与重构的操作方法

本学习领域是我院游戏专业的专业核心课程,遵循以“应用”为主旨,以必须够用为度,使学生具有可持续发展能力的具体操作原则,以手机游戏程序开发实际需要为基本点,进行知识的解构与重构,从而使教学内容具有针对性与适用性。通过企业调研及行业企业专家参与,根据发展需要和完成手机游戏开发程序员职业岗位实际工作任务所需的知识、能力素质要求,将《手机游戏项目策划》、《手机游戏界面设计》、《手机游戏编程》、《手机游戏测试与优化》、《手机游戏》拆分为各个有用的知识点,使其合理融合在一起,突出其应用主旨,使学生易于掌握,从而提高其应用能力。

二、《J2ME》学习领域课程教学模式的设计与实施

(一)学习情境没计的原则

学习情境设计应紧紧围绕培养学生的自主学习能力这一中心问题,因此从第1个至第6个学习情境,教师的指导作用在逐渐减弱,而学生的主体作用则越来越强,尤其在最后―个学习情境,学生应能够独立完成工作任务,充分发挥其主观能动性和自主解决问题的能力。

(二)教学模式的设计与创新

根据6项真实典型手机游戏开发项目设计开发的6个学习情境组织教学,使课程更生动,更好的激发学生的主观能动性,使学生参与到课程中,真正把教师的“教”转变为学生自主的“学”和“做”,并在教学过程中贯穿相应的职业素养,构建“教、学、做”三合一的教学模式。

(三)教学方法的灵活运用

在教学中教师因材施教,采用项目教学法、引导文教学法、讲演教学法、讨论教学法等进行教学,有效调动学生学习兴趣,促进学生积极思考、乐于实践,提高教学效果。

三、《J2ME》学习领域课程教学方案的设计与实施

(一)教学实施环境的设计

根据学习情境的内容和学生自身的特点,把手机游戏开发实验室设计成“项目小组型”的手机游戏研发基地,使课堂与实习基地一体化,并对教学场所布局进行设计,采用“查阅资料场景”、“讨论场景”、“教师理论指导场景”、“实际开发实施场景”、“检查场景”、“评价场景”,使学生更有气氛融入到学习环节中。

(二)教学方案的具体实施

本课程的教学方案按照“任务引领、项目驱动、工作过程导向,理论实践一体化”完整的课程体系进行具体实施,采用项目教学法的四步法(设立目标、计划、具体实施、评估),以及引导文法教学法的六步法(资讯、决策、计划、实施、检查、评估),使学生真正学会实际工作过程的具体步骤,同时用编写的项目实施方案代替传统教材进行授课。

四、《J2ME》学习领域课程教学实施结果的分析

(一)课程在实施过程中学生方面的反馈

1.对学生职业素质的培养

职业素质的教导只能意会不能言传的,学生只有亲身经历、亲自体会才能具备相应的职业素质,而传统教学方法很难将职业素质融入教学过程中。通过“项目教学、任务引领、工作过程导向”等方法在课程改革中的引入,企业技术人员参与教学、开展讲座,给学生树立榜样,使对学生职业素质的培养贯穿课程始末。

2.学生所学到的知识实用性增强

传统教学过程中理论知识多而且深,实践知识少而且浅,教学内容与企业实际应用不接轨,新的课程促使理论与实践一体化,学生学习的项目来自企业,企业技术人员给学生开展讲座,适当的时候与老师一同上课,使学生真正学到了今后要使用的实际知识技能。

3.学生对本课程学习兴趣的提高

新的课程在授课老师由表及里、逐层深入、逐步求精的教学过程中,学生还会不断地获得成就感,极大地激发起学生的求知欲望,从而培养学生学习的兴趣。

4.学生自学能力的培养

学生通过每一个学习情境,反复学习“六步法”,能够熟练地掌握实际的工作步骤。学生自行的查找相关资料,扩大了学习的知识范围,养成了良好的学习习惯,在决策、计划、实施过程中学会自行解决问题的方法,在检查和评估过程中提高了学习的完整性。

5.检查及评估能力的提高

学生自己先进行自我评估,再由教师对学生所做的项目工作进行检查评估,师生共同讨论、评判在项目工作中出现的问题,最后由学生解决问题并总结方法,通过对比师生的评价结果,要求学生找出造成评价结果差异的原因。因此,教学评价不仅要注重学生对知识的掌握程度,更要注重学生分析问题、解决问题和探索真理的过程。

6.团队协作能力的增强

一个较为复杂的优秀课件的制作往往不是某一个人能独立完成的,这项任务属于一个系统工程,是需要集体智慧的力量和团队的协作才能高质量完成的。众人拾柴火焰高,以学生为中心的教学交往,要强调团队协作与群体组合。协作是一种互动方式以及合作型的交往,学生在认知、情感、个性等方面都将得到全面的发展。小组合作学习是一种行之有效的合作型互动,学生既学会理解与尊重他人,又增强了团队协作的能力,对培养学生协作精神和人际交往能力具有十分重要的作用。

(二)课程在实施过程中教师方面的实施反馈

1.学习情境设计的提升

情境设计使老师变成了“编剧”和“导演”,教师在课程的实施过程中要选择合适的项目,对教学场所要进行整体布局,合理安排教学过程,合理选择教学方法等。因为教师对情境设计普遍都是初次尝试,能力及经验普遍不足,教师的情境设计能力都有待进一步的提升。

2.教学方法能力提升

传统教学以课堂讲授法为主,教学效果一般都不太理想。新的课程设计为求达到最佳的教学效果,教师可以选择“讨论法”、“头脑风暴法”、“项目教学法”、“引导文法”等丰富多彩的教学方法,因此要求教师要有较强的组织能力和应变能力,甚至还要具备优秀“主持人”的素质,故课程改革成败的关键在于尽快提升教师正确而又熟练地运用新教学方法的能力。

3.教师职业能力的提升

经过近十年的职业教育教学改革,特别是职业教育提倡“双师”教育,教师的职业能力与专业技术能力都有了很大的提高。但由于教师在企业的实践时间相对较短,教师和企业的技术员在技术能力上还是有一定的距离,相应的职业素质也有待进一步加强,教师的举手投足体现不出企业真正的职业能力,因此应大力提升教师的职业能力。

参考文献:

[1]姜大源.当代德国职业教育主流教学思想研究[M].清华大学出版社,2007

[2]陈永芳.职业技术教育专业教学论[M].清华大学出版社,2007

程序设计篇8

关键词:循环程序;循环控制;流程图;算法;程序语句;VF QBASIC

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)08-1906-02

On Recycling Program Design

LIU Li-ming

(Zunyi City, Guizhou Province Vocational High Schools, Zunyi 563000, China)

Abstract: Loop structure is a structured program design, one of the basic structure of the three. but it's also the basis for program design. However, for the beginners, Loop structure is difficult to master, for it's different from the daily habit of thinking of the human mind. In this paper, VF, and QBASIC program design cycle described examples of the cycle of programming languages have in common. Therefore, in the course of study must first correctly understand the language loop statement, and then to prepare specific algorithm, find out the loop control the conditions under which to draw flowcharts, programming statement, on the machine to debug.

Key words: circulation procedures; loop control; flow algorithm; algorithm; program statements; VF QBASIC

顺序、分支、循环是结构化程序设计的三种基本结构,所以在高级语言程序设计课程中,掌握这三种结构是学好程序设计的基础。而循环结构是这三者中最复杂的一种结构,几乎所有的程序都离不开循环结构,但是对于那些没有经验的初学者来说,难度却不小。特别是遇到更加复杂的多重循环程序,以及分支程序嵌套在一起就更加难以理解。因此这也是计算机等级考试高级语言程序设计的一大难点。

1 循环程序的基本原理

程序是能够完成一定任务的命令的有序集合。存放程序的文件称为程序文件。例如:我们要让计算机屏幕显示一句话:“I like computer!”。以QBASIC高级语言为例,编写相应的程序语句如下:

PRINT “I like computer!”

然后执行它,就能得到相应的屏幕显示。然而在现实生活中往往会遇到一些按规律重复执行的问题,例如:要在计算机屏幕上显示100行:“I like computer!”,采用循环结构设计将使程序简练,减少程序的行数,从而节省运行时占用的内存,因此引入并运用了循环程序设计。通过相应的循环程序设计语句让PRINT “I like computer!”循环执行100次就行了,编写程序语句如下:

10 FOR I=1 TO 100 SETP 1

20 PRINT “I like computer!”

30 NEXT I

程序中采用了循环语句格式:FOR= TO STEP

NEXT

功能:这个语句指定循环变量取一系列数值,并且对循环变量的每一个值把循环体执行一次。初值表达式、终值表达式和步长值表达式都是算术表达式。步长值可以是正数(叫做递增循环),也可以是负数(叫做递减循环)。

结合图1分析,该循环程序的控制过程是这样的,令I的取值范围为1到100,先将变量I赋值为1(即I=1),I的值属于1到100的取值范围(即满足循环条件),执行PRINT “I like computer!”一次;然后I的值按步长数1依次递增,从而反复执行PRINT “I like computer!”语句100次。

从分析不难发现循环程序执行的核心问题就是判断循环条件,即根据对循环条件的判断来确定是否进入循环体以及执行循环体语句的次数。各种高级语言程序设计的基本原理都相同,即当所给定的循环条件为真时,就反复执行其循环体(命令组);当条件为假时,则终止其循环体,而去执行其后继命令。

2 如何学习循环程序设计

2.1 循环程序语句

各种高级语言都有相应的类似的循环程序语句。例如前面介绍的QBASIC中的:

FOR= TO STEP

NEXT

等循环语句。

又如VF中的:

DO WHILE

[命令组]

ENDDO

等循环语句,初学者在学习时首先要搞清楚这些循环语句的含义、特点和用法。例如VF中与DO WHILE循环语句配对的是ENDDO;与FOR循环语句配对的是ENDFOR。不能混淆使用,也不能将忘记书写。

一般每种语言都有多种循环语句,要对它们进行比较。在一些具体运用中采用恰当的循环语句可能会使循环程序更加简洁明了。

2.2 流程图

学习循环程序设计首先要学会看流程图(亦称程序框图)。就是用一些简单的图形符号和文字说明,直观地描述程序的处理步骤。程序流程图不仅有助于程序设计,而且也为阅读、分析程序带来方便。

2.3 算法

在具体的循环程序设计中遇到的问题往往比较复杂,因此在设计前应该认真分析,要设定哪些变量,写出哪些计算公式,拟出解决问题的思路。

例:假定要求从键盘上依次输入三个数,求这三个数之和。

编写算法:第一步:存和的内存变量S清0。第二步:反复执行下列操作3次,输入一个数并存入X,计算S=S+X。第三步:输出S。第四步:结束。

2.4 编写语句

学习编写循环程序之前应该多阅读一些相关的典型的程序语句,从易到难循序渐进。编写语句时应该充分的结合流程图来展开,要根据拟定的算法来设计循环条件。

3 循环程序的应用

以VF程序设计为例,假定要求从键盘输入一个邮政编码,在“考生档案”库文件中查找。一个也查不到,则显示“无此邮政编码”。否则,每查到一个,就显示该考生的姓名与工作单位。直到全部查完为止。

过程分析:① 键盘输入待查邮编并存入内存变量YZBM;② 打开库文件查询邮编;③ 用EOF()函数进行循环控制,即通过查找后是否到达文件尾作为条件来进行循环控制;④ 如EOF()为真则退出循环,并显示“无此邮编”;⑤ 如EOF()假则循环显示该考生的姓名、工作单位,然后继续查找直到EOF()为真时停止查找并显示“查找完毕”。

程序流程图如图2所示,其循环结构由三部分组成。① 设置初值。包括循环操作中的初值和控制循环的初值两部分,通过查找邮政编码获得EOF()函数的值是控制循环用的初值。② 循环的实际操作。这部分是循环中要反复执行的操作,同是包括控制循环条件的修改,又叫“循环体”,输出姓名和工作单位是循环操作,继续查找既是循环操作的一部分,又是修改控制循环条件。③ 循环控制部分的核心是一个条件判断,即EOF()函数的值是 “假”开始循环,值为“真”退出循环。

程序设计如下:

ACCEPT "请输入待查的邮政编码(5位整数):"TO YZBM

USE 考生档案

LOCATE ALL FOR 邮政编码=YZBM

IF EOF()

?"经查找,所有考生中无此邮政编码!"

ELSE

DO WHILE .NOT. EOF()

?"姓名:"+姓名+SPACE(4)+"通讯地址:"+通讯地址

CONTINUE

ENDDO

?"已经查完了!"

ENDIF

USE

在循环程序设计中一定要注意控制循环次数的控制,否则循环程序将无法结束,即陷入“死循环”。通常的办法有“计数控制”,“条件控制”。在本例中就采用了“条件控制”。

4 多重循环

一个循环语句中可以包含另一个循环语句,这种结构叫做循环语句“嵌套”,在外层的叫外循环,在内层的叫内循环。多重循环结构的特点是:外层变一次,内层变一遍。

比较典型的运用例子就是设计打印乘法九九表的程序,即1*1=1,1*2=2,……,9*9=81。首先考虑如何打印1*1=1,1*2=2……,1*9=9,这用单循环很容易就能实现。但是对于整个程序的设计就要使用多重循环了。被乘数和乘数分别用A和B表示,A的值从1增加到9,B的值从1增加到9,每次都增加1,其乘积用P表示。每个A值都要使B从1变化到9,然后打印出相应的乘积。用VF设计主要程序语句如下:

A=1

DO WHILE A

B=1

DO WHILE B

P=A*B

? A,"*",B,"=",P

B=B+1

ENDDO

A=A+1

ENDDO

5 结束语

许多问题的求解归结为重复执行的操作,比如数值计算中的方程迭代求根,非数值计算中的对象遍历。重复执行就是循环。重复执行不是简单地重复,每次重复,操作的数据(状态、条件)都可能发生变化。重复的动作是受控制的,因此循环程序设计的要点就是要做好循环控制的设计。

参考文献:

[1] 林卓然.BASIC语言简明教程[M].广州:中山大学出版社,1995.

[2] 迟成文.全国计算机考级考试教程(二级)[M].北京:电子工业出版社,1997.

程序设计篇9

【关键词】C++程序设计;教学方法;教学改革

1.引言

在计算机课程中,“C++程序设计是计算机专业的一门必修基础课,该语言以其高效而又实用的特性:既可以进行过程化程序设计,又可进行面向对象的程序设计,因此逐步成为各高校程序设计课程中的主流。C++语言既是进行软件开发的直接工具,又是“数据结构”、“操作系统”、“编译原理”、等课程的先修课程,因此,在整个教学体系中占据十分重要的地位。

根据本人自身教学经验和讲授过程中出现的问题,在此进行分析和探讨,期望能进一步提高本课程的教学效果和教学质量。

2.存在的主要问题

(1)程序设计类课程一般以程序设计语言自身的体系为教学路线,侧重于编程语言的基本概念、基本语句和语法的详细讲解,而没有把逻辑与实际编程解题思路作为教学的主线。达不到培养学生分析问题和解决问题的实际能力的目的。学生面对的是一大堆语言符号,需要记忆的内容过多。在教学过程中学生们感觉学习相应的知识点(语法)并不困难,听老师讲解例题时也容易明白。

(2)实践性教学薄弱。只有在上机实践中学生才能真正学会如何编写程序和调试程序,才能更好地掌握程序设计的理论知识。可在C++语言实践教学中,由于课时有限、教学条件有限等没有把编程思路和程序调试放在首位,对学生分析问题和解决问题的能力训练不够;上机内容基本上都是立足于C++语言本身的一些语法规则,和实际开发应用脱节,无法激起学生的兴趣。

(3)学生学习差距较大。由于学生水平不一,并且部分学生学习自觉性较差,学生学习的效果相差十分明显,学生的编程能力逐渐下降,学生不原意写C++/MFC程序,而是写C#/JSP等网站程序设计。如果开展有效的教学研究,使大多数学生都能学懂C++程序设计的基本概念、掌握常用的语法及算法、能用C++编写通用程序,是值得研究的问题。

3.教学与实践改革的具体措施

3.1 以”深入浅出,边学边用”作为指导思想组织教学内容

对于枯燥的语言叙述,改用生动的比喻进行引导。比如,学生学习指针概念时,对”间接存取”难以理解,就借用比喻:将A房间的钥匙放在B房间里,若要取A房间里的物品,就需要先打开B房间,取出A钥匙,再打开A房间,取出A房间的物品,这就是“间接存取”。学生很快就能理解,也加深了指针的概念。变更教学形式,结合实际生活,组织教学内容以“提出问题--分析解决问题的方法--归纳出概念或一般规律”为线索,侧重学以致用。每堂课都安排简单实用的程序学习并编制,让学生全部可以接受,每堂课都有一点成就感,打消往届学生带给他们学习C++语言的畏难情绪。比如学生学习了输入输出函数的使用,就提出“简单的超市算账问题”,仅仅使用顺序结构程序设计方法就能解决;将问题加深一点,购物达到一定的金额商品会打折,金额不同折扣率不同,引入选择结构的程序设计方法,利用类似的方法逐步深入,培养学生分析解决问题的方法,边学边用,激发学生学习的兴趣。

3.2 加强实践教学环节

C++语言课程是一门实践性很强的课程,一定要动手多写设计、编写程序才能有所进步。在实践教学中必须做到循序渐进,对所学的每一部分内容都应该要求学生完成一定数量的实验内容。每部分的上机习题必须精心挑选,既要有基本的、较简单的题目,又要有一些具有挑战性的新颖有趣的题目。学生自己编写的程序一定要到机器上去实现,通过调试程序来修订语法错误,排除逻辑错误,进而提高编程能力,通过做一定量的习题,可以积累一定的经验,同时对程序设计的精髓会有所领悟,从而重视上机实验。

强调学以致用,展示学生能够理解而且又容易提起兴趣的用C++语言设计的软件以及往届学生的设计成果,给学生布置了几个专题,比如:设计班级成绩管理系统、简易的图书管理系统、简易的通讯录管理系统、小游戏等让学生利用课余时间去思考、收集资料,以教师为主导,以任务为主线,以学生为主体,过一段时间在课堂上组织学生发言和讨论一次,看看大家对这些问题的思考程度,提提建议,鼓励加引导,最后到完成。

通过一个阶段C++语言的学习,选拔出一批优秀的同学,单独培养,结合所学专业,加宽加快加深学习内容,使他们尽早切人实际应用,有条件的进入相关的开放实验室,参与计算机应用的小课题研究或参与大学生创新设计大赛等,培养学生中的学术带头人。在C语言教学中,培养学生的自学能力尤为重要,如果学生的学习完全依赖教师才能掌握,而没有一定的自学能力,其所学的知识很快就会被淘汰。对于多数学生,则把精力放在最基本、最常用的内容上,让他们学好基本功,掌握程序设计的方法,为后续课程的学习打下基础。

3.3 开展3年不间断的C++编程训练

仅靠一个学期的c++语言的学习是远远不够得,需要在后续课程中进行巩固提高。C++兼容C语言,C语言是C++的子集,我们把C语言和C++融合为一门课程,第一学期授课以C语言为主,第二学期讲授以C++为主,所有程序都以VC++为调式环境。经过这样的整合,知识内容显得很连贯,一气呵成,为第三学期的Windows程序设计课程奠定了基础。该课程利用MFC类库进行Windows应用程序开发。后继的数据结构、算法分析与设计、计算机网络原理、操作系统、编译原理等课程实践环节都利用C++语言进行开发,开展3年不间断的C++编程训练。

3.4 改革课程的考核方法

对学生学习情况的考核不应以停留“期末试卷”为中心的传统考试观念,应该进行改进,以此提高学生对知识的运用能力、自学能力、分析和解决问题的能力。

(1)加大平时成绩的考核。平时考核的方法有:课堂提问、作业与练习、阶段性测试、包括学生提出有价值的问题都给予记分。平时考核成绩占总成绩的比例为20%。加大平时成绩的考核,有利于全面测评学生能力。这样可以激励学生学习的积极性和主动性,并将这种积极与主动精神贯穿于课程学习的始终。

(2)加大上机考核。对C语言的掌握情况主要看上机的调试,要对上机过程和结果给学生进行考核,既要看结果,也要看过程。应鼓励学生在程序的设计上精简优化。上机考核成绩占总成绩的比例为20%。

3.5 应用现代化教学手段提高教学效率和效果

形式多样的教学手段课堂教学要应用现代化教育技术,使用多媒体进行课堂教学,给学生营造一个良好的程序设计环境。与传统教学方式相比,多媒体教学具有形象生动、图文并茂、交互性好、信息量大、减少文字书写等显著特点,对课程中难以理解的抽象内容,可以给予直观展示和动态模拟,达到既能辅助教师形象地讲授课程中的难点和重点的目的,又能激发学生学习的兴趣,从而提高教学效率和教学效果。并且,把讲授法、练习法、实验法、演示法和网络技术结合起来,将课程中抽象的、难以理解的教学内容,进行形象化,这样就更利于学生理解与记忆。

4.结束语

本文针对笔者在连续几年“高级语言程序设计C++”教学过程中出现的问题,进行了思考和探索,并将所提出的方案在教学活动中实施,较好地激发了学生的兴趣,调动了学生的学习积极性,培养学生的自学能力,提高学生的编程思想和解决实际问题的能力,取得了很好的教学效果。

参考文献

[1]张庆岚.提高《C程序设计》课程教学质量的探讨[J].福建电脑,2009(1).

[2]朱站立.面向对象程序设计与C++语言[M].西安电子科技大学出版社,2009.

程序设计篇10

1程序设计课程教学

1.1程序设计课程教学现状1.1.1传统教学方法存在的不足目前高校面向非计算机专业学生开设程序设计基础课程,这是培养计算思维能力的非常好的载体。在教学中一般采用“教师传统授课+教师课程演示+学生上机实践”模式进行学习,重理论知识的讲解,是一种注入式的学习方法。这种传统的教学模式虽然强调了技术与应用的教学,却忽略了“思想的教学”,限制了学生的思维发展。1.1.2无意识的计算思维教学由于计算思维提出的时间不长,且计算机求解问题的方法本身就是计算思维,这造成大多数计算机教师在课堂中都在进行着非系统化的、无意识的计算思维教学。1.2计算思维在《VisualFoxPro程序设计基础》教学中的培养和应用《VisualFoxPro程序设计基础》这是一门广泛开设的程序设计基础课程,课程以培养学生利用数据库技术开展信息加工、管理和利用的意识和能力为目的的同时让学生掌握程序设计方法和基本算法。算法设计在《VisualFoxPro程序设计基础》课程中起主导地位,学生学习程序设计课程就是通过学习算法并选择相应的语言工具来体会计算机求解问题的思维方法。在这个不断体会的过程中,计算思维被系统、有意识、潜移默化地被植入到学生意识形态里。在《VisualFoxPro程序设计基础》课程中培养计算思维需从以下几个方面进行:1)计算思维不是靠教师直接传授计算思维知识和方法给学生,而是需要提供某种知识情境,如思维者所处的内部环境包括知识、经验、情感和外部环境。教师要具备提供这种适合学生进行计算思维情境的能力。如带领学生参观学校的学生成绩管理系统,图书馆的图书管理系统,把学生长引入熟悉真实的计算机工作场景,提起学习兴趣,激发求知欲望,运用计算思维方法。2)任务驱动式的项目教学法。通过在项目教学法的环节中融入计算思维的训练,达到使学生加深对计算思维的概念的理解,获得计算思维能力,并在其指导下顺利完成项目任务。这是一种渗透式的教学过程,过程中计算思维能力的培养和学习任务的完成相辅相成。如课程学习开始时提出一个项目“图书馆信息管理系统”,在学习过程中不断学习新的知识和方法,到课程结束时完成任务系统的设计。3)在项目教学法中,要强调计算思维的原理和方法,适量准确的知识有助于无意识的习得化为有意识的学得,提高学习效率。例如教师引入系统化的方法和原则,使学生学会掌握在完成一个复杂问题时能够有意识地运用这种思维方法把其转换成几个相对简单的子问题,这就是问题的模块化。通过这些训练,把相应的计算思维能力内化到学生能力结构中。4)根据思维教学理论,暴露思维过程是思维得以训练和发展的前提。因此在计算思维教学中,教师和学生都要借助于各种载体来展示自己的思维过程便于学生借鉴和和学习;学生亦可将自己的认知过程展示,教师及时评价适当纠错。如在项目教学法完成以后,教师可针对性的选择学生代表讲述项目的完成过程,学生通过讲述对自己的认知过程上、思维方法进行整理。这种思维过程和能力的展示,使思维的发展处于良好的开放环境中,促进计算思维的学习和交流。5)建立恰当的评价体系。项目的完成是一个系统过程,具有一定的规模和复杂度,要使用多种方法和运用多种领域的知识并借助多种资源才能完成。在项目结束时以单一结果为依据进行评价是不十分不恰当的,这就需要一个多元化的评价体系,从多个角度、多种评价方式来评价以促进学生计算思维的发展。评价方式也应该改变,不再只由教师单一完成评价,评价过程应该是学生教师的互动过程,如“答辩式”评价方式适用;评价内容也不能局限于项目的完成与否及质量如何,还应该观察学生的计算思维的状态,如有无创新,是否体现了计算思维水平以及团队协作精神、情感、意志等因素[2]。在《VisualFoxPro程序设计基础》课程教学中通过从以上几个方面努力,将计算思维与项目教学法结合起来,学生能运用计算思维方式发现和解决问题,不但丰富了教学方法更为重要地是项目进行过程中计算思维的能力得到培养。

2结论

计算思维包含的内容并不是程序设计基础这一门课程所以承担的。计算思维教学贯穿于整个大学的计算基础类课程中。计算思维作为人类三大科学思维之一,在如今这个信息时代显得更为重要。计算思维是一种本质的、所有人都必须具备的思维方式,就像识字、算术一样[3],因此计算思维能力的培养是计算教育工作者的重要任务。然而对于学生来说,计算思维能力的培养和提高也不仅是在大学阶段,其在整个人生阶段都需要。

作者:霞 龚静 单位:湖南环境生物职业技术学院 大学计算机教研室