好文档 - 专业文书写作范文服务资料分享网站

第一章 C语言程序设计概述汇总

天下 分享 时间: 加入收藏 我要投稿 点赞

第一章 C语言程序设计概述

1.1 程序和程序设计语言

计算机是在程序的控制下工作的。要让计算机能够正常的运行,需要预先编写好计算机工作步骤的指令序列,即系统程序;要利用计算机来解决一个具体的实际问题,同样需要编写程序,即应用程序。这些都要进行程序设计工作。

1.1.1 程序与程序设计

所谓程序,就是一系列遵循一定规则和思想并能正确完成指定工作的代码(也称为指令的序列)。通常一个计算机程序主要描述两部分的内容,其一是描述问题的每个对象及他们之间的关系,即数据结构的内容;其二是描述对这些对象进行处理的动作、动作的先后顺序,即求解的算法。因此,程序也可以用经典的公式来表示:

程序=数据结构+算法

所谓程序设计,就是根据计算机要完成的任务,提出相应的需求,在此基础上设计数据结构和算法,然后用某种程序设计语言编写相应的程序代码。

一个设计合理的数据结构往往可以简化算法,而且一个好的程序有可靠性、易读性、可维护性等良好特性。

1.1.2 程序设计语言

程序设计语言是人与计算机交流的工具,是用来书写计算机程序的工具。程序设计的语言有几百种,最常用的不过十多种。按照程序设计语言发展的过程,可以分为三类。 1. 机器语言

机器语言是由0和1这样的二进制代码按一定规则组成的、能被机器直接理解和执行的指令集合。机器语言中的每一条语句实际上是一条二进制形式的指令代码(即机器指令),机器指令一般由操作码和操作数两个部分组成,操作码表示该指令所要完成的功能,操作数指出完成这个功能所需要的数据或数据在内存中的地址。

例如,某种计算机上计算A=15+10的机器语言程序如下:

10110000 00001111 把15放入累加器A中

00101100 00001010 10与累加器A中的值相加,结果仍放入A中

1

11110100 结束,停机

用机器语言编写的程序,计算机可以直接识别和执行,因而执行效率高。但由于不同的机器,其指令系统不同,因此机器语言程序通用性差。另外,机器语言的指令不直观,难认、难记、难理解、难修改、易出错。因此,很少有人用机器语言直接编程。 2. 汇编语言

为了便于理解和记忆,人们采用能够帮助记忆的指令助记符来代替机器语言指令代码中的操作码,用地址符号或十进制数来代替操作数。指令助记符一般采用描述该指令功能的英文单词的缩写,如用ADD表示加法操作、SUB表示减法操作、JMP表示程序跳转等等。这种指令助记符的语言就是汇编语言,又称为符号语言。例如,上述计算A=15+10的汇编语言程序如下:

MOV A,15 把15放入累加器A中

ADD A,10 10与累加器A中的值相加,结果仍放入A中 HLT 结束,停机

计算机不能直接执行用汇编语言编写的程序,必须由一种专门的翻译程序(即汇编程序)将汇编语言源程序翻译成机器语言程序,计算机才能执行。 3. 高级语言

机器语言和汇编语言都是面向机器的语言,一般称为低级语言。它们对机器的依赖性很大,用它们开发出的程序通用性差,而且要求程序的开发者必须熟悉和了解计算机硬件的每一个细节,因此,它们面对的用户一般是计算机专业人员。随着计算机技术的发展及计算机应用领域的不断扩大,计算机用户的队伍也在不断壮大,而且这个队伍中绝大部分人不是计算机专业人员。为此,从20世纪50年代中期开始,逐步发展了面向问题的程序设计语言,称为高级语言。高级语言与具体的计算机硬件无关,其表达方式接近于被描述的问题,接近于自然语言和数学语言,易为人们接受和掌握。用高级语言编写程序要比用低级语言容易得多,大大简化了程序的编制和调试过程,使编程效率得到大幅度的提高。

例如,上述计算A=15+10的BASIC语言程序如下:

