




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第四章 计算机程序设计与语言,DNA,它是我们舞蹈的乐章。,2,本章概要,本章介绍计算机程序设计的基本概念,包括模型的建立、算法的设计和表达、计算机程序设计语言、程序的编写、程序的测试、程序文档的建立和程序的维护。通过本章的学习,你将具备计算机程序设计的基本能力,可以利用学到的知识和方法尝试解决很多问题。学完本章,你将能够: 了解程序设计的基本步骤; 掌握至少两种表达算法的方法; 识别简单程序中的控制结构; 列出如今流行的编程语言; 描述各种编程语言的主要特征。,3,4.1.1 计算机程序,程序是计算机执行任何操作的驱动力,是计算机为完成某一任务所必须执行的一系列指令。 除了少量存储在ROM等存储器中的特殊程序外,程序大多以文件的形式存储在磁盘等外存储器上。,4,4.1.2 程序设计步骤,设计一个能解决实际问题的计算机程序需要经过以下几个过程: (1)建立模型:由实际问题的描述抽象出数学模型,即由物理模型到抽象模型,用形式化方法描述现实世界。 (2)算法设计:给出解决问题的步骤,即算法。同一个问题可以有各种不同的解决办法,可以从中选取一种最合适的算法。 (3)算法表达:选择一种表达算法的工具,对算法进行清晰的表达。 (4)编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。 (5)程序调试:对编写好的程序进行调试,修改程序中的错误。 (6)程序文档编写与程序维护:整理和编写程序文档,以便更好地维护程序。,5,4.2.1 建立模型,模型是对现实系统的一种描述,是现实系统的抽象和简化。 模型分为物理模型和数学模型两大类。 物理模型的建立: 对客观存在的事物进行形象的描述,列出已知的所有物理元素及关系,明确需要解决的问题。所以物理模型也是现实系统的一个简化. 数学模型的建立: 在物理模型的基础上,忽略其非重要的细节,抓住本质性的元素,对其符号化后,用数学的方法描述出来。,6,4.2.2 算法设计,算法是指为完成某项任务而构造的指令集,简单地说就是解决问题的方法和步骤。,7,4.2.2 算法设计,(1)输入系数a1,b1,c1,a2,b2,c2; (2)计算d=a1b2-a2b1; (3)如果d=0,打印“方程组无解或有无穷组解”,转(7); (4)计算x=(c1b2-c2b1)/ d; (5)计算y=(a1c2-a2c1)/ d; (6)输出:x,y; (7)输入是否继续解其他方程组的标记s(s=“Y”或s=“N”); (8)如果s=“Y”,转(1); (9)结束。 若要解决我们提出的“鸡兔同笼”问题,只要输入计算机已知的信息,如a1=1,b1=1,c1=36,a2=2,b2=4,c2=96,就可以按以上算法计算出结果:x=24,y=12。,8,4.2.2 算法设计,对于算法的评价有许多标准。但基本的标准有两个:一个是时间标准(时间复杂度),一个是空间标准(空间复杂度)。 所谓时间标准,简单说来,即执行这个算法需要多少时间,基本的原则是时间越短越好。 所谓空间标准,即执行这个算法需要占用多少资源(可以理解为占用了多少计算机存储单元),基本的原则是资源的占用越少越好。 但是随着计算机技术的发展,硬件性能不断提高,程序的规模越来越庞大,算法的清晰程度成了一个非常重要的问题。算法的易懂性也是我们衡量一个算法好坏的重要指标。,9,4.2.2 算法设计,设计算法时,还要注意以下几点: (1)通用性。 一个算法总是针对某类问题设计的,所以对于求解某类问题中的任何一个问题应该是有效的。 (2)确定性。 算法中的每个步骤都是确定的,在什么情况下做什么都非常明确,没有含糊不清的地方。 (3)有限性。 一个算法在执行时,必须经过有限步后停下来,结束算法执行,给出结果,而不能无限地执行下去。,10,4.2.3 算法表达,为了提高表达算法的清晰程度,需要选择一种合适的描述算法的工具。 常用的描述工具有:流程图,N-S图,PAD图,伪码等。,11,流程图(也称为程序框图)是最常用的一种表示法,12,PROCEDURE求解二元一次方程组 TYPE a1, b1, c1, a2, b2, c2, x, y IS REAL TYPE s IS CHAR DO WHILE TRUE /* 输入方程组系数 READ a1, b1, c1, a2, b2, c2 d=a1*b2-a2*b1 IF d=0 THEN WRITE 方程组无解或有无穷组解 ELSE /* 求方程组的惟一解并输出 BEGIN x=(c1*b2-c2*b1)/ d y=(a1*c2-a2*c1)/d WRITE X,Y END ENDIF,/* 控制循环是否结束 WRITE若继续循环输入Y,否则输入N READ S IF S“Y ”THEN EXIT ENDIF ENDDO END,伪码表示法好比是算法的注释系统,由编程语言和自然语言混合而成,13,4.3 编写计算机程序,程序的编写就是用程序设计语言把算法程序化。 编写程序的基本要求:首先是保证语法上的正确性。然后是保证语义的正确性,也就是通过运行程序,得到我们需要的正确结果。 高质量的程序还应体现在以下四个方面:可靠性高、运行速度快、占用存储空间小和易懂性。通常这四个方面不能同时满足,要根据具体情况权衡利弊,兼顾某些方面。在计算机速度越来越快,内存越来越大的今天,程序的易懂性显得更为重要。,14,“顺序控制结构”、“选择控制结构”和“重复控制结构”,15,4.3 编写计算机程序,这三种基本控制结构有以下共同的特点: (1)只有一个入口。 (2)只有一个出口。 (3)结构内的每一部分都有机会被执行到,也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它。 (4)结构内没有死循环(无终止的循环)。,16,4.3 编写计算机程序,2. 程序设计风格 程序编码时,保持良好的程序设计风格可以增加程序的可读性。由于影响程序可读性的因素很多,我们这里仅列出几个主要的方面供编程者参考。 (1)文档化(documentation) (2)格式化(layout) (3)模块化(modularization),17,4.4 程序的调试与维护,程序调试是为了验证程序正确性而执行程序的过程。 调试时需要选择测试数据作为输入,运行程序后看是否会输出预期的结果。如果没有产生正确的结果,程序员必须查找程序中的错误,修改错误,然后再调试修改后的程序。可能要经过多次反复,直到得出满意的结果。 所以要求我们根据某些原则选择有代表性的测试数据进行调试,以较少的调试次数,最大可能地发现程序中的错误。,4.4.1 黑盒调试法与白盒调试法,对程序进行调试可用两种方法进行 一种是把程序看成一个“黑盒子”,调试人员完全不考虑程序内部结构和处理过程,只考虑程序的功能,通过选择一些测试数据,看程序的功能是否都已实现,这就是黑盒调试法。 另一种是把程序看成一个打开的盒子,调试人员只关注程序内部的处理细节,通过选择一些测试数据,检查程序中的每个语句或分支是否都能正确执行,这就是白盒调试法。,19,4.4.1 黑盒调试法与白盒调试法, 黑盒调试法 为了调试程序的各个功能,我们把输入的二元一次方程组的系数分为以下四类,每一类设计一个调试用例。 合理的系数: (1)方程组有唯一解:a1=1,b1=1,c1=1,a2=0,b2=1,c2=2 (2)方程组无解:a1=1,b1=1,c1=1,a2=1,b2=1,c2=2 (3)方程组有无穷解:a1=1,b1=1,c1=1,a2=2,b2=2,c2=2 不合理的系数: (4)输入的不全是数值:a1=“a”,b1=5,c1=0,a2=6,b2=8,c2=7 选择合理的输入数据是验证程序的功能、性能是否符合设计的要求。 选择不合理的输入数据对程序进行调试非常重要,这是对程序可靠性的考验。,20,4.4.1 黑盒调试法与白盒调试法, 白盒调试法 为了让程序中的每个语句至少执行一次,使每个判断条件取一次真或取一次假,我们选择如下调试用例: (1)d=0,s=“Y”: a1=1,b1=1,c1=1,a2=2,b2=2,c2=2 (2)d0,s=“N”: a1=1,b1=0,c1=1,a2=0,b2=1,c2=2 这两个例子调试后,使得程序中的每个语句至少执行了一次,每个判断条件分别取了一次“真”和一次“假”。,21,4.4.2 调试的步骤,调试工作先对每个模块进行调试,一般采用白盒调试法保证每个程序模块内部的正确性,然后再把调试后的模块组装在一起进行整体调试,主要调试各模块是否能正常配合工作,使用的方法多采用黑盒调试法。 对模块的接口进行调试,适当辅以白盒调试法,以便对主要控制路径进行调试。,22,4.4.3 程序维护和程序文档的编写,我们通常把程序的修改称为程序维护。程序维护一般有三种类型,即改正性维护、适应性维护和完善性维护。程序维护在软件生命周期中占相当重要的地位,大约75%的费用都用在程序维护阶段。 在程序调试时,有的错误没被发现,交付使用后,程序运行过程中某些错误暴露出来了,此时就要对程序进行改正性维护。 随着计算机技术的飞速发展,程序运行的外在环境(硬件配置、软件配置等)发生了变化,为了使程序适应这种环境变化而修改程序的过程叫适应性维护。 在程序使用的过程中,用户往往会对程序提出增加新功能或改善性能的要求,这就需要修改程序,使我们的程序更加完善,这个过程叫完善性维护。,23,为了能顺利地进行维护,程序文档是非常重要的。 程序文档解释了程序的工作过程及使用方法。程序文档有两种形式:插入到程序代码中的注释和专门制作的文档。,24,4.5.1 程序设计语言的特点和分类,1. 机器语言第一代语言 2. 汇编语言第二代语言 3. 高级程序设计语言第三代语言 4. 智能语言第四代语言,25,1. 机器语言第一代语言,机器语言是二进制形式的计算机能直接执行的低级语言。 它是由机器指令组成的语言,对应不同的机器就有不同的机器语言。 机器语言对人来说既难理解又难掌握,编出的程序不易查错纠错。计算机刚出现时用的就是机器语言。,26,2. 汇编语言第二代语言,汇编语言比机器语言直观,它的每一条符号指令与相应的机器指令有对应关系,同时又增加了一些宏、符号地址等功能。 由于用汇编语言可以直接操纵处理器、寄存器和内存地址等硬件资源,这对于编写设备驱动程序、编译程序、操作系统等系统软件非常有用。不同指令集的处理器系统有自己相应的汇编语言。 汇编语言相对来讲还是比较晦涩,所以也被列为低级语言。,27,3. 高级程序设计语言第三代语言,(1)过程性语言 (2)面向对象语言 (3)专用语言,28,(1)过程性语言 过程性的编程语言适合于那些顺序执行的算法。用过程性语言编写的程序有一个起点和一个终点,程序从起点到终点执行的流程是直线型的。,3. 高级程序设计语言第三代语言(一),29,下面几种语言都属于过程性语言。 BASIC是为初级编程者设计的,自从1964年问世以来,已经出现了几种流行的版本,包括GW-BASIC,QBASIC,Turbo BASIC等,它在PC机上得到广泛应用,以简单易学为主要特点。 COBOL是发展于20世纪60年代的一种语言,适合于大型计算机系统上的事务处理。COBOL是编译执行的过程性高级语言,主要被一些专业程序员用来开发和维护大型商业集团的复杂程序。COBOL程序往往必须由不同的程序员维护和修改。 FORTRAN语言至今仍然广泛应用于科学和工程计算领域。该语言是出现最早的高级编程语言之一,有着非常广泛的用户群,对于数值计算,至今仍然是一种可选的语言。,3. 高级程序设计语言第三代语言(一),30,Pascal语言开发于1971年,它是从最早出现的ALGOL 60语言派生出来,并有许多改进和扩充,主要用于结构化程序设计的教学,现在在科学、工程计算领域和系统程序设计方面得到广泛应用,各种计算机系统中都已配置了Pascal语言。目前,在微机上用的Turbo Pascal语言就是一种开发能力很强的语言。 C语言是20世纪70年代初作为设计Unix操作系统的语言而研制的。C语言功能强大且十分灵活,以其高效、简洁、可移植性强等特点受到计算机用户的青睐。它还具有类似汇编语言的特性,使程序员能“最接近机器”。目前流行的Turbo C语言是在微机上运行的,它的集成环境包含有编辑、编译、连接、运行和调试程序所需的一切工具。,3. 高级程序设计语言第三代语言(一),31,20世纪70年代以来,尽管出现了十多种面向对象的程序设计语言,但最有生命力的面向对象的程序设计语言,当属Visual Basic、C+、Java等。 微软的Visual Basic (VB)是综合性的且功能强大的编程语言,具有图形设计工具、结构化的事件驱动编程模式,使用户可以既快又简便地编制出Windows下的各种应用程序。 C+成为当今最受欢迎的面向对象程序设计语言之一,因为它既融合了面向对象的能力,又与C语言兼容,保留了C语言的许多重要特性。目前常用的有Borland C+版和Visual C+版。 Java语言是20世纪90年代新出现的面向对象的语言,它与C+很相似,但更适用于网络应用。另外更重要的,Java是一种独立于平台的语言,Java程序不但能在微机的Windows环境下运行,还同样能运行在其他机器的Macintosh和Unix环境下。Java程序可以说“一次编写,多次使用”,因此它更适合于网络应用开发。,(2)面向对象语言,3. 高级程序设计语言第三代语言(二),32,专用语言是为特殊应用而设计的语言。通常有特殊的语法形式,面对特定的问题,输入结构及词汇表与该问题的相应范围密切相关。 今天仍有数百种专用语言在流通,最有代表性的包括LISP、Prolog、APL和Forth。LISP和Prolog适用于人工智能领域,特别是关于知识表示和专家系统构造;APL是为数组和向量运算设计的简洁而强有力的语言;Forth是为开发微处理机软件设计的语言,它支持用户自定义函数并以面向堆栈方式执行,以提高速度和节省内存。 专用语言针对特殊用途设计,一般应用面窄,翻译过程简便、高效,但与通用语言相比,可移植性和可维护性差。,(3)专用语言,3. 高级程序设计语言第三代语言(三),33,4. 第四代语言,第四代语言(4GL)上升到更高的一个抽象层次,尽管还用不同的语法表示程序结构和数据结构,但已不再涉及太多的算法性细节。迄今,使用广泛的第四代语言是数据库查询语言,它支持用户以复杂的方式操作数据库。流行的SQL(Structured Query Language,简称SQL)结构化查询语言,支持数据库的定义和操作,它功能强大,简单易学。 程序生成器(Program Generators)代表更为复杂的一类4GL,只需要很少的语句就可生成完整的第三代语言程序,不必依赖预先定义的数据库作为它的着手点。 此外,一些决策支持语言(Decision Support Language)、原型语言(Prototyping Language)、形式化规格说明语言(Formal Specification Language)也被认为属于4GL的范畴。,34,4.5.2 程序设计语言的选择,通常情况下,一项任务可以用多种编程语言来实现。当你为一项工程选择程序设计语言时,主要考虑以下几个因素: (1)应用领域; (2)算法和计算复杂性; (3)数据结构复杂性; (4)软件运行环境; (5)性能方面的需要与实现的条件; (6)软件开发组成员是否都精通这门语言。,35,4.5.2 程序设计语言的选择,其中,项目所属的应用领域常常作为首要考虑的因素,这是因为若干主要的应用领域长期以来已固定地选用了某些标准语言,积累了大量的开发经验和成功先例。 例如,C语言经常用于系统软件的开发,FORTRAN在工程及科学计算领域占主导地位(当然Pascal、BASIC、C也广为使用),数据库管理系统在信息处理领域广泛使用(其中SQL使用较广),汇编语言在工业控制领域被广泛使用,面向对象的语言VB、C+正被用来开发大型的软件系统,Java语言正在网络应用方面发挥作用等。,36,4.5.3 VB计算机语言,VB是通用的程序设计语言,它提供了开发Windows应用程序的一种快速简捷的方法。 事实上,VB提供了从设计新型的用户界面到利用其他应用程序的对象,从处理文字图像到使用数据库,开发Internet应用的所有工具。 使用VB可以开发大型企业应用程序、大型分布式应用程序及Internet应用程序。,37,4.5.3 VB计算机语言,图是在VB开发环境下设计的用户界面,设计该界面不需要编程序,只要将命令按钮、标签、文本框等对象在窗体中排列,然后为每个对象设置属性(位置,大小,字体,颜色等)。,38,4.5.3 VB计算机语言,命令按钮除了属性外,还要为其安排执行的动作,我们为“求解”和“退出”两个命令按钮分别编写的程序如下: Private
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 呼吸科护理创新小发明
- 厦门城市职业学院《生药学实验》2023-2024学年第一学期期末试卷
- 湖南省邵阳县重点名校2025届初三全真数学试题模拟试卷(17)含解析
- 内蒙古财经大学《纺织品检验学》2023-2024学年第二学期期末试卷
- 锡林郭勒职业学院《法语视听说》2023-2024学年第二学期期末试卷
- 天津市和平区第二十中学2024-2025学年第二学期教学质量检测试题初三数学试题(二模)含解析
- 塔里木职业技术学院《营养健康与社会》2023-2024学年第二学期期末试卷
- 临安市2024-2025学年五年级数学第二学期期末调研试题含答案
- 平凉职业技术学院《建筑力学2》2023-2024学年第二学期期末试卷
- 宁夏回族自治区银川市兴庆区银川一中2025年高三下第二次段考试化学试题(理)试题含解析
- 药事管理法律法规相关知识培训
- 地毯织造技艺(北京宫毯织造技艺)
- 第4章-选区激光熔化工艺及材料课件
- 2023届高考写作指导:“寻找温暖”与“成为灯火”课件
- 2022年上海市工业技术学校招聘考试真题
- 长期护理保险技能比赛理论试题库300题(含各题型)
- 二重积分的概念与性质演示文稿
- 医院双重预防机制建设工作完成情况
- 大学生劳动教育通论知到章节答案智慧树2023年大连海洋大学
- 2003高教社杯全国大学生数学建模竞赛B题竞赛参考答案
- AB股公司章程(同股不同权)
评论
0/150
提交评论