1计算机软件技术基础徐士良第1章

合集下载

计算机软件技术基础第1章

计算机软件技术基础第1章

第1章 算法
11
当step<0时,功能等价于如下的IF语句: i=init loop:IF i≥limit THEN { S i=i+step GOTO loop }
第1章 算法
12
5.其他语句 EXIT READ(或INPUT) WRITE(或PRINT,或OUTPUT)
第1章 算法
13
1.3 算法设计基本方法 1. 列举法 根据提出的问题,列举所有可能的情况,并用问题 中给定的条件检验哪些是需要的,哪些是不需要的。 因此,列举法常用于解决“是否存在”或“有多少 种可 能”等类型的问题,例如求解不定方程的问题。
第1章 算法
25Biblioteka 递归的概念例:阶乘函数 阶乘函数可递归地定义为:
边界条件
n0 1 n! n(n 1)! n 0
递归方程 边界条件与递归方程是递归函数的二个要素,递归函 数只有具备了这两个要素,才能在有限次计算后得出 结果。 第1章 算法
26
2.1 递归的概念
Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,……,称为 Fibonacci数列。它可以递归地定义为: 边界条件 1 n0 F ( n) 1 n 1 F (n 1) F (n 2) n 1 递归方程
皇后布局 部分布局:一个不互相攻击的少于4个皇后的布局
第1章 算法
41
回溯法求解4皇后问题的搜索过程(一个可行解)
Q Q ×× Q Q ×× Q × ××× (c) Q ×××Q Q Q Q ×Q (d) Q Q Q ××Q (e) Q Q Q
(a) Q Q ×Q × ×× ×
(b) Q
Q
(f)

第1章 计算机软件技术基础概论

第1章 计算机软件技术基础概论

课程要求: 课程要求: 教学内容重点分为 1、掌握数据结构的基础知识。包括线性表、 栈和队列、树、二叉树和图的部分概念。 2、掌握查找及排序相关的概念、算法和应用。
课程要求: 课程要求: (1)基本要求 ) 掌握基本原理;熟悉主要算法特点; 掌握基本原理;熟悉主要算法特点;了解常用算法 的设计思想与结构。 的设计思想与结构。 注意:理论性强,比较枯燥。学好理论, 注意:理论性强,比较枯燥。学好理论,才能在实 际程序设计灵活应用。 际程序设计灵活应用。 (2)学习方法 ) a.知识:需要记忆、积累、联想、对比 知识: 知识 需要记忆、积累、联想、对比——抓重点 抓重点 b.技能:需要训练、经验、方法、技巧 技能: 技能 需要训练、经验、方法、技巧——抓特点 抓特点 c.思路:逻辑思维、形象思维 思路: 思路 逻辑思维、 (3)认真完成书后作业和补充习题。 )认真完成书后作业和补充习题。
图1-2 变换型DFD
1.4 软件的设计方法P8
图1-3 事务型DFD
面向数据结构的软件设计方法,是用数据结构作为程序设计的基础。 面向数据结构的软件设计方法,是用数据结构作为程序设计的基础。最 数据结构作为程序设计的基础 适合于在详细设计阶段 适合于在详细设计阶段 详细设计 面向对象的软件设计方法就是把面向对象的思想应用到软件工程中, 面向对象的软件设计方法就是把面向对象的思想应用到软件工程中,并 指导开发维护软件。 指导开发维护软件。
计算机软件技术基础
孙雪 自动化学院信息自动化教研部 sunsnow11@ 64900511
教学目的和任务: 教学目的和任务: 1、本课程的任务是在基础方面,要求学生掌 握常用数据结构的基本概念及其不同的实现方 法;在技能方面,通过系统学习能够在不同存 储结构上实现不同的运算,并对算法设计的方 式和技巧有所体会。 2、设置本课程的目的在于为后继的专业课打 基础,能够使用计算机软件方法解决问题的能 力,同时也为从事计算机软件的开发提供基础 知识。本课程先修课为C语言。

02243计算机软件基础(一)

02243计算机软件基础(一)