A=15+10 '15与10相加的结果放入A中 PRINT A '输出A END '程序结束

用高级语言编写的程序易学、易读、易修改,通用性好。但是,计算机同样不能直接执行高级语言程序,必须经过语言处理程序的翻译后才能被机器接受。

下面列出几种最常用的高级语言及其最适用的领域: Basic 教学和微小型应用程序的开发 Fortran 科学及工程计算程序的开发 Pascal 专业教学和应用程序的开发 C 中、小型系统程序的开发 C++ 面向对象程序的开发

2

Java Internet上应用的重要编程语言

Visual Basic 面向对象程序的开发

Cobol 商业、交通和银行等行业应用程序的开发 Lisp 人工智能程序的开发 Prolog 人工智能程序的开发

1.1.3 语言处理程序

计算机可以直接识别和执行的只能是机器语言程序。用汇编语言和高级语言编写的程序,都必须经过一个翻译过程才能转换为计算机所能识别的机器语言程序,实现这个翻译过程的工具是语言处理程序,即翻译程序。翻译程序除了要完成语言间的转换外,还要进行语法、语义等方面的检查。针对不同的程序设计语言编写出的程序,有各自的翻译程序,互相不通用。翻译程序可分为汇编程序和高级语言翻译程序;高级语言翻译程序有两种工作方式:解释方式和编译方式,对应的是解释程序和编译程序。 1. 汇编程序

汇编程序是一种由专业的软件开发商提供的系统软件,它能将用汇编语言编写的源程序翻译成某种类型的计算机的机器语言程序,即目标程序,这一翻译过程称为汇编。图1.1是汇编程序的功能示意图。

汇编语言源程序 汇编 机器语言目标程序 执行 执行结果 汇编程序

图1.1 汇编过程示意图

汇编程序通常是将一条汇编语言指令翻译成一条机器语言指令。在翻译的过程中,还要对每一条指令进行语法检查,若有错误,就中断汇编过程,并以某种方式输出错误的类型及有关信息,以便用户进行修改。若没有错误,就自动生成相应的目标程序,再经过一定处理之后,便可以运行了。运行的是可执行的目标代码,与源程序及汇编程序无关。若源程序作了某些修改,则必须再重新进行汇编。 2. 解释程序

解释程序的工作过程是将高级语言源程序一句一句地读入,每读入一个语句都要对它进行分析和解释,若有错误就即时中断其解释过程,并通知用户进行修改,若没有错误就按照解释结果执行所要求的操作。其工作过程如图1.2所示。

高级程序源程序 一句一句地解释并执行 图1.2 解释过程示意图

3

执行结果 解释程序 BASIC、LISP等语言采用解释方式。解释方式灵活、方便,交互性好,解释执行程序的过程中也不会产生目标程序。但因为是边解释边执行,所以程序的执行速度很慢,如果源程序中出现循环结构,解释程序也要重复多次地解释循环体中的每一条语句,造成很大浪费,而且解释方式在运行源程序时离不开翻译程序。 3. 编译程序

编译程序的功能是将用高级语言编写的源程序翻译成机器语言程序,即目标程序,这一翻译过程称为编译。但目标程序还不能立即装入机器执行,因为还没有连接成一个整体,在目标程序中还可能要调用一些其他语言编写的程序和标准程序库中的标准子程序,所有这些程序通过连接程序将目标程序和有关的程序库组合成一个完整的可执行程序。产生的可执行程序可以脱离编译程序和源程序独立存在并反复使用。故编译方式执行速度快,但每次修改源程序后,都必须重新编译。其工作过程如图1.3所示。

图1.3 编译过程示意图

源程序 编译程序 目标程序 连接 连接程序 可执行程序 执行 执行结果 与汇编程序不同的是,编译程序往往需要将一条高级语言的语句转换成若干条机器语言指令,而且翻译的过程也要复杂得多。一般高级语言(C/C++、PASCAL、FORTRAN、COBOL等)都是采用编译方式。

1.1.4 设计程序的基本原则

