程序设计语言和编码(1)
程序设计基础知识点
第三部分程序设计基础程序、程序设计、程序设计语言的定义⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列.⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分.程序设计往往以某种程序设计语言为工具,给出这种语言下的程序.程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段.⑶程序设计语言:程序设计语言用于书写计算机程序的语言.语言的基础是一组记号和一组规则.根据规则由记号构成的记号串的总体就是语言.在程序设计语言中,这些记号串就是程序.程序设计语言有3个方面的因素,即语法、语义和语用.高级语言和低级语言的概念及区别⑴高级语言:高级语言High-level programming language是高度封装了的编程语言,与低级语言相对.它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示例如汉字、不规则英文或其他外语,从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容.⑵低级语言:低级语言分机器语言二进制语言和语言符号语言,这两种语言都是面向机器的语言,和具体机器的指令系统密切相关.机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序.⑶区别:高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码.越低级的语言,形式上越接近机器指令,语言就是与机器指令一一对应的.而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动.也就是说用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器即编译器,从而人力得到了解放.编译程序的概念及作用⑴编译程序Compiler,compiling program也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序.⑵作用:它以高级程序设计语言书写的源程序作为输入,而以语言或机器语言表示的目标程序作为输出.计算机求解问题的过程分析问题确定计算机做什么→设计算法寻找解决问题的途径和方法,即要计算机怎么做→编写程序将算法翻译成计算机程序设计语言→上机运行和测试程序正确性的含义程序正确性证明就是采用严格的数学方法评价一个程序是否达到了预定的性能,即对于任何一组允许的输入信息,程序执行后能得到一组和这组信息对应的正确的输出信息.程序错误的几种类型程序错误,即英文的Bug,也称为缺陷,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象.⑴语法错误⑵逻辑错误程序调试、程序测试的概念以及区别⑴程序调试:是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程.这是保证计算机信息系统正确性的必不可少的步骤.编完计算机程序,必须送入计算机中测试.⑵程序测试:program testing是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行.了解知识:程序测试的方法灰盒测试,确实是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法.白盒测试,又称结构测试.他的前提是可以把程序看成在一个透明的白盒子里,测试者完全知道程序的结构和处理算法.这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按照预定要求正确工作.白盒测试根据软件的内部逻辑设计设施用例,常用的技术是逻辑覆盖,即考察用测试数据运行被测程序是对程序逻辑的覆盖程度.主要的覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖.黑盒测试根据关键需求说明书所规定的功能来设计测试用例,它不考虑软件的内部结构和处理算法.常用的黑盒测试技术包括等价类划分、边值分析、错误推测和因果图等.⑶区别:①目的不同软件测试的目的是发现错误,至于找出错误的原因和错误发生的地方不是软件测试的任务,而是调试的任务.调试的目的是为了证明程序的正确,因此它必须不断地排除错误.它们的出发点不一样.前者是挑错,是一种挑剔过程,属于质盘保证活动.后者是排错,是一种排除过程,是编码活动的一部分.②指导原则和方法不同软件测试的输出是预知的,其软件测试用例必须包括预期的结果,而调试的输出大多是不可预见的,需要调试者去解释、去发现产生的原因.③操作者不同因为心理状态是软件测试程序的障碍,所以执行软件测试的人一般不是开发人员,以使软件测试更客观、更有效,而调试人员一般都是开发人员.结构化程序设计概念及类型结构化程序设计structured programming是进行以模块功能和处理过程设计为主的详细设计的基本原则.结构化程序设计的三种基本结构是:顺序结构、选择结构和循环结构.顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的.选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行.选择结构有单选择、双选择和多选择三种形式.循环结构表示程序反复执行某个或某些操作,直到某条件为假或为真时才可终止循环.在循环结构中最主要的是:什么情况下执行循环哪些操作需要循环执行循环结构的基本形式有两种:当型循环和直到型循环.当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处.因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环.直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断.因为是"直到条件为真时为止",所以称为直到型循环.面向对象程序设计概念面向对象编程Object OrientedProgramming,OOP,面向对象程序设计是一种计算机编程架构.OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成.OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性.为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息.面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递.通过这些概念面向对象的思想得到了具体的体现.ASCII字符集ASCIIAmerican Standard Code for Information Interchange,美国标准信息交换代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言.它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646.标准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.标识符、关键字的概念在编程语言中,标识符就是程序员自己规定的具有特定含义的词,比如类名称,属性名称,变量名等.关键字就是程序发明者规定的有特殊含义的单词,又叫保留字 .注释语句的作用注释语句在程序的开始或中间,不具有任何功能实现的作用,仅仅是对程序进行说明的语句.注释语句在程序运行过程中不运行,却是程序编写时的重要内容,对于理解程序很重要.表达式的组成及类型表达式,是由数字、算符、数字分组符号括号、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合.类型:算术表达式:是最常用的表达式,又称为数值表达式.它是通过算术运算符来进行运算的数学公式.加法、减法、乘法、除法、求余关系表达式:用关系运算符将两个表达式连接起来的式子,称关系表达式.关系表达式的值是逻辑值“真”或“假”.=等于、<小于、<=小于等于、>大于、>=大于等于、<>不等于逻辑表达式:用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式.逻辑表达式的值是一个逻辑值,即“true”或“false”.NOT非、AND与、OR或子程序和函数的概念子程序:在计算机科学中,子程序英语:Subroutine, procedure, function, routine, method, subprogram, callable unit,是一个大型程序中的某部份代码,由一个或多个语句块组成.它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性.函数:在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用.要善于利用函数,以减少重复编写程序段的工作量.许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,所以,函数也可以说是许多代码的集合,这就是程序中的函数.数据、数据元素、数据对象、数据项的概念数据:数据就是数值,也就是我们通过观察、实验或计算得出的结果.数据有很多种,最简单的就是数字.数据也可以是文字、图像、声音等.数据可以用于科学研究、设计、查证等.数据元素:数据元素data element是计算机科学术语.它是数据的基本单位,数据元素也叫做结点或记录.在计算机程序中通常作为一个整体进行考虑和处理.有时,一个数据元素可由若干个数据项组成,例如,一本书的书目信息为一个数据元素,而书目信息的每一项如书名、作者名等为一个数据项.数据项是数据的不可分割的最小单位.数据对象:Data Object是性质相同的数据元素的集合,是数据的一个子集,数据对象是一种运行时的概念.可以是外部实体例如,产生或使用信息的任何事物、事物例如,报表、行为例如,打电话、事件例如,响警报、角色例如,教师、学生、单位例如,会计科、地点例如,仓库或结构例如,文件等.总之,可以由一组属性来定义的实体都可以被认为是数据对象.数据项:数据项又称数据元素data element,是数据的基本单位,一个数据可由若干个数据项data item组成,数据项是数据的不可分割的最小单位.数据的逻辑结构、存储结构数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构.逻辑结构形式地定义为K,R或D,S,其中,K是数据元素的有限集,R是K上的关系的有限集.了解知识:逻辑结构有四种基本类型:集合结构、线性结构、树状结构和网络结构.表和树是最常用的两种高效数据结构,许多高效的算法能够用这两种数据结构来设计实现.表是线性结构的全序关系,树偏序或层次关系和图局部有序weak/local order是非线性结构.数据结构在计算机中的表示映像称为数据的物理存储结构.它包括数据元素的表示和关系的表示.数据运算数据运算是对数据依某种模式而建立起来的关系进行处理的过程.最基本的数据运算有:①算术运算,如:加、减、乘、除、乘方、开方、取模等;②关系运算,如:等于、不等于、大于、小于等;③逻辑运算,如:与、或、非、恒等、蕴含等.数据结构的两大逻辑结构和四种常用的存储表示方法数据的逻辑结构分两大类:线性结构和非线性结构了解知识:线性结构是一个有序数据元素的集合.常用的线性结构有:线性表,栈,队列,双队列,数组,串.常见的非线性结构有:二维数组,多维数组,广义表,树二叉树等,图.数据的存储方法有四种:顺序存储方法、链接存储方法、索引存储方法和散列存储方法了解知识:1顺序存储方法:该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现.由此得到的存储表示称为顺序存储结构Sequential Storage Structure,通常借助程序语言的数组描述.该方法主要应用于线性的数据结构.非线性的数据结构也可通过某种线性化的方法实现顺序存储.2链接存储方法:该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示.由此得到的存储表示称为链式存储结构Linked Storage Structure,通常借助于程序语言的指针类型描述.3索引存储方法:该方法通常在储存结点信息的同时,还建立附加的索引表.索引表由若干索引项组成.若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引Dense Index.若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引Spare Index.索引项的一般形式是:关键字、地址关键字是能唯一标识一个结点的那些数据项.稠密索引中索引项的地址指示结点所在的存储位置;稀疏索引中索引项的地址指示一组结点的起始存储位置.4散列存储方法:该方法的基本思想是:根据结点的关键字直接计算出该结点的存储地址.四种基本存储方法,既可单独使用,也可组合起来对数据结构进行存储映像.同一逻辑结构采用不同的存储方法,可以得到不同的存储结构.选择何种存储结构来表示相应的逻辑结构,视具体要求而定,主要考虑运算方便及算法的时空要求.算法和程序的关系算法是对特定问题求解步骤的描述,它是指令的有限序列.算法与程序的关系:算法和程序都是指令的有限序列 ,但是,程序是算法,而算法不一定是程序.算法和程序的区别主要在于:1 在语言描述上,程序必须是用规定的程序设计语言来写,而算法很随意;2 在执行时间上,算法所描述的步骤一定是有限的,而程序可以无限地执行下去.所以:程序 = 数据结构 + 算法常用数据类型种类及特性不同的变成语言,数据类型的说法有差异.一般而言包含:数字型或者数值型,常有 Integer整型、Long 长整型、Single单精度浮点型、Double双精度浮点型和 Currency货币型.文本型:常有String 字符串型逻辑型:若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为Boolean 类型.常量和变量的概念“常量”在程序运行时,不会被修改的量.换言之,常量虽然是为了硬件、软件、编程语言服务,但是它并不是因为硬件、软件、编程语言而引入.变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问.字符串的概念及应用字符串或串String是由数字、字母、下划线组成的一串字符.一般记为 s=“a1a2···an”n>=0.它是编程语言中表示文本的数据类型.在程序设计中,字符串string为符号或数值的一个连续序列,如符号串一串字符或二进制数字串一串二进制数字.数组、数组元素、下标变量数组:就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合称为数组.数组元素是组成数组的基本单元.数组元素也是一种变量, 其标识方法为数组名后跟一个下标.下标表示了元素在数组中的顺序号.数组元素通常也称为下标变量.了解知识:数组元素的一般形式为:数组名下标,其中下标只能为整型常量或整型表达式.。
软件工程第6章 软件编码设计
10
(1)理论标准 1)理想的模块化机制、易于阅读和使用的控制结 构及数据结构 模块化、良好的控制结构和数据结构可以降低编码 工作的难度,增强程序的可理解性,提高程序的可测试 性和可维护性,从而减少软件生存周期中的总成本,并 缩短软件开发所需的时间。 2)完善、独立的编译机制
11
(2)实用标准 1)系统用户的要求 由于用户是软件的使用者,因此软件开发者应充分 考虑用户对开发工具的要求。特别是当用户要负责软件 的维护工作时,用户理所应当地会要求采用他们熟悉的 语言进行编程。 2)工程的规模 3)软件的运行环境 4)可以得到的软件开发工具
16
(3)语句的构造及书写 语句是构成程序的基本单位,语句的构造方式和书 写格式对程序的可读性具有非常重要的决定作用。 在一行内只写一条语句,并且采取适当的移行格式, 使程序的逻辑和功能变得更加明确。 程序编写首先应当考虑清晰性,不要刻意追求技巧 性,使程序编写得过于紧凑。
17
(4)输入/输出 由于输入和输出是用户与程序之间传递信息的渠道, 因此输入、输出的方式往往是用户衡量程序好坏的重要 指标。为了使程序的输入、输出能便于用户的使用,在 编写程序时应对输入和输出的设计格外注意。 1)输入 2)输出
23
良好的编码风格,应该以结构程序设计的原则为指 导,使用单输入口和单输出口的控制结构。倡导源程序 代码的文档化,程序内部良好的文档资料,有规律的数 据说明格式,简单清晰的语句构造和输入输出格式等, 都对程序的可读性有很大作用,也在相当大的程度上改 进了程序的可维护性。程序的输入输出应该充分考虑运 行工程学的要求,在满足数据可靠性的前提下,尽量做 到对用户友善。
19
(1)用于提高运行速度的指导原则 ①编写程序之前,先对需要使用的算术表达式和逻 辑表达式进行化简。 ②尽可能多地采用执行时间短的算术运算。 ③尽量避免使用多维数组、指针和其他复杂的数据 类型。 ④尽量采用整型算术表达式和布尔表达式。 ⑤尽可能减少循环体,特别是内循环中语句的个数。 ⑥尽量使同一表达式中的数据类型保持统一。 ⑦应当对所有的输入和输出安排适当的缓冲区,以 减少频繁通信所带来的额外开销。
计算机程序设计语言分为机器语言汇编语言和高级语言三种简述计算机程序设计语言机器语言
计算机程序设计语言分为机器语言汇编语言和高级语言三种简述计算机程序设计语言机器语言计算机程序设计语言是指用于编写计算机程序的语言。
根据其表达能力和使用方式的不同,计算机程序设计语言可以分为机器语言、汇编语言和高级语言三种。
一、机器语言机器语言是计算机可以直接识别和执行的语言。
它是由二进制代码组成的指令集,对应着计算机的硬件指令,使用数字编码来表示不同的操作和数据。
机器语言具有与硬件紧密结合、执行效率高的特点,但是编写和阅读机器语言程序非常困难,因为它需要了解特定计算机的指令集和操作方式。
所以,机器语言往往只是由计算机专家来使用,且应用广泛的高级语言编写的程序通常需要通过编译器或解释器将其转换为机器语言才能执行。
二、汇编语言汇编语言是在机器语言的基础上进行了一定的抽象和简化,使用助记符(Mnemonic)来代替二进制码表示指令。
每个助记符对应一个具体的机器指令,这使得程序员不再需要记忆和编写一长串的0和1。
汇编语言相对于机器语言更易于理解和编写,但是仍然需要对特定的硬件架构有一定的了解。
为了将汇编语言程序转换为机器语言,需要使用汇编器进行汇编过程。
三、高级语言高级语言是相对于机器语言和汇编语言而言的,它更加接近自然语言,更容易理解和编写。
高级语言的语法和结构以及与硬件的关系都经过了抽象和简化,使得程序员可以更加专注于解决问题本身,而不需要过多关注底层细节。
常见的高级语言有C、C++、Java、Python等。
高级语言编写的程序通常以源代码的形式存储,并通过编译器或解释器将其转换为机器语言执行。
在实际开发中,高级语言被广泛应用。
相对于机器语言和汇编语言,高级语言具有更高的灵活性和可维护性,对程序员的要求也相应降低。
不同的高级语言适用于不同的应用场景,例如C语言适用于系统级编程,Java适用于跨平台应用开发,Python适用于科学计算和数据分析等。
总结而言,计算机程序设计语言分为机器语言、汇编语言和高级语言三种。
《软件工程专业基础综合(840)》考试大纲
《软件工程专业基础综合(840)》考试大纲江西财经大学软件与通信工程学院第一部分《C程序设计》(占总分30%)参考书目:谭浩强,《C程序设计》(第3版),清华大学出版社2005年第2章数据类型、运算符与表达式【内容】1、C的数据类型2、常量和变量3、整型数据、实型数据、字符型数据4、变量赋初值5、各类数值型数据间的混合运算6、算术运算符和算术表达式7、赋值运算符和赋值表达式8、逗号运算符和逗号表达式【要求】1、掌握C语言的数据类型、常量与变量的概念,掌握标识符的命名规则2、掌握整型数据、实型数据和字符型数据的特点和使用3、掌握变量赋初值的方法4、掌握算术表达式、赋值表达式和逗号表达式的使用方法5、了解各类数值型数据间混合运算时类型转换的方法第3章最简单的C程序设计【内容】1、C语句概述2、程序的三种基本结构3、赋值语句4、数据输入输出的概念及在C语言中的实现5、字符数据的输入输出【要求】1、掌握C语言的分类、三种基本程序结构和赋值语句的使用方法2、掌握printf函数和scanf函数的格式和使用3、掌握字符数据的输入输出函数第4章逻辑运算和判断选取控制【内容】1、关系运算符和关系表达式2、逻辑运算符和逻辑表达式3、if语句和switch语句【要求】1、掌握关系运算符、关系表达式、逻辑运算符和逻辑表达式的使用2、掌握if语句和switch语句的格式和使用3、掌握条件运算符的格式和使用第5章循环控制【内容】1、while、do-while和for语句2、循环的嵌套3、break语句和continue语句【要求】1、掌握while、do-while和for语句的格式和使用2、掌握循环结构程序设计方法第6章数组【内容】1、一维数组的定义和引用2、二维数组的定义和引用3、字符数组、常用字符串处理函数【要求】1、掌握一维数组以及二维数组的定义和使用2、掌握字符串的使用和字符串函数的应用第7章函数【内容】1、函数定义的一般形式2、函数参数和函数的值3、函数的调用4、函数的嵌套调用5、变量的存储类别:自动变量、静态变量、外部变量、寄存器变量【要求】1、掌握函数定义的格式2、掌握函数的形式参数和实际参数以及函数调用时的参数传递3、掌握函数嵌套调用的方法4、掌握自动变量、静态变量、外部变量、寄存器变量的概念和作用域第8章预处理命令【内容】1、宏定义2、文件包含处理【要求】1、掌握宏定义和文件包含处理的使用第9章指针【内容】1、地址和指针的概念2、变量的指针和指向变量的指针变量3、数组的指针和指向数组的指针变量4、字符串的指针和指向字符串的指针变量【要求】1、了解地址和指针的概念2、掌握指针变量的定义及指向简单变量指针的使用方法第10章结构体和共同体【内容】1、结构体变量的定义、引用和初始化2、结构体数组的定义和使用3、指向结构体类型数据的指针4、共用体【要求】1、掌握结构体变量的定义、引用和初始化2、掌握结构体数组的定义和使用3、掌握指向结构体类型数据的指针第二部分《数据结构》(占总分40%)参考书目:严蔚敏,《数据结构》(C语言版),清华大学出版社2007年【考查目标】1. 理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异;实现各种基本操作。
程序设计基本概念
程序设计基本概念程序设计是计算机科学的核心领域之一,它涉及到如何编写、测试和维护被计算机执行的指令序列。
程序设计的基本概念包括算法、数据结构、编程语言和软件开发流程等。
一、算法算法是解决问题的一系列步骤或规则。
在程序设计中,算法描述了解决特定问题的方法。
一个好的算法应当具备清晰、可执行、高效和正确性的特点。
清晰:算法的描述应当清晰明了,便于程序员理解和实现。
可执行:算法应当能够被转化为具体的计算机指令,才能被电脑执行。
高效:算法应当在合理的时间范围内完成任务,而不是消耗大量的计算资源。
正确性:算法应当能够正确地解决问题,符合预期的结果。
二、数据结构数据结构是程序设计中封装数据和操作的方式。
常见的数据结构包括数组、链表、栈、队列、树和图等。
选择合适的数据结构对于解决问题和提高程序的效率非常重要。
数组:用于存储一组固定大小的元素,访问元素的时间复杂度为O(1)。
链表:由节点组成,每个节点包含数据和指向下一个节点的引用,支持高效的插入和删除操作。
栈:后进先出的数据结构,支持压栈和弹栈操作。
队列:先进先出的数据结构,支持入队和出队操作。
树:由节点组成,每个节点可以有多个子节点,常用于快速搜索和排序。
图:由节点和边组成,用于表示多对多的关系。
三、编程语言编程语言是程序员与计算机之间进行沟通的桥梁,它定义了一套语法和语义规则。
常见的编程语言包括C、C++、Java、Python和JavaScript等。
选择合适的编程语言取决于问题的复杂度、语言的特性和个人经验等。
C语言:低级别、高效的编程语言,广泛应用于操作系统和底层开发。
C++语言:面向对象的扩展C语言,支持更高级的抽象和模块化。
Java语言:跨平台的编程语言,具有良好的可移植性和安全性。
Python语言:简洁易读的解释型语言,适合快速开发和原型设计。
JavaScript语言:主要用于前端开发,处理网页交互和动态效果。
四、软件开发流程软件开发流程是指将程序设计从概念阶段转化为可执行程序的一系列步骤。
计算机语言的分类及特点
计算机语言的分类及特点计算机语言是人与计算机之间进行交流的一种工具,它是一种特殊的编码系统,用于描述计算机能够理解和执行的指令。
根据不同的用途和特点,计算机语言可以分为机器语言、汇编语言、高级程序设计语言和脚本语言等几类。
1. 机器语言:机器语言是计算机能够直接理解和执行的语言,它使用二进制代码来表示指令和数据。
每一条指令都对应着计算机硬件中的一个操作,例如加法、乘法等。
机器语言具有直接性和底层性的特点,可以直接操作计算机硬件,但是编写和阅读机器语言非常困难,因为它是由一长串的二进制代码组成,对于人来说不直观且容易出错。
2. 汇编语言:汇编语言是机器语言的一种抽象表示,它使用助记符(mnemonic)来代替二进制代码,使得指令更易于理解和记忆。
汇编语言通过使用汇编器将汇编代码转换成机器语言,再由计算机执行。
汇编语言相对于机器语言来说更加人性化,但仍然需要对底层硬件有一定的了解和掌握。
3. 高级程序设计语言:高级程序设计语言是相对于机器语言和汇编语言而言的,它是一种更加接近自然语言的编程语言。
高级程序设计语言具有语法规则和语义规则,可以用来编写复杂的程序。
高级程序设计语言主要有C、C++、Java、Python等,每种语言都有自己的特点和适用场景。
相对于机器语言和汇编语言,高级程序设计语言具有抽象性和可移植性的特点,能够更加高效地进行开发和维护。
4. 脚本语言:脚本语言是一种用于编写脚本程序的计算机语言,它通常用于控制应用程序的行为和执行特定任务。
脚本语言相对于高级程序设计语言来说更加灵活和简洁,常用于自动化任务、网页开发、系统管理等领域。
常见的脚本语言包括JavaScript、PHP、Perl、Shell等。
脚本语言通常不需要编译,而是由解释器直接执行,因此运行速度相对较慢。
总结起来,计算机语言的分类及特点如下:1. 机器语言:直接操作计算机硬件,编写和阅读困难。
2. 汇编语言:相对于机器语言来说更加人性化,需要使用汇编器进行转换。
软件工程考核知识点-第6章-软件编码
软件工程考核知识点-第6章-软件编码6.1 程序设计语言的特性及选择程序设计语言是人机通信的工具之一,使用这类语言“指挥”计算机干什么,是人类特定的活动。
我们从以下三个方面介绍语言的特性。
6.1.1 程序设计语言特性1. 心理特性(1)歧义性。
(2)简洁性。
(3)局部性和顺序性。
(4)传统性。
2. 工程特性(1)可移植性。
(2)开发工具的可利用性。
(3)软件的可重用性。
(4)可维护性。
3. 技术特性支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。
6.1.2 程序设计语言的选择1. 项目的应用领域(1)科学工程计算。
需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有:FORTRAN语言、C语言等。
(2)数据处理与数据库应用SQL为IBM公司开发的数据库查询语言4GL称为第4代语言(3)实时处理实时处理软件一般对性能的要求很高,可选用的语言有:汇编语言、Ada语言等。
(4)系统软件。
如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。
(5)人工智能。
如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择Prolog、Lisp语言。
2. 软件开发的方法(详见第9章)有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。
如果是面向对象方法,宜采用面向对象的语言编程。
3. 软件执行的环境良好的编程环境不但有效提高软件生产率,同时能减少错误,有效提高软件质量。
4. 算法和数据结构的复杂性科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂复杂算法的能力,或者有构造复杂数据结构的能力。
5. 软件开发人员的知识编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。
软件工程Module编码和版本管理
Software Engineering
7
脚本语言的分类
csh和bash是作为作业控制程序(shell程序) 的输入语言;
Awk是为了做文本处理; PHP和JavaScript基本上是为了生成包含动
态内容的网页(分别在服务器端和客户端执 行); Perl、Python、Ruby和Tcl是通用语言。这 里最强调的是快速原型,更重视的是表达方 便而不是执行速度。
18
源程序的文档化 (code documentation)
有意义的变量名称 适当的注释 标准的书写格式
▪ 用分层缩进的写法显示嵌套结构的层次; ▪ 在注释段与程序段、以及不同程序段之间插入空
行; ▪ 每行只写一条语句; ▪ 书写表达式时,适当使用空格或圆括号等作隔离
符;
好的源程序本身就是详细设计文档!
Windows NT
¹®¼ °ü¸® ¿£Áø.EXE
Windows NT
¹®¼ °ü¸® ¾ ÖÇø´
Solaris
ÀÀ¿ë¼ ¹ö.EXE
IBM Mainframe
Alpha UNIX
µ¥ÀÌŸº£À̽ º¼ ¹ö
GraphicFile
File
FileList
Component Diagram
- À¯´Ð½ º ¸Ó½ Å: ÀÀ¿ë¼ ¹ö ¹× µ¥ÀÌŸ¼ ¹ö, Åë½ Å ¼ ¹ö - IBM ¸ÞÀÎÇÁ·¹ÀÓ: µ¥ÀÌŸ¼ ¹ö, Åë½ Å ¼ ¹ö
9: sortByName ( )
1: Doc view request ( )
user : »ç¿ëÀÚ
mainWnd : MainWnd
编写服务器端程序,用php、perl、python、asp、jsp。
软件工程程序设计语言和编码学习教案
类
对象的抽象,定义了对象的属性和方法。
继承
子类继承父类的属性和方法,实现代码重用 。
面向对象编程语言
Java:流行的面向对象编程语言 ,具有跨平台性、安全性、垃圾
回收等特点。
C支持面向对象编程的C语言扩展 ,具有高效性能和丰富的库支持
。
Python:简洁易读的面向对象编 程语言,适用于科学计算、数据
作为返回值。
不可变性
函数式编程语言强调不可变性,即数 据一旦创建就不能被修改,只能通过 新的数据来替代旧的数据。
递归
递归是函数式编程中常用的技术,用 于解决一些需要分解成更小问题的问 题。
函数式编程应用场景
数据处理
函数式编程语言非常适合处理大量数据,例如在数据分析、数据挖掘 等领域中。
算法设计
函数式编程语言可以用于设计各种算法,例如排序、搜索、图算法等 。
并发和分布式系统
由于函数式编程语言强调不可变性,因此它们非常适合用于构建并发 和分布式系统。
Web开发
一些函数式编程语言(如Haskell、Clojure等)可以用于Web开发, 它们通常具有更好的性能和更强的类型安全性。
07
并发编程语言
并发编程基础
01
02
03
并行计算
并行计算是指在同一时间 内同时进行多个计算任务 的技术。
系统的学科。
软件工程的目标是提高软件的质 量、效率、可靠性和可维护性。
软件工程涉及软件开发的全过程 ,包括需求分析、设计、编码、
测试和维护等。
软件工程过程
设计
根据需求分析结果,设计软件 系统的结构、模块、接口和数 据结构等。
测试
对软件系统进行测试,确保其 符合需求并能够正常运行。
软件工程第11章(3-01)
2.编码的目的
编码的目的是使用选定的程序设计语言,把模块的过程性 描述翻译为用该语言书写的源程序。 编码产生的源程序应该正确可靠、简明清晰,而且具有较 高的效率。前两点要求是一致的,因为源代码越是清楚简 明,就越便于验证源代码和模块规格说明的一致性,也就 越容易对它进行测试和维护。
1.代码和程序遵守标准 与规范的重要性
1.2.2 编码语言的基本成分
1.数据成分 数据成分指明该语言能接受的数 据,用来描述程序中所涉及的数 据。如各种类型的变量、数组、 指针、记录等。作为程序操作的 对象,具有名称、类型和作用域 等特征。使用前要对数据的这些 特征加以说明。数据名称由用户 通过标识符命名,类型说明数据 须占用多少存储单元和存放形式, 作用域说明数据可被使用的范围。 以某语言为例,其数据构造方式 可分为基本类型和构造类型
1.2.2 编码语言的基本成分
3.控制成分 控制成分指明该语言允许的控制结构,人们可以利用这 些控制成分来构造程序中的控制逻辑。基本的控制成分 包括顺序控制结构、条件选择结构和循环结构
1.2.2 编码语言的基本成分
4.转输成分 传输成分指明该语言允许的数据传输方式,
在程序中可用它进行数据传输。 例如,Turbo C语言标准库提供了两个控 制台格式化输入、输出函数printf()和 scanf(),这两个函数可以在标准输入/输 出设备上以各种不同的格式读/写数据。 printf()函数用来向标准输出设备写数据, scanf()函数用来从标准输入设备上读数据。
1.1.4 编码途径
程序编码的一般途径有以下几种。 1.自顶向下的开发 2.自底向上的开发
3.自底向上和自顶向下相结合的开发
软件工程课程要求及学时安排
软件工程课程要求及学时安排软件工程(S o f t w a r e E n g i n e e r i n g)学分数3周学时3课程性质专业基础课预修课程程序设计,离散数学,数据结构教学目的通过本课程的教学,使学生掌握软件工程的基本概念和原则,培养学生用工程化的方法高效地开发高质量软件的初步能力,以及项目管理的初步能力。
基本内容软件工程的基本概念、原则、模型、方法、过程基本要求掌握软件工程的基本概念和原则,能运用软件工程的基本原理、模型、方法和过程开发简单的应用软件。
增强软件开发的工程化和规范化意识,提高高效率、高质量开发软件的能力。
教学用书钱乐秋、赵文耘、牛军钰编《软件工程》,清华大学出版社,2007教学内容、要求和课时安排一.概论(学时数:5)教学内容1.计算机软件软件定义,软件语言及分类(需求定义语言,功能性语言,设计性语言,程序设计语言,文档语言),软件的特点和分类,软件发展历史,软件危机2.软件工程软件工程定义,目标,过程,原则,软件生存周期3.软件过程软件过程定义和分类,软件过程能力成熟度模型CMM,软件过程能力成熟度模型集成CMMI4.软件过程模型瀑布模型,演化模型,增量模型,原型模型,螺旋模型,喷泉模型,基于构件的开发模型,形式化方法模型5.敏捷软件开发敏捷软件开发的价值观和开发原则,XP方法6.CASE工具与环境计算机辅助软件工程(CASE),CASE工具,集成型开发环境教学要求1.掌握软件及软件工程的基本概念2.掌握软件生存周期各阶段的任务3.了解软件过程的概念,以及CMM和CMMI的由来、作用、各等级的特点、结构4.掌握各种软件过程模型的特点5.了解敏捷软件开发的基本思想6.了解CASE工具与环境的作用二.计算机系统工程(学时数:1)教学内容基于计算机的系统,系统工程的任务,可行性分析教学要求1.了解系统工程的任务2.掌握可行性分析的方法三.需求工程(学时数:3)教学内容1.需求工程概述需求工程定义,需求工程六个阶段2.需求获取软件需求定义,软件需求内容,需求获取方法与策略3.需求分析、协商与建模需求分析原则,信息域、抽象、分解与多视点分析,需求协商,需求建模基本方法简介4.需求规约与验证需求规约的原则、需求规约、需求验证5.需求管理需求管理定义、需求跟踪教学要求1.掌握需求工程的定义及六个阶段2.掌握软件需求内容3.掌握需求获取的方法与策略4.掌握需求分析原则5.掌握需求规约的原则6.掌握需求规约的内容7.了解需求验证过程8.了解需求管理相关概念四.设计工程(学时数:3)教学内容1.软件设计工程概述软件设计的任务、软件设计的目标、软件设计的过程2.软件设计原则抽象化与逐步求精、模块化、信息隐藏、模块独立、耦合、内聚3.软件体系结构设计体系结构发展过程、软件体系结构的风格、评估可选的体系结构4.部件级设计技术结构化程序设计方法、图形表示法、判定表、设计性语言PDL 5.设计规约与设计评审设计规约、设计评审教学要求1、掌握软件设计工程的任务、目标和过程2、掌握软件设计原则3、了解软件体系结构设计4、掌握部件级设计技术5、了解设计规约与设计评审五.结构化分析与设计(学时数:6)教学内容1.结构化分析结构化分析的基本思想,结构化分析的步骤,分析模型的描述形式2.数据流图图形表示,分层数据流图的画法,分层数据流图的审查3.数据字典数据流、文件、数据项、加工、源或宿等条目的内容,描述基本加工的方法,包括结构化语言、判定表、判定树4.结构化设计结构图,启发式设计策略,结构化设计的步骤5.DFD到结构图的映射变换流,事务流,变换分析,事务分析,分层DFD的映射6.设计优化初始结构图的改进,结构图改进技巧教学要求1.掌握结构化分析和设计的基本概念和原理2.掌握结构化分析和设计的步骤3.会应用结构化分析方法画分层数据流图,并建立相应的数据字典4.会判断分层数据流图的合理性5.会应用结构化设计方法画结构图,并掌握优化结构图的基本手段六.面向数据结构的分析与设计(学时数:1)教学内容面向数据结构方法的基本思想,Jackson图,JSP方法,JSD方法教学要求1.掌握面向数据结构方法的基本思想2.了解JSP方法和JSD方法七.面向对象的分析与设计(学时数:8)教学内容7.面向对象的基本概念面向对象,对象,类,继承,消息,多态性,动态绑定8.面向对象分析和设计的一般过程面向对象分析的任务、步骤和一般分析过程,面向对象设计的一般过程,系统设计,对象设计,设计模式9.UMLUML发展历史,视图,图10.用况建模用况建模的步骤,确定执行者,确定用况,用况描述,用况间的关系11.静态建模标识类及CRC技术,类之间的关系:关联(二元关联,三元关联,受限关联,聚集,组合,关联类,导航性)、泛化、实现、依赖,约束,派生,模板12.动态建模用状态机图、活动图、顺序图、通信图描述系统的动态行为13.物理体系结构建模用构件图、内部结构图、部署图描述系统物理上的体系结构教学要求1.掌握面向对象的基本概念2.掌握面向对象分析和设计的一般步骤3.会应用UML建立用况模型,并给出用况的描述4.会应用UML建立静态模型5.会应用UML建立动态模型6.会应用UML建立物理体系结构模型八.基于构件的软件开发(学时数:2)教学内容14.基于构件的软件开发(CBSD)CBSD的基本思想和原理,CBSD对质量、生产率和成本的影响15.CBSD过程CBSD模型,领域工程,应用系统工程16.可复用构件对可复用构件的要求,可变性分析,可变性机制17.应用系统工程基于CBSD的应用系统分析和设计,构件的鉴定、特化和组装18.构件的管理构件的分类描述,构件库管理系统教学要求1.掌握CBSD的基本思想和原理2.了解CBSD的过程以及基于CBSD的应用系统分析和设计3.了解可复用构件的构建和管理九.人机界面设计(学时数:2)教学内容1.人的因素人对感知过程的认识、用户的技能和行为方式、人体测量学对设计的影响2.人机界面风格语言界面、图形用户界面、直接操纵用户界面、多媒体用户界面、多通道用户界面3.人机界面分析与建模人机界面设计过程、人机界面设计中设计的模型、任务分析的途径与方法4.界面设计活动定义界面对象和动作、设计问题、黄金原则5.实现工具6.设计评估教学要求1.了解人机界面设计中的人的因素2.了解人机界面风格3.掌握人机界面设计过程4.掌握界面设计活动5.了解实现工具6.了解设计评估十.程序设计语言和编码(学时数:2)教学内容1.程序设计语言程序设计语言的基本成分、程序设计语言特性、程序设计语言分类、程序设计语言选择2.程序设计风格源程序文档化、数据说明、语句结构、输入和输出教学要求掌握程序设计语言和程序设计风格。
程序设计语言与编码
3. 软件执行的环境 良好的编程环境不但有效提高软件生产率, 同时
能减少错误,有效提高软件质量。近几年推出了许多 可视化的软件开发环境, 如Visual BASIC, Visual C, Visual FoxPro及Delphi(面向对象的Pascal)等, 都提供了强有力的调试工具, 帮助你快速形成高质 量的软件。
29
(2) 程序应加注释。 注释是程序员与读者之间通信 的重要工具,用自然语言或伪码描述。它说明了程序 的功能,特别在维护阶段, 对理解程序提供了明确 指导。注释分序言性注释和功能性注释。
30
序言性注释应置于每个模块起始部分, 主要内容有: ① 说明每个模块的用途、 功能。 ② 说明模块的接口即调用形式、 参数描述及从属模 块的清单。 ③ 数据描述: 指重要数据的名称、 用途、 限制、 约束及其他信息。 ④ 开发历史: 指设计者、 审阅者姓名及日期, 修 改说明及日期。
(2) 一个语句说明多个变量时, 各变量名按字典序 排列。
(3) 对于复杂的数据结构, 要加源自释, 说明在程序 实现时的特点。33
3. 语句构造 语句构造的原则为:简单直接,不能为了追求效
率而使代码复杂化。为了便于阅读和理解,不要一行 多个语句。不同层次的语句采用缩进形式,使程序的 逻辑结构和功能特征更加清晰。 要避免复杂的判定条 件,避免多重的循环嵌套。表达式中使用括号以提高 运算次序的清晰度等。
31
功能性注释嵌入在源程序内部,说明程序段或语句的 功能以及数据的状态。 ① 注释用来说明程序段, 而不是每一行程序都要加 注释。 ② 使用空行或缩进或括号, 以便很容易区分注释和 程序。 ③ 修改程序也应修改注释。
32
2. 数据说明
为了使数据定义更易于理解维护,有以下指导原则: (1) 数据说明顺序应规范,使数据的属性更易于查找, 从而有利于测试、纠错与维护。例如按常量说明、类 型说明、 全程量说明及局部量说明顺序。
软件编码
/* ADD MONTHLY-SALES TO ANNUAL-TOTAL */ TOTAL = AMOUNT+TOTAL
要点 描述一段程序,而不是每一个语句; 用缩进和空行,使程序与注释容易区别; 注释要正确。
徐州师大计科系
19
3、视觉组织
空格、空行和移行
恰当地利用空格,可以突出运算的优先性, 避免发生运算的错误。 例如 ,将表达式 (A<-17)ANDNOT(B<=49)ORC 写成 (A<-17) AND NOT (B<=49) OR C 自然的程序段之间可用空行隔开;
徐州师大计科系 13
名字不是越长越好,应当选择精炼的 意义明确的名字。必要时可使用缩写 名字,但这时要注意缩写规则要一致, 并且要给每一个名字加注释。同时, 在一个程序中,一个变量只应用于一 种用途。
NEW.BALANCE.ACCOUNTS.PAYABLE NBALAP N
徐州师大计科系 14
2、程序的注释
徐州师大计科系 11
源 程 序 文 档 化
标识符的命名 安排注释 程序的视觉组织
徐州师大计科系
12
1、符号名的命名
符号名即标识符,包括模块名、变 量名、常量名、标号名、子程序名、 数据区名以及缓冲区名等。 这些名字应能反映它所代表的实际 东西,应有一定实际意义。 例如,表示次数的量用Times,表 示总量的用Total,表示平均值的 用Average,表示和的量用Sum等。
徐州师大计科系 4
从语言的内在特点看,高级语言可以分 为系统实现语言、静态高级语言、块结构高级
语言和动态高级语言等四类。
〖系统实现语言〗是为了克服汇编程序设计的困难 而从汇编语言发展起来的。C语言就是著名的系统 实现语言。 〖静态高级语言〗特点是静态地分配存储,方便了 编译程序的设计和实现,但是对程序员施加了较多 限制。例如,COBOL和FORTRAN。 〖块结构高级语言〗特点是提供有限形式的动态存 储分配。ALGOL和PASCAL是这类语言的代表。
0和1编译码阐释设计理念
0和1编译码阐释设计理念1.引言1.1 概述概述在现代的信息时代,0和1编码已经成为了信息传输和处理的基础。
0和1编码,又称为二进制编码,是一种将信息转化为电信号的方式。
通过使用0和1两个数字,我们可以表示出各种不同的信息,包括文字、图像、音频等等。
0和1编码的原理非常简单,只需要两个不同的数字即可表示出无限种可能的信息。
这是由于计算机系统中使用的电子器件只能识别两种状态,即开和关。
开状态可以用1来表示,关状态则用0表示。
通过将这两种状态组合起来,我们可以构造出各种复杂的信息。
0和1编码的应用领域非常广泛。
在计算机领域,例如数据存储和传输、逻辑运算等都离不开0和1编码。
在通信领域,数字通信系统使用0和1编码来传输信息。
在电子设备中,0和1编码也被广泛应用于逻辑门电路和芯片设计等方面。
本文将对0和1编码的基本概念和原理进行阐述,介绍0和1编码在不同领域的应用情况,并总结0和1编码的设计理念。
在未来,随着信息技术的不断发展,0和1编码将会继续演化和拓展其应用领域,为我们带来更多的便利和创新。
1.2 文章结构文章结构部分的内容主要是对整篇文章进行概述和安排,以便读者能够清晰地了解文章的组成和内容安排。
文章结构包括引言、正文和结论三个主要部分。
引言部分主要提供文章的背景和目的,引起读者对文章主题的兴趣;正文部分是文章的主体部分,详细介绍0和1编码的基本概念和原理以及在实际应用中的领域;结论部分总结文章的主要观点和设计理念,并探讨未来的发展趋势。
在本文中,引言部分包含了概述、文章结构和目的三个小节。
概述部分对整篇文章的主题进行简要介绍,指出0和1编码在信息技术中的重要性和广泛应用;文章结构部分则对整篇文章的组成进行了规划和安排,共包括引言、正文和结论三个主要部分;目的部分明确了本文旨在通过阐释0和1编码的设计理念,帮助读者深入理解其原理和应用领域。
综上所述,本篇长文的结构安排清晰合理,引言部分通过概述、文章结构和目的的介绍,为读者提供了整篇文章的框架和主旨。
C语言程序设计及程序代码
(D) 若干子程序组成
填空题
『1.5』C源程序的基本单位是________。
『1.6』一个C源程序中至少应包括一个_______。
『1.7』在一个C源程序中,注释部分两侧的分界符分别为 _____和_________。
『1.8』C语言中,输入操作是由库函数________完成的, 输出操作是由库函数_______完成的。
13
第13页/共15页
本章习题
『1.3』C语言规定:在一个源程序中,main函数的位置 ___。
(A)必须在最开始
(B)必须在系统调用的库函数的后面
(C)可以任意
(D)必须在最后
『1.4』一个C语言程序是由_______。
(A) 一个主程序和若干子程序组成 (B) 函数组成
(C) 若干过程组成
7
第7页/共15页
1.3 简单的C ---- The small C rogram. */ main ( ) { printf(“This is a c program.\n”); } 运行结果是在屏幕上显示: This is a c program.
第一行用 /* */ 括起来的是程序的注释,
c=max(a,b);
主函数
printf(“max=%d”,c);
}
int max(int x,int y)
{ int z;
被调用的
if(x>y)
子函数
z=x;
else
z=y;
return(z);
}
10
第10页/共15页
重点
1.3 简单的C程序介绍
C程序的特点
(1)一个C程序由一个或多个函数组成,其中必须有一 个用“main”命名的主函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多数4GL是面向领域的,很少是通用的。
15
自然语言
最理想的是可以使用自然语言(如英语、法语或汉语),使计算机能理解并立即执行请 求。但迄今为止,自然语言理解仍然是计算机科学研究中的一个难点,尽管在实验室的 研究中取得了一定的成果,但在现实中的应用仍然是相当有限的。
第11讲 程序设计语言和编码
• 编码(实现)阶段的任务是根据详细设计 说明书编写程序
• 程序设计语言的特性和程序设计风格会 深刻地影响软件的质量和可维护性
• 为了保证程序编码的质量,程序员必须 深刻理解、熟练掌握并正确地运用程序 设计语言的特性
• 此外,还要求源程序具有良好的结构性
和良好的程序设计风格
12
程序设计语言的发展和分类
• 程序设计语言的分类
• 按语言级别:低级语言和高级语言; • 按应用范围:通用语言和专用语言; • 按用户要求:过程式语言和非过程式语言
; • 按语言所含的成分:顺序语言、并发语言
和分布式语言
13
• 程序设计语言的发展史
▪ 第一代语言:机器语言和汇编语言 ▪ 第二代语言:早期的高级语言,如BASIC,
5
5)转向2)
• 语用(pragmatic)用来表示构成语言的各个记号和使用者的关系。
如:语言是否允许递归?是否要规定递归层数 的上界?这种上界如何确定?这些都属于语用上 的问题。
6
程序设计语言的基本成分
• 程序设计语言基本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分 • 请参考教材P250-251
16
程序设计语言的选择
• 为一个特定的开发项目选择编程语言时 ,通常要考虑如下因素:
• 应用领域 • 算法和计算复杂性 • 软件运行环境 • 用户需求,特别是性能需求 • 数据结构的复杂性 交叉编译器
17
• 项目所属的应用领域常常是首要的标准
• COBOL适用于商业领域 • FORTRAN适用于工程和科学计算领域 • Prolog、Lisp适用于人工智能领域 • Smalltalk、C++适用于OO系统的开发 • 有些语言适用于多个应用领域,如C
的GOTO语句会破坏程序的线性,提倡结构化程序设计。 ▪ 传统性:传统性容易影响人们学习新语种的积极性
10
• 工程特性
程序设计语言的特性影响人们思考程序的方式,从而也限制了人们与计算机进行通信 的方式。为满足软件工程的需要,程序设计语言还应该考虑:
将设计翻译成代码的便利程度; 编译器的效率; 源代码的可移植性; 配套的开发工具; 软件的可复用性和可维护性
11
• 应用特性
• 不同的程序设计语言满足不同的技术特性,可以对 应于不同的应用。例如Prolog语言适用于人工智能 领域、SQL语言适用于关系数据库。
• 语言的技术特性对软件工程各阶段有一定的影响, 特别是确定了软件需求之后,程序设计语言的特性 就很重要了,要根据不同项目的特性选择相应特性 的语言。
FORTRAN,COBOL等
▪ 第三代语言:具有很强的数据结构和过程 描述能力,支持结构化编程,如Pascal,M odula,C,Ada等
▪ 第四代语言(4GL):这类语言出现于七十 年代,其目的是为了提高程序开发速度, 以及让非专业用户能直接编制计算机程序
14
目前,第四代语言的种类繁多,尚无标准 ,在语法和能力上有很大差异,其中一些支 持非过程式编程,更多的是既含有非过程语 句,也含有过程语句。
19
使用低级语言的情况:
➢对运行时间和存储空间有过高要求的项 目,如电子笔记本中的软件
➢在某些不能提供高级语言编译程序的计 算机上开发程序,如单片机上的软件
▪ 紧致性(compactness):指程序员必须记忆的与编码有关的信息总量。刻画紧致性 的指标有:对结构化部件的支持程度,可用关键字和缩写的种类,算术及逻辑操作 符的数目,预定义函数的个数等。
▪ 局部性:程序由模块组成,应采用高内聚低耦合、模块独立、局部化等原则。 ▪ 线性:人们习惯于按逻辑上线性的次序理解程序,程序中大量的分支和循环、随意
8
影响程序员心理的语言特性有:
▪ 一致性:指语言采用的标记法(使用的 符号)协调一致的程度。如,一符多用 的标记法容易导致错误。
▪ 二义性:对语句不同理解所产生的二义 性将导致程序员对程序理解的混乱。如 ,
if C1 then S1 if C2 then S 3 else
9
x := a ** b ** c
2
提纲 • 程序设计语言 • 程序设计风格
3
基本概念
• 程序设计语言是指用于书写计算机程序的语言,它是一种实现性的软件语言 • 语法(syntax)用来表示构成语言的各个记号之间的组合规则,它是构成语言结构正
确成分所需遵循的规则集合
• 如C语言中for语句的构成规则是: for(表达式1;表达式2;表达式3)语句 语法中不涉及到这些记号的含义,也不涉及使用者
• 若有多种语言都适合于某项目的开发时,也可考虑选择开发人员比较熟悉的语言
18
• 选择高级语言还是低级语言
▪ 优先选择高级语言 开发和维护高级语言程序比开发和维护低
级语言程序容易得多
▪ 必要时使用低级语言 高级语言程序经编译后所产生的目标程序
的功效要比完成相同功能的低级语言程序 低得多,所以在有些情况下会部分或全部 使用低级语言
7
程序设计语言的特性
• 心理特性 • 从设计到编码的转换基本上是人的活动,因此,语言的性能对程序员的心理影响 将对转换产生重大影响 • 在维持现有机器的效率、容量和其它硬件限制条件的前提下,程序员总希望选择 简单易学、使用方便的语言,以减少程序出错率,提高软件可靠性,从而提高用 户对软件质量的可信度
4
• 语义(semantic)用来表示按照各种表示方式所表 示的各个记号的特定含义,但它不涉及到使用者。
如上述for语句中:表达式1表示循环初值;表达 式2表示循环条件;表达式3表示循环的增量;语句 为循环体。整个语句的语义是:
1)计算表达式 2)计算表达式2,若计算结果为0,则终止循环;否则转3 ) 3)执行循环体 4)计算表达式3