一、课题:程序设计的基本方法
二、教学目标:
⑴理解算法的概念,了解描述算法的两种方法——自然语言和流程图,知道各自的优缺点。
⑵初步掌握用流程图描述算法。
三、教学的重点和难点:
⑴算法的概念。
⑵用流程图描述算法。
四、教学过程:
新课导入
我们在日常生活中经常要处理一些事情,就拿邮寄一封信来说吧,大致可以将寄信的过程分为这样的几个步骤:写信、写信封、贴邮票、投入信箱等四个步骤。将信地投入到信箱后,我们就说寄信过程结束了。
那么在计算机中,它是如何来处理问题的呢?是否和我们日常处理事情的过程很类似呢?
回答是肯定的,例如要设计一个程序让计算机求1+1=?,那么我们就要先编写程序。在编写程序前需要先确定解决问题的思路和方法,并要正确地写出求解步骤,这就是算法。
新授课
一、算法的概念
为了更好地理解算法,举几个例子说明:
例1交换两个变量中的数据。
先请学生考虑解决这个问题的方法,然后请一个学生说一说自己想到的解决方法。如学生回答不出来,作适当提示:如果要将醋瓶中的醋和酒瓶中的酒互换应怎么做?学生会很容易地想到要借助于一只空瓶子。
分析题意:已知变量x和y中分别存放了数据,现在要交换其中的数据。为了达到交换的目的,需要引进一个类似于空瓶子的中间变量m。交换两变量中数据的具体算法如下:
①将x中的数据送给变量m,即x→m;
②将y中的数据送给变量x,即y→x;
③将m中的数据送给变量y,即m→y。
总结:在程序设计中,交换变量中的数据常用在排序算法中。
例2输入三个不相同的数,求出其中的最小数。
同样,先请学生思考,然后请学生说出他所想到的解决该问题的方法。
教师分析:先设置一个变量min,用于存放最小数。当输入a、b、c三个不相同的数后,先将a与b进行比较,把小者送给变量min,再把c与min进行比较,若c<min,则将c的数值送给min,最后min中就是三个数中的最小数,具体算法如下:
①若a<b,则a→min,否则b→min;
②再将c与min进行比较,若c<min,则c→min。这样,min中存放的即是三个数中的最小数。
请学生思考以下两个问题:
⑴如果要求出三个不相同数中的最大数,该如何设计算法?
⑵如果是n个不相同的数,求出其中的最小数呢?
例3输入两个正整数a和b(a>b)求它们的最大公约数。
提问:什么叫最大公约数?
给学生思考后回答。然后举一个用欧几里德法求最大公约数的例子,如求56和32的最大公约数的过程如下:
56,32,24,8,0
则8就是56和32的最大公约数。从第三项开始的各项,分别是前两项相除所得的余数,如果余数为0,它的前一项就是a和b的最大公约数。
算法如下:
①输入a,b(a>b);
②求a/b的余数r;
③如果r≠0则将bàa,ràb,再次求a/b的余数r,转③;
④输出最大公约数b。
总结:对于同一个问题,可以有不同的解决方法,即有不同的算法。
二、算法的描述
为了描述一个算法,可以用自然语言、流程图或其他形式进行。
前面的三个例子就是用自然语言描述的。自然语言就是人们日常使用的语言。用自然语言描述算法,人们比较容易接受。但有个缺点就是叙述比较繁琐和冗长,容易出现“歧义性”。
请学生阅读课本中的讨论与思考,然后分别请学生将自己所理解的含义表述出来。学生可能有两种理解:“老张不认识这个人”和“这个人不认识老张”,从而说明自然语言表述容易产生“歧义”。为了能够将解决问题的算法清晰、直观地表示出来,我们一起来学习流程图。
⑴让学生看大屏幕投影,简单介绍流程图的基本图形符号及其含义。
⑵用流程图描述例6-1-3的算法,并对照流程图讲解各个符号的意义和作用。
⑶请学生对照课本例6-1-1、例6-1-2的算法,观察图6-1、图6-2,进一步理解流程图各个符号的含义,并体会如何用流程图描述算法,时间5分钟。
巩固练习
请学生写出求一元二次方程的根的算法,要求:
①用自然语言描述;
②用流程图描述。
课堂总结
请学生用自己的语言总结这节课的学习内容:
⑴算法是指解决问题的思路和方法。
⑵描述算法的形式有多种,常用的有:自然语言和流程图。
用自然语言描述算法比较容易接受,但叙述冗长,容易产生“
歧义”。用流程图描述算法比较清晰、直观,不容易产生“歧义”。
⑶流程图中常用符号的含义。
布置课后练习
节后练习1、2、4①