c语言自学难点,教C语言,好难!——这样做,可轻松突破难点!

本文转载自【微信公众号:学习科学与技术研究,ID:xxkx-js】经微信公众号授权转载,如需转载与原文作者联系

【发表说明】

本文是《学习科学》课程的学员作业,

介绍了该教师在教C语言课程中一些做法、以及所遇到的困难。

以下为全文转发,文后有王珏老师的点评。

————————————————————

我是一名中职老师,在教育教学中经常不开心,

我总觉得:这么简单的知识怎么学生们学起来就那么难呢?

【王珏老师点评】:老师是专家、是优秀的学习者,所以觉得“简单”;

学生是小白、而且可能不擅于学习,自然觉得“难”

就比如C语言这门课程,中职教的并没有那么深入,

可是每次上课都感觉心好累,

因为学生普遍反映这门课很难,学生们提到上C语言了都很怕。。。

于是学期刚刚开始时,

我都会专门花时间跟学生说这门课没有那么难,

我们只学xxx就行了等等…

可是最后大家还是觉得难,

每次上课一个知识点讲很多遍,

感觉学生们还是晕晕乎乎,

或者即便感觉学生听懂了,一到动手又是困难不断。

现在通过王珏老师的《学习科学》课程中的“语义情境化”这一单元,

我开始慢慢反思:

C语言对于学生来讲是全新的知识所以在讲授C语言的时候需要将知识“情境化”,这样学生们才能去理解,去接受。

所以下一步我该做的事情,

是思考如何将语义和情境更好的结合起来,

以更好地表达和传授知识。

比如,在讲C语言中两个变量的值进行“交换”,

刚开始我借用了大学时自己学习的经验,

先问了学生一个问题:

如果你有一杯水和一杯饮料,如何将水装进盛放饮料的杯子,将饮料装进盛放水的杯子?我觉得大学就这样学过来的很好懂,

学生们理解这个应该没有什么问题,

结果发现我重复讲了好几次他们才明白,

而且我还是配了板书他们才懂。

所以,以后在讲授这个知识点时,

我就用“语言+图片”的方法,

不再使用纯语言来讲解,

效果得到了明显的改善。

————————————————————

【王珏老师点评】

学生觉得难、理解不了,

责任不在学生(除非学生压根就不听、不学),

一定是老师的教学处理不到位。

斯坦福大学的舒曼教授提出的PCK理论告诉我们:

不同的讲解方法、或者说不同的知识表达方法,会带来截然不同的理解效果。老师的重要职责之一,

就是要“将专业知识转化为易于理解的表征形式”

——舒曼教授将教师必须具备的这一知识,称为“学科教学知识(PCK)”!

ffb13b3e4edc0f365d19ae76eb736d74.png

为什么说专业知识难以理解呢?

因为专业知识,都是用专业术语构建起来的,

每个术语都有其特定的意义、必须要从特定的角度才能理解,

并且术语之间还形成了一整套严谨的体系。

而对于人类来说,

语义(语言文字符号的统称)都是抽象的。

要理解抽象的语义,

必须要理解语义所“代表”的实际意义!

在教学中,

如何让学生能理解和体会到这个“实际意义”呢?

——这一点教材很难胜任,

必须要依靠老师来营造合适的“教学情境”。

——换言之,老师制造“情境”的能力,

就直接决定了一个知识(以语义为代表)是否容易被理解,

也是教师的“学科教学知识(PCK)”的重要组成部分!

对于C语言中“如何交换两个变量的值”这一算法思想来说,

上文所使用的这个情境,

总体还是比较合适的。

不过,学生为什么会想不到、也听不懂呢?

因为,同样是“交换”,在C语言中和日常生活中,

还是有些不同的。

日常生活中,基本不存在“交换两杯水”的情况,

而且,如果两个人想交换手中的水的话,

那直接换杯子,不就好了吗?

——在生活中,肯定没有人会想到:

老师的意思,是要用一个空杯子、倒来倒去的。

也就是说,这个生活场景本身,

对于学生的思考是有干扰作用的。

如果要使用生活场景作类比的话,

就需要仔细思考,创设更为恰当的情境,

王珏老师简单想了想,觉得如下生活情境或许管用:

1、A和B两个人,都去打饭

2、由于大师傅的失误,把A买的饭装到了B的饭盒里,B的饭装到了A的饭盒里(且都装满了)

3、这两个饭盒里的饭菜,如何才能实现交换?

【提示】这个目的其实是不能直接实现的,于是补充一个场景:

4、此时,旁边C路过,但他还没打饭,A和B借助C的空饭盒,能实现交换吗?

我想,以上案例应该更加贴近于生活,

学生自己就能设身处地的想象,积极进行思维操作,

而不会引起歧义、而导致抓不住重点、,

而且情境中的要素与知识点的“内在结构特征”完全吻合等等。

当学生从上述情境部理解了“交换饭菜”的方法:

——也就是A-->C,B-->A,C-->B时,

再用“类比”的方法,就很容易理解C语言中的“交换”了:

每个饭盒(即A、B、C),都相当于是C语言中的一个变量每个变量都可以赋值(就像大师傅向饭盒中盛饭)A的值与B的值如果想“交换”,需要借助另外一个临时变量C的帮助(就像C同学的空饭盒)方法是同样的:先把A的值赋予C,再把B的值赋予A,再把C的值赋予B

在生活经验的帮助下,借助这样的类比,

学生一定很容易理解C语言中“交换”的算法思想。

——因为,类比是人类的思维本能,每个人都有,不用教,

类比可以让人借助原有经验中的内在结构,“直接理解”陌生事物的内在结构

我想,采用这一情境+类比的方式,

不要说是中职生,

就是小学生,这样讲也都能懂

——差别只是在于是否要写代码罢了。

教师在面对不同基础的学生时,

需要根据学生的知识基础、生活经验、思维特点

进行不同的教学处理。

同一个知识,

对于大学的优等生,可能照本宣科人家就懂了(其实不宣也一样)

对大学的普通生,就需要费一点口舌,

对于专科、高职院校,就需要更加具体化、形象化,

并且还需要让学生尽量参与到情境中,还要放慢节奏……

在PCK理论中也明确提出:

关于“学生的知识”,是老师开展教学的前提和基础。

778f07ca0d1cc2b588596aa25200553f.png

不能理解学生的特点,

不能利用学生的原有经验开展教学,

是不可能成为一个好老师的!

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态增长 44 11. C语言中的位运算 46 12. 浮点数的存储格式: 50 13. 位域 58 14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 23. C语言缺陷与陷阱(笔记) 119 24. C语言防止缓冲区溢出方法 126 25. C语言高效编程秘籍 128 26. C运算符优先级口诀 133 27. do/while(0)的妙用 134 28. exit()和return()的区别 140 29. exit子程序终止函数与return的差别 141 30. extern与static存储空间矛盾 145 31. PC-Lint与C\C++代码质量 147 32. spirntf函数使用大全 158 33. 二叉树的数据结构 167 34. 位运算应用口诀和实例 170 35. 内存对齐与ANSI C中struct内存布局 173 36. 冒泡和选择排序实现 180 37. 函数指针数组与返回数组指针的函数 186 38. 右左法则- 复杂指针解析 189 39. 回车和换行的区别 192 40. 堆和堆栈的区别 194 41. 堆和堆栈的区别 198 42. 如何写出专业的C头文件 202 43. 打造最快的Hash表 207 44. 指针与数组学习笔记 222 45. 数组不是指针 224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言指针的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会陷入死循环 258 52. 空指针究竟指向了内存的哪个地方 260 53. 算术表达式的计算 265 54. 结构体对齐的具体含义 269 55. 连连看AI算法 274 56. 连连看寻路算法的思路 283 57. 重新认识:指向函数的指针 288 58. 链表的源码 291 59. 高质量的子程序 295 60. 高级C语言程序员测试必过的十六道最佳题目+答案详解 297 61. C语言常见错误 320 62. 超强的指针学习笔记 325 63. 程序员之路──关于代码风格 343 64. 指针、结构体、联合体的安全规范 346 65. C指针讲解 352 66. 关于指向指针的指针 368 67. C/C++ 误区一:void main() 373 68. C/C++ 误区二:fflush(stdin) 376 69. C/C++ 误区三:强制转换 malloc() 的返回值 380 70. C/C++ 误区四:char c = getchar(); 381 71. C/C++ 误区五:检查 new 的返回值 383 72. C 是 C++ 的子集吗? 384 73. C和C++的区别是什么? 387 74. 无条件循环 388 75. 产生随机数的方法 389 76. 顺序表及其操作 390 77. 单链表的实现及其操作 391 78. 双向链表 395 79. 程序员数据结构笔记 399 80. Hashtable和HashMap的区别 408 81. hash 表学习笔记 410 82. C程序设计常用算法源代码 412 83. C语言有头结点链表的经典实现 419 84. C语言惠通面试题 428 85. C语言常用宏定义 450

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值