软考程序员常考知识点汇总.docx

上传人:b****7 文档编号:8729771 上传时间:2023-02-01 格式:DOCX 页数:14 大小:25.89KB
下载 相关 举报
软考程序员常考知识点汇总.docx_第1页
第1页 / 共14页
软考程序员常考知识点汇总.docx_第2页
第2页 / 共14页
软考程序员常考知识点汇总.docx_第3页
第3页 / 共14页
软考程序员常考知识点汇总.docx_第4页
第4页 / 共14页
软考程序员常考知识点汇总.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

软考程序员常考知识点汇总.docx

《软考程序员常考知识点汇总.docx》由会员分享,可在线阅读,更多相关《软考程序员常考知识点汇总.docx(14页珍藏版)》请在冰豆网上搜索。

软考程序员常考知识点汇总.docx

软考程序员常考知识点汇总

20XX年软考程序员考试知识点

FoxPro程序设计

1.命令文件的建立、修改和运行

(1)命令文件的建立与修改MODIFYCOMMAND[<命令文件名>/?

][INWINDOW<窗口名>/SCREEN]

(2)命令文件的执行DO<命令文件名>

其中SETDEVELOPMENTON/OFF,处于ON状态是默认,执行新的版本,处于OFF状态,则执行旧版本。

(3)命令文件的注释NOTE<注释>*<注释>&&<注释>

2.顺序结构程序设计

(1)CLEAR是清屏命令,SETTALKON为默认,每执行一条命令就给出回应,RETURN是一条返回命令。

(2)非格式化输入命令

ACCEPT[<字符表达式>]TO<内存变量>接受从键盘输入的字符型数据,输入的字符串不必用引号括起来。

<字符表达式>只是提示作用。

INPUT[<字符表达式>]TO<内存变量>接受从键盘输入的C,N,D,L等,若是字符串则必须用引号括起来。

WAIT[<字符表达式>]TO<内存变量>等待从键盘输入一个字符,<字符表达式>只能是提示作用。

SETCONSOLEON(默认,所有非格式化输入数据都显示)/OFF(相反)

(3)格式化输入输出命令

格式化输出命令@<行,列>SAY<表达式>[PICTURE<描述符串>][FONT<字体>[,<字号>]]SETDEVICETOSCREEN屏幕输出

SETDEVICETOPRINT打印机输出

