算法的基本结构及设计
- 格式:ppt
- 大小:842.00 KB
- 文档页数:17
C语言算法表示及结构化程序设计基本结构为了表示一个算法,可以用不同的方法。
常用的方法有:自然语言、传统流程图、结构化流程图和伪代码等。
1用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。
用自然语言表示通俗易懂,但文字冗长,容易出现歧义,往往要根据上下文才能判断正确含义。
用自然语言来描述包含分支选择和循环算法不方便,花开两朵,各表一枝,同时只表达一个意思,这是自然语言表示的不足。
2用流程图表示算法流程图就是用一些图框来表示算法,直观形象,易于理解。
如:菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来判定如何执行其后的操作。
它有一个入口,两个或多个出口。
优于自然语言表示。
连接点小圆圈用于将画在不同地方的流程线连接起来,实际上表示一个对象,只是画不下オ分开来画或为了清晰表示而单独绘制,用连接点可以避免流程线出现交叉或过长,不利于阅读。
用流程图表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。
这种流程图占用篇幅较多,一条路走到头,与复杂的实际情况表示有差距有不足,尤其当算法比较复杂时就费时费力。
3.传统流程图的弊端与结构化设计的基本结构传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制,不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。
为了提高算法的质量,使算法的设计和阅读方便,不允许无规律地使流程随意转向,只能顺序地进行下去。
但是,算法上难免会包含一些分支和循环,而不可能全部由一个个顺序框组成。
为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构。
4.用3种基本结构作为表示一个结构化算法的基本单元。
(1)顺序结构。
比如A 和B 两个框是顺序执行的,在执行完A 框所指定的操作后,接着执行B 他所指定操作。
(2)选择结构。
又称选取结构或分支结构,此结构中必包含一个判断框。
程序框图与算法的根本逻辑构造教学目标能够正确说出各种程序框图及流程线的功能与作用能够画出顺序构造、条件构造、循环构造的流程图能够设计简单问题的流程图教学重点程序框图的画法.教学难点程序框图的画法.课时安排4课时教学过程 第1课时 程序框图及顺序构造图形符号名称 功能终端框〔起止框〕 表示一个算法的起始和完毕输入、输出框 表示一个算法输入和输出的信息处理框〔执行框〕 赋值、计算 判断框 判断*一条件是否成立,成立时在出口处标明“是〞或“Y 〞;不成立时标明“否〞或“N 〞流程线连接程序框 连接点 连接程序框图的两局部三种逻辑构造可以用如下程序框图表示:顺序构造 条件构造 循环构造应用例如例1 请用程序框图表示前面讲过的“判断整数n(n>2)是否为质数〞的算法.解:程序框图如下:变式训练观察下面的程序框图,指出该算法解决的问题.解:这是一个累加求和问题,共99项相加,该算法是求100991431321211⨯++⨯+⨯+⨯ 的值.例2 一个三角形三条边的边长分别为a ,b ,c ,利用海伦—秦九韶公式设计一个计算三角形面积的算法,并画出程序框图表示.〔三角形三边边长分别为a,b,c ,则三角形的面积为S=))()((c p b p a p p ---〕,其中p=2c b a ++.这个公式被称为海伦—秦九韶公式〕 算法步骤如下:第一步,输入三角形三条边的边长a,b,c.第二步,计算p=2c b a ++.第三步,计算S=))()((c p b p a p p ---.第四步,输出S.程序框图如下:点评:很明显,顺序构造是由假设干个依次执行的步骤组成的,它是最简单的逻辑构造,它是任何一个算法都离不开的根本构造.顺序构造可以用程序框图表示为变式训练 下列图所示的是一个算法的流程图,a 1=3,输出的b=7,求a 2的值.解:根据题意221a a +=7, ∵a 1=3,∴a 2=11.即a 2的值为11.随堂练习 如下给出的是计算201614121++++ 的值的一个流程图,其中判断框内应填入的条件是______________.答案:i>10.第2课时 条件构造 教学目标1、认识条件构造2、能独立画出两种条件构造图示教学重点: 直到型构造、当型构造教学难点: 直到型构造、当型构造互化学习对象条件构造:先根据条件作出判断,再决定执行哪一种操作的构造就称为条件构造〔或分支构造〕,如图1所示.执行过程如下:条件成立,则执行A 框;不成立,则执行B 框.图1 图2应用例如例1 任意给定3个正实数,设计一个算法,判断以这3个正实数为三边边长的三角形是否存在,并画出这个算法的程序框图.算法步骤如下:第一步,输入3个正实数a ,b ,c.第二步,判断a+b>c ,b+c>a ,c+a>b 是否同时成立.假设是,则存在这样的三角形;否则,不存在这样的三角形.程序框图如右图:例2 设计一个求解一元二次方程a*2+b*+c=0的算法,并画出程序框图表示.解决这一问题的算法步骤如下:第一步,输入3个系数a ,b ,c.第二步,计算Δ=b 2-4ac.第三步,判断Δ≥0是否成立.假设是,则计算p=ab 2-,q=a 2∆;否则,输出“方程没有实数根〞,完毕算法.第四步,判断Δ=0是否成立.假设是,则输出*1=*2=p;否则,计算*1=p+q,*2=p-q,并输出*1,*2.程序框图如下:随堂练习1、设计算法判断一元二次方程a*2+b*+c=0是否有实数根,并画出相应的程序框图.相应的程序框图如右:2、〔1〕设计算法,求a*+b=0的解,并画出流程图.程序框图如下:作业:设计算法,找出输入的三个不相等实数a、b、c中的最大值,并画出流程图.解:算法步骤:第一步,输入a,b,c的值.第二步,判断a>b是否成立,假设成立,则执行第三步;否则执行第四步.第三步,判断a>c是否成立,假设成立,则输出a,并完毕;否则输出c,并完毕.第四步,判断b>c是否成立,假设成立,则输出b,并完毕;否则输出c,并完毕.程序框图如下:第3课时循环构造教学目标1、认识循环构造2、能独立画出两种循环构造图示3、能把直到型循环改写成当型构造,反之亦然教学重点: 直到型构造、当型构造教学难点: 直到型构造、当型构造互化学习对象在一些算法中,经常会出现从*处开场,按照一定的条件反复执行*些步骤的情况,这就是循环构造.反复执行的步骤称为循环体.循环构造有两种形式:当型循环构造和直到型循环构造.当型循环构造直到型循环构造直到型循环构造是程序先进入循环体,然后对条件进展判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环.当型循环构造是在每次执行循环体前,先对条件进展判断,当条件满足时,执行循环体,否则终止循环.应用例如例1 设计一个计算1+2+……+100的值的算法,并画出程序框图.第一步,令i=1,S=0.第二步,假设i≤100成立,则执行第三步;否则,输出S,完毕算法.第三步,S=S+i.第四步,i=i+1,返回第二步.当型循环直到型循环变式训练例1 设计框图实现1+3+5+7+…+131的算法.第一步,赋初值i=1,sum=0.第二步,sum=sum+i ,i=i+2.第三步,如果i ≤131,则反复执第二步;否则,执行下一步.第四步,输出sum.第五步,完毕.程序框图如右图知能训练设计一个算法,求1+2+4+…+249的值,并画出程序框图.第4课时 程序框图的画法应用例如例1 结合前面学过的算法步骤,利用三种根本逻辑构造画出程序框图,表示用“二分法〞求方程*2-2=0〔*>0〕的近似解的算法.算法分析:〔1〕算法步骤中的“第一步〞“第二步〞和“第三步〞可以用顺序构造来表示〔如下列图〕:〔2〕算法步骤中的“第四步〞可以用条件构造来表示〔如下列图〕.在这个条件构造中,“否〞分支用“a=m 〞表示含零点的区间为[m ,b ],并把这个区间仍记成[a ,b ];“是〞分支用“b=m 〞表示含零点的区间为[a,m ],同样把这个区间仍记成[a ,b ].〔3〕算法步骤中的“第五步〞包含一个条件构造,这个条件构造与“第三步〞“第四步〞构成一个循环构造,循环体由“第三步〞和“第四步〞组成,终止循环的条件是“|a-b|<d 或f(m)=0”.在“第五步〞中,还包含由循环构造与“输出m 〞组成的顺序构造〔如下列图〕. 〔4〕将各步骤的程序框图连接起来,并画出“开场〞与“完毕〞两个终端框,就得到了表示整个算法的程序框图〔如下列图〕.解:将实际问题转化为数学模型,该问题就是要求1+2+4+……+263的和.程序框图如下:点评:对于开放式探究问题,我们可以建立数学模型〔上面的题目可以与等比数列的定义、性质和公式联系起来〕和过程模型来分析算法,通过设计算法以及语言的描述选择一些成熟的方法进展处理.例3 乘坐火车时,可以托运货物.从甲地到乙地,规定每*火车客票托运费计算方法是:行李质量不超过50 kg 时按0.25元/kg ;超过50 kg 而不超过100 kg 时,其超过局部按0.35元/kg ;超过100 kg 时,其超过局部按0.45元/kg .编写程序,输入行李质量,计算出托运的费用.分析:此题主要考察条件语句及其应用.先解决数学问题,列出托运的费用关于行李质量的函数关系式.设行李质量为* kg ,应付运费为y 元,则运费公式为: y=⎪⎩⎪⎨⎧>-+⨯+⨯≤<-+⨯≤<,100),100(45.05035.05025.0,10050),50(35.05025.0,500,25.0x x x x x x整理得y=⎪⎩⎪⎨⎧>-≤<-≤<.100,1545.0,10050,535.0,500,25.0x x x x x x要计算托运的费用必须对行李质量分类讨论,因此要用条件语句来实现.解:算法分析:第一步,输入行李质量*.第二步,当*≤50时,计算y=0.25*,否则,执行下一步.第三步,当*≤100,计算y=0.35*-5,否则,计算y=0.45*-15.第四步,输出y.程序框图如下:课堂小节〔1〕进一步熟悉三种逻辑构造的应用,理解算法与程序框图的关系.〔2〕根据算法步骤画出程序框图.作业习题1.1B组1、2.设计感想本节是前面内容的概括和总结,在回忆前面内容的根底上,选择经典的例题,进展了详尽的剖析,这样降低了学生学习的难度.另外,本节的练习难度适中,并且多为学生感兴趣的问题,这样为学生学好本节内容作好充分准备,希望大家喜欢这一节课.。
1.基本数据结构与算法1.1算法算法:是指解题方案的准确而完整的描述。
特征包括:(1)可行性;(2)确定性,(3)有穷性,(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
数据的存储结构有顺序、链接、索引等。
线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3线性表及其顺序存储结构非空线性表的结构特征:(1)且只有一个根结点a1,它无前件;(2)有且只有一个终端结点an,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
结点个数n称为线性表的长度,当n=0时,称为空表。
线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
顺序表的运算:插入、删除。
1.4栈和队列a)栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
栈按照“先进后出"(FILO)或“后进先出"(LIFO)组织数据,栈具有记忆作用。
用top表示栈顶位置,用bottom表示栈底。
栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。
b)队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。
《算法的三种基本逻辑结构:顺序结构、条件分支结构》教学设计教学目标:了解流程图的顺序结构、条件分支结构教学重点:条件分支结构的理解及应用.教学难点:条件分支结构的条件选择.教学过程:一、复习引入:1. 复习框图的符号和意义.2. 复习画流程图的规则3. 引入流程图的逻辑结构。
二、顺序结构1.顺序结构的概念:顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
2.顺序结构一般形式顺序结构是任何一个算法都离不开的最简单、最基本的结构,用图框A 、B 、C 表示顺序结构的示意图,其中A 、B 、C 各框是依次..进行的,即在执行完A 框所指定的操作后,必然接着执行B框所指定的操作,然后再进行C 框所指定的操作。
例1.已知点),(00y x P 和直线l :Ax+By+C=0,写出求点P 到直线l 的距离d 的流程图.例2. 交换两个变量A 和B 的值,并输出交换后的值.分析:引进中间量P.解:算法如下:S1 输入A ,B 的值.S2 把A 的值赋给x.S3 把B 的值赋给A.S4 把x 的值赋给B.S5 输出A ,B 的值..注意:赋值语句提前讲授,学生能理解,否则不好画框图.例2图 例1图输入A ,B 输出A ,B 开始 结束 A=B x=A B=x三、条件分支结构1.条件分支结构:条件结构是指在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构.2.一般形式如图所示:图(1) 图(2)(图(1)处理2为空的情况)注意:(1)判断框根据给定的条件是否成立而选择执行某个处理。
无论条件是否成立,只能执行处理之一,不可能同时执行,也不可能都不执行。
一个判断结构可以有多个判断框。
(2)两种结构的共性:一个入口,一个出口。
特别注意:一个判断框可以有两个出口,但一个条件分支结构只有一个出口;结构中每个部分都有可能被执行,即对每一个框都有从入口进、出口出的路径。
算法的三种基本结构
算法是解决特定问题的一组指令,是计算机实施任务和解决问题的一种方法。
算法有三种基本结构,即顺序结构、分支结构和循环结构。
顺序结构是指按照一定次序解决问题的算法。
它是非常直观和简单的算法结构,只需要按照规定的步骤和顺序依次执行,就可以逐步实现算法的目的。
因此,顺序结构的算法多用于求解简单的问题。
分支结构是指在算法中要做出选择跳转的结构,以不同的方式解决问题。
例如,指令中可能出现“IF…THEN…ELSE…”格式,它们就是分支结构。
当算法求解非常复杂的问题时,就需要使用分支结构。
循环结构是指在算法中,某个操作需要重复执行的一种结构。
但是,循环结构不仅可以用于重复某个操作,也可以表达等价的两个或多个操作之间的循环关系。
当算法的实现需要重复执行一系列操作或者需要表达循环结构时,就需要使用循环结构。
因此,算法的基本结构可以归纳为顺序结构、分支结构和循环结构。
这三种结构可以结合使用,以求解复杂的问题。
只有充分理解和运用这三种基本结构,才能写出高效可靠的算法。
算法的3种基本结构算法是指一系列有限指令的集合,它通过一定的顺序和逻辑关系来解决问题。
简单来说,算法就是一种解决问题的方法。
通常,算法可以分为三种基本结构:顺序结构、选择结构和循环结构。
下面将详细介绍这三种结构及其在算法中的应用。
1.顺序结构:顺序结构是指按照所给指令的先后顺序依次执行,一般没有条件判断和循环语句。
在顺序结构中,每个指令将依次执行,并且每个指令只执行一次。
这种结构常用于一些简单直接的操作,如输入输出、变量赋值等。
顺序结构的一个典型例子是求解两个数相加的过程。
2.选择结构:选择结构是指根据条件的不同选择不同的操作路径。
它通常使用条件判断语句,如if-else语句、switch语句等。
根据条件的真假,程序可以选择执行其中一部分代码,或者跳过其中一部分代码。
选择结构可以根据特定的条件来选择不同的执行路径,从而实现不同的功能。
这种结构常用于进行判断和决策的场景,如根据用户输入的选择进行不同的操作。
3.循环结构:循环结构是指重复执行其中一段操作,直到满足一些条件停止。
它通常使用循环语句,如while循环、for循环等。
循环结构可以重复执行一段代码多次,从而实现对数据的多次处理和操作。
循环结构的一个典型应用是遍历数组或链表,对其中的每个元素进行相同的操作。
循环结构可以大大减少代码的冗余,提高代码的复用性和可维护性。
这三种基本结构是算法设计中最基础、最常见的结构,它们在实际应用中经常与其他结构组合使用。
算法的实际应用中,往往需要根据问题的不同选择合适的结构来解决。
例如,对于一些复杂的问题,可能需要同时使用选择结构和循环结构来解决。
此外,通过合理使用这三种基本结构,可以提高算法的效率和可读性,从而更好地解决问题。
总结起来,算法的三种基本结构,顺序结构、选择结构和循环结构,分别表示了按顺序执行、根据条件选择和重复执行的不同操作方式。
通过合理运用这些结构,可以编写出高效、简洁、可读性强的算法,从而更好地解决各种实际问题。
算法的基本结构及设计-合作与讨论1. 算法的基本结构用框图表示非常清楚.这些框图的含义是什么?有什么要求?上面的框图表示特定的含义,被大家普遍采用.但要注意以下几点:①起止框是任何流程不可少的,表明程序的开始和结束;②输入、输出框可出现在任何位置,次数没有限制;③最后一定要输出结果;④判断框一定要写出判断的条件;⑤框图由左至右书写或由上往下书写;⑥除判断框外,只有一个进入点和一个退出点;⑦框图要求有简单明了的语言叙述.2.算法的结构常用的有几种?各有什么特点?我的思路:算法的基本结构常用、简单的有三种:(1)顺序结构;(2)选择结构;(3)循环结构.顺序结构:描述的是最简单的算法结构.框与框之间是由从上到下的顺序进行的.顺序结构框图只能用来执行较简单的算法的书写.选择结构:有些流程要求进行逻辑判断,并根据不同结果进行不同的处理控制结构.选择结构往往适用于多种结果、多种情况判断的情况(也就是分情况讨论型问题).循环结构:有些问题需要进行多次重复,为了简化编程结构,就要引入根据条件决定是否重复执行一条或多条命令控制结构,叫循环结构.循环结构最大优点是简化编程的工作量.引入循环结构又非常适合计算机处理.因为计算机的运算非常快,执行千万次的运算只是一瞬间的事情,更重要的是还能保证每次结果都正确.3.为什么要引入变量与赋值?赋值符号是什么?要注意哪些问题?我的思路:在设计算法的过程中,解决问题的基本思路常常很简单、很清楚,但是表达却很麻烦.正是为了解决这种问题的需要引入变量.因为变量可以取任何不同的值,从而简化表达式的书写.赋值语句的构式为:变量名:=表达式.(注意:不同语言赋值表达式会略有不同,但基本结构不变)如a:=3,给变量a赋值3(切记不能写为3:=a,这样会出错).又如a:=b,指把变量b的值赋于变量a.赋值语句要注意以下几点:①赋值号左边是变量名字,右边是赋值内容.②赋值号不能对换.如x:=y,表示把y的值取出赋于x.而y:=x是指把x的值取出赋于y.若x是新变量默认为0,则y的值被清除.③赋值符号不能等同于数学中的等号.如y=y+1,在数学中无意义.而在计算机中表示将变量y的值取出,进行加1运算,重新存入变量y.这样变量y的值增加了一个单位.。
算法三大基本结构算法是解决问题的明确步骤,不仅在计算机科学中广泛应用,在数学、工程和其他学科中也有重要的地位。
算法的设计需要考虑问题的规模、输入和输出要求,以及对时间和空间效率的要求。
在算法设计中,三大基本结构对于解决问题至关重要。
这三大基本结构分别是顺序结构、选择结构和循环结构。
顺序结构是算法设计中最简单和最常见的结构。
它按照程序的顺序执行各个步骤,每个步骤会影响紧接着的下一个步骤。
顺序结构是一种线性结构,它是算法中最基本的组成部分之一。
在顺序结构中,各个步骤按照顺序排列,按照既定的逻辑依次执行。
例如,计算两个数字的和可以使用顺序结构,在第一步输入两个数字,在第二步进行加法计算,在第三步输出结果。
选择结构是根据某个条件选择执行不同的步骤。
它允许程序根据某个条件的真假进行分支,从而选择不同的执行路径。
选择结构也称为分支结构,通常使用条件语句来实现。
条件语句根据条件的真假执行不同的代码段。
例如,判断一个数字是奇数还是偶数可以使用选择结构,在条件语句中判断数字是否能被2整除,如果能则是偶数,否则是奇数。
循环结构允许程序重复执行某个代码块,直到满足某个终止条件。
循环结构可以有效地处理需要重复执行的任务,从而提高算法的效率。
常见的循环结构有for循环、while循环和do-while循环。
for循环在执行前定义循环变量和循环终止条件,每次执行后更新循环变量。
while循环根据条件的真假来决定是否继续执行循环体,do-while循环先执行循环体,再根据条件判断是否继续执行。
例如,计算某个数字的阶乘可以使用循环结构,在循环中累乘每个数字,并在满足终止条件后退出循环。
三大基本结构在算法设计中相辅相成,可以实现复杂的算法逻辑。
它们的组合使用可以解决各种问题,提高算法的效率和可读性。
在实际的算法设计中,需要根据问题的特点选择适当的结构,合理地组织和设计算法,以实现问题的解决。
总结起来,顺序结构按照顺序执行步骤,选择结构根据条件选择执行路径,循环结构重复执行某个代码块。