要设计出一个好的程序,必须了解利用计算机解决实际问题的过程,掌握程序设计的基本技术,熟练地掌握一种程序设计语言。计算机解决问题的基本过程如图1.4所示。

分析 问题 确定问题 解决方案 确定实现 算 法 编写 程序 整理 程序 运行 程序 图1.4 计算机解决问题的基本过程

如何才能编写出高质量的程序呢?下面是设计程序时应遵循的基本原则:

(1) 正确性。正确性是指程序本身必须具备且只能具备程序设计规格说明书中所列举的全部功能。它是判断程序质量的首要标准。

(2) 可靠性。可靠性是指程序在多次反复使用过程中不失败的概率。 (3) 简明性。简明性的目标是要求程序简明易读。

(4) 有效性。程序在计算机上运行需要使用一定数量的计算机资源,如CPU的时间、存储器的存储空间。有效性就是要在一定的软、硬件条件下,反映出程序的综合效率。

(5) 可维护性。程序的维护可分为校正性维护、适应性维护和完善性维护。一个软件的

4

可维护性直接关系到程序的可用性,因此应特别予以关注。

(6) 可移植性。程序主要与其所完成的任务有关,但也与它的运行环境有着一定的联系。软件的开发应尽可能远离机器的特征,以提高它的可移植程度。

为了有效地进行程序设计,不仅要掌握一门高级语言,还应该学会对各类问题拟定出有效的解题步骤——即算法设计。有了正确的算法,才能够编制程序。算法的好坏,决定了程序的优劣,因此,程序设计的核心任务之一就是设计算法。

1.2 算法

所谓算法,就是问题的求解方法。例如,期末考试前的复习计划,就是“复习算法”;到医院看病,先挂号,后诊断、检查,再取药等,是“看病算法”。在计算机中,把解题过程的准确而完整地描述称为解题算法。

一个算法由一些操作组成,而这些操作又是按一定的控制结构所规定的次序执行的,也就是算法由操作与控制结构两个要素组成。

一个算法应该具有如下特点:

(1)有穷性:一个算法应该包含有限的操作步骤,而不能是无限的;并且能在有限的时间内完成。

(2)确定性:每一个步骤都是确定的,而不能是含糊的、模棱两可的。 (3)有效性:每一个步骤都能得到有效地执行,并得到确定的结果。

(4)有零个或多个输入:所谓输入是指执行算法时需要从外界取得必要的信息。 (5)有一个或多个输出:算法的目的就是为了求解,“解”就是输出。

上述所讲的算法特性,约束人们去正确地书写算法,使之能够正确无误地执行,达到求解问题的预期效果。同时,算法还应该具有直观、清晰、易懂的表示形式,以利于维护、修改和交流。 1.简单算法举例

例1.1 给出求x1+x2+x3+x4+x5 的值的算法。 算法分析如下:

(1)手工计算的算法。采用手工计算的步骤为:

① 将x1与x2相加,得到两个数之和; ② 将上一步的和与x3相加,得到三个数之和; ③ 将上一步的和与x4相加,得到四个数之和; ④ 将上一步的和与x5相加,得到五个数之和。

这种算法虽然是正确的,但太繁琐。如果要求x1+x2+……+x100,则要写99个步骤,显然是不可取的。

(2)适合计算机处理的算法。该算法能更加简洁地表达上述解题过程,并具有通用性。先定义几个变量:设置变量s表示多项式之和,其初值为零;设置变量a表示多项式中的

5

第一章 C语言程序设计概述汇总

第一章C语言程序设计概述1.1程序和程序设计语言计算机是在程序的控制下工作的。要让计算机能够正常的运行,需要预先编写好计算机工作步骤的指令序列,即系统程序;要利用计算机来解决一个具体的实际问题,同样需要编写程序,即应用程序。这些都要进行程序设计工作。1.1.1程序与程序设计所谓程序,就是一系列遵循一定规则和思想并能正确
推荐度:
点击下载文档文档为doc格式
5ha5j38mz01symv1jox557eja0pqkz006mb
领取福利

微信扫码领取福利

微信扫码分享