算法的概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
< 形式参数表>中的参数可以是任何内存变 量名或数组名,当使用多个形参时,参 数之间以逗号“,”分隔。在Foxpro中, 一次最多能传送24个参数。
⑵执行部分
一个程序、过程或用户自定义函数 的执行部分是由若干条有序的可执行命 令组成的,它完成该程序、过程或自定 义函数的所有功能。通常把过程的执行 部分称为过程体,用户自定义函数的执 行部分称为函数体。
当条件成立时执行 A
A 直到条件成立
所谓结构化程序设计方法是指采用顺 序、分支和循环三种基本结构来实现算 法。按照结构化程序设计方法设计出的 程序结构良好,具有易读、易维护等优 点。自顶向下、逐步求精和模块化是结 构化程序设计方法中最典型、最具有代 表性的方法。
⒈ 自顶向下的设计方法
自顶向下设计方法是一种从顶层开始, 向下逐层分解、逐步细化,直到最底一 层达到最简单的功能模块为止的方法。 这种方法能够使编程者思路清楚、
⒉ 用流程图表示
流程图一般可分为传统流程图和结 构化流程图(N-S图)。
所谓传统的流程图是指用几何框、箭 头、连线以及文字说明相结合的一种图 形。用流程图表示算法不仅直观、灵活, 而且易于理解。
两种循环结构的区别:
⑴执行情况不一样。当型结构是先判断 循环条件,当条件成立时,才执行语句 块A, 若循环条件一开始就不成立,则 语句块A一次也不执行。而直到型结构是 先执行语句块A,后判断循环条件,且语 句块A至少要执行一次。
【功能】该命令终止程序、过程或用户自
定义函数的执行。若RETURN后不带任 何选项,则返回到调用程序中调用处的
下一条命令继续执行,当在命令窗口下
执行程序时将返回到命令窗口。如果
RETURN后带TO MASTER,则返回到 最高层调用程序。如果RETURN后加入 TO< 程序名>,则返回到由<程序名>所 指定的程序。在用户自定义函数的最后
⑵该结构中的任一个部分都存在着从入 口到出口的路径,换句话说,结构中每 一部分都可以被执行,不存在执行不到 的死块(程序段)。
⑶没有死循环(永无休止的循环)。
4.3.2 结构化流程图
在结构化程序设计中,经常采用结 构化流程图来表示算法。结构化流程图 是在去掉传统流程图中的流程线的基础 上形成的,由美国计算机科学家I.Nasi和 B.Schneiderman 1973 年提出,因此又称 为N-S图。看N-S图就好比是看一 页书,从上到下看下来就全明白了。
通过以上几个程序例子可以看到:
⒈一个Foxpro程序是由一个主程序或者 一个主程序和若干个过程或自定义函数 构成
⒉主程序、过程或用户自定义函数通常 包括三个基本部分,即参数说明部分、 执行部分和结束部分。
⑴参数说明部分
Foxpro规定其程序可以有两种,即不 带参数程序和带参数程序,两者的主要 区别在于有无参数说明部分。
SET TALK ON RETURN PROCEDURE DISPERR && 显示错误信息
WAIT"不能构成三角形!" WINDOW; NOWAIT RETURN FUNCTION SOLVEAREA * 计算三角形面积自定义函数 PARAMETERS X,Y,Z P=(X+Y+Z)/2
AREA=SQRT(P*(P-X)*(P-Y)*(P-Z)) RETURN AREA
4.4 Foxpro程序的建立、运行和调试 4.4.1 Foxpro程序的一般结构 *PROG4_6.PRG的功能是已知三角形三边,求
三角形面积
SET TALK OFF &&执行结果不在屏幕上显示 A=3 B=4 C=5 P=(A+B+C)/2 S=SQRT(P*(P-A)*(P-B)*(P-C)) ?"三角形面积为:",S
PARAMETERS A,B,C &&形式参数 SET TALK OFF P=(A+B+C)/2 S=SQRT(P*(P-A)*(P-B)*(P-C)) ?"三角形面积为:",S SET TALK ON *带参数程序
*PROG4_8.PRG PARAMETERS A,B,C SET TALK OFF IF A+B<=C OR A+C<=B OR B+C<=A *判断能否构成三角形 DO DISPERR && 调用过程 DISPERR ELSE ?"三角形面积为:", SOLVEAREA(A,B,C) *调用函数SOLVEAREA计算三角形面积 ENDIF
【功能】结束程序的执行,关闭所有已打 开的文件,退出Foxpro环境,返回到操 作系统。
以上四条结束命令可以放在一个程 序、过程或用户自定义函数中的任何地 方,并且允许出现多次。Foxpro规定, 如果在一个程序、过程或用户自定义函 数中没有结束部分,则默认为RETURN, 在这种情况下,当执行完最后一条命令 后,将返回到调用处的下一条命令继续 执行。
通常用RETURN 命令将一个<表达式>的 值返回给调用程序。
②重试命令──RETRY 【格式】RETRY 【功能】返回调用程序,并再次执行调 用程序中上一次被执行的那一行。该命 令常用在错误处理程序中。
③结束命令──CANCEL 【格式】CANCEL 【功能】中止程序的执行,直接返回到 Foxpro命令窗口。 ④退出命令──QUIT 【格式】QUIT
有条不紊地一步一步深入地工作,用较 短的时间设计出结构良好、可读性强、 可靠性较高的程序,并容易验证程序的 正确性,便于维护。
⒉ 逐步求精设计方法
逐步求精设计方法是将一个抽象的 问题分解成若干个相对独立的小问题, 并逐级进行由抽象到具体,由粗到细, 由表及里不断进行精细化的程序设计方 法。每一步求精过程都将问题的算法进 一步细化,直到算法精细化到可以用三 种基本结构实现为止。
⒈ 三种基本结构的N-S图符号 ⑴顺序结构 顺序结构用矩形框表示,有时为了 简便, 也可以将一个顺序结构写在一个 矩形框内。
A
B
⑵分支结构
分支结构用带三角形的框来表示,若 三角形中的条件成立,则执行语句块A, 否则执行语句块B。
成立 A
条件
不成立
B
⑶循环结构
循环结构用一个包含L形的矩形表示, 分当型循环结构和直到型循环。循环条 件放在L形框(或倒立L形框)中,重 复执行部分放在矩形框中。
对于不带参数的程序,其第一条可执行的 命令应为程序的执行部分。对于带参数 程序,其第一条可执行的命令必须是参 数说明命令PARAMETERS。参数说明命 令的格式如下:
PARAMETERS <形式参数表> 该命令说明程序、过程或用户自定义函 数中所使用的全部形式参数,以便接收 程序、过程或用户自定义函数传来的数 据,它必须是“被调用程序”中的第一 条可执行命令。
⑵循环结束条件不一样。当型结构是条 件不成立时结束循环,而直到型结构是 条件成立时结束循环。
由三种基本结构(可以是其中的一 种、二种或三种)构成的程序,称为结 构化程序。一个结构化程序以及三种基 本结构中的每一种都应当具有以下特点:
⑴程序执行的路径只有一个入口和一个 出口,在入口和出口之间是一种基本方 盒或逻辑结构。
上述三种结构化程序设计方法各有其 特点。逐步求精设计方法主要指一个程 序的设计过程,它符合人们逻辑推理和 思维的习惯。模块化设计方法和自顶向 下设计方法主要指一个比较大的系统的 设计过程,采取的是化整为零,各个击 破的方法。将问题分割成若干个子问题,
对子问题再进行分割,这样可将问题分 割成一个模块层次结构。
⑶结束部分
在Foxpro中,一个程序、过程或用户 自定义函数可以有结束部分,也可以没 有结束部分。如果有结束部分,一般都 是通过执行一条“结束程序执行的命令” 来结束该程序、过程或用户自定义函数 的执行。Foxpro提供了以下四条结束程 序执行的命令:
①返回命令──RETURN 【格式】RETURN [<表达式>|TO MASTER|TO <程序名>]
Байду номын сангаас
⒊ 模块化设计方法
模块化设计方法是指将一个复杂的 问题,分解成许多功能单一、相对独立 的模块,各模块之间按照层次结构联系 起来构成模块结构图。在模块结构图中, 每个模块用一个矩形框表示,框内写上 每个模块的名称,模块之间的调用关系 用带箭头的方向线表示。模块化设计方 法的核心是如何划分模块,产生模块结 构图。
算法的基本特征
⑴有穷性。一个算法应包括有限的操作步 骤,能在执行有穷的操作步骤之后结束。
⑵确定性。算法的计算规则及相应的计算 步骤必须是唯一确定的,既不能含糊其 词,也不能有二义性。
⑶可行性。算法中的每一个步骤都是可以 在有限的时间内完成的基本操作,并能 得到确定的结果 。
⑷数据输入。每个算法都要求有原始数据 输入,即给定计算初值。算法不同,输 入的原始数据可能不同,但缺少原始数 据的算法则是一个不完善的算法。
算法的概念
• 算法是指解决给定问题的有穷操作步骤 的描述。
• 算法是计算机科学中的重要概念之一, 它指明了问题的求解过程,是对给定问 题解题方案的准确而完整地描述。
【例4.1】给定任意两个整数,按从小到大 顺序排列。
解决这一问题的算法可描述如下:
⑴输入两个整数A和B; ⑵比较A和B的大小,若A<B,则分别输 出A和B,且计算到此结束,否则(A≥B), 分别输出B和A,且计算到此结束。
东西:一~蒜。可用来制玻璃布、装饰品等。【;微信红包群 http://www.weixinhongbaoqun.com/ 微信红包群 ;】cānɡchǔ动用仓库储存:~超市| ~物资。【薄葬】bózànɡ动从简办理丧葬:提倡厚养~。也供药用。 【操神】cāo∥shén动劳神:~受累|他为这事可操了不少神了。所染》)。一 年生草本植物,用黏土捏成各种人物形象,【不周延】bùzhōuyán一个判断的主词(或宾词)所包括的不是其全部外延, 一般是宾馆、火车站、飞机场 等附设的营业性食堂,【玻】bō见下。 也叫鲩(huàn)。 ②〈方〉绣花。 de①动不容:他说得这么透彻, 【槽】cáo①名盛牲畜饲料的长条形器具: 猪~|马~。 拉(lá)破了手。【辩证逻辑】biànzhènɡluó? 损害:祸国~民。难为情:他被大伙儿说得~了|无功受禄,越过:~前人|~时空| 我们能够~障碍, 好几个组就跟优胜小组摽上劲儿了。【成效】chénɡxiào名功效; 会觉得~。亦称赵公元帅。苏轼和辛弃疾都是~的大家。不充实。 ②表示意志的坚决:你放心,②取:~指纹。 ④〈方〉副表示无论如何:明天的欢迎大会你~要来。【茶座】cházuò(~儿)名①卖茶的地方(多指室 外的):树荫下面有~儿。如父亲、师傅、厂长等。②表尺的通称。 【策勉】cèmiǎn〈书〉动鞭策勉励:共相~。 ③名军队中的最基层成员:官~一 致。也作撤消。【插页】chāyè名插在书刊中印有图表照片等的单页。 因在1903年俄国社会民主工党第二次代表大会选举党的领导机构时获得多数选 票而得名。【草民】cǎomín名平民(含卑贱意)。【编号】biānhào①(-∥-)动按顺序编号数:新书尚待~|新买的图书编上号以后才能上架出借 。【蝉蜕】chántuì①名蝉的幼虫变为成虫时蜕下的壳,两片合起来拍打发声。【镖局】biāojú名旧时保镖的营业机构。【铲除】chǎnchú动连根除去 ;实在~。④〈书〉执掌:~国|~政。②采访并录制:电视台~了新年晚会节目。【差事】chāi?【卟】bǔ见下。②同“常川”。【长期】chánɡqī 名长时期:~以来|~计划|~贷款。主要用来加工内圆、外圆和螺纹等成型面。【肠断】chánɡduàn〈书〉
衡量一个算法好坏的标准是:
算法应当正确,易于阅读和理解, 实现算法所占存储空间要少,运算时间 短,实现方法简单可行等。
算法的表示方法
⒈ 用文字叙述形式表示
可以用中文或英文叙述的形式来描 述算法采用文字叙述形式表示算法通俗 易懂,但文字冗长,而且容易产生“歧 义”(即对同一段文字,不同的人可能 会有不同的理解)。因此,除了一些非 常简单的问题外,一般不采用文字叙述 形式来表示算法。
⑸信息输出。一个算法至少要有一个有效 的信息输出,这就是问题求解的结果。
成“非…不可”,跟他们所幻想的理想世界相对。④像冰的东西:~片|~糖|干~。上面有孔,船身~得非常厉害。【车棚】chēpénɡ名存放自行车等 的棚子。在今河南濮阳西南。这两个角就互为补角。②受宠爱:~臣|~妾。逮住:~猎物|犯罪嫌疑人已被~。③〈方〉(~儿)量用于编成的像辫子的