摘 要: C语言程序设计的教学目标是使学生利用C语言结合算法解决简单的实际问题。要实现该目标不仅要熟练掌握C语言本身的基本语法和结构,还要具备设计合理算法的思维能力。然而,当前各高校课程教学往往忽略思维能力的培养。本文提出通过实际应用案例将计算思维与程序设计语言有机结合的方法,在教学过程中利用实际案例激发学生的兴趣,将计算思维贯穿于程序设计语言的学习过程中,提高学生的主动性,以数组为例介绍该方法的实际应用,通过实际对比数据证明该方法具有较好的教学效果。

关键词: 计算思维 程序设计 案例

1.计算思维的概念

计算思维是运用计算机科学的基础概念求解问题、设计系统和理解人类行为的一系列思维活动。计算思维的本质就是抽象(Abstraction)与自动化(Automation)[1]。

计算思维包括“0和1”思维、“程序”思维、“递归”思维、“算法”思维和“系统”思维。0和1是实现任何计算的基础,是最基本的抽象与自动化机制;程序是基本动作(指令)的各种组合,是控制计算系统的基本手段;递归是最典型的构造程序的手段;算法是计算的灵魂,在有限的时间空间内,设计尽可能快速的算法,要考虑可计算性与计算复杂性;系统化复杂为简单,强调结构性、可靠性、安全性等[2]。

没有思维的程序设计语言教学是无意义的;没有落脚点的计算思维永远只是浮于纸面的理论,因此将二者结合在一起进行教学实践,并实际案例推动理论知识的学习,对学生的学习具有十分重要的意义[3,4]。

2.利用案例融合计算思维与C语言教学

从计算思维的角度可以将C语言的教学分成几个大模块:

(1)算法。算法是程序设计的灵魂,遇到问题时要按下面的过程才能将人类的基本解决办法最终转换为计算机能够执行的指令:基本想法―算法―程序―指令。其中算法是连接基本想法和计算机语言的重要桥梁。

(2)时间。C语言程序设计的三大基本结构:顺序结构、选择结构、循环结构,以及C语言模块化程序设计的基本实现单位-函数,这四部分内容的灵活应用是提高程序执行效率的基础。

(3)空间。基本数据类型、数组、指针、结构体、链表、共用体等内容的学习,使得学生掌握如何灵活有效地利用计算机存储单元。

在这些模块的学习过程中,植入一些学生喜闻乐见的案例,将这些案例贯穿始终,能有效地激发学生的兴趣,吸引学生自主地体验程序,感受利用计算思维和程序解决问题的过程,使学生更仔细认真地学习理论知识,同时也愿意进行更多的实践与探索,这种引导是这门课程的重点。经过反复摸索实践,学生感兴趣并能够贯穿始终的几个案例包括:π的求解、费伯纳西数列的计算、成绩最值及排序问题等。

3.“利用数组解决排序问题”―以数组为例解析教学设计

数组在C语言中的重要性在于空间存储特点,便于计算节省时间。因此,可构建如下教学设计。

(1)问题的引入。向学生抛出一个应用排序的常见场合。我们在外出时常常利用大众点评、口碑网、yelp等寻找美食等,这些应用可以按照我们的要求以“距离”等指数进行排序。我们使用这种服务的时候,是否想过这类网站是如何实现这种排序的呢?这是现在学生都非常熟悉的内容,能够马上引起共鸣和好奇感。

(2)思维的培养。对于该问题,学生用已有知识会想到定义很多的变量进行存储,再不断地比较大小实现排序,然而,数据量非常大的时候,问题很难解决。因此,带领学生思考需要怎样的数据类型能快速解决该问题,引出数组的概念。

(3)演示及分析。动态演示程序执行过程并强调相关理论知识,如数组元素的存储、数组元素的遍历与循环的关系等,如图1所示。理论和实践相结合,分析用数组解决这个问题的优点:①节约空间,由于数组中元素的存储是顺序并连续的,避免多个普通变量存储的随机性造成空间利用上的浪费;②节约时间,元素的顺序可标识性化简了对大量数据的计算复杂度。因此数组的应用是计算思维的体现,尤其反映了其中的算法思维和系统思维。

4.方法验证

根据笔者的实际教学过程,2013年采用传统的教学模式,单纯讲解程序设计语言,2014年在部分章节如计算思维的引入、循环、数组等尝试应用该方法,2015年全面应用,按照三年的学生成绩,得到各个知识点的教学达成度,总分为5。结果表明,学生对计算思维的认识与运用得到了极大的强化,也带动了各知识点的成绩大幅度提升,因此该方法取得了良好的教学效果。

5.结语

本文提出了通过实际应用案例将计算思维与程序设计语言相结合的教学方法,实际案例的引入可以激发学生的热情,计算思维与C语言教学融合在一起,让学生认识到解决实际问题离不开编程语言中语法、句法的细节学习,也离不开计算思维的运用。该方法极大地提高了课堂教学效率,使学生更主动地进行程序实践与探索,也提升学生对理论知识的掌握程度,不仅学会知识点,更学会灵活运用知识的思维方式。

参考文献:

[1]刘向永,周以真,王荣良,李冬梅.计算思维改变信息技术课程[J].中国信息技术教育,2013,06:5-11.

