在Python和C++代码教学中,经常会遇到一种现象,一道题的解法,同学们能听懂老师讲解的,但是自己写,却写不出来。深究其原因,才能有对应的措施。
“能听懂”和“能写代码”是两种状态,两种状态是浅和深的关系,我原来写过一篇博客《浅谈少儿编程教育的浅与深》,这两种状态就是在孩子主动学习过程中,或者是孩子学习消化中的浅与深。
能听懂是浅层次的,是对老师讲解的知识点都能听明白,能知道解题思路,这个状态是被动学习的过程阶段。往往这个阶段,学生还是某一些点(知识点)的掌握,没有连成线(解题思路),这个时候,知识还是老师的,还没有变成自己的。
能写代码这个阶段,才是更深了一步,不管是通过老师的讲解还是自己的思路,能根据这些思维想法,写出相应的解题代码来,经过调试,运行通过,这才是自己的东西。说明自己掌握了这道题的相关知识点和解题思路。
那么如果由浅入深,从“能听懂”到“能写代码”呢?
第一,要学生自己先想解题思路。
这一步特别重要,是必须要做的,一道题,不要上来就讲,要先同学们自己想解题思路,可以通过一些方式,比如提问,让学生紧张起来,让学生主动动脑子去想问题的解法。哪怕想不出来,也是刺激学生动脑,让学生养成遇到问题就要动脑思考的习惯。这一点是被动和主动的主要区别,由老师给喂,变成学生想知道答案,孩子主动去思考答案的转换。
第二,讲解题思路,编写代码
由上一步,学生经历思考过程后,对题目有一定的了解,老师再讲解题目的解法。首先要讲解题思路,就是这道题为什么要这么做,而不是单纯的只讲代码实现。要根据题目描述先分步骤,再讲每一步如何实现,最后再调试、验证通过。 在讲解过程中,要串联以前讲过的知识点和以前做过的题目,一边提问学生回答,一边写,和学生一块把代码写出来。让学生通过老师的写代码的过程,形成良好的代码风格、分模块步骤和为什么要这么写,这个阶段,要特别注意不要授予鱼,而授予渔。
第三,尝试自己写代码。
老师讲解后,学生尝试自己写代码,写不对,没有关系,这一步的关键在于“写起来“。只要动手写,就是自己成果的输出。写代码的过程中,一边对解题思路的再整理,一边熟练代码的语法。因为写代码本身就是一项实践活动,所以在实践中积累经验,逐步让自己掌握更多知识、解题思路,提升逻辑思维能力和解决问题能力。 这一部分也是让学生迈出自己的舒适区,进入到自己未知的区域,然后占领这个未知领域,变成自己的舒适区,再进入下一个未知区域,这是一个成长落地的过程。
第四,多次调试,直到通过。
调试,直到通过也是非常关键的一步。这一步对于培养孩子的逆商、迭代思维都有非常积极的影响。写代码允许一遍又一遍的调试,就是在调试的过程中,深入理解代码运行的原理、熟悉语法、三大结构和提升“代码敏感”度。让孩子享受经过了重重困难,直到运行成功的成就感,提升孩子的自信,刺激进入下一个未知领域,形成良性循环,逐渐成长。
解决每一道题,就是一次刻意练习,在刻意练习中,通过阅读理解、抽象出关键问题、调用掌握的知识点、形成解题思路、分模块写代码、调试、运行通过,逐渐积累自己的题感,提升自己解题能力,再向上发展。
当通过以上的刻意练习,解决每一道题后,再下一个阶段就是要形成自己的知识体系,不断的完善自己的知识体系,让自己达到新的高度,逐渐去成长。