《计算机导论》 第8章 计算机软件

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

⑵汇编语言 汇编语言是计算机的第二代语言。 例如,把上述用机器语言书写的三条指令用汇编语言来表示,即成 为: LD B, 03 LD A, 04 ADD A, B 从英文字母的含义可知,第一条指令是把3送到寄存器B中(LD是 load的缩写)。同理,第二条是把4送到寄存器A中,第三条则是把B 中的数加到A中去。
算法+数据结构=程序
任务8 常见程序设计语言 [任务描述] 本任务了解一些常见的程序设计语言的特点。 [相关知识与技能] 1. 面向机器语言

⑴机器语言:机器语言是计算机的第一代语言。 例如,用机器语言写的某一段程序为: 0000 0110 0000 0011 0011 1110 0000 0100 0000 其中,每一条机器指令都是用二进制代码表示的。 以上由“0”、“1”组成的三条指令对Z80机器而言就是完成3加4的运算。
图8-8 队列的动态示意图

4. 树和二叉树 树(tree)是数据结构中的一种非线性结构。树在我们周围随 处可见。这里讨论的树结构形同大自然中的树,也有树根、树叶 和树枝。不同之处是:前者树根在上,后者树根在下。
图8-9 树结构示意图

如果树结构每个结点的孩子结点个数最多为2个,这种树就 是二叉树,如图8-10所示。

1. 顺序存储结构 在程序设计中,由若干个数据元素组成的线性结构称为线性 表。线性表是最简单和最常用的数据结构。 例如,考虑一副扑克牌中相同花色的13张红桃,为了要在程 序中引用每一张红桃,可以建立13个变量 Card1,Card2,…,Card13。每一张牌有确定的值,如“红 桃2”、“红桃9”等。
图8-10 二叉树 图8-11 图8-9树对应的二叉树
8.3 程序设计



任务7 初步认识程序设计 [任务描述] 本任务学习程序及计算机程序的基本概念。 [相关知识与技能]
本书中所说的程序指的是计算机程序,它实际上表示的 是一种处理事务的时间顺序和处理步骤。由于组成计算机程 序的基本单位是指令,因此,计算机程序就是按照工作步骤 事先编排好的、具有特殊功能的指令序列。 一个程序具有一个单一的、不可分的结构,它规定了某 个数据结构上的一个算法。于是有以下公式:
a.
4851+99=4950 4950+100=5050
b. c.
令s表示被加数(初始值为 0),令I表示加数(初始 值为1) 进行100次加法后结束,或 者当加数大于100时结束 S中存放计算结果
计算1+2+...+100的算法


下面的算法中S表示被加数,也表示累加和,I表示加数 步骤1:S ← 0; I ← 1 步骤2:若I小于等于100,则转向步骤3;否则,转向步骤6; 步骤3: S ← S + I; 步骤4: I ← I + 1; 步骤5:转向步骤2; 步骤6:S的值就是计算结果,算法结束。
图 作
图 8-6 单链表的删除操作


3. 栈与队列 对于一般的线性表,可以在任何位置上插入元素,也可以删 除任何位置上的元素。如果限定插入和删除都只能在线性表 的一端进行,这样的线性表称为栈;如果限定插入在线性表 的一端,删除在另一端,这样的线性表称为队列。 栈是一个按“后进先出”(last in first out)方式工作的 数据列表。表中允许进行插入、删除操作的一端称作栈顶; 另一端称作栈底。栈顶的位置是动态的,对栈顶当前位置的 标记称为栈顶指针。当栈中没有数据元素时,称为空栈。栈 的插入操作通常称为进栈或入栈;栈的删除操作则称为退栈 或出栈。
第8章 计算机软件


8.1计算机软件的概念 8.2算法与数据结构 8.3程序设计
8.1计算机软件的概念

任务1 初步认识计算机软件
[任务描述] 本任务学习软件、程序、文档资料等概念。 [相关知识与技能]
计算机系统主要由软件和硬件两大部分组成。硬件是计算机 系统的机器部分,即中央处理机、存储器及各种外围设备的 总称。软件则是为使计算机高效地工作所配置的各种程序及 相关的文档资料的总称。程序是经过组织的计算机指令序列, 指令是组成计算机程序的基本单位。文档资料包括:软件开 发过程中的需求分析、方案设计、编程方法等的文档及使用 说明书、用户手册、维护手册等。

