北大裘宗燕《从问题到程序》第二章 数据对象与计算
时间:2025-04-02
时间:2025-04-02
名家手笔,编程经典
第二章 数据对象与计算
计算机程序处理数据,写程序就是描述数据的处理过程,其中必然涉及数据的描述和计算问题。例如,在C程序里可以写出下面片段,这是一个表示了某种计算过程的“表达式”,其中包含了一些“数据”,如整数和实数等::
-(3.24 * 5 + sin(2,3)) / 4 * 6.24
要理解这种表达式,写程序时知道如何写出所需表达式,就必须知道C语言对各种数据的写法(术语是数据的描述)有什么规定:在表达式里可以写什么?它们表示什么意思?写出的表达式表示了什么计算过程?有关计算的结果是什么?本章首先解决这些问题。
本章将首先讨论C语言中各种基本数据的描述,然后介绍如何从基本数据元素出发描述计算,如何写好能求出所需结果的表达式。在这一章里,读者将初步接触到计算机领域的许多重要概念,看到它们在简单程序中的地位和作用。
2.1 基本字符、名字表示、标识符和关键字
一个C程序就是C语言基本字符的一个符合规定形式的序列。C语言基本字符包括:
1. 数字字符,0,1,2,3,4,5,6,7,8,9;
2. 大小写拉丁字母:a~z,A~Z;
3. 其他一些可打印(可以显示)的字符(如各种标点符号、运算符号、括号等),包括:
~!%&*()_-+={}[]:;"'<>,.?/|\
现在不必死记这些,随着学习进展,读者将很容易记住这些字符的意义和作用。
4. 还有一些特殊字符,如空格符、换行符、制表符等。
空格符、换行符、制表符等统称为空白字符。空白字符在程序中主要用于分隔其他成分。
按规定,C程序中大部分地方增加空白字符都不影响程序意义。因此人们写程序中常利用这种性质,通过加入一些空白字符,把程序排成适当格式,以增强程序的可读性。例如,在适当地方换行,在适当地方加空格或制表符。这样能使程序的表现形式更好反映其结构和所实现的计算过程。举例说,第1章的简单C程序也可以写成下面样子:
#include <stdio.h>
int main(){printf("Good morning!\n");return 0;}
这明显不如前面的写法清晰。对更大的程序情况则会更糟糕。本书后面讨论中还会提出对各种程序成分的较好写法,书中程序示例也反映了这方面的情况。
构成C程序的基本成分包括各种名字(如上面出现的main、printf等等),各种数值表示(如125、3.14等等),各种运算符和其他符号。
名字(标识符)的构成
程序中有许多需要命名的对象。例如,程序中常常需要定义一些东西,以便在各处使用。为了在定义和使用之间建立联系,表示不同位置用的是同一个对象,基本的方式就是为程序对象命名,通过名字建立起定义与使用间、同一对象的不同使用间的联系。为了这种需要,C语言规定了名字的书写形式。程序中的名字称为标识符。
一个标识符是字母和数字字符的一个连续序列,其中不能有空白字符,而且要求第一个字符必须是字母。为了方便起见,C语言特别规定将下划线字符“_”也当作字母看待。这就是说,下划线可以出现在标识符中的任何地方,特别是可以作为标识符的第一个字符。下面是一些标识符的例子:
名家手笔,编程经典
abcd Beijing C_Programming _f2048 sin a3b06
xt386ex A_great_machine Small_talk_80 FORTRAN_90
以下划线开始的标识符保留给系统使用,在我们编写普通程序时不要使用这种标识符,以免与系统内部的名字冲突造成程序问题。
如果一个字符序列中出现了非字母、非数字、也非下划线的字符,那么它就不是一个标识符了(但有可能其中一部分是个标识符,例如x3+5+y,其中x3和y都是标识符,中间的+5+不属于这两个标识符)。下面是一些非标识符的字符序列:
+= 3set a[32] $$$$ sin(2+5) ::ab4==
C语言还规定,标识符中同一字母的大写形式和小写形式将看作不同字符,这样,a和A不同,name、Name、NAME、naMe和nMAE是互不相同的标识符。
关键字
C语言的合法标识符中有一个特殊的小集合,其中的标识符称为关键字。作为关键字的标识符在程序里具有语言预先定义好的特殊意义,因此不能用于其他目的,不能作为普通的名字使用。C语言关键字共32个,列在这里:
auto break case char
const continue default do
double else enum extern
float for goto if
int long register return
short signed sizeof static
struct switch typedef union
unsigned void volatile while
现在不准备对它们做更多解释。随着书中讨论的进展,读者会一个一个地接触并记住它们。目前只需要了解关键字这一概念。
除了不能使用关键字之外,我们写程序时几乎可以用任何标识符为自己所定义的东西命名,所用的名字可以自由选择。通过长期程序设计实践,人们认识到命名问题并不是一件无关紧要的事情。合理选择程序对象的名字能为人们写程序、读程序提供有益的提示,因此人们倡导采用能说明程序对象内在含义的名字(标识符)。
注读者注意,命名问题并不是C语言中特殊的东西,每种程序语言都必须规定程序中名字的形式,在计算机领域中到处都用到名字。例如,计算机里的文件和目录,各种应用程序和系统,图形界面上的图标 …… 此处隐藏:17711字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:第16讲 人体生命活动的调节