4.1 算法及其特征
(一)项目目标分析
通过有趣的实际问题,熟悉算法的概念,了解算法的要素和重要特征,学会根据实际问题选择恰当的方式来描述算法;
通过问题求解,掌握用编程语言实现简单算法。
(二)项目内容分析
程序设计是给出解决特定问题程序的过程。
程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。
算法是程序设计中的核心,算法依赖程序设计语言来实现。
程序设计语言有较大的局限性,不能用来解决所有类型的问题,人们要根据所需解决的问题不同而选择不同的语言,而语言本身也在不断变化和更新。
因此,语言具有不稳定和变化更新快的特征;算法则比较稳定,它与描述算法的语言无关,可以在更长的时间内发挥作用。
程序设计语言只要多实践多使用就能熟能生巧,算法则需要比较深入的理论基础知识,必须经过严格的科学训练。
基于以上认识,程序设计语言知识可以作为一种技能来培养,程序设计方法可以作为一个规则来遵循,算法可以作为科学方法来传授,这样才能适应时代的需要,跟上技术的飞速发展。
通过前面单元的学习,我们可以认为学生具备初步编写程序的简单技能,如基本的输入输出语句、选择结构和循环结构的语句实现、列表及文件的初步操作等。
本项目既要唤醒学生已有的技能,又要让学生初识算法,因此在项目及活动设计时,抛开晦涩难懂的概念和语法,不做内容上的堆积和罗列,采用了生动有趣的活动形式,每个活动中会涉及到一个或几个知识点。
代码不是最终目的,而是作为载体,让学生初步了解程序设计的基本方法,在面对实际问题的时候,可以换一种思维,找到有效的算法。
本节的项目“软件开发社招新”主要包含“探讨面试题的解决方案”和“求解‘谁是冠军’”两个任务,包含4个活动。
任务一的重点在已有知识和技能的唤醒,任务二的重点是最基本算法思想的介绍。
(三)项目教学建议
通过本项目的教学应让学生了解程序设计的基本方法和基本流程,利用学生感兴趣的实例,让学生感觉程序设计并不是遥不可及的,而是人机对话的一种方式,让学生带着轻松的心情,在游戏中学习,在学习中游戏。
以活动为中心,增加拓展类知识,兼顾到不同层次学生的需求。
“探讨面试题的解决方案”包含三个活动。
活动1寻找“开关对应关系”重在定性分析,挖掘对象的特征,重温算法的结构化表示如流程图。
活动2寻找“被污染的药丸”重在定量分析,让学生尝试对生活中的实体进行数据抽象,针对实际问题分析已知信息和未知信息,挖掘程序中的输入、输出信息,了解算法的特征。
活动3寻找“误删的ID号”,将实例的增删抽象成数值的加减,同时复习前面单元中学会的编程技术,如累加、文件读写等。
任务二求解“谁是冠军”,介绍最简单最直接的算法思想——“枚举”,尝试将自然语言转换为程序表达,了解逻辑运算在程序设计中的应用。
两个任务4个活动,编程量不大,因此建议在教学过程中,重点放在分析问题,解决问题的过程上,把握每个活动的重难点。
根据学生实际情况,设定“读懂程序”“修改程序”“编写程序”“自创问题及编程实现”四个梯度,使每个学生都能获得成功的体验。