软件工程概念
软件工程是指导计算机软件开发和维护的工程学 科,承受工程的概念、原理、技术和方法来开发 与维护软件。
贯穿于这一学科的根本线索是软件生命期学说, 它告知软件研制者和维护者“什么时候做什么以 及怎么做”。
软件生命期就象人的寿命一样,从诞生算到死亡, 从产生开发要求算到软件报废为止。包括:软件 预备、需求分析、软件开发和软件维护四个时期。
时程序的规模和简洁度也急剧增长。 早期手工作坊式的软件开发方式因无法适应这种
变化而形成了“软件危机”。主要表现在: 开发本钱和进度估量不准确,生产效率低。 用户对软件系统不满足的现象常常发生。 软件产品的质量不行靠。 软件常常是不行维护的。 软件本钱在计算机系统总本钱中的比例上升。
第 26 页
第 14 页
软件技术分类
计算机 软件技术
软件及实现技术 软件开发方法与技术
程序设计语言 编译技术 操作系统及有用程序 数据库技术 软件工具 软件工程 程序设计方法 数据构造和算法
第 15 页
1.3 程序与程序设计语言
程序:是使计算机完成某种任务的一个有序的命令〔指 令语句〕和数据的集合。
写程序就像写文章,要解决两个问题: 1.明确自己要表达的是什么 2.用一种语言把它表达出来
它负责对计算机系统的各种软硬件资源进展 治理和安排,为用户供给友好的计算机使用 界面和平台。 在裸机上配置操作系统之后就构成了操作系 统虚拟机。 全部其它的程序都在扩大后的机器上运行。
第 23 页
应用程序 操作系统虚拟机
裸机
操作系统 用户程序
第 24 页
1.6 数据库技术
数据库是一种强大的数据处理技术。 它把应用中全部的数据有构造地集中在一起,
程序设计语言是编写计算机程序所用的语言。 程序设计语言进展的三个阶段:

计算机软件技术基础(第三版) 课后习题答案较全

计算机软件技术基础(第三版) 课后习题答案较全

第一章信息与计算机1.1 什么是信息?信息与数据的区别和联系在何处?信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。

信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。

与数据的区别和联系:数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。

我们把这些数据收集起来,经过处理后,即得到人们需要的信息。

信息和数据的关系可以归结为: 1. 信息是有一定含义的数据。

2. 信息是经过加工(处理)后的数据。

3. 信息是对决策有价值的数据。

1.2 信息有哪些基本属性?信息的基本属性有: 1. 事实性。

2. 等级性。

3. 可压缩性。

4. 可扩散性。

5. 可传输性。

6. 共享性。

7. 增值性和再生性。

8. 转换性。

1.3 计算机的主要特点是什么?计算机最主要的特点是: 1. 高速自动的操作功能。

2. 具有记忆的能力。

3. 可以进行各种逻辑判断。

4. 精确高速的计算能力。

1.5 完整的计算机系统应该包括哪几部分?目前最完整的计算机系统学说认为由五部分组成: 1. 人员 2. 数据 3. 设备 4. 程序 5. 规程1.6 什么是计算机硬件?什么是计算机软件?硬件:泛指实际存在的物理设备,包括计算机本身及其外围设备。

微型计算机的硬件系统:主机、外存储器、输入设备、输出设备、微机的系统总线。

软件:是指计算机程序、方法、规则的文档以及在计算机上运行它时所必须的数据。

计算机软件一般分为系统软件和应用软件。

1.8 软件技术发展的几个阶段各有什么特点?它与硬件的关系如何?第一阶段:高级语言阶段特点:这一时期,编译技术代表了整个软件技术,软件工作者追求的主要目的是设计和实现在控制结构和数据结构方面表现能力强的高级语言。

但在这一时期内,编译系统主要是靠手工编制,自动化程度很低。

硬件关系:此时期计算机的硬件要求仅能用机器指令来编制可运行的程序。

第二阶段:结构程序设计阶段特点:在程序的正确性方面,提出了结构化程序设计思想使程序的可靠性提高了。

计算机软件技术基础教程(第二版)习题及答案

计算机软件技术基础教程(第二版)习题及答案

第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。

2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。

3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。

4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。

1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。

2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。

1)软件规模越来越大,结构越来越复杂。

2)软件开发管理困难而复杂。

3)软件开发费用不断增加。

4)软件开发技术落后。