图 8-3 线性结构:一维数组

2. 链式存储结构 每个结点除包含一个数据域外,还包含一个指针域,用以存 放下一个结点的指针,这样的链表称为单链表。图8-4是一个 具有附加头结点的单链表,指针变量h中存放的是附加头结点 的指针,附加头结点只用来存放第一个具有数据的结点的指 针,而第一个结点的指针域存放第二个结点的指针,如此下 去,最后一个结点的指针域要置空(NULL),以表示它位 于链表的尾部。
用C语言对算法描述如下: main() { int x, y;
[方法与步骤]
x = 1; y=2;
while(y<=100) { x = x + y; y=y+1; } printf(“%d”, x); }
4851+99=4950 4950+100=5050
图8-1 1+2+…+100 运算过程

任务4 用伪代码描述算法 [任务描述]


本任务通过案例进一步学习算法的概念,理解用伪代码进行 算法描述的方法。 案例8-3 用伪代码语言描述求1+2+…+100的算法。 [相关知识与技能] 伪代码是用文字(数字、字母)和符号来描述算法的,用伪 代码描述的算法结构清晰,格式紧凑,简单易懂。它为程序 员提供了以特定编程语言编写指令的模板。伪代码表明了程 序细节,在伪代码阶段检测并修复错误是简单。在校验并接 受伪代码之后,就可以把伪代码表示的指令转换成高级编程 语言。
案例8-2 用程序设计语言(C语言)描述计算1+2+…+100 的算法。 [相关知识与技能] 求解1+2+…+100的过程如图8-1所示,可得出以下规律:

规律
a.
1+2=3 3+3=6 6+4=10 10+5=15 ...
b.
c.
重复地进行相加运算 本次的和作为下一次 相加运算的被加数 加数有规律地变化着
用流程图表示算法

ANSI规定的一些常用的流程图符号
起/止点
输入/输出
处理
准备
预定义处理
判断
控制流
外接
内接
流程图的基本符号
计算1+2+...+100 0+1=1 1+2=3 3+3=6 6+4=10 10+5=15 ...
a. b.
c.
重复地进行相加运算 本次的和作为下一次 相加运算的被加数 加数有规律地变化着
4. 网络编程语言
网络编程语言是计算机的第五代语言。进入20世纪90年代,网络技术得到 了飞速发展,尤其进到21世纪后,Internet得到了更为广泛的应用。 Java语言(Java language)是一种简捷的、面向对象的、用于网络环 境的程序设计语言,由SUN公司(汉语简称“太阳公司”)于1995年5月正 式对外发布。
⑷可行性:算法中的每一条指令都必须是切实可行的,即原则 上可以通过已经实现的基本运算执行有限次来实现。 ⑸输出:一个算法应该有0个或多个输出,这些输出是与输入有 某种特定关系的量。

任务3 用程序设计语言描述算法
[任务描述] 本任务通过案例进一步学习算法的概念,理解用程序设计 语言(C语言)进行算法描述的方法。
2. 面向过程语言
⑴FORTRAN语言(公式翻译语言) ⑵ALGOL 60(算法语言) ⑶COBOL(用于事务处理的通用语言) ⑷BASIC(初学者通用符号指令码) ⑸PL/1(程序设计语言1) ⑹ PASCAL语言 ⑺Ada语言 ⑻C语言
3. 面向对象语言
⑴C++程序设计语言 ⑵Visual Basic程序设计语言
数值计算:求方程的根、求函数的定积分等。 非数值计算:查找、排序、图书检索、人事管理、文字处理等。


算法的设计师在设计一个算法后,不能只是自己明白,应该准 确清楚地将自己设计的解题步骤记录下来,或提供交流,或编 写程序供计算机执行。
[方法与步骤]

步骤1:先计算1+2,得到3 步骤2:将步骤1得到的结果加上3,得到6 步骤3:将步骤2得到的结果加上4,得到10 步骤4:将步骤3得到的结果加上5,得到15,计算结果为15


