程序猿编程必会基础和指南(上部)

编程/开发
372
0
0
2022-05-04

(请翻至文章末尾了解更多)

基础部分

1.1算法

考点1 计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。

1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。

2.算法的基本要素

(1)算法中对数据的运算和操作

一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。

在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。

(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。

描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。

考点2 1.算法的时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。

同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。即

算法的工作量=f(n)

程序猿编程必会基础和指南(上部)

2.算法的空间复杂度

算法的空间复杂度是指执行这个算法所需要的内存空间。

一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

1.2数据结构的基本概念

考点3 数据结构的定义

数据结构作为计算机的一门学科,主要研究和讨论以下三个方面:

(1)数据集合中个数据元素之间所固有的逻辑关系,即数据的逻辑结构

(2)在对数据元素进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构

(3)对各种数据结构进行的运算。

数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成

B=(D,R)

其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。

由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。

一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,选择合适的存储结构是很重要的。

考点4 线性结构与非线性结构

根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:

1)有且只有一个根结点;

2)每一个结点最多有一个前件,也最多有一个后件。

则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。

1.3栈及线性链表

考点5 栈及其基本运算

1.栈的基本概念

栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈是按照"先进后出"或"后进先出"的原则组织数据的。

2.栈的顺序存储及其运算

用一维数组S(1∶m)作为栈的顺序存储空间,其中m为最大容量。

在栈的顺序存储空间S(1∶m)中,S(bottom)为栈底元素,S(top)为栈顶元素。top=0表示栈空;top=m表示栈满。

程序猿编程必会基础和指南(上部)

栈的基本运算有三种:入栈、退栈与读栈顶元素。

(1)入栈运算:入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即top加1),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈"上溢"错误。

(2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即top减1)。当栈顶指针为0时,说明栈空,不可进行退栈操作。这种情况称为栈的"下溢"错误。

(3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,读不到栈顶元素。

考点6 线性链表的基本概念

在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。

链式存储方式既可用于表示线性结构,也可用于表示非线性结构

(1)线性链表

线性表的链式存储结构称为线性链表。

在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。

(2)带链的栈

栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。

疑难解答:在链式结构中,存储空间位置关系与逻辑关系是什么?

在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

【例2】在数据结构中,从逻辑上可以把数据结构分成_______。(考点3)

A)内部结构和外部结构 B)线性结构和非线性结构

C)紧凑结构和非紧凑结构 D)动态结构和静态结构

解析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系,所以答案为B)。

答案:B)

【例3】以下_______不是栈的基本运算。(考点5)

A)判断栈是否为素空 B)将栈置为空栈

C)删除栈顶元素 D)删除栈底元素

解析:栈的基本运算有:入栈,出栈(删除栈顶元素),初始化、置空、判断栈是否为空或满、提取栈顶元素等,对栈的操作都是在栈顶进行的。

答案:D)

【例6】设有一个已按各元素的值排好序的线性表(长度大于2),对给定的值k,分别用顺序查找法和二分查找法查找一个与k相等的元素,比较的次数分别是s和b,在查找不成功的情况下,s和b的关系是_______。(考点9)

A)s=b B)s>b C)s<b D)s≥b

解析:对于顺序查找,查找不成功时和给定关键字比较的次数为n+1。二分查找查找不成功的关键字比较次数为[log2n]+1。当n≥2时,显然n+1>[log2n]+1。

答案:B)

【例7】在快速排序过程中,每次划分,将被划分的表(或子表)分成左、右两个子表,考虑这两个子表,下列结论一定正确的是_______。(考点11)

A)左、右两个子表都已各自排好序

B)左边子表中的元素都不大于右边子表中的元素

C) 左边子表的长度小于右边子表的长度

D)左、右两个子表中元素的平均值相等

解析:快速排序基本思想是:任取待排序表中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子表,左子表元素的排序码均小于或等于基准元素的排序码,右子表的排序码则大于基准元素的排序码,然后分别对两个子表继续进行排序,直至整个表有序。

