计算机软件技术基础_第1页
计算机软件技术基础_第2页
计算机软件技术基础_第3页
计算机软件技术基础_第4页
计算机软件技术基础_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

硬件是计算机系统的基础,但没有软件的计算机是无法工作的。事实上,计算机能广泛地应用于各个领域完全是因为有了丰富的计算机软件,人们为了用计算机解决各类问题,有针对性地开发了各种各样的软件。本章将学习计算机软件和计算机软件开发的相关知识,重点掌握一些基本概念,如什么是软件,程序设计语言的分类及构成、软件开发过程等。5.1计算机软件系统5.1.1软件的概念与特点

软件是计算机系统中与硬件相互依存的另一部分,它由程序、数据及其相关文档三部分组成。①程序:按照事先设计的功能和性能要求执行的计算机指令序列。②数据:使程序能够正常操纵信息的数据结构。③文档:与程序开发、维护和使用有关的资料。

软件的特点:①抽象性②复杂性③维护长期性④高成本性5.1计算机软件系统5.1.2软件的分类

按软件功能划分:①系统软件:能与计算机硬件紧密配合在一起,使计算机系统的各个部件、相关的软件和数据协调、高效地工作。②支撑软件:又称为软件开发环境。是介于系统软件和应用软件之间的中间层软件,是支撑各种软件的开发与维护的软件。③应用软件:针对特定领域开发,为特定目的服务的软件。另外,软件还可以按工作方式、服务对象进行划分。5.1计算机软件系统

计算机软件系统中所包括的各种软件之间的关系不是并列的,而是有一定的层次关系。5.1.3计算机软件的层次结构5.2程序设计语言简单来讲,程序设计就是用计算机语言编写程序。程序=算法+数据结构

编写计算机程序时使用的语言称为程序设计语言(ProgrammingLanguage),程序设计语言分为机器语言、汇编语言和高级语言三种。

对数据操作的步骤如何表示、组织和存储数据5.2程序设计语言5.2.1机器语言

机器语言是指由二进制代码按照一定规则组成的命令集合,也称机器指令集合。机器语言是唯一能被计算机直接理解和执行的程序设计语言,属低级语言。机器语言的一条语句就是一条指令,机器指令的格式如下:操作码操作数例如:计算256+16结果的机器代码如下(以十六进制表示):B80001;把256放入累加器AX051000;把16与AX中值相加,结果存入AX5.2程序设计语言5.2.2汇编语言

为了解决机器语言难记忆、可读性差的缺点,人们把机器指令中的操作码和操作数用英文助记符来表示,这种助记符语言称为汇编语言,也属于低级语言。MOVAX,256;把256放入累加器AXADDAX,16;把16与AX中值相加,结果存入AX

汇编语言编写的程序属于符号程序,计算机不能直接识别和执行,必须翻译成计算机能识别的机器指令后才能在计算机上执行,其翻译过程如下:5.2程序设计语言5.2.3高级语言

高级语言是一类程序设计语言的统称,它采用接近人类自然语言的表示方法,并遵循一定的语法规则来编写程序。实现求整数的绝对值的程序段:intintVar,result;scanf(“%d”,&intVar);if(intVar>=0)result=intVar;elseresult=-1*intVar;printf(“%d的绝对值是:%d”,intVar,result);5.2程序设计语言高级语言程序的翻译和执行过程如下:

高级语言编写的程序也属于符号程序,不能直接在计算机上执行,必须通过程序的翻译才能执行,其翻译成指令代码的方法主要有编译和解释两种。5.2程序设计语言5.2程序设计语言5.2.4程序设计语言的构成程序设计语言的构成主要包括以下几个方面:

(1)数据类型包括基本数据类型和构造数据类型两大类。

基本数据类型:是由程序设计语言内置的,其特点是不能再分解为其它的类型。在主流的程序设计语言中一般包括:整数类型、实数类型、字符类型、布尔类型等。构造数据类型:是由基本数据类型按照某种方式组合构成的。常见的构造数据类型有:数组类型、记录类型(结构体)等等。(2)运算符和表达式

在程序设计中使用表达式可完成各种各样的运算。表达式通常包括:常量、变量、运算符和函数调用等。5.2程序设计语言(3)语句

程序是对计算机要执行的操作的描述,高级语言源程序的基本组成单位就是语句。语句按功能可以分为两类:①用于描述操作运算的操作运算语句,如赋值语句;②用于控制操作运算的流程控制语句,如分支控制语句。(4)控制结构①顺序结构,按照语句出现的先后顺序依次执行。②分支结构,根据给定条件判断,决定程序执行的顺序。③循环结构,循环(重复)是计算机解题的一个重要特征。5.2程序设计语言(5)输入/输出

