资源简介 (共46张PPT)第二章 算法与问题解决—— 信息技术 必修一 ——算法的概念算法的概念算法的概念算法的概念古代: 算法主要是“算术”,数值的算术运算。广义上: 算法指解决问题或完成任务的一系列步骤。算法的执行者往往是人。计算机领域: 算法指的是用计算机解决问题的步骤,是为了解决问题而 需要让计算机有序执行的、无歧义的、有限步骤的集合。算法的执行者是计算机。用计算机能理解的语言描述算法,就称为计算机程序设计是不是所有的问题都能用算法来解决呢?算法的特征有穷性:算法必须能执行有限个步骤后终止。可行性: 算法中的每一步骤都要求是可实施的,并且执行的任何运算 都可以在有限的时间内完成。确定性:算法中每一次执行都有明确的定义。0个或多个输入:所谓0个输入是指本身给出了初始条件。1个或多个输出:算法必须必须包含至少一个输出。写出所有的素数数出所有星星的数量精卫填海列出方程y=2x+1的所有实数解将正数相加得出负数找出班级里英语成绩最好的人取两个区间的中点程序运行后没有结果算法的特征判断是否算法就用特征来判断1.在求一元二次方程实数根的算法中,当方程不存在实数根时,也要求输出“方程无实数根”。这一要求主要体现了算法特征中的A.有穷性 B.确定性C.有1个或多个输出 D.有0个或多个输入2.关于算法的描述,下列选项中正确的是( )A.一个算法,当没有输入时,也没有输出B.一个算法的执行步骤可以是无限的C.一个问题只能有一个种算法D.一个算法可以没有输入著名数学家华罗庚“烧水泡茶”的两个算法。算法一第一步:烧水;第二步:水烧开后,洗刷茶具;第三步:沏茶。算法二第一步:烧水;第二步:烧水过程中,洗刷茶具;第三步:水烧开后沏茶。算法的特征解决同一个问题可以有不同的算法算法具体的实现方式很多算法的要素用算法解决问题时,必须明确参与运算的初始数据、运算是产生的中间数据以及代表问题解决的结果数据。在对数据进行运算时,必须明确每一步运算的是什么、对哪些数据进行运算等。在算法执行过程中,有时需要根据数据或运算结果的特点进行不同的处理,这时就需要运用控制转移来执行不同的操作。(分支、循环)计算机解决问题本质是”数据运算”数据运算控制转移算法的描述同一个算法可以用不同的方式描述算法的描述(1)输入苹果的重量x(2)判断苹果的重量是否大于2千克(3)如果苹果的重量不大于2千克,应付款y=x*1.5(4)如果苹果的重量大于2千克,应付款y=2*1.5+(x-2)*1.5*0.8(5)输出应付款的金额使用自然语言描述算法。优点:通俗易懂,容易理解缺点:书写烦琐,不确定性,容易出现歧义,不能被计算机识别和执行。算法的描述使用流程图描述算法。开始输入苹果的重量xX>2 Y=x*1.5Y=2*1.5+(x-2)*1.5*0.8输出应付款 y结束YN(1)输入苹果的重量x(2)判断苹果的重量是否大于2千克(3)如果苹果的重量不大于2千克,应付款y=x*1.5(4)如果苹果的重量大于2千克,应付款y=2*1.5+(x-2)*1.5*0.8(5)输出应付款的金额优点:直观形象,易于理解缺点:分支增多时影响理解,不能被计算机识别和执行。算法的描述算法的描述使用伪代码描述算法。车位探测结果→flagIF flag=1 then (指示灯绿色,输出“空车位”)else (指示灯红色,输出“非空车位”)伪代码是符号接近计算机语言的算法描述方式,没有统一严格的规定,只要定义合理、表达正确即可。风格很像程序设计语言,但又不是真正能被计算机理解的代码优点:直观简洁,紧凑简练,转化成代码更方便缺点:语法不统一,不易排查错误,不能被计算机识别和执行。【1】介于自然语言和计算机语言之间的一种算法描述是( )A.python程序设计语言B.流程图C.伪代码D.高级语言【2】用伪代码描述算法:①输入a、b的值;②c←a;③a←b;④b←c;⑤输出a、b的值;算法的描述当输入a的值为3,b的值为5时,输出结果中a和b的值分别为A.3 5 B.3 3C.5 5 D.5 3算法的描述机器语言由二进制的0、1代码指令构成,能被计算机直接识别。但理解和记忆机器语言非常困难,并且容易出错,编程效率低。汇编语言是符号化的机器语言,采用英文助记符代替机器指令,容易记忆和识别,提高了程序的可读性。但它是面向机器的语言,是为特定的计算机系统设计的,它要求软件工程师对相应的机器硬件非常熟悉16位计算机的机器指令为:1101001000111011汇编语言指令为:add2,3,result,运算结果写入result程序语言的发展都是低级语言算法的描述高级语言更接近自然语言,并不特指某一语言,也不依赖于特定的计算机系统,因而更容易掌握和使用,通用性也好。比较流行的高级语言有Java、C/C++、Python等,程序的可读性好,也便于修改、维护。机器语言→汇编语言→高级语言高级语言代码为:result=2+3程序语言的发展优点:计算机理解执行缺点:需要学习,难度高算法的描述自然语言 流程图 伪代码 计算机语言优点 通俗易懂 形象直观 容易理解 简洁易懂 语法任意 能让计算机执行缺点 易产生歧义 情况复杂时,过多的流程线影响理解 不直观 错误不易发现 需要有学习基础×√√×√×算法的描述小明发现奶茶店的奶茶桶是需要人为更换的,因此他设计了一个算法,当奶茶容量少于500ml 的时候,会自动添加奶茶直至容量到达 500ml。下列说法正确的是 ( )A.通过压力计测算当前奶茶桶内奶茶的容量,属于数据的获取B.该算法需要时刻计算当前奶茶桶内奶茶的容量,属于算法要素中的控制转移C.当奶茶容量超过 500ml 的时候,奶茶停止添加,属于算法要素中的运算D.该算法考虑了数据、运算、控制转移等要素,一定是合理的A算法的控制结构大程序采用“自上而下,逐步细化”的方法,把大任务拆分成若干个小任务组成,每一个小任务再分解为若干个子任务,逐级分解,直至三种基本结构。任何算法(程序)都可以由顺序结构、分支结构和循环结构这三种基本结构组合来实现算法的控制结构按照顺序从上往下依次执行,每条语句必须且只执行一次。语句1语句2语句3选择乘车日期和车次选择或添加乘车人提交购票订单网上支付购票款顺序结构算法的控制结构根据条件判断选择不同的分支执行:条件为真时执行Y指向的语句,否则执行N指向的语句。选择结构中,必有一个分支被执行,其余分支不执行。分支结构NY语句块1语句块2条件表达式 语句块1YN条件表达式是否为真?算法的控制结构分支结构该流程图的功能是什么?求x,y,z三个数中的最大值算法的控制结构多分支特点:条件判断选择不同分支,一次只执行一个分支,其余分支不执行当<表达式1>条件成立时,执行<语句块1>, 本结构结束。若为假,则判断<表达式2>,依此类推。直到找到一个为真的条件时,才执行相应的语句块,本结构结束。对输入的整数a和b,找出其中的较大者赋给c并输出。解决该问题的算法流程图如图所示,该流程图中虚线框部分的内容可为( )D算法的控制结构对某个条件进行判断,当符合条件时,执行Y指向的语句(循环体),然后返回重新判断这个条件,当符合条件时,再次执行循环体。重复上述过程,直到不符合条件,则跳出循环,执行循环体后面的指令。NY语句块1语句块2条件表达式 算法的控制结构循环结构BC某算法的部分流程图如图所示。执行这部分流程,若输入a为22,则下列说法正确的是A. a 的值为 2B. 循环条件“a=b?”一共执行了 3 次C. 语句“a←a-b”一共执行了 3 次D. 第 2 次执行循环条件时,b 的值为 6常见问法:变量值?输出值?语句执行几次?作用?做法:将每次循环的变量值列成表格2.某算法的部分流程图如第 8 题图所示。若输入 m 和 n 的值分别 8 和 6,运行该算法后,以下说法正确的是()A.“n≠0?”共执行了 2 次B.若输入 m 和 n 的值分别为 6 和 8,运行结果不变C. 该算法的功能为求解 m 和 n 的最大公约数D.流程图标记“①”所在处理框中的语句调换次序不影响该算法的功能B辗转相除法——最大公约数×√×××算法解决问题的过程抽象与建模数据采集算法解决问题的过程从现实项目中的真实情境中提炼出核心的要素并加以确定或假设,最终定义出一个有明确已知条件和求解目标的问题,并用数学符号描述解决该问题的计算模型问题:求全班的平均分已知:每个学生的得分,假设为a1到aN求解:班级的平均分,假设为aver数学模型: 已知a1,a2,a3,a4,……,aN,求N个数的平均数averaver=(a1+a2+……+aN)/N设计算法数据采集算法解决问题的过程遵循算法的特征,围绕算法的要素设计算法,自顶向下,逐步细化①. 输入a1到an②. 表示第几个学生的变量i初始化为1③. 如果i<=n,把第i个学生的成绩累加到sum中,否则转⑤④. i增加1,然后转③ 输出结果aver⑤. 总和sum除以N,结果记录在aver中⑥. 输出变量aver的值①输入数据②处理数据③输出处理结果模拟策略:根据现实事物的实际流程和要求逐步进行处理×√√√√×39第一步:抽象与建模第二步:设计算法第三步:描述算法算法解决问题的过程计算机解决问题的过程第一步:抽象与建模第二步:设计算法第三步:编写程序第四步:调试运行程序计算机解决问题过程计算机解决问题过程1.抽象与建模绘制正多边形,除了要知道它的边数n和边长a,关键是要计算出每次旋转的角度。因此,解决这个问题的计算模型可以表示如下:假设正多边形的边数为n, 边长为a。则内角度数d的值为:d= (n-2) x180÷n。每次旋转的角度为:180-d。建立数学模型计算机绘制一个正N边形2.设计算法基于问题的抽象与建模,绘制一个正多边形的算法可以做如下描述:①输入要绘制的正多边形的边数n和边长a。②计算正多边形的每个内角度数d, 其中d= (n-2) x180÷n。③将以下过程重复执行n遍:画一条长度为a的线段,再将画笔方向向左(逆时针)旋转(180-d) 度。输入数据处理数据输出数据计算机解决问题过程3. 编写程序要让计算机按照预先设计的算法进行处理,需要将该算法用计算机程序设计语言描述,形成计算机程序。计算机解决问题过程import turtlen=int (input ("please input n: "))a=int (input ("please input a: "))d= (n-2)*180/nt=turtle. Pen()for i in range(n) : #重复执行n遍t.forward(a) #向前绘制长度为a的线段t.left(180-d) #向左旋转(180-d) 度4. 调试运行程序通过运行程序,计算机会自动执行程序中的命令。但是,在将算法进行程序实现时,可能会因为录入错误、语法错误、逻辑错误等原因,导致程序不能正常运行或输出错误的结果。此时,需要对程序进行调试,以便发现错误并进行修正。例如、字母大小写的疏忽可能直接决定程序能否正常运行,程序中参数的调整可能影响输出图形的形状。计算机解决问题过程451.用计算机解决问题一般经历下面几个过程:①设计算法,②调试运行,③编写程序,④抽象建模。以下排序正确的是( )A.④①③② B.①②④③ C.③④①② D.④①②③2.某景区使用了游客人数控制系统来控制景区内游览人数。该系统在景区各个人口和出口分别统计人数,并汇总计算得出景区内的大致人数。该过程属于计算机解决问题的一般步骤中的哪个环节( )A.抽象建模 B.设计算法C.编写程序 D.调试运行程序AD计算机解决问题过程×√√√√× 展开更多...... 收起↑ 资源预览