1、 程序设计技术基础-C语言第1章 概述1.1 计算机的工作机制1.2 程序与程序设计1.3 算法与算法描述1.4 C语言 2022-8-82程序设计技术基础-C语言1.1 计算机的工作机制 1.1.1 硬件结构 1.1.2 软件系统程序设计技术基础-C语言1.1 计算机的工作机制1.1.1 硬件结构冯诺依曼计算机的硬件构成:控制器负责从内存中取指令并根据指令发出控制信号以引起其他部件的动作。运算器执行运算指令所规定的运算。寄存器主要用于记录下一条指令的内存地址、当前指令的执行状态以及暂时保存指令的计算结果。内存储器(简称内存)用于存储计算机程序。外部设备(简称外设)提供了计算机与外界的接口,主
2、要用于计算机的输入/输出以及为计算机提供大容量的信息存储(简称外存)。程序设计技术基础-C语言程序设计技术基础-C语言1.1.2 软件系统 计算机软件是计算机系统中的程序以及相关文档。程序是对计算任务的处理对象(数据)与处理规则(算法)的描述;文档是为了便于人理解程序所需要的资料说明,供程序开发与维护使用。软件系统可以分为系统软件、支撑软件和应用软件。程序设计技术基础-C语言1.2 程序与程序设计 1.2.1 程序设计范型 1.2.2 程序设计语言 1.2.3 程序设计步骤程序设计技术基础-C语言1.2 程序和程序设计 程序:一组计算机能识别和执行的指令 只要让计算机执行这个程序,计算机就会自
3、动地、有条不紊地进行工作 计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成程序设计技术基础-C语言计算机程序具有如下性质:(1)目的性:程序有明确的目的,在运行时能正确完成赋予它的功能。(2)分步性:程序为完成其复杂的功能,由一系列计算机能执行的步骤组成。(3)有限性:程序中所包含的步骤是有限的。(4)有序性:程序的执行步骤是有序的,不能随意改变这些步骤的执行顺序。(5)操作性:程序是对某些对象的操作,完成其有意义的功能。程序设计技术基础-C语言1.2.1 程序设计范型 程序设计范型是计算机编程中的基本风格和典范模式,是编程者在其所创造的虚拟世界中自觉不自觉采用的世界观和方法论。典
4、型的程序设计范型有过程式(面向过程)、对象式(面向对象)、函数式以及逻辑式等。程序设计技术基础-C语言1.2.1 程序设计范型1过程式 过程式程序设计是一种以功能为中心、基于功能分解的程序设计范型。一个过程式程序由一些子程序构成,每个子程序对应一个子功能,它实现了功能抽象。子程序描述了一系列的操作,它是操作的封装体。Nicklaus Wirth提出了如下的经典公式,刻画了过程式程序设计的本质特征。程序=数据结构+算法程序设计技术基础-C语言1.2.1 程序设计范型2对象式 对象式程序设计是一种以数据为中心、基于数据抽象的程序设计范型。对象式程序设计通常称为面向对象程序设计。一个面向对象的程序由
5、一些对象构成,对象是由一些数据及可施加于这些数据上的操作所构成的封装体。面向对象程序可简单地表示成下面的公式:程序=对象/类+对象/类+对象/类=数据+操作程序设计技术基础-C语言1.2.1 程序设计范型3函数式与逻辑式 函数式程序设计是围绕函数及函数应用来进行的,它基于递归函数理论和演算(演算即一套用于研究函数定义、函数应用和递归的形式系统),其中,函数也被作为值来看待。逻辑式程序设计是把程序组织成一组事实和一组推理规则,它基于的是谓词演算。程序设计技术基础-C语言1.2.2 程序设计语言 程序设计语言是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。简单地
6、说:人和计算机交流信息的、计算机和人都能识别的语言。程序设计技术基础-C语言 计算机语言发展阶段:机器语言(由0和1组成的指令)汇编语言(用英文字母和数字表示指令)高级语言(接近于人的自然语言和数学语言)面向过程的语言 (非结构化的语言、结构化语言)面向对象的语言低级语言低级语言程序设计技术基础-C语言 程序翻译的方式:编译方式 事先编好的一个称为“编译程序”的程序,将其放在计算机中。当高级语言源程序输入到计算机中时,编译程序便把源程序整个翻译成机器指令表示的目标程序。然后执行该目标程序,得到计算结果。解释方式 事先编好的一个称为“解释程序”的程序,将其放在计算机中。当高级语言源程序输入到计算
7、机中时,解释程序将源程序的每一条语句逐句翻译,逐句执行,即边解释边执行。程序设计技术基础-C语言1.2.3 程序设计步骤(1)问题分析(2)设计算法(3)编写程序(4)对源程序进行编辑、编译和连接(5)运行程序,分析结果(6)编写程序文档程序设计技术基础-C语言(1)问题分析 对于接手的任务要进行认真的分析 研究所给定的条件 分析最后应达到的目标 找出解决问题的规律 选择解题的方法程序设计技术基础-C语言(1)问题分析(2)设计算法 设计出解题的方法和具体步骤程序设计技术基础-C语言(1)问题分析(2)设计算法(3)编写程序(4)对源程序进行编辑、编译和连接(5)运行程序,分析结果 结果错了,
8、程序肯定错 结果对了,程序未必对程序设计技术基础-C语言1.3 算法与算法描述 1.3.1 算法概念 1.3.2 算法描述 1.3.3 结构化程序设计思想程序设计技术基础-C语言 一个程序主要包括以下两方面的信息:(1)对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式 这就是数据结构(data structure)(2)对操作的描述。即要求计算机进行操作的步骤 也就是算法(algorithm)1.3 算法与算法描述程序设计技术基础-C语言 数据是操作的对象 操作的目的是对数据进行加工处理,以得到期望的结果 著名计算机科学家沃思(Nikiklaus Wirth)提出一个
9、公式:算法+数据结构=程序程序设计技术基础-C语言 一个程序除了算法和数据结构这主要要素外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示 算法、数据结构、程序设计方法和语言工具是一个程序设计人员应具备的知识程序设计技术基础-C语言 算法是解决“做什么”和“怎么做”的问题 程序中的操作语句,是算法的体现 不了解算法就谈不上程序设计程序设计技术基础-C语言1.3.1 算法概念 广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”对同一个问题,可以有不同的解题方法和步骤 为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法程序设计技术基础-C语言
10、 计算机算法可分为两大类别:数值运算算法非数值运算算法 数值运算的目的是求数值解 非数值运算包括的面十分广泛,最常见的是用于事务管理领域程序设计技术基础-C语言 一个有效算法应该具有以下特点:(1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。(2)确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。程序设计技术基础-C语言 一个有效算法应该具有以下特点:(3)有零个或多个输入。所谓输入是指在执行算法时需要从外界取得必要的信息。(4)有一个或多个输出。算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。(5)有效性。算法中的每一个步骤都应当能有效地执行
11、,并得到确定的结果。程序设计技术基础-C语言1.3.2 算法描述 常用的方法有:自然语言 流程图 N-S图 伪代码程序设计技术基础-C语言1.自然语言 用自然语言表示通俗易懂,但文字冗长,容易出现歧义性 用自然语言描述包含分支和循环的算法,不很方便 除了很简单的问题外,一般不用自然语言程序设计技术基础-C语言 2.流程图(1)标准图符程序设计技术基础-C语言流程图描述的三种基本结构 顺序结构AB程序设计技术基础-C语言流程图描述的三种基本结构 选择结构ABYpNAYpN程序设计技术基础-C语言流程图描述的三种基本结构 循环结构 当型循环结构AYp1NYx51t输出输出t2it*iti+1i程序
12、设计技术基础-C语言4.伪代码伪代码 伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法 用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用程序设计技术基础-C语言例如 求5!的算法用为代码表示为:begin (算法开始)1 t 2 i while i5 t*i t i+1 i print tend (算法结束)程序设计技术基础-C语言1.3.3 结构化程序设计思想 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。程序设计技术
13、基础-C语言 结构化程序设计思想(1)结构化编码(2)结构化程序的特点(3)结构化程序的分析方法(4)模块化设计 程序设计技术基础-C语言 采取以下方法保证得到结构化的程序:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。程序设计技术基础-C语言1.4 C语言 1.4.1 C语言的特点 1.4.2 C程序的基本结构 1.4.3 C程序的执行过程 程序设计技术基础-C语言1.4 C语言 C语言是国际上广泛流行的计算机高级语言。C语言的发展:BCPL语言语言B语言语言C语言语言精练精练、接近硬件接近硬件,但,但过于简单过于简单,无数据类型无数据类型具有多种数据类型具有多种数据类
14、型程序设计技术基础-C语言 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。1983年,美国国家标准协会(ANSI)成立了一个委员会,根据C语言问世以来各种版本对C语言的发展和扩充,制定了第一个C语言标准草案(83 ANSI C)。1989年,ANSI公布了一个完整的C语言标准ANSI X3.159-1989(常称ANSI C,或C89)。程序设计技术基础-C语言 1990年,国际标准化组织ISO(International Standard Organization)接受C89作为国际标准ISO/IEC 9899:1990,它和ANSI的C89基本上是相同的。1995年
15、,ISO对C90作了一些修订,1999年,ISO又对C语言标准进行修订,在基本保留原来的C语言特征的基础上,针对应用的需要,增加了一些功能,尤其是C+中的一些功能,命名为ISO/IEC 9899:1999。程序设计技术基础-C语言 2001、2004年先后进行了两次技术修正(TC1和TC2)。ISO/IEC 9899:1999(及其技术修正)被称为 C99。C99是C89(及1995基准增补1)的扩充。C11是最新标准,该标准更好的支持汉字函数名和汉字标识符,一定程度上实现了汉字编程。C语言是一种用途广泛、功能强大、使用灵活的过程性(procedural)编程语言,既可用于编写应用软件,又能用
16、于编写系统软件。因此C语言问世以后得到迅速推广。程序设计技术基础-C语言(1)程序设计模块化。(2)函数方式操作。(3)数据类型多样化。(4)运算功能强。(5)存储类型丰富。(6)具有预处理能力。(7)程序简洁。1.4.1 C语言的特点程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;函数的名字,表示函数的名字,表示主函数主函数C程序必须有一个程序必须有一个 main 函数函数1.4.2 C程序的基本结构程序设计技术基础-C语言#include int main()printf(”This is a
17、C program.n”);return 0;主函数主函数类型类型程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;函数体函数体程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;输出函数输出函数输出语句输出语句程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;输出语句输出语句程序设计技术基础-C语言#include
18、int main()printf(”This is a C program.n”);return 0;换行符换行符程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;当当main函数执行结束前函数执行结束前,将整数将整数0作为函数值作为函数值程序设计技术基础-C语言#include int main()printf(”This is a C program.n”);return 0;表示语句结束表示语句结束用到函数库中的输入输出函数用到函数库中的输入输出函数时时程序设计技术基础-C语言C语言程序的结构特
19、点:1.函数是C程序的基本单位 一个C程序是由一个或多个函数组成的 必须包含一个main函数(只能有一个)每个函数都用来实现一个或几个特定功能 被调用的函数可以是库函数,也可以是自己编制设计的函数程序设计技术基础-C语言C语言程序的结构特点:2.函数由函数首部和函数体两部分组成:函数首部int max (int x,int y)函数的第函数的第1行行函数类型函数类型函数名函数名参数类型参数类型参数参数名名程序设计技术基础-C语言C语言程序的结构特点:2.函数由函数首部和函数体两部分组成:函数首部int max (int x,int y)若函数无参,在括弧中写void或空括弧int main(v
20、oid)或或 int main()程序设计技术基础-C语言C语言程序的结构特点:2.函数由函数首部和函数体两部分组成:函数体 声明部分定义在本函数中所用到的变量对本函数所调用函数进行声明 执行部分:由若干个语句组成,指定在函数中所进行的操作可以没有声明部分可以没有声明部分程序设计技术基础-C语言C语言程序的结构特点:2.函数由函数首部和函数体两部分组成:函数体void dump()可以是空函数可以是空函数程序设计技术基础-C语言3.C语言程序的书写格式与规则(1)C程序中,每条语句和声明的最后,以分号为结束标志。(2)任何变量必须先定义类型,然后才能使用。(3)C语言程序一般都使用小写英文字母
21、,x与X代表不同含义。(4)C语言程序的书写格式比较自由,允许一行、或多行书写。(5)C程序中,有两种形式的注释。程序设计技术基础-C语言C语言允许用两种注释方式:/:单行注释 可单独占一行 可出现在一行中其他内容的右侧/*/:块式注释 可包含多行程序设计技术基础-C语言1.4.3 C程序的执行过程1.上机输入和编辑源程序(.c文件)2.对源程序进行编译(.obj文件)3.进行连接处理(.exe文件)4.运行可执行程序,得到运行结果程序设计技术基础-C语言编辑程序编译程序连接程序库 函数源程序文件名.c目标程序文件名.obj可执行程序文件名.exe编译连接其他目标文件出错出错出错执行结果C编译
22、系统程序设计技术基础-C语言2022-8-868 1.硬件结构、软件系统 2.程序设计范型、程序设计语言、程序设计步骤 3.算法及其特点、算法描述、结构化程序设计思想 4.C语言特点、C程序基本结构、C程序执行过程本章小结注意本章节知识点!程序设计技术基础-C语言2022-8-869 通过对本章的学习,对通过对本章的学习,对C语言程序有语言程序有了了初步的认识,初步的认识,通过通过上机调上机调试简单的试简单的C语言程序,体会学习语言程序,体会学习C语言程序的语言程序的快乐快乐。学习学习C语言最重要的是领会程序设计要旨,领会计算思维,掌握语言最重要的是领会程序设计要旨,领会计算思维,掌握常用算法,多多编程,在不断常用算法,多多编程,在不断地地实践中培养和提高程序设计的能力。实践中培养和提高程序设计的能力。本章小结注意本章节知识点!