《第1讲程序和程序设计算法结构化程序设计方法.ppt》由会员分享,可在线阅读,更多相关《第1讲程序和程序设计算法结构化程序设计方法.ppt(26页珍藏版)》请在三一办公上搜索。
1、第1讲,程序和程序设计 算法、结构化程序设计方法,第一章 程序设计基本概念,教学目标掌握程序及程序设计的基本概念,程序的运行过程、算法及其特点、算法的描述、C语言程序的基本结构。熟悉设计程序时应遵循的基本原则。了解利用计算机解决实际问题的过程、结构化程序设计方法并在以后的程序设计中应用并逐步熟练掌握。能将日常生活中解决一些简单问题的步骤用算法描述。熟悉程序开发环境,学习上机基本操作。,1.1 程序与程序设计,程序与程序设计程序是控制计算机运行的指令序列。程序设计就是设计、书写及检查程序的过程。程序设计语言程序设计语言是软件系统的重要组成部分 程序设计语言是描述计算机指令的工具。各种程序设计语言
2、有自己的语法、词汇。可分为机器语言、汇编语言和高级语言三类。,1.机器语言,由“0”和“1”组成的二进制表示的机器指令的集合。例如某种类型的计算机规定以“10000000”表示一个“加法”操作,以“10010000”表示一个“减法”操作。机器指令一般由操作码和操作数两个部分组成。计算机硬件可以直接识别,因此,它的执行速度比较快。针对一种计算机所编写的机器语言程序,一般不能在另一种类型的计算机上运行,而且程序的编写难度较大,修改、调试也不方便,容易出错,程序的直观性较差。,2.汇编语言,用能够帮助记忆的指令助记符来代替机器指令中的操作码,用地址符号或十进制数来代替操作数。如用“ADD”表示加法操
3、作,用“SUB”表示减法操作。比机器语言直观,容易记忆和理解,编写的程序比机器语言程序易读、易检查、易修改 不同类型的计算机,汇编语言源程序不能通用。必须由一种专门的翻译程序(汇编程序)将汇编语言源程序翻译成机器语言程序,计算机才能执行。,3.高级语言,面向问题的程序设计语言 与具体的计算机硬件无关,其表达方式接近于被描述的问题,接近于自然语言和数学语言,易为人们接受和掌握。其显著特点是独立于具体的计算机硬件,通用性和可移植性好。计算机高级语言已有上百种之多,得到广泛应用的也有十几种,并且几乎每一种高级语言都有其适用的领域。C语言是其中之一。,4.程序运行过程,编辑处理 通过编辑程序将编写的源
4、程序送入计算机。语言处理 将用户编写的源程序转换成机器语言的形式,以便计算机能够识别和运行。由翻译程序自动完成的,翻译程序除了要完成语言间的转换外,还要进行语法、语义等方面的检查。装配链接处理 装入内存运行,5.语言处理,语言处理程序一般可分为:汇编程序编译程序解释程序这三种类型,5.语言处理,汇编由汇编程序(一种由专业的软件开发商提供的系统软件)将用汇编语言编写的源程序翻译成目标程序(某种类型计算机的机器语言程序),这一过程称为汇编。,编译由编译程序将高级语言源程序翻译成目标程序。,语言处理(续),解释 由解释程序将高级语言源程序一句一句地读入,每读入一个语句都要对它进行分析和解释,若有错误
5、就即时中断其解释过程,并通知用户进行修改,若没有错误就按照解释结果执行所要求的操作。解释方式不产生目标程序。,6.程序设计基本原则,正确性 程序本身必须具备且只能具备程序设计规格说明书中所列举的全部功能。它是判断程序质量的首要标准。可靠性 程序在多次反复使用过程中不失败的概率。简明性 简明性的目标是要求程序简明易读。有效性 程序在计算机上运行需要使用一定数量的计算机资源,如CPU的时间、存储器的存储空间。有效性就是要在一定的软、硬件条件下,反映出程序的综合效率。可维护性 程序的可维护可分为校正性维护、适应性维护和完善性维护。一个软件的可维护性如何直接关系到程序的可用性,因此应特别予以关注。可移
6、植性 程序主要与其所完成的任务有关,但也与它的运行环境有着一定的联系。软件的开发应尽可能远离机器的特征,以提高它的可移植程度。,7.用计算机解决问题的基本步骤,一般由分析问题、建立数学模型、选择合适算法、编写程序、调试、运行程序直至得到正确的结果等几个阶段所组成。设计步骤 确定要解决的问题。主要目的是搞清楚“做什么”。算法设计与数据结构设计。主要任务是解决“如何做”。涉及两个方面的内容,一是数据结构设计(解决数据的表示与存储),另一个是算法设计(描述操作步骤)。编写程序和调试程序。整理资料,交付使用。,1.2 算法,计算机算法是为计算机解题设计的有明确意义的运算步骤的有限集合。算法可以用不同的
7、方法表示。常用的有自然语言、传统流程图、结构化流程图、伪代码等。算法的特点有穷性确定性有效性有零个或多个输入有一个或多个输出,1简单算法举例,例1.1 给出求x1+x2+x3+x4+x5 的值的算法。,算法分析:(1)手工计算步骤为:求x1与x2的和,得到两个数之和;将上一步的和与x3相加,得到三个数之和;将上一步的和与x4相加,得到四个数之和;将上一步的和与x5相加,得到五个数之和。从手工计算过程中可知:其运算方法类似于用算盘计算该题的过程,每次仅求出两个数之和,其中一个加数为上一步所得的结果,另一加数为多项式中的一项,重复这个过程,直到加到最后一项为此。,该算法能更加简洁地表达上述解题过程
8、,并具有通用性。先定义几个变量:设置变量s表示多项式之和,其初值为零;设置变量a表示多项式中的一项,它的值可以为x1,x2,x5;用i记录被加了几次,其初值为1。解题步骤为:s 0;i 1;a xi;(使a等于多项式中的第i项)s s+a;(求和,并将结果保留在s中)i i+1;(计数增值)若i 5,则重复、各步;否则,计算结束;输出s。,(2)适合计算机处理的算法。,2.算法描述,用自然语言表示通俗易懂、直观、容易掌握,但算法的表达与计算机的高级语言形式差距较大,通常用在较简单的问题中。用伪代码表示 不在计算机上实际执行,仅仅用于程序员使用C等程序设计语言编写程序之前帮助其构思,而且与自然语
9、言相似,非常方便和友好。用传统流程图表示 直观,设计者的思路表达得清楚易懂,便于检查修改。,传统流程图常用的符号,例1.2 输入一个整数,将它倒过来输出,用自然语言描述:输入一个整数送给x;求x除以10的余数,结果送给d,并输出d;求x除以10的整数商,结果送给x;重复,步,直到x变为零时终止。用伪代码描述:输入一个整数送x;while(x 0)do d=x%10;输出d;x=x/10;,例1.3 求出这100个数的累加和、最大值和最小值,从键盘输入100个数,求出这100个数的累加和,并找出它们的最大值和最小值。试用传统流程图描述解决这个问题的算法。,1.3 结构化程序设计方法,设计程序时只
10、能使用顺序、选择、循环三种基本结构。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。,1.三种基本结构,(1)只有一个入口。(2)只有一个出口。(3)结构内的每一部分都有机会被执行到。(4)结构内不存在“死循环”(无终止的循环)。,2.NS流程图,N-S流程图由美国学者I.Nassi和B.Shneiderman提出的一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线,禁用程序的转向语句,将全部算法都写在一个矩形框内,因此,N-S流程图也叫盒图。,例1.4 从键盘输入一个整数,判别该数是否为素数,素数,也称为质数,是指只能被1及其自身整除且大于1的正整数,如2、3、5、7等都是素数。用N-S流程图描述解决这个问题的算法如图1.11所示。,例1.5 编程打印出35000之间的所有质数。,分析:我们采用自上向下、逐步细化的方法来处理这个问题。即先把这个问题分解为二个相对较小的问题:判别某数i是否为质数;利用循环判别35000之间的所有的数是否为质数,若是就把它打印出来;,End,