剥开编程教学中“算法应用”的坚硬果壳

2023-03-07 16:41候继仓山东省日照教学研究室
中国信息技术教育 2023年5期
关键词:排队账号语句

候继仓 山东省日照教学研究室

吴加明 福建省泉州市第七中学

基于新课标的信息科技教材未发行使用,一线教师只能使用现行教材进行授课的情况,笔者通过深入中小学进行教学视导、听评课等活动,发现教师在教学实施中仍存在诸多问题与不足。因此,笔者认为,教师需要研读课标并于实践中探索,切入“算法应用”,才能将编程教育扎实落实到课堂教学中。

●从学会选择结构到学会选择

在《用选择结构程序做出判断》的公开课中,授课教师让学生通过编程实现机器人依据学生点餐来配送相应的饭菜。整节课下来,项目目标和教学任务均未完成,知识学习也不理想。探究问题所在,发现案例选择脱离学生认知,无法对送餐机器人的工作原理进行抽象、分解。因此,建议教师修改任务:用学生食堂点餐作为实际“应用”案例,并将课题命名为《我是干饭人》。

1.排队

吃午饭时,由于下课时间推迟,干饭人到达食堂时各窗口已排起长队,那么如何选择合适的队伍来排队呢?①选择队伍最短的——比较直观且迅速。②选择师傅打饭快的——这需要对打饭师傅的业务熟悉且准确判断。③选择师傅打饭时量给得足且肉给得多的——这考虑的不仅是业务,还有人品。学生七嘴八舌地回答,出现各种排队条件,教师带领学生使用Python选择语句进行操作:①只选择队伍最短的,这是单选择分支(if…),迅速且易于实现。②考虑到队伍长短、师傅打饭速度、给饭量等,这是多选择分支(if…else if…),虽然复杂耗时但经多重考虑后,可以取得最佳效果。③拓展:在学生排好队后,出现了有人因一块排骨的归属问题和师傅争吵几句的意外情况,严重影响队伍进度,该怎么办?

2.打饭

一名合格的干饭人,既要吃饱,更要吃好,那么主食和菜的选择就非常关键了。①主食为馒头米饭二选一,这是典型的单选择分支(if…else…)。②菜品较多,有肉食、海鲜、蔬菜等,怎么办呢?在大脑里快速梳理一下选择的条件:尊重自身需求,只选择口味好的,爱吃的;考虑身体的整体需求,营养均衡,荤素搭配;考虑经济条件,每餐不能超过15元……依据条件的选择与排序不同,每个干饭人都有不同的菜品搭配。接下来用流程图和Python语句来实现这一过程,需要注意的是,因每个人对选择条件的侧重不同,其流程图和程序中条件判断语句的顺序可能不同,即学生的项目成果是个性化的,能正确表现学生的选择意图即可。

3.总结

整个教学过程让学生全程参与,选用学生身边最熟悉的生活场景,按照计算思维的四个过程来展开:①抽象。依据学生生活经验,将食堂就餐过程抽象为排队和打饭两个环节,并进行需求分析。②分解。将排队和打饭过程细化为多个可使用选择判断来解决的问题,并参照具体判断条件做出相应选择。③模式识别。将排队选择过程和饭菜选择问题迁移到编程中的单选择分支和多选择分支来解决实现。④算法实现。学生利用流程图和Python编程实现食堂就餐的整个过程,生成个性化的作品。

由此体现一个道理:当面对选择举棋不定的时候,可以像编程中的判断语句那样,抽象出影响选择的因素,然后对其进行排序,依据现实逐一判断,最终得出客观、合理的选择结果。这既是计算机编程中判断语句的运行原理,也是培养计算思维的过程。

●基于“用户登录”开展深度学习

在学习编程的分支结构时,很多教师会以“用户登录”为例加以讲解,这是信息系统的基本组成模块,是进入信息系统的第一道门槛。那么,“用户登录”的算法应该如何设计并利用Python语言实现呢?

1.算法的优化迭代

(1)入门级算法。“算法1”是输入账号和密码,与代码中的明文信息直接进行比对,如果都正确,则进入下一步,否则,提示错误,并接受重新输入。这个算法存在明显的不足:第一,正确的账号和密码用明文写在代码中,容易被学生质疑毫无秘密可言;第二,这样可以比对的账号数量很有限。

(2)初级算法。“算法2”是输入账号和密码,使用接收到的账号和密码信息到信息系统数据库中的用户表进行查询操作,如果能查询到相应的用户信息,则进入下一步,否则,提示错误,并重新接受输入。使用数据库,不但可以存放大量的用户信息,而且解决了一个数据与代码分离的重大问题,方便后期的系统维护。

(3)中级算法。明文密码直接保存到数据库明显是不可取的,一般情况下,密码信息都要经过加密算法处理后再存放到数据库的用户表中。因此,“算法3”是输入账号和密码,对接收到的密码信息进行相同加密算法处理后,再和账号信息一起到信息系统数据库中的用户表进行查询操作,如果能查询到相应的用户信息,则进入下一步,否则,提示错误,并重新接受输入。这里也就很好地解释了为什么大家使用的“密码找回”功能,其实不是真正找回密码,而是设置一个新密码替换旧密码。

2.Python代码实现

现在,我们利用Python自带的tkinter(图形交互界面)、sqlite(小型数据库)和hashlib(加密算法)三个模块来实现上述“算法3”的功能,即图形界面的用户注册和登录小程序,其效果图如图1和图2所示。

图1 用户注册

图2 用户登录

(1)创建sqlite数据库login.db及loginuser表。执行Python程序,在主文件夹下的data文件夹里自动创建login.db数据库和loginuser表,其中loginuser表主要包含id,username,password,loginerror等四个字段。

(2)算法持续优化方向。可以在“算法3”的基础上,对“用户登录”继续进行优化升级。优化1:加入随机码、简单算式计算、随机拼图等,这些功能主要是防止机器人操作。优化2:绑定手机号,借助第三方接口接收和比对手机短信验证码。

猜你喜欢
排队账号语句
彤彤的聊天账号
怎样排队
施诈计骗走游戏账号
重点:语句衔接
我国社交媒体账号的对外传播之道——以“人民日报”Facebook账号“特朗普访华”议题报道为例
巧排队列
三角龙排队
Google Play游戏取消账号绑定没有Google账号也能玩
如何搞定语句衔接题
作文语句实录