步骤1:S ← n+1 步骤2:若n是偶数,则 S ← (S × n) ÷2; 否则, S ← S× ( n-1) ÷2 + (n + 1) ÷2 步骤3:S的值就是计算结果,算法结束。
同一个问题可用不同的方法解决,即用不同算法解决同一个问题。 因此,就存在一个算法的比较(分析)和选择问题,比较的依据是算法 的效率。
控制器

中央处理器CPU 运算器 主机 ROM(只读存储器) 内存 RAM(读写存储器) Cache(高速缓冲存储器) 输入设备——键盘、鼠标、扫描仪等 外设 输出设备——显示器、打印机、音响等 外存——硬盘、软盘、光盘、闪存等 操作系统 系统软件 编译程序和解释程序 数据库管理 应用软件 各种字处理系统、各种软件包

任务6 初步认识数据结构 [任务描述]


本任务了解数据结构的基本概念和常用的几种数据结构,如 线性表、数组、树和二叉树以及图等。 [相关知识与技能]
数据结构(Data Structure)是计算机专业的一门重要专 业基础课,主要研究三部分内容:数据的逻辑结构、数据的 存储结构以及对各种结构进行的运算。
推广该算法,即修改算法中步骤2的100为n,可得到计算1+2+...+n的算法。

[方法与步骤] 用流程图对算法描述如图8-2所示。
开 始
X=1
Y=2
X=X+Y
Y=Y+1 N
Y>100 Y
图8-2 求1+2+…+100算法的流程图
结 束
计算1+2+...+n的另一种算法

算法思想:例如,计算1+2+...+100时先计算1+100, 2+99, ..., 49+52, 50+51, 然后用101×50即可得到 运算结果。类推,要计算1+2+...+n,只要知道有多少个 n+1,就可以得到计算结果。
[方法与步骤] 用伪代码对算法描述如下: begin y←2 x←1 while(y<=100) { x ← x+y y ← y+1 } print x end


任务5 用流程图描述算法 [任务描述]


本任务通过案例进一步学习算法的概念,理解用流程图进行 算法描述的方法。 案例8-4 用流程图描述求1+2+…+100的算法。 [相关知识与技能]
环境数据库、各种接口软件、工具组
硬件系统 计 算 机 系 统
软件系统
支撑软件
8.2算法与数据结构





任务2 算法及其描述 [任务描述] 本任务通过案例学习算法的概念及算法的描述。 案例8-1 求计算1+2+3+4+5的算法。 [相关知识与技能] 做任何事情都要有一个步骤,广义地讲,为解决一个问题而采 取的方法和步骤,就称为“算法”。 算法有两大类别:
按照同样的思路可写出计算1+2+...100的步骤, 可知是非常繁琐的。


[知识拓展] 瑞士著名计算机科学家尼克莱· 沃思(Niklaus Wirth)早 在1976年提出了这样一个公式: 算法+数据结构=程序 1974年,图灵奖的获得者、著名计算机科学家、算法大师 克努特(Donald E。 Knuth)说:“计算机科学是算法的 学习”。 可见,算法是计算机科学中非常重要的概念,是计算机学科 的核心内容,在程序编制、软件开发,乃至整个计算机科学 中都占有重要地位。
图8-7是一个栈的动态示意图,图中箭头代表当前栈顶的指针位置, 用top表示。
图8-7 栈的动态示意图

队列与栈非常相似,队列按“先进先出”(first in first out)方式工作。插入元素的那一端称为队尾,删除操作的 那一端称为队头。队列的插入操作通常称为进队列或入队列; 队列的删除操作称为退队列或出队列。

所谓算法(Algorithm),是对特定问题求解步骤的一种描 述,是指令的有限序列。描述算法需要一种语言,可以是自 然语言、数学语言或者是计算机语言。 一个算法一般具有下列5个重要特性: ⑴输入:一个算法应该有一个或多个输入。

⑵有穷性:一个算法必须在执行有穷步骤之后正常结束,而不 能形成无限循环。 ⑶确定性:算法中的每一条指令都必须有确切的含义,不能有 二义性。
相关文档
最新文档