格式化输入输出命令@<行,列>[SAY<表达式1>]GET<内存变量>|<字段>[PICTURE<描述符串>][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>

<命令序列1>

CASE<条件2>

<命令序列2>

CASE<条件N>

<命令序列N>

[OTHERWISE

<命令序列N+1>]

ENDCASE

4.循环结构程序设计

DOWHILE<条件>

<命令序列1>

[LOOP]

<命令序列2>

[EXIT]

ENDDO

FOR<循环变量>=<初值>TO<终止>[SETEP<步长>]

<命令序列>

[LOOP]

[EXIT]

ENDFOR

SCAN[<范围>][FOR<条件>][WHILE<条件>]

<命令序列>

[LOOP]

[EXIT]

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<函数名>

[PARAMETERS<形参表>]

<函数体>

RETURN<表达式>

自定义函数的调用:

函数名([<实参表>])

参数传递方式SETUDFPARMSTO[VALUE|REFERENCE]若选用VALUE为值传递(默认),不会改变变量的值,若REFERENCE,则为引用方式。

数据库的基本操作

库文件结构建立CREAT[<文件名>|?

]其中A-J作为工作区代码

在把记录输入完后,按CTRL+W或CTRL+END存盘。

追加记录APPEND[BLANK]

记录显示LIST/DISPLAY[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>][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[<范围>][FOR<条件>][WHILE<条件>]

SETDELETEDOFF/ON(取OFF,逻辑删除无效,反之,则有效)

恢复逻辑删除RECALL[<范围>][FOR<条件>][WHILE<条件>]

物理删除PACK

理删除所有记录ZAP(只有结构无记录)

记录的修改

编辑修改EDIT.CHANG[<范围>][FIELDS<字段名表>[条件]

浏览编辑修改BROWSE

替换修改REPLACE[<范围>]<字段1>WITH<表达式1>……

数据库文件的排序与索引

排序:

SORTTO<文件名>ON<字段1>[/A][/C][/D][,<字段2>………[FIELDS<字段名表>][FOR……

关键字只能是C,N,D.*/A(升序,默认)/D(降序)/C(不区分大/小写)

需要临时文件做周转

索引:

INDEXON<关键字表达式>TO<索引文件名>[FOR……][UNIQUE][ADD…]

备注字段不能作为关键字

字段索引只能是C,N,D,多字段索引只能是C

UNIQUE进行唯一索引(在记录相同,只取第一个)

未指定ADDITIVE,关闭先打开的索引文件,反之,就不关闭。

索引文件的打开USE<库文件名>INDEX<索引文件名表>

(允许打开25个)SETINDEXTO<索引文件名表>

索引文件的关闭SETINDEXTO/CLOSEINDEX

指定主索引SETORDERTO[<数值表达式>/<索引文件名>]

数据查询

顺序查询:

LOCATE[<范围>[FOR<条件>][WHILE<条件>]它总是把指针定位到第一个满足条件的记录上,想继续查找,则用CONTINUE

索引查询:

FIND<字符串>/<数值常数>当设置为SETEXACTOFF时,查询时不需要精确比较,反之,则需要精确比较。

SEEK<表达式>它可以查询包括字符型,数值型,日期型和逻辑型在内的各种数据类型,也可以是内存变量或者是表达式

数据统计

计数命令COUNT[<范围>][FOR<条件>][WHILE<条件>][TO<内存变量名>]

求和命令SUM[<范围>][<数值表达式>][FOR<条件>][WHILE<条件>][TO<内存变量名>/TOARRAY<数组>]

求平均值命令AVERAGE[<范围>][<数值表达式>][FOR<条件>][WHILE<条件>][TO<内存变量名>/TOARRAY<数组>]

分类汇总命令TOTALON<关键表达式>TO<分类库文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]要求首先对库文件进行排序或索引

数据库文件的复制

(1)库文件的复制COPYTO<库文件名>[<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]将当前库文件中的数据(包括结构)一起复制到指定的库文件中。

(2)库文件结构的复制COPYSTRUCTURETO<新库文件名>[FIELDS<字段名表>]

(3)库文件与文本数据文件的转换复制

库文件复制成文本数据文件COPYTO<数据文件名>SDF.DELIMITED[WITH<定界符>/BLABK][<范围>][FIELDS<字段名表>][FOR<条件>][WHILE<条件>]

文本数据文件中的数据复制到库文件APPENDFROM<数据文件名>SDF.DELIMITED[WITH<定界符>/BLABK][FOR<条件>][FIELDS<字段名表>]

(4)任何类型文件的复制COPYFILE<源文件名>TO<目标文件名>不能复制已经打开的库文件,且<源文件名>,<目标文件名>必须包括主文件名和扩展名。

多重数据库文件的操作

(1)最多达225个工作区,且前十个工作区1~10还规定了别名A~J.

(2)工作区选择命令SELECT<工作区号>/<别名>,从当前工作区访问其它工作区打开库文件中的某个字段时,要表示为别名。

字段名或者别名->字段名

(3)库文件之间的关联SETRELATIONTO[<关键字表达式>/<数值表达式>INTO<工作区号>/<别名>[ADDITIVE]其中若选<数值表达式>,而被关联库没有建立索引,则作为记录号进行关联。

指定[ADDITIVE]保留以前关联。

SETRELATIONTO将删除当前工作区与所有其他工作区连接

(4)库文件的连接JOINWITH<别名>TO<新库文件名>[FIELDS<字段名表>][FOR<条件>]

(5)库文件的更新UPDATEON<关键字段>FROM<别名>REPLACE<字段名1>WITH<表达式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++的时候就感到很迷茫。

所以我建议你看看北大的翻译过的一本《面向对象分析》和《

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1