答案:B)

【例3】设树T的度为4,其中度为1、2、3和4的结点的个数分别为4、2、1、1,则T中叶子结点的个数为_______。(考点7)

解析:根据树的性质:树的结点数等于所有结点的度与对应的结点个数乘积之和加1。

因此树的结点数为1×4+2×2+3×1+4×1+1=16。叶子结点数目等于树结点总数减去度不为0的结点数之和,即16-(4+2+1+1)=8。

答案:8

【例1】结构化程序设计方法提出于_______。(考点1)

A)20世纪50年代 B)20世纪60年代

C)20世纪70年代 D)20世纪80年代

解析:20世纪70年代提出了"结构化程序设计(structured programming)"的思想和方法。结构化程序设计方法引入了工程化思想和结构化思想,使大型软件的开发和编程得到了极大的改善。

答案:C)

【例3】面向对象的开发方法中,类与对象的关系是_______。(考点2)

A)抽象与具体 B)具体与抽象

C)部分与整体 D)整体与部分

解析:现实世界中的很多事物都具有相似的性质,把具有相似的属性和操作的对象归为类,也就是说类是具有共同属性、共同方法的对象的集合,是对对象的抽象。它描述了该对象类型的所有对象的性质,而一个对象则是对应类的一个具体实例。所以本题正确答案为A)项

考点4 详细设计

考试链接:

考点4在笔试考试中,在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记过程设计包括哪些常用工具。

详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达表示工具算法和数据结构的细节。

详细过程设计的常用工具有:

(1)图形工具:程序流程图,N-S,PAD,HIPO。

(2)表格工具:判定表。

(3)语言工具:PDL(伪码)。

程序流程图的5种控制结构:顺序型、选择型、先判断重复型、后判断重复型和多分支选择型。

方框图中仅含5种基本的控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。

PAD图表示5种基本控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。

过程设计语言(PDL)也称为结构化的语言和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言,类似编程语言。

PDL可以由编程语言转换得到,也可以是专门为过程描述而设计的。

疑难解答:程序流程图,N-S图,PAD图的控制结构的异同点是什么?

相同点是三种图都有顺序结构,选择结构和多分支选择,并且N-S图和PAD图还有相同的WHILE重复型、UNTIL重复型;不同点是程序流程图没有WHILE重复型、UNTIL重复型而有后判断重复型和先判断重复型。

【例2】以下哪项是软件生命周期的主要活动阶段?_______(考点2)

A)需求分析 B)软件开发

C)软件确认 D)软件演进

解析:B)、C)、D)项都是软件工程过程的基本活动,还有一个是软件规格说明

【例5】以下哪个测试要对接口测试?_______。(考点6)

A)单元测试 B)集成测试

C)验收测试 D)系统测试

解析:检查对测试实施各阶段的了解,集成测试时要进行接口测试、全局数据结构测试、边界条件测试和非法输入的测试等,所以正确答案是B)。

【例7】以下哪些不是程序调试的基本步骤?_______(考点7)

A)分析错误原因 B)错误定位

C)修改设计代码以排除错误 D)回归测试,防止引入新错误

解析:程序调试的基本步骤:

(1)错误定位。从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因。

(2)修改设计和代码,以排除错误。

(3)进行回归测试,防止引进新的错误。

【例8】在修改错误时应遵循的原则有_______。(考点7)

A)注意修改错误本身而不仅仅是错误的征兆和表现

B)修改错误的是源代码而不是目标代码

C)遵循在程序设计过程中的各种方法和原则

D)以上3个都是

解析:修改错误原则:

(1)在出现错误的地方,很可能有别的错误;

(2)修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;

(3)注意修正一个错误的同时有可能会引入新的错误;

(4)修改错误的过程将迫使人们暂时回到程序设计阶段;

(5)修改源代码程序,不要改变目标代码。

文章篇幅有限,仅更新上部,下部会在2小时内更新,请持续关注:大千世界任君行