信息技术“算法描述与设计”

内容分析:
  本节课主要上让学生了解什么是算法及其特征,掌握三种描述算法的方法
教学目标:
知识与技能:进一步理解什么是算法,知道算法的多样性;能够对设计的算法做简装的评价;学会利用自然语言、流程图和伪代码来描述算法。
过程与方法:培养学生用算法描述问题的能力和正确解决问题的过程。
情感态度价值观:培养学生的高阶思维能力,如综合、评价、分析、思辨等。
教学设想:
  将韩信点兵、凯撒密码等学生感兴趣的内容与算法设计结合起来,让学生体会到算法描述并不枯燥,很有意思,因势利导,鼓励他们把数学课中的内容也用算法描述出来,达到学科相融的目的。
教学重点:
  1、算法的特性
  2、用自然语言、流程图、伪代码描述算法
教学难点:
  用流程图描述算法
教学策略:任务驱动、示范观察、合作讨论、自主探究相结合
教学课时:1课时  
教学过程:
  任务一:为什么说算法是“灵魂?
活动:讨论引入
  算法存在于人们生活中,如:上街购物、顾客付款、营业员(主)找银等。
回顾:韩信点兵
  “韩信点兵问题”有不同的求解过程,就有不同的算法。
  有N个人,除以3,5,7,分别余2,3,2,求N。
分析:算法
  1、解决问题的方法和步骤。
  算法是尼克劳斯.沃斯(N.Writh)提出的,他指出:算法+数据结构=程序。
  (即算法不能单独构成程序,它必须和数据结构合二为一)
  2、算法的发现
  时间:公元前3000年~公元前1500年 地点:巴比伦
  巴比伦人求解“算法”的过程:先用解代数方法,再计算实际数目,最后写上一句短句“这就是一个过程”。
  3、算法的特征
  我们曾在必须修课中提过一点算法,如:冒泡排序法。
  例:计算1+2+3+……+100=?
  这个算法有限制范围,可以在有限时间内完成,这是算法的第一个特征:有穷性。计算此算法可以用纸笔、算盘、运算器和计算机来完成,且计算过程是多样的,但结果是唯一的。这就是算法的可行性、确定性。
计算方法:
  ⑴把这100个数按顺序相加。
  ⑵用凑数法:1+99=100,2+98=100,3+97=100,……,49+51,最后只剩下50和100。
  ⑶令S=0,使1≤n≤100,先执行S=S+n ⑴,再执行n=n+1 ⑵
  n=1,S=0时,S(0)=1 n=2,S=1时,S(0)=3 n=3,S=3时,S(0)=6
  n=4,S=6时,S(0)=10 n=5,S=10时,S(0)=15 n=6,S=15时,S(0)=21……
  算法的另外一个特征:输入、输出。
实践:算法应用
练习:水仙花数问题,如153=1^3+5^3+3^3,分析它应满足什么条件才能使用此方法?
任务二、如何描述算法?
  分析:1、用自然语言描述算法
  ⑴自然语言——人们日常生活中使用的语言。
  ⑵此种语言的特点:通俗语易懂,缺乏直观性和简洁,且易产生歧义。
  使用此种语言的注意事项:描述要求尽可能精确,详尽。
示范:用自然语言描述凯撒密码的原理
  第1步:输入26个英文字母,它们分别对应1~26个数学。
  第2步:令a=1,k=3,n=26。
  第3步:使a的取值范围为1≤a≤26,F(a)=(a+k) mod n,转第5步。
  第4步:a=a+1,转第3步。
  第5步:输出F(a)相对应的数字。
  第6步:把数学转化成相当的字母,输出字母。
  第7步:累计字母出现顺序,转第4步。
练习:现有一串字母“PROGRAM”给它加密,请设计算法,用自然语言描述。
分析:2、用流程图描述算法
  ⑴特点:描述算法形象、直观,容易理解。
  ⑵流程图符
示范:
探究:用流程图表示1+2+3+……+100=?
分析:.3、用伪代码描述算法
特点:描述的算法简、易懂,修改容易,容易转化为程序语言代码。
探究:分析课本第9页算法描述
第一个条件:y mod 4=0
判断闰年的条件:⑴y不能被100整除;⑵y能被400整除且y能被400整除。
判断不是闰年的条件:⑴y mod 4=0 且y mod 100=0,但y不能被400整除;⑵y不能被4整除。
表示条件判断语句 表示循环处理语句:
  IF 条件 THEN 执行语句一 Do While 条件循环语句
  ELSE执行语句二 Loop
  END IF
  条件语句中可以包含多个子语句
实践:用表格比较自然语言、流程图和伪代码3种描述方法的优缺点。

方法
特性
自然语言 流程图 伪代码
直观清晰      
确定性      
烦琐程度      
是否容易修改      
通俗易懂      

总结:
  学生进一步理解什么是算法,知道算法的多样性;能够对设计的算法做简装的评价;掌握利用自然语言、流程图和伪代码来描述算法,通过分析对比,我们知道了三种描述方法的优劣。用伪代码描述的算法简洁、易懂,修改起来比较容易,并且很容易转化为程序语言代码,但它没有流程图描述的算法直观,一旦出现逻辑错误也不便排查。

回顶部