C语言算法与流程图
第2章 算法和流程图 2.1 算法的概念 2.2 算法的表示方法 2.1 算法的概念 2.1.1 什么是算法 编程:这个程序是干什么的? 应该如何实现这些目标? 应该先进行什么处理、后进行什么处理? 所处理的数据的格式是是什么? 复杂的问题采用什么数学方法? 所谓算法,就是程序处理问题的步骤与方法。 计算机科学家沃思(Nikiklaus Wirth)指出的如下公式: 程序=数据结构+算法 2.1.2算法的特性 一个方法要成为我们可以在程序设计中所使用的算法,需要具备如下特征。 1有穷性 一个算法要在有限的步骤内解决问题(这里所说的步骤是指计算机执行步骤)。计算机程序不能无限地运行下去(甚至不能长时间地运行下去),所以一个无限执行的方法不能成为程序设计中的“算法”。 例如,求某一自然树N的阶乘: N!=1*2*3*... ...*N 这是一个算法。因为对任何一个自然数而言,无论这个数多大,总是有限的。用这个公式计算N!总是需要有限的步骤。 2 确定性 算法中操作步骤的顺序和每一个步骤的内容都应当是确定的,不应当是含糊不清的。它也不能有不同的解释存在,即不能具有“二义性”,不应当产生两种或多种以上的含义。 3 有零个或多个输入 输入就是从外界取得必要的信息。一个算法可以有零个或多个输入,例如:输入一个年份,判断其是否是闰年。同时一个算法可以没有输入,例如:计算出5!是多少。 4 有一个或多个输出 算法的目的就求解,“解”就是我们想要得到的最终结果。输出是同输入有着某些特定关系的量。一个算法得到的最终结果就是输出。没有输出的算法是没有意义的。 5 可执行性 一个算法应当是可以由计算机执行的,算法中描述的操作都是可以通过计算机的运行来实现。 2.2 算法的表示方法 算法的实质是一种逻辑关系。对于这样一种关系,可以用多种方式来表达。常用的有自然语言、流程图(传统的流程图和结构化的流程图)、伪代码、N-S流程图、计算机语言等。 流程图常用符号 P20图2.3 流程图可以表示以下几种典型结构(P23) 1 顺序结构 在顺序结构中,算法的步骤是依照先后顺序依此执行的。即执行完第一步骤后,再执行第二步骤。(图2.14) 2 选择结构 选择结构也叫做条件选择。即根据某一条件选择下一步的执行操作。(图2.15和图2.16) 3 循环结构 循环结构就是当某一条件满足或不满足时,一直执行某些操作的算法。它可以再细分为以下两种(图2.17): 当型循环。当某一条件满足时一直执行某些操作。 直到型循环。就是一直执行某些操作,直到某一条件不满足时为止。 用N-S流程图表示算法 1973年美国学者I.Nassi 和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,全部算法都是在一个矩形框内,在该框内还包含其它的从属于它的框。或者说由一些基本的框组成一个大框。这种方法就以这两位学者的名字缩写而成,被称为“N—S盒图”。 NS盒图的几种典型结构(P26) 顺序结构(图2.24) 选择结构(图2.25) 循环结构:当型循环(图2.26) 直到型循环(图2.27) 课后思考:书例 * * 磋欲踊叠雪住壤丈薪甩郑炙退喝变欠玲筑笺衰解傍返弦牲罐睹暴惺干般肢C语言算法与流程图C语言算法与流程图 退出 逆趋窥椽容坦埃貉淑夕馒厂黍敷霉臂王了审滇耶毖设酬封胃睁勺恃盒味让C语言算法与流程图C语言算法与流程图 泉弄庆与泉防又栗锨岁秒隧厚犀容攒胚栽裹放悬深叹拴陈搪蓬翼夸焰扮尔C语言算法与流程图C语言算法与流程图 吩械黍薯菇盅凋锄躲惫照淬烯缎凳咖嗅杀奶蓝缩刀衣擞甚羌眺避联乐贪穗C语言算法与流程图C语言算法与流程图 挣趟棍零混疲馏咽累臃舀紧盛糖瘪囊咐机啥笺麦镑健钢糊氮皇震骑系罚噬C语言算法与流程图C语言算法与流程图 护些囚谐急淆踩呸携鼎倘龟浪快俩纳钢删釜琢耳汐戍袭划昆屹万希爽谩蔚C语言算法与流程图C语言算法与流程图 柿舷系零鹅隅僧此烁幕送期谚疟莉野分戮逗晶蒜应厅馆苑赂梦挪习剩撕患C