课程介绍—课程参考教材TheCProgrammingLanguage,机械工业出版社程序设计方法,人民邮电出版社C程序设计的抽象思维,机械工业出版社C算法:第一卷,人民邮电出版社C语言,电子科技大学出版社出版C语言程序设计,北京大学出版社出版C语言的科学和艺术,机械工业出版社C语言程序设计,机械工业出版社计算机程序设计基础基本概念程序设计中的数据基础结构化程序基础模块化程序设计基础程序设计中数据对象地址的处理方法构造类型数据处理基础字符串数据处理基础二进制位数据的处理基础文件数据处理基础程序设计的深入话题基本概念程序设计语言计算机中数据表示方法算法特征及算法的描述方法程序设计语言程序设计语言概述人与计算机之间交流的语言称为计算机程序设计语言。其用途是解决人类和计算机相互交流的问题,将人解决问题的思路、方法和手段通过某种计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令去一步一步地工作进而完成某种特定的任务。程序设计语言类别机器语言汇编语言高级语言面向过程的程序设计语言面向对象的程序设计语言程序设计语言语言处理程序概述计算机系统仅能够直接执行机器语言程序,使用计算机高级程序设计语言编写的源程序不能为计算机系统直接识别、理解和执行,必须通过某种方式转换为计算机能够直接执行的机器语言程序。源程序到目标程序的转换方式解释方式对源程序一边解释一边执行,不形成对应的目标文件和执行文件。编译方式使用相应的编译程序对源程序进行处理,将所处理的源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理,将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。源文件。。。。。。。。。。目标文件。。。。。。。。。。。。。。。。。执行文件。。。。。。。。。。。。。。。。。。。。。。。其它目标文件/库。。。。。。。。。。连接程序编译程序程序设计语言程序设计方法概述程序设计的主要方法结构化程序设计方法面向对象程序设计方法组件程序设计方法结构化程序设计方法抽象与分解现实世界中一定事物、状态、或过程之间总是存在着某些相似的方面,把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说抽出事物的本质特性而暂时不考虑它们的细节,这就是抽象。所谓分解就是当遇到一个较大的、较复杂的问题时,应该首先把问题自顶向下、逐步分解,直到分解为能够直接控制的若干子问题为止。程序设计语言程序设计方法概述结构化程序设计方法信息隐蔽与局部化在问题的分解(即模块化)过程中应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说是不能访问的。使用三种基本结构在结构化程序中极可能使用顺序,分支和循环三种程序基本结构,尽可能保持模块的单入口和单出口形式、限制使用GOTO语句。程序设计语言程序设计方法概述面向对象程序设计方法面向对象程序设计方法的基本思想就是尽可能按照人类认识世界的方法和思维方式来分析问题和解决问题。从面向对象的角度看,程序是对象的集合,对象之间的相互作用构成了一个软件系统。对象参与的交互动作称为事件,在事件中消息在对象之间发送,接收消息的对象调用相应的方法进行响应。程序设计语言程序设计方法概述面向对象程序设计方法对象和类是面向对象程序设计的基础将问题所对应的现实世界中的事物抽象成对象或类,并建立对象之间的关系。每个对象或类不仅包含描述其特征的属性或数据结构,而且还包含对这些数据结构的操作(也称为方法或服务)。对对象的操作可以是以某种方式处理数据,或者是执行某个计算,或者是监督一个对象控制事件的发生。通过对象关系可以明确对象之间的消息(消息也可理解为事件),通过定义每个对象所能够接收的消息以及对象接收消息时执行的相应操作可以建立对象间的接口,同时还可以描述对象的私有部分即对象的内部属性或数据结构以及操作的过程细节。程序设计语言程序设计方法概述面向对象程序设计方法通过对类的继承实现重用从已有的对象类型出发建立一种新的对象类型,使新的对象类型继承原对象类型的特点和功能,继承是对许多问题中分层特性的一种自然描述,继承就是创建一个具有其他类的属性和行为的新类。在面向对象的程序设计方法中,正是通过对类的继承实现程序代码的重用。哺乳动物有四条腿一条尾巴喜欢夜行老鼠的天敌哺乳动物有四条腿一条尾巴喜欢夜行老鼠的天敌白色的毛猫白色的毛程序设计语言程序设计方法概述组件程序设计方法组件程序设计方法继承并发展了面向对象的程序设计方法。它把对象技术应用于系统设计,对面向对象的程序设计的实现过程作了进一步的抽象。在结构化程序设计方法和面向对象的程序设计方法中都只能在源程序级别对程序代码进行重用,组件程序设计方法在二进制级别(可执行代码级)对程序代码进行重用。基本概念程序设计语言计算机中数据表示方法算法特征及算法的描述方法计算机中数据表示方法进位计数制和数制之间的转换进位计数制的基本概念任意的R进制数据使用的数码为R个,它们是0,1,2,…,R-1,逢R进位,用公式可以表示为:数制之间的转换十进制整数转换为R进制数——除R取余法“除R取余法”的基本方法是用被转换的数除以R,所得到的余数为取出的R进制数码;然后用上次得到的商除以R,得到的余数为取出的R进制数码;直到数据全部转换完为止。最先取出的是R进制数据的最低位,最后取出的是R进制数据的最高位。RinmiiRRkN)()(1(0≤ki≤R-1)例:将十进制数据123转换为二进制数2123(余数)261…1(转换后的最低位)230…1215…027…123…121…10…1(转换后的最高位)即,(123)10=(1111011)2计算机中数据表示方法进位计数制和数制之间的转换数制之间的转换十进制小数转换为R进制数——乘R取整法“乘R取整法”的基本方法是用被转换的十进制小数乘以R,所得到的整数部分为R进制数的数码;然后再用上次得到的小数部分乘以R,得到的整数部分为取出的R进制数码;直到数据转换完成或达到所需的精度要求为止。最先取出的是R进制小数的最高位,最后取出的是R进制小数的最低位。例:将十进制小数0.63转换为二进制(取4位小数)(整数部分)0.63*2=1.261(转换后的小数最高位)0.26*2=0.5200.52*2=1.0410.04*2=0.080(转换后的小数最低位)即,(0.63)10≈(0.1010)2计算机中数据表示方法进位计数制和数制之间的转换数制之间的转换十进制实数转换为R进制数一般的十进制实数转换为R进制实数时,将整数部分和小数部分分别转换后拼接在一起。R进制数转换为十进制数——按权相加法“按权相加法”的基本方法是将被转换的数据按权展开为多项式,然后将展开的多项式按十进制计算求和。例:将二进制数据(1111011.1010)2转换为十进制(1111011.1010)2=(1*26+1*25+1*24+1*23+0*22+1*21+1*20+1*2-1+0*2-2+1*2-3+0*2-4)10=(64+32+16+8+0+2+1+0.5+0+0.125+0)10=(123.62)10计算机中数据表示方法数在计算机中的表示方法数据的真值一个带符号的二进制数据表示称为该数据的真值。数的原码表示二进制数据的原码表示是将该二进制数据真值的符号用数码来表示,符号位为0表示正数,符号位为1表示负数,X的原码用标记[X]原来表示。数的反码表示二进制数据X的反码用标记[X]反来表示,数据反码生成的规则是:正数的反码与其原码相同;负数的反码是在其原码的基础上符号位保持不变,数值位按位取反(0变成1,1变成0)。计算机中数据表示方法数在计算机中的表示方法数的补码表示二进制数据X的补码用标记[X]补来表示,数据补码生成的规则是:正数的补码与其原码相同;负数的补码是在其原码的基础上先求其反码,然后在反码的最低位加1。字符数据的编码字符数据常用的编码方式是ASCII码(即美国国家标准信息交换码:AmericanStandardCodeforInformationInterchange)。此外,常用的编码方式还有EBCDIC码、Unicode码等。例:数在计算机中的表示数:+123真值:+1111011原码:01111011反码:01111011补码:01111011数:-123真值:-1111011原码:11111011反码:10000100补码:10000101计算机中数据表示方法数在计算机中的表示方法程序设计中数据的表示对数据的描述需要从三个方面进行,即数据的名称、数据的特征以及数据的特征值。数据的名称在程序中被处理的数据需要有一个名字来表示。数据的特征数据可以表示值的类型和取值的范围。数据的特征值在数据用于参加某种运算或者用于某种判断之前还必须知道它所具有的内容,即数据的特征值。计算机中数据表示方法数在计算机中的表示方法数据与存储器之间的关系程序中所用到的数据在程序的运行过程中都占据一个或一段特定的存储单元,这些存储单元在存储器中都有一个起始位置,这个起始位置称之为数据在内存中的存储地址。定义或者声明变量的作用之一就是为了能够建立用变量名字所表示的数据与具体内存地址之间的对应关系。数据的分类常量程序的运行过程中其值不允许发生改变的数据称为常量,在各种计算机程序设计语言中都有相应的常量表示方法。变量程序的运行过程中,值有可能(允许)发生变化的数据称为变量。一般地,变量是指在程序中程序员用符号来显式命名的数据对象。基本概念程序设计语言计算机中数据表示方法算法特征及算法的描述方法算法特征及算法的描述方法算法的概念算法是用计算机解决实际问题的方法和步骤,是一组明确的可执行步骤的有序集合。算法的基本特征有穷性。一个算法必须能够在算法所涉及的每一种情况下,都能在执行有穷步操作之后结束。算法的有穷性特征是算法和计算方法之间最明显的区别。★非算法的示例......!9!7!5!3sin9753xxxxxx★非算法的示例算法:数值累加第1步算法开始第2步0-n(即设置n为0);第3步n+1-n(将n值加1);第4步转回第3步第5步算法结束算法特征及算法的描述方法算法的基本特征确定性。算法的每一步操作,其顺序和内容都必须精确地惟一确定,不能有任何的歧义性。防止歧义性是程序设计中必须遵循的基本准则之一,无论使用何种符号、何种数据、何种操作都必须保证其惟一确定的精确意义。可执行性。算法所描述的每一步操作都必须是可行的,即必须是可以付诸实施并能够具体实现的基本操作。0个或多个输入数据。1个或多个输出数据。算法特征及算法的描述方法算法的基本结构顺序结构顺序结构是一种简单而基础的算法基本结构,其主要特点是:各个操作按其出现的先后次序依次顺序执行一遍。选择(分支)结构选择结构是算法在描述稍复杂问题时所必不可少的基本结构,其主要特点是:根据给定条件的成立与否来选择执行不同的操作。循环结构在算法中若要描述某些操作反复执行的概念,就要使用循环结构。循环结构的特点是:根据所给定的条件来判断是否需要重复地执行一组操作,当所给条件为真时执行,否则退出。算法特征及算法的描述方法算法的描述方法人类的自然语言程序流程图流程图又称为程序框图,使用一些图形符号来表示算法中的各个执行或判断过程,使用流程线(有向线段)来表示算法执行中每一个步骤在执行上的时间顺序。流程图可以非常清楚地描述整个算法执行的过程,但由于流程线画法十分灵活自由,使用不当会造成算法清晰性差以及理解上的困惑。N-S图N-S图是一种结构化程序设计图,与程序流程图的主要区别在于去掉了程序流程图中的流程线,从而解决了使用程序流程图容易设计出非结构化算法的问题,强制算法设计者使用结构化程序设计思想。算法特征及算法的描述方法算法的描述方法伪语言在伪语言中,一般用某种计算机程序设计语言的控制结构来描述算法中的控制含义,用近似