5)生产方式落后。

6)开发工具落后,生产率提高缓慢。

3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。

2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。

软件技术基础 (第三版)第1章

软件技术基础   (第三版)第1章

1.4.2 结构程序设计阶段 软件规模的扩大,复杂性的增加,出现了软件危 机,从而产生和发展了程序设计方法学和软件工程 学。 主要表现于以下三个方面:
第18页
(1)程序的正确性 提出了结构化程序设计的思想,将程序的结 构限制为顺序、选择和循环等三种,每一个基本 结构只有一个入口和一个出口。 尽量不使用GOTO语句
第21页

改进: 快速原型法:用短时间制作一个可运行的 样机,实现系统的主要框架 甚高级语言法:只需告诉“做什么”,而 算法的实现由系统软件完成 软件可重用法:把一些基本部件预加工好, 产品开发时,选用合适的基本部件来组装
上一页 停止放映 下一页
第22页
第1章 信息与计算机
软件技术基础
Foundations of Software Technique
下一页
主要内容
信息与计算机
上一页 停止放映 下一页
常用数据结构及其运算 操作系统 数据库系统 计算机网络 软件工程技术基础
第2页
主要内容
1.1、信息与信息时代
1.2、计算机发展简史 1.3、软件的基本概念 1.4、软件发展和软件危机

泛指实际存在的物 理设备 包括计算机本身及 其外围设备:运算 器、控制器、存储 器、输入设备和输 出设备。 只有硬件系统的计 算机称为裸机,无 法使用。因此,将 计算机硬件系统称 为计算机系统是不 合适的。
第12页
(2)硬件与软件结合说
计算机系统=硬件+软件 ——计算机系统的狭义说法
(3)广义系统说 由 人员(People) 数据(Data) 设备(Equipmet) 程序(Program) 规程(Pegulation) 五部分组成

计算机软件技术基础(第3版)

