资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
程序员考试:http:/www.educity.cn/rk/cxy/index.html 20152015 年软考程序员考试知识点年软考程序员考试知识点 FoxProFoxPro 程序设计程序设计1.1.命令文件的建立、修改和运行命令文件的建立、修改和运行(1)命令文件的建立与修改 MODIFYCOMMAND/?INWINDOW/SCREEN(2)命令文件的执行 DO其中 SETDEVELOPMENTON/OFF,处于 ON 状态是默认,执行新的版本,处于 OFF 状态,则执行旧版本。(3)命令文件的注释 NOTE*另一边接到所选的介质,可以是双绞线、光纤,或者是一个介质独立接口 MII,MII 是用来连接外部收发器用的,其功能类似于以太网的 AUI。HUB:可分为共享机制的中继器和交换机制的交换器。 数据结构数据结构数据结构中对象的定义,存储的表示及操作的实现.线性:线性表、栈、队列、数组、字符串树:二叉树集合:查找,排序能力:分析,解决问题的能力过程:确定问题的数据。确定数据间的关系。确定存储结构(顺序数组、链表指针)确定算法编程算法评价(时间和空间复杂度,主要考时间复杂度)一、数组1、存放于一个连续的空间2、一维多维数组的地址计算方式已知 data00的内存地址,且已知一个元素所占内存空间求 dataij在内存中的地址。公式:(add+(i*12+j)*S)(假设此数组为 data1012)注意:起始地址不是 data00时候的情况。起始地址为 data-3和情况;3、顺序表的定义存储表示及相关操作4、顺序表操作中时间复杂度估计程序员考试:http:/www.educity.cn/rk/cxy/index.html5、字符串的定义(字符串就是线性表),存储表示模式匹配算法(简单和 KMP(不考)6、特殊矩阵:存储方法(压缩存储(按行,按列)三对角:存储于一维数组三对角问题:已知 Aij 能求出在一维数组中的下标 k;已知下标 k 求 Aij。稀疏矩阵:定义,存储方式:三元组表、十字链表(属于图部分,不考)算法数组中元素的原地逆置;对换在顺序表中搜索值为 X 的元素;在有序表中搜索值为 X 的元素;(折半查找)在顺序表中的第 i 个位置插入元素 X;在顺序表中的第 i 个位置删除元素 X;两个有序表的合并;算法?时间复杂度计算:确定基本操作计算基本操作次数选择 T(n)lim(F(n)/T(n)=c0(T(n)为时间复杂度 程序员程序员: :算法分析基础学习算法分析基础学习在计算机解决问题的过程中,数据结构和算法是程序的两大要素,二者相辅相成,缺一不可。算法与数据结构的好坏直接相关,一种数据结构的优劣是由实现其各种运算的算法体现的。对数据结构的分析实质上也表现为对实现其多种运算的算法分析。算法分析是一个复杂的问题,它首先涉及到优劣准则的确定。判断一个算法的优劣主要有以下几个标准:1 正确性。要求算法能够正确地执行规定的功能。这是最重要也是最基本的准则;2 可使用性。算法应当是可读的,即可读性好。为了达到这个要求,算法的逻辑必须是清晰的、简单的和结构化的;3 健壮性。要求算法具有很好的容错性,即提供例外处理,能够对不合理的数据进行检查,不会经常出现异常中断或死机现象;4 效率。算法的效率主要指算法执行时计算机资源的消耗,包括存储和运行时问的开销,前者叫做算法的空间代价,后者叫做算法的时间代价。程序员考试:http:/www.educity.cn/rk/cxy/index.html时间代价是常用的评价指标,往往用时间复杂度来衡量。当一个算法转换成程序并在计算机上执行时,其运行所需要的时间总是取决于下列因素:硬件的速度。CPu 速度和存取数据的速度越快,则程序的执行时间越短;所选用的程序设计语言。程序设计语言的级别越高,其执行效率就越低。编译程序所生成目标代码的质量。对于代码优化较好的编译程序,其所生成的程序质量较高。问题的规模。很显然,大规模的问题求解过程比小规模的问题更耗费时间。显然,在各种因素都不能确定的情况下,很难比较算法的执行时间。也就是说,使用执行算法的绝对时间来衡量算法的效率是不合适的。为此,可以将上述各种与计算机相关的软、硬件因素都确定下来,这样一个特定算法的运行工作量的大小就只依赖于问题的规模,或者说它是问题规模的函数。另一方面,要全面地评价一个算法的优劣,不仅要考虑时间的耗费,还要考虑算法对存储器的耗费。特别是对于大规模问题,对空间耗费的分析是必不可少的。因此,分别有基于时间和空间的算法分析,即算法的时间复杂度分析和空间复杂度分析。所选用的程序设计语言。程序设计语言的级别越高,其执行效率就越低。编译程序所生成目标代码的质量。对于代码优化较好的编译程序,其所生成的程序质量较高。问题的规模。很显然,大规模的问题求解过程比小规模的问题更耗费时间。显然,在各种因素都不能确定的情况下,很难比较算法的执行时间。也就是说,使用执行算法的绝对时间来衡量算法的效率是不合适的。为此,可以将上述各种与计算机相关的软、硬件因素都确定下来,这样一个特定算法的运行工作量的大小就只依赖于问题的规模,或者说它是问题规模的函数。另一方面,要全面地评价一个算法的优劣,不仅要考虑时间的耗费,还要考虑算法对存储器的耗费。特别是对于大规模问题,对空间耗费的分析是必不可少的。因此,分别有基于时间和空间的算法分析,即算法的时间复杂度分析和空间复杂度分析。 程序员程序员 C C 语言知识点语言知识点C 语言的基本语句C 语言的语句主要分以下几种:(l)数据定义语句-用来定义程序中使用的各种数据,及能存放数据的对象的名称和特性。(2)表达式语句-任何在有意义的表达式之后接上分号(;)构成的语句。最常见的有赋值表达式和函数调用表达式后加分号构成的表达式语句,分别称为赋值语句和函数调用语句。(3)流程控制语句-用来控制程序执行过程的语句。它们有选择控制语句、循环控制语句、break 语句。continue 语句、return 语句和 goto 语句等。(4)复合语句-用花括号括住一个语句序列,即构成复合语句。复合语句用来表示其中的语句序列是一个整体,在逻辑上是单个语句,并且强调其中的语句按顺序逐一执行。(5)空语句-只有单个分号(;)构成的语句。空语句表示没有任何操作,用于选择控制或循环控制没有特别被控制的成分语句,或在复合语句的末尾放置语句标号等。程序员考试:http:/www.educity.cn/rk/cxy/index.html(6)其它语句-如类型定义语句等。 程序员:数组与链表程序员:数组与链表数组和链表的优缺点数组,在内存上给出了连续的空间。链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息。数组优于链表的:1.内存空间占用的少,因为链表节点会附加上一块或两块下一个节点的信息。但是数组在建立时就固定了。所以也有可能会因为建立的数组过大或不足引起内存上的问题。2.数组内的数据可随机访问,但链表不具备随机访问性。这个很容易理解,数组在内存里是连续的空间,比如如果一个数组地址从 100 到 200,且每个元素占用两个字节,那么 100-200 之间的任何一个偶数都是数组元素的地址,可以直接访问。链表在内存地址可能是分散的。所以必须通过上一节点中的信息找能找到下一个节点。3.查找速度上。这个也是因为内存地址的连续性的问题,不罗索了。链表优于数组的:1.插入与删除的操作。如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动。删除的话同理。只有对数据的最后一个元素进行插入删除操作时,才比较快。链表只需要更改有必要更改的节点内的节点信息就够了。并不需要更改节点的内存地址。2.内存地址的利用率方面。不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里。而链表可以是分散的空间地址。3.链表的扩展性比数组好。因为一个数组建立后所占用的空间大小就是固定的,如果满了就没法扩展,只能新建一个更大空间的数组;而链表不是固定的,可以很方便的夸张。 程序员程序员: :软件设计规范软件设计规范概述软件设计是把需求转化为软件系统的最重要的环节,系统设计的优劣在根本上决定了软件系统的质量。一般把设计过程划分为两个阶段:概要设计阶段和详细设计阶段。体系结构目前业界比较流行的软件结构模式有 C/S(客户/服务器)、B/S(BROWSE/SERVER)、层次结构(上下级层次结构、顺序相邻的层次结构、含中间件的层次结构)体系结构设计原则合适性程序员考试:http:/www.educity.cn/rk/cxy/index.html即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。结构稳定性详细设计阶段的工作如用户界面设计、数据库设计、模块设计、数据结构与算法设计等等,都是在体系结构确定之后开展的,而编程和测试则是更后面的工作,因此体系结构应在一定的时间内保持稳定。软件开发最怕的就是需求变化,但“需求会发生变化”是个无法逃避的现实。人们希望在需求发生变化时,最好只对软件做些皮皮毛毛的修改,可千万别改动软件的体系结构。如果当需求发生变化时,程序员不得不去修改软件的体系结构,那么这个软件的系统设计是失败的。高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。可扩展性可扩展性是指软件扩展新功能的容易程度。可扩展性越好,表示软件适应“变化”的能力越强。可扩展性越来越重要,这是由现代软件的商业模式决定的:社会的商业越发达,需求变化就越快。需求变化必将导致修改软件的功能,现代软件的规模和复杂性要比十年前的大得多,如果软件的可扩展性比较差的话,那么修改功能的代价会很高。现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从而不断地获取增值利润。如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高。虽然开发商抓住了商机,但却由于设计水平差而导致没有赚取多少利润,真是要活活气死。可复用性由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的,而大量成熟的工作可以通过复用来快速实现。可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。 程序员:程序员:C+C+内存泄漏的解决办法内存泄漏的解决办法以下三种解决方法:Parent 对象。每一个对象,都要有唯一的 parent,当 parent 析构时,要带动他所有的 children 析构。好处:实现简单,且具有逻辑性。坏处:不可以有复制构造函数。这个也很好理解。ABC 中,a 是 b 的 parent,b 是 c 的 parent,如果允许复制,B 复制了个 D,那 C 就有两个 parent,究竟怎么析构呢?程序员考试:http:/www.educity.cn/rk/cxy/index.html开源库的实现:Qt 实现了这种方式的内存管理,尤其是对 GUI 框架,十分适用。引用计数的 SharedPtr指针,进行复制操作的时候,引用计数+1,析构的时候引用计数-1,当引用计数为 0 的时候,释放空间。好处:实现简单坏处:具有循环引用的情况。要引入 WeakPtr开源库的实现:Qt 同时实现了这种技术,Boost 也有相关实现。评述:这是 C+中最通用的实现手段,如果你要做一套类库,尝试使用 SharedPtr,会让事情变得更加简单。重载 new,实现 GC直接重载 C+操作符,实现垃
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号