发布时间:2023-08-04 17:18:31
序言:写作是分享个人见解和探索未知领域的桥梁,我们为您精选了8篇的程序设计的基本结构样本,期待这些样本能够为您提供丰富的参考和启发,请尽情阅读。
关键词:结构化程序设计 数据结构 算法 设计技巧
近年来,计算机程序设计技术已从结构化程序设计技术逐步向对象程序设计技术过渡,特别是当设计一个较大规模的应用程序时,面向对象设计思路成为首选。纵观计算机软件技术的发展,在局部功能的实现上及功能模块的设计上,结构化程序设计仍然有其不可替代的独特魅力。在结构化程序设计中(以C语言为例),巧妙地运用一些设计技巧,对增强程序的稳定性和可靠性,简化程序操作步聚,提高程序的运行效率十分有效。
结构化程序设计的概念最初是由荷兰学者E・W・DUKSTRA等人在20世纪60年代提出的,它的基本思路是:以模块化设计为中心,将原来较为复杂的问题简化为一系列简单模块的设计,也就是将一个大的计算任务划分为若干个较小的任务,这些小任务均由函数来完成。函数既可以是C语言定义的标准库函数,也可以是自定义函数。在实际应用程序中,一个具备一定规模的C语言程序往往由多个函数组成,其中必有一个命名为main的主函数,由main来调用其他函数。必要时,其他函数还可以调用另外的函数,同一函数可以被一个或多个函数调用一次或多次。
结构化程序设计把程序归结为用顺序结构、选择结构和循环结构等三种基本结构来描述的逻辑问题。顺序结构的程序流程是按语句的书写顺序依次执行;在C语言中,有4种语句是顺序执行的:即空语句、表达式语句、函数调用语句及复合语句;选择结构是对给定条件进行判断,根据判断结果决定执行两分支中的一个分支或多分支中的一个分支,选择语句有if语句和switch语句;循环结构是在给定条件成立的情况下,反复执行某个程序段,循环语句有for,while和do-while语句以及一些辅助流程转向语句如continue,break,go to等等。以上三种结构通过流程控制语句来实现。流程控制语句在程序设计中起着十分重要的作用,通过三种基本控制结构的合理调配使结构化程序具有唯一的入口和出口,不会出现死循环,而且程序的静态形式与动态执行形式之间具有良好的对应关系。
从以上结构化程序的基本特点分析,结构化程序设计主要强调的是程序。程序=算法+数据结构+程序设计方法+语言工具和环境,其中算法是灵魂,是解决“做什么”和“怎么做”的问题;数据结构是加工对象;语言是工具;编程需要采用合适的方法。具体解决主要问题包含以下几个步骤:
分析问题,找出解决问题的模型根据模型设计出适合计算机特点的处理方法即算法进行编程程序,以实现算法上机编辑(.c)、编译(.obj)、连接(.exe)、运行所编制的程序,直到得出正确结果对结果进行分析,整理出文字材料。
程序设计的任务不只是编写出一个能得到正确结果的程序,还应考虑程序的质量,否则编写的程序就会出现质量低下、可靠性差、开发周期长、维护费用高等不良后果,即所谓的的“软件危机”,它会严重阻碍计算机应用的发展。由于大多高级语言都支持结构化程序设计方法,其语法上都含有表示三种基本结构的语句,所以用结构化程序设计方法设计的模块从结构到程序的实现是直接转换的,只需用相应的语句结构代替标准的控制结构即可。笔者在实际应用中,总结出以下几点实用技巧。
一、通过引申法廓清思路,选准目标
“引申法”就是通过对某一结论的合理引申,结合已经解决的问题,因势利导,在此基础上解决相关联的其他问题。“引申法”可以培养人们在程序设计方面的发散思维,提高程序设计的应变能力。问题是活的,但程序是有章可循的;语法是有限的,可解决的问题是无限的。程序设计相当一部分工作是分析问题,找到解决问题的方法,再以相应的语言写出代码。要熟练掌握一些简单的算法,根据不同的问题,再灵活应用。如用100元钱买100只鸡,公鸡、母鸡、小鸡分别是5元、3元、1元一只。在数学上解三元一次方程,三个未知数,两个方程好像解不出来。通过“穷举法”,我们要费好大一番工夫才能算出结果,但是通过计算机“引申”编程运算却不用一秒钟即可解决问题。只有在分析实际向题的基础上,以清晰的思路去设计算法,才能举一反三,以不变应万变。通过“引申”法,我们可使初学者对函数设计的关键问题有清晰的认识,利于从统筹全局的角度去考虑问题,体现了程序设计逐步求精的思路。
二、利用框架法培养全局思维和算法的整体设计能力
其具体体现在两方面。一是在有了一点编程基础后要利用伪代码或流程图,从算法设计的角度讲解编程思路,而不应拘泥于语法细节,不分主次、逐条语句地讲解代码。这样可以层次分明,突出算法设计的关键,利于培养编程思路。二是在学习重点章节函数时,由于新的算法已很少,主要是学习用函数调用的方法来重新编制以前所熟悉的程序,我们可以把着眼点放在函数的设计框架上,体现参数设计、返回值设计等关键问题,而无需细讲函数体的实现细节。结构化构造减小了程序的复杂性,提高了可靠性、可测试性和可维护性,使用少数的基本结构,就可使程序逻辑结构清晰,易读易懂,并且容易验证程序的正确性。
三、借助求异法引导新思路,启迪新思维
结构化程序设计方法的基本思路是:把一个复杂的问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。一个固定的问题,解决的方法可能不唯一,如果能启发人们多角度、多侧面去寻求解决问题的办法,则可激发思考的积极性,提高其学习兴致。对一个初学计算机语言的人来说,最重要的就是要有正确的程序流程概念,不仅要懂得,而且要灵活应用。由此可见,用结构化方法设计的结构是清晰的,有利于编写出结构良好的程序。在C语言中一题多解的情况有很多,有意识地引导新思路,鼓励新方法,以培养人们在编程中的求异思维,而不是死记硬背,墨守成规。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。
四、选准切入口,合理划分功能模块“分而治之”
结构化程序设计的关键在于功能模块的选定和划分。模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务,每一个子任务的划分以相对简单为前提。划分子模块时我们应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好。具体应用时从问题本身入手,自顶向下,逐步细化,精益求精,将解决问题的步骤分解为由基本程序结构模块组成的通过程序流程图、N-S图、PAD图表格等表示的结构化程序框图。在实践应用中往往会出现以下几个问题:一是用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。二是用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。三是系统的开发周期较长。
为解决这些问题,我们要求模块的设计要简洁明了,语句的选用要直观,不要拖泥带水。下面是一段小程序,从中可以看出一些语句选用的技巧。
某淘宝商城为鼓励更多网友光临本店,对新老网友给出如下优惠:凡是购买10件以上者,打9折;20件以上者,8.5折优惠;30件以上者,8折优惠,40件以上者,7.5折优惠。如用习惯上的if嵌套语句编写程序如下:
Main()
{float x,y;
printf(“请输入优惠购额款X:\n”);
scanf(“%f”,&x);
if(x
y=x;
else if(x
y=0.9*x;
else if(x
y=0.85*x;
else if(x
y=0.8*x;
else
y=0.75*x;
printf(“网友应付优惠后款额Y为:y);}
显然,这段程序冗长,一旦情况有变化,难以扩展。转换为switch语句结构后,程序就变得相对简单:
Main()
{float x,y;
Int t;
Printf(“请输入优惠购额款X:\n”);
Scanf(“%f”,&x);
If(x>=40)
t =4;
elst
t=(in)(x/10);
switch(t)
{case 0:y=x;break;
case1:y=0.9*x;break;
case2:y=0.85*x;break;
case3:y=0.8*x;break;
case4:y=0.75*x;break;}
printf(“网友应付优惠后款额Y为:y);}
两种方法可谓异曲同工,但是对于程序的调试性和可维护性却有天壤之别。在结构化程序的编程实践中,我们要查找某些错误比较困难,所以要尽可能避免出现这些问题。编程技巧需要在编制和调试结构化程序时不断总结和完善,力求找出最简便、最直观的方法。
总之,结构化程序设计方法在实际应用中有许多技巧可以合理运用,这需要我们对算法和数据结构展开深入分析,寻找最佳结合点,有的放矢,对症下药;更需要在实践中不断总结和积累。在编写过程中我们觉得有些程序没什么问题,但是一上机调试,就出现这样或那样的问题,这说明程序还不完善,还需要调整或改进。当今,高效率和快节凑的生活与工作方式对程序的设计提出了更高的要求和更苛刻的标准,我们只有不断创新设计理念和方法,才能编制出更多高质量、高性能、低故障的优质程序。
参考文献:
[1]林锐等编著.高质量程序设计指南[M].北京:电子工业出版社,2002.
关键词: 高级语言程序设计 流程图 控件 子程序 参数传递
一方面中职学生在初中阶段基础较差,另一方面对于高级语言程序设计的教学不同教材编写者有不同的思路,为了适应中职学生的学习,在教学中如何更便于学生掌握高级语言程序设计,我在长期从事高级语言程序设计教学的过程中摸索出一套针对中职学生教学的组织教材的思路,下面就以Visual Basic语言为教学背景谈谈教材组织,请同行予以批评指正。
首先,让学生熟悉所学的高级语言程序设计的程序结构。不同的高级语言的程序结构的描述过程是不同的,以Visual Basic语言为例,它的程序结构大至如下:
End Sub
因此,让学生熟悉上述的结构描述方法,让它像模板一样印在学生的脑袋中,对于学生对该语言的编写格式的直观认识及后续的学习会起到良好的作用,同时也会为后续学习数据类型、运算符、表达式和常用函数的上机调试扫除障碍。
其次,让学生熟悉所学的高级语言程序设计上机的调试环境和掌握基本的调试步骤。对于程序设计的最终结果是否正确,上机调试是必过的一关,不同的高级语言程序上机的调试环境是不同的,有的调试环境功能单一,有的调试环境功能很多,我认为首先掌握基本的调试功能,再根据需要逐步介绍和掌握调试环境所提供的其他功能,这样更有利于学生学习。以Visual Basic语言为例,我们要求学生首先掌握以下几个技能:建立一个新的工程,打开代码编写环境,保存一个工程,打开已有的工程,知道运行程序,自如查看运行的结果,并从运行结果中返回并重新修改程序。至于Visual Basic语言集成开发环境中所具有的其他功能,则根据具体调试演示时的需要零散分开,并个别介绍,这样学生将掌握得较好。
再次,让学生掌握程序的基本输入、输出语句或函数的功能及用法。程序要进行调试就要有各种各样测试的数据及根据测试数据运行后显示出的测试结果,以验证所编写程序是否正确,这就要求掌握基本的输入输出语句的用法。在Visual Basic语言中,inputbox()函数和print语句的用法就是必须掌握的。通过以上,学生掌握了程序设计的基本“骨架”,以及输入输出语句的用法,就可以进行最简单的顺序结构程序的设计了,从而在较短的时间里体验到成就感,为后继学习树立信心。
另外,在讲解顺序结构程序设计的过程中就要开始逐步地把流程图的识读及使用方法教授给学生。流程图能直观地表示整个程序设计的流程, 程序的编写只是对流程图的一种语句的细化过程,因此看懂流程图既方便程序设计的讲解,又便于学生在课后通过流程图了解程序设计的思路进行复习或思考,从而避免由于对识读程序的困难造成理解上的不便。我曾试图让学生没看流程图而直接通过程序语句来理解程序设计思路,与让学生通过流程图来理解程序设计的思路相比,显然前一种方式对学生来说要困难得多,而且时间长了就很难再理解,而通过流程图显然更容易,即使时间久了重新识读起来也相当容易。
不要把控件的功能及属性单独介绍。以Visual Basic语言为例,很多教材都是以顺序结构、选择结构、循环结构、常用控件的顺序来组织教学,我认为这样让学生感到很枯燥。因为很多实例在内容上涉及许多数学的知识,而学生本来数学基础就很差,这样学生厌学的情绪会增加,既不利于教学,又不利于学生学习。因此在教学中应把后面要掌握的控件分别有意识地穿插在顺序结构、选择结构、循环结构课堂的实例中,让学生生动地用各种控件结合顺序结构、选择结构、循环结构程序实例来学习程序设计。一方面,学生不仅有浓厚的兴趣而且很容易体验到成功的喜悦,另一方面又联系紧密、节省课时。当然这样穿插教学,程序样例的选择就非常关键,每个样例都要精挑细选,每节新课牵涉到的控件以1~2个为宜,否则控件太多的话就会造成课堂时间不足,学生掌握得也不好。
最后就是子程序与参数的传递要放在该门课程快结束时再介绍。这部分内容对学生来说相对较难,特别是参数传递,若在学生还未掌握好程序设计或程序设计还不熟练时就介绍,学生就会思路混乱,从而增加学习难度。若学生都已经能熟练地进行程序设计,在此基础上再进一步地增加子程序与参数的传递的知识,就会锦上添花,学生和老师都会有事半功倍的体验。
当然,对于教材中的其他内容,则基本上根据教材编写的既定内容进行讲授。以上是我在高级语言程序设计教学中的体会,至于是否适应其他老师的课堂教学要求,还要在实际教学中进一步探讨。
参考文献:
[关键词]C语言程序设计 探究教学 实施目标
中图分类号:TP312.1-4 文献标识码:A 文章编号:1009-914X(2014)17-0126-01
一、 C语言程序设计探究教学实施的目标:情感目标、能力目标和认知目标
1、体验C语言程序设计的编程思想,激发和保持对C语言程序设计课程的求知欲,形成积极主动地学习和参与C语言程序设计课程探究活动的态度。
2、能辩证地认识C语言程序设计对社会发展、科技进步和日常生活学习的影响。
3、获得亲自参与研究探索的积极体验、培养严谨的科学态度。
4、能从日常生活、学习中发现或归纳可以利用C语言程序设计解决的问题,通过问题分析确定程序功能。
5、能根据任务的要求,确定所需信息的类型和来源,并鉴别信息的真实性、准确性和相关性。
6、掌握计算机程序的基本概念,理解并掌握C语言程序设计语言的基本知识,包括语句、数据类型、变量、常量、表达式、函数等,熟悉语言的语法规则,熟悉计算机程序执行的基本过程。
7、了解C语言程序设计语言,掌握编写程序、编译程序、连接程序以及程序开发环境等基本知识,掌握调试、运行程序的基本方法与技巧。
二、C语言程序设计探究教学实施的条件
1、掌握一定的计算机操作基础
C语言程序设计课程由于其学科自身的特点,需要在计算机上调试程序,所以要求学生具有一定的计算机操作知识,如:开关机、键盘和鼠标的使用、文件的建立与查找、常用软件的使用等。
2、良好的C语言程序设计认知结构
认知结构就是学生头脑里的知识结构,是学习者观念的全部内容和组织。奥苏伯尔的认知结构理论是针对新学习内容的影响(即迁移)提出的,良好的认知结构有利于知识的提取和正向迁移。C语言程序设计探究教学强调在已有知识经验上的主动建构,面对新的问题和任务,需要学生及时从头脑中提取信息,建立新旧知识间的联系,在已有C语言程序设计知识的基础上思考解决新问题的办法,并试图将新知识纳入自己的认知结构中。
3、良好的探究环境
良好的探究环境是学生顺利进行探究的保证,至少包含两方面的内容:(1)要有充足的探究时间和灵活的探究条件。探究时间应该根据学习任务进行合理安排,应该考虑到学生假设错误时所耽误的时间以及讨论交流所需要的时间。探究教学中可能需要查阅大量的资料,教师还应该准备书籍、网络等辅助资源。(2)学生在探究学习的时候不能有太多压力,不同的学生由于其自身的因素不可能以相同的速度学习,所以教师在进行评价的时候也应该因人而异,应该为每个学生提供充分的思考机会和时间,让每个学生都能以自己的进度进行探索,并在此过程中感受到乐趣。
三、C语言程序设计探究教学情境的创设
心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提高活动的质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在于引出教学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C语言程序设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境不平衡,引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活动和将来的活动联系在心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提高活动的质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在于引出教学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C语言程序设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境不平衡,引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活动和将来的活动联系在一体。探究教学情境的创设应做到:(1)创设的情境是为C语言程序设计教学服务的,要以C语言程序设计探究教学目标为依据。(2)探究情境要接近学生的真实生活经验,能够吸引学生的注意力,激发他们的认知冲突和求知欲。(3)学生在情境中能够感觉到问题的存在,自然地将新旧知识联系起来。(4)情境中必须包含学生未知的新内容,而且是能够通过探究掌握的。
四、C语言程序设计课程中的探究形式
C语言程序设计课程中开展探究教学主要有4种形式:探究性提问、探究性讨论、探究性演示和探究性实验。这4种形式是相辅相承的,而不是孤立存在的,在C语言程序设计探究教学中,需要用到多种形式来构成一个完整的探究教学过程。C语言程序设计探究教学通常都是由探究性提问开始,然后进行探究性讨论、探究性演示或探究性实验;也可能从探究性演示或探究性实验开始,在演示或实验的过程中发现问题,再进行探究性讨论。在实际教学过程中,要根据学习内容和课堂情况灵活地选用这些形式。
五、C语言程序设计探究教学评价
教学评价指依据一定的标准,通过各种策略和相关资料的收集,对教学活动及其效果进行客观衡量和科学判定的系统过程。C语言程序设计探究教学评价是对C语言程序设计探究教学过程及其影响的测量、分析和评定,评价中我们更关注学生学习和成长的过程,寻找适合学生发展的学习方式,满足学生知识和能力发展的需要。评价对探究教学的积极作用是很明显的,但是如果评价指标制定不合理,或者评价方法的选用、评价结果的表述不当,不仅不能达到预期效果,还会对学生的C语言程序设计学习产生消极影响。
参考文献
[1] 《基础教育课程改革纲要(试行)》教育部文件,教基[2001]17号.
[2] 保罗 朗格朗.终身教育引论瞰[M].北京:中国对外翻译出版公司,1985,p15~31.
[3] 联合国教科文组织.学会生存――教育世界的今天和明天[M].上海:上海译文出.
版社,1979,p2.
[4] 张大均。教育心理学[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉乐.探究教学论[M].重庆:西南师范大学出版社,200l.
关键词:C语言;程序设计;for循环语句;程序算法
中图分类号:G433 文献标识码:A 文章编号:16727800(2013)003018403
0 引言
设计程序就好比写文章和盖房子,写文章要有文章结构,盖房子要事先设计房子的建筑结构,设计程序则要有程序结构。早在1966年,Bohm和Jacopini提出了程序设计的3种基本结构:顺序结构程序设计、选择结构程序设计和循环结构程序设计,并且已经证明所有程序都可以由这3种基本结构组合而成。其中,循环结构程序设计是《C语言程序设计》中最重要和最难掌握的一种结构,几乎每一个实用的程序都少不了循环结构。因此,循环结构程序的教学内容对《C语言程序设计》的学习非常重要,在《C语言程序设计》中提供了3种循环语句:while循环语句、do~while循环语句和for循环语句。其中,for循环语句是最难掌握和最难使用的一种语句,是整个C语言程序结构中的一个重点内容,也是初学者最难理解的一种语句。在《C语言程序设计》中,for循环语句是最常使用的“计数”型循环结构语句。解决实际问题时,一般情况下,如果题目中明确给出循环次数,应该首选for循环语句设计程序,因为for循环语句看起来结构最清晰、最紧凑,在语句结构中循环结构程序设计的四要素一目了然,而且执行效率高,使用灵活,可以完全取代while语句和do~while语句。当然,对于一些循环次数不明确的问题,同样也可以使用for语句来解决。
1 教学问题分析
for循环语句是3种循环语句之一,一般情况下,教学是在学生掌握了《C语言程序设计》的基本语法知识、顺序结构和选择结构,学习了while循环语句和do~while循环语句后,对循环结构程序设计的进一步学习。for循环语句对于那些没有学习《C语言程序设计》的初学者来说,的确有点难度。但是,学好for循环语句对后续章节内容的学习相当重要,因此,作为教师一定要清楚学生学好for循环语句的重要性,明确教学目标。对于学生而言,能够灵活地使用for循环语句解决实际问题,并非一件容易的事情。在多年教学实践中,笔者发现学生学习for循环语句时主要存在以下几个方面的问题:①不清楚什么样的问题需要循环结构来处理;②对for循环语句的执行过程不易掌握和理解;③不能灵活地使用for循环语句解决实际问题;④编写的程序经常出现死循环。2 教学问题解决
教师在教学过程中如何取得良好的教学效果,并很好地达到教学目标,离不开教师的“教”和学生的“学”,如何“教”和怎样引导学生“学”是教师所要探讨的问题。整个教学过程的教学设计、教学环节、教学方法、教学手段和教学思路都特别重要。对《C语言程序设计》这门课程中的for循环语句来说,根据知识点的特点,主要应采用案例教学法和任务驱动教学法,并通过迁移式指导的学习方法,引导学生学会如何运用新知识解决实际问题。
在教学活动中,学生掌握for循环语句的格式,并能够正确地理解for循环语句的流程和功能,对于学生学习和使用for循环语句来编写程序相当重要。所以,本节课的重点确定为“掌握for循环语句的结构”。学生掌握for语句的结构和用法并不困难,难的是在实际应用中,如何分析问题、解决问题,使程序变得更加简洁、高效。因此,本节课的难点确定为“for循环语句的应用”。为了取得良好的教学效果,让学生很好地掌握for循环语句,根据知识点的特点,设计的教学思路是:厚基础、抓重点、破难点。根据知识点难易程度的不同,把教学新内容由易到难、由浅入深地划分为3个层次进行讲解。
第一:讲解for循环语句的一般格式和流程。
在教学过程中,主要采用的办法是把教材原本复杂的内容简单化,变得易于理解和掌握。针对语句格式,首先讲解语句的一般格式:
for(表达式1;表达式2;表达式3)
{ 循环体语句; }
进一步讲解易于理解的应用格式:
for( 循环变量初始化;循环控制条件;修正循环变量 )
{ 循环体语句; }
最后讲解简化为容易掌握的四要素格式:
for( 1 ; 2 ; 4 )
{ 3; }
同时,为加深学生对知识点的理解,将for循环语句与while循环语句、do~while循环语句进行比较学习,并且强调应用for语句格式应注意的事项。
针对语句的流程,并没有讲解教材中描述的复杂流程图,而是想办法把复杂内容简单化后再讲解。在for循环语句四要素格式的基础上,给出一种能够将语句的流程在语句格式上体现得清晰、明了的 “语句格式流程图”。见图1。
在讲解了语句格式和流程后,紧接着采用案例教学法和任务驱动教学法,引导学生自己设计一个简单程序:运用for语句在屏幕上输出20个“*”。主要目的是给学生创造一定的条件,引导学生主动探索、独立思考、发现问题、分析问题和解决问题,以培养学生的探索精神和自学能力,从而提高学生学习新知识、解决新问题的能力。
第二:讲解for循环语句灵活多变的语句格式。
for循环语句灵活多变的格式是学习for循环语句的重点内容。紧抓重点,在教学活动中主要采用迁移式指导的学习方法,教师“举一”,主要以输出20个“*”的问题为例,培养学生“反三”,反复变化for语句的格式来解决同一个问题。结合循环结构程序设计的四要素,对for循环语句的各种形式进行详细地剖析,并且演示程序的运行结果,使学生完全透彻地理解for语句灵活多变的结构。从而解决教学的重点内容:for语句的结构,并从中拓展以提高学生对知识点的学习。
第三:for循环语句的应用。
运用for循环语句解决实际问题是教学的难点所在。教师在授课时应尽量结合生活中的实际问题,讲解程序设计的基本思想和方法。既让学生掌握for循环程序设计的思路和方法,同时教会学生学习新知识,并培养其解决实际问题的能力。在教学活动中通过解决一个实际问题:判断素数(输入一个正整数m,判断它是否为素数),来突破教学的难点内容。教学活动中采用了案例教学法和情景教学法,并辅以任务驱动及讨论的方式。从问题的概念出发,教学活动通过如下的一系列问答来开展:
问:什么是素数?
答:除了1和它本身,不能被其它数整除的数叫素数。
问:17是不是素数?
答:是。
问:你们是怎么知道17是素数的?怎么才能让计算机明白?
答:从2开始一个一个去找,看是否能找到一个能被17整除的数,如果找到了,就不是素数,如果找不到,就是素数。
教学的目的是为学生创造自主体验的情景和语言描述的情景,使学生在课堂上处于主体地位,并且为学生提供良好的暗示和启迪,从而锻炼学生的创造性思维,以培养学生的适应能力为目标。在学生主动参与教学活动的前提下,详细讲解算法分析,从而获得良好的教学效果。
算法分析如下:
判断一个数m是否为素数,需要判断该数是否能被除了1和自身以外的其它数整除,即判断m能否能被2~m-1之间的数整除。运用C语言算术运算符中的求余运算来判断整除。
设i取值\[2,m-1\],如果判断m不能被该区间上的任何一个数整除,即对每个i,m%i都不为0,则m是素数;但是只要m能被该区间上的某个数整除,即只要找到一个i,使m%i为0,则m肯定不是素数。显然,这个判断过程是一个循环问题。
从数学的角度考虑,m不可能被大于m/2的数整除,所以上述i的取值区间可以缩小到\[2,m/2\]。
引导学生编写程序代码如下:
#include
void main ( )
{ int i , m ;
printf (“ 请输入m的值:”);
scanf (“%d” , &m);
for ( i=2 ; i
if ( m%i==0 ) break ;
if ( i>m/2)
printf (“%d是一个素数\n” , m);
else printf (“%d不是素数\n” , m);
}
数学上可以充分证明,i的取值区间还可以缩小到\[2,sqrt(m)\]。从减少判断范围的角度出发,进一步优化程序的算法,编写出更加简洁、高效的程序,从而提高学生的程序设计能力,激发学生的编程兴趣。
#include
#include
void main ( )
{ int i , m ;
printf (“ 请输入m的值:”);
scanf (“%d” , &m);
for ( i=2 ; i
if ( m%i==0 ) break ;
if ( i>sqrt(m))
printf (“%d是一个素数\n” , m);
else printf (“%d不是素数\n” , m);;
}
为巩固学生对新知识点的掌握,安排课堂作业:仍然解决判断素数的问题,在以上讲解的基础上,引导学生从排除偶数的角度出发,进一步优化程序的算法,要求学生分组讨论问题,课堂完成作业。教学设计的主要目的是实现学生情感目标的培养,增强学生的编程兴趣,提高学生的学习积极性。
3 循环程序实现要点
实现循环结构程序必须具备4个组成部分:循环变量的初始化;循环控制条件;循环体语句;循环变量的修改。其中,最关键的是要确定以下两点:①归纳出哪些操作需要反复执行?――循环体语句;②这些操作在什么情况下重复执行?――循环控制条件。只要明确地分析出循环体语句和循环控制条件,那么循环结构也就基本确定了,再根据具体问题,加上循环变量的初始化和循环变量的修改,最后从《C语言程序设计》提供的3种循环语句中选择一种具体循环语句来实现程序代码。
4 结语
for循环语句在整个《C语言程序设计》的学习中相当重要,在程序设计中几乎是无处不用。因此,在教学过程中一定要想办法让学生很好地掌握for循环语句,为学好《C语言程序设计》打下坚实的基础。
参考文献:
\[1\] 廖雷.C语言程序设计\[M\].北京:高等教育出版社,2002.
[2] 谭浩强.C语言程序设计\[M\].北京:清华大学出版社,2000.
[3] 杨起帆.C语言程序设计\[M\].杭州:浙江大学出版社,2006.
论文摘要 针对现阶段程序设计语言教学中存在的普遍问题,在对程序设计教学思想、程序设计能力认识分析的基础上,提出程序设计语言教学中的若干要点。
1 引言
在计算机专业和非计算机专业的计算机教学中,学校几乎都设置了高级语言程序设计课程。与一些应用软件或工具软件相比,编程课程的教学具有较大的灵活性。很多学生的学习能力较差,课后不肯花时间,久而久之,导致听不懂,给计算机编程语言课的教学带来一定的难度。采用何种教学模式进行教学就成为编程语言教学的一个关键。
2 现阶段程序设计语言教学中存在的普遍问题
根据以往的教学经验和通过与学生、同事之间的交流,得知部分学生反映上课时都能听懂讲解,可在涉及到具体的编程及上机操作时,往往会出现没有思路、无从下手或错误百出,不会调试程序等各种情况,究其原因,在教学方面可能存在以下2个问题。
2.1 过于注重对语句语法的讲解,缺乏以算法为核心的编程题教学教师钟情于举一反三地对使用语句、语法的深入教学,而不是有机地结合算法思想进行教学,贴近生活并引起学生兴趣的编程题讲得很少。由于教学不是站在如何应用计算机工具编程解决实际问题或实际项目的角度,就没有把逻辑与编程解题思路放在主体地位,也就没有很好讲解如何分析问题和解决问题。结果导致学生程序设计能力、上机解题能力训练不够,更谈不上引导学生进行课题研究和科研探索。
2.2 学生厌倦传统的课堂教学,缺乏师生之间的沟通交流学生对于先讲后编、先听后编这一传统的课堂教学方式有厌倦心理。课堂成了教师的“一言堂”,教与学不能衔接起来。有时教师为了赶进度,讲授法成了唯一的教学方法,师生之间缺乏足够的交流和沟通,学生没有有效、实用的学习辅助途径,也间接影响着学生的学习兴趣和学习效果。
3 程序设计教学思想解析
学生与教师的角色改变,就是教与学相互渗透的结果。教学中突出学生的主体能动性,是现代教学方法的核心。教学过程是教师根据教学的目的和任务以及学生身心发展的特点有计划地引导学生掌握知识、认识客观世界的过程,是通过知识的传授和掌握来促进学生身心全面发展的过程。而在教学过程中一定要按照教学规律,只有按照教学规律办事,才能提高教学质量,增强教学效果,并促进学生思维的拓展和能力的提高。
教学应该在理论与实际的结合过程中传授和学习基本知识,从而引导学生运用所掌握的知识去分析问题和解决问题,在动手实践中达到培养学生手脑并用能力的目的。除了进行一些必要的概念讲解之外,教师主要应该让学生通过上机实践的办法来掌握所学内容。一方面,通过上机实践可以加深对课堂理论内容的理解和掌握;另一方面,通过上机实践可以提高学生上机调试程序的能力,提高学生的编程能力,提高学生分析问题和解决问题的能力。
4 程序设计能力认识
程序是软件的本体,程序设计(Programming)是指设计、编制、调试程序的方法和过程。它应排除软件开发中的工程与管理因素,主要指软件开发过程中的技术因素,尤其是计算机技术因素。
根据调查分析,合格程序员必须具有:1)扎实的专业基础知识;2)很强的综合分析和解决问题的能力;3)熟练的编程调试能力;4)创新能力;5)团队合作能力;6)持续的自学能力;7)强烈的好奇心;8)较高的英语水平和软件工程的实践能力等。
应看到,程序设计能力,并非完全等价于程序员所应具备的专业素质,它还包括其他一些内容,如:1)理解问题,根据已知条件,找出求解该问题的数学方法或建立相应的数学模型;2)归纳程序的基本功能;3)设计数据结构和算法;4)用程序设计语言实现算法描述;5)编译与调试;6)测试程序,保证程序正常运行。
综上所述,可以将程序设计能力定义为:依据程序设计思想与观念,应用程序设计语言,采用相应程序开发技术和环境,进行程序设计并达到预计结果的程度。
5 程序设计语言教学要点分析
基于对程序设计教学思想、程序设计能力的认识,为使学生充分掌握程序设计的思想和方法,有效实现程序设计课程教学目标,我认为程序设计教学还应注意并强调以下几个基本的教学任务和要求。
5.1 程序设计基本概念的灌输在整个课程教学过程中,结合具体实例的演示,应向学生反复强调程序,注意学生程序设计中基本概念的理解。学生只有对程序设计基本概念有了正确的掌握,才会为以后课程学习打下基础,为学习兴趣培养埋下伏笔;同时程序设计作为一门特殊意义上的课程,包含了许多计算机用于数据处理的基本原理、基本过程和特点,这些知识蕴藏于程序的基本概念之中,同时这些概念也是程序设计思想与观念的载体。
5.2 结构化程序设计基本概念的培养结合控制语句结构和函数的学习,应着重培养学生的结构化程序设计的基本观念。结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构,它是程序设计的基本原理之一。贯彻课程始终、通过具体实例潜移默化地培养这一思想,比在软件工程中空洞的说教,更容易被学生理解和接收。
5.3 计算机算法观念的培养通过控制结构、函数等学习,初步培养学生在程序设计中的算法观念。如同数据结构观念培养一样,一则增强学生的程序设计观念,二则也为学生留下广阔的思考空间,以增强学习兴趣。再次,通过这种观念的培养,能够直接提高学生初步的程序设计能力。
5.4 通过优秀的有趣的实例,激发学生学习兴趣恩格斯说“兴趣与爱好是最好的老师”。为了使初学者能尽快地掌握计算机知识,进入计算机的应用领域,在课程讲授过程中,要特别注意培养学生的学习兴趣。学习兴趣就是学生在心理上对学习活动产生爱好、追求和向往的倾向,是推动学生积极主动学习的直接动力。学习兴趣直接关系到教学效果的好坏。为提高学生的学习兴趣,笔者归纳出6个办法:1)通过演示程序突出程序语言的实用性;2)通过简单的编程练习突出语言的易学性;3)运用恰当的类比使复杂问题形象化、简单化;4)做到一题多解;5)要善于举一反三;6)通过解决实际问题使学生乐学。
5.5 有选择地运用多媒体教学直观、形象、便捷的多媒体教学可以使学生在有限时间内迅速理解、掌握、获取更多知识和信息,在教学过程中,我们有选择地使用多媒体教学,将编程语言语法中的深奥理论和逻辑推理的内容,运用多媒体教学直观、形象地讲授给学生,加深其对问题的理解。这样的多媒体教学,收到了将抽象问题形象化、枯燥问题生动化的效果。对于多媒体教学不易实施的程序设计方法的讲解,我们可以采用传统的教学方法,教会学生如何思考、推理,如何用语句实现算法,培养了学生的抽象思维、逻辑推理能力。这样,将传统的教学方法与多媒体教学相结合,大大提高了学生的综合思维能力。
5.6 教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,留给学生时间思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。
5.7 充分利用上机实践程序设计语言,学生与教师在理论课与实践课的角色是不同的。教师从课堂上的教学组织者转变为上机操作的指导者。作为教学组织者,负责知识点的传授,此时教师有较充分的主动性,易于控制所传递的知识内容,可使学生在较短时间内获得较多的知识。但学生只是被动地接受知识,学生的积极参与少。上机操作是实现检验计算机编程语言课堂教学效果的重要方面。此时的教师是上机的辅导者,学生亲自动手、动脑参与教学活动。但是上机操作课对学生来说是轻松的,若教师管理不当,会造成学生无所事事的局面。上机课是对理论课的应用和检验,对教师有更高的要求,因此,上机操作前教师要根据知识点布置相应的练习任务,编程序或调试程序。同时学生要完成有针对性的上机报告,进一步巩固上机成果。
5.8 布置代表性的作业做作业是复习、练习的过程,也是继续和深入学习的过程。我们每次课后给学生布置一些有代表性、恰当的习题,以巩固课堂上所学的内容。也通过学生所做作业的好坏来了解学生对课程内容的掌握程度以及教师的教学效果。对作业中比较普遍出现的错误,我们都要在下节课上当堂讲解,因为那是在上节课没讲清楚所致。作业中表现出与众不同的、新颖的程序设计方法和思路,也要当堂宣讲或作业批注,以鼓励这种另辟新径的有创意的学风。
在程序设计语言教学中,尤其语言基本要素的讲解过程中,或隐或显地,把如上几点教学内容纳入到课堂中,程序设计语言教学必定会从一种就语言而教语言的呆板模式中走出来,充分发挥出其在程序设计能力培养中的作用。
关键词:研究;计算机编程思想;结构化程序设计思想;面向对象的程序设计思想;AOP编程思想
中图分类号:TP3文献标识码:A文章编号:1007-9599 (2012) 05-0000-02
随着经济社会的发展,信息技术也迎来了前所未有的快速发展,计算机编程的应用范围也愈加广泛。而其中的编程思想,作为一个主要条件,可以使编程人员编出更好的程序,本文分析了目前编程界最为主流的两种计算机编程思想,同时和将要兴起的新技术AOP,与OOP相比,其影响力巨大。因此,本文分析了其编程思想以及优越性,还阐述了开发步骤。
一、计算机编程思想研究
(一)结构化程序设计
对于结构化编程思想,其为面对繁杂任务的时候,防止混乱的一种编程思想,重视将程序结构进行规范化,要按照大脑极易理解的方式,合理组织繁杂问题的求解过程。针对此编程思想,编程者应该遵循结构形式,进行程序的设计及编写,保证程序的正确结构,方便地进行程序正确性的证明,该思想重点有以下几点内容:
运用由顶往下逐渐细化的方法。因为结构化编程运用了功能抽象与模块分解,其能合理地把繁杂程序任务分解为容易处理及控制的一些子任务,随后实施级别更细的任务分类,保证最终分出的子任务均是进行独立编程的子程序模块。随后根据某些调用以及结构关系,将子程序模块进行合理组织,最终得出需要的程序。根据结构化程序设计思想,得出的程序具有如下好处:很好的结构、每个模块之间有着简单清楚的关系、在各个模块内,均有基本单元构成。因此,得出的程序清楚易读,良好的可理解性,正确性还易验证,维护、调试以及修改容易进行。出现了结构化编程思想,使之前软件开发存在的混乱状况消除,编程人员编写的程序存在优越的结构。还因为运用“自顶向下以及逐步细化”的方法,使人们智力合理地组织起来,对软件工程化研发是有益的。所以程序维护以及设计工作效率得以提升。
若干基本结构构成程序,对于任意的大型程序,均包括三种基本结构,这些基本结构使某个结构化的程序得以顺序地组成。主要有顺序、选择以及循环结构这三种基本结构。软件界的具体实践以及结构化定理已证明,对于任意繁杂问题的程序设计,均可运用顺序结构、选择结构以及循环结构构成,同时还具备下面一些特征:仅一个入口及出口;在结构内,没有死循环,在程序内,以上三种基本结构的顺序执行关系得以构成。
根据功能,能把大型程序划分为若干基本功能模块。一些子模块一起构成各个模块,每个模块在功能方面互相独立,各个功能模块均有进行计算机控制以及数据处理的功能。尽量使模块间的联系简洁。最终将模块根据某些层次关系,实施组织,繁杂程序的功能得以构成。
(二)面向对象的程序设计
针对面向对象的程序设计,其编程思想是运用消息、对象、类、继承以及封装等这些基本概念,实施程序设计。为使结构化程序设计方法处理不了的代码重用这些问题得以解决,便给出了面向对象程序设计技术,面向对象的程序设计编程思想包括如下特点:面向对象的特点之一就是封装,其为类与对象概念的重要特征。封装给模块带来了比较良好的独立性,程序修改与维护起来较为简单。抽象包括数据与过程抽象。继承性使软件的可重用性这个问题得到良好处理。多态性使应用程序函数的同名这类问题得到良好解决。
面向对象的编程思想存在很多优越性,其减少了程序开发时间,提升了可靠性,开发出来的程序更有强壮性,维护起来更容易。面向对象编程因为具有较高的可重用性,针对应用程序,能积极运用成熟的类库,进而使软件开发效率得以极大提高,所以,软件界对这种面向对象的编程思想进行提倡运用。日益增多的编程人员认可并运用了面向对象的编程思想,同时结构化编程思想在进行具有比较强功能性的软件设计里,其指导作用仍然得以发挥。实际上,以上两种编程思想没有互相隔离,却是相互支持、联系的。在如今的软件界,进行面向对象程序设计的时候,具有公认的编程公式:其一为对象=算法十数据结构,其二为程序=对象+对象,通过公式,能观察出以上两种编程思想的关系及区别。进行面向对象的程序设计时候,仍然不能脱离完成算法的结构化程序设计,其中的结构化程序设计还是编写对象进行操作的重要所在。
二、AOP编程思想研究
(一)AOP将系统视为关注点
其实它为GOF(Observer Design Pattern)设计模式的一种持续,进行了被调用者与调用者间解耦的强调,给开发人员带来进行横切关注点-Crosscutting Concern描述的合理机制,还可以把横切关注点主动地织入-weaving于面向对象的软件系统内,确保横切关注点模块化得以实现,进行方面-Aspect代码的合理划分,横切关注点显得极易进行处理。开发人员进行编译的时候,插入、更改或者除去系统的方面,更可能重用系统的方面。由于开发环境各不相同,关于概念也会有所不同。
(二)针对的问题
AOP通常基于进行业务处理中的切面实施提取,进行处理的时候,其面对着其中的一个步骤或者哪个环节,以确保整个逻辑中每个部分间低耦合性产生的隔离作用。针对动词方面,其重视的为横向的,即为整个逻辑中一个方面或者某个片段,例如:权限以及日志管理,一般情况下,其进行某些软件系统自身东西的关注。并非面向对象进行业务逻辑的关注。运用有效松散方式,使系统间的耦合度这些问题减少,方面即为它的模块化单位。
(三)软件性能
1.代码扩展性
对于AOP,因为方面模块并不了解横切关注点,因此极易进行新方面的增加,并投入新功能。同时,把新的模块加到系统中的时候,已经存在的方面会自动横切进入,确保系统容易扩展。
2.代码冗余度
运用最小的耦合进行各个关注点的有效处理,保证虽然为横切关注点,还是模块化。如此实现的系统,它的代码冗余不大。进行模块化实现,促使系统的维护与理解更为容易。
3.代码重用性
AOP将各个方面变成为独立模块,在模块间,其为松散耦合。能使用其它独立的日志写入器取代此时的,进而将日志合理地写入数据库中,保证与各种日志写入要求相符。正确实现松散耦合,经常象征着代码重用性更为良好。
(四)AOP的开发程序
基于面向对象编程-OOP这种方法,AOP才得以改进,其为具有创新性的一种软件开发方法。一般具有如下的几个开发程序:
1.方面分解
进行分解,要得出横切关注点。在这个步骤中,将系统级的横切关注点与核心模块级关注点进行合理分离。
2.关注点实现
进行关注点的独立实现,将各个需求映射成为代码,编译器随后将其翻译成为一些可执行代码。能依靠另外的编程范型,把其当作前提,确保基础范型具有的优势还得以保留。比如:AOP能利用OOP当作基础范型,直接地将OOP擅长处理普通关注点的优势引用来。利用如此的实现,一般的独立关注点能利用OOP技术,其和过程型语言为很多OOP语言的基础相似。关注点实现因为按照指定过程这一形式产生,能运用C、C++或者Java这些传统语言。
3.方面的重新组合
在此步骤中,方面集成器进行某个模块单元的建立,也就是方面,进行重组标准的指定,常把重组过程称为结合或者织入,运用合适的信息进行最终系统的组建。
AOP实现能够运用许多方式进行织入的实现,进行源码至源码的变换,进行各方面源码的预处理,织入过的源码得以出现,再将织入过的源码传到编译器,最终可执行代码得以生成。运用此方式,基于Java的一个AOP实现,能将很多方面变换为Java源代码,随后通过Java编译器,将其变换为字节码,还能处于字节码级别进行织入的执行,实际上,字节码自身也为一种源码。同时,对于底层中的执行系统Java虚拟机,还能设计成为对AOP支持。基于Java的AOP实现要是运用此方式,能在虚拟机中,把织入规则载入,随后就之后载入的类均利用此规则,实际上,其能进行just-in-time方面织入的执行。
三、总结
由于编程实践的一直开展,编程思想就会产生,产生的各种新编程思想,均对编程实践进行合理指导,且均使计算机软件开发的质量与速度得以提升。在当今,AOP实现与语法尚未进行完全规范,其为基于OOP以后的编程思想的一种创新,其能选用OOP当作基础范型,具有让人无法抗拒的好处,业界会进行认可、接受,但是还要更深刻地探究其中存在的问题。
参考文献:
[1]李明.C++程序设计[M].北京:中央广播电视大学出版社,2008:l96-198
1.思维导图
思维导图(Mind Maps)是英国人东尼?博赞(Tony Buzan)在20世纪70年代提出的一种先进的记笔记方法,一般通过带顺序标号的树状结构来实现思维过程,它是以图和直观形象的线条进行思考和表达的,并将放射性思考实现具体化。国外的一些世界500强企业,如微软、IBM、惠普等,都是思维导图的第一受益者和倡导者。思维导图主要由图像、颜色、曲线和关键词等元素构成,其主要特点有:主题主干作为分支呈放射状、注意力主要集中在中央图形上、分支构成一个连接的节点结构体系、由关键词或关键图形构成分支。
2.“C语言程序设计”课堂教学的现状
《C语言程序设计》是一门理论与实践并重的程序设计课程,教学难度较大,对于很多知识,学生总是似是而非,概念模糊,不能完全理解和掌握。
目前,《C语言程序设计》课程教学情况主要表现在以下几个方面:
(1)在教学模式上,教师多采用多媒体教学,课堂理论加上机实验的教学模式,课堂理论为主;
(2)在教学手段上,教师按照CAI教学课件进行讲解,学生所接受的都是零散的知识,这一节课学完,下一节课可能就忘记了最基本的知识点;
(3)在教学方法上,以教师讲授为主,缺乏师生互动和驱动式任务教学,对于课程和章节,学生也不能从整体进行认识和掌握;
(4)在实验环节中,由于学生对基础理论知识掌握的不够扎实,在上机课时,只是机械的照搬教材代码,以验证课堂内容为主,不能很好地理解程序的编程思路和方法,以致于课程结束时,学生不能很好地开发一个小的C语言程序。
为了加强学生的逻辑思维能力,提高学生学习效果,我们将思维导图这一教学方法应用在《C语言程序设计》课堂教学中。
3.思维导图在C语言程序设计课堂教学中的探索
在《C语言程序设计》这门课程中,教学内容非常多, 包括程序设计基础知识、常量变量、数据类型和表达式、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、指针、用户自己建立用户类型、文件的输入输出等。
(1)课程的综合性设计。由于C语言内容较多,学生对知识只是进行线性的接受,不能对课程形成整体的认识,因此,首先对课程进行整体设计。
采用XMind思维导图设计软件,对C语言课程整体结构图进行设计,如图1所示。
在第一节课授课过程中,教师采用思维导图呈现给学生这门课程的整体结构,学生头脑中能够对课程有整体的认识和了解,有助于提高学生的学习兴趣和求知欲望,便于学生进一步学习。
(2)章节的连续性设计。C语言中的三种程序设计结构在知识讲授结束时,要进行章节的总结,将三种程序结构的相关知识以思维导图的形式展现出来,一方面不仅可以加深了学生对知识的理解和掌握,另一方面也潜移默化地引导学生主动学习和对知识连续记忆的能力。
(3)知识点的扩展性设计。在引入新章节时,教师首先向学生展示章节完整的思维导图,将其作为目标教学的工具。思维导图的运用能使学生明确学习目标、学习内容与范围,以及各知识点之间的先后顺序,能够更形象、更直观、更全面的表述学习进度目标。以循环结构一章为例,教师首先给出整体的章节结构,同时每个知识点都可以进行扩展,辅助学生记忆。
(4)学生的自主性设计。在进行章节复习时,教师展示章节完整思维导图的同时,引导学生自行绘制出思维导图,教师也可以只给出提示或关键词,引导学生建立内容全面、详实的思维导图,从而建立自己的知识结构,更好地掌握知识。
教师通过学生设计的思维导图能够发现学生的知识结构和对知识的理解和认知程度,从而更好的优化教学。学生在自我设计过程中,能够及时发现知识的盲点区,不断学习并进行弥补,提高自己对知识的掌握。
初中信息技术选修部分主要介绍VB程序设计,学生刚接触到它会感到陌生,并带有一种神秘感,认为程序设计一定很难,只有高手才能学会编写程序。有了这样的想法,就为教师的教学带来一定的困难。那么,程序设计这部分内容怎样教,才能让学生顺利地掌握这些内容,为升入高一级学校继续学习程序设计打下坚实的基础呢?经过几年的程序设计教学,要让学生掌握以下几个方面,就会很轻松地完成教学目标。
一、什么是程序和程序设计
首先要让学生理解什么是程序。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。要让学生理解它,必须从学生熟悉的实例入手。教材中举了一个“猎人过河”的趣味问题,猎人怎样顺利一把一只狼、一头羊和一些白菜带过河,只要按照如下的指令做,就能顺利过河:
第1条:把羊带到对岸;
第2条:返回;
第3条:把狼带到对岸;
第4条:返回时把羊带回原岸;
第5条:把菜带到对岸;
第6条:返回;
第7条:把羊带到对岸。
通过执行这些有序的指令完成了“猎人过河”这一具体的工作,这些指令的集合就是程序。这个程序是用人类语言描述的,计算机不能识别,如果用计算机能识别的语言来描述这些指令,这就是计算机程序。
其次要知道什么是程序设计。程序设计是给出解决特定问题程序的过程,可以用一个公式来说明:程序设计=数据结构+算法。
按照百度百科的定义:数据结构求助编辑百科名片数据结构是计算机存储、组织数据的方式;数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
如果把程序设计当成盖房子,那么数据结构就像砖、瓦,而算法就是设计图纸。你若想盖房子首先必须有原料(数据结构),但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸(算法)上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,你使用的编译工具中有各种功能语句或基本结构,它们不会自动排列成你要的程序代码。你得按照程序规定的功能去编写,而程序的功能是实现算法的具体体现。所以通俗地说:你必须按照特定的规则,把特定的功能语句和基本结构按照特定的顺序排列起来,形成一个有特定功能的程序,这就是:程序设计=数据结构+算法。
二、学好数据结构是学好程序设计的第一步,也是关键的一步。
三、学好算法,这个是程序设计的重点,也是难点。
四、要让学生养成一个良好的程序设计风格和习惯。
首先,要让学生养成自上向下逐步求精的程序设计思想和方法。怎样才是自上向下逐步求精的程序设计呢。举个例子,有这样一个问题:求1+2+3+…+N。
现在,当你看到这个问题时,你不要立即下手去编写,而是要思考一下怎样才能求解(算法),然后把它写下来以免忘记。于是就写了一级算法:
1.输入N;
2.计算S=1+2+3+…+N;
3.输出S。
当你写完之后,你若觉得第2步不太清晰,还不能写出代码,那就继续求精,二级求精:
2-1.S初始为0;i初始为1;
2-2.第i次循环将i累加到S;
2-3.i每循环一次增加1,直到i等于N后结束。
这样问题就得到了解决,接着就可以轻松的编代码了。再仔细看看上面的步骤:先写出一级算法,如果觉得由此还是得不到源代码,或者是其中有一步还有很多步骤要写,那么就继续求精,直到你认为可以很清晰的写出代码为止。但是求精可以因人而异,像上面的题目,若是一个编过很多程序的人来说,可能不用什么求精,代码就可以直接写出来了;但要是一个初学者来说就可能要写到二级求精。
这样说来,有人可能认为这个求精是不是太慢,抑或根本就是在浪费时间。这可是众多的编程先驱推荐的基本方法。你知道编程中,主要时间用在了哪里吗?不是编写代码,而是用在了求解算法和调试程序上了!而算法的求精就是缩短这些时间的最好的方法。它可以使你不用再很费力的苦思冥想到底该怎样构造算法,使这个过程更条理、更简明;它也很可能使你不用再为了一个小小BUG而调试半天,因为,它给出的算法已经趋于完美。其实,列一个小提纲(算法)就可以解决很多的问题,生活中不也是如此吗?所以,求精算法这个最重要的习惯一定要养成的。
其次,要让学生养成一个良好的习惯就是要做到程序源代码的清晰度与可读性一定要高。
第三,要少用goto语句跳来跳去,虽然增加了编写代码的灵活性,可是却严重破坏了程序的结构化,容易造成程序运行和大脑思维的逻辑混乱,很可能导致一些很不容易发现的错误。而且所有的goto都可以用其他的语句来代替。