时间:2024-04-02 11:29:39
引言:易发表网凭借丰富的文秘实践,为您精心挑选了九篇程序设计的基本结构范例。如需获取更多原创内容,可随时联系我们的客服老师。
关键词:C语言;程序设计;循环结构;教学方法
中图分类号:G642文献标识码:A
1引言
“C语言程序设计”是计算机系各专业的必修课程,属专业主干课,是一门学位课程。也是各高校部分非计算机专业开设的程序设计课程之一。本课程开设的目的是使学生掌握面向过程的程序设计的基本概念,逐步形成正确的程序设计思想,理解结构化程序设计方法;掌握程序设计的基本技术,程序设计的基本组织方法即函数(模块)程序设计;具备调试程序的能力。因为C语言功能强大,程序编写灵活,具有较强的实践性,是一门高级语言中的“低级语言”,既可以用来编写系统软件,又可以用来开发应用软件,因此对学生以后参与专业领域的应用软件的开发和使用会有极大的帮助。C语言是结构化的语言,学好C语言程序设计,能为后续课程(数据结构、编译原理、操作系统、C++、Java等)及其他程序设计课程的学习打下基础。同时,C语言程序设计也是计算机类各种考试所要求的重点课程之一。
2循环结构程序设计
结构化程序设计中包含三种基本技术:顺序结构、选择结构和循环结构。循环结构的程序设计是学生学习了结构化程序设计的前两种基本技术之后的第三种基本技术,是结构化程序设计技术中最重要也是最难的部分。这门课程一般都是学生学习程序设计的入门课程,第一次学习循环,可能难于理解“循环”的含义,在设计程序时正确使用循环也就更困难了。针对这些特点,循环结构程序设计的教学方法和教学手段也就值得探讨。
3循环结构程序设计的教学方法
3.1教学重点和难点
要想学生能够轻松理解和掌握循环结构的程序设计,首先得确定本部分内容的重点和难点。
本部分的重点主要是:(1)循环控制结构及其设计。(2)循环控制语句的应用。教学重点是循环控制语句中的while语句,只要把while语句的使用讲解清楚了,后面的for语句和do-while语句就容易多了。
本部分的难点是循环控制结构及其设计。
3.2突出教学重点与分散难点的方法
为了突出教学中的重点并分散难点,可以从三方面入手:
(1) 从分析问题的重复性入手。学生在日常的生活、学习中能看到、体会到重复这种行为。精心设计实例,给学生一个比较实际的切入点,通过教师的引导,使学生能体查、归纳“重复行为”,从而理解和掌握循环的主要特点:有规律地重复操作。在教师的启发、引导下,使学生在课堂上真正地成为“主体”,教师扮演“主导”角色。在整个过程中,紧紧抓住循环程序设计的思想,采用“自顶向下,逐步求精”的结构化程序设计方法,把重点突出出来,并把难点进行分散,使学生容易理解和接受。
(2) 难点内容,提前做好铺垫。在前面内容适当的地方安排出现循环程序,但不讲它的功能,为讲解现在的内容做好铺垫,打下伏笔。这使得学生的每一步学习都有基础,是一个循序渐进的过程,使学生的学习是在“走台阶”,而不是“三级跳”,效果很好。
(3) 在循环程序设计的应用中,可以从简单公式化的循环入手到复杂非公式化的循环的处理。讲解过程中,通过黑板进行详细分析和讲解,使学生加深学习和理解。适当的地方进行提问,教师引导学生积极参与到分析问题,解决问题的过程中,写出程序后,放到实际的环境下运行,让学生来分析程序的正确性,改正程序的错误,有利于学生理解难点、掌握重点。
3.3教学过程的设计与组织
(1) 提出问题
本部分的内容是循环程序设计,体现在两个方面,一是循环结构程序设计的算法表示;二是循环结构程序的C语言表示。循环程序设计是结构化程序设计中最难、最复杂的部分,而授课对象是初次接触程序设计和循环结构,因此循环的引入就至关重要。例如:通过引入求5!这个简单的例子,运用已经学过的顺序结构程序设计就可以实现;但是求复杂的阶乘,比如20!,任意自然数n!,用已经学过的顺序结构程序设计和选择结构程序设计就难于解决,要用简单的方法解决这样的问题,就必须使用结构化程序设计中的第三种基本技术:循环结构的程序设计。这样就轻松地引入了循环结构程序设计。在引入的过程中,要注重调动学生的积极性,采用互动教学法带动学生的积极性。
(2) 解决问题的方法及讲授新内容
在用问题引入了循环后,第一步,分析用循环控制结构求20!的算法的自然语言和流程图表示。第二步,为了实现这种循环控制行为,C语言提供了多种循环控制语句,while语句就是其中的一种,介绍while语句的一般形式和功能。第三步,讲解while循环语句的应用。在讲解的过程中,为了提高学生的学习效果,达到预期的目标,除了采用常用的教学方法和手段外,还可以采用以下一些教学方法和手段:
① 注重启发、引导学生。教师在讲解分析时,注重启发、引导学生主动分析问题、解决问题。
② 注重采用任务驱动的教学模式。通过提出问题,分析问题,引入新知识,解决问题,总结提高,一步步实现教学的目标。
③ 采用国际上惯用的解析教学法。
④ 把编写的程序放到实际环境下运行。让学生来分析程序的正确性,改正程序的错误,有利于学生掌握好重点、难点知识。
⑤ 应用现代化多媒体教学手段,有利于提高教学效率,便于学生理解。充分利用黑板和投影相结合的方式;分析过程用黑板进行教学,以便体现思维过程。
4结束语
要使学生轻松容易地理解和掌握C语言中的循环结构程序设计方法和技巧,必须在教学的所有环节上都进行认真研究和精心设计。通过对循环结构程序设计的教学,使学生提高综合应用的能力,为今后的后续课程及软件的设计和开发打下坚实的基础。
参考文献:
[1] 徐庆生.C语言程序设计[M].北京:科学普及出版社,2007.
[2] 高牧,杨志强,许兰兰,等. C/C++教学改革的探索与实践[J]. 计算机时代,2005(11).
The Design and Discussion of Programming Course of Iteration Structure Pedagogical
in C Programming Language
SUN Ying, XU Shun-qiong, LI Xing-mei
(Department of Computer Science, Chuxiong Normal University, Chuxiong 675000, China)
摘要:本文在分析了C语言程序设计课程的教学现状和教学困境的基础上,对比自然语言和程序设计语言的共性以及C语言的特殊性,提出了“从概念入手,侧重程序阅读和程序设计能力培养”而非“语法研究”的教学角度。
关键词:C语言;程序设计;教学内容;教学角度
中图分类号:G64 文献标识码:A
1教学现状
在高等学校的本科教育中,“C语言程序设计”几乎成了所有专业的必开课程,从计算机科学与技术、软件工程、网络工程等相关专业,到电子信息类理工科各专业,乃至理工科院校的所有非计算机专业,有的是专业基础课,有的是公共必修基础课,有的是“非计算机专业的计算机基础课”。只是课程名稍有差异,常见的有“C语言程序设计”、“高级语言程序设计”、“C语言”、“C程序设计”、“结构化程序设计”等。无论叫什么样的课程名,也无论是哪类专业,其课程的教学要求和教材选用却无太大差别,只是课时分配差异较大。
从网络调查的16所不同类型高校的“C语言程序设计”教学大纲看,普遍都包含“通过本课程的学习,使学生了解有关程序设计的基本概念、术语及C语言的特点,掌握C语言基本数据类型、语法规则、程序控制结构、常用的标准库函数,培养学生的程序设计技能,初步积累编程经验”的教学基本要求;约百分之八十左右的“C语言程序设计”课程都选用由谭浩强主编、清华大学出版社出版的“C程序设计”作为主教材;课时分配从30~108课时不等,其中80课时以上的多为应用型本科院校的计算机相关专业以及综合性大学的非计算机专业,理论课时与实验课时的比例一般为1:1到1:1.2。与此同时,其他专业基础课(如计算机组成原理、操作系统、数据结构等)的课时一般为54课时,最多不超过72学时。相比之下,“C语言程序设计”所占课时是其他专业基础课的1.5倍至2倍。
从教学目的看,非计算机专业的“C语言程序设计”课程主要目的是“掌握语法规则和程序结构,具备一定的程序设计能力”,而计算机相关专业的“C语言程序设计”课的教学目的则要分为三个层次,一是使学生全面理解计算机程序设计语言的基本内容和结构;二是通过算法掌握程序设计的基本方法和步骤,并具备一定的程序设计能力;三是为后续课程的算法描述和其他程序设计语言的学习奠定基础。
2教学误区
从以上的教学现状(特别是课时分配)看,长期以来,“C语言程序设计”的课程教学存在“教学内容背离教学要求和教学目的”的误区,主要表现在教材误区、讲授误区和考核误区三个方面。
2.1教材误区
国内高校的“C语言程序设计”课大多选用谭浩强主编、清华大学出版社出版的“C程序设计”[1]为主教材,目前使用的是2005年7月修订出版的第三版,教材共363页,主体内容分为14章,其中,第3章的数据类型与表达式占用30页,第4章的格式输入输出占用12页,前9章共占用218页,后5章共占用145页。占用如此大篇幅的原因是教材中除了介绍相关语法格式外,还增加了相当多“特殊格式”和“特殊情况”的解释和说明,因此,该教材的最大优点就是“内容详尽、解释清晰”。然而,对于初学者来说,学习计算机程序设计语言就是为了“为计算机描述求解问题的过程”,过于详细但又远离现实问题的“特殊格式”和“特殊情况”的解释,使得学习内容复杂化,增加了程序设计语言学习的难度,误导了学习者的学习重点,由此也赋予了该教材无法掩饰的缺点,那就是教材编写的指导思想和教材内容的组织脱离了高校各专业“C语言程序设计”课程的教学目标,过分强调语法细节而忽略了程序设计语言的“正向表达能力”的应用,过分强调“语言的灵活性”而导致教材主体内容的“复杂化”,从而误导“C语言程序设计”课程的教学内容朝着“重语法学习、轻算法描述”的“语言研究”方向发展。
2.2讲授误区
由于教材内容的“复杂”,课堂讲授自然需要较多课时,教学重点当然也放在了“语法研究”上。从网上下载的“C程序设计(第三版)”的配套教学课件以及有关院校的“C语言程序设计”教学课件的内容组织上可以清楚的给出以上判断。“语法研究”型的课堂讲授,更加放大了教材对“C语言程序设计”课程内容的“扭曲”程度,给学生提供了错误的程序设计语言学习方法,把简单问题复杂化,更为严重的是,挫伤了学生学习计算机程序设计语言的兴趣和积极性,把本应“主动学习”的课程成引入了“被动学习”的歧途,直接导致“懂语法、会做题,但不会编程序”的教学后果。
2.3考核误区
多年来,“C语言程序设计”的主体考试内容就是“语法”,无论是选择题、填空题还是程序阅读题,大多都无法逃脱“语法”的束缚。考试方式以笔试为主。这在某种程度上肯定了“语言研究”的教学角度,促使“C语言程序设计”的教学重点更向“语法研究”的方向倾斜,最终误入“增加课时,强化语法,还是不会编程序”的怪圈。
3应有的教学角度
按照网上调查的各专业教学大纲中“培养具有一定程序设计能力”的教学目的,“C语言程序设计”课程的教学落脚点应该更确切的理解为培养“能用程序设计语言描述求解问题过程”的一般程序设计者,而不是造就“全面掌握程序设计语言语法、能设计高效、难懂程序”的程序设计语言方面的“作家”。因此,“C语言程序设计”课程教学相当于自然语言中的“基本语言能力”教学,而不是“语言研究”或“高级写作”能力培养。
3.1自然语言与计算机程序设计语言
计算机程序设计语言是用人和计算机都能识别的方式描述计算机求解问题过程的过程描述语言,它具有和人所使用的自然语言相同或相似的组成和结构特点,对于已经掌握了至少一门自然语言(比如汉语或英语)并具备一定文化程度的人来说,学习一种计算机程序设计语言并非难事。自然语言的基本组成包括符号集合、字、词、句、数据及其运算规则等基本要素,学习过程包括认识符号、发音、识字、组词、学语法并造句、学文法并写短文、练习写文章等基本阶段,在具备了基本的语言能力之后,扩充词汇量和提高写作能力将成为终身学习的基本内容。按照自然语言的基本组成和学习过程,也可将计算机程序设计语言的基本组成归纳为字符集、标识符(常量、变量、保留字等)、数据类型、运算符、表达式、语句、程序格式等基本要素,其中,字符集和数据类型是定义程序设计语言的基础,字符按一定规则组成标识符,用来充当常量名、变量名或其他标识,在自然语言中被人们公认的特殊标识符被赋予特定的语言含义,专门为语言系统所用(用户不得再次定义其意义),称为保留字;字符集中的特殊符号(如+、-、*、/)被赋予特定的运算意义(如加、减、乘、除)称为运算符;不同数据类型的常量、变量用运算符按一定规则连接起来组成的式子就构成表达式;将特定的保留字与表达式等语言要素按照语法规则组合起来就形成相应的语句;将语句按照要描述的求解问题的逻辑顺序排列起来,就构成了某种程序设计语言求解特定问题的一段程序。
3.2C语言的特殊性
一方面,C语言是程序设计语言的一种,具备一般程序设计语言的基本组成要素和结构特点。另一方面,C语言能成为面向过程的结构化程序设计语言的代表,也有其自身的特殊性。首先,C语言的数据类型极为丰富。除了基本数据类型外,还有构造类型、指针类型、空类型和用户自定义类型,其中,构造类型包括数组、结构体(struct)、共用体(union)和枚举类型(enum)等四种数据结构。其次,C语言具有位操作能力。除了能够对各类变量进行操作外,C语言还具备“按位”进行逻辑“与”、“或”、“非”、“异或”运算和“左”、“右”移位运算,这使得C语言具备了更强的系统开发能力。第三,C语言具有显著的结构化程序设计能力,并通过完整的函数定义来实现。第四,C语言的最大特点就是“语法限制不严,解释灵活”。第五,C语言允许直接访问物理地址,可直接对硬件端口进行操作。第六,C语言没有输入/输出语句,信息输入/输出功能由标准函数库中相应的I/O函数来完成。
C语言的这些特殊性,决定了C语言的教、学过程不同于其他程序设计语言的教学过程。
3.3C语言的教学角度
根据一般程序设计语言的基本组成与结构特点,结合C语言的特殊性,“C语言程序设计”课程的教学角度应该是:从介绍程序设计语言的基本概念入手,重点介绍语言的“正
向”设计功能而非“特殊格式”或“特殊语法”说明,侧重学生的程序阅读和程序设计能力培养,从教学内容的广度和深度两个方面,恰当把握教学角度。
“C语言程序设计”课程的内容可分为三个基本模块,教学过程从第一个模块切入,逐渐扩展到第二和第三个模块。第一个模块可称为“程序设计语言公共模块”,主要包括程序设计语言的基本概念、程序设计语言的基本要素(字符集、标识符、常量变量以及保留字、基本数据类型、运算符、表达式、语句与控制结构、程序结构以及程序书写规范等)以及输入/输出格式等内容;第二个模块是C语言的主体,主要包括函数、数组、指针、文件等;第三个模块是高级编程内容,主要包括结构体(struct)、共用体(union)、枚举类型(enum)以及用户自定义类型等。
在教学深度方面,各模块的教学重点应放在“规范的语法描述和直观易懂而且正确的语义表述上”,避免涉及各种过细的“不符合人类阅读习惯”的语义描述,暂时避开“特殊格式”或“特殊情况”的纠缠,摆脱“研究语法”的错误向导。在此基础上,第一模块的教学可与自然语言相比对,通过学生已有的自然语言学习经验和语言要素,使学生快速建立程序设计语言的基本概念,正确理解程序设计语言的基本要素及其关系,掌握基本语法和程序基本控制结构(顺序、选择、循环),并通过算法归纳求解问题的过程,正确理解算法不同描述方式(自然语言、传统流程图、N-S流程图、伪代码、程序设计语言)的作用和差异,特别是从“问题”到“程序”的渐进转化过程,从而培养学生的基本程序设计能力。通过第二模块的教学,使学生明确函数、数组、指针、文件等概念和作用,掌握它们的定义和引用方法,能进行相应数据类型的编程,进而掌握用函数定义的结构化模块程序设计的方法;通过第三个模块的教学,将程序的数据处理能力扩展到结构体、共用体、枚举类型以及用户自定义类型等复杂数据类型的处理上来,通过恰当的例子应用这些数据类型,向学生展示C语言强有力的数据表示和处理能力。
另外,可以将C语言中的“语法灵活性”和不同部分的各种“特殊情况”分类总结,归纳整理成“语言参考手册”等形式,以附录的形式提供给学生,以便需要时“备查”。这样既可节省教学课时,又可向学生提供学习语言的主动权。
3.4教学策略和方法
“C语言程序设计”属语言类课程,教学过程充满了逐步完善和熟练的基本特点,因此,从教学安排的策略上要分重点、分阶段逐步进行,每个阶段的教学方法应该采用建立在一定基础上的有重点的“部分教学法”,以核心内容为基础,向外逐渐延伸,部分学习,渐进掌握。尽可能避免不分主次、不论难易、不顾急缓,盲目一次性扫清各类知识点的“地毯式”教授方法或学习方法,同时强调自学和上机验证,强化在特定环境下(如Turbo C++ 3.0)的程序设计训练,做到“精讲多练[2]”,从小程序练起,逐渐过渡到求解较大或实际问题的程序设计上来。
4结束语
从目前的教学现状看,无论是计算机相关专业,还是理工科的电子信息类专业,乃至综合性大学的非计算机专业,“C语言程序设计”的课程教学均占有重要的教学地位,在全面提高教学质量和教学效率的今天,不同类型专业结合自身优势和程序设计语言类课程的特点,选择合适的角度组织和实施“C语言程序设计”课程的教学活动非常重要,而且很有必要。笔者的教学实践证明,避开“语法研究”的程序设计教学不仅可减少课时,更可提高学生利用程序设计语言“表述求解问题过程”的能力。
参 考 文 献
关键词:结构化程序设计 数据结构 算法 设计技巧
近年来,计算机程序设计技术已从结构化程序设计技术逐步向对象程序设计技术过渡,特别是当设计一个较大规模的应用程序时,面向对象设计思路成为首选。纵观计算机软件技术的发展,在局部功能的实现上及功能模块的设计上,结构化程序设计仍然有其不可替代的独特魅力。在结构化程序设计中(以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.
【关键词】程序设计 梯形图 经验法
由于可编程控制器的控制功能以程序的形式出现,所以程序设计是一个重要环节。梯形图是可编程序控制器的重要程序设计方法。一般应用程序设计可以分为经验设计法、逻辑设计法、顺序功能图设计法等。本文以工作台自动往返循环工作为例主要介绍采用经验设计法进行梯形图程序设计。
由于生产过程控制要求的复杂程度不同,可将程序按结构形式分为模块化程序和基本程序。
基本程序既可以作为独立程序控制简单的生产工艺过程,也可以作为组合模块结构中的单元程序;依据计算机程序的设计思想,基本程序的结构方式只有三种:顺序结构、条件分支结构和循环结构。
模块化程序:把一个总的控制目标程序分成多个具有明确子任务的程序模块,分别编写和调试,最后组成一个完整总任务的完整程序。这种方法称为模块化程序设计
经验设计法需要设计者掌握大量的基本程序。这些基本程序例如电动机正反转联锁控、断开延时和接通延时控制程序、警灯闪烁控制程序等。
我们以工作台自动往返循环工作来进行说明。
1 设计要求
(1)自动循环工作。
(2)点动控制。
(3)单循环运行,即工作台前进、后退一次循环后停在原位。
(4)8次循环计数控制。即工作台前进、后退为一个循环,循环8次后自动停在原位。
2 分析控制要求
(1)工作台前进与后退是通过电动机正反转来控制的,所以要用电动机正反转这一基本程序;
(2)工作台工作方式有点动控制和自动控制两种方式,可以采用程序(软件的方法)实现两种运行方式的转换。
(3)工作台有单循环和多次循环两种工作状态,可以采用控制开关来选择。
(4)多次循环因要限定循环次数,所以选择计数器来进行控制。
3 分配I/O点
PLC控制系统I/O分配,依据生产流水线从前到后,I/O点数由小到大,尽可能把一个系统、设备或部件的I/O信号集中编制,以利于维护。表1为本例的I/O分配地址表。
4 控制程序设计
4.1 基本控制环节的程序
本控制要求的对象是工作台,工作方式有前进和后退。电动机正转时,使工作台前进,电动机反转时,使工作台后退,因此基本控制程序是正反转控制程序。
4.2 实现自动往返功能的程序设计
工作台前进过程中撞块压合SQ2后,SQ2动作,X6常闭触点应先断开Y0线圈,使工作台停止前进,后X6的常开触点再接通Y1线圈,使工作台后退,完成工作台由前进转为后退的动作,同理,撞块压合SQ1后,工作成由后退转为前进的动作,因此在图(1)中加入二个限位开关,如图(2)所示。
4.3 实现点动控制功能和单循环控制功能程序设计
根据点动的概念可知,如果在上述梯形图中解除自锁,就能实现点动控。所以利用开关SA1来选择点动和自动控制。SA1闭合后实现点动,SA1断开,实现自动控制。
单循环工作方式是指启动按钮按下后,工作台由原位前进,当撞块压合SQ2后由工作台前进转为后退,后退到原位后撞块压合SQ1后,使工作台停在原位。如果撞块压合SQ1后,则X5常闭触点断开,使Y1线圈失电,工作台停止后退。在X5常开触点闭合后,只要不使Y0线圈得电,工作台就不会前进,这样便实现了单循环控制。如图(3)所示。
根据上面这个例子,我总结出经验法设计梯形图的一般规律:
(1)根据控制要求,设计出基本程序;
(2)逐步补充完善程序;使其能完生满足控制要求;
(3)设置必要的联锁保护程序。
PLC控制系统的程序设计是一个步骤有序的系统工程,要想做到熟练自如,需要反复实践和练习。设计的每一步,都要依靠平时所积累的程序设计经验来设计程序。
参考文献
[1]张梦欣.可编程序控制器及其应用[M].中国劳动社会保障出版社,2006.
关键字:程序设计语言教学改革
中图分类号:G642 文献标识码:A 文章编号:1672-3791(2012)02(c)-0000-00
1 概述
计算机程序设计语言,通常简称为编程语言,是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。
当今计算机程序设计语言种类繁多、共性大、更新速度快,同时软件工程和项目管理的蓬勃发展使得计算机软件开发从业人员的职业分工更为明确。从人力资源与社会保障部颁布的“计算机程序设计员国家职业标准”上看,除了要求从业者必须要有扎实的基本功外,还要具备解决问题的综合能力。因此计算机程序设计员专业的学生在计算机程序设计语言的知识和技能的学习中,不能再仅仅孤立地教授几门编程语言、几门相关的专业课程而已,而是要教会学生掌握通过计算机程序设计来解决实际问题的知识和技能,成为一名合格的“软件蓝领”。这就要求我们不能延续传统的学历教育方法,计算机程序设计语言教学需要改革,需要一种全新的教学理念和模式。
当前的教学改革更多的体现在教学方法和内容上,“学习领域”、“任务驱动”、“职业岗位导向”、“面向工作”等各种课程设计方法层出不穷。然而,纵观大部分课程改革,我们发现其教学改革更多体现在独立的课程中,并没有在课程与课程的衔接上下功夫。大部分院校均先后开设VB、C、C++、JAVA等多门程序设计语言和数据结构、数据库管理系统等专业课程,学生虽然学习了多门程序设计语言,然而每一门语言都只学了皮毛,每一门课程都学了基础,只能完成课堂和课后的作业和练习,而对于能解决什么问题,怎么解决问题,如何综合解决问题一筹莫展,碰到问题时往往觉得无从下手。
2 程序设计语言教学探索与改革:C语言学习三部曲
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点,同时很多新型的语言都是衍生自C语言,,掌握了C语言,经过简单的再学习,就可以用其他新型的语言去进行程序开发了。因此,在计算机专业的课程中,只要把C语言学扎实了、学透了,就可以说掌握了计算机程序设计语言的精粹。在课程设计中,我们以C语言为主线,以一脉相承的C语言、C++语言、C#语言为基本知识内容,配合上数据结构、UML、数据库等相关知识点,提出语言知识入门、语言能力提高、语言技能应用三个阶段和应用层次的“C语言学习三部曲”的课程改革方案。
第一阶段:语言知识入门――C语言与数据结构整合
1、课程知识要求:
1) 掌握C语言的基本语法,如数据类型,3种语句结构,数组,指针等。
2) 掌握数据基本结构形式和操作,如线性结构,树形结构,图形结构,以及数据结点的查找、添加、删除、排序等操作。
3) 掌握“自顶先下、逐步细化”的结构化程序设计方法。
2、课程技能要求:
掌握如何用计算机解决日常问题,特别是数据的表现形式和动作行为的表现形式。
3、课程设计要点:
将C语言和数据结构进行有机整合,特别是在讲解C语言的数据类型时溶入数据结构知识,在讲解C语言的语法结构时溶入数据结构的数据操作知识。
4、课程目的:
通过该课程的学习,要求学生掌握基本程序设计思想和理论,学会数据及数据处理由现实世界向计算机世界的转换方法和过程,学会用计算机程序设计语言描述和解决日常生活中问题。
第二阶段:语言能力提高――C++语言与UML工具整合
1、课程知识要求:
1) 掌握C++语言的高级语法知识以及面向对象的概念和形式,如面向对象的三大特征:封装、继承、多态,以及模板等概念。
2) 掌握UML知识,掌握利用UML工具(如ROSE)来进行面向对象的分析和建模的方法和过程。
3) 掌握以“抽象与分类”为关键的面向对象的程序设计方法。
2、课程技能要求:
掌握如何用计算机解决日常问题,特别是以面向对象的方法来分析和解决问题。该课程要求学生在第一阶段掌握了结构化的设计方法后,进一步了解面向对象程序设计方法。
3、课程设计要点:
把C++语言和UML进行有机的整合。将UML作为面向对象程序设计的分析和设计的工具,而将C++语言作为进行面向对象程序设计的编程和实现工具。
4、课程目的:
通过该课程的学习,要求学生掌握面向对象理论,学会面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)方法和工具。
第三阶段:语言技能应用――C#语言与数据库操作整合
1、课程知识要求:
1) 掌握C#语言的高级语法知识和软件架构知识,如集合、委托、托管、、C/S与B/S架构开发方法等。
2) 掌握数据库操作知识,如SQL语法、、XML等。
2、课程技能要求:
掌握多层架构的数据库应用系统开发方法。,该课程要求学生在复习第二阶段的面向对象的设计方法后,掌握开发.Net应用系统的方法,掌握将数据存储在数据库中的方法,以及掌握对数据库进行查询、添加、删除等操作的方法和步骤。
3、课程设计要点:
将C#语言与数据库操作知识进行有机整合,在讲解用C#语言开发基于.Net的多层架构应用系统中,通过讲解与LINQ将SQL溶入C#语言。
4、课程目的:
通过该课程的学习,要求学生掌握C#语言和数据库操作,掌握通用的企业级应用系统的开发方法和过程。
3 结语
教育部部长周济在2008年度职业教育会议上说到:“以改革创新为强大动力,推动职业教育又好又快发展”。职业教育的生存和发展,离不开教学改革和创新。在进行计算机程序设计语言教学探索与研究中,我们通过走进企业,与企业软件开发人员的进行密切联系与沟通,了解市场发展与需求等一系列调研后,提出了改革方案并付诸实施。实践证明我们的改革思路是正确的,课程改革是卓有成效的。
参考文献
[1] 谭浩强,“C程序设计”[M],清华大学出版社
关键词: 高级语言程序设计 流程图 控件 子程序 参数传递
一方面中职学生在初中阶段基础较差,另一方面对于高级语言程序设计的教学不同教材编写者有不同的思路,为了适应中职学生的学习,在教学中如何更便于学生掌握高级语言程序设计,我在长期从事高级语言程序设计教学的过程中摸索出一套针对中职学生教学的组织教材的思路,下面就以Visual Basic语言为教学背景谈谈教材组织,请同行予以批评指正。
首先,让学生熟悉所学的高级语言程序设计的程序结构。不同的高级语言的程序结构的描述过程是不同的,以Visual Basic语言为例,它的程序结构大至如下:
End Sub
因此,让学生熟悉上述的结构描述方法,让它像模板一样印在学生的脑袋中,对于学生对该语言的编写格式的直观认识及后续的学习会起到良好的作用,同时也会为后续学习数据类型、运算符、表达式和常用函数的上机调试扫除障碍。
其次,让学生熟悉所学的高级语言程序设计上机的调试环境和掌握基本的调试步骤。对于程序设计的最终结果是否正确,上机调试是必过的一关,不同的高级语言程序上机的调试环境是不同的,有的调试环境功能单一,有的调试环境功能很多,我认为首先掌握基本的调试功能,再根据需要逐步介绍和掌握调试环境所提供的其他功能,这样更有利于学生学习。以Visual Basic语言为例,我们要求学生首先掌握以下几个技能:建立一个新的工程,打开代码编写环境,保存一个工程,打开已有的工程,知道运行程序,自如查看运行的结果,并从运行结果中返回并重新修改程序。至于Visual Basic语言集成开发环境中所具有的其他功能,则根据具体调试演示时的需要零散分开,并个别介绍,这样学生将掌握得较好。
再次,让学生掌握程序的基本输入、输出语句或函数的功能及用法。程序要进行调试就要有各种各样测试的数据及根据测试数据运行后显示出的测试结果,以验证所编写程序是否正确,这就要求掌握基本的输入输出语句的用法。在Visual Basic语言中,inputbox()函数和print语句的用法就是必须掌握的。通过以上,学生掌握了程序设计的基本“骨架”,以及输入输出语句的用法,就可以进行最简单的顺序结构程序的设计了,从而在较短的时间里体验到成就感,为后继学习树立信心。
另外,在讲解顺序结构程序设计的过程中就要开始逐步地把流程图的识读及使用方法教授给学生。流程图能直观地表示整个程序设计的流程, 程序的编写只是对流程图的一种语句的细化过程,因此看懂流程图既方便程序设计的讲解,又便于学生在课后通过流程图了解程序设计的思路进行复习或思考,从而避免由于对识读程序的困难造成理解上的不便。我曾试图让学生没看流程图而直接通过程序语句来理解程序设计思路,与让学生通过流程图来理解程序设计的思路相比,显然前一种方式对学生来说要困难得多,而且时间长了就很难再理解,而通过流程图显然更容易,即使时间久了重新识读起来也相当容易。
不要把控件的功能及属性单独介绍。以Visual Basic语言为例,很多教材都是以顺序结构、选择结构、循环结构、常用控件的顺序来组织教学,我认为这样让学生感到很枯燥。因为很多实例在内容上涉及许多数学的知识,而学生本来数学基础就很差,这样学生厌学的情绪会增加,既不利于教学,又不利于学生学习。因此在教学中应把后面要掌握的控件分别有意识地穿插在顺序结构、选择结构、循环结构课堂的实例中,让学生生动地用各种控件结合顺序结构、选择结构、循环结构程序实例来学习程序设计。一方面,学生不仅有浓厚的兴趣而且很容易体验到成功的喜悦,另一方面又联系紧密、节省课时。当然这样穿插教学,程序样例的选择就非常关键,每个样例都要精挑细选,每节新课牵涉到的控件以1~2个为宜,否则控件太多的话就会造成课堂时间不足,学生掌握得也不好。
最后就是子程序与参数的传递要放在该门课程快结束时再介绍。这部分内容对学生来说相对较难,特别是参数传递,若在学生还未掌握好程序设计或程序设计还不熟练时就介绍,学生就会思路混乱,从而增加学习难度。若学生都已经能熟练地进行程序设计,在此基础上再进一步地增加子程序与参数的传递的知识,就会锦上添花,学生和老师都会有事半功倍的体验。
当然,对于教材中的其他内容,则基本上根据教材编写的既定内容进行讲授。以上是我在高级语言程序设计教学中的体会,至于是否适应其他老师的课堂教学要求,还要在实际教学中进一步探讨。
参考文献:
关键词:算法程序 数据结构
随着世界步入信息化和网络化,以及计算机的普及,计算机教育随即也变得异常重要,如何让中国培养出更多的IT人才,让中国成为真正意义上的电子信息化与网络一体化的国家,这也成为我们国家面临的一项艰巨任务,因此对广大学生的计算机教育也必须更加重视起来,计算机教育应该逐渐面向大众化,不断提高计算机在我国的普及程度,也是我们强国的必经之路。
程序设计教学长期以来一直是中职计算机教学的重点和难点之一,如何学好程序设计成为广大学生最为关心的问题,如何教好程序设计也成为广大老师长期不断探讨的问题,现在我已自身的学习经验和体会浅谈一下学习的方法。
实际上如果我们要学好程序设计,算法,数据结构,程序设计方法和语言这四个方面是一个程序设计人员必备的知识,很多人在学习程序设计的过程中很茫然,不知道怎么进行或者说不知道怎么去写语句,其实我们出现的问题无非就是没掌握上面四个必备的知识,现在我的提议是以算法,数据结构,程序设计方法和语言这四个方面板块为基础,分块教学,各个击破,这样也就能够很好的学好程序设计了。
算法:算法可以说是程序的灵魂,广义地说,算法是为解决一个问题而采取的方法和步骤。设计出高质量的算法,并研究算法所耗费的计算资源与问题规模之间的函数关系。算法设计与算法分析是不可分割的一个整体。按照算法所处理的对象进行分类,算法设计与分析主要有数值算法和非数值算法两大领域。按照计算方式进行分类,则可分为串行算法和并行算法。算法设计的任务是对各类具体的问题设计高质量的算法,以及研究设计算法的一般规律和方法。
数据结构:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
程序设计方法: 程序设计方法学是讨论程序的性质以及程序设计的理论和方法的一门学科[1], 是研究和构造程序的过程的学问,是研究关于问题的分析,环境的模拟,概念的获取,需求定义的描述, 以及把这种描述变换细化和编码成机器可以接受的表示的一般的方法。
用以指导程序设计各阶段工作的原理和原则,以及依此提出的设计技术。有时也指研究这些原理、原则和技术的学科。程序设计方法学的目标是能设计出可靠、易读而且代价合理的程序。程序设计方法学包括程序理论、研制技术、支援环境、工程规范和自动程序设计等课题,使程序设计更加科学化和工程化。其基本内容是:结构程序设计;程序理论在程序设计技术中的应用,以及规格说明和变换技术。程序理论与程序设计方法学的发展密切相关,它丰富了程序人员的思维方法,促进了程序设计技术的发展。其研究的主要内容为结构化程序设计,数据抽象与模块化程序设计,程序正确性证明,面向对象的程序设计方法等。
语言:程序设计语言,用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。程序设计语言是人们指挥计算机的工具。它是一种工程语言,由字,词,语法规则构成的指令系统,高级语言提供了常用的数据描述核对数据操作规则的描述,程序设计就是根据特定的问题,使用某种程序设计语言,设计出计算机执行的指令序列。发展趋势
程序设计语言是软件的重要方面。它的发展趋势是模块化、简明性和形式化。
①模块化。不仅语言具有模块成分,程序由模块组成,而且语言本身的结构也是模块化的。
②简明性。涉及的基本概念不多,成分简单,结构清晰,易学易用。
关键词:C语言;程序设计;学习方法;学习兴趣
中图分类号:TP312.1-4
《C语言程序设计》是计算机专业的一门核心专业基础课程,是专升本、考研和等级水平考试的必考科目,也是学生学习中感到比较吃力的一门课。那么,如何学习《C语言程序设计》这门课程呢?现根据自己多年在教学中的体会,谈一些粗浅的认识。
1 为什么要学习《C语言程序设计》
《C语言程序设计》是用C语言来编写程序的,每个程序员在他们的编程生涯中都应该学习C语言,因为它有太多难以忽视的好处了。除了它会给你提供更多的工作机会之外,C语言还会教给你更多的关于计算机的知识。它的好处如下:
1.1 C语言是一种计算机程序设计语言
它既具有高级语言的特点,又具有汇编语言的特点,既可以用来编写系统软件,又可以用来编写应用软件。它不仅具有绘图能力强,还具备很强的数据处理能力,因此也适于编写三维,二维图形和动画。
1.2 C语言具有功能强大、使用灵活、丰富的数据类型和运算符、结构化的控制语句、目标代码运行效率高、适用范围大、可移植性好等优点。
1.3 C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),还有各种语言的编译器,包括java虚拟机,各种嵌入式设备,如手机、PDA等都是C语言开发的。
1.4 C语言是基础,如果你学习过C语言,你就能学习现在任何的高级编程语言
因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。C语言学好了,将来想学其他的语言,就比较好入门了。
2 如何学习《C语言程序设计》
2.1 克服畏难心理,充满自信的学习《C语言程序设计》
大多数学生一看到《C语言程序设计》课程的教材,就有畏难的情绪,觉得C语言难学,学不会,因为他们对计算机语言不了解,另外有些英语差的同学,看到计算机编程是用英语编写的,就未学先弃了。其实学习语言并没有他们想象的那么难,英语差也对学习计算机语言影响不大,比如学C语言,真正要记的关键字不多,语法也不复杂,只要大家不带着畏难的心理,充满自信,一定能学好的。
2.2 要明确《C语言程序设计》的学习目的
通过《C语言程序设计》课程的学习,掌握C语言基本知识,掌握程序设计的基本方法并逐步形成正确的程序设计思想,能够熟练运用基本程序结构解决简单问题,理解模块化程序设计原则并能熟练使用C语言进行程序设计,具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。
2.3 要明白《C语言程序设计》与一般的计算机操作课程有所不同
《C语言程序设计》是计算机的一门软件编程课程,是用C语言来编写程序的,它具有难度性、抽象性、连续性和逻辑严密性。如果你第一次课来听了,第二次课没来,第三次课很可能就听不懂了。比如,第一次课讲的是数字1,2,3,4……,第二次课讲的是运算符号+,-,*,/,第三次课老师让你算1+2=?,如果你前两次课都来听了,那么你就能算出它的结果,否则你就算不出它的结果。因此,如果要想学好《C语言程序设计》,必须坚持每次课都来,如果那天确实不能来,就应在家自学,不懂的地方应及时向老师请教,一定不能落课。
2.4 要整体把握《C语言程序设计》
C语言是一种通用的程序设计语言,在开发系统软件和应用软件中得到广泛的应用,已成为当今计算机世界最流行的语言之一。C语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。它包括C语言概述、数据类型(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等)、运算符和表达式、流程控制语句、函数、数组、字符与字符串、指针、结构体、文件等。通过《C语言程序设计》的学习,掌握程序设计的基本概念、基本思想、基本方法和基本技能,进而学会利用C语言解决实际问题,培养计算机程序设计的能力和素质,以及思维方法,为以后学习其它计算机程序语言和后续的专业课程打下基础。
简单的C程序是由主函数和函数体两大部分组成。它的基本框架如下:
main()
{
}
其中main表示“主函数”。每一个C程序都必须有一个main函数,而且只能有一个main函数,它表示程序从这里开始执行。由花括号“{ }”括起的部分是函数体。其中函数体又包括定义变量、变量赋值、函数调用、输出打印等。
例:一个简单的求和程序
main() /*主函数*/
{
int a,b,sum; /*定义变量*/
a=123;b=456; /*变量赋值*/
sum=a+b; /*求两数之和*/
printf(“sum is %d\n”,sum); /*输出和值*/
}
这是一个简单的求和程序。/*...*/表示注释部分,只给人看的,对编译和运行不起作用。第3行是声明部分,定义变量a、b、sum,指定a、b、sum为整型(int)变量。第4行是两个赋值语句,使a和b的值分别为123和456。第5行使sum的值为a+b,第6行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式,“%d”表示“以十进制整数形式输出”。Printf函数中括弧内最右端sum是要输出的变量,现在它的值为579(即123+456之值)。因此输出一行信息为:
sum is 579
从这个例子可以看出,想要把《C语言程序设计》这门课学好,不仅要知道《C语言程序设计》的基本框架,还要学好函数体中的内容(变量类型、定义变量、变量赋值、输入输出格式字符串、输入输出函数格式、调用函数等)。另外还要学好C语言的运算符、运算顺序 、四种程序结构(顺序结构、分支结构、循环结构、模块化程序结构 )、掌握一些简单的算法等。
2.5 熟练C程序的上机步骤
在编好一个C源程序后,如何上机运行呢?要经过编辑、编译、连接和运行四个步骤。
(1)编辑源文件。在编辑(Edit)状态下输入或修改源程序。
(2)编译源程序。选择“C编译”菜单并选择“编译到OBJ”,进行编译,得到一个后缀为.obj的目标程序。
(3)然后再选择菜单“L连接EXE文件”,进行连接操作,可得到一个后缀为.exe的可执行文件。
(4) 运行程序。在“RUN”菜单中选择“R运行程序”项,或直接按Ctr+F9键,系统就会运行已编译好的可执行目标文件。此时,TC集成环境窗口消失,屏幕上显示出程序运行的结果。如果程序需要输入数据,则应在此时,从键盘输入所需数据,然后程序会接着执行,输出结果。
2.6 要加强编程训练
《C语言程序设计》是实践性非常强的课程,要求学员要理论联系实际,在掌握C语言的基本语法和基本知识后,重点应放在提高编程能力的训练上。根据学生学习的认知特点,我认为主要应从以下几个方面进行强化训练:
(1)吃透课本例子。每学完一次新课,让学生对课本例子先分析任务、再仔细阅读程序,然后按书上的源代码敲出来,编译执行输出结果,如果结果跟书上一致就算完成,如果不一致,就要仔细找原因。再后不看书自己编写代码与课本对照,找出自己的不足,然后改进。最后在此例的基础上自己加以改造,举一反三,变为其它的例子,如此反复练习,不仅培养了学生动脑思考的习惯,而且养成了遇事三思、认真、周密的作风。
(2)精选上机题目,要求调试通过。每章找出一个或两个综合性的具有代表性的应用题目,如编写一个程序,计算一个整数的名位数字之和;用选择法对数组中10个整数,按由小到大的顺序进行排序等,要求用C语言编写可执行的源程序,上机调试。这样不仅锻炼了学生解决实际问题的能力,更重要的是激发了学生学习课程的兴趣,抽象变具体 ,理论变实践,对这门课有了更深的认识。
(3)阅读填空法。找一些经典程序,配上必要的说明,适当去掉语句或表达式,让学生通过阅读填补空白,训练学生的程序设计能力。例编写一个程序,输入月份号,输出月的英文月名,还有求和、排序、报号等。
(4)准备一个经验本,记下C语言重要的语法和知识点,还有自己出错的解决方法及老师讲解的其他同学出现的常见错误,抽空常翻看,逐步积累经验,加深印象,使以后避免。
(5)带着作业去上机。每次理论课结束后,老师都会给学生布置一些作业(如习题)让学生做,那么学生一定要认认真真的把作业完成好,先把程序编写在作业本上,上机时再把这些程序敲到计算机上,进行修改、调试、运行,最后输出结果。如果学生不带作业去上机,第一次老师警告下次一定带作业上机,如果第二次还没带作业,不准学生进机房,让学生到教室把作业做完后再到机房上机调试。有人说学生可以直接在机器上编写程序,固然没错,但对于初学者来说,如果在机器上边思考边编写,也就是说想一句编一句,再想一句再编一句,这样太浪费时间,一节课说不定连一个程序都编不好,所以老师一定要求学生在课下把程序编好,上机只需把程序敲出来进行修改、调试、运行,这样能节约大量的时间,学生上机时间本身都是有限的。
上述方法在教学实践中证明是行之有效的,学生对问题分析、程序设计的自觉性和能动性得到提高,动手能力加强,对后继课如《C++》、《面向对象程序设计》等,学习起来倍感轻松,较好地完成了该门课程的学习目标。总之,实践出真知,多学、多练、多思、多交流,勤奋好学才能学成。
参考文献:
[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.
[2]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005.
[3]陈东.计算机多媒体教学改革的一些尝试[J].福建师范大学学报(自然版),2004,20(3):98.
[4]王兰.学好《C程序设计》的几点建议[J].科技信息,2007(9).
[关键词]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.