前    言
  1. 教材编写初衷
  随着时代的发展,我国的对外交流也越来越多,这种交流不仅是经济上的,也有学术和教育方面的。目前,我国很多大学和国外的大学都建立了合作关系,双方联合办学,有“2+2”培养模式、“4+1”培养模式等。这种办学模式往往采用中、英双语教学,双方联合进行培养。这要求学生在国内学习期间能够打下和国外相同的基础,并能够适应可能的国外教学方式。
  我校多年来和英国多所大学建立了合作关系,其中C++一直是一门重要的基础课程。在办学之初,双方通过充分协商,确定了“强基础、重应用”的教学方针。在有限的学时内,重点让学生掌握C/C++的概念和解决问题的思维方法,放弃了一些不常用的记忆性的细枝末节,着力培养学生用这门程序设计语言解决实际问题的能力。
  因为面临语言(英语)和新知识的双重挑战,所以我们一直希望有一本合适的教材。虽然优秀的英语原版教材和中文教材都不少,但无论从内容上还是结构篇幅上都不能完全适合我们的需要。多年来,我们一直使用自编的讲义,中英双方的教师还把自己工作和生活中遇到的一些实际问题编写成一个个案例,来指导学生用程序设计语言来解决这些问题。通过多年的不断完善,我们认为可以将教学经验奉献出来,供具有相同学习需要的教师和学生参考、指正,并共同提高。
  2.??C/C++,还是Python
  在人工智能及相关技术高速发展的今天,许多大学开设了Python语言的课程。这是不是意味着C/C++已经过时了?是不是应该放弃C/C++转而学习Python呢?我们的体会是这样的,如果把当前的技术热点比喻为一棵枝繁叶茂的大树,Python可以比喻为郁郁葱葱的枝叶,而C/C++则可以比喻为树干。Python短短几行程序可以实现强大的功能,得益于丰富的库的支持,而这些库很多就是用C/C++编写的。还有,我们知道,C/C++语言虽然是高级语言,同时又被称为中级语言,因为它可以方便地和硬件交互,控制硬件,所以大量的微处理芯片里的程序都是采用C/C++编写的,比如近年来广泛应用的嵌入式系统,多是采用C/C++编写的。常用的单片机系统固件(Firmware)的开发,也多采用C/C++语言。所以,在新的时代,传统的C/C++语言不仅没有没落,反而更加显现出强大的魅力。
  3. 本书的特色
  传统上,C/C++作为工科院校的基础课程被广泛学习,也作为后续课程,比如数据结构、Java、Python等的基础课程。在我校的国际交流学院,这门课程沿用了英方的名称“电子处理系统”。这样命名的用意是:作为电力、电子、电气自动化专业乃至整个工科的大学生,需要了解怎样用程序来分析、处理各种电子信号,处理各种传感器数据,这是一项重要的技能。
  当今世界技术的发展趋势之一就是软、硬件相互融合,软件需要运行于硬件平台之上,需要硬件配合来实现。比如人工智能的算法需要运行在一定的硬件平台上,以英伟达Jetson Nano为例,只有70mm×45mm大小的主板上配有128个Nvidia CUDA 核心的GPU,可以快速运行AI算法,并行运行多个神经网络,同时处理多个高分辨率传感器。
  另外,很多硬件,比如单片机芯片等,都需要编写烧录正在芯片内部的程序(固件)才能工作,否则就只是一个空白芯片,这些固件往往使用C/C++语言开发。还有一些硬件,需要先以软件的方式设计,然后再下载、固化到芯片中。比如广泛使用的现场可编程逻辑门阵列(FPGA),需要先使用硬件描述语言(Hardware Description Language,HDL)设计需要的功能,再下载到芯片中。
  本书的特色之一,就是精心设计了三个基于硬件的实验,展示程序语言是如何控制硬件的。这三个实验由浅入深,分别是点亮发光二极管(LED)、超声波测距和伺服电机控制。通过程序的控制,一个个发光二极管闪亮起来后,原先看似冷冰冰的代码一下变得鲜活起来,释放出强大的魅力,三十几行代码让一排发光二极管变幻出各种各样的点亮方式,追逐、跳跃,等等,通过修改参数,发光的方式可以变化无穷。学生的学习兴趣和热情一下子调动起       来了。
  超声波测距实验,即通过不复杂的数学计算和函数的调用可以控制超声波的发射和接收,并计算出超声波遇到物体反射回来所需要的时间,再乘以声波在空气中传播的速度,就可以计算出物体的距离。把手掌放在测声波传感器的前面,前后移动,在计算机屏幕上就可以看到距离的变化。
  硬件实验平台采用了风靡世界的开源电子原型平台Arduino,软件开发环境简单易学,几乎没有学习门槛。在教师的指导下,学生十几分钟就能够使用。接线则采用面包板插接,不需要焊线,非常适合大学一年级学生学习。
  三个硬件实验会安排在上半学期,其中前面两个实验安排在前五周。这可以让学生体验到这门语言的魅力,提高学习兴趣,也为后续的学习打下基础。
  本书的特色之二,就是由具有多年C/C++教学经验的中英双方的教师联合编写。编写过程中充分考虑到了中国学生的特点,避免采用复杂、冗长、难懂的英文表述,同时放弃了一些平时很少用到的记忆性的知识点。本书融合了双方教师多年的教学经验,抛弃了晦涩难懂的描述方式,特别在概念和思维的讲解上深入浅出、易于理解。针对大学生普遍反映较难的面向对象的概念和方法,结合了生活中常见的例子,一步步地深入,把概念和方法融于实例当中,既降低了学习难度,又让学生在不知不觉中掌握了思路和解决问题的方法。后一阶段的课程设计更加深了学生对概念和方法的理解。这就是“重应用”教学宗旨的体现。
  本书的特色之三,就是在排版上对一个页面进行了“二八”比例分割,即一个页面百分之八十的宽度用于正文的排版,另外百分之二十的宽度用于注释正文中出现的生词、关键字等。这样可以方便阅读,避免了学生频繁地查生词,提高了学习效率。
  另外,书后给出了三百多个C/C++专业词汇,便于学生查阅和记忆。
  本书作者陈宗民老师具有二十多年的C/C++教学经验,编写过《计算机信息基础》《C语言》等教材,曾获上海市优秀教材奖。
  
  编者??????
  2023年2月
  
C/C++程序设计(C/C++ Programming)

前言

II


III