资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机科学与工程系,大学计算机基础,第五章 计算机软件技术基础,第五章 计算机软件技术基础,计算机硬件,(Hardware),是计算机系统的基础,但是没有软件,(Software),的计算机是无法工作的。事实上,现在计算机能广泛地应用于各个领域,完全是由于有了丰富的计算机软件,人们为了用计算机解决各类问题,针对性地开发了各种各样的软件。,本章将讨论关于,计算机软件,的相关知识:如什么是软件,程序设计语言的分类,什么是算法等。,5.1,计算机软件系统,5.1.1,软件的概念与特点,软件是计算机系统中与硬件相互依存的另一部分,包括,程序、数据及其相关文档,的完整集合。软件通常是为某个特定目的而开发的产品。,程序:按照事先设计的功能和性能要求执行的计算机指令序列。,数据:使程序能够正常操纵信息的数据结构。,文档:与程序开发、维护和使用有关的资料。,软件的特点,:,抽象性 复杂性 维护长期性 高成本性,5.1,计算机软件系统,5.1.2,软件的分类,(1),按软件功能划分,系统软件:能与计算机硬件紧密配合在一起,使计算机系统的各个部件、相关的软件和数据协调、高效地工作。,支撑软件:协助用户开发软件的工具性软件,其中包括帮助软件人员开发软件产品的工具,也包括帮助管理人员控制开发进程的工具。,应用软件:针对特定领域应用开发,为特定目的服务的软件。,5.1,计算机软件系统,(2),按软件工作方式划分,实时处理软件:对实时过程进行监控的软件。,分时软件:允许多个联机用户同时使用计算机。,交互式软件:能实现人机通信的软件。,批处理软件:把一组输入作业或大量数据以成批处理的方式一次运行,按顺序逐个处理的软件。,(3),按软件服务对象划分,项目软件:也称定制软件,是受某个特定客户,(,或少数客户,),委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。,产品软件:由软件开发机构开发出来投入市场或用户群体庞大的软件。,5.1,计算机软件系统,计算机软件系统包括各种各样的软件,这些软件之间的关系不是并列的,而是有一定的层次关系。,5.1.3,计算机软件的层次结构,5.2,程序设计语言,简单来讲,程序设计就是:用计算机语言编写程序。,程序,=,算法,+,数据结构,编写计算机程序时使用的语言称为程序设计语言,(Programming Language),,使用它把人类解决问题的方法用计算机可以识别的形式表示出来。,对数据操作的步骤,如何表示、组织和存储数据,5.2,程序设计语言,5.2.1,机器语言,机器语言是指由二进制代码按照一定规则组成的命令集合,也称为机器指令集合。机器指令的格式如下:,操作码,操作数,例如:计算,256+16,结果的机器代码如下,(,以十六进制表示,),:,B8 0001,;把,256,放入累加器,AX,05 1000,;把,16,与,AX,中值相加,结果存入,AX,5.2,程序设计语言,5.2.2,汇编语言,为了解决机器语言难记忆、可读性差的缺点,人们把机器指令中的操作码和操作数用英文助记符和符号地址来表示,这种助记符语言称为汇编语言。,MOV AX,,,256,;把,256,放入累加器,AX,ADD AX,,,16,;把,16,与,AX,中值相加,结果存入,AX,汇编和连接过程:,5.2,程序设计语言,5.2.3,高级语言,高级语言是一类程序设计语言的统称,它采用接近人类自然语言和数学表达式的表示方法,并遵循一定的语法规则来编写程序。,实现求整数的绝对值的程序段:,int intVar,result;,scanf(“%d”,if(intVar=0),result=intVar;,else,result=-1*intVar;,printf(“%d,的绝对值是:,%d”,intVar,result);,5.2,程序设计语言,高级语言程序的翻译和执行,高级语言源程序翻译成指令代码的方法主要有两种:,解释,和,编译,5.2,程序设计语言,5.2,程序设计语言,5.2.4,主流高级语言,高级语言种类多,介绍几种常用的高级语言:,(,1,),BASIC,语言,(,2,),C,语言,(,3,),C+,语言,(,4,),JAVA,语言,(,5,),C#,语言,(,6,)脚本语言,5.2,程序设计语言,5.2.5,软件开发工具和开发环境,程序员使用的开发工具,主要有:,编辑源程序的编辑软件。,把高级语言编译成机器语言的编译软件。,调试程序的调试软件。,(,1,)单独工具,(,2,)集成的开发环境,5.2,程序设计语言,(,不讲,),5.2.6,程序设计语言的构成,(,不讲,),数据,和,操作,是构成程序的两个基本要素,任何一种程序设计语言都必须提供表示数据和操作的语法、语义元素。,(1),数据类型,程序设计语言中一般分为基本数据类型和构造数据类型两大类。,基本数据类型,是由程序设计语言内置的,其特点是不能再分解为其它的类型。在主流的程序设计语言中一般包括:整数类型、实数类型、字符类型、布尔类型等。,构造数据类型,是由基本数据类型按照某种方式组合构成的。常见的构造数据类型有:数组类型、记录类型,(,结构体,),、枚举类型、字符串类型、文件类型等。,5.2,程序设计语言,(,不讲,),(2),运算符和表达式,运算是程序对数据进行的最基本也是最重要的处理,程序设计中使用表达式完成各种各样的运算。表达式通常包括:常量、变量、运算符和函数调用等构成。,例如:给定圆的半径,r,,求其面积的,Java,语言表达式是:,s=3.14*r*r,(3),语句,程序是对计算机要执行的操作的描述。高级语言源程序的基本组成单位是语句。,语句按功能可以分为两类:,1.,用于描述操作运算,如赋值语句,称为操作运算语句;,2.,用于控制操作运算的执行顺序,如分支控制语句,称为流程控制语句。,5.2,程序设计语言,(,不讲,),(4),控制结构,顺序结构,按照语句出现的先后顺序依次执行。,分支结构,根据给定条件判断,决定程序执行的顺序。,循环结构,循环,(,重复,),是计算机解题的一个重要特征。,(5),输入,/,输出,程序的输入是指用户将数据通过输入设备,(,如键盘等,),输入到程序中。,程序的输出是指程序把运算结果以用户可以理解的形式输出到输出设备,(,如显示器、打印机等,),。,高级程序设计语言中通常以函数或语句的形式提供输入输出操作。,现代高级程序设计语言通常都提供通过窗口、文本框、按钮、组合框、图表等图形组件进行输入输出。,5.2,程序设计语言,(,不讲,),(6),子程序,子程序就是将需要重复使用的程序段或分解的子问题编写为一个逻辑上独立的子程序,当程序中需要使用子程序时,再对其进行调用。,使用子程序的好处是降低了程序的复杂度,使程序的结构清晰,提高了程序设计的效率。,一般程序设计语言中有两种子程序:函数,(Function),和过程,(Procedure),,它们的主要区别是函数有返回值,而过程不能有返回值。,5.3,问题求解过程,解决问题的思维过程,借助计算机求解问题的过程,5.4,算法和数据结构,5.4.1,什么是数据,数据结构简介,数据是对客观事物的描述,对计算机来说,数据的含义非常广泛,如数字、字符、图形、色彩、声音等都是数据。数据元素,(Data Element),是组成数据的基本单位。一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。,例:公司员工数据的存储,姓名,性别,出生日期,职位,工资,张军,男,1975.5.6,总经理,5080.00,李芳,女,1980.12.12,项目经理,4800.00,王明,男,1979.4.19,程序员,4500.00,刘杰,男,1974.6.23,系统分析员,4750.00,赵丽,女,1977.11.9,测试员,3900.00,数据结构研究的,数据存储,和,数据处理,这样的最核心的问题。,不是几个孤立的数据,而是大量的相互关联的数据。数据元素之间的相互关系称为结构。,5.4.1,什么是数据,数据结构简介,5.4,算法和数据结构,5.4.2,算法,算法,(Algorithm),是指为解决给定问题而需实施的有穷操作步骤的描述。,算法的五个重要特性:,1,)有穷性,2,)确定性,3,)可行性,4,)输入,5,)输出,评价一个算法优劣的标准:,1,)正确性,2,)可读性,3,)健壮性,4,)效率性,5.4,算法和数据结构,算法的描述方法,(1),用自然语言描述算法,(2),用流程图描述算法,(3),使用伪代码描述算法,(4),用程序设计语言描述算法,例,1,互换两个数据单元内容。(书上例,5.4,),例,2,求两个正整数,m,和,n,的最大公约数的算法。用如上这四种方式描述出来。(书上例,5.5,),5.4,算法和数据结构,第五章 计算思维案例,计算思维反映的是利用计算机技术解决实际问题的思维方法,如果对利用计算机技术如何解决实际问题的认知出现误解,那是不可能达到目的的。很多初学者以为计算机神乎其神,似乎什么都能干。,和人脑相比,它只是会算,而且算的速度非常快,除此以外计算机几乎没有什么更多的优越性了。如果你要完成的计算任务比较复杂,又不能,(,或者不会,),分解成计算机能接受的基本操作,那就没法利用计算机求解了。记住,计算机永远都是在人脑的指挥下工作的!,案例,1,合理分解和分配计算任务,第五章 计算思维案例,在计算机科学中,将大规模的复杂问题分解成若干个较小规模的、更简单的问题加以解决,是一种常用的计算思维。运用问题分解这种思维方法进行问题求解,首先需对问题本身做出明确描述,并对问题解法做出全局性决策,把问题分解成相对独立的子问题,再以同样的方式对每个子问题进一步精确化,直到获得对问题的明确的解答。,在本章中,结构化程序设计采取了计算思维中的典型方法,分解。按照“分而治之”的策略,将顶层问题的求解目标逐层分解成子目标,每个子目标用相应的程序模块进行实现,这样构成求解整个问题的程序。,案例,2,大事化小、小事化了,第五章 计算思维案例,结构化程序设计方法的一个重要原则就是“自顶向下、逐步求精”,它是指程序设计时,先描述顶层问题的求解目标,然后步步深入,设计一些比较粗略的子目标作为过渡,再逐层细分,直到整个问题可用程序设计语言明确地描述出来为止。,程序的模块化设计,则是针对任何一个大系统都可以按子结构之间的疏密程度分解成较小的模块,每个模块完成一定问题的求解。整个程序是由层次的、逐级细化的诸模块组成。一个复杂的问题可以看成由若干稍简单的问题构成。,案例,2,大事化小、小事化了,第五章 计算思维案例,对于可以用计算机求解的问题,所需的计算时间都与其规模有关,问题规模越小,解题所需的计算时间也越少,也越容易求解。因此可以将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破、分而治之。模块化与自顶可下、逐步求精紧密联系。,日常工作中的层次化管理也是一种对分解方法的运用。以企业运行为例,一个大型企业也是一个非常复杂的系统,采取“金字塔”型的管理层次是常用的策略,将企业逐层分解,越上层的机构越少,越向下功能分解越细、机构数目越多。各级机构管理好自己的下属机构,完成上级机构制定的目标,最终整个企业实现自己的整体目标。,案例,2,大事化小、小事化了,第五章 计算思维案例,计算思维是利用海量数据来加快计算,在时间和空间之间、在处理能力和存储容量之间进行折中的思维方法。计算机问题求解是以计算机为工具,利用计算思维解决问题的实践活动。计算机解题的核心是算法设计,设计算法是计算机问题求解中非常重要的步骤。,查找,(Searching),也称检索,计算机最重要的功能之一就是在浩瀚的数据中找到用户所要的信息。但是计算机的速度还并没有快到能瞬间完成这一过程的程度,而且等待计算机查找的数据集往往是异常庞大的,因此我们需要更快捷更有效的搜索方式。,案例,3,海量查找,第五章 计算思维案例,世界上最庞大的搜索问题是在
展开阅读全文