前言:中文期刊网精心挑选了程序设计的基本结构范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
程序设计的基本结构范文1
摘要:本文在分析了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语言程序设计”课程的教学活动非常重要,而且很有必要。笔者的教学实践证明,避开“语法研究”的程序设计教学不仅可减少课时,更可提高学生利用程序设计语言“表述求解问题过程”的能力。
参 考 文 献
程序设计的基本结构范文2
关键字:程序设计语言教学改革
中图分类号: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],清华大学出版社
程序设计的基本结构范文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).
程序设计的基本结构范文4
关键词:独立学院;课程改革;人才培养;程序设计
随着计算机软件行业的发展与普及,十几年来计算机软件技术发生了翻天覆地的变化,而高等学校的教学内容、教学模式与教学方法却没有多大的改变,课程教学理念严重滞后于实际需要,教学效果存在相当大的问题。现在的计算机软件专业学生拥有的优势越来越少,就业压力也越来越大。对独立学院的计算机软件专业学生而言,更是如此。比专业理论知识,他们没有一本、二本的学生全面扎实,比实践操作能力,他们又远不及高职学生。那么独立学院应该培养怎样的计算机软件人才呢?学生将来毕业以后,凭借什么在社会上立足呢?这是我们老师一直在思考和探索的问题。
为适应新的形势,我院明确了计算机软件人才的定位:培养应用型软件人才。这个培养目标既是从独立学院学生的自身条件出发,又符合当前社会对计算机软件人才的需求。在这个培养目标的指导下,我们在计算机程序设计课程教学上进行了大胆尝试,修订了教学大纲,增加、删除了部分教学内容,并将新的教学模式与教学方法引入计算机基础教学中,取得了较好的效果。
1存在的问题
已往的教学经验表明,学生在学习程序设计类课程时最难的地方不是掌握某种程序设计语言的语法规范,而是掌握程序设计的基本方法。
程序设计语言的语法规范是死的,并且与任何一种自然语言相比,程序设计语言的语法规范更简单规则。因此,只要学生掌握好了程序设计的基本方法,再花费一定的时间掌握某一种程序设计语言的语法规范,就能用该程序设计语言设计程序,甚至达到精通水平。
具体而言,目前教学中存在的主要问题有:教学内容与教材组织过于陈旧;教学目标没有反映新形势的需要。其典型表现在:程序设计方法强调不够,抽象思维能力培养不足;某些程序设计中重要的概念讲授力度不足,如库与接口、UML建模以及目前流行的软件开发方法等,学生在实际的软件开发中无法满足企业的需要。
2构建程序设计基础培养四阶段课程体系
大多数独立学院的本科计算机软件专业现行的课程设计,与普通的一本、二本院校相比相差无几,没有突出独立学院的特点,也没有明确独立学院的培养目标。因此,对独立学院计算机软件专业课程体系进行改革迫在眉睫。我院以“计算机导论与C语言程序设计”为公共基础的程序逻辑训练、以“高级程序设计技术”为核心的程序设计方法培养、以“数据结构”为支持的数据与程序抽象能力培养、以“C++程序设计”贯穿面向对象程序设计新理念,并在大三大四高年级开设了Java、Linux、UML建模等程序设计类选修课程,形成了“基础训练+方法培养+提高能力+拓展层面+实践应用”的程序设计教学新模式[1],在强化程序设计能力培养过程中发挥了重要的作用。
3提出并实施四层次软件人才培养新模式
我院以课程体系为基础,提出并实施了“基础训练+提高能力+拓展层面+实践运用”的四层次软件人才培养模式。
3.1基础训练
程序设计基础训练课程开设在大学一年级,是大学阶段系统认识计算机、应用计算机的入门课程,通过程序设计的词法、语法及使用方法的学习,要求学生掌握、体会计算机解决问题的基本技能。在基础训练中,通过对计算机导论课程的学习,让学生认识并能熟练运用计算机编写程序;通过对C语言程序设计课程的学习,让学生初步掌握程序设计的方法,训练程序设计中的逻辑思维。
3.2能力提高
程序设计能力提高课程开设在二年级,主要从两个方面提高学生的程序设计能力:一是高级程序设计技术课程,重点学习典型的程序设计方法技术,便于学生系统地学习并掌握程序设计方法技术。二是数据结构课程,通过构造性思维的训练,重点突出数据抽象与程序抽象能力的培养,让学生在基础训练阶段之后能更深入地理解程序设计的概念。
3.3层面拓展
主要以市场需求为基础,包括工具类别与应用环境的拓展,以选修课形式开设在三、四年级。在具有良好C程序设计能力基础上,展开其他程序设计工具层面,如开设Java、VC++、VB等程序设计类选修课程,增强学生掌握新工具,举一反三的能力。随着我国经济发展,国外市场份额不断增加,熟悉和使用Unix环境已成为计算机软件专业应当掌握的重要技术,开设Unix环境编程和Linux程序设计等课程,将拓展应用环境,提高学生适应新环境的程序设计能力。
3.4实践应用
自2006年以来,我院就加大了程序设计课程中的实践课时比例,实践课时占到总学时的1/2或1/3,每门实践课都单独安排了实践课老师,指导学生更好地进行实践。在实践课设计中,我们既重视学生理论知识的巩固,又注重其解决实际问题能力的培养,因此,我们把实验自下而上分为知识层、应用层和综合层3个层次。
知识层注重对知识的理解和掌握,数据结构、数据库原理和Java程序设计等理论课增设了相应的课程设计,课程设计的主要内容是:按软件企业先进的项目管理和开发模式,以“项目驱动”进行软件系统开发的实训。应用层重点在于巩固与应用,学生在校期间参加课外兴趣小组或在毕业论文设计中,大部分学生都能使用VC++做系统级深层次应用。综合层则关注综合与创新,学校鼓励学生参加大型的综合性IT比赛,如ITAT、大学生挑战者杯创业大赛等。
3.5创造性思维能力的强化
计算机程序设计能力,对计算机专业学生的知识结构、技能的提高和智力的开发变得越来越重要,技能培养的重要程度决不亚于知识传授。对程序设计能力的提高来讲,编程序不难,编好程序不易。质的飞跃来自量的积累、艰苦的磨炼,所以良好的专业技能和创造性思维培养的关键在于实践。程序设计是高强度的脑力劳动,是创造性的艺术,只有提高了科学思维,学会了程序设计的真本领,才会将知识与技术变成能力,应用自如。
3.5.1案例驱动教学:兴趣引导
针对独立学院学生思维灵活但学习自觉性较差的特点,我们采用案例教学法,避免了传统填鸭式教学方法的呆板,通过实例演示,让学生对所学知识产生兴趣,有了一定的感性认识之后,再提升到理论高度,循序渐进地掌握知识。经过多次教学的探索,总结出重点讲授解题思路、算法设计及编程构思,突出上机训练,在编写程序过程中让学生自己进行探索性的学习,程序设计中的成果能极大地增加学生的成就感、培养学生程序设计的兴趣,并达到更加牢靠地巩固理论知识的目的。好的程序设计案例所采用的程序设计方法教会学生用适当的语言清晰地表达其思考过程。
3.5.2指导―大运动量实践―反馈训练:加强创造性思维培养
数据结构[2]的学习过程,是进行复杂程序设计的训练过程。技能培养的重要程度不亚于知识传授。难点在于让学生理解,习惯算法构造思维方法。针对数据结构技术性与综合性较突出的特点,我们提出并实施了“指导―大运动量实践―反馈训练”教学法。通过作业练习、课程实习、课程设计3个环节实现实践过程,前者偏重于对课程内容的理解,后者侧重于软件设计综合训练,促进了专业学生逻辑抽象能力和创新能力的培养。
3.5.3项目训练:提高应用能力
通过“项目训练”[3]方法,我们提出课程设计规范要求,突出关键技术要点,贯穿基本技能训练主线,精心设计综合性实验,体现加强实践能力培养的重要思路。数据结构课程设计时进行软件开发综合训练的第一门课,通过选用具有一定实用性的综合题目,采用学生个人进行和小组合作的方式,通过问题分析、总体结构设计、用户界面设计、程序设计基本技能和技术的一系列过程,培养学生动手实践、合作研究、协作开发大型软件项目的能力,培养学生采用软件工程正规方法进行设计与实现,为专业技能训练奠定了基础。“项目训练”方式将学生引入具体的项目研发,使学生有更多的主动学习机会,培养了科研能力。
3.5.4提高学生的兴趣与创新能力
竞赛等多种活动为学生提供了展现程序设计能力的舞台,激发了学生学习的主动性。我们已连续3年开展全校“电脑文化节”、“网页设计大赛”、“Flash竞赛”、“计算机知识竞赛”;学生参加省级、国家级数学建模比赛,6人次获国家级奖励,20人次获得省级奖励;学生在程序设计大赛中取得优异成绩,获得多项奖励,3人次获ITAT国家级奖,多人次获省大学生挑战杯一等奖。
4结语
计算机课程改革势在必行,特别是对于独立学院来说,更是迫在眉睫。改革的成功与否将直接关系到学生以后的就业。在进行计算机课程改革的基础上,我们针对软件人才的培养,提出程序设计教学的新模式和以设计为中心的能力培养新方法。作为一种有益的尝试,新的课程体系通过一种有趣的、面目可亲的方式向学生说明了创造性思维能力在程序设计中起到的重要作用。
参考文献:
[1] 翟玉庆,邓建明. 计算机科学研究型人才培养模式的探讨与实践[J]. 计算机教育,2005(1):31-33.
[2] 耿国华. 数据结构[M]. 北京:高等教育出版社,2007.
[3] 王志英,宁洪,戴葵. 强化计算机专业实践教学[C]//第七届全国计算机系系主任论坛论文集. 北京:高等教育出版社, 2004:37.
Reform of Computer Courses and Training of Software Personnel in Independent Colleges
LIU Ya, TAN Qian-mao, ZHOU Li
(Computer Science and Engineering Department, Jinjiang College, Sichuan University, Pengshan 620860, China)
程序设计的基本结构范文5
关键词:基础教育;案例;任务驱动
1 背景
目前,鉴于理工类非计算机专业的计算机基础课程涉及内容多、学科背景不同、培养层次不同等原因,我们立足于本学科的培养目标,制定了相关的课程体系和培养模式。在理工类非计算机专业的计算机基础教育课程体系程序设计基础课程中,主要开设的高级语言是C,C++,VC,VB。程序设计基础课程的目标是培养学生的程序设计思想、方法和利用计算机解决本专业问题的能力。
为了缩短与内地院校在计算机教学理念和教学方法上存在的差距,应进行教学大纲、教学方法和教学手段的改革,不断总结经验,寻求一条合理有效、切实可行的途径。理工类非计算机专业计算机基础教育程序设计基础课程体系的C程序设计是一门计算机公共基础课,其涉及概念多,规则复杂,数据类型和运算符丰富,使许多初学者望而生畏。作者长期从事高校计算机基础教育工作,在C程序设计课程教学中运用了案例式任务驱动教学法,现和大家共同探讨。
2 案例式任务驱动教学
为兼顾理工类不同专业提出的不同要求,需要采取不同的教学方法,从而激发学生学习该课程的积极性,我们运用了案例式任务驱动教学方法。此方法实际上是案例与任务驱动相结合的一种教学方法。
2.1 案例教学
在C程序设计的教学过程中采用“精选案例”来说明程序设计的基本语法、基本算法、基本理论知识、应用技能和具体实现过程。并将其融为一体,通过具体案例的实现来讲解每个知识点,从而激发学生从系统掌握理论知识到实现各个环节的综合应用能力的兴趣,更好地培养学生自主学习和终身学习的能力[1]。
2.1.1 案例教学激发学生学习兴趣
案例教学中,教师所选的案例要尽量贴近实际,选题同时具有典型性、综合性和示范性,并突出其难点与实用价值。通过讲解使学生体会到难点不难,解决难点问题的关键所在等。我们曾选择“学籍管理系统”,“小游戏”等作为案例。
首先,给学生做精选案例系统的演示,让学生体会用C程序设计方法编程应用的实际效果。通过展示友好的界面、演示完善的功能、对比学生的实际生活,极大激发了学生的学习兴趣。
2.1.2 案例教学培养学生的跟随创新、集成创新和自主创新能力
1) 通过教师的精选案例培养学生的程序阅读能力。阅读程序对学生编程能力的提高具有很好的促进作用。学生通过模仿、借鉴已有程序的设计方法和技
基金项目:新疆大学21世纪教改工程二期项目(XJU2008JGT13)。
作者简介:阿里甫•库尔班,男,维吾尔族,副教授,研究领域为计算机基础教育、多文种信息处理、数据库应用。
巧,逐渐形成自己的编程思路。随后要求学生在精选案例程序的基础上或者在它的,自行增加新的功能。这种创新本身也具有重要的意义,程序的核心模块虽然借鉴他人,但是极大缩短了学生的学习周期,提高了学生的超前学习能力,逐步形成高效的程序设计思想和动态调试方法,培养了学生的跟随创新能力。
2) 通过精选的案例培养学生的程序集成能力。学生掌握了某些实用的案例程序之后,经过有效、合理的组合进一步完成难度更大、综合性强、具有新增功能的其他应用程序[2]。
3) 进行一定的跟随创新和集成创新训练之后,学生积累了一定的编程技巧和经验,最终目的是培养学生独立分析问题,解决问题的能力,使学生掌握更加广泛和深入的内容,并围绕重点和难点等方面进行不断探索,最终达到学生自主开发应用程序的目标。
2.1.3 学籍管理系统的案例教学
学籍管理系统对学生来讲非常熟悉。在C程序设计的第一节课,首先抛开课本,演示用C语言编写的“学籍管理系统”小程序。通过演示程序,从使用者的角度讨论设计需求,激发学生学习C程序设计课程的兴趣。其次对程序结构进行讲解,最后对程序功能进行详细的解释。通过此方法,学生对C程序设计课程的数据类型、运算符、表达式、语句及程序设计方法、选择结构、循环结构、自定义函数、数组、指针、结构体与共用体、文件等每个知识点内容产生了初步的认识。
进一步结合传统的教学中讲述C语言的数据类型、标识符,变量等概念的方法,按照教材的理论知识脉络强调其详细的使用规则。将传统教学方法和案例教学方法有机结合起来取得了较满意的教学效果。
“学籍管理系统”的数据结构定义与C语言的数据类型、标识符,变量等内容并行讲解。
1) 学生基本信息描述的数据结构。
typedef struct {
int sno;//整性变量名,分类,定义讲解
char sname[18];//数组基类型,定义,元素
int sex;//借整型、字符型、来描述逻辑数据
int room;// 整性变量名,分类,定义讲解
int fon;// 整性变量名,分类,定义讲解
} StudentInfo;
2) 学生成绩信息描述的数据结构。
typedef struct {
int sno; //整性变量名,分类,定义讲解
char courseNo[6];
char couseName[30];
int grade1; //课程学分
int float 2; //平时成绩,浮点型数据、分类、定义讲解
int float 3; //实验成绩
int float 4; //卷面成绩
float z; //综合成绩
float sx; //实际学分
} GradeInfo
3) 结合案例讲解循环,如While (1),子函数定义,多分支选择语句switch语句。
While (1)
{
MainMenu(); //调用菜单子函数
scanf ("%d",& choose);
switch(choose)
Case 1 : Input(); break; //输入
Case 2 : Query();break; //查询
Case 3 : Delete();break; //删除
Case 4 : Sort(); break; //排序
Case 5 : exit(0); //退出
}
通过此模块讲解While (1)语句的功能、多分支选择语句switch的结构和使用方法、菜单子函数MainMenu()、数据输入Input()、查询信息Query()、删除信息Delete()、排序Sort()等用户定义函数的定义、结构和调用。分析这些模块所蕴含的算法和引用的所有语句的功能、语法。
结合“学籍管理系统”的每个功能模块,展开对C语言中的选择结构、循环结构、自定义函数、数组、指针、结构体与共用体、文件等基本内容的对比讲解。使学生通过上机体会调试运行程序的整个过程,顺利的进入编程、调试程序的角色中。
程序设计的基本结构范文6
关键词:程序设计; 知识结构; 教学方法; 语法规则;算法
中图分类号:G642.0 文献标识码:A 文章编号:1009-3044(2016)22-0150-02
Abstract: As the application of computer technologies popularizing, in order to solve problems of their domains, students of science should have the ability of reading and designing program. Therefore, “program designing foundation” has become a public basic course for all students of science. However, ignoring knowledge hierarchy of the course and overemphasizing teaching grammar rules of some specific program language may leading students to a misunderstanding of program designing, and the effect of teaching is not so good. Knowledge structure of the course is divided into three levels in this paper, which are program rules of programing language, method of program designing, and computer algorithm. Methods of teaching for the three levels are discussed as well.
Key words: program designing; knowledge structure; teaching method; grammar rules; algorithms
1 引言
引言内容。 《程序设计基础》课程是一门公共基础课程,其教学目标是培养学生掌握编程语言的基础知识、技术和部分算法,掌握程序设计的思想和方法,培养学生编程解决实际问题的能力。然而,由于编程语言的语法丰富多变,需解决是的实际问题案例也相对较多,教师的大部分时间和精力都用于讲授编程语言的语法规则、语义、程序基本结构和算法思想[1]。尽管采用了教室理论讲授和机房实验实践方式结合,但是有针对性的引导和提高学生实际程序设计能力举措并不多见。这个问题的深层次原因是部分教师照本宣科,而对该课程知识分层和分层采取不同教学方法缺乏主动思考和探索。
2 知识结构分层及教学方法
早在程序设计未走入课堂之前,学者们就开始了对程序设计本质的思考。N.With认为程序就是算法和数据结构的结合。高福成等人认为程序设计课程的知识分为语言知识、程序设计方法和算法三个模块[2]。李海伦等人认为程序设计是算法设计、数据结构和程序设计方法三者的统一[3]。他们的各种视角和观点都是对程序设计知识分层的有益探索和推进。一般来说,利用计算机解决实际问题分为三个基本步骤。首先要以适当设计思想将实际问题分解,其次为分解后的子问题分别设计算法,最后再用某种语言编程实现。与这三个步骤相对应,程序设计基础课程所讲授的知识分为三个层次:编程语言语法规则、算法、程序设计思想。
2.1 编程语言语法规则
语法规则处于知识的最底层。从实际工程应用看,它是掌握编程技术的基础;从应试角度看,它是课程考核的重点。计算机二级考试中相当一部分题目都是对语法规则的考核。基于这些原因,课堂教学内容大部分都聚焦在各种语法规则和变化的讲授和实践上。而长久以来的这种解学模式形成了对学生的错误引导,很多学生认为printf和scanf的使用规则就是课程的全部。多年以后,那些不从事编程工作的学生留下的印象就只剩下“printf”,而从事编程工作的学生也需要相当长时间的实践才能纠正对程序设计的错误认识。因此,语法规则是程序设计教学内容的一部分,但不应该成为重点。
相较于填鸭式的灌输语法规则,更恰当的方式是以问题需求为牵引,在需要时引入新的语法规则介绍给学生。例如,当需要控制输出十进制整数占10位且左对齐右对齐时使用printf(“%-10d”, x);当需要一次定义多个同类型变量时使用数组;当不适用变量名访问变量时使用指针等。同时迅速在实验中让学生结合实际问题加以联系,从而达到记忆和熟能生巧的教学效果。
2.2 程序设计思想
语法规则处于知识的最高层。从实际工程应用来看,它是开发正确可靠的程序的前提,是提高程序复用性、可扩展性,降低调试和维护难度,缩短开发周期的重要手段;从应试角度看,卷面上只能通过程序设计题让学生设计编写一个完整程序以解决某个实际问题来考核,但由于考试时间和阅卷难度,该实际问题一般复杂度不高,所以并不能很好的考查学生对程序设计思想的掌握程度。由于考核方式牵引,教师往往在课堂上忽视对程序设计思想的教授和培养,最终导致很多考试成绩很高学生,在走上工作岗位后反而不会编程。
程序设计思想的培养,只能通过抽象思维的教学方法引导学生思考、模仿和锻炼。例如以贪吃蛇游戏等复杂度稍高的实际问题,讲解如何将复杂问题分解转化成子问题,以及如何建立子问题之间的逻辑关系和数据关系,激发学生的主动思考的兴趣,鼓励学生独立完成相对复杂程序的激情,进而使其程序设计能力得到潜移默化的提高。
2.3 计算机算法
计算机算法处于知识的中间层。从实际工程应用看,它是为分解后的子问题设计具体解决方案和最终形成计算机可执行的程序代码的过渡阶段;从应试角度看,一般通过程序阅读题考查学生能否跟踪算法并最终得到正确输出结果,通过程序设计题考查学生能否设计算法解决一个具体实际问题。
计算机算法是计算机科学中一项专门知识,包括排序、加密等具体复杂算法以及算法的时间复杂度和空间复杂度计算方法等。而在程序设计基础课程中,在算法上仅要求学生能读懂和理解程序运行流程,掌握设计和实现流程的能力。在该层次上的教学应当采用形象思维的方法,以具体案例为牵引,对涉及算法的,用流程框图直观的展现程序如何控制算法运行,引导学生逐步从形象思维过渡到抽象思维[2]。
3 结论
木工技术的知识结构层次与程序设计具有很强的相似性。要教出一个好木工,不仅要教会其熟练使用刨子、句子、墨线等基本工具,还要教会其将一件大家具分解成门板、腿、闩等基本构件及其组装方式的设计思想,教会其设计单个构件的制作工序,从而具备独立打造完整一套家具的能力。类似的,如果教师们能够按照程序设计基础课程的知识层次,有针对性的采用不同的教学方法讲授不同层次的知识,培养和锻炼学生的不同层次的能力,那么一定能取得较好的教学效果。
参考文献:
[1] 孔万增, 戴国骏.“因材施教”在《C语言程序设计》课程教学中的几点思考[C].计算机教学研究与实践――200术年会论文集, 2009.