计算机软件技术基础徐士良第2章[1]
计算机软件技术基础教程(第二版)习题及答案
第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
计算机软件技术基础完整版
计算机软件技术基础完整版一、程序设计语言程序设计语言是程序员与计算机之间进行交流的工具。
它们允许程序员编写指令,告诉计算机如何执行特定的任务。
常见的程序设计语言包括:高级语言:例如C、C++、Java、Python等,它们提供了丰富的抽象功能,使程序员能够更高效地编写代码。
低级语言:例如汇编语言和机器语言,它们与计算机硬件更接近,但编写起来更复杂。
二、数据结构数据结构是存储和组织数据的方式。
它们允许程序员高效地存储、检索和操作数据。
常见的数据结构包括:数组:用于存储一系列相同类型的元素。
链表:用于存储一系列不同类型的元素,元素之间通过指针连接。
栈:后进先出的数据结构,常用于存储临时数据。
队列:先进先出的数据结构,常用于存储等待处理的数据。
三、算法算法是解决问题的步骤。
它们是程序的核心,决定了程序的性能和效率。
常见的算法包括:排序算法:例如冒泡排序、选择排序、快速排序等,用于将数据按照特定顺序排列。
搜索算法:例如线性搜索、二分搜索等,用于在数据结构中查找特定元素。
图算法:例如深度优先搜索、广度优先搜索等,用于处理图结构的数据。
四、软件工程软件工程是开发高质量软件的学科。
它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试、维护等。
五、软件测试软件测试是确保软件质量的重要步骤。
它包括单元测试、集成测试、系统测试和验收测试等。
六、软件维护软件维护是在软件发布后对其进行修改和改进的过程。
它包括修复bug、添加新功能、提高性能等。
七、软件项目管理软件项目管理是确保软件项目按时、按预算、按质量完成的过程。
它包括需求管理、进度管理、成本管理、质量管理等。
八、软件文档软件文档是描述软件的功能、设计、实现和使用等方面的文档。
它包括需求规格说明书、设计文档、用户手册等。
九、软件工具软件工具是辅助软件开发、测试和维护的工具。
它们包括集成开发环境、代码编辑器、调试器、测试工具等。
十、软件发展趋势云计算:软件将更多地运行在云端,而不是本地计算机上。
徐士良《计算机软件技术基础》笔记和课后习题详解(数据库设计技术)【圣才出品】
徐士良《计算机软件技术基础》笔记和课后习题详解第5章数据库设计技术5.1复习笔记一、基本概念1.数据库管理技术(1)概述数据库是一个通用化的、综合性的数据集合,它可以为各种用户所共享,具有最小的冗余度、较高的数据独立性和易扩展性,而且能并发地为多个应用服务,同时具有安全性和完整性。
(2)发展阶段数据库管理技术的发展大致经历了人工管理、文件管理和数据库管理三个阶段。
①人工管理阶段是指程序中要用到的数据由程序员通过程序自己进行管理,即计算机中的数据与程序不具有独立性。
②文件管理阶段是指数据是以文件的形式存放在计算机中的,并且由操作系统中的文件系统来管理文件中的数据。
③数据库管理阶段是指将数据存放在数据库中,并通过数据库管理系统软件对数据进行管理。
(3)数据的数据库管理的特点数据库技术的根本目标是要解决数据的共享问题,数据的数据库管理具有以下三个主要特点:①数据是结构化的,是面向系统的,数据的冗余度小。
②数据具有独立性。
③保证了数据的完整性、安全性和并发性。
(4)数据库管理阶段程序与数据之间的关系在数据库管理下,程序与数据之间的关系如图5-1所示。
图5-1数据库管理阶段程序与数据之间的关系2.数据库管理系统(1)含义数据库管理系统(DBMS)是指用来管理数据库中的数据,处理用户对数据库访问的一组系统软件。
操作系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统。
(2)功能数据库管理系统是数据库系统中实现各种数据管理功能的核心软件。
它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。
数据库管理系统具有以下功能:①定义数据库,DBMS提供数据定义语言DDL,用户可以定义数据的模式、外模式和内模式三级模式结构。
②管理数据库,包括控制整个数据库系统的运行,数据存取、插入、删除、修改等操作,数据完整性和安全性控制以及并发控制等。
③建立和维护数据库,包括数据库的建立、数据库更新、数据库再组织、数据库的维护、数据库恢复以及性能监视等。
《计算机软件技术基础》课后题答案
数据结构习题答案第一节概论一、选择题1.要求同一逻辑结构的所有数据元素具有相同的特性,这意味着( )。
A.数据元素具有同一的特点 *B.不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等2.数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。
(1) A.操作对象 B.计算方法 *C.物理存储 D.数据映像(2) A.结构 *B.关系 C.运算 D.算法3.数据结构被形式地定义为(D,R),其中D是( (1) )的有限集合,R是D上( (2) )的有限集合。
(1) A.算法 *B.数据元素 C.数据操作 D.逻辑结构(2)A.操作 B.映像 C.存储 *D.关系4.在数据结构中,从逻辑上可以把数据结构分为( )。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构 *C.线性结构和非线性结构 D.内部结构和外部结构5.线性表的顺序存储结构是一种( )的存储结构。
*A.随机存取 B.顺序存取 C.索引存取 D.Hash存取6.算法分析的目的是( )。
A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 *C.分析算法的效率以求改进 D.分析算法的易懂性和文档性7.计算机算法指的是( (1) ),它必须具备输入、输出和( (2) )等五个特征。
(1) A.计算方法 B.排序方法 *C.解决某一问题的有限运算序列D.调度方法(2) A.可行性、可移植性和可扩充性 *B.可行性、确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性、稳定性和安全性8.线性表若采用链表存储结构,要求内存中可用存储单元的地址( )。
A.必须是连续的 B.部分必须是连续的 C.一定是不连续的 *D.连续不连续都可以9.在以下的叙述中,正确的是( )。
A.线性表的线性存储结构优于链式存储结构 *B.二维数组是它的每个数据元素为一个线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出10.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式,其中解释错误的是( )。
计算机软件技术基础(第3版)
2.4.2 数组的顺序存储结构
(2)三对角阵的存储方式 三对角阵
非零元a素 ij地址
非零元素优先顺序存放
2.4.3 稀疏矩阵
1. 三元组表示
稀疏矩阵
三元组表示
实现矩阵转置
2.4.3 稀疏矩阵
2. 带辅助向量的三元组表示 行辅助向量
访问x行y列元素
构造POS与NUM向量
2.4.3 稀疏矩阵
2. 带辅助向量的三元组表示 列辅助向量
计算机软件技术基础
第1章 信息与信息时代
第7章 管理信息系统
第2章 常用数据结构及其运算
第3章 操作系统 第8章 信息与计算机系统的安全保护
第4章 数据库系统
第5章 计算机网络与信息高速公路
第6章 软件工程技术基础
第1章 信息与信息时代
1.1 信息与信息时代 1.2 计算机发展简史 1.3 计算机与计算机系统 1.4 计算机软件技术发展过程
程序的三种基本结构
1.4.2 结构程序设计阶段
– 程序设计方法论 – 软件生产管理
具有GOTO语句的程序
程序的三种基本结构
1.4.3 自动程序设计阶段
第四代语言和其他软件技 术的关系
第四代语言工作示意图
第2章 常用数据结构及其运算
2.1 概述 2.2 线性表 2.3 栈与队 2.4 数组 2.5 树与二叉树 2.6 图 2.7 查找 2.8 排序
– 互相依存、无严格界面、相互促进
1.3.3 多媒体计算机
1. 定义:
– 媒体、多媒体计算机
2. 基本要素:
– 文本、图形、图像、动画、音频、视频
3. 基本配置:
– 硬件配置、软件配置
1.4 计算机软件技术发展过程
计算机软件技术基础 第一章、第二章
–(2)确定性 • 算法的确定性(Definiteness),是指算 法中的每一个步骤都必须是有明确定义的 。 –(3)有穷性 • 算法的有穷性(Finiteness),是指算法 必须能在有限的时间内做完,即算法必须 能在执行有限个步骤之后终止。 –(4)拥有足够的情报
3.算法的基本要素
• 一个算法通常由两种基本要素组
2、程序设计方法的抽象化
(1)结构化方法 (2)面向对象方法
(3)面向组件方法
• • • • •
工程化 可视化 智能化 集成化 网络化
• 2.1数据的基本概念 • 2.2数据结构的基本概念 • 2.3 数据的运算及实现
2.1 数据的基本概念
• 用计算机解决一个具体问题时,大致需要经 过下列几个步骤: • •首先要从具体问题抽象出一个适当的数学模 型; • •然后设计一个解此数学模型的算法; • •最后采用一种计算机语言编出程序,调试、 修改直至得到最终答案。
• 系的集合.
• 数据是计算机化的信息,即计算机处理的
对象是数据。
• 各数据之间的一定关系,称为数据的逻辑
结构 ,数据在计算机中的存储位置有着一 定的关系,称为数据的物理结构(或存储 结构)。
• 例1: 英文26个字母表的数据结构是一个线 形表,可表示为: • B={D,R} • D={ a , b, c, ····,x ,y ,z} ··· • R={(a,b),(b,c),……,(y,z)} • 此例数据元素是简单项。 • 例2 : 学生成绩表(复杂的线性表) • 数据元素是由若干数据项组成, 如每个学 生的情况,称为学号姓名成绩个记录 (Record);由多个记录组成的线性表称 为文件(File).
2.数据的存储结构(物理结构)
徐士良《计算机软件技术基础》笔记和课后习题详解(资源管理技术)【圣才出品】
徐士良《计算机软件技术基础》笔记和课后习题详解第4章资源管理技术4.1复习笔记一、操作系统的概念1.功能与任务(1)操作系统实际上由一些程序模块组成,它们是系统软件中最基本的部分,是用以控制和管理系统资源、方便用户使用计算机的程序的集合;(2)计算机系统中所有的硬件和软件,统称为计算机资源;(3)如果把操作系统看成是计算机系统资源的管理者,则操作系统的功能和任务主要有以下5个方面:①处理机管理;②存储器管理;③设备管理;④文件管理;⑤作业管理。
2.发展过程表4-1操作系统发展过程3.分类按照操作系统在用户面前的使用环境以及访问方式,可以将操作系统分为多道批处理操作系统、分时操作系统和实时操作系统等。
表4-2操作系统分类二、多道程序设计1.并发程序设计(1)基本概念并发程序是指多个程序的运行在时间是重叠的,一个程序的运行尚未结束,另一个程序的运行已经开始。
多个程序并发执行是多道程序系统的特点。
(2)并发程序特点顺序执行程序具有顺序性、封闭性和可再现性的特点。
并发程序和顺序执行程序有很大的差异性。
①没有封闭性并发程序的输出结果与各程序执行的相对速度有关,失去了程序的封闭性这个特点。
②非一一对应在多道程序并发执行的情况下,程序的执行过程由当时的系统环境与条件所决定,程序与其执行过程就不再有一一对应的关系。
当多个执行过程共享某个程序时,它们都可以调用这个程序,调用一次即对应一个执行过程,也就是说,这个共享的程序对应多个执行过程。
③互相制约并发程序之间不但可能有互为因果的直接制约关系,而且还可能由于共享某些资源或过程而具有间接的互相制约关系。
2.进程(1)基本概念进程是指可以并发执行的程序的执行过程,它是控制程序管理下的基本的多道程序单位。
进程与程序的区别主要反映在以下几个方面:①进程是动态的概念,而程序是静态的概念。
②进程的存在是暂时的,而程序的存在是永久的。
③进程的组成应包括程序和数据。
除此之外,进程还包括由记录进程状态信息的“进程控制块”。
徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解
徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解关注薇公号-精研学习网-查找资料第1章预备知识1.1复习笔记一、集合1基本概念集合是指若干个或无穷多个具有相同属性的元(元素)的集体。
通常,一个集合名称用大写字母表示,而集合中的某个元素用小写字母表示。
如果集合M由n(n≥0)个元素a1,a2,…,a n组成,则称集合M 为有限集。
如果一个集合中有无穷多个元素,则称此集合为无限集。
不包括任何元素的集合称为空集。
空集通常用Φ表示。
如果M是一个集合,a是集合M中的一个元素,则记作a∈M,称元素a属于集合M;如果a不是集合M中的元素,则记作a∉M,称元素a不属于集合M。
(1)列举法用列举法表示一个集合是将此集合中的元素全部列出来,或者列出若干项但能根据规律可知其所有的元素。
例如:大于1而小于100的所有整数的集合A可以表示为A={2,3,4, (99)(2)性质叙述法用性质叙述法表示一个集合是将集合中的元素所具有的属性描述出来。
例如:大于1而小于100的所有整数的集合A可以表示为A={a|1<a<100的所有整数}设M与N为两个集合,若M中的每个元素也为N的元素,则称M为N的子集,记作M⊆N,若M⊆N且N中至少有一个元素a∉M,则称M为N的真子集,记作M⊂N。
2基本运算(1)两个集合的并设有两个集合M和N,它们的并集记作M∪N,定义如下:M∪N={a|a∈M或a∈N}(2)两个集合的交设有两个集合M和N,它们的交集记作M∩N,定义如下:M∩N={a|a∈M且a∈N}两个集合M和N的并、交均满足交换律,即M∪N=N∪MM∩N=N∩M(3)两个集合的差设有两个集合M和N,它们的差集记作M-N,定义如下:M-N={a|a∈M但a∉N}两个集合的差不满足交换律,即M-N≠N-M对于集合的并、交、差有以下几点基本性质:①结合律(A∩B)∩C=A∩(B∩C)(A∪B)∪C=A∪(B∪C)②分配律A∩(B∪C)=(A∩B)∪(A∩C)A∪(B∩C)=(A∪B)∩(A∪C)③其他(4)映射映射的相关概念如下:①设A、B是两个非空集,如果根据一定的法则f,对于每一个x∈A,在B中都有唯一确定的y与之对应,则称f为定义在A上而在B中取值的映射,记作f:A→B,并将x与y的关系记作y=f(x),x称为自变元,y称为在f作用下x的像;②设给定映射f:A→B,且B=f(A),若对于每个y∈B仅有唯一的x∈A使f(x)=y,则称f有逆映射f-1;③若A、B两个集合有一一映射f存在,使f(A)=B,则称A与B成一一对应,A与B对等,记作A~B。
计算机软件技术基础
第1章预备知识绿皮书:176算法的有穷性是指算法程序的运行时间是有限的(P7)155 算法就是一组严谨的定义运算顺序的规则,并且每一个规则都是有效的且是明确的,次顺序将在有限的次数下终止(P8)10.算法的时间复杂度,是指执行算法所需要的计算工作量。
(P13)21 算法是计算机求解问题的一个运算序列的步骤性描述。
作为一个算法应具有以下几个基本特征:能行性、确定性、有穷性、拥有足够的情报(P7)23.算法的复杂度可以分为时间复杂度和空间复杂度,其中最能表征算法快慢的是最坏情况时间复杂度(P13)152 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间一个算法所占用的内存空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间(P15)153 所谓减半,是指将问题的规模减半,而问题的性质不变。
所谓递推,是指重复减半的过程。
减半递推法是工程商常用的分治法(P11)43算法指的是解题方案的准确而完整的描述(P6)44 算法的时间复杂度是指算法在执行过程中所需要的基本运算次数(P13)84. 递归是一种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。
(P10)113设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序则该操作的时间复杂度为O(n)(P13)145设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为O(1)第2章基本数据结构极其运算116数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构(P17)137循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
(P41)11.在实际存储稀疏矩阵的时候,只存储非零元素,而大量的零元素不存储,这就是稀疏矩阵的压缩存储。
计算机软件技术基础复习要点概要
计算机软件技术基础复习要点第二章基本数据结构及其运算1.数据结构的分类,线性结构与非线性结构,线型结构又名线性表。
P202. 栈的定义:栈是限定在一端进行插入与删除的线性表。
对栈的插入与删除运算不需要移动表中其它数据元素。
“先进后出”或“后进先出” 。
P314. 队列:定义,队列的操作原则:先进先出。
P405. 带链的栈的类实现(代码。
P616. 循环链表的类的实现(代码 P677. 稀疏矩阵的三列二维数组的表示。
给出一个稀疏阵,能写稀疏矩阵中的每个非零元素的三元组表示。
P86-878. 二叉树的性质 1、性质 2. P1159. 二叉树的遍历分三种:前序遍历、中序遍历、后序遍历。
P118.10. 图的基本概念。
P13711. 图的遍历方法有:纵向优先搜索发和法和横向优先搜索法。
第四章资源管理技术1. 第一个分时操作系统是 UNIX 操作系统。
P2302. 进程与程序的区别是:静态和动态、…… P12352. 进程的组成:数据、程序、进程控制块。
P2353. 进程的三种状态是什么?怎么互相转换的。
P236运行转就绪, 运行转等待、就绪转运行、等待转就绪,各自转换的原因。
单 CPU 情况下,任意时刻,处于运行状态的进程只有一个。
一个进程对应一个进程控制块,每个进程控制块记录进程的状态、名称等信息,每个进程控制块应是互不相同的。
4. 创建原语 :在实际系统中创建一个进程有两种方法:一是由操作系统建立, 0#进程就是由操作系统建立的; 二是由其他进程创建一个新的进程。
基本操作都是一样的。
创建进程原语总是先为新建进程申请一空白 PCB ,并为之分配唯一的数字表示符,使之获得 PCB 的内部名称, 若该进程所对应的程序不在内存中, 则应将它从外存储器调入内存, 并将该进程有关信息填入 PCB 中,然后置该进程为就绪状态,并将它排入就绪队列和进程家族队列中。
5. 何为死锁,发生死锁的四个必要条件。
计算机软件技术基础
第2页
无所不在的嵌入式家族
第3页
养在深闺的巨型计算机
世界上最快的计算机 IBM的Blue Gene/L ,
拥有超过100万个处 理器,每个处理器每 秒可运算10亿次。运 算能力相当于击败国 际象棋世界级棋手的 超级电脑“深蓝”的 1000倍。占地达两个 篮球场之大,重达 106吨。
第 21 页
1.5 操作系统
没有安装任何软件的计算机称为裸机。 操作系统是直接运行于裸机之上的系统软件,
它负责对计算机系统的各种软硬件资源进行 管理和分配,为用户提供友好的计算机使用 界面和平台。 在裸机上配置操作系统之后就构成了操作系 统虚拟机。 所有其它的程序都在扩充后的机器上运行。
第 22 页
程序:是使计算机完成某种任务的一个有序的命令(指 令语句)和数据的集合。
写程序就像写文章,要解决两个问题: 1.明确自己要表达的是什么 2.用一种语言把它表达出来
程序设计语言是编写计算机程序所用的语言。 程序设计语言发展的三个阶段:
机器语言→汇编语言→高级语言
第 15 页
1.3 程序设计语言
机器语言 是机器指令的集合,其代码由0、 1组成的二进制串表示,不需翻译可直接为 机器所接受。
第 31 页
结构化程序设计
强调使用程序的三种基本控制结构(顺序、 选择和循环 ),有限制地使用goto语句。
第 32 页
第4页
1、计算机硬件及发展
什么是硬件? 硬件是组成计算机系统的所有电子的、机
械的、磁性的、光学的装置和部件。 配置一台计算机需要购买哪些东西? 存储程序式计算机的工作原理 5大部件:
(运算器+控制器)+存储器+输入设备+输出设备
计算机软件技术基础徐士良
(1)首先查找索引表,以便确定被查元素所在的子表。由于 索引表数据域中的数据是有序的,因此可以采用对分查找。
(2)然后在相应的子表中用顺序查找法进行具体的查找。
分块查找 输入:长度为n的线性表L的存储空间V(1:n);索引表中
的数据域存储空间KEY(1:m)与指针域存储空间 K(1:m);被查元素x。 输出:被查元素x在线性表L中的序号j(即使L(j) =x的j)。如果x不在线性表L中,则置j=-1。
int inserch(v,n,s,m,x) int n,m; ET x,v[]; struct indnode s[] ;
{ int i,j,t; i=1; j=m; while (j-i>1) /*对分查找索引表*/ { t=(i+j)/2; if (x<=s[t].key) j=t; else i=t; } if ((i!=j)&&(x>s[i].key)) i=j; j=s[i].k; t=n; if (i!=m) t=s[i+1].k-1;/*确定顺序查找的终点*/ while((j<=t)&&(V[j]!=x)) j=j+1;/*顺序查找子表*/ if (j>t) j=-1; return(j);
/*函数返回被查找元素x在线性表中的序号, 如果在线性表中不存在元素值x,则返回-1 */ int serch(v,n,x) int n; ET v[],x; /*ET为线性表数据类型*/ { int k;
k=0; while ((k<n)&&(v[k]≠x)) k=k+1; if (k==n) k=-1; return(k); }
1)计算关键字k的Hash码i=i(k)。
2) 检 查 表 中 第 i 项 的 内 容 : 若第i项登记着关键字k,则取出该项元素即可; 若第i项为空,则表示在Hash表中没有该关键字的信息; 若第i项不空,且登记的不是关键字k,则令 i=mod(i+1,n)
《计算机软件技术基础》教学大纲
《计算机软件技术基础》教学大纲课程编号:09010072课程名称:计算机软件技术基础学时与学分:32(8) / 2先修课程:微机原理及应用基础、计算机程序设计语言(C 语言)、高等数学、计算机文化基础适应专业:自动化、测控技术与仪器教材及参考书:《计算机软件技术基础》,徐士良编,清华大学出版社一、课程的性质和任务本课程系自动化等专业有关计算机科学的选修专业课程。
通过学习,使学生在掌握计算机基础知识、程序设计概念、熟练上机操作及调试的基础上,加深对软件开发与应用中数据结构的应用的理解,熟练掌握抽象数据类型以及面向对象的方法组织、存储各种类型的数据,使学生掌握计算机软件开发的基本原理、方法、技术和工具。
使学生了解数据库技术的发展现状和前景,掌握数据库应用的一般知识,包括关系数据库的概念、设计方法和使用方法,能够完成有关数据库的简单应用,使学生掌握支持软件开发和维护的理论、方法、技术、标准以及计算机辅助工程和环境等知识,并通过实验(实践)达到灵活动用。
软件工程的概念,软件设计的基本方法,结构化软件设计等。
二、课程基本要求1.对重要的基本概念与基本原理了解其含义,能熟练运用基本原理解决问题;2、掌握重要数据结构的概念、使用方法及实现技术;3、能运用所学数据结构及其有关算法编制有关小型程序。
4、掌握数据库的基本概念,了解数据管理对数据库技术的需求、数据库技术在信息管理中的地位和作用、数据库技术的发展趋势。
5、能运用关系数据库的相关技术和方法分析数据库应用系统,在此基础上掌握E-R图、规范花理论、数据字典和数据流图及其在构建系统数学模型和应用功能中的作用。
熟悉和实践数据库管理系统共有的数据存取语言和标准接口SQL。
6、掌握软件工程的基本原理、概念与方法,主要包括软件系统的可行性研究、需求分析、总体设计、详细设计、编码、测试、维护、管理等方面的基本知识与方法。
7、掌握软件工程中的一些基本技术方法。
8、结合模拟案例,要求学生从实际中掌握瀑布型软件开发过程的基本方法和技巧,以及面向对象分析的方法。
软件技术基础第二章课后习题答案
习题2.1 什么是数据结构?它对算法有什么影响?答:数据结构是指同一数据对象中各数据元素间存在的关系。
数据结构对算法的影响:算法的实现必须借助程序设计语言中提供的数据类型及其运算。
一个算法的效率往往与数据的表达形式有关,因此数据结构的选择对数据处理的效率起着至关重要的作用。
它是算法和程序设计的基本部分,它对程序的质量影响很大。
习题2.2 何谓算法?它与程序有何区别?答:广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。
计算机算法是通过计算机能执行的算法语言来表达的。
和程序的区别:一个程序包括两个方面的内容:(1)对数据的描述,即数据结构。
(2)对操作的描述,即算法。
所以算法是程序的一个要素。
习题2.3 何谓频度,时间复杂度,空间复杂度?说明其含义。
答:频度:在某个算法中某个语句被重复执行的次数就是此语句的频度。
时间复杂度:是用来估算一个算法的执行时间的量,以算法中频度最大的语句来度量。
空间复杂度:指在算法中所需的辅助空间的单元,而不包括问题的原始数据占用的空间。
习题2.4算法:A=(a0, a1 ……an)mul = 1 //sum=a0for i=1 to nmul = mul * xsum = A[i]*mul + sum //求和end(i)程序代码:#include<stdio.h>#include<stdlib.h>#define N 10double polynomail(int a[],int i,double x,int n);int main(){double x;int n,i;int a[N];printf("输入变量的值x:");cin>>x;cout<<"输入多项式的阶次n:";cin>>n;if(n>N-1) exit(0);cout<<"输入多项式的系数a[0]--a[n]:";for(i=0;i<=n;i++) cin>>a[i];cout<<"The polynomail value is "<<polynomail(a,n,x,n)<<endl;return 0;}double polynomail(int a[],int i,double x,int n){if(i>0) return a[n-i]+polynomail(a,i-1,x,n)*x;else return a[n];}本算法的时间复杂度为O(n)。
计算机软件技术基础课件(共19张PPT)
3)软件开发技术落后
4)软件开发工具和生产方式落后
3、解决软件危机的途径
要充分吸取和借鉴人类长期以来从事各种工程项目 所积累的行之有效的原理、概念、技术和方法,并应用 于软件开发的实践中,将软件开发变成一种组织良好、 管理严密、各类人员协同完成的工程项目
3、软件的特征与类型 特征 a 智能性 b 抽象性 d 依附性 e 非损性 类型
按功能分
类型
按规模分
c系统性
系统软件 支撑软件 应用软件
微型 小型 中型 大型 超大型
从开发人数, 开发周期,源 程序行数几方 面考虑,有软件的产生:伴随计算机产生而产生,伴 2)对程序进行修改,排除错误
定义 阶段
问题定义
(目标与范围说明)
可行性研究
(可行性论证报告)
需求分析
(需求说明书)
设计
(设计文档)
开发 阶段
编程 测试
(程序)
维护 阶段
运行与维护 (维护报告)
传统软件生命周期模型―瀑布模型
3、软件测试
软件测试是为了发现错误而执行程序的过程。
软件测试分为:单元测试和综合测试。
中所遇到的困难问题,从此进入软件工程时代。 软件测试分为:单元测试和综合测试。 传统软件周期模型――瀑布模型 ●程序调试的基本步骤:
三、软件危机 指令是指示计算机进行某一工作的命令。
2)对程序进行修改,排除错误 程序不再是硬件的附属,有软件的概念。 1)软件的产生:伴随计算机产生而产生,伴随计算机发展而发展
四、软件工程
软件工程是开发、运行、维护和修复软件的系统方 法
1、软件工程学的多个分支
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.数据的存储结构(数据的物理结构) 数据的逻辑结构在计算机存储空间中的存放形 式。 常用的存储结构有: 顺序、链接、索引等存储结构。 采用不同的存储结构,其数据处理的效率是不 同的。
2.1.3 数据结构的图形表示
数据集合D中的每一个数据元素用中间标有 元素值的方框表示(数据结点,结点) 用一条有向线段从前件结点指向后件结点。
一年四季数据结构的图形表示
家庭成员间辈份关系数据结的图形表示
用图形表示数据结构B=(D,R)
D={di |1≤i≤7}={d1,d2,d3,d4,d5,d6,d7} R={(d1,d3),(d1,d7),(d2,d4),(d3 ,d6) ,(d4 ,d5 ) }
void insl(v,m,n,i,b) ET v[],b; int m,*n,i; { if (*n==m) { printf("overflow \n"); return; } if (i>*n-1) i=*n+1; if (i<1) i=1; for (j=*n;j<=i;j――) v[j]=v[j-1]; v[i-1]=b; *n= *n+1; return; }
来自栈(stack)是限定在一端进行插入与删除的线性表。 允许插入与删除的一端称为栈顶,不允许插入与删 除的另一端称为栈底。 栈 是 按 照 “ 先 进 后 出 ” (FILO—First In Last Out)或“后进先出” (LIFO—Last In First Out) 的原则组织数据的,因此,栈也被称为“先进后出” 表或“后进先出”表。 栈具有记忆作用。 用指针top来指示栈顶的位置,用指针bottom指向 栈底。 往栈中插入一个元素称为入栈运算,从栈中删除一 个元素(即删除栈顶元素)称为退栈运算。
第2章 基本数据结构及其运算
2.1 2.2 2.3 2.4 2.5 2.6
数据结构的基本概念 线性表及其顺序存储结构 线性链表及其运算 数组 树与二叉树 图
2.1 数据结构的基本概念
2.1.1 2.1.2 2.1.3 2.1.4
两个例子 什么是数据结构 数据结构的图形表示 线性数据结构与非线性数据结构
家庭成员数据结构 B=(D,R) D={父亲,儿子,女儿} R={(父亲,儿子),(父亲,女儿)} n维向量 X=(x1,x2,…,xn) 也是一种数据结构。即 X=(D,R) D={x1,x2,…,xn} R={(x1,x2),(x2,x3),…,(xn-1,xn)}
m×n的矩阵是一个数据结构。即 A=(D,R) D={A1,A2,…,Am} R={(A1,A2),(A2,A3),…,(Ai,Ai+1),…,(Am-1,Am)} 其中Ai=(ai1,ai2,…,ain),i=1,2,…,m
void desl(v,m,n,i) ET v[]; int m,*n,i; { if (*n==0) { printf("underflow \n");return;} if ((i<1) | | (i>*n)) { printf("Not this element in the list \n"); return; } for (j=i;j<=*n-1;j++) v[j-1]=v[j]; *n= *n-1; return; }
54 46 78 85
数据元素在表中的排列顺序对查找效率是有很大影响。
例 学生情况登记表以学号为顺序排列
结论: 在对数据进行处理时, 可以根据所做的运算不同, 将数据组织成不同的形式, 以便于做该种运算, 从而提高数据处理的效率。
2.1.2 什么是数据结构
数据结构是指相互有关联的数据元素集合。 现实世界中客观存在的一切个体都可以是数据元素。
数据结构三个方面的问题:
(1)数据的逻辑结构 (2)数据的存储结构 (3)对各种数据结构进行的运算
目的:提高数据处理的效率
提高数据处理的速度 尽量节省计算机存储空间
2.1.1 两个例子
例
无序表的顺序查找 35 16 78 85 43 29 33 21 有序表的对分查找 16 21 29 33 35 43 46 54
(2) 退栈运算
PROCEDURE POP(S,m,top,y) 1. IF (top=0) THEN { Stack-UNDERFLOW;RETURN } 2. y=S(top) 3. top=top-1 4. RETURN
void pop(s,m,top,y) ET s[],*y; int m,*top; { if (*top==0) { printf("Stack-underflow\n");return;} *y=s[*top-1]; *top=*top-1; return; }
4.线性表在顺序存储下的删除运算
线性表在顺序存储下的删除算法
输入:线性表的存储空间V(1:m);线性表的长度n(n≤m); 删除的位置i(表示删除第i个元素)。 输出:删除后的线性表存储空间V(1:m)及线性表的长度n。 PROCEDURE DESL(V,m,n,i) 1. IF (n=0) THEN { UNDERFLOW;RETURN} 2. IF (i<1)or(i>n) THEN {“Not this element in the list”;RETURN} 3. FOR j=i TO n-1 DO V(j)=V(j+1) 4. n=n-1 5. RETURN
(1)入栈运算
PROCEDURE PUSH(S,m,top,x) 1. IF (top=m) THEN { Stack-OVERFLOW;RETURN } 2. top=top+1 3. S(top)=x 4. RETURN
void push(s,m,top,x) ET s[],x; int m,*top; { if (*top==m) { printf("Stack-overflow\n");return;} *top=*top+1; s[*top-1]=x; return; }
2.2.2 栈及其应用 1.什么是栈
主程序与子程序之间的调用关系
MAIN …… CALLSUB1 A:…… …… END SUB1 SUB2 SUB3 …… …… …… CALLSUB2 CALLSUB3 CALLSUB4 B:…… C:…… D:…… …… …… …… RETURN RETURN RETURN SUB4 …… …… …… …… RETURN
(29,18,56,63,35,24,31,47)
建立空线性表的顺序存储空间 (即初始化线性表的顺序存储空间) #include "stdlib.h" void initsl(v,m,n) ET *v; int m, *n; { v=malloc(m*sizeof(ET)); *n=0; return; } 释放线性表的顺序存储空间 free(v);
2.2.1 线性表及其运算 1.什么是线性表(Linear List) n维向量(x1 ,x2 ,…,xn)是一个长度为n的 线性表 英文小写字母表(a,b,c,…,z)是一个长 度为26的线性表 一年中的四个季节(春,夏,秋,冬)是一个 长度为4的线性表 矩阵是一个比较复杂的线性表
(3) 读栈顶元素
1.数据的逻辑结构 是指反映数据元素之间逻辑关系的数据结构。 (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。
数据的逻辑结构有两个要素:
数据元素的集合D; 反映D中各数据元素之间的前后件关系R。
数据结构可以表示成 B=(D,R) 其中B表示数据结构。
为了反映D中各数据元素之间的前后件关系,一般用二元 组来表示。 设a与b是D中的两个数据,则二元组 (a,b) 表示a是b的前件,b是a的后件。 例如 B=(D,R) D={春,夏,秋,冬} R={(春,夏),(夏,秋),(秋,冬)}
2.栈的顺序存储及其运算
top=0表示栈空;top=m表示栈满。 建立空栈的顺序存储空间 (即初始化栈的顺序存储空间) #include "stdlib.h" void init_stack(s,m,top) ET *s; int m, *top; { s=malloc(m*sizeof(ET)); *top=0; return; } 释放栈的顺序存储空间时 free(s);
(1)线性表中所有元素所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑 顺序依次存放的。
线性表中第i个元素ai在计算机存储空间中 的存储地址为 ADR(ai)=ADR(a1)+(i-1)k
长度为n的线性表 (a1,a2,…,ai,…,an) 顺序存储结构
整型一维数组存放 长度为8的线性表
线性表顺序存储结构下的主要运算:
(1)在线性表的指定位置处加入一个新的元素(即线性表的插入); (2)在线性表中删除指定的元素(即线性表的删除); (3)在线性表中查找某个(或某些)特定的元素(即线性表的查找); (4)对线性表中的元素进行整序(即线性表的排序); (5)按要求将一个线性表分解成多个线性表(即线性表的分解); (6)按要求将多个线性表合并成一个线性表(即线性表的合并); (7)复制一个线性表(即线性表的复制); (8)逆转一个线性表(即线性表的逆转)等。
描述一年四季的季节名 春,夏,秋,冬 可以作为季节的数据元素; 表示数值的各个数 18,11,35,23,16,… 可以作为数值的数据元素; 表示家庭成员的各成员名 父亲,儿子,女儿 可以作为家庭成员的数据元素。
前后件关系是数据元素之间的一个基本 关系,但前后件关系所表示的实际意义 是随具体对象的不同而不同。 一般来说,数据元素之间的任何关系都 可以用前后件关系来描述。