资源简介 想一想,有什么办法可以解决这个问题 如何在屏幕上显示这样的图案? 可以用顺序语句和循环语句两种方法来解决问题 (1)设置两个循环变量i 和 j,i 控制行号的循环,i=1 to 6,j 控制每行输出的“*”个数循环,j=1 to i。 (2)设计内外两个循环,外循环每执行一次行号加1,内循环每执行 一次循环,在屏幕上打印“*“个数等于行号 (3)循环执行6次结束 (1)在第屏幕第一行打印"*"; (2)在第屏幕第二行打印"* *"; (3)在第屏幕第三行打印 "* * *"; (4)在第屏幕第四行打印 "* * * *"; (5)在第屏幕第五行打印"* * * * *"; (6)在第屏幕第六行打印 "* * * * * *"; 在程序设计中,解决问题的方法和步骤,就叫作算法。 什么是算法? 用计算机编程解决问题时,首先确定解决问题的思路和方法,并写出正确的求解步骤,这就是所谓的算法。简单的说,算法就是解决问题的方法和步骤。 问题:猎人带着一只狼,一头羊和一些白菜过河,但渡船太小,一次只能带一样。因为狼要吃羊,羊要吃白菜,所以狼和羊,羊和白菜不能在无人监管的情况下相处。猎人不知道如何渡河。有人对猎人说:只要按照他所写的一组指令去做,就能顺利过河。 第1步:把羊带到对岸; 第2步:返回; 第6步:返回; 第4步:返回时把羊带原岸; 第5步:把菜带对岸; 第3步:把狼带对岸; 第7步:把羊带对岸; 算法 问题:猎人带着一只狼,一头羊和一些白菜过河,但渡船太小,一次只能带一样。因为狼要吃羊,羊要吃白菜,所以狼和羊,羊和白菜不能在无人监管的情况下相处。猎人不知道如何渡河。有人对猎人说:只要按照他所写的一组指令去做,就能顺利过河。 第1步:把羊带到对岸; 第2步:返回; 第6步:返回; 第4步:返回时把羊带原岸; 第5步:把菜带对岸; 第3步:把狼带对岸; 第7步:把羊带对岸; 算法 发电子邮件的方法很多,下面是其中的一种操作步骤: 假如你的朋友不会发电子邮件,你怎么教会他? 第1步:登录电子信箱; 第2步:点击“写信”; 第6步:点击“发送”; 第4步:输入主题; 第5步:输入信件内容; 第3步:输入收件人邮箱地址; 算法 任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积. 第一步:给定一个正实数r; 第二步:计算以r为半径的圆的面积S=π*r*r; 第三步:得到圆的面积S. 算法 如果你是一个程序员,你采取哪种方法进行编程?为什么? 如何在屏幕上显示这样的图案? Private Sub Form_Click() Dim i , j As Integer For i = 1 To 6 For j = 1 To i Print "*"; Next j Print Next i End Sub Private Sub Form_Click() Print "*"; Print "* *"; Print "* * *"; Print "* * * *"; Print "* * * * *"; Print "* * * * * *"; End Sub 如是要是打印100行、1000行呢? 评价算法的优劣 同样解决一个问题,可以有不同的算法,但是不同的算法解决问题的效果和效率却可能大不相同。 算法的优劣直接影响所编程序的质量。 一个好的算法应该是有穷的、可读的、确定的以及消耗电脑内存空间小。 举例 问题:编写一个包含有1000位同学的姓名与电话号码的通信录程序,当输入某同学的姓名时,程序立刻显示出该同学的电话号码 算法一: (1)检索通信录第1行,判断是否与该同学的信息相符 (2)如果相符,则显示该同学的电话号码,并结束程序;如果不相符,则检索下一行,继续进行判断……? 算法二: (1)对通信录以姓名为关键字进行升序排序 (2)从通信录表的中点位置开始检索,判断是否与该同学的信息相符。如果相符,则显示该同学的电话号码,并结束程序。若信息不相符,则表的中点位置的同学姓名要比所找同学姓名”大“,则放弃中点位置的后半部分,返回到前半部分的中点位置继续进行检索;若表的中点位置的同学姓名要比所找同学姓名”小“,刚放弃中点位置的前半部分,返回到后半部分的中点位置继续检索…… ? 自主探究任务 (1)阅读文字材料,谈谈算法的作用。 (2)选择一个你感兴趣的算法故事了解,并和全班同学作简单介绍。 解决问题的一般思路 几年前,细菌传染在一所医院爆发,医生和临床工作者想知道,这种传染如何在患者群体中进行的,于是他们采集了遗传和生理数据,将数据同问题描述一起传给到计算者,然后这些计算研究者采用算法思维,正式定义这个问题,解决它,写出代码,分析数据,将结果的传染情形提供给医生和临床工作者。 程序设计解决问题的一般思路 ?:分析问题—设计算法—实现算法(分析算法的优劣 )—根据最优算法编程—解决问题 同学们在今后利用程序解决问题时要形成这种算法思维,多学习和研究算法,更快更巧妙得解决问题! 举例:如何编写程序解决“在屏幕上显示图案问题” 分析问题 1 设计算法 2 评价算法优劣 3 根据算法进行编程 4 解决问题 5 小结 算法是程序的灵魂 为解决问题提供思路和方法 算法的优劣影响编程的质量 程序设计解决问题的一般思路: 分析问题 设计算法 评价算法的优劣 根据算法选择编辑语言进行编程 解决问题 请用VB语言将下面一句赋值语句表示出来: “将a加b除以a减b的值赋给x变量”句子 用VB语言将下面流程图中的赋值过程表示出来: 开始 c=a+b c=c/a c=c-b x=c 结束 算法的描述 自然语言 流程图 比较 总结:我们要根据实际情况来选择使用自然语言或流程图描述算法。比如,当用自然语言描述算法容易让人产生歧义时,就要换一种方式进行描述。 描述方式 优点 缺点 自然语言 描述简单、容易理解 有时会产生歧义 流程图 逻辑清晰、直观明了 描绘麻烦 图形符号 名称 功能 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框 表示一个算法的起始和结束 表示一个算法输入和输出的信息 赋值、计算 判断某一条件是否成立,成立时在出口处标明“是”或“Y”,不成立时标明“否”或“N”. 构成流程图的图形符号及其功能 流程线 连接程序框 连结点 连接程序框图的两部分 算法步骤为: 第一步,输入圆的半径 r . 第二步,计算 第三步,输出s. 流程图 结束 开始 输入r 输出s 计算 任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积,并画出程序框图表示. 例:判断“整数n (n>2)是否是质数”的算法 算法步骤: 流程图: 第1步,给定大于2的整数n. 第2步,令i=2. 第3步,用i除n,得到余数r. 第4步,判断“r=0”是否成立.若是,则n不是质数,结束算法;否则将i的值增加1,仍用i表示. 第5步,判断“i>(n-1)”是否成立.若是,则n是质数,结束算法;否则返回第三步. 开始 输入n 求n除以i的余数 i的值增加1,仍用i表示 i>n-1或r=0? r=0? n不是质数 n是质数 结束 否 否 是 是 i=2 自学任务 自学流程图的符号及功能,掌握利用流程图描述算法,完成学习任务 问题:从键盘中输入两个不同的数,然后显示最大的数,请设计算法,画出流程图,并用VB 编写程序,体验通过程序设计解决问题的完整过程。 任务提示:综制流程图时要求新建一个word文档或PPT文档,写出算法步骤,利用其中的画图工具画出流程图,文件命名”学号+姓名.doc/.ppt“,所有VB程序文件放在一个文件夹中压缩成一个包”学号+姓名.rar“ 课堂小结 算法的概念及在程序设计中的重要性 算法——解决问题的方法和步骤,是程序的灵魂 程序设计解决问题的一般思路 分析问题—设计算法—分析算法的优劣—根据最优算法编程—解决问题 算法的描述方法 自然语言和流程图 展开更多...... 收起↑ 资源预览