算法与结构化程序设计.pptx





《算法与结构化程序设计.pptx》由会员分享,可在线阅读,更多相关《算法与结构化程序设计.pptx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,可以这样表示:程序=算法+数据结构+程序设计方法+语言工具和环境也就是说,以上4个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。显然,不了解算法就谈不上程序设计。第1页/共28页第八讲第八讲 算法与结构化程序设计算法与结构化程序设计综合第5章、第11章学习目标熟悉算法的基本概念,了解算法、程序与代码的关系学会怎样表示一个算法掌握结构化程序设计的一般方法了解程序测试的基本
2、方法与手段第2页/共28页算法的概念与特征算法的基本概念为解决某类问题而设计或采取的方法或步骤演算过程的抽象表述算法必须能够转化为计算机可执行的指令序列(代码)算法的基本特征有穷性:算法必须能够在有限步内终止确定性:每一步骤的顺序和内容不能有二义性有效性:所有操作都有明确含义并能够实现有零个或多个输入:算法应该接受处理数据有一个或多个输出:算法必须能够输出结果正确性不是算法的特征,算法的正确正确性不是算法的特征,算法的正确正确性不是算法的特征,算法的正确正确性不是算法的特征,算法的正确性由设计者保证!性由设计者保证!性由设计者保证!性由设计者保证!第3页/共28页有50个学生,要求将他们之中成
3、绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生学号。用g代表学生成绩,gi代表第i个学生成绩,算法可表示如下。S1:1=i S2:如果gi80,则打印ni和gi,否则不打印 S3:i+1=i S4:如果i50,返回S2,继续执行;否则,算法结束。本例中,变量i作为下标,用它来控制序号(第几个学生,第几个成绩)。当i超过50时,表示已对50个学生的成绩处理完毕,算法结束。算法举例第4页/共28页怎样表示一个算法一个算法可用不同的方法表示。自然语言 流程图 NS图(结构化流程图)伪代码 等等 第5页/共28页用流程图表示算法流程图是用一些图框表示各种操作。用
4、图形表示算法,直观形象,易于理解。美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号。第6页/共28页第7页/共28页第8页/共28页N-S图表示算法(1)顺序结构:A和B两个框组成一个顺序结构。(2)选择结构:当p条件成立时执行A操作,p不成立则执行B操作。请图是一个整体,代表一个基本结构。第9页/共28页N-S图表示算法(3)循环结构 第10页/共28页用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,
5、因此书写方便、格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。用伪代码写算法并无固定的、严格的语法规则,以便于书写和阅读为原则,只要把意思表达清楚,书写格式要清晰易读的形式。第11页/共28页代码与伪代码给定两个正整数m与n,设计求解最大公因子的算法int int gcdgcd(int(int mm,int,int n n)int int r r;start start:r r=mm%n n;if(if(r r=0)=0)return return n n;mm=n n;n n=r r;goto goto startstart;代码代码代码代码以计算机语言书写,计算机易理解,以计算机
6、语言书写,计算机易理解,以计算机语言书写,计算机易理解,以计算机语言书写,计算机易理解,程序员不易理解程序员不易理解程序员不易理解程序员不易理解伪代码界于自然语言与计算机语言之间,伪代码界于自然语言与计算机语言之间,伪代码界于自然语言与计算机语言之间,伪代码界于自然语言与计算机语言之间,一般用符号或文字表示算法的实际执行一般用符号或文字表示算法的实际执行一般用符号或文字表示算法的实际执行一般用符号或文字表示算法的实际执行步骤,程序员易理解,计算机不理解步骤,程序员易理解,计算机不理解步骤,程序员易理解,计算机不理解步骤,程序员易理解,计算机不理解输入:整数输入:整数输入:整数输入:整数mm与与
7、与与n n输出:输出:输出:输出:mm与与与与n n的最大公因子的最大公因子的最大公因子的最大公因子步骤步骤步骤步骤1 1:mm除以除以除以除以n n,余数为余数为余数为余数为r r步骤步骤步骤步骤2 2:若:若:若:若r r为为为为0 0,则,则,则,则n n为所求,算法终为所求,算法终为所求,算法终为所求,算法终止;否则止;否则止;否则止;否则步骤步骤步骤步骤3 3:将:将:将:将n n作为新作为新作为新作为新mm,r r作为新作为新作为新作为新n n,返回返回返回返回第第第第1 1步重新计算步重新计算步重新计算步重新计算P113第12页/共28页结构化程序的组织程序的结构化程序的一般结构
8、结构化与函数抽象第13页/共28页程序的结构化结构化结构化语句:满足单入口单出口条件的语句复合语句、分支语句与循环语句都是结构化语句结构化程序:使用结构化语句设计的程序结构定理:所有程序都可使用上述三类结构化语句实现结构化优点单入口单出口的控制流易于确定程序动态计算过程,易于理解注意事项结构化程序并不一定是好程序,程序合理组织最重要!数据代码的基本概念见教材5.1和5.2第14页/共28页程序的一般结构根据用户输入的底面半径与高度,计算圆柱体体积#include include /*/*包含必要的头文件包含必要的头文件包含必要的头文件包含必要的头文件*/*/#define define PIP
9、I 3.14159265 3.14159265 /*PI/*PI宏定义宏定义宏定义宏定义,一次定义多次使用一次定义多次使用一次定义多次使用一次定义多次使用*/*/float float radiusradius,heightheight,volumevolume;/*/*全局变量声明全局变量声明全局变量声明全局变量声明*/*/void void mainmain()()/*/*主函数主函数主函数主函数*/*/*/*输入半径与高度输入半径与高度输入半径与高度输入半径与高度*/*/printfprintf(“This program computes the volume of the cylin
10、der.(“This program computes the volume of the cylinder.n n“);“);printfprintf(“Please input the radius value:“);(“Please input the radius value:“);scanfscanf(“%(“%f f“,&“,&radiusradius););printfprintf(“Please input the height value:“);(“Please input the height value:“);scanfscanf(“%(“%f f“,&“,&height
11、height););/*/*计算体积计算体积计算体积计算体积*/*/volumevolume=PIPI*radiusradius*radiusradius*heightheight;/*/*输出体积输出体积输出体积输出体积*/*/printfprintf(“The volume of the cylinder is%(“The volume of the cylinder is%f f n n“,“,volumevolume););主函数包括输入、计算与输出三部分主函数包括输入、计算与输出三部分主函数包括输入、计算与输出三部分主函数包括输入、计算与输出三部分程序无非是对特定输入数据进行处程序无
12、非是对特定输入数据进行处程序无非是对特定输入数据进行处程序无非是对特定输入数据进行处理并输出处理结果的指令序列,所理并输出处理结果的指令序列,所理并输出处理结果的指令序列,所理并输出处理结果的指令序列,所以任何程序都应包括输入、计算与以任何程序都应包括输入、计算与以任何程序都应包括输入、计算与以任何程序都应包括输入、计算与输出三部分输出三部分输出三部分输出三部分第15页/共28页结构化与函数抽象程序设计过程按照功能需求,进行自顶向下的功能分解与逐步求精,最终形成代码大多数问题的求解过程非常复杂,如何合理地控制程序规模和复杂性呢?程序的分割与结构化:着重于安排操作序列而不是数据结构,使程序易于创
13、建、理解与维护函数抽象:结构化程序设计的主要工具体现要执行的命令、计算或任务,这些抽象构成了函数用户只关心抽象的语法和该抽象提供的功能或服务,不关心如何实现该功能第16页/共28页结构化与函数抽象示例根据用户输入的底面半径与高度,计算圆柱体体积#include include /*/*包含必要的头文件包含必要的头文件包含必要的头文件包含必要的头文件*/*/#define define PIPI 3.14159265 3.14159265 /*/*PIPI宏定义宏定义宏定义宏定义,一次定义多次使用一次定义多次使用一次定义多次使用一次定义多次使用*/*/float float radiusradi
14、us,heightheight,volumevolume;/*/*全局变量声明全局变量声明全局变量声明全局变量声明*/*/void void InputInput();();/*/*输入半径与高度,将实际的输入操作隐藏在函数内部输入半径与高度,将实际的输入操作隐藏在函数内部输入半径与高度,将实际的输入操作隐藏在函数内部输入半径与高度,将实际的输入操作隐藏在函数内部 */*/void void ComputeCompute();();/*/*计算体积,将实际的计算过程隐藏在函数内部计算体积,将实际的计算过程隐藏在函数内部计算体积,将实际的计算过程隐藏在函数内部计算体积,将实际的计算过程隐藏在函数
15、内部*/*/void void OutputOutput();();/*/*输出体积,将实际的输出操作隐藏在函数内部输出体积,将实际的输出操作隐藏在函数内部输出体积,将实际的输出操作隐藏在函数内部输出体积,将实际的输出操作隐藏在函数内部*/*/void void mainmain()()/*/*主函数,表现为对上述函数的调用,无其他代码主函数,表现为对上述函数的调用,无其他代码主函数,表现为对上述函数的调用,无其他代码主函数,表现为对上述函数的调用,无其他代码 */*/InputInput();();ComputeCompute();();OutputOutput();();主函数是否更容易理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 结构 程序设计

限制150内