[2]李廉.计算思维―概念与挑战[J].中国大学教学,2012(01):7-12.

[3]杨杏芳.新的知识观课程观与大学教育教学改革[J].贵州师范大学学报:社会科学版,2005,5(1):17-111.

[4]游子毅.非计算机专业“C语言”教改方案的探讨与实践.科技创新导报,2015,NO.10:106-107.

如何将计算思维融合到C语言程序设计中,利用案例融合计算思维与C语言教学相关推荐

  1. c语言程序设计常用思维,C语言程序设计中计算思维的思考①

    王鑫 李万军 摘   要:计算思维是运用计算机科学的基础概念去求解问题.设计系统和理解人类的行为.本文归纳了计算思维在C语言程序设计中的体现,可归纳为抽象计算思维.自动化计算思维和并行计算思维三种.针 ...

  2. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

  3. 生物c语言 课程总结,生物医学工程专业《C语言程序设计》课程的融合教学研究...

    就当前我国IT产业与医疗行业紧密结合过程中,医学教育中医学专业基础知识与计算机知识严重分离的现状,根据目前生物医学工程专业"C语言程序设计"课程开设情况,从教学.管理和实践等方面入 ...

  4. 程序设计基础c语言思政,【程序设计论文】思政教育在C语言程序设计中的应用(共3769字)...

    关键词:思政教育:工匠精神:计算思维:自主学习 1课程思政在C语言程序设计课程中的意义 C语言程序设计课程是培养学生核心素养.计算思维和程序设计能力的基础课程.核心素养是个人终身发展和可持续发展的基础 ...

  5. C语言程序设计学习笔记:P1-程序设计与C语言

    本系列博客用于记录学习浙江大学翁恺老师的C语言程序设计,系列笔记链接如下: C语言程序设计学习笔记:P1-程序设计与C语言 C语言程序设计学习笔记:P2-计算 C语言程序设计学习笔记:P3-判断 C语 ...

  6. 华南农业大学c语言程序设计实验指导书参考答案,华南农业大学C语言程序设计实验指导书参考答案.doc...

    华南农业大学C语言程序设计实验指导书参考答案 华南农业大学c语言程序设计上机指导书参考答案 上级实验参考答案#include "stdio.h" #include"mat ...

  7. c语言程序设计指针教学,C语言程序设计中指针教学要点分析

    C语言程序设计中指针教学要点分析 徐 兵 ( 广东海洋大学信息学院, 广东 湛江 524088) 1 指针知识单元构成 1.1 指针定义 在计算机内存中, 每一个存储单元(通常为 1 字节 )都有一个 ...

  8. 在c语言程序设计中函数有两种类型 和,在C语言程序设计中函数有两种类型:__________和__________...

    在C语言程序设计中函数有两种类型:__________和__________ 以下程序的输出结果是()intA:6B:3C:2D:1 红楼梦中提到的名菜有A:酒酿清蒸鸭子B:奶油松瓤卷酥C:四喜丸子D ...

  9. 全国计算机等级考试二级教程c语言程序设计考试大纲,全国计算机等级考试二级C语言程序设计考试大纲.docx...

    全国计算机等级考试二级C语言程序设计考试大纲 全国计算机等级考试二级C语言程序设计考试大纲(2013版) 基本要求 1.熟悉VisualC++6.0集成开发环境. 2.掌握结构化程序设计的方法,具有良 ...

最新文章

  1. python中matplotlib自定义设置图像标题使用的字体类型:获取默认的字体族及字体族中对应的字体、自定义设置图像标题使用的字体类型
  2. 异常检测算法--Isolation Forest
  3. linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结
  4. Sitemesh3的使用及配置
  5. 树莓派使用STEP8:使能串口调试
  6. 读《Computer Systems: A Programmer’s Perspective》
  7. jira api java,如何使用其余api(java)在jira中创建问题?
  8. 带SN切换流程_一文详解贴片电阻生产工艺流程(15个步骤)
  9. ue4蓝图运行顺序_UE4蓝图流程控制
  10. 华为认证HCIE的含金量高吗,考试费用是多少?
  11. java编程根据订单编号查询订单状态_Java微信订单查询
  12. numpy求矩阵的逆和伪逆
  13. recycleview横向展开_android 横向recyclerView 数据居中,从中间往两边展开显示
  14. Pytorch的grad、backward()、zero_grad()
  15. 【Qualcomm高通音频】如何区分配置ECM驻极体麦克风和MEMS硅麦克风
  16. 洛谷P1914 小书童——凯撒密码
  17. Python中if的使用
  18. 产品宣传片制作创意攻略的先决条件
  19. badboy脚本开发事件
  20. 一段将图片变成手绘风格的python代码

热门文章

  1. oracle量子,量子计算
  2. 学习OpenCV 函数方法结构总结
  3. 计算机程序中的keymapping,计算机基础(双语)Keyterms.doc
  4. linux启动网络服务的命令,linux重启服务命令
  5. PC的ARM的安全启动
  6. Java知识汇总——思维导图
  7. 数学建模_数学模型的分类数学建模十大算法
  8. 大数据和云计算发展前景怎样?
  9. The Shawshank Redemption-19
  10. 从BAT到BATH 中国云计算世界杯大幕刚启