【C语言程序设计】
第1章 程序设计基本概念
一、程序和程序设计
1C程序
(1)把高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”,通过编译程序把源程序转换成机器能接受的目标程序的过程叫做编译。每种高级语言都有与它对应的编译程序。
(2)由C语言构成的指令序列称为C源程序,按C语言的语法编写C程序的过程叫做C语言的代码编写。
(3)C源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件,然后由称为“链接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.exe的可执行文件。在操作系统环境下,只需点击或输入此文件的名字(而不必输入后缀.exe),该可执行文件就可运行。
2程序设计
简单的程序设计的步骤:
(1)确定数据结构
根据任务书提出的要求、指定的输入数据和输出结果,确定存放数据的数据结构。
(2)确定算法
针对存放数据的数据结构来确定解决问题、完成任务的步骤。
(3)编码
根据确定的数据结构和算法,使用选定的计算机语言编写程序代码,输入到计算机并保存在磁盘上,简称编程。
(4)在计算机上调试程序
消除由于疏忽而引起的语法错误或逻辑错误;用各种可能的输入数据对程序进行测试,使之对各种合理的数据都能得到正确的结果,对不合理的数据能进行适当的处理。
(5)整理并写出文档资料。
二、算法
1算法的特性
算法是指为解决某个特定问题而采取的确定且有限的步骤,一个算法应当具有以下五个特性:
(1)有穷性
一个算法包含的操作步骤应该是有限的。
(2)确定性
算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。
(3)可行性
算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。
(4)有零个或多个输入
在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。
(5)有一个或多个输出
算法的目的是为了求“解”,这些“解”只有通过输出才能得到。
2算法的描述方式
(1)伪代码
一种近似于高级语言但又不受语法约束的一种语言表达方式。
(2)流程图
流程图是描述算法的很好的工具,一般的流程图由图1-1所示的几种基本图形组成。
图1-1 一般的流程图所用的几种基本图形
用流程图来表示算法,形象直观,简单方便。但是,这种流程图对于流程线的走向没有任何限制,在描述复杂的算法时所占篇幅较多,费时费力且不易阅读。
三、结构化程序设计和模块化结构
1结构化程序
结构化程序由三种基本结构组成。
(1)顺序结构
赋值语句、输入、输出语句都可构成顺序结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移。顺序结构可用图1-2所示的流程图表示,其中(a)是一般的流程图,(b)是N-S流程图。
图1-2 顺序结构流程图
(2)选择结构
if语句、switch语句都可构成选择结构,当执行到这些语句时,将根据不同的条件去执行不同分支中的语句。选择结构可用图1-3所示的流程图表示,其中(a)是一般的流程图,(b)是N-S流程图。
图1-3 选择结构流程图
(3)循环结构
循环结构将根据各自的条件,使同一组语句重复执行零次或多次。循环结构的流程图如图1-4和图1-5所示,每个图中(a)是一般的流程图,(b)是N-S流程图。图1-4是当型循环流程图。图1-5是直到型循环流程图。
图1-4 当型循环流程图
图1-5 直到型循环流程图
当型循环的特点是:当指定的条件满足(成立)时,就执行循环体,否则就不执行。
直到型循环的特点是:执行循环体直到指定的条件满足(成立)时就不再执行循环体。
2模块化结构
(1)原理
计算机在处理复杂任务的时候,将复杂问题分解成若干个子任务,每个子任务又可以分成很多个小子任务,每个小子任务用一个个小模块来实现这些功能,每个程序员分别完成一个或多个小模块,这种程序设计方法叫做“模块化”的方法。
(2)C语言是一种结构化程序设计语言,主要体现在以下方面:
①它提供三种基本结构的语句;
②提供了定义“函数”的功能,在C语言中没有子程序的概念,它提供的函数可以完成子程序的所有功能;
③C语言允许对函数单独进行编译,从而可以实现模块化;
④提供了丰富的数据类型。