计算机软件技术基础(第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.数据的存储结构(物理结构)

计算机软件技术基础第1章 软件工程

计算机软件技术基础第1章 软件工程

信息管理与信息系统
17
计算机软件技术基础
2.文档
计算机软件技术基础
计算机软件技术基础
总体设计说明书: 主要规定软件结构, 详细设计说明书:着重描述程序的过程。 设计表达工具
图形表达工具:流程图 N-S图(由Nassi和Shneidermen开发) PAD图(Problem Analysis Diagram) 文字表达工具:如伪代码,PDL(Program Design Language)等。 表格表达工具:判定表等。
程序设计时代、 软件时代 软件工程时代
信息管理与信息系统 2
计算机软件技术基础
计算机软件技术基础
计算机软件技术基础
– 软件工程学定义: 是指导计算机软件开发和维护的一门工程学科。它采用 工程的概念、原理、技术和方法来开发与维护软件,把 先进的管理技术和先进的计算机科学技术方法结合起来, 经济地开发出高质量的软件并有效地维护它。
信息管理与信息系统
23
计算机软件技术基础
计算机软件技术基础
计算机软件技术基础
(2)事务型结构 这类系统的特征是,具有在多种事务中选择执行某类事务的能 力。 事务型结构由至少一条接受路径,一个事务中心(加工)与 若干条动作路径组成,当外部信息沿着接受路径进入系统后, 事务中心分析每一事务,确定其类型,根据事务类型选择一 个事务路径继续进行处理。
信息管理与信息系统
26
计算机软件技术基础
计算机软件技术基础
计算机软件技术基础
3.详细设计的描述方法 详细设计的描述方法也称为详细设计工具,可 用流程图、PDA图和伪代码等工具表示。 (1)程序流程图 (2)N-S图 (3)PAD图 PAD图又称问题分析图 (4)伪码和PDL语言

徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解

徐士良《计算机软件技术基础》(第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章 软件技术基础-基础知识资料

第1章  软件技术基础-基础知识资料
第 24 页
3、高级语言
高级语言 是一类人工设计的语言,因为 它对具体的算法进行描述,所以又称为 算法语言 。这种语言称为“面向过程的 语言”,只需根据所求解的问题的算法, 写出处理的过程即可,而不必涉及计算 机内部的结构。比如在存取数据时,不 必具体指出各存储单元的具体地址,可 以用一个符号代表地址。
第 26 页
计算机软件以及分类
1983 年, IEEE 组织明确地给 软件 作了定义:软 件是计算机程序、方法和规则相关的文档以及在 计算机上运行它时所必需的数据。 软件≠程序 程序≠软件 程序和软件是两个不同的概念 强调了文档在软件研制中的重要性
第 27 页
软件的分类
计算机软件发展非常迅速,其内容又 十分丰富,对它进行分类也比较困难, 仅从用途来划分,大致分为 服务类、 维护类和操作管理类。 若从计算机系统角度看,软件又分为 系统软件和应用软件。
第 10 页
4、输入设备(人机接口)
输入设备是外部向计算机传送信息的 装置。其功能是将数据、程序及其它 信息,从人们熟悉的形式转换成计算 机能接受的信息形式,输入到计算机 内部。 常见的输入设备有键盘、鼠标、光笔、 纸带输入机、模/数转换器、声音识 别输入等。
第 11 页
5.输出设备
输出设备功能是将计算机内部二进 制形式的信息转换成人们所需要的 或其它设备备有打印机、显示器、 绘图仪、数/模转换器、声音合成输 出等。
第 23 页
2、汇编语言
汇编语言是从机器语言发展演变而来的。 它用一些“助记忆符号”来代替那些难 懂难记的二进制代码,也称为符号语言。 通常用有指令功能的英文词的缩写代替 操作码,如“传送”指令用助记符 MOV(move 的缩写 ) 表示,“加法”指 令用助记符 ADD(Addition 的缩写 ) 表示。 这样,每条指令就有明显的标识,从而 易于理解和记忆,因此,汇编语言程序 有较直观易理解等优点。

《计算机软件技术基础》教学大纲

《计算机软件技术基础》教学大纲

《计算机软件技术基础》教学大纲课程编号:09010072课程名称:计算机软件技术基础学时与学分:32(8) / 2先修课程:微机原理及应用基础、计算机程序设计语言(C 语言)、高等数学、计算机文化基础适应专业:自动化、测控技术与仪器教材及参考书:《计算机软件技术基础》,徐士良编,清华大学出版社一、课程的性质和任务本课程系自动化等专业有关计算机科学的选修专业课程。

通过学习,使学生在掌握计算机基础知识、程序设计概念、熟练上机操作及调试的基础上,加深对软件开发与应用中数据结构的应用的理解,熟练掌握抽象数据类型以及面向对象的方法组织、存储各种类型的数据,使学生掌握计算机软件开发的基本原理、方法、技术和工具。

使学生了解数据库技术的发展现状和前景,掌握数据库应用的一般知识,包括关系数据库的概念、设计方法和使用方法,能够完成有关数据库的简单应用,使学生掌握支持软件开发和维护的理论、方法、技术、标准以及计算机辅助工程和环境等知识,并通过实验(实践)达到灵活动用。

软件工程的概念,软件设计的基本方法,结构化软件设计等。

二、课程基本要求1.对重要的基本概念与基本原理了解其含义,能熟练运用基本原理解决问题;2、掌握重要数据结构的概念、使用方法及实现技术;3、能运用所学数据结构及其有关算法编制有关小型程序。

4、掌握数据库的基本概念,了解数据管理对数据库技术的需求、数据库技术在信息管理中的地位和作用、数据库技术的发展趋势。

5、能运用关系数据库的相关技术和方法分析数据库应用系统,在此基础上掌握E-R图、规范花理论、数据字典和数据流图及其在构建系统数学模型和应用功能中的作用。

熟悉和实践数据库管理系统共有的数据存取语言和标准接口SQL。

6、掌握软件工程的基本原理、概念与方法,主要包括软件系统的可行性研究、需求分析、总体设计、详细设计、编码、测试、维护、管理等方面的基本知识与方法。

7、掌握软件工程中的一些基本技术方法。

8、结合模拟案例,要求学生从实际中掌握瀑布型软件开发过程的基本方法和技巧,以及面向对象分析的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


设每只母鸡值3元,每只公鸡值2元,两只小鸡值1 元。现要用100元钱买100只鸡,设计买鸡方案。 假设买母鸡I只,公鸡J只,小鸡K只。
FOR FOR FOR {
I=0 TO 100 DO J=0 TO 100 DO K=0 TO 100 DO M=I+J+K N=3I+2J+0.5K IF ((M=100)and(N=100)) THEN OUTPUT I,J,K
FOR语句
FOR i=init TO limit BY step DO S FOR i=init TO limit DO S 当step>0时,功能等价于如下的IF语句: i=init loop:IF i≤limit THEN { S i=i+step GOTO loop }
当step<0时,功能等价于如下的IF语句: i=init loop:IF i≥limit THEN { S i=i+step GOTO loop }
5.其他语句 EXIT READ(或INPUT) WRITE(或PRINT,或OUTPUT)
1.3 算法设计基本方法 1. 列举法 根据提出的问题,列举所有可能的情况,并用问题 中给定的条件检验哪些是需要的,哪些是不需要的。
因此,列举法常用于解决“是否存在”或“有多少 种可 能”等类型的问题,例如求解不定方程的问题。
回溯法的步骤如下:
从第一行(即i=1)开始进行以下过程: 设前i-1行上的皇后已经布局好,即它们均互不攻 击。 现在考虑安排第i行上的皇后的位置,使之与前 i-1行上的皇后也都互不攻击。 为了实现这一目的,可以从第i行皇后的当前位置 q[i]开始按如下规则向右进行搜索:
①若 q[i] =n+1 ,将第i 个皇后放在第 1 列(即置q[i] =1 ),且回退一 行,考虑重新安排第i-1行上的皇后与前i-2行上的皇后均互不攻 击的下一个位置。此时如果已退到第 0 行(实际没有这一行),则 过程结束。 ②若q[i]≤n,则需检查第i行上的皇后与前i-1行的皇后是否互不攻击。 若有攻击,则将第 i 行上的皇后右移一个位置(即置 q[i] =q[i] + 1 ),重新进行这个过程;若无攻击,则考虑安排下一行上的皇后 位置,即置i=i+1。 ③若当前安排好的皇后是在最后一行(即第n行),则说明已经找到了n 个皇后互不攻击的一个布局,将这个布局输出(即输出q[i],i=1, 2,…,n)。然后将第n行上的皇后右移一个位置(即置q[n]=q[n] +1),重新进行这个过程,以便寻找下一个布局。
FUNCTION ROOT(a,b,eps,f) f0=f(a) WHILE (|a-b|≥ε ) DO { c=(a+b)/2; f1=f(c) IF (f1=0) THEN { ROOT=c ;RETURN } IF (f0*f1>0) THEN a=c ELSE b=c } c=(a+b)/2;ROOT=c RETURN
基本运算为x与数组元素的比较。
平均性态分析
最坏情况分析 W(n)=max{ti | 1≤i≤n+1}=n
算法是一组严谨地定义运算顺序的规则, 并且每一个规则都是有效的,且是明确的, 此顺序将在有限的次数下终止。
1.1.2 算法的基本要素 (1) 算法中对数据的运算和操作 ①算术运算 ②逻辑运算 ③关系运算 ④数据传输 (2) 算法的控制结构
1.2 算法描述语言 1.符号与表达式
loop:i=i+1 “设x是A中的最大项”(其中A是一个数组) “将x插入到L之中”(其中L是某个表) 关系运算符用=、≠、<、>、≤、≥ 逻辑运算符用and(与)、or(或)、not(非)
ELSE { i=i+1 IF (i>n) THEN { OUTPUT q[i](i=1,2,…,n) q[n]=E { q[i]=1 i=i-1 IF (i<1) THEN q[i]=q[i]+1 } GOTO loop RETURN
RETURN
#include "stdio.h" #include "math.h" #include "stdlib.h" void queen(int n) { int i,j,k,jt,*q; q=malloc(n*sizeof(int)); for (i=0; i<n; i++) q[i]=0; i=0; jt=1; printf("\n"); printf("%d queen problem\n",n);
运行结果如下:
2 5 8 11 14 17 20
30 25 20 15 10 5 0
68 70 72 74 76 78 80
2. 归纳法
通过列举少量的特殊情况,经过分析,最后找出一般的关系。
3. 递推
从已知的初始条件出发,逐次推出所要求的各中间结果和最 后结果。

I30 1 I 1 1I n 1 n 5n 5
#include "stdio.h" wrt(int n) { int k; for (k=1;k<=n;k++) printf("%d\n",k); return; }
输出自然数1到n的递归算法。 PROCEDURE WRT1(n) IF (n≠0) THEN { WRT1(n-1) OUTPUT n } RETURN #include "stdio.h" wrt1(int n) { if (n!=0) { wrt1(n-1); printf("%d\n",n);} return; }
} RETURN 总循环次数为1013
FOR I=0 TO 33 DO FOR J=0 TO 50-1.5I DO { K=100-I-J IF (3I+2J+0.5K=100) OUTPUT I,J,K } RETURN 总循环次数为
THEN
(51 1.5I) 894
I 0
33
#include "stdio.h" main() { int i,j,k; for (i=0; i<=33; i++) for (j=0; j<=50-1.5*i; j++) { k=100-i-j; if (3*i+2*j+0.5*k==100.0) printf("%5d%5d%5d\n",i,j,k); } }
新世纪计算机基础教育丛书
主编
谭浩强
计算机软件技术基础
第 1章 算

1.1 1.2 1.3 1.4
算法的基本概念 算法描述语言 算法设计基本方法 算法的复杂度分析
1.1 算法的基本概念
1.1.1 算法的基本特征 1.1.2 算法的基本要素
1.1 算法的基本概念 1.1.1 算法的基本特征 算法是指解题方案的准确而完整的描述。 1.能行性(effectiveness) A=1012,B=1,C=-1012 A+B+C=1012+1+(-1012)=0 A+C+B=1012+(-1012)+1=1 2.确定性(definiteness) 3.有穷性(finiteness) 4.拥有足够的情报
, n 30,21,20,1
4. 递归 将一个复杂的问题归结为若干个较简单的问题,然 后将这些较简单的每一个问题再归结为更简单的问 题,这个过程可以一直做下去,直到最简单的问题 为止。
例 编写一个过程,对于输入的参数n,依次打印输出自然数1到n。 PROCEDURE WRT(n) FOR k=1 TO n DO OUTPUT k RETURN
while(jt==1) { if (q[i]<n) { k=0; while ((k<i)&&((q[k]-q[i])* (fabs(q[k]-q[i]) -fabs(k- i)))! =0) k = k+1; if (k<i) q[i]=q[i]+1; else { i=i+1; if (i>n-1) { for(j=0;j<n;j++) printf("%5d",q[j]+1);
printf("\n"); q[n-1]=q[n-1]+1; i=n-1; } } } else { q[i]=0; i=i-1; if (i<0) { printf("\n"); free(q); return; } q[i]=q[i]+1; } } }
1.4 算法的复杂度分析
1.4.1 算法的时间复杂度 1.4.2 算法的空间复杂度
#include "stdio.h” #include "math.h” double root(a,b,eps,f) double a,b,eps,(*f)(); { double f0,f1,c; f0=(*f)(a); while (fabs(a-b)>=eps) { c=(a+b)/2; f1=(*f)(c); if (f1==0) return(c); if (f0*f1>0) a=c; else b=c; } c=(a+b)/2; return(c); }
1.4.1 算法的时间复杂度
指执行算法所需要的计算工作量
算法的工作量=f(n)
1. 平均性态(Average Behavior)
A(n)
xDn
p(x)t(x)
2. 最坏情况复杂性 (Worst-Case Complexity)
W (n ) max {t ( x )}
xD n

采用顺序搜索法,在长度为n的一维数组中查找为x 的元素。即从数组的第一个元素开始,逐个与被查 值x进行比较。
6. 回溯法 通过对问题的分析,找出一个解决问题的线索,然 后沿着这个线索逐步试探,对于每一步的试探,若 试探成功,就得到问题的解,若试探失败,就逐步 回退,换别的路线再进行试探。
例 求解皇后问题。
由n2个方块排成n行n列的正方形称为“n元棋盘”。 如 果两个皇后位于棋盘上的同一行或同一列或同一对 角线上,则称它们为互相攻击。 现要求找使n元棋盘上的n个皇后互不攻击的所有布 局。
相关文档
最新文档