《第二章 程序设计概念.ppt》由会员分享,可在线阅读,更多相关《第二章 程序设计概念.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章第二章程序设计概念程序设计概念算法算法计算机解决的任何问题都可以通过按计算机解决的任何问题都可以通过按特定顺序执行一系列操作来完成,对特定顺序执行一系列操作来完成,对操作的描述就是算法(操作的描述就是算法(Algorithm)。)。算法包括了执行的操作和执行操作的算法包括了执行的操作和执行操作的顺序。顺序。李开复:算法的力量李开复:算法的力量算法是计算机科学领域最重要的基石之一,但算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了些公司在招聘时要求的编程语言五花八门就
2、产生了一种误解,认为学计算机就是学各种编程语言,或一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实大家都被这些公司误导了。编程语铺路方法。其实大家都被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,言虽然该学,但是学习计算机算法和理论更重要,因为计算机算法和理论更重要,因为计算机语言和因为计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机和理论,例如数据结构、
3、算法、编译原理、计算机体系结构、关系型数据库原理等等。体系结构、关系型数据库原理等等。整天赶时髦的人最后只懂得招式,没有功力,整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。是不可能成为高手的。案例案例 在高能物理研究方面,很多实验每秒钟都能几个TB的数据量。但因为处理能力和存储能力的不足,科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道,新元素的信息很有可能就藏在我们来不及处理的数据里面。其他任何领域里,算法可以改变人类的生活。例如人类基因的研究,就可能因为算法而发明新的医疗方式。在国家安全领域,有效的算法可能避免下一个911的发生。在气象方面,算法可以更好地预测未来天灾
4、的发生,以拯救生命。在计算机系统中,算法是用程序来表在计算机系统中,算法是用程序来表示的示的程序程序程序是为完成一项特定任务而用计算机语程序是为完成一项特定任务而用计算机语言编写的一组指令序列。言编写的一组指令序列。#includeusing namespace std;int main()int i=1,ni,gi;do cinnigi;if(gi=80)coutni=ni gi=giendl;i=i+1;while(i=50);return 0;C语言编写的程序语言编写的程序编写程序的要求编写程序的要求正确性正确性可读性可读性高效率高效率w用简洁明了的方式编写程序用简洁明了的方式编写程序w
5、计算机和编译器是很好的教员计算机和编译器是很好的教员w阅读所用的语言版本手册阅读所用的语言版本手册w用标准类库用标准类库程序设计方法程序设计方法 一、结构化程序设计方法一、结构化程序设计方法二、面向对象的方法二、面向对象的方法结构化程序设计方法结构化程序设计方法程序的目的:用于数学计算程序的目的:用于数学计算主要工作:设计求解问题的过程主要工作:设计求解问题的过程缺点:对于庞大、复杂的程序难以开发和缺点:对于庞大、复杂的程序难以开发和维护维护设计思路设计思路自顶向下、逐步求精。采用模块分解与功能抽自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。象,自顶向下、分而治之。程序结构:
6、程序结构:按功能划分为若干个基本模块,形成一个树状按功能划分为若干个基本模块,形成一个树状结构。结构。各模块间的关系尽可能简单,功能上相对独立;各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基每一模块内部均是由顺序、选择和循环三种基本结构组成。本结构组成。其模块化实现的具体方法是使用子程序。其模块化实现的具体方法是使用子程序。优点:优点:有效地将一个较复杂的程序系统设计任务分有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和解成许多易于控制和处理的子任务,便于开发和维护。维护。缺点:可重用性差、数据安全性差、缺点:可重用性差、数据
7、安全性差、难以开发大型软件和图形界面的应用难以开发大型软件和图形界面的应用软件软件把数据和处理数据的过程分离为相互独把数据和处理数据的过程分离为相互独立的实体。立的实体。当数据结构改变时,所有相关的处理过当数据结构改变时,所有相关的处理过程都要进行相应的修改。程都要进行相应的修改。每一种相对于老问题的新方法都要带来每一种相对于老问题的新方法都要带来额外的开销。额外的开销。图形用户界面的应用程序,很难用过程图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。来描述和实现,开发和维护也都很困难。面向对象的方法面向对象的方法将数据及对数据的操作方法封装在一起,将数据及对数据的操作方
8、法封装在一起,作为一个相互依存、不可分离的整体作为一个相互依存、不可分离的整体对象。对象。对同类型对象抽象出其共性,形成类。对同类型对象抽象出其共性,形成类。类通过一个简单的外部接口,与外界发生类通过一个简单的外部接口,与外界发生关系。关系。对象与对象之间通过消息进行通讯。对象与对象之间通过消息进行通讯。优点:优点:程序模块间的关系更为简单,程序模块的独立程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。性、数据的安全性就有了良好的保障。通过继承与多态性,可以大大提高程序的可重通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。用性,使得软件的
9、开发和维护都更为方便。程序设计语言程序设计语言 计算机语言的发展第一台可编程的计算机是由英国物理学家第一台可编程的计算机是由英国物理学家和数学家和数学家CharlesBabbage发明的。可惜,发明的。可惜,这台机器没有完成。这台机器没有完成。巴贝奇,巴贝奇,Charles Charles BabbageBabbage(1792(17921871)1871)英国数学家。英国数学家。17921792年年1212月月2626日日 生于英国德文郡,生于英国德文郡,18711871年年1010月月1818日卒于伦敦。巴贝奇于日卒于伦敦。巴贝奇于18101810年入剑桥大学学习,后为该年入剑桥大学学习,
10、后为该校数学教授。校数学教授。18161816年被选为英国皇家学会会员。年被选为英国皇家学会会员。18121812年年 巴巴贝奇开始研究差分机,贝奇开始研究差分机,18221822年制成一台可以运转的小型样机。年制成一台可以运转的小型样机。它是一台专用的加法机,在计算过程中不用人干预便可自动它是一台专用的加法机,在计算过程中不用人干预便可自动进行计算。巴贝奇在进行计算。巴贝奇在18321832年提出年提出 了分析机的设想,把程序了分析机的设想,把程序控制引入计算机。但是由于当时技术和经费等原因未能研制控制引入计算机。但是由于当时技术和经费等原因未能研制成功。成功。18341834年,年,Cha
11、rlesCharlesBabbageBabbage发明解析机发明解析机(AnalyticalAnalyticalEngineEngine),首度提出近似现代电脑),首度提出近似现代电脑组织的观念。虽因机器结构太复杂,非当时技术所组织的观念。虽因机器结构太复杂,非当时技术所能制造。但解析机的设计理念和能制造。但解析机的设计理念和BabbageBabbage的程式构想,的程式构想,却开启了近代计算机的先河。却开启了近代计算机的先河。AdaAuausta伯爵伯爵夫人,夫人,(诗人拜伦之诗人拜伦之女女)第一位计算机程序第一位计算机程序员员计算机语言的分类计计算算机机语语言言机器语言机器语言低级语言低级
12、语言高级语言高级语言汇编语汇编语言言C,C+,DELPHI机器语言机器语言由计算机硬件系统可以识别的二由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。进制指令组成的语言称为机器语言。汇编语言汇编语言将机器指令映射为一些可以被将机器指令映射为一些可以被人读懂的助记符,如人读懂的助记符,如ADD、SUB等。等。计算机发展的初期,软件工程师们只能用机器语言来编写程序。计算机发展的初期,软件工程师们只能用机器语言来编写程序。这一阶段,在人类的自然语言这一阶段,在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟。和计算机编程语言之间存在着巨大的鸿沟。此时编程语言与人类自然语言间的鸿沟略有缩
13、小,此时编程语言与人类自然语言间的鸿沟略有缩小,但仍与人类的思维相差甚远。但仍与人类的思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。因为它的抽象层次太低,程序员需要考虑大量的机器细节。高级语言屏蔽了机器的细节,提高了语言的高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定涵义的数抽象层次,程序中可以采用具有一定涵义的数据命名和容易理解的执行语句。这使得在书写据命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。程序时可以联系到程序所描述的具体事物。C是面向过程的高级语言是面向过程的高级语言C+是面向对象的高级语言是面向对象的高级语
14、言 计算机同人类解决问题一样,必须了解问计算机同人类解决问题一样,必须了解问题域,找出问题中相关的数据、未组织要素、题域,找出问题中相关的数据、未组织要素、已组织要素、信息,这些已组织要素、信息,这些信息和数据信息和数据是计算是计算机解决问题的工具,是处理过程中用到的数机解决问题的工具,是处理过程中用到的数据。据。在解决问题时,计算机首先要把问题中所需在解决问题时,计算机首先要把问题中所需要的数据存储到要的数据存储到计算机的内存计算机的内存中。中。计算机如何存储数据计算机将数据存储在内存的计算机将数据存储在内存的存储单元存储单元中。中。不同类型的数据占用的不同类型的数据占用的存储单元(字节)存
15、储单元(字节)数数不同。不同。理解存理解存储单元储单元的概念的概念v存储单元与内存单元有何不同?存储单元与内存单元有何不同?vROMRAMv电池的作用?电池的作用?vCache的作用和位置。的作用和位置。Cache信息的存储单位信息的存储单位位(位(BitBit):):度量数据的最小单位度量数据的最小单位字节(字节(ByteByte):):最常用的基本单位最常用的基本单位K K 字节字节1K=1024 byte1K=1024 byteM M(兆)字节兆)字节 1M=1024 K1M=1024 KG G(吉)吉)字节字节1G=1024 M1G=1024 M T T(太)字节太)字节 1T=102
16、4 G1T=1024 Gb7 b6 b5 b4 b3 b2 b1 b01 0 0 1 0 1 0 11 0 0 1 0 1 0 1=2 27 7+2+24 4+2+22 2+2+20 0=149=149数据在程序中通过变量名来访问,变量名数据在程序中通过变量名来访问,变量名与一个特定的与一个特定的内存单元内存单元联系起来,每个内联系起来,每个内存单元一次只能存放一个数值存单元一次只能存放一个数值.会经常被刷会经常被刷新。新。变量变量:变量:程序员必须给使用的每一个变量命名,并用这个程序员必须给使用的每一个变量命名,并用这个名字访问它名字访问它,计算机会划出一块特定的内存区域来纪录程计算机会划出
17、一块特定的内存区域来纪录程序中出现的所有变量名,同样,计算机使用变量名查找内序中出现的所有变量名,同样,计算机使用变量名查找内存中的变量值存中的变量值.sudent_score变量名变量名(不能变)不能变)变量值变量值(可变,在程序运行时)可变,在程序运行时)注:一些在问题中值经常变动的数据可以定义成变量注:一些在问题中值经常变动的数据可以定义成变量,如如商品的价格商品的价格,账户上的余额账户上的余额.89变量名和变量值的区别:变量名是一变量名和变量值的区别:变量名是一个标签,计算机根据变量名找到相应个标签,计算机根据变量名找到相应的内存地址,然后把这个地址中存放的内存地址,然后把这个地址中存
18、放的内容的内容-变量值变量值取出来进行处理取出来进行处理.因计算机只用名访址,所以必须保证因计算机只用名访址,所以必须保证变量名的一致性变量名的一致性。常量常量:常量:常量是一种固定的字符或数值,在整个指令运行过程常量是一种固定的字符或数值,在整个指令运行过程中都不能改变,在编程语言中,可以给常量命名,这时,常量中都不能改变,在编程语言中,可以给常量命名,这时,常量就有了内存地址和名字就有了内存地址和名字,在程序执行过程中,常量会被赋值,在程序执行过程中,常量会被赋值,且该值不能再改变,可通过名字访问它且该值不能再改变,可通过名字访问它.常数是常量的一种表常数是常量的一种表示,直接使用,如示,
19、直接使用,如89,8.7PI常量名常量名(不能变)不能变)常量值常量值(不能变)不能变)注:一些在问题中值不变的数据可以定义成注:一些在问题中值不变的数据可以定义成常量常量,如,圆周率如,圆周率的值,一个公司薪水系统中公司的名字的值,一个公司薪水系统中公司的名字.3.1415926计算机中的常量和变量常量常量变量变量规则:不能改变规则:不能改变例子:例子:值值值值常量命名规则:常量命名规则:一旦赋值,值不能改变一旦赋值,值不能改变.给存储地址命名。给存储地址命名。按名访问。按名访问。例子:例子:PI规则:规则:给存储地址命名。给存储地址命名。值可以改变值可以改变.在指令中按变量名访问。在指令中
20、按变量名访问。例子:例子:变量名变量名COST值值变量名变量名CASH值值25“sdffff”3.141556.210000例如,为一个公司建立薪水计算系统,公司的例如,为一个公司建立薪水计算系统,公司的名字不会变,所以用常量。员工的名字、工作名字不会变,所以用常量。员工的名字、工作时间和薪水率则作为变量,因为对每一个员工时间和薪水率则作为变量,因为对每一个员工来说,这些数据都不同,如果不是用变量,程来说,这些数据都不同,如果不是用变量,程序员必须为每一个员工单独写一组命令。序员必须为每一个员工单独写一组命令。变量的三要素:变量名、变量值、变量类型。变量的三要素:变量名、变量值、变量类型。变量
21、或常量申请内存单元的大小由所存储的数变量或常量申请内存单元的大小由所存储的数据的据的类型决定。类型决定。数据类型计算机程序运行的数据都有自己的数据类计算机程序运行的数据都有自己的数据类型,数据类型是指数据的取值范围及对该型,数据类型是指数据的取值范围及对该数据可进行的操作,数据类型决定了数据数据可进行的操作,数据类型决定了数据在计算机中的表示形式和计算机可以对其在计算机中的表示形式和计算机可以对其进行的处理。进行的处理。计算机可以使用多种类型的数据,必须指计算机可以使用多种类型的数据,必须指明每个变量和常量所使用的数据类型。明每个变量和常量所使用的数据类型。主要有三种数据类型:数值型、字符型、
22、主要有三种数据类型:数值型、字符型、逻辑型。逻辑型。程序员可以自己定义数据类型,例如,商程序员可以自己定义数据类型,例如,商标、车型,标、车型,C语言中的结构体类型,语言中的结构体类型,C+中中的类。的类。整型和实型整型和实型charstring数据数据数据类型数据类型解释解释价格:价格:7.23数值型:实型数值型:实型物品的价格用于计算,包含物品的价格用于计算,包含小数小数帐号:帐号:360229字符型:字符串型字符型:字符串型帐号不用于计算,还可包含帐号不用于计算,还可包含字母字母数量:数量:12345数值型:整型数值型:整型数量用于计算,且是整数数量用于计算,且是整数名字:名字:zhan
23、ghua字符型:字符串型字符型:字符串型名字由字母构成名字由字母构成信用检查:信用检查:TRUE,FALSE逻辑型逻辑型信用检查只有两种可能:通信用检查只有两种可能:通过、不通过过、不通过邮编:邮编:060229字符型:字符串型字符型:字符串型不用于计算不用于计算日期:日期:20080501数值型:整型数值型:整型用于计算,计算天数用于计算,计算天数社保帐号:社保帐号:333333333字符型:字符串型字符型:字符串型因它是文字数值,不用于计因它是文字数值,不用于计算算日期:日期:01/05/2008日期型或字符串型日期型或字符串型如有日期型就用,没有,就如有日期型就用,没有,就用字符串型,因它是文字数用字符串型,因它是文字数值值函数函数是一组执行特殊操作并返回值的命令。函数是一组执行特殊操作并返回值的命令。函数是问题解决过程中经常用到的基本操函数是问题解决过程中经常用到的基本操作,每种编程语言都有自己的函数,例如,作,每种编程语言都有自己的函数,例如,C语言,平方函数表示为语言,平方函数表示为sqr(x),用户可以编用户可以编写自己的函数。写自己的函数。sqr(x)参参数数函函数数名名1.给出数值给出数值6,-3.14在内存中的存在内存中的存储形式储形式2.用流程图表示求解下列问题的用流程图表示求解下列问题的算法。算法。求求1100的积的积