第3 章 程序设计语言 本章主要从程序的概念与表示和程序设计语言的发展介绍程序设计语言,并通过选 择程序设计语言引入C 语言,简述C 语言的特点及C 语言的编程规范。第一部分首先 从解决生活中的程序入手讲解程序概念,用计算机中的程序解决实际问题,并通过绘制 流程图明晰程序的执行步骤;第二部分简述了程序设计语言的发展历程,并将程序设计 语言分类;第三部分主要讲解C 语言的特点及编写C 语言程序时需要注意的编程规范。 3.1 程序的概念与表示 程序在我们生活中的定义是办事情的章程,在计算机中的定义是执行某个任务所要 经历的一系列操作,本节会从生活中的程序引入,让我们更好地理解计算机中程序的概 念与表示。 3.1.1 生活中的程序 什么是程序呢?我们先来看看生活中的程序。 ATM 机还没有普及的时候,每个人都有拿着存折储蓄卡去银行取钱的经历。整个过 程大致可以分为如图3-1 所示的6 个环节。 图3-1 银行取钱过程 33 第3 章 程序设计语言 这是一个生活中很常见的办理事宜的程序,那如何把日常生活中取钱的例子通过计 算机表示出来呢?什么是计算机的程序?如何编写计算机程序?这些,都将在这一章中 进行讲解。 我们来看一个问题:如何将东西装进冰箱? 完成这件事需要三步,分别是打开冰箱→将东西放进冰箱→关上冰箱。这就是最简 单的顺序执行的程序。 程序是什么?通俗地说,程序可以指连贯的活动、作业、步骤、决断、计算和工序, 当它们依照严格规定的顺序发生时即可实现特定目标或解决特定问题。 C 语言程序是一种结构化的程序,那么什么是结构化的程序呢?结构化程序就是首 先将一个复杂的问题分解成互相独立的几个部分(合理抽象),然后每个独立部分可以 通过简单的语句或结构来实现,这种分解问题的过程就是算法设计的过程(高效计算)。 3.1.2 计算机中的程序 计算机的产生解决了很多实际问题,而这些问题的解决离不开计算机中的程序,用 计算机解决问题之前,首先要把解决步骤描述出来。 来看下面的例子。 假如要求从键盘输入3 个数,找出其中最小的那个数,将其输出在屏幕上,请给出 解决这个问题的算法。 分析:程序对于从键盘输入的3 个数必须用3 个变量(暂时可理解为一个空盒子, 用于存放数据)来保存,a,b,c 代表输入的3 个数,另外,还需要一个变量min 来保 存最小的那个数。 (1)先比较a 和b 的值,把数值小的放入min 中。 (2)再将min 与c 比较,再把数值小的放入min 中。 (3)经过两次比较,min 中已存放的是a,b,c 这3 个数中最小的数, 把min 的 值输出就是所需结果。 上面的思考过程很重要,图3-2 是上题内容形象化的展示。 图3-2 算法分析 根据图3-2 的算法分析,我们可以将比较三个数中最小值的程序,从自然语言转化 为以下的算法步骤并加以改进。 34 计算思维导论(C 语言实现) 算法步骤: 改进版: (1) 输入3 个数, 其值分别赋给3 个变量a,b,c; (2) 把a 与b 中较小的那个数放入 变量min 中; (3) 把c 与min 中较小的那个数放 入变量min 中; (4) 输出最后结果min 的值。 (1) 输入3 个数,其值分别赋给3 个 变量a,b,c; (2) 比较a 与b 的值,如果a”这类操作符,前后不加空格。 4.对齐缩进 (1)程序块要采用缩进风格编写。 (2)对齐使用Tab 键,Tab 键设置不同造成排版不同,应注意某些编辑器在识别、 显示Tab键上存在问题;最终排版应以在项目的主代码编辑器中显示一致、整洁、清晰为准。 (3)函数或过程的开始,结构的定义及循环、判断等语句中的代码都要采用缩进 风格,case 语句下的情况处理语句也要遵从语句缩进要求。 5.标识符命名要求 (1)命名只能包含数字、字母、下画线。 (2)不能以数字开头。 (3)不能使用关键字作为名称。 (4)标识符的命名要清晰明了,有具体的含义,例如:使用完整的单词或单词 缩写。 46 计算思维导论(C 语言实现) (5)函数命名,函数名中每个单词首字母大写;为避免由于函数名过长造成难以 理解,可以在适当的位置使用下画线进行分割;命名中的前缀、关键缩写词等可以适当 地采取全部大写。 (6)常量名全部大写。 (7)局部变量、全局变量、参数变量、成员变量,变量名一律小写,单词间使用 下画线相连。 (8)静态全局变量使用s_ 前缀,普通全局变量使用g_ 前缀。 (9)宏命名全部大写,单词间使用下画线相连。 遵循C 语言编程规范,可以养成良好的编码习惯,摒弃那些可能存在风险的编程行 为,编写出安全健壮的代码,进而保证产品的可靠性、稳定性、安全性,增加软件的可读性, 便于维护。遵循良好的编程规范,也是项目开发中相互协作的技术基础。 3.4 本 章 小 结 本章主要讲解了程序的概念、流程图的绘制、程序设计语言的发展历程和C 语言的 主要编程规范。掌握流程图后,可以用流程图直观地展示程序的执行过程。了解程序设 计语言的发展过程是了解编程语言的基础,掌握C 语言编程规范可以让编程更加条理清 晰、结构完整。 关键点概括如下。 (1)程序的概念。程序可以指一连贯的活动、作业、步骤、决断、计算和工序, 当它们依照严格规定的顺序发生时即可实现特定目标或解决特定问题。 (2)用流程图来表示程序。用流程图来表示程序需要掌握流程图的符号及含义, 将流程图的符号按顺序连接成表示程序的流程图。 (3)程序设计语言的发展阶段分为前计算机时代、机器语言时代、汇编语言时代 以及高级语言时代。 (4)类型语言分类:强类型语言和弱类型语言。 (5)C 语言是结构化语言,功能齐全,适用范围广泛,可以对硬件进行操作,文 件操作能力强。C 语言强大的功能和友好的编程风格使它成为最流行的编程方式,并且 经久不衰。 (6)C 语言是一种结构化的程序设计语言,在书写代码的时候应该遵循编程规范。 这样有助于查看程序的条理,帮助设计者厘清思路,也便于他人阅读。 3.5 本 章 习 题 1.简单描述“大一新生报名时办理入学手续”的流程,并绘制出对应流程图。 2.场景描述:张伯伯计划本周末带自己的宠物猫去宠物医院洗澡,但是宠物医院 每天只接受30 只宠物洗澡预约。张伯伯首先通过手机预约周六宠物洗澡服务,但由于 预约已满,张伯伯不得不选择预约周日,还好周日没有排满,张伯伯最终顺利预约到第 18 名。要求按照上述场景描述梳理出整个流程,并绘制出对应流程图。 47 第3 章 程序设计语言 3.现有8 个固定纸盒,每个纸盒中放入任意一个正整数,不允许挪动已有纸盒位 置(纸盒中的数字可以任意拿放,但一个纸盒最多只能放一个数字),可以增加新的纸盒, 要求将这8 个正整数从小到大依次排序,请给出解决这个问题的算法。 4.任意输入一个数n(正整数),用sum 表示1 到n 的累加和,并输出sum,请给 出解决这个问题的算法并绘制出相应流程图。 5.简述程序设计语言的发展过程和主要阶段。 6.简述对C 程序设计语言的认识。