程序的设计基础知识点.docx
《程序的设计基础知识点.docx》由会员分享,可在线阅读,更多相关《程序的设计基础知识点.docx(10页珍藏版)》请在冰豆网上搜索。
![程序的设计基础知识点.docx](https://file1.bdocx.com/fileroot1/2023-4/20/30065cd0-71b0-44cf-9975-4ef5bd34808b/30065cd0-71b0-44cf-9975-4ef5bd34808b1.gif)
程序的设计基础知识点
第三部分程序设计基础
3.1程序、程序设计、程序设计语言的定义
⑴程序:
计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。
⑵程序设计:
程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。
程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。
程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。
⑶程序设计语言:
程序设计语言用于书写计算机程序的语言。
语言的基础是一组记号和一组规则。
根据规则由记号构成的记号串的总体就是语言。
在程序设计语言中,这些记号串就是程序。
程序设计语言有3个方面的因素,即语法、语义和语用。
3.2高级语言和低级语言的概念及区别
⑴高级语言:
高级语言(High-levelprogramminglanguage)是高度封装了的编程语言,与低级语言相对。
它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。
⑵低级语言:
低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。
机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。
⑶区别:
高级语言:
实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好
低级语言:
实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差
了解知识:
CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。
越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。
而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。
也就是说用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器(即编译器),从而人力得到了解放。
3.3编译程序的概念及作用
⑴编译程序(Compiler,compilingprogram)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
⑵作用:
它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。
3.4计算机求解问题的过程
分析问题(确定计算机做什么)→设计算法(寻找解决问题的途径和方法,即要计算机怎么做)→编写程序(将算法翻译成计算机程序设计语言)→上机运行和测试
3.5程序正确性的含义
程序正确性证明就是采用严格的数学方法评价一个程序是否达到了预定的性能,即对于任何一组允许的输入信息,程序执行后能得到一组和这组信息对应的正确的输出信息。
3.6程序错误的几种类型
程序错误,即英文的Bug,也称为缺陷,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。
⑴语法错误
⑵逻辑错误
3.7程序调试、程序测试的概念以及区别
⑴程序调试:
是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
这是保证计算机信息系统正确性的必不可少的步骤。
编完计算机程序,必须送入计算机中测试。
⑵程序测试:
(programtesting)是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。
了解知识:
程序测试的方法
灰盒测试,确实是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
白盒测试,又称结构测试。
他的前提是可以把程序看成在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。
这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按照预定要求正确工作。
白盒测试根据软件的内部逻辑设计设施用例,常用的技术是逻辑覆盖,即考察用测试数据运行被测程序是对程序逻辑的覆盖程度。
主要的覆盖标准有:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。
黑盒测试根据关键需求说明书所规定的功能来设计测试用例,它不考虑软件的内部结构和处理算法。
常用的黑盒测试技术包括等价类划分、边值分析、错误推测和因果图等。
⑶区别:
①目的不同
软件测试的目的是发现错误,至于找出错误的原因和错误发生的地方不是软件测试的任务,而是调试的任务.调试的目的是为了证明程序的正确,因此它必须不断地排除错误.它们的出发点不一样。
前者是挑错,是一种挑剔过程,属于质盘保证活动。
后者是排错,是一种排除过程,是编码活动的一部分。
②指导原则和方法不同
软件测试的输出是预知的,其软件测试用例必须包括预期的结果,而调试的输出大多是不可预见的,需要调试者去解释、去发现产生的原因。
③操作者不同
因为心理状态是软件测试程序的障碍,所以执行软件测试的人一般不是开发人员,以使软件测试更客观、更有效,而调试人员一般都是开发人员.
3.8结构化程序设计概念及类型
结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。
结构化程序设计的三种基本结构是:
顺序结构、选择结构和循环结构。
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。
选择结构有单选择、双选择和多选择三种形式。
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。
在循环结构中最主要的是:
什么情况下执行循环?
哪些操作需要循环执行?
循环结构的基本形式有两种:
当型循环和直到型循环。
当型循环:
表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。
因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。
直到型循环:
表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。
因为是"直到条件为真时为止",所以称为直到型循环。
3.9面向对象程序设计概念
面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)是一种计算机编程架构。
OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
OOP达到了软件工程的三个主要目标:
重用性、灵活性和扩展性。
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
面向对象程序设计中的概念主要包括:
对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。
通过这些概念面向对象的思想得到了具体的体现。
3.10ASCII字符集
ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC646。
标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
大小规则
1)数字0~9比字母要小。
如"7"<"F";
2)数字0比数字9要小,并按0到9顺序递增。
如"3"<"8"
3)字母A比字母Z要小,并按A到Z顺序递增。
如"A"<"Z"
4)同个字母的大写字母比小写字母要小。
如"A"<"a"。
记住几个常见字母的ASCII码大小:
“换行LF”为10;“回车CR”为13;空格为32;"0"为48;"A"为65;"a"为97。
3.11标识符、关键字的概念
在编程语言中,标识符就是程序员自己规定的具有特定含义的词,比如类名称,属性名称,变量名等。
关键字就是程序发明者规定的有特殊含义的单词,又叫保留字。
3.12注释语句的作用
注释语句在程序的开始或中间,不具有任何功能实现的作用,仅仅是对程序进行说明的语句。
注释语句在程序运行过程中不运行,却是程序编写时的重要内容,对于理解程序很重要。
3.13表达式的组成及类型
表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
类型:
算术表达式:
是最常用的表达式,又称为数值表达式。
它是通过算术运算符来进行运算的数学公式。
加法、减法、乘法、除法、求余
关系表达式:
用关系运算符将两个表达式连接起来的式子,称关系表达式。
关系表达式的值是逻辑值“真”或“假”。
=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)
逻辑表达式:
用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。
逻辑表达式的值是一个逻辑值,即“true”或“false”。
NOT(非)、AND(与)、OR(或)
3.14子程序和函数的概念
子程序:
在计算机科学中,子程序(英语:
Subroutine,procedure,function,routine,method,subprogram,callableunit),是一个大型程序中的某部份代码,由一个或多个语句块组成。
它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。
函数:
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。
要善于利用函数,以减少重复编写程序段的工作量。
许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,所以,函数也可以说是许多代码的集合,这就是程序中的函数。
3.15数据、数据元素、数据对象、数据项的概念
数据:
数据就是数值,也就是我们通过观察、实验或计算得出的结果。
数据有很多种,最简单的就是数字。
数据也可以是文字、图像、声音等。
数据可以用于科学研究、设计、查证等。
数据元素:
数据元素(dataelement)是计算机科学术语。
它是数据的基本单位,数据元素也叫做结点或记录。
在计算机程序中通常作为一个整体进行考虑和处理。
有时,一个数据元素可由若干个数据项组成,例如,一本书的书目信息为一个数据元素,而书目信息的每一项(如书名、作者名等)为一个数据项。
数据项是数据的不可分割的最小单位。
数据对象:
(DataObject)是性质相同的数据元素的集合,是数据的一个子集,数据对象是一种运行时的概念。
可以是外部实体(例如,产生或使用信息的任何事物)、事物(例如,报表)、行为(例如,打电话)、事件(例如,响警报)、角色(例如,教师、学生)、单位(例如,会计科)、地点(例如,仓库)或结构(例如,文件)等。
总之,可以由一组属性来定义的实体都可以被认为是数据对象。
数据项:
数据项又称数据元素(dataelement),是数据的基本单位,一个数据可由若干个数据项(dataitem)组成,数据项是数据的不可分割的最小单位。
3.16数据的逻辑结构、存储结构
数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。
逻辑结构形式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的关系的有限集。
了解知识:
逻辑结构有四种基本类型:
集合结构、线性结构、树状结构和网络结构。
表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现。
表是线性结构的(全序关系),树(偏序或层次关系)和图(局部有序(weak/localorder))是非线性结构。
数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。
它包括数据元素的表示和关系的表示。
3.17数据运算
数据运算是对数据依某种模式而建立起来的关系进行处理的过程。
最基本的数据运算有:
①算术运算,如:
加、减、乘、除、乘方、开方、取模等;②关系运算,如:
等于、不等于、大于、小于等;③逻辑运算,如:
与、或、非、恒等、蕴含等。
3.18数据结构的两大逻辑结构和四种常用的存储表示方法
数据的逻辑结构分两大类:
线性结构和非线性结构
了解知识:
线性结构是一个有序数据元素的集合。
常用的线性结构有:
线性表,栈,队列,双队列,数组,串。
常见的非线性结构有:
二维数组,多维数组,广义表,树(二叉树等),图。
数据的存储方法有四种:
顺序存储方法、链接存储方法、索引存储方法和散列存储方法
了解知识:
(1)顺序存储方法:
该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
由此得到的存储表示称为顺序存储结构(SequentialStorageStructure),通常借助程序语言的数组描述。
该方法主要应用于线性的数据结构。
非线性的数据结构也可通过某种线性化的方法实现顺序存储。
(2)链接存储方法:
该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。
由此得到的存储表示称为链式存储结构(LinkedStorageStructure),通常借助于程序语言的指针类型描述。
(3)索引存储方法:
该方法通常在储存结点信息的同时,还建立附加的索引表。
索引表由若干索引项组成。
若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(DenseIndex)。
若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引(SpareIndex)。
索引项的一般形式是:
(关键字、地址)
关键字是能唯一标识一个结点的那些数据项。
稠密索引中索引项的地址指示结点所在的存储位置;稀疏索引中索引项的地址指示一组结点的起始存储位置。
(4)散列存储方法:
该方法的基本思想是:
根据结点的关键字直接计算出该结点的存储地址。
四种基本存储方法,既可单独使用,也可组合起来对数据结构进行存储映像。
同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。
选择何种存储结构来表示相应的逻辑结构,视具体要求而定,主要考虑运算方便及算法的时空要求。
3.19算法和程序的关系
算法是对特定问题求解步骤的描述,它是指令的有限序列。
算法与程序的关系:
算法和程序都是指令的有限序列,但是,程序是算法,而算法不一定是程序。
算法和程序的区别主要在于:
(1)在语言描述上,程序必须是用规定的程序设计语言来写,而算法很随意;
(2)在执行时间上,算法所描述的步骤一定是有限的,而程序可以无限地执行下去。
所以:
程序=数据结构+算法
3.20常用数据类型种类及特性
不同的变成语言,数据类型的说法有差异。
一般而言包含:
数字型或者数值型,常有Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和Currency(货币型)。
文本型:
常有String(字符串型)
逻辑型:
若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为Boolean类型。
3.21常量和变量的概念
“常量”在程序运行时,不会被修改的量。
换言之,常量虽然是为了硬件、软件、编程语言服务,但是它并不是因为硬件、软件、编程语言而引入。
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
变量可以通过变量名访问。
3.22字符串的概念及应用
字符串或串(String)是由数字、字母、下划线组成的一串字符。
一般记为s=“a1a2···an”(n>=0)。
它是编程语言中表示文本的数据类型。
在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
3.23数组、数组元素、下标变量
数组:
就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。
这些按序排列的同类数据元素的集合称为数组。
数组元素是组成数组的基本单元。
数组元素也是一种变量,其标识方法为数组名后跟一个下标。
下标表示了元素在数组中的顺序号。
数组元素通常也称为下标变量。
了解知识:
数组元素的一般形式为:
数组名[下标],其中下标只能为整型常量或整型表达式。