《计算机软件技术基础教案》doc.docx
《《计算机软件技术基础教案》doc.docx》由会员分享,可在线阅读,更多相关《《计算机软件技术基础教案》doc.docx(14页珍藏版)》请在冰豆网上搜索。
《计算机软件技术基础教案》doc
TeachingPlan
For“BasisofSoftwareofComputer”
BvZhonahuaLiana
DepartmentofCommunicationEngineering,
SchoolofInformationEngineering,
Chang'anUniversity,Xi'an,710064,People's
RepublicofChina
DateofCreation:
September19,2010
TeachingProgram(教学大纲)
%1.本课程的性质和任务
本课程是通信工程专业的一门重要基础课程。
其任务为通过对软件工程、数据结构、操作系统和数据库等方面的基本概念及基本技术的学习和掌握,使学生对计算机软件有比较深入、系统的了解,为将来能够熟练地编写比较复杂的应用程序打下坚实的基础。
%1.本课程的基本要求
1.对能力培养的要求
1).软件开发方法和技术•.要求学生学习和掌握软件的基本概念,软件的研制过程、软件工程概述、软件设计方法、程序结构、算法描述工具,如流程图和算法语言。
2),数据结构•.要求学生学习和掌握数据结构的基本概念与原理、线性表、顺序存储结构和链式存储结构、算法实现、数组、栈、队列、树等。
3).操作系统•.要求学生学习和掌握操作系统的基本概念与原理、操作系统提供的接口、进程与进程管理、多道程序技术、同步与互斥、内存管理、设备管理、文件系统的原理、文件的使用。
4).数据库技术:
要求学生学习和掌握数据库的基本概念与原理、数据模型、关系数据库。
5).网络及数据安全技术・・要求学生学习和掌握网络及数据安全技术的基本概念与原理。
2.重点和难点
1、,本课程的重点:
第二章数据结构。
2).本课程的难点・.(a)线性链表;(b)树、图的遍历;(c)查
;«
找、索引和排序技术运算及其应用。
3.先修课程:
计算机基础;C语言。
%1.课程内容
1.理论知识:
(22学时)
1).计算机软件概述:
计算机软件的基本概念、程序设计技
术、数据结构的基本概念及术语、算法描述及算法分析初步。
2).线性表:
线性表的逻辑结构、线性表的顺序存储结构、线
性表的链式存储结构、
表的基本运算在特定存储结构中的实现
及应用。
3).栈和队列:
栈的定义、表示和实现、栈的应用、队列的定义、表示和实现、队列的应用。
4).>树的定义和基本操作、二叉树定义和表示、遍历二叉树和线索二叉树、树和森林、哈夫曼树及其应用。
5).串和图:
串及图的定义、表示和操作、存储结构图的遍历。
6).查找和排序:
查找和排序及其运算的基本知识和算法。
7).操作系统:
学习和掌握操作系统的基本概念与原理、操作系统提供的接口、进程与进程管理、多道程序技术、同步与互斥、内存管理、设备管理、文件系统的原理、文件的使用。
8).数据库•.学习和掌握数据库的基本概念与原理、数据模型、关系数据库、SQL语言。
9).计算机网络、
学习和掌握计算机网络体系结构、
网络互联
与互联网、网络安全及防火墙技术、计算机病毒及防治。
13,软件工程:
学习和掌握软件开发与技术,要求学生学习和掌握软件的基本概念,软件的研制过程、软件工程概述、软件
设计方法、程序结构、算法描述工具,
如流程图和算法语言。
2.课外作业:
加深对课内所学的理论知识的理解,锻炼分析问题和解决问题的能力。
3.上机实验:
围绕本课程学习的重点和难点,实践理论知识,上机完成题目(8学时)。
4.考核方式:
考核成绩主要根据:
学生平时听课、完成作业情况20%;上机实验、完成实验报告20%;期末考试成绩60%来综合评定。
课程教材及主要参考书
1.
r—p—
f=
课程教材:
[1].《计算机软件技术基础》第三版,沈被娜等编著,清华大
学出版社。
2.教学参考书:
[1].《计算机软件技术基础》,庞丽萍编,华南理工大学出版
社。
[2].《OperatingSystems-Designand
Implementation》,SecondEdition,AndrewS,Tanenbaum,AlbertS.Woodhull,清华大学出版社和PRENTICEHALL
[3].《SoftwareEngineering-APractitioner'sApproach》,FourthEdition,Roger,S.Pressman,机械工业出版社和McGraw-Hill.
[4].《DataStructureAlgorithms,andApplicationsinC++》,FirstEdition,SartajSahni,机械工业出版社和McGraw-Hill.
第1章算法
1.算法的基本概念
1).算法的-基本特征:
(1).能行性(effectiveness)
a).算法中的每一个步骤必须能够实现,例如在算法执行中,分母不能为零,实数范围内不能求一个负数的平方根等等;
b).算法执行的结果要能够达到预期目的,例如需要考虑计算精度的影响。
(2).确定性(definiteness)算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释或多义性。
(3).有穷性(finiteness)
算法必须能在有限的时间内昨晚,计算法必须能在执行有限个步骤后终止。
例如无穷级数的计算只能是根据精读要求取有限项的有穷计算;如果一个算法需要执行千万年,则失去了实用价值。
(3).拥有足够的情报(sufficientinformation)
通常算法中的各种运算总是要施加到各个运算的对象上,而这些对象又可能具有某种初始状态,这是算法执行的起点或依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法本身也就无法执行或导致执行有错。
一般来说,当算法拥有足够的情报时,此算法才是有效的,而当情报不够时,算法并不有效。
综上所述・・所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
2Y算法的基本要素・・
(1).对数据对象的运算和操作:
a).算术运算,力口、减、乘、除等运算;
b).逻辑运算,“与”、“或"、“非”等运算;
c).关系运算,“大于"、“小于”、“等于”、“不等于"等运算;
d).数据传输,主要包括赋值、输入、输出等操作;
注意•・计算机程序仅作为算法的一种描述;但通常不直接用计算机程序来描述算法,而是用别的描述工具(如流程图、专
门的算法描述语言,
甚至自然语言)来描述算法。
(2).算法的控制结构:
一个算法的功能不仅取决于所选用的操作,而且还与各操作之间执行顺序有关。
算法中各操作之间的执行顺序称为算法的控制结构。
一个算法一般可以用顺序、选择、循环3种基本的控制结构组合而成。
2.算法设计基本方法
1).列举法•.举例白鸡问题,画出搜索空间的立体示意图。
2).归纳法•.基本思想和本质(抽象)。
3).递推法:
本质(归纳法)。
4).递归法基本思想(逐层分解);基础(归纳)。
5).减半递推法・.又称为分治法。
“减半”是将问题的规模减半;“递推”是指重复“减半”。
举例:
矩阵相乘;二分法求实根。
6).刖朔法・・基本思想(“试"),处理复杂数据结构方面有广泛应用。
举例:
求解皇后问题,用方格图讲解。
3.算法的复杂度分析1).算法的时间复杂度•.所谓算法的时间复杂度,是指执行算
法所需要的计算工作量。
可用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数(seepage10)。
在同一问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用以下两种方法来分析算法的工作量:
(a)平均性态(averagebehaviour)分析
是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量(定义,seepage10)。
(b)最坏情况复杂性(worst・casecomplexity)分析
是指在规模为n时,算法所执行的基本运算的最大次数(上界),更具使用价值(定义,seepage10)。
两者的分析比较举例(例1.5,seepages10-11)。
注意:
本小节最后一段的论述(提及算法的工作量与输入无关时的情况)。
•算法的空间复杂度・.一般是指执行这个算法所需要的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
其中额外空间包括算法程序执行过程中的工作单元
以及某种数据结构所需要的附加存储空间(例如在链式结构中,除了要存储数据本身外,还需要存储连接信息)。
4.习题讲解及作业布置:
举例讲解:
1.1、
1.3o
第一次上机实验:
1.2、1.4、1.5三题中任选2题(三题难度系数分别为1.2)o
数据结构及其运算
1.数据结构的基本概念
数据结构作为计算机的一门学科,主要研究以下三个方面的问题:
(a).数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
(b).在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
(c).对各种数据结构进行的运算。
讨论以上各问题的主要目的是为了提高数据处理的效率。
所谓提高数据处理的效率,主要包括两个方面:
一是提高数据处理的速度;二是尽量节省数据处理过程中所占用的计算机存储空间。
1).两个实例・.(a).无序表和有序表的查找效率对比;(b).学生情况登记表。
1).数据结构的定义:
相互有关联的数据元素的集合。
(a).数据元素的含义;(b).前后件关系。
(1).数据的逻辑结构:
反映数据元素之间逻辑关系的数据结构。
两个要素:
一是数据元素的集合D;二是D上的关系Ro一个数据结构可以表示为B=(D,R)。
举例(seepage18)
更正:
page18中最后一行和page19中第一行:
Di应改为&
(2).数据的存储结构(物理结构):
数据的逻辑结构在计算机
存儒空间中的存放形式。
常用的存储结构:
顺序;链接;索引。
3).数据结构的图形表示:
直观
(1).需要理解的概念名词:
根节点;终端结点;内部节点;
(2).数据结构的基本运算:
插入和删除;
其它运算还有:
查找
分类合并分解复制和修改等。
(3).数据结构中根据各数据元素之间前后件关系的复杂度,一般将数据结构分为:
线性结构和非线性结构。
一般来说,如果一个非空的数据结构满足两个条件:
(a)有且只有一个根节点;(b)每个节点最多有一个前件,也最多只有一个后件。
则称该数据结构为线性结构,又称线性表。
此外:
在插入或删除任何一个节点后还应该满足上述条件。
2.线性表及其顺序存储结构
1).线性表及其运算:
(1).什么是线性表
(a).需要理解的概念名词:
记录;文件。
(b).非空线性表的结构特征(seepage22)。
(2).线性表的顺序存储结构
(a).基本特点:
(seepage22)。
(b).初始化线性表的顺序存储空间(seepage23),new和delete语句成对使用的习惯:
申请空间-释放空间。
(c).线性表的主要运算:
(seepage23)
(3).线性表在顺序存储下的插入运算:
例2.7
(a).插入前后两线性表中的元素关系(seepage24)
(b).平均移动元素数量的计算:
(0+1+...+n)/(n+1)=(n+1)(0+n)/2/(n+1)=n/2
(c).由于C++中数组下标从0开始,涉及到数组下标的变量均要减去K
(4).线性表在顺序存储下的删除运算
(a).删除前后两线性表中的元素关系(seepage26)
(b).平均移动元素数量的计算:
(0+1+...+n-1)/n=(n)(0+n-1)/2/n=(n-1)/2
更正•.page26中最后一行应改为:
…认为删除第(n+1)个元素,即无此元素。
(5).顺序表类
将顺序表的数据和基本操作(包括初始化、输出、插入和删除)封装成类。
更正・.page30中第二段应该为:
…如果顺序表非空,则调用…
公.栈及其应用
(1).什么是栈(stack):
一种特殊的线性表,其插入和删除都只在线性表的一端进行,即一端封闭,另一端开口。
概念名词:
栈顶(top);栈底(bottom);入栈(push);退栈(pop)
(2).栈的顺序存储及其运算:
seepage33-34
注意:
程序中数组下标减一的操作。
(3).顺序栈类
(4).表达式的计算
(4).递归的实现
0.队列及其应用•.
(1).什么是队列(queue):
一种特殊的线性表,允许在一端进行插入,而在另一端进行删除。
FIFOorLILO
概念名词:
排头指针(front);队尾指针(rear);入队运算;退队运算
⑵.循环队列及其运算:
seepage42-43
(3).循环队列类
(4).队列的应用:
a.分配工作;b.10缓冲区;c.加油模拟
3.线性链表及其运算
1).线性链表的基本概念:
(1).线性表的顺序存储结构的缺点:
a.插入或删除线性表中元素过程中需要移动大量数据元素;
b.存储空间不便于扩充;
c.不便于对存储空间的动态分配。
(2).链式存储方式中的存储结点构成:
a.数据域;b.指针域
(3).线性链表:
线性表的链式存储结构。
(4).基本概念:
a.Head指针;b.NULL或0;c.线性单链表;d.
线性双向链表;e.左指针(Llink);f.右指针(Rlink)
(3).线性链表类
(4).链栈及其基本操作:
a.初始化;b.入栈;c.退栈;d.读栈顶元素。
(5).链队及其基本操作:
a.初始化;b.入队;c.退队。
2).线性链表的基本运算:
(1).插入:
在指定元素的结点之前插入一个新元素。
(2).删除:
删除包含制定元素的结点。
(3).合并:
将两个线性链表按要求合并为一个线性链表。
(4).分解:
将一个线性链表按要求进行分解。
(5).逆转;(6).复制;(7).排序;(8).查找。
3).循环链表:
为了克服对空表与非空表运算的不统一问题。
(1).增加一个表头结点:
其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。
(2).最后一个结点的指针域不是空(NULL),而是指向表头结点。
即在循环链表中,所有结点的指针域构成了一个环状链。
3).多项式的表示与运算:
略
4.数组
※二维数组:
矩阵在程序设计语言中的表示;
※程序设计语言中的数组在计算机中是顺序存儒的。
当矩阵中的绝大部分元素为零时,采用一般的两维数组存储方式会浪费大量的存储空间,同时也做了大量不必要的运算。
1).数组的顺序存储结构:
(1).二维数组以行为主的顺序存储:
逐行、从左至右的顺序。
ADR(aij)=ADR(an)+[(i-1)n+j-1]L,where1WiWm,1WjWn
BASIC.C中的多维数组采用以行为主的顺序存储。
(2).二维数组以列为主的顺序存储:
逐列、从上至下的顺序。
ADR(ajj)=ADR(an)+[(j-1)m+i-1]L,where1WiWm,1WjWn
FORTORAN中的多维数组采用以列为主的顺序存储。
2).规则矩阵的压缩
(1).下三角阵(lowertriangularmatrix);
(2).对称阵(symmetricalmatrix);
(3).三对角阵(tridiagonalmatrix);
3).一般稀疏矩阵(sparsematrix)的表示
(1).三列二维数组:
a.矩阵的大小一总行数(numberofrows)和总列数(numberofcolumns);
b.非零元素的位置(行号和列号);
c.非零元素的值;
d.POS和NUM;
e.操作:
生成;输出;转置;相加;相乘。
(2).线性链表:
(3).十字链表:
(自学,不考)
5.树与二叉树
1).树的基本概念・.一种简单的非线性结构。
⑴.基本概念:
a.父结点;b.子结点;c.根;d.度;e.树的度;f.叶子结点
2),二叉树及其基本性质•.一种实用的非线性结构(binarytree)
(1).特点:
a.非空二叉树只有一个根结点;b.每个结点最多有两颗子树(称为左子树和右子树);
(2).基本性质:
1,2,3,4,5,6
(3).遍历:
a.前序遍历;b.中序遍历;c•后序遍历;
6.图(自学,不考)
7.习题讲解及作业布置:
举例讲解:
2.10o第一次作业:
2.5、26、2.
第二次实验:
{29、2.13}中选1题;{2・10、2・11、
212、2.14}中选1题(各题难度系数均为1.0)-
第二次作业:
{215、2.16>2.17}中选1题;{2.20、
2.21>2.22}
第3章查找与排序技术
1.基本的查找技术
※基本概念:
所谓查找是指在一个给定的数据结构中查找某个指定的元素。
通常根据不同的数据结构,采用不同的查找方法。
1).顺序查找•.顺序搜索。
从线性表的第一个元素开始,依次比较,结果为找到或失败。
平均搜索比较次数为n/2o以下两种情况下必须使用顺序查找:
a.无序表;b.链式存储结构。
2).对分查找:
适用于有序表。
3).分块查找•.索引顺序查找。
分块有序表的结构:
a线性表本身采用顺序存储结构;b.建立一个索引表对线性表的每个子表建立一个索引结点,每个结点包括两个域,一个是数据域用于存放对应子表中的最大元素值,一个是指针域,用于指示对应子表的第一个元素在整个线性表中的序号。
2.Hash表技术(自学,不考)
3.基本的排序技术
※基本概念:
所谓排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。
1).互换类(或交换类)排序方法•.
a.冒泡排序一基本思想:
通过相邻数据元素的交换逐步将线性表变为有序。
基本过程:
来回扫描线性表直至表空。
b.快速排序一基本思想:
分割线性表。
基本过程:
反复操作两步(见page186)。
2).插入类排序方法:
a.简单插入排序一基本思想:
无序序列的各元素依次插入一个有序表。
基本过程:
比较-插入。
b.希尔排序一基本思想:
无序序列分割为若干个小的子序列分别进行插入排序。
基本过程:
逐次减小分割增量直至1。
3).选择类排序方法:
a.选择排序一基本思想:
选择最小的元素排至最前。
基本过程:
重复选择排序。
b.堆排序一基本思想:
调整建堆。
基本过程:
重复交换堆顶元素和最后元素。
实例:
Page194中图3.9。
最坏情况下,需要比较的次数为O(nlog2n)o
4).其它排序方法:
a.归并排序
b.基数排序
3.二叉排序树及其查找
※定义:
二叉排序树是指满足-卜列条件的二叉树:
a.左子树上的所有结点值均小于根结点值;
b.右子树上的所有结点值均不小于根结点值;
c.左右子树也满足上述两个条件。
二叉排序树的插入(Page202)、删除(Page204)及查找
(Page206)运算。
4.作业布置:
第三次作业:
3.1、3.2、3.11
5.复习课:
作业及实验情况总结、强调考点重点。