高级程序设计语言中通常以函数或语句的形式提供输入输出操作。现代高级程序设计语言通常都提供通过窗口、文本框、按钮、组合框、图表等图形组件进行输入输出。(6)子程序

子程序就是将需要重复使用的程序段或分解的子问题编写为一个逻辑上独立的子程序,当程序中需要使用子程序时,再对其进行调用。使用子程序的好处是降低了程序的复杂度,使程序的结构清晰,提高了程序设计的效率。一般程序设计语言中有两种子程序:函数(Function)和过程(Procedure),它们的主要区别是函数有返回值,而过程不能有返回值。C语言举例:顺序题目:用*号输出字母C的图案。

1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。

2.程序源代码:

#include"stdio.h"#include"conio.h"main(){clrscr();printf("HelloC-world!\n");printf("*****\n");printf("**\n");printf("**\n");printf("**\n");printf("**\n");printf("**\n");printf("*****\n");getch();}C语言举例:选择题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

intx,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("smalltobig:%d%d%d\n",x,y,z);

getch();

}

C语言举例:循环题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

inti,j,k,n;

printf("'waterflower'numberis:");

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%-5d",n);

}

getch();

}

编写程序,求s=s1+s2+s3+s4的值,其中:

s1=1+1/2+1/3+…+1/50s2=1+1/2+1/3+…+1/100s3=1+1/2+1/3+…+1/150s4=1+1/2+1/3+…+1/200分析:解决此问题可以先编写一函数,用于计算1+1/2+1/3+…+1/n的值,然后,通过调用该函数来求s的值。C语言举例:子程序floatcount(intn){floatsum=0;inti;for(i=1;i<=n;i++)sum+=1.0/i;returnsum;}main(){floats;s=count(50)+count(100)+count(150)+count(200);printf(“s=%8.2f\n”,s);}5.3数据结构5.3.1什么是数据

数据是对客观事物的描述,对计算机来说,数字、字符、图形、色彩、声音等都是数据。数据元素是组成数据的基本单位。一个数据元素可以是一个单个数据也可以由若干个数据项组成,数据项是数据不可分割的最小单位。

例:公司员工数据的存储(一个员工信息可以构造一个一维数组的数据结构)姓名性别出生日期职位工资张军男1975.5.6总经理2080.00李芳女1980.12.12项目经理1800.00王明男1979.4.19程序员1500.00刘杰男1974.6.23系统分析员1750.005.3数据结构5.3.2数据结构研究的内容

数据结构指的是数据间的相互关系,即数据的组织形式。数据结构研究的内容包括数据的逻辑结构、物理结构和数据结构运算三个方面:(1)数据的逻辑结构

数据元素之间的逻辑上的相互关系称为数据的逻辑结构,它描述数据的组织形式。元素之间是一对一关系例如:公司员工数据表中每个成员关系元素之间是多对多关系例如:华农与周边地区的位置关系元素之间是一对多关系例如:一对夫妇和他们的全部子孙元素之间是松散关系例如:自然数的全体5.3数据结构(2)数据的物理结构

数据在计算机存储器中的存储方式,称为数据的物理结构或存储结构。它包括:①顺序存储方式,把逻辑上相邻的数据元素存储在物理上相邻的存储单元中。②链式存储方式,每个结点分为数据域和指针域两部分,数据域存储数据元素,指针域存储与该结点具有逻辑关系的结点的地址。③索引存储方式,数据元素存放在一个不连续存储区域里。再建一个附加的索引表,索引表中的第i项表示第i个元素的存储地址。④散列存储方式,数据元素均匀地分布在连续的存储区域里,用散列函数计算各结点的存储地址。5.3数据结构

例如:线性表是一种逻辑结构,若采用顺序存储方式,可称其为顺序表;若采用链式存储方法,可称其为链表。

右图为某学生各科成绩表分别采用顺序和链式存储的情形。前者存储在一片连续空间,后者则存储在非连续空间。5.3数据结构(3)数据结构的运算

数据结构的运算是定义在数据逻辑结构上的操作,如插入、删除、查找、排序等。每一种数据结构都有一个运算及其规则的集合。

比如一张表格,可能需要进行查找、增加、修改、删除记录等,进行这样的操作已不是加减乘除这样一些算术运算,在数据结构中,运算常常涉及算法的问题。

5.3数据结构5.3.3常见数据结构介绍(了解)(1)数组

数组属于线性数据结构,是在计算机内存中使用一组连续的存储单元保存数据类型相同的一组数据,这些数据拥有相同的变量名,称为数组名。5.3数据结构(2)链表

链表(LinkedList)是采用链式存储的线性表。线性链表的结点由数据域和指针域两个部分组成,数据域存储数据元素,指针域存储一个指向直接后继结点的指针。5.3数据结构(3)二叉树

