第1章程序设计与C语言概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章程序设计与C语言概述l.1程序设计的基本概念程序设计是伴随着计算机应用发展的一门学科,是使用和开发计算机的重要工具。本节简单介绍程序设计的基本概念。1.1.1程序人们要使用计算机,就必须把要解决的问题变成计算机能够接受且能执行的一条条指令,即编排一系列计算机解题步骤,这就是程序。完整的说,所谓程序,就是为完成某个任务而设计的,由有限步骤所组成的一个有机的指令序列。简言之,程序是指令的序列。程序是对所要解决问题的各个对象和处理规则的描述,是由程序员编制设计的静态过程,而输入计算机实现指令的过程是动态过程。PASCAL语言的创建者沃斯(N.Witrh)对程序给出了一个简明而确切的定义:算法+数据结构=程序(Algorithm+DataStructure=Program)算法集中地反映了计算机执行的过程,数据结构是大批数据之间的构造关系,针对所处理的对象,设计好数据结构可极大地简化算法。算法和数据结构是程序的两个重要方面。早期的程序设计语言对数据结构的描述极为薄弱,造成算法任务的加重,随着语言的发展,数据描述能力逐渐增强,这也是语言发展的一个重要标志。程序与计算机的应用和开发密切相关,为了更好地使用计算机,必须了解程序的共同性质:(2)目的性。程序必须有明确的目的,即为了解决什么问题。(3)分步性。程序是分成许多步骤的,不可能一步就解决问题。(4)有序性。程序不是解题步骤随意的堆积,而是要按照一定的顺序有机排列。(5)有限性。解决问题的步骤不可能是无穷多,必须由有限的步骤组成,否则计算机无法实现。(6)操作性。程序总是施加各种操作于某些对象,对象就是数据。1.1.2程序设计语言的发展和特点程序设计语言是指用来书写计算机程序的语言,是人与计算机进行信息通讯的工具。程序设计语言目前多达上千种,常用的也有几十种。众多的程序设计语言如何进行分类,目前众说纷纭,多数人认为程序设计语言分为三大类:面向机器的语言、面向过程的语言和面向问题的语言。(1)面向机器的语言。面向机器的语言是针对特定的计算机而设计的语言,是不能独立于机器的语言。如机器语言和汇编语言。(2)面向过程的语言。面向过程的语言是用于各种计算机并能解决各种题目的语言,它是独立于机器的。使用面向过程的语言,用户不仅要告诉计算机“做什么”,而且还要告诉计算机“如何做”,需要详细地描述解题过程,因此称为面向过程的语言即为过程化语言。如FORTRAN语言、PASCAL语言、C语言、Ada语言等。(3)面向问题的语言。面向问题的语言也是独立于计算机的语言,利用这种语言解题,不仅摆脱计算机内部逻辑,而且不必关心问题的解法和解题的过程。只需要指出问题、输入数据和输出形式,就能得到所需要的结果。面向问题的语言与面向过程的语言之间区别就是不需要要告诉计算机“如何做”,即不需要描述解题过程。因此,面向问题的语言又称为非过程化语言或陈述性语言。如报表语言、判定语言、SQL(StructuredQueryLanguage)语言等。SQL语言是数据库查询和操纵语言,可直接使用数据库管理系统。非过程化语言是程序设计语言发展的目标,对用户来说是方便的,但实现起来是比较困难的,实现更为理想的非过程化语言,目前仍在努力地研制之中。1.1.3程序设计的一般过程从基本概念出发,一般来说,程序设计的过程可以分为以下五个基本步骤:1、问题分析问题分析是进行程序设计的基础。如果在没有把所要解决的问题分析清楚之前就编制程序,后果难于预想。基本的分析内容如下:(1)问题的性质例如,你所要解决的问题是属于数值型还是属于非数值型的问题,如果是数值型的问题,就要确定一个合理的精度要求。(2)输入、输出数据例如,数据的类型、输入输出的设备和格式。(3)数学模型或常用的方法例如,求一元二次方程的根通常有三种方法求根公式韦达定理迭代法选择哪种方法处理结果不一样,因为计算工具的有效数字位是有限的,在运算过程中难免出现误差。2、问题解的描述问题解的描述就是问题求解的步骤,是解题方案的准确而完整的描述,也就是前面所提到的算法,算法不同与一般的计算公式,应具备以下基本特征。(1)可行性算法中的每一个步骤都必须是可实现的。(2)确定性算法中的每一个步骤都必须有明确的定义。不允许模棱两可的解释,也不允许多义性。(3)有穷性算法必须在有限的时间内完成。(4)一个算法应有零个或多个输入算法可以没有输入。例如一盒音乐磁带,启动后就会放出音乐,不需要输入。(5)一个算法应有一个或多个输出算法的目的是解决问题,“解”就是输出,没有输出的算法是没有意义的。3、编写程序设计好合适的算法后,下一个步骤就是用选择的程序设计语言(例如C语言)描述该算法,这一工作就是编写程序,得到的程序是文本格式的,被称为源程序。4、上机调试和运行程序计算机只能执行用机器语言编写的二进制程序(称为可执行程序),而无法直接执行文本格式的源程序,所以无论用是什么高级语言编写的程序,必须翻译成机器代码才能执行。这一翻译工作由编译软件完成,不同的语言有不同的编译软件,而且许多编译软件还提供了源程序管理、程序调试等各种功能。在编写好程序后,需要使用相应的编译软件上机调试和运行程序。本章的第4节将详细介绍如何使用TurboC2.0来调试和运行C程序5、分析结果程序执行后并不意味着就完成了全部工作,还需要分析程序的输出结果,检查其是否符合程序设计的要求,如果出现错误,要注意是算法的问题还是程序编写的问题,然后不断改进,直到得到正确的结果。1.2C语言的发展和特点1.2.1C语言的发展C语言是目前世界上最流行、使用最广泛的高级程序设计语言。它适合于作为系统描述语言,既可用来写系统软件,也可用来写应用软件。C语言的发展大致可以分为以下三个阶段:1、C语言的诞生(1970~1973)C语言是1972年由美国的DennisM.Ritchie设计发明的,并首次在UNIX操作系统的DECPDP-11计算机上使用。它由早期的编程语言BCPL(BasicCombindProgrammingLanguage)发展演变而来。在1973年,AT&T贝尔实验室的KenThompson根据BCPL语言设计出较先进的并取名为C的语言,最后导致了C语言的问世。2、C语言的发展(1973~1988)为了使UNIX操作系统推广,1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本:《可移植的C语言编译程序》。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。3、C语言的成熟(1988~)随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准(称为ANSIC标准),成为现行的C语言标准。本书在讲解C语言时以ANSIC标准为主,再加上Borland公司TurboC2.0的一些扩充。1.2.2C语言的特点C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,象PC-DOS、WORDSTAR等就是用这种方法编写的。归纳起来C语言具有下列特点:1、简洁、紧凑、方便、灵活C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。2、运算符丰富C的运算符包含的范围很广泛,共有34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3、功能齐全C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算。另外C语言具有强大的图形功能,支持多种显示器和驱动器,且计算功能、逻辑判断功能强大。4、结构化程序设计语言结构化程序设计语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便地调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。5、适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。上面只介绍了C语言的最容易理解的一般特点,至于C语言内部的其他特点将结合以后各章的内容作介绍。由于C语言的这些优点,使C语言应用面很广。许多大的软件都用C编写,这主要是由于C的可移植性好和硬件控制能力高,表达和运算能力强。许多以前只能用汇编语言处理的问题,现在可以改用C语言来处理了。C的以上特点,读者现在也许还不能深刻理解,待学完C以后再回顾一下,就会有比较深的体会。1.3C程序的基本结构本节将介绍几个用C语言编写的简单程序,并通过对它们的分析来使读者了解C语言的特性和计算机程序设计的一般规律。1.3.1简单的C程序实例【例1-1】整数加法。本程序的功能是从键盘上读入两个整数,并计算这两个数的和,最后将结果输出。123456789#includestdio.hmain(){inta,b,c;printf(EnterTwoNumbers:);scanf(%d%d,&a,&b);c=a+b;printf(TheSumis%d\n,c);}程序运行结果为:EnterTwoNumbers:2635↙TheSumis61如果把以上的9行程序输入计算机后执行,就可以在显示器上得到所列的运行结果,运行结果中斜体带下划线的内容是用户通过键盘输入的(↙表示回车),其他的内容则是计算机输出的。具体来说,程序执行后,计算机先在显示器上输出“EnterTwoNumbers:”,并在文字后显示文字输入光标等待用户输入,此时用户可以输入两个整数后按回车,数之间用空格区分(如本例中的2635),接着计算机继续执行程序,输出结果TheSumis61,显然这里的61=26+35,完全符合题目要求。如何把C语言程序输入计算机并执行,将在本章的第3节中介绍。注意,输入的程序不包括每一行的行号,也就是每一行左侧的斜体的数字,这些行号是本书为了方便解释程序而加上的,不是程序的一部分,在所以输入程序时应该略去。下面对照程序运行结果逐行分析每条语句的功能:第1行语句的作用是将库函数stdio.h包含入本程序,如果程序中需要输入输出数据,就必须包含库函数stdio.h,详细的解释将在6.2节中给出。第2、3、9行语句一起定义了一个函数main,这是C程序中必需的,第4到8行语句是函数体,也就是程序的具体内容。第4行是变量定义语句,定义了3个变量a、b、c,其中的int指明了这三个变量是整数类型,也就是说变量中存放的值只能是整数。本例需要处理三个整数:两个是用户输入的,一个是计算所得的,其具体的值必须要在程序执行时才能确定,在C语言中,这样的数据需要存放在变量中来处理,而变量又必须先定义后使用,所以这一行的语句就是用来定义变量的,变量a和b存放输入的两个整数,变量c存放a+b的运算结果。第5行是输出语句,对照程序执行结果,可以看到输出的内容就是双引号内的EnterTwoNumbers,显然,如果改变这段文字,计算机就会输出不同的内容,例如要输出HelloWorld!,语句就写成printf(“HelloWorld!”);,printf的详细介绍在3.2.2节中。第6行是输入语句,对照程序执行结果,可以看到语句中双引号内的%d%d指明要输入两个整数,后面的&a,&b则指

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功