软件技术基础教案全解读.docx
- 文档编号:17244904
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:21
- 大小:27.53KB
软件技术基础教案全解读.docx
《软件技术基础教案全解读.docx》由会员分享,可在线阅读,更多相关《软件技术基础教案全解读.docx(21页珍藏版)》请在冰豆网上搜索。
软件技术基础教案全解读
第一章内容提要
•计算机系统
•什么是软件:
软件一般被定义为程序及相关文档的总称
•什么是程序:
程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合
•什么是文档:
文档是利用各种方法对程序的不同层面的描述
•软件特征:
软件是一种逻辑的产品,是无形的,是脑力劳动的结晶
–软件产品质量的体现方式不同软件产品的成本构成不同软件产品的生命周期和失败曲线不同软件产品有静态、动态属性
•软件分类:
根据服务对象和服务功能的不同大致分为系统软件和应用软件两大类别
•什么是操作系统,操作系统是控制和管理计算机软硬件资源,合理的组织计算机工作流程以及方便用户使用计算机的大型程序。
•其主要作用:
为用户提供方便、友好的环境,为其他软件提供丰富的功能支持
–在计算机系统中,操作系统承担着控制和管理计算机系统的硬件、软件资源的作用
•操作系统五大管理的基本任务:
1,处理机管理2,存储器管理3,设备管理4,文件管理5,作业管理
•什么是算法:
算法是指解题方案的准确而完整的描述
•算法的基本特征:
(1)输入性:
具有零个或多个输入量
–
(2)输出性:
至少产生一个输出
–(3)可行性:
每条指令都应当在有限时间内完成,且能够实现并能达到预期目的
–(4)确定性:
每条指令的含义必须明确,无二义,任何条件下只有唯一的一条执行路径
–(5)有穷性:
每条指令的执行次数必须是有限次,任何情况下执行有限步骤就能中止
掌握算法描述方法,流程图法
•算法的复杂度
•数据结构
•结构:
数据元素之间的相互关系
•数据结构:
带有结构的数据元素集合及其运算
•数据结构分为逻辑结构和物理结构两种
•数据的逻辑结构:
数据元素之间的逻辑关系
•数据的物理结构:
数据元素及其逻辑关系在计算机中的存储
•数据结构实际上是数据的逻辑结构
•一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系是有可能不同的
•数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构
•在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息
•常用的存储结构有顺序、链接、索引、散列等存储结构
•)顺序存储结构
•顺序存储结构主要用于线性结构。
在这种存储方式中,把逻辑上相邻的数元素结点存储在物理上相邻的存储单元中,各结点之间的关系由存储单元的邻接关系来体现。
•
(2)链接存储结构
•在链接存储结构中,每个存储结点要有两部分组成:
一部分用于存放数据信息,另一部分用于存放指针。
•其中指针用于指向该结点的前件或后件
•线性表概念:
线性表是由数据元素构成的,而这些元素的。
有序序列即为线性表
•线性表由一组数据元素构成。
数据元素可以是简单项,或由若干个数据项组成
•线性表是由n(n≥0)个数据元素组成的一个有限序列:
(a1,a2,…,ai,…,an)。
其中ai(i=1,2,…,n)是属于数据对象的元素,通常也称其为线性表中的一个结点
线性表中结点的个数n称为线性表的长度。
当n=0时,称为空表。
反之称非空线性表
●非空线性表有如下一些结构特征:
¡①有且只有一个根结点a1,它无前件。
¡②有且只有一个终端结点an,它无后件。
¡③除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
在计算机中存放线性表,一般两种:
顺序存储(数组),链式存储(指针)
栈
●栈的基本概念
¡栈实际上也是线性表,只不过是一种特殊的线性表
¡栈(stack)是限定在一端进行插入与删除的线性表
¡往栈中插入一个元素称为入栈运算,从栈中删除一个元素(即删除栈顶元素)称为退栈运算
¡栈顶指针top动态反映了栈中元素的变化情况
队列
●队列的基本概念
¡队列(equeue)是指允许在一端进行插入、而在另一端进行删除的线性表
¡允许插入的一端称为队尾(rear)
¡允许删除的一端称为排头(front)
¡最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除
¡往队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算
¡特性:
先进先出(FIFO,FirstInFirstOut)
循环队列(CircularQueue
●在实际应用中,队列的顺序存储结构一般采用循环队列的形式
●所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,循环使用
线性链表
●线性链表的基本概念
¡线性表的链式存储结构称为线性链表。
¡计算机存储空间被划分为一个一个小块,每一小块占若干字节,通常称这些小块为存储结点
¡将存储空间中的每一个存储结点分为两部分:
一部分用于存储数据元素的值,称为数据域;另一部分用于存放下一个数据元素的存储序号(即存储结点的地址),即指向后件结点,称为指针域
●2.5.2线性链表的基本运算
¡①在线性链表中包含指定元素的结点之前插入一个新元素
¡②在线性链表中删除包含指定元素的结点
¡③将两个线性链表按要求合并成一个线性链表
¡④将一个线性链表按要求进行分解
¡⑤逆转线性链表
¡⑥复制线性链表
¡⑦线性链表的排序
¡⑧线性链表的查找
●线性单链表仅能顺序寻找,不灵活。
●在某些应用中,对线性链表中的每个结点设置两个指针:
¡一个称为左指针(Llink),用以指向其前件结点
¡另一个称为右指针(Rlink),用以指向其后件结点
●这样的线性链表称为双向链表
●2.5.3循环链表
●特点:
¡①循环链表的头指针指向表头结点
¡②在循环链表中,所有结点的指针构成了一个环状链
●在实际应用中,循环链表与线性单链表相比主要有以下两个方面的优点:
¡①在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点。
¡②由于在循环链表中设置了一个表头结点,因此,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
树与二叉树
●树的基本概念
¡树(tree)是一种非线性结构
¡在树结构中,每一个结点只有一个前件,称为父结点
¡在树中,没有前件的结点只有一个,称为树的根结点,简称为树的根。
¡在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。
¡没有后件的结点称为叶子结点
●一个结点所拥有的后件个数称为该结点的度。
所有结点中的最大度称为树的度
●树是一种层次结构,根结点在第1层;同一层上所有结点的所有子结点在下一层
●树的最大层次称为树的深度
●以某结点的一个子结点为根构成的树称为该结点的一棵子树。
在树中,叶子结点没有子树
满二叉树是指除最后一层外,每一层上的所有结点都有两个子结点完全二叉树是指这样的二叉树:
除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点
●二叉树及其基本性质
●二叉树(binarytree)是一种很有用的非线性结构。
二叉树具有以下两个特点:
¡
(1)非空二叉树只有一个根结点;
¡
(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
●二叉树具有以下几个性质:
¡性质1在二叉树的第k层上,最多有2k–1(k≥1)个结点
¡性质2深度为m的二叉树最多有2m–1个结点
¡性质3在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个
¡性质4具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分
¡性质5有n个结点的完全二叉树深度为[log2n]+1
●二叉树的遍历
¡二叉树的遍历是指不重复地访问二叉树中的所有结点。
若令L,D,R分别表示访问左子树、根结点、右子树,则,遍历二叉树有六种方法:
DLR、LDR、LRD、DRL、RDL、RLD
¡DLR、LDR、LRD最为常见的遍历策略
第三章复习
●顺序查找
●顺序查找的基本方法是:
●从线性表的第一个元素开始,依次将线性表中的元素与被查元素进行比较
●若遇到线性表中某位置上的元素与被查元素相等,则表示找到(即查找成功)
●若线性表中所有的元素与被查元素进行比较都不相等,则表示线性表中不存在需要找的元素(即查找失败)
●虽然顺序查找的效率不高,但在下列两种情况下也只能采用顺序查找。
●①线性表为无序表(即表中元素的排列是无序的)
●②采用链式存储结构的有序线性表
●有序表的对分查找
●先将线性表中的元素按值非递减进行排列,这样的线性表称为有序表。
●设有序线性表的长度为n,被查元素为x,则对分查找的方法如下。
●将x与线性表的中间项进行比较:
●若被查元素x与该线性表的中间项的值相等,则说明查到,查找结束;
●若被查元素x小于该线性表的中间项的值,则取线性表的前半部分作为子表(即取中间项以前的部分,而不再考虑线性表后半部分的元素)以相同的方法进行查找;
●若被查元素x大于该线性表的中间项的值,则取线性表的后半部分作为子表(即取中间项以后的部分,而不再考虑线性表前半部分的元素)以相同的方法进行查找。
Hash表技术
●Hash表的基本概念
●不需要比较而直接计算出记录所在地址,从而可直接进行存取的方法称为散列技术。
●以结点的关键字k为自变量,通过一个确定的函数关系f,计算出对应的函数值,把这个值解释为结点的存储地址,将结点存入f(k)所指的存储位置上找时再根据要查找的关键字用同样的函数计算出地址,然后到相应的单元里去取。
●用散列法存储的线性表叫散列表(HashTable)或称为哈希表,上述函数f称为散列函数或哈希函数。
f(k)称为散列地址或哈希地址(哈希码)。
通常散列表的存储空间描述为一维数组。
一般也将这个一维数组空间称为散列表。
线性表的排序技术
●排序是指将一个无序序列整理成按值非递减(递增)顺序排列的有序序列。
关键码(key):
通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。
内排序与外排序:
内排序是指在排序期间数据对象全部存放在内存的排序;外排序是指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内、外存之间移动的排序
互换排序
●互换排序是指借助数据元素之间的互相交换进行排序的一种方法。
●1.冒泡排序
●冒泡排序是通过相邻数据元素的交换逐步将线性表变成有序。
●排序的基本方法是:
●设待排序对象序列中的对象个数为n。
●最多作n-1趟,i=1,2,⋯,n-2。
在第i趟中顺次两两比较p[j]和p[j-1],j=n-1,n-2,⋯,i。
如果发生逆序,则交换p[j]和p[j-1]
2.快速排序对线性表分割,使得一部分的关键字均比另一部分的要小,则,可以对这两部分继续进行排序(继续分割),以达到整体有序
算法:
取表中表头项、中间项、表尾项中的中间值项暂存到T,将表头项移到中间值项所在位置。
分别设两个指针i,j指向表的头和尾,进行:
1)判断p(j)与T,并j=j-1,直到发现p(j) 2)i=i+1,并判断p(i)与T,直到发现P(i)>T,进行p(j)=p(i)操作。 以上两操作交替进行,直到i=j,进行p(i)=T操作,然后结束 ●3.3.2插入排序 ●插入排序是指将无序序列中的各元素依次插入到已经有序的线性表中。 ●1.简单插入排序 ●首先将第j个元素放到一个变量T中。 然后从有序子表的最后一个元素(即线性表中第j–1个元素)开始,往前逐个与T进行比较,将大于T的元素均依次向后移动一个位置,直到发现一个元素不大于T为止,此时就将T(即原线性表中的第j个元素)插入到刚移出的空位置上,有序子表的长度就变为j了。 ●3.3.3选择排序 ●1.简单选择排序 ●简单选择排序的基本方法是: 扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置);然后对剩下的子表采用同样的方法,直到子表空为止。 ●3.4.2二叉排序树查找 ●1.二叉排序树及其构造 ●二叉排序树是指满足下列条件的二叉树: ●①左子树上的所有结点值均小于根结点值; ●②右子树上的所有结点值均不小于根结点值; ●③左、右子树也满足上述两个条件。 ●根据二叉排序树的定义,构造二叉排序树的过程如下: ●依次读入给定序列中的每一个元素,然后进行如下处理: ●①若当前的二叉排序树为空,则读入的元素为根结点; ●②若读入的元素值小于根结点值,则将元素插入到左子树中; ●③若读入的元素值不小于根结点值,则将元素插入到右子树中。 ●二叉排序树查找 ●从二叉排序树的根结点开始与被查值进行比较: ●①若被查值等于根结点值,则查找成功,查找过程结束。 ●②若被查值小于根结点值,则到左子树中去查找。 ●③若被查值大于根结点值,则到右子树中去查找。 ●对于经常需要动态增长且经常需要查找的大线性表来说,采用二叉排序树这种结构是很方便的,它既有利于插入元素,也有利于查找。 第4章复习 ☐4.2数据描述与数据模型 ☐4.1数据管理技术的发展 ☐4.3数据库体系结构 ☐4.4关系代数 ☐4.5关系模式的规范化 ☐4.6数据库设计 ☐4.7关系数据库语言 4.1.2数据库管理系统 ⏹为了实现数据的共享,保证数据的独立性、完整性和安全性,需要有一组软件来管理数据库中的数据,处理用户对数据库的访问,这组软件就是数据库管理系统(DBMS)。 ⏹数据库管理系统具有以下功能 ⏹①定义数据库。 ⏹②管理数据库。 ⏹③建立和维护数据库。 ⏹主要程序模块可以划分成语言处理、系统运行控制程序、系统建立与维护程序三大部分 4.2数据描述与数据模型 4.2.1数据描述 ☐1、从信息层面看,信息世界中所涉及到的几个基本概念: ⏹信息世界中主要对象是实体(Entity) ⏹属性: 属性是指事物在某一方面的特性 ⏹实体: 若干属性的属性值的集合称实体 ⏹实体型: 表征某一类实体的属性的集合 ⏹实体集: 同一类型实体的集合。 ☐描述信息是为了更好地处理信息,计算机所处理的信息形式是数据。 因此,为了用计算机来处理信息,首先必须将现实世界中的客观事物转换为信息,然后将这些信息数据化。 ☐2、从数据层面看,数据世界中的对象是数据。 现实世界中的客观事物及其联系在数据世界中是用数据模型来描述的 ⏹数据项: field,也称字段,相应属性 ⏹记录: record是每一个实体所对应的数据 ⏹记录型: recordtype相应实体型 ⏹文件: file相应实体集 ⏹关键字: key是能够惟一标识一个记录的字段集 ☐3.关系模型 ☐关系模型是用二维表来表示实体本身及其相互之间的联系的,它是建立在数学理论基础上的。 ☐关系模型中一些术语: ⏹关系(Relation): 一个关系对应一张表 ⏹元组(Tuple): 或记录,表中的一行 ⏹属性(Attribute): 表中一列,给每一个属性起一个名即为属性名 ⏹主码(key): 码、关键字、主键,表中的某个属性组,他可以唯一确定一个元组,主码中属性成为主属性,反之称非主属性 ⏹域(Domain): 属性的取值范围 ⏹分量: 元组中的一个属性值 ☐关系模式: 对关系的一般描述,如n元关系可描述为: 关系名(属性1,属性2,…,属性n) ⏹如上表可描述为学生(学号,姓名、所在系) ⏹学生和课程之间的关系: 选课关系(学号,课程号,成绩) 数据库的三级模式及两级映射: 外模型(子模式)、概念模型和内模型 4.4关系代数 ☐集合运算和关系运算的统称关系代数 ☐关系代数的运算对象是关系,运算结果也是关系,关系代数用到的运算符主要包括四类: ⏹集合运算符: ∪(并),-(差),∩(交),X(笛卡尔积) ⏹专门的关系运算符: σ(选择),∏(投影),∞(连接),*(自然连接),÷(除) ⏹算术比较运算符: >(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于) ⏹逻辑运算符: ∧(与),∨(或),┐(非) 规范化与范式 ☐规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除时发生异常现象。 ☐关系数据库设计出来的关系模式要满足一定的条件。 ☐把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为范式(NormalForm)。 ☐满足最基本规范化要求的关系模式叫第一范式 ☐在第一范式中进一步满足一些要求为第二范式 ☐以此类推就产生了第三范式等概念。 ☐每种范式都规定了一些限制约束条件。 4.6数据库设计 ☐数据库设计是指在已有数据库管理系统的基础上建立数据库的过程。 ☐数据库的设计过程要经历三个大的阶段: ⏹1、可行性分析与研究阶段 ⏹整个设计过程的前期工作。 主要对已有的计算机系统和实际应用两方面做尽可能详细的调查,对数据库设计中的问题,建成以后的性能、效益以及为此所需要的投资等进行分析和研究,从而作出可行性报告。 ⏹2、系统设计阶段 ⏹主要包括概念设计、逻辑结构设计和物理结构设计三个步骤。 ⏹3、设计实施与系统运行阶段 ⏹对系统的正确性进行验证和总调试,并且正式启动系统运行的阶段。 ☐E-R(实体-联系,Entity-Relationship)。 ☐在E-R图中,用三种图框分别表示实体、属性和实体之间的联系: ⏹用矩形框表示实体,框内标明实体名; ⏹用椭圆状框表示实体的属性,框内标明属性名; ⏹用菱形框表示实体间的联系,框内标明联系名; ⏹实体与其属性之间以无向边联接,菱形框与相关实体之间也用无向边联接,并在无向边旁标明联系的类型。 E-R图转换成关系模式: 1)把每一个实体转换为一个关系 ☐分析各实体的属性,确定其主键,然后分别用关系模式表示 ⏹学生(学号,姓名,性别,年龄) ⏹课程(课程号,课程名) ⏹教师(教师号,姓名,性别,职称) ⏹系(系名,电话) ☐其中,有下划线者表示是主键。 (2)把每一个联系转换为关系模式 ☐联系转换的关系模式的属性集中包含两个发生联系的实体中的主键以及联系本身的属性: ⏹开课(系,课程号) ⏹选修(学号,课程号,成绩) ⏹拥有(系名,学号) ☐4.7.3数据查询 ☐SELECT语句的一般格式为: SELECT目标列 FROM基本表(或视图) [WHERE条件表达式] [GROUPBY列名1[HAVING内部函数表达式]] [ORDERBY列名2[次序]] ☐单表查询 ⏹ (1)选出指定列 ⏹从表中选出指定列的语句格式为: SELECT目标列FROM<表名>; 例如: SELECTSNO,SNFROMS ⏹ (2)带搜索条件(WHERE)子句的检索 ☐①比较条件 WHERE<表达式><比较算符><表达式>; 例如: 查询成绩高于85分的学生记录 SELECTSNO,CNO,SCOREFROMSC WHERESCORE>85 ☐多表查询 ⏹ (1)子查询: 嵌套在另一种SELECT,INSERT和UPDATE或DELETE语句中的查询语句。 ⏹ (2)连接查询: 把两个以上的表连接起来,使查询的数据从多个表中检索取得。 ⏹例如: 查找孙昂的所有选修课程,列出学号、姓名、课程号、课程名、成绩,涉及S表和SC表: S(SNO,SN,SEX,AGE,DEPT) SC(SNO.CNO,SCORE) SELECTS.SNO,SN,CNO,CN,SCORE FROMS,SC WHERE(S.SNO=SC.SNO) AND(S.SNO=‘孙昂’) ☐.附加子句 ⏹ (1)内部函数 例如: 求学号为S1学生的总分和平均分。 SELECTSUM(SCORE)ASTotalScore, AVG(SCORE)ASAveScore FROMSCWHERE(SNO='S1') 例如: 求选修C1号课程的最高分、最低分及之间相差的分数 SELECTMAX(SCORE)ASMaxScore, MIN(SCORE)ASMinScore, MAX(SCORE)-MIN(SCORE)ASDiff FROMSCWHERE(CNO='C1') 第6章复习 ⏹6.1编译程序的工作过程 ⏹6.2状态矩阵法的编译过程 ⏹6.3词法分析 ⏹6.4语法分析 ⏹6.5中间语言及目标语言 ⏹编译原理—设计和构造编译程序的基本原理和基本方法。 ⏹编译程序--将高级程序设计语言翻译成逻辑上等价的低级语言(汇编语言,机器语言)的翻译程序 ⏹译程序的源语言(源程序) ⏹编译程序的目标语言(目标程序) ⏹编译程序的实现语言 6.1编译程序的工作过程 ⏹为了将源程序翻译成目标程序,一般都要包括以下几个步骤: ⏹①输入源程序。 ⏹②对以机内码表示的源程序进行词法分析,辨认出一个个单词符号。 ⏹③根据源语言的语法规则进行语法分析。 ⏹④在实际运行之前,通常还要对目标程序的各部分进行连接装配。 对于块结构的语言,通常是进行分块编译,分别得到半目标程序,最后可用装配程序组装成一个完整的程序。 ⏹推导与归约 对于文法G,有规则U: : =u,x,y是V上的符号串,若V上有另外两个符号串v,w满足: v=xUy,w=xuy,则称v直接推导到w,记作v⇒w也称w直接归约到v 对于文法G,如果存在一个直接推导序列 v=u0⇒u1⇒u2⇒…⇒un=w 则称v推导出w,或称w归约到v,分别记为: v⇒ww⇒vn称为推导长度 例如: 利用无符号整数文法推导出数字串25 E: : =A A: : =AB|B B: : =0|1|2|3|4|5|6|7|8|9E⇒A⇒AB⇒BB⇒2B⇒25 6.4语法分析 ⏹语法分析的任务是分析给定句子的语法结构并判断它是否为给定文法的正确句子。 ⏹语义分析的主要任务是根据语法结构分析其含义,并用某种机器内部表示形式表示出来,或直接生成目标指令,简单说就是分析语法结构含义,表示成中间语言或生成目标指令。 ⏹语法分析方法多种,常用的有递归子程序方法、运算符优先级法、状态矩阵法、LL(k)方法、LR(k)方法等,归纳起来大体分为两种: 自顶向下分析方法和自底向上分析方法 ⏹自顶向下分析: 给定一个待分析的句子,该分析方法从识别初始态开始,逐步推导一直到出现给定句子 E: : =A A: : =AB|B B: : =0|1|2|3|4|5|6|7|8|9E⇒A⇒AB⇒BB⇒2B⇒25 ⏹自底向上分析是从符号串开始,从左到右扫描,并逐步规约出初始状态。 ⏹例如: 设有文法G,判断字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 教案 解读