二叉树是一种常用的非线性数据结构,其定义为:二叉树是一个结点的集合,该集合或者为空,或者满足下面两个条件:①有且仅有一个称为根的结点。②其它结点分为两个互不相交的集合T1、T2。T1和T2均为二叉树,并且在T1和T2之间存在顺序关系(T1在T2之前),分别称为根的左子树和右子树。二叉树的5种基本形态5.3数据结构二叉树的存储结构5.3数据结构遍历二叉树

遍历二叉树是非常重要的一种运算。“遍历”的含义是对结构中的每个数据都访问一次且仅访问一次。可以有三种访问路径:①前序遍历:访问根结点;前序遍历左子树;前序遍历右子树②中序遍历:中序遍历左子树;访问根结点;中序遍历右子树③后序遍历:后序遍历左子树;后序遍历右子树;访问根结点①前序遍历:ABDEFGC②中序遍历:DBFEGAC③后序遍历:DFGEBCA5.4算法5.4.1算法的基本概念

算法是指为解决给定问题而需实施的有穷操作步骤的描述。5.4.2算法的描述方法(1)用自然语言描述算法(2)用流程图描述算法(3)使用伪代码描述算法(4)用程序设计语言描述算法

算法的描述方法有以下四种:5.4算法5.4.3查找算法(了解)

查找(Searching)也称检索,设表F中有n个结点,Ki是记录Ri的关键字,现给定关键字K,在F中寻找关键字与K相同的结点R的过程,叫做查找。(1)顺序查找

顺序查找是线性表的最简单的查找算法。它是用给定的值与表中的每个结点的关键字逐个进行比较运算,若找到相等的关键字则查找成功,否则查找失败。顺序查找算法的优点是适用范围广,对线性表中结点逻辑次序无关,即不要求按关键字排序。对线性表的物理存储结构也没有要求,顺序存储与链式存储均可。5.4算法(2)折半查找

折半查找的基本思想是:先取表的中间位置的结点关键字与所给定的关键字进行比较,如果相等,则查找成功。如果给定值比该结点的关键字大,则所找结点在表的后半部分;否则所找结点在表的前半部分,然后再把选定的部分表的中间结点的关键字与给定关键字进行比较。如此反复进行,直到查找成功或者查找失败为止。5.4算法例:5.4算法5.4.4排序算法(了解)

排序(Sort)是数据处理中的一种重要运算,它的功能是将一组数据元素(或记录)从任意序列排列成一个按关键字排序的序列。按照排序过程中涉及的存储器的不同将排序分为内部排序和外部排序两类,其中内部排序是指整个排序过程都在内存中进行的排序。5.4算法(1)直接插入排序

算法的基本思想如下:①开始时,把第一个记录看成是已经排好序的子序列,这时子序列中只有一个记录;②从第二个记录起到最后一个记录,依次将每个记录与前面子序列的记录按关键字比较,确定记录插入的位置;③将记录插入到子序列中,子序列记录个数加1,直至子序列长度与待排序列长度相等时结束。5.4算法(1)直接插入排序5.4算法5.4.4排序算法(了解)(2)冒泡排序冒泡排序的算法思想是:①将第n个记录的关键字与将第n-1个记录的关键字进行比较,若为逆序则将两个记录进行位置的交换,否则保持原来顺序;②将第n-1个记录的关键字与将第n-2个记录的关键字进行比较;③重复上述排序过程,直到全部关键字均比较一遍;④上面三步的比较交换过程称为第一趟排序,其结果是使关键字最小的记录被交换到了第1个记录的位置,完成一趟排序;⑤第二趟排序从第n个记录到第2个记录进行同样的操作,结果是使关键字次小的记录被交换到了第2个记录的位置;依次类推,第i趟排序是从第n个记录到第i个记录依次比较交换。5.4算法(2)冒泡排序main(){inta[11],i,j,t;printf(“input10numbers:\n”);for(i=1;i<11;i++)scanf(“%d”,&a[i]);printf(“\n”);for(j=1;j<=9;j++)for(i=1;i<=10-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(“%Thesortednumbers:\n”);for(i=1;i<11;i++)printf(“%d”,a[i]);}给数组a提供初值a[i]与a[i+1]交换输出a数组5.5软件工程简介5.5.1软件工程提出

早期,在软件开发过程中出现了许多严重阻碍软件发展的问题,主要表现在以下几个方面:①软件开发无计划性。②软件开发过程无规范。③软件产品无评测手段。1990年电气电子工程师协会(IEEE)给出了软件工程的一个定义:“软件工程是把系统化的、规范的、可度量的方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论