
尹宝林
从事计算机应用技术等方面的研究和教学工作多年,主讲本科程序设计专业基础课程以及计算机专业C程序设计的提高课程。编写了相应的课程教材“C程序设计导引”和“C程序设计思想与方法”。
计算机技术是人类在20世纪最重要的发明之一,对我们社会的方方面面产生了深刻而持久的重大影响。作为计算机技术的重要组成部分,程序设计技术在计算机技术的发展和应用过程中发挥了至关重要的作用。时至今日,程序设计技术及其相关的程序设计语言依然是计算机技术这一庞大复杂的技术体系的重要基石。
本课程是计算机专业的专业基础课之一,以C语言为依托,讲述计算机程序设计的方法,使学生掌握程序设计的基本技术,为计算机专业其它课程的学习提供初步的程序设计能力。
本课程是程序设计的入门课程,无需专业方面的先修课程。学生只需具备良好的中学数学、语文和逻辑知识及其运用能力即可。当然,如果具有关于数制的基本概念,特别是对二进制数和十六进制数有所了解,则对课程的学习也是很有帮助的。
从事计算机应用技术等方面的研究和教学工作多年,主讲本科程序设计专业基础课程以及计算机专业C程序设计的提高课程。编写了相应的课程教材“C程序设计导引”和“C程序设计思想与方法”。
本课程的教学目标可以用四个字来概括,就是“会写程序”。具体的说,本课程的教学目标就是使学生能够通过本课程的学习,掌握程序设计的初步知识以及C语言的基本语法、语义和常用语句,能够较为熟练地独立完成50行左右、不涉及复杂计算方法和数据结构的简单程序,为后续专业课程的学习提供基本的程序设计能力。
程序设计的学习主要包含两方面的内容:第一是关于程序设计的方法和技术,第二是关于编程语言的知识。本课程是一门讲解C程序设计的入门课程,主要内容涉及C语言的基本要素,以及基本的程序设计方法和技术。程序设计与程序设计语言关系密切,但又分处不同的层面。程序是对计算步骤和过程的描述,其核心任务是建立求解问题的思路和方案,包括问题分析、方案设计、编码,以及代码的调试、测试等多个环节。编程语言则是对计算过程进行描述的工具,所涉及的是具体语言的语法和语义。与编程语言相比,程序设计的方法和技术更重要、更基础、更本质、也更复杂。它所涉及的是独立于具体程序设计语言的系统化的思路和方法,是本课程的教学重点。
在众多的程序设计语言中,C语言由于其突出的特点,不仅在各种软件系统中得到了广泛的应用,而且在程序设计技术的学习上发挥着无可替代的作用。首先,C语言的计算描述功能很强、所生成的代码运行效率很高,因此适用于广泛的应用领域,包括系统软件、应用软件,以及嵌入式系统。其次,C语言的规模不大、概念较少、内容精炼,适合于初学者学习。此外,C语言在程序设计语言领域影响较广,包括C++、C#、PHP、Java、JavaScript等很多程序设计语言都继承、借鉴或参考了C语言的语法。由于上述这些原因,C语言成为了广大专业人员学习程序设计的第一语言,本课程也因此选择使用C语言教授程序设计技术。
首先需要明确的是,本课程不是一门单纯讲授C语言的课程,而是一门以C语言为依托,讲授程序设计的课程。因此,使用C语言进行程序设计是本课程贯穿始终的主线。所有的内容,包括对C语言语法和语义的讲解,都是围绕程序设计进行的。 学习C语言程序设计必然要对C语言有比较准确全面的了解和掌握,但这并不是说要学好程序设计就需要掌握C语言的全部内容和各种细节,尤其不是说只有掌握了C语言的全部内容和各种细节才能学习程序设计。为突出课程的重点,避免初学者在没有初步掌握程序设计的基本原理和方法时就过于深究C语言的细节,本课程对C语言里一些不常用或非关键的内容没有涉及,对于语言的一些语法和语义也没有不必要的深入讨论。
其次,本课程是一门实践性很强的工科课程。只有通过大量的编程实践,包括阅读示范程序和自己动手编程,才能把学到的理论知识应用于实际。本课程突出了编程的实践性,通过较多数量的例题,展示程序从设计思想到方案、从方案到代码的转换过程,展示在描述计算过程时C语言各种要素是如何综合运用的。通过这样的内容,为学生编程技术的学习提供了大量实例,有助于学生通过感性知识的积累逐步领悟所学到的理论知识,完成思想认识上的飞跃。
第三,本课程是一门注重思想方法和工作方法训练的课程。思想方法和工作方法的正确与否不仅决定了本课程学习的成效,也会影响到学生今后的学习和工作。本课程在讲述中强调对问题要求的准确理解、对解题思路的整体把握、对问题求解过程的自顶向下的描述方式;强调灵活运用所学过的知识,包括常识、逻辑、以及语文、数学等基础知识;强调首先使用自然语言准确描述自己的解题思路和计算步骤,避免在没有弄清问题的实质之前就一头扎进C语句之中。这种对思想方法和工作方法的训练,不仅在课程中有专门的章节讲解,而且在大量的例题中有具体实例的示范。
程序设计不是一种抽象的理论。它所要求的不仅是对知识记忆和理解的能力,而且是对知识运用的能力。为掌握和提高程序设计能力,需要进行大量的编程实践。这里的关键在于,记住了知识不等于理解了知识,理解了知识不等于能够运用知识。为了掌握运用知识的能力,在理论指导下的实践是唯一的途径。C语言不是一个个孤立的知识点,而是一个完整的系统,是描述计算思想的有力工具。只有通过大量的编程实践,才能真正了解C语言的内涵,熟练地将自己的解题思路转换为用C语言描述的程序代码。
为使同学们学好这门课程,本课程不但提供了大量的以编程为主的练习题,而且提供了编程练习的实践环境。通过本课程的练习评测网站,同学们可以随时提交自己练习题的代码,并且立即得到评测结果。当评测结果不理想时,可以根据评测结果中反馈的信息,修改自己的代码,再次提交。
本课程采用课程主讲教师尹宝林编写的教材:C程序设计导引,机械工业出版社,2013。
本课程采用的教学参考书是Brian W. Kernghan, Dennis M. Ritchie:C程序设计语言,机械工业出版社,2001。
除了上述教材和参考书外,有需要的同学还可以参考有关数字逻辑、数据结构和计算方法分析等方面的入门书籍。
本课程练习评测环境的网址是:http://gait.buaa.edu.cn:8765。进入该网站后,在“C程序设计导引-MOOC”练习组注册后即可参加该练习组的各次练习和考试。