软考程序员常考知识点汇总Word文档下载推荐.docx
- 文档编号:21865959
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:14
- 大小:25.89KB
软考程序员常考知识点汇总Word文档下载推荐.docx
《软考程序员常考知识点汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软考程序员常考知识点汇总Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
|<
字段>
][RANGE<
表达式2>
表达式3>
]]与READ合用,才能修改变量,一个READ可以修改前面多个@…GET的变量值,通常SAY只是提示作用。
定义文本编辑区
<
EDIT<
SIZE<
数值表达式1>
,<
数值表达式2>
[FONT<
]][SCROLL]通过READ编辑,主要是对备注字段起作用。
清屏命令
CLEAR清除整个屏幕
行1,列1)[CLEAR|CLEARTO<
行2,列2>
]清除屏幕局部区
3.分支语句IF<
条件>
命令序列1>
[ELSE
命令序列2>
]
ENDIF
多分支选择语句DOCASE
CASE<
条件1>
条件2>
条件N>
命令序列N>
[OTHERWISE
命令序列N+1>
ENDCASE
4.循环结构程序设计
DOWHILE<
[LOOP]
[EXIT]
ENDDO
FOR<
循环变量>
=<
初值>
TO<
终止>
[SETEP<
步长>
命令序列>
ENDFOR
SCAN[<
范围>
][FOR<
][WHILE<
ENDSCAN
5.过程及自定义函数
(1)过程PROCEDURE<
过程名>
[PARAMETERS<
形参表>
过程体>
RETURN[TOMASTER]
其中[TOMASTER]在嵌套中使用,含有[PARAMETERS<
]为有参过程。
(2)过程文件建立PROCEDURE<
过程名1>
过程体1>
RETURN
…………
过程文件的打开和关闭SETPROCEDURETO[<
过程文件名>
CLOSEPROCEDURE
(3)过程的调用DO<
[WITH<
实参表>
(4)变量的作用域
全局变量PUBLIC<
内存变量表>
局部变量:
未经PUBLIC定义的
PRIVATE<
PRIVATEALL[LIKE<
通配符变量名>
|EXCEPT<
]隐藏指定的内存变量,避免同名变量
(5)定义自定义函数FUNCTION<
函数名>
函数体>
RETURN<
自定义函数的调用:
函数名([<
])
参数传递方式SETUDFPARMSTO[VALUE|REFERENCE]若选用VALUE为值传递(默认),不会改变变量的值,若REFERENCE,则为引用方式。
数据库的基本操作
库文件结构建立CREAT[<
文件名>
|?
]其中A-J作为工作区代码
在把记录输入完后,按CTRL+W或CTRL+END存盘。
追加记录APPEND[BLANK]
记录显示LIST/DISPLAY[<
][FIELDS<
字段名表>
][OFF][TOPRINTER/FILE<
数据库文件打开USE[<
库文件名>
][ALIAS<
别名>
关闭数据库文件:
关闭当前工作区打开的数据库文件USE
关闭当前打开的所有的库文件CLOSEDATABASES
数据库文件结构的显示:
LIST/DISPLAYSTRUCTURE[TOPRINTER/TOFILE<
数据库文件结构的修改:
MODIFYSTRUCTURE*不能同时修改字段名和宽度
指针的移动
绝对移动
1.GO/GOTO[RECORD]<
数值表达式>
[IN<
工作区号>
/<
文件别名>
2.GO/GOTOTOP/BOTTOM[IN<
工作区>
相对移动SKIP[<
][IN<
插入记录INSERT[BEFORE][BLANK]
删除记录DELETE[<
SETDELETEDOFF/ON(取OFF,逻辑删除无效,反之,则有效)
恢复逻辑删除RECALL[<
物理删除PACK
理删除所有记录ZAP(只有结构无记录)
记录的修改
编辑修改EDIT.CHANG[<
[条件]
浏览编辑修改BROWSE
替换修改REPLACE[<
]<
字段1>
WITH<
……
数据库文件的排序与索引
排序:
SORTTO<
ON<
[/A][/C][/D][,<
字段2>
………[FIELDS<
][FOR……
关键字只能是C,N,D.*/A(升序,默认)/D(降序)/C(不区分大/小写)
需要临时文件做周转
索引:
INDEXON<
关键字表达式>
索引文件名>
[FOR……][UNIQUE][ADD…]
备注字段不能作为关键字
字段索引只能是C,N,D,多字段索引只能是C
UNIQUE进行唯一索引(在记录相同,只取第一个)
未指定ADDITIVE,关闭先打开的索引文件,反之,就不关闭。
索引文件的打开USE<
INDEX<
索引文件名表>
(允许打开25个)SETINDEXTO<
索引文件的关闭SETINDEXTO/CLOSEINDEX
指定主索引SETORDERTO[<
数据查询
顺序查询:
LOCATE[<
[FOR<
]它总是把指针定位到第一个满足条件的记录上,想继续查找,则用CONTINUE
索引查询:
FIND<
字符串>
数值常数>
当设置为SETEXACTOFF时,查询时不需要精确比较,反之,则需要精确比较。
SEEK<
它可以查询包括字符型,数值型,日期型和逻辑型在内的各种数据类型,也可以是内存变量或者是表达式
数据统计
计数命令COUNT[<
][TO<
内存变量名>
求和命令SUM[<
][<
/TOARRAY<
数组>
求平均值命令AVERAGE[<
分类汇总命令TOTALON<
关键表达式>
分类库文件名>
[<
]要求首先对库文件进行排序或索引
数据库文件的复制
(1)库文件的复制COPYTO<
]将当前库文件中的数据(包括结构)一起复制到指定的库文件中。
(2)库文件结构的复制COPYSTRUCTURETO<
新库文件名>
[FIELDS<
(3)库文件与文本数据文件的转换复制
库文件复制成文本数据文件COPYTO<
数据文件名>
SDF.DELIMITED[WITH<
定界符>
/BLABK][<
文本数据文件中的数据复制到库文件APPENDFROM<
/BLABK][FOR<
(4)任何类型文件的复制COPYFILE<
源文件名>
目标文件名>
不能复制已经打开的库文件,且<
必须包括主文件名和扩展名。
多重数据库文件的操作
(1)最多达225个工作区,且前十个工作区1~10还规定了别名A~J.
(2)工作区选择命令SELECT<
,从当前工作区访问其它工作区打开库文件中的某个字段时,要表示为别名。
字段名或者别名->
字段名
(3)库文件之间的关联SETRELATIONTO[<
INTO<
[ADDITIVE]其中若选<
,而被关联库没有建立索引,则作为记录号进行关联。
指定[ADDITIVE]保留以前关联。
SETRELATIONTO将删除当前工作区与所有其他工作区连接
(4)库文件的连接JOINWITH<
(5)库文件的更新UPDATEON<
关键字段>
FROM<
REPLACE<
字段名1>
……[RANDOM]其中
网标准,于1995年由原来制定的以太网标准的IEEE802.3工作组完成。
快速以太网正式名为100Base-T。
共享介质快速以太网和传统以太网采用同样的介质访问控制协议CSMA/CD所有的介质访问控制算法不变,只是将有关的时间参量加速10倍。
快速以太网的三种标准:
100Base-4、100Base-TX、100Base-FX
快速以太网的产品:
适配器:
一边是总线结构,将数据传送至主机、中继器或HUB;
另一边接到所选的介质,可以是双绞线、光纤,或者是一个介质独立接口MII,MII是用来连接外部收发器用的,其功能类似于以太网的AUI。
HUB:
可分为共享机制的中继器和交换机制的交换器。
数据结构
数据结构中对象的定义,存储的表示及操作的实现.线性:
线性表、栈、队列、数组、字符串
树:
二叉树
集合:
查找,排序
能力:
分析,解决问题的能力
过程:
确定问题的数据。
确定数据间的关系。
确定存储结构(顺序-数组、链表-指针)
确定算法
编程
算法评价(时间和空间复杂度,主要考时间复杂度)
一、数组
1、存放于一个连续的空间
2、一维~多维数组的地址计算方式
已知data[0][0]的内存地址,且已知一个元素所占内存空间S求data[i][j]在内存中的地址。
公式:
(add+(i*12+j)*S)(假设此数组为data[10][12])
注意:
起始地址不是data[0][0]时候的情况。
起始地址为data[-3]和情况;
3、顺序表的定义
存储表示及相关操作
4、顺序表操作中时间复杂度估计
5、字符串的定义(字符串就是线性表),存储表示
模式匹配算法(简单和KMP(不考))
6、特殊矩阵:
存储方法(压缩存储(按行,按列))
三对角:
存储于一维数组
三对角问题:
已知Aij能求出在一维数组中的下标k;
已知下标k求Aij。
稀疏矩阵:
定义,存储方式:
三元组表、十字链表(属于图部分,不考)
算法
数组中元素的原地逆置;
对换
在顺序表中搜索值为X的元素;
在有序表中搜索值为X的元素;
(折半查找)
在顺序表中的第i个位置插入元素X;
在顺序表中的第i个位置删除元素X;
两个有序表的合并;
算法?
时间复杂度计算:
确定基本操作
计算基本操作次数
选择T(n)
lim(F(n)/T(n))=c
0(T(n))为时间复杂度
程序员:
算法分析基础学习
在计算机解决问题的过程中,数据结构和算法是程序的两大要素,二者相辅相成,缺一不可。
算法与数据结构的好坏直接相关,一种数据结构的优劣是由实现其各种运算的算法体现的。
对数据结构的分析实质上也表现为对实现其多种运算的算法分析。
算法分析是一个复杂的问题,它首先涉及到优劣准则的确定。
判断一个算法的优劣主要有以下几个标准:
1正确性。
要求算法能够正确地执行规定的功能。
这是最重要也是最基本的准则;
2可使用性。
算法应当是可读的,即可读性好。
为了达到这个要求,算法的逻辑必须是清晰的、简单的和结构化的;
3健壮性。
要求算法具有很好的容错性,即提供例外处理,能够对不合理的数据进行检查,不会经常出现异常中断或死机现象;
4效率。
算法的效率主要指算法执行时计算机资源的消耗,包括存储和运行时问的开销,前者叫做算法的空间代价,后者叫做算法的时间代价。
时间代价是常用的评价指标,往往用时间复杂度来衡量。
当一个算法转换成程序并在计算机上执行时,其运行所需要的时间总是取决于下列因素:
硬件的速度。
CPu速度和存取数据的速度越快,则程序的执行时间越短;
所选用的程序设计语言。
程序设计语言的级别越高,其执行效率就越低。
编译程序所生成目标代码的质量。
对于代码优化较好的编译程序,其所生成的程序质量较高。
问题的规模。
很显然,大规模的问题求解过程比小规模的问题更耗费时间。
显然,在各种因素都不能确定的情况下,很难比较算法的执行时间。
也就是说,使用执行算法的绝对时间来衡量算法的效率是不合适的。
为此,可以将上述各种与计算机相关的软、硬件因素都确定下来,这样一个特定算法的运行工作量的大小就只依赖于问题的规模,或者说它是问题规模的函数。
另一方面,要全面地评价一个算法的优劣,不仅要考虑时间的耗费,还要考虑算法对存储器的耗费。
特别是对于大规模问题,对空间耗费的分析是必不可少的。
因此,分别有基于时间和空间的算法分析,即算法的时间复杂度分析和空间复杂度分析。
程序员C语言知识点
C语言的基本语句
C语言的语句主要分以下几种:
(l)数据定义语句--用来定义程序中使用的各种数据,及能存放数据的对象的名称和特性。
(2)表达式语句--任何在有意义的表达式之后接上分号(;
)构成的语句。
最常见的有
赋值表达式和函数调用表达式后加分号构成的表达式语句,分别称为赋值语句和函数调用语句。
(3)流程控制语句--用来控制程序执行过程的语句。
它们有选择控制语句、循环控制语句、break语句。
continue语句、return语句和goto语句等。
(4)复合语句--用花括号括住一个语句序列,即构成复合语句。
复合语句用来表示其中的语句序列是一个整体,在逻辑上是单个语句,并且强调其中的语句按顺序逐一执行。
(5)空语句--只有单个分号(;
空语句表示没有任何操作,用于选择控制或循环控制没有特别被控制的成分语句,或在复合语句的末尾放置语句标号等。
(6)其它语句--如类型定义语句等。
程序员:
数组与链表
数组和链表的优缺点
数组,在内存上给出了连续的空间。
链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息。
数组优于链表的:
1.内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息。
但是数组在建立时就固定了。
所以也有可能会因为建立的数组过大或不足引起内存上的问题。
2.数组内的数据可随机访问,但链表不具备随机访问性。
这个很容易理解,数组在内存里是连续的空间,比如如果一个数组地址从100到200,且每个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址,可以直接访问。
链表在内存地址可能是分散的。
所以必须通过上一节点中的信息找能找到下一个节点。
3.查找速度上。
这个也是因为内存地址的连续性的问题,不罗索了。
链表优于数组的:
1.插入与删除的操作。
如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动。
删除的话同理。
只有对数据的最后一个元素进行插入删除操作时,才比较快。
链表只需要更改有必要更改的节点内的节点信息就够了。
并不需要更改节点的内存地址。
2.内存地址的利用率方面。
不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里。
而链表可以是分散的空间地址。
3.链表的扩展性比数组好。
因为一个数组建立后所占用的空间大小就是固定的,如果满了就没法扩展,只能新建一个更大空间的数组;
而链表不是固定的,可以很方便的夸张。
软件设计规范
概述
软件设计是把需求转化为软件系统的最重要的环节,系统设计的优劣在根本上决定了软件系统的质量。
一般把设计过程划分为两个阶段:
概要设计阶段和详细设计阶段。
体系结构
目前业界比较流行的软件结构模式有C/S(客户/服务器)、B/S(BROWSE/SERVER)、层次结构(上下级层次结构、顺序相邻的层次结构、含中间件的层次结构)
体系结构设计原则
合适性
即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。
高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。
结构稳定性
详细设计阶段的工作如用户界面设计、数据库设计、模块设计、数据结构与算法设计等等,都是在体系结构确定之后开展的,而编程和测试则是更后面的工作,因此体系结构应在一定的时间内保持稳定。
软件开发最怕的就是需求变化,但“需求会发生变化”是个无法逃避的现实。
人们希望在需求发生变化时,最好只对软件做些皮皮毛毛的修改,可千万别改动软件的体系结构。
如果当需求发生变化时,程序员不得不去修改软件的体系结构,那么这个软件的系统设计是失败的。
高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。
于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。
可扩展性
可扩展性是指软件扩展新功能的容易程度。
可扩展性越好,表示软件适应“变化”的能力越强。
可扩展性越来越重要,这是由现代软件的商业模式决定的:
社会的商业越发达,需求变化就越快。
需求变化必将导致修改软件的功能,现代软件的规模和复杂性要比十年前的大得多,如果软件的可扩展性比较差的话,那么修改功能的代价会很高。
现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从而不断地获取增值利润。
如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高。
虽然开发商抓住了商机,但却由于设计水平差而导致没有赚取多少利润,真是要活活气死。
可复用性
由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。
一般地可以相信成熟的东西总是比较可靠的,而大量成熟的工作可以通过复用来快速实现。
可复用性是设计出来的,而不是偶然碰到的。
要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。
C++内存泄漏的解决办法
以下三种解决方法:
Parent对象。
每一个对象,都要有唯一的parent,当parent析构时,要带动他所有的children析构。
好处:
实现简单,且具有逻辑性。
坏处:
不可以有复制构造函数。
这个也很好理解。
A-->
B-->
C中,a是b的parent,b是c的parent,如果允许复制,B复制了个D,那C就有两个parent,究竟怎么析构呢?
开源库的实现:
Qt实现了这种方式的内存管理,尤其是对GUI框架,十分适用。
引用计数的SharedPtr
指针,进行复制操作的时候,引用计数+1,析构的时候引用计数-1,当引用计数为0的时候,释放空间。
实现简单
具有循环引用的情况。
要引入WeakPtr
Qt同时实现了这种技术,Boost也有相关实现。
评述:
这是C++中最通用的实现手段,如果你要做一套类库,尝试使用SharedPtr,会让事情变得更加简单。
重载new,实现GC
直接重载C++操作符,实现垃圾回收。
初始化一个内存池,当内存池满的时候,进行垃圾回收操作。
一劳永逸
实现困难,占用内存大,对已有的环境,不一定会有很好的支持。
内存池也许不一定要做垃圾回收,如果是静态的内存池,可以加速内存分配的过程。
c++学习体会
我是从c语言开始的,后来学习c++,现在使用java,刚开始接触面向对象的概念时跟你现在的情况一样,不过经过一段时间的实际编程后,现在回头再认真读一下这两个定义,发现自己有了许多深入的理解,感觉自己开始体会到当初那么多c语言的大牛为什么要转到面向对象上来了。
实际编程会对你的理解起到很大帮助作用的。
如果只是做些1000行以下的小程序,C++的优势倒真体现不出来,现在的程序已经到了几万行,十几万行(已经不能称为程序,是一个软件系统),编写的话需要很成熟的软件工程来控制,C++的优势就在于此,你所提到的继承,虚拟,摸版,每一个概念都有软件工程的基础。
真正的想理解C++,你应该先学OOA和OOD,因为首先面向对象是一种思想,是一种程序分析和程序设计的思想。
面向对象可以可以很好的体现现实之间事务的关系。
因而它是一种比较好的程序分析和设计方法。
而C++语言不过是可以很好的实现这些方法的成果的一种语言,如果你愿意,你也可以用C来实现实现这些设计,一样可以做到,只是难度更大一点。
国内的程序员大多只注重编程,不注重分析和设计的能力,所以到最后学到了C++的时候就感到很迷茫。
所以我建议你看看北大的翻译过的一本《面向对象分析》和《